#ifndef __TS_SIGNIFICANCEEVALUTATOR__
#define __TS_SIGNIFICANCEEVALUTATOR__
#include "QFramework/TQSignificanceEvaluator.h"
#include "QFramework/TQGridScanner.h"
#include "TSStatisticsManager.h"
#include "QFramework/TQFolder.h"
class TSCLSignificanceEvaluator : public TQSignificanceEvaluator {
public:
void keepTMP(TString tmpfilenamebase="histograms_");
void printMode();
void exportSampleFolder(bool doexport = true);
void importSampleFolder(bool doimport = true);
void exportSignificance(bool doexport = true);
void importSignificance(bool doimport = true);
void setSampleFolderFile(const TString& filename);
void setSignificanceFile(const TString& filename);
void setExternalEvaluation(const TString& command, bool allowRecycling = false);
void setInternalEvaluation(bool eval = true);
void setDebugOutputdir(TString outdir);
void deactivate();
TQSampleFolder* getWorkingFolder(TString path = "");
int cleanWorkingFolder();
TQSampleFolder* getBaseFolder(TString path = "");
TQFolder* getConfigFolder(TString path = "");
void printPaths();
virtual double getLuminosity(TString folderName="info",TString tagName="luminosity") override;
bool addFOM(const TString& fomName);
virtual double evaluate() override;
virtual std::vector<double> evaluateMultiple() override;
virtual int exportWorkspace(const TString& outFileName = "model-raw.root") override;
void addVariation(TQSampleFolder* sf, TString varname);
void setInitialization(TClass* initClass);
virtual bool initialize(TQGridScanner* scanner) override;
bool initialize(const TString& importfilename = "", const TString& exportfilename = "");
bool configure(const TString& configfilename, const TString& modelname = "");
TSCLSignificanceEvaluator(TQSampleFolder* sf=NULL, TString targetVar="", TString name="CL");
TSCLSignificanceEvaluator(TList* folders, TString targetVar="", TString name="CL", TString folderKeyTag=".key");
TSCLSignificanceEvaluator(TString targetVar, TString name="CL");
virtual double getSignificance(size_t iregion) override;
virtual double getSignificance2(size_t iregion) override;
protected:
TQSampleFolder* baseFolder;
TQSampleFolder* workingFolder;
TQFolder* m_config;
TString tmpFileName;
TString tmpFileNameBase;
TString outputdir;
TString modelName;
TString discriminantVariable;
int m_discriminantVariableIndex;
TSStatisticsManager* engine;
std::vector<TString> m_histRegionsInInput;
std::vector<TString> m_histRegionsInModel;
std::vector<TString> m_samplePaths;
std::vector<TString> locations;
std::vector<TString> m_histNames;
std::vector<TString> variations;
TString sampleFolderFileName;
TString significanceFileName;
TString evaluationCommand;
bool internalEvaluation;
bool recyclingAllowed;
bool supportRegionSetHandling;
bool debug;
std::vector<TH1F*> m_Hists;
std::map< TString, TAxis* > m_boundMultiDimAxis;
int nPreparedRegionSets;
int m_nPointsProcessed;
public:
bool checkCutoffs();
void setRegionSetHandling(bool val);
void setVerbose(bool v);
virtual bool hasNativeRegionSetHandling() override;
virtual bool prepareNextRegionSet(const TString& suffix = "") override;
virtual bool isPrepared() override;
bool m_multipleFOMsCompatible = false;
enum Mode { IMPORT, EXPORT, NONE };
protected:
Mode sampleFolderMode;
Mode significanceMode;
int configureBoundRegions();
Int_t prepareFromGridScanner(const TString& );
std::vector <TString> m_FOMNames;
ClassDefOverride(TSCLSignificanceEvaluator,1)
};
#endif
TSCLSignificanceEvaluator.h:1 TSCLSignificanceEvaluator.h:2 TSCLSignificanceEvaluator.h:3 TSCLSignificanceEvaluator.h:4 TSCLSignificanceEvaluator.h:5 TSCLSignificanceEvaluator.h:6 TSCLSignificanceEvaluator.h:7 TSCLSignificanceEvaluator.h:8 TSCLSignificanceEvaluator.h:9 TSCLSignificanceEvaluator.h:10 TSCLSignificanceEvaluator.h:11 TSCLSignificanceEvaluator.h:12 TSCLSignificanceEvaluator.h:13 TSCLSignificanceEvaluator.h:14 TSCLSignificanceEvaluator.h:15 TSCLSignificanceEvaluator.h:16 TSCLSignificanceEvaluator.h:17 TSCLSignificanceEvaluator.h:18 TSCLSignificanceEvaluator.h:19 TSCLSignificanceEvaluator.h:20 TSCLSignificanceEvaluator.h:21 TSCLSignificanceEvaluator.h:22 TSCLSignificanceEvaluator.h:23 TSCLSignificanceEvaluator.h:24 TSCLSignificanceEvaluator.h:25 TSCLSignificanceEvaluator.h:26 TSCLSignificanceEvaluator.h:27 TSCLSignificanceEvaluator.h:28 TSCLSignificanceEvaluator.h:29 TSCLSignificanceEvaluator.h:30 TSCLSignificanceEvaluator.h:31 TSCLSignificanceEvaluator.h:32 TSCLSignificanceEvaluator.h:33 TSCLSignificanceEvaluator.h:34 TSCLSignificanceEvaluator.h:35 TSCLSignificanceEvaluator.h:36 TSCLSignificanceEvaluator.h:37 TSCLSignificanceEvaluator.h:38 TSCLSignificanceEvaluator.h:39 TSCLSignificanceEvaluator.h:40 TSCLSignificanceEvaluator.h:41 TSCLSignificanceEvaluator.h:42 TSCLSignificanceEvaluator.h:43 TSCLSignificanceEvaluator.h:44 TSCLSignificanceEvaluator.h:45 TSCLSignificanceEvaluator.h:46 TSCLSignificanceEvaluator.h:47 TSCLSignificanceEvaluator.h:48 TSCLSignificanceEvaluator.h:49 TSCLSignificanceEvaluator.h:50 TSCLSignificanceEvaluator.h:51 TSCLSignificanceEvaluator.h:52 TSCLSignificanceEvaluator.h:53 TSCLSignificanceEvaluator.h:54 TSCLSignificanceEvaluator.h:55 TSCLSignificanceEvaluator.h:56 TSCLSignificanceEvaluator.h:57 TSCLSignificanceEvaluator.h:58 TSCLSignificanceEvaluator.h:59 TSCLSignificanceEvaluator.h:60 TSCLSignificanceEvaluator.h:61 TSCLSignificanceEvaluator.h:62 TSCLSignificanceEvaluator.h:63 TSCLSignificanceEvaluator.h:64 TSCLSignificanceEvaluator.h:65 TSCLSignificanceEvaluator.h:66 TSCLSignificanceEvaluator.h:67 TSCLSignificanceEvaluator.h:68 TSCLSignificanceEvaluator.h:69 TSCLSignificanceEvaluator.h:70 TSCLSignificanceEvaluator.h:71 TSCLSignificanceEvaluator.h:72 TSCLSignificanceEvaluator.h:73 TSCLSignificanceEvaluator.h:74 TSCLSignificanceEvaluator.h:75 TSCLSignificanceEvaluator.h:76 TSCLSignificanceEvaluator.h:77 TSCLSignificanceEvaluator.h:78 TSCLSignificanceEvaluator.h:79 TSCLSignificanceEvaluator.h:80 TSCLSignificanceEvaluator.h:81 TSCLSignificanceEvaluator.h:82 TSCLSignificanceEvaluator.h:83 TSCLSignificanceEvaluator.h:84 TSCLSignificanceEvaluator.h:85 TSCLSignificanceEvaluator.h:86 TSCLSignificanceEvaluator.h:87 TSCLSignificanceEvaluator.h:88 TSCLSignificanceEvaluator.h:89 TSCLSignificanceEvaluator.h:90 TSCLSignificanceEvaluator.h:91 TSCLSignificanceEvaluator.h:92 TSCLSignificanceEvaluator.h:93 TSCLSignificanceEvaluator.h:94 TSCLSignificanceEvaluator.h:95 TSCLSignificanceEvaluator.h:96 TSCLSignificanceEvaluator.h:97 TSCLSignificanceEvaluator.h:98 TSCLSignificanceEvaluator.h:99 TSCLSignificanceEvaluator.h:100 TSCLSignificanceEvaluator.h:101 TSCLSignificanceEvaluator.h:102 TSCLSignificanceEvaluator.h:103 TSCLSignificanceEvaluator.h:104 TSCLSignificanceEvaluator.h:105 TSCLSignificanceEvaluator.h:106 TSCLSignificanceEvaluator.h:107 TSCLSignificanceEvaluator.h:108