#ifndef HEP_HepTemplateFitter
#define HEP_HepTemplateFitter
#ifndef ROOT_TTask
#include <TTask.h>
#endif
#ifndef ROOT_TList
#include <TList.h>
#endif
#ifndef ROOT_TH1F
#include <TH1F.h>
#endif
#ifndef ROOT_THSTACK
#include <THStack.h>
#endif
#ifndef ROOT_TDirectory
#include <TDirectory.h>
#endif
class TFile;
class TKey;
class TSystem;
class TFractionFitter;
class HepDataMCSample;
class HepTemplate;
class TObjString;
class TCanvas;
class TROOT;
class HepTemplateFitter : public TTask {
private:
TList *fDataSamples;
TList *fMCSamples;
TList *fTemplates;
TH1F *fReference;
TString *fExportDir;
Bool_t fExportROOT;
TFile *fOutputRootFile;
TFractionFitter *fFitter;
public:
HepTemplateFitter(const char* name, const char* title);
virtual ~HepTemplateFitter();
virtual void Exec(Option_t *option = "");
HepDataMCSample* AddMCSample(const char* path, const char* label, Float_t xsec);
HepDataMCSample* AddDataSample(const char* path, const char* label);
HepDataMCSample* AddDataSample(const char* path, const char* label, Float_t xsec);
void GenerateTemplate(char* histname, char* templatename, Color_t color);
void GenerateTemplate(char* histname, char* templatename, Double_t low, Double_t high, Color_t color);
void GenerateReference(char* histname);
inline void SetWorkingDir(const char* dir)
{ SetExportDir(dir); }
inline void SetExportDir(const char* dir) {
fExportDir->Remove(0);
fExportDir->Append(dir);
}
Bool_t GetExportROOT() { return fExportROOT; }
private:
HepDataMCSample* AddMCSample(const char* path, const char* label, Color_t color,
Style_t line_style, Width_t line_width,
Style_t fill_style);
HepDataMCSample* AddDataSample(const char* path, const char* label, Color_t color,
Style_t line_style, Width_t line_width,
Style_t fill_style);
void FillTemplates();
HepTemplate* BuildTemplate(char* histname, char* templatename, Color_t color);
THStack* BuildStackPlot();
ClassDef(HepTemplateFitter,0)
};
#endif