#ifndef __GFDSTARSYSERRORS_H #define __GFDSTARSYSERRORS_H // ROOT includes #include #include #include #include #include #include "GFUtils/GFHistManager.h" //#include "GFDstarHistsAnalysisData.h" //#include "GFDstarHistsAnalysisMc.h" class TFile; class TH1; class GFHistManager; class GFDstarXSections; class GFDstarHistsAnalysisData; class GFDstarHistsAnalysisMc; class GFDstarSysErrors : public TObject{ public: GFDstarSysErrors(const char* prefix); virtual ~GFDstarSysErrors(); TH1* GetSysErrorTotal(const char* var, Bool_t norm);//pt,eta,phi,wGammaP TH1* GetSysErrorTotal(const char* var1,const char* var2, Int_t firstBin2, Int_t lastBin2, Bool_t norm); Double_t GetSysErrorTotal(); TH1* GetSysErrorFit(const char* var, const TH1* hBins);//pt,eta,phi,wGammaP Double_t GetSysErrorFit(); TH1* CalcSysErrorFit(const char* var, Int_t fitOrNotFlag = 5);//pt,eta,phi,wGammaP Double_t CalcSysErrorFit(Int_t fitOrNotFlag = 5); TH1* GetSysErrorRecEff(const char* var);//pt,eta,phi,wGammaP TH1* GetSysErrorTrackEff(const char* var, const TH1* hBins);//pt,eta,phi,wGammaP Double_t GetSysErrorTrackEff(); // TH1* GetSysErrorAcceptMc(const char* var);//pt,eta,phi,wGammaP TH1* GetSysErrorAcceptCurve(const char* var);//pt,eta,phi,wGammaP TH1* GetSysErrorAcceptData(const char* var, const TH1* hBins);//pt,eta,phi,wGammaP Double_t GetSysErrorAcceptData(); TH1* GetSysErrorModel(const char* var, Bool_t norm = kFALSE);//pt,eta,phi,wGammaP TH1* GetSysErrorModel(const char* var1, const char* var2, Int_t firstBin2, Int_t lastBin2, Bool_t norm = kFALSE);//pt,eta,wGammaP Double_t GetSysErrorModel(); TH1* GetSysErrorTrigEff(const char* var, const TH1* hBins);//pt,eta,phi,wGammaP Double_t GetSysErrorTrigEff(); TH1* GetSysErrorBranching(const char* var, const TH1* hBins); TH1* GetSysErrorReflections(const char* var, const TH1* hBins); TH1* GetSysErrorLumi(const char* var, const TH1* hBins); // TH1* GetSysErrorTrigEffMc(const char* var);//pt,eta,phi,wGammaP // TH1* GetSysErrorTrigEffData(const char* var);//pt,eta,phi,wGammaP // Double_t GetSysErrorTrigEffData(); // TH1* GetSysErrorTrigEff84(const char* var);//pt,eta,phi,wGammaP // Double_t GetSysErrorTrigEff84(); TH1* GetSysErrorL4(const char* var, const TH1* hBins); Double_t GetSysErrorL4(); TH1* GetSysErrorParticleID(const char* var, const TH1* hBins); Double_t GetSysErrorParticleID(); TArrayD XSectionTot(); // TH1* XSectionPt(); // TH1* XSectionEta(); // TH1* XSectionWgammaP(); TH1* XSection(const char* var, Bool_t norm); TH1* XSection(const char* var1, const char* var2, Int_t firstBin2, Int_t lastBin2, Bool_t norm); TH1* XSection(TH1* hCross, TH1* sysErrHist, const char* var, GFHistArray* mcHists = NULL, const char *var2 = NULL, Bool_t norm = kFALSE);//pt,eta,phi,wGammaP TArrayD XSectionDsJetTot(const char *forwBack); TH1* XSectionDsJet(const char* var, const char* forwBack, Bool_t norm); TArrayD XSectionDsDiJetTot(); TH1* XSectionDsDiJet(const char* var, Bool_t norm); TH1* GetSysErrorModelDsJet(const char* var, const char* forwBack, Bool_t norm = kFALSE); Double_t GetSysErrorModelDsJet(const char* forwBack); // TH1* GetSysErrorRecDsJet(const char* var,const char* forwBack); // TH1* GetSysErrorTrigDsJetMc(const char* var,const char* forwBack); // TH1* GetSysErrorTrigDsJet(const TH1* histBins, const char* var,const char* forwBack); // TH1* GetSysErrorAccDsJet(const char* var,const char* forwBack); TH1* GetSysErrorFitDsJet(const TH1* histBins, const char* var,const char* forwBack); TH1* CalcSysErrorFitDsJet(const char* var,const char* forwBack, Int_t fitOrNotFlag = 5); Double_t CalcSysErrorFitDsJet(const char *forwBack, Int_t fitOrNotFlag = 5); TH1* CalcSysErrorFitDsDiJet(const char *var, Int_t fitOrNotFlag = 5); TH1* CalcSysErrorScaleUpDsJet(const char* var, const char* forwBack); TH1* CalcSysErrorScaleDownDsJet(const char* var, const char* forwBack); TH1* GetSysErrorScaleDsJet(const TH1* histBins, const char* var,const char* forwBack); // TH1* GetSysErrorTrackDsJet(const TH1* histBins, const char* var,const char* forwBack); TH1* GetSysErrorTotalDsJet(const char* var,const char* forwBack, Bool_t norm); Double_t GetSysErrorTotalDsJet(const char* forwBack); TH1* GetSysErrorScaleDsDiJet(const TH1* histBins, const char* var); TH1* GetSysErrorModelDsDiJet(const char* var, Bool_t norm = kFALSE); Double_t GetSysErrorModelDsDiJet(); TH1* GetSysErrorTotalDsDiJet(const char* var, Bool_t norm); Double_t GetSysErrorTotalDsDiJet(); TH1* GetHist2() {return fHist2;}// storage for possible 2nd return value... GFHistManager* GetHistManager() {return fHistManager;} GFDstarXSections* GetDstarXSections() {return fXSections;} GFDstarHistsAnalysisData* GetDstarHistsAnalysisDataUp() {return fAnalysisDataUp;} GFDstarHistsAnalysisData* GetDstarHistsAnalysisDataDown() {return fAnalysisDataDown;} // TH1* XSectionWgammaPBoth(Bool_t acceptOnMc = kFALSE); // TH1* XSectionTotHist(Bool_t draw = kFALSE, Bool_t acceptOnMc = kFALSE); // TArrayD XSectionTot(Bool_t acceptOnMc = kFALSE) const; void SetTrigger(Int_t trigger); void SetBatch(Bool_t yesNo = kTRUE); void SetOutFile(const char *fileName); protected: void Init(const char* prefix); TH1* GetRelDeviation(TH1* histMc, TH1* histMcRef, const char* var, const char* legEntry1 = NULL, const char* legEntry2 = NULL, Option_t* opt=""); Double_t GetRelDeviation(Double_t reference, Double_t deviation); TH1* CombineErrorHists(const GFHistArray* hists, const char* var); TH1* GetHist(const char* var, const char* name = NULL, const char* title = NULL); TH1* CreateConstHist(const TH1* h, Double_t val, const char* tit); void PrintTable(const TH1 *, const char* title) const; TH1* GetSysErrorModel(TH1 *hMc, TH1 *hMcRef, const char *tit, const char *var, Bool_t norm); Bool_t WriteToFile(const GFHistArray &hists, const char *label); GFHistManager *fHistManager; GFDstarXSections *fXSections; // main source GFDstarHistsAnalysisData *fAnalysisDataUp; GFDstarHistsAnalysisData *fAnalysisDataDown; GFDstarHistsAnalysisMc *fAnalysisMcLeft; // normal MC, but 44-acceptance curves moved... GFDstarHistsAnalysisMc *fAnalysisMcRight; // left / right TH1 *fHist2; // storage for second return value... TFile * fOutFile; // if given, X-section hists will be stored in there private: Double_t fSysParticleID; Double_t fSysReflect; Double_t fSysBranch; Double_t fSysLumi; Double_t fSysL4; Double_t fSysTrigEff; Double_t fSysTagTotal83; Double_t fSysTrackEff; Double_t fSysFit; Double_t fSysDsJetTrig; Double_t fSysDsJetScale; ClassDef(GFDstarSysErrors,0) // class for D* cross sections and their systematic errors }; #endif