#ifndef STATISTICS_CALCULATOR
#define STATISTICS_CALCULATOR
#include "RooWorkspace.h"
#include "RooSimultaneous.h"
#include "RooStats/ModelConfig.h"
#include "RooRealVar.h"
#include "RooFitResult.h"
#include "RooAbsPdf.h"
#include "RooDataSet.h"
#include "RooArgList.h"
#include "RooNLLVar.h"
#include "SFramework/RooFitUtils.h"
#ifdef HAS_RooFitUtils
#include <RooFitUtils/ExtendedMinimizer.h>
#endif
#include "QFramework/TQTaggable.h"
#include "QFramework/TQFolder.h"
#ifdef HAS_RooFitUtils
class TSStatisticsCalculator : public RooFitUtils::ExtendedMinimizer {
#else
class TSStatisticsCalculator {
protected:
RooWorkspace * fWorkspace = NULL;
RooAbsReal* fNll = NULL;
#endif
protected:
RooStats::ModelConfig * fModelConfig;
TQFolder* fSnapshots = NULL;
protected:
virtual void info(TString message);
virtual void error(TString message);
virtual void warn(TString message);
void setParameterValues(TQTaggable* options, const TString& prefix);
void setParameterErrors(TQTaggable* options, const TString& prefix);
void setParametersConstFloat(const RooArgSet * params, TQTaggable * options);
void setParametersConstFloat(const RooArgSet& params, TQTaggable * options);
TQFolder * minimizeNll(const TString& options);
TQFolder * minimizeNll(TQTaggable * options);
void resetOffset();
void setup(const TString& datasetName, TQTaggable * options = NULL);
void setup(RooAbsPdf * pdf, RooDataSet * data, const RooArgSet& constrain, TQTaggable * options);
void clear();
virtual TQFolder * fitPdfToData(RooAbsPdf * pdf, RooDataSet * data, const RooArgSet& constrain, TQTaggable * options = NULL);
virtual TQFolder * fitPdfToData(RooAbsPdf * pdf, RooDataSet * data, const RooArgSet& constrain, const TString& options);
public:
RooWorkspace* getWorkspace();
RooStats::ModelConfig* getModelConfig();
RooAbsPdf* getPdf();
RooSimultaneous* getSimPdf();
RooCategory* getIndexCategory();
const RooArgSet* getNuisanceParameters();
const RooArgSet* getPOIs();
static RooArgSet* makeMinosArgSet(RooWorkspace* ws, const std::vector<TString>& filters);
static void unfoldConstraints(RooArgSet &initial, RooArgSet &final, RooArgSet &obs, RooArgSet &nuis, Int_t &counter);
bool loadSnapshot(TQTaggable * options);
TSStatisticsCalculator(const char* className);
TSStatisticsCalculator(const char* className,RooWorkspace * ws);
TSStatisticsCalculator(const char* className,RooWorkspace * ws,TQFolder* snapshots);
virtual ~TSStatisticsCalculator();
RooArgSet getPOIs(TQTaggable* options);
RooArgSet getNuisanceParameters(TQTaggable* options);
static RooArgSet getNuisanceParameters(RooStats::ModelConfig* mc, RooWorkspace* ws, TQTaggable* options);
Bool_t setWorkspace(RooWorkspace * ws);
virtual TQFolder * runCalculation(TQFolder * options = 0) = 0;
virtual TQFolder * fitPdfToData(const TString& datasetName, TQTaggable * options = NULL);
#ifdef HAS_RooFitUtils
ClassDefOverride(TSStatisticsCalculator, 0);
#else
ClassDef(TSStatisticsCalculator, 0);
#endif
};
#endif
TSStatisticsCalculator.h:1 TSStatisticsCalculator.h:2 TSStatisticsCalculator.h:3 TSStatisticsCalculator.h:4 TSStatisticsCalculator.h:5 TSStatisticsCalculator.h:6 TSStatisticsCalculator.h:7 TSStatisticsCalculator.h:8 TSStatisticsCalculator.h:9 TSStatisticsCalculator.h:10 TSStatisticsCalculator.h:11 TSStatisticsCalculator.h:12 TSStatisticsCalculator.h:13 TSStatisticsCalculator.h:14 TSStatisticsCalculator.h:15 TSStatisticsCalculator.h:16 TSStatisticsCalculator.h:17 TSStatisticsCalculator.h:18 TSStatisticsCalculator.h:19 TSStatisticsCalculator.h:20 TSStatisticsCalculator.h:21 TSStatisticsCalculator.h:22 TSStatisticsCalculator.h:23 TSStatisticsCalculator.h:24 TSStatisticsCalculator.h:25 TSStatisticsCalculator.h:26 TSStatisticsCalculator.h:27 TSStatisticsCalculator.h:28 TSStatisticsCalculator.h:29 TSStatisticsCalculator.h:30 TSStatisticsCalculator.h:31 TSStatisticsCalculator.h:32 TSStatisticsCalculator.h:33 TSStatisticsCalculator.h:34 TSStatisticsCalculator.h:35 TSStatisticsCalculator.h:36 TSStatisticsCalculator.h:37 TSStatisticsCalculator.h:38 TSStatisticsCalculator.h:39 TSStatisticsCalculator.h:40 TSStatisticsCalculator.h:41 TSStatisticsCalculator.h:42 TSStatisticsCalculator.h:43 TSStatisticsCalculator.h:44 TSStatisticsCalculator.h:45 TSStatisticsCalculator.h:46 TSStatisticsCalculator.h:47 TSStatisticsCalculator.h:48 TSStatisticsCalculator.h:49 TSStatisticsCalculator.h:50 TSStatisticsCalculator.h:51 TSStatisticsCalculator.h:52 TSStatisticsCalculator.h:53 TSStatisticsCalculator.h:54 TSStatisticsCalculator.h:55 TSStatisticsCalculator.h:56 TSStatisticsCalculator.h:57 TSStatisticsCalculator.h:58 TSStatisticsCalculator.h:59 TSStatisticsCalculator.h:60 TSStatisticsCalculator.h:61 TSStatisticsCalculator.h:62 TSStatisticsCalculator.h:63 TSStatisticsCalculator.h:64 TSStatisticsCalculator.h:65 TSStatisticsCalculator.h:66 TSStatisticsCalculator.h:67 TSStatisticsCalculator.h:68 TSStatisticsCalculator.h:69 TSStatisticsCalculator.h:70 TSStatisticsCalculator.h:71 TSStatisticsCalculator.h:72 TSStatisticsCalculator.h:73 TSStatisticsCalculator.h:74 TSStatisticsCalculator.h:75 TSStatisticsCalculator.h:76 TSStatisticsCalculator.h:77 TSStatisticsCalculator.h:78 TSStatisticsCalculator.h:79 TSStatisticsCalculator.h:80 TSStatisticsCalculator.h:81 TSStatisticsCalculator.h:82 TSStatisticsCalculator.h:83 TSStatisticsCalculator.h:84 TSStatisticsCalculator.h:85 TSStatisticsCalculator.h:86 TSStatisticsCalculator.h:87 TSStatisticsCalculator.h:88 TSStatisticsCalculator.h:89 TSStatisticsCalculator.h:90 TSStatisticsCalculator.h:91 TSStatisticsCalculator.h:92 TSStatisticsCalculator.h:93 TSStatisticsCalculator.h:94 TSStatisticsCalculator.h:95