#ifndef __GFDSTARHISTSANALYSISMC_H #define __GFDSTARHISTSANALYSISMC_H #include "GFDstarHistsAnalysis.h" class TFile; class TH1; class GFDstarHistsAnalysisMc : public GFDstarHistsAnalysis { public: static const Double_t kHighestDmMc;// up to this value dm bins taken into account for N(D*) static const Double_t kBranchRatio; // BR(D*->Kpipis) from PDG static const Double_t kBranchRatioMc; // BR(D*->Kpipis) as used in H1MC static const Double_t kXSecCorrFactor;// due to wrong c->D* branching GFDstarHistsAnalysisMc(const char* mcFile); GFDstarHistsAnalysisMc(const char* prefix, const char* period); virtual ~GFDstarHistsAnalysisMc(); TH1* CreateTrigEff(const char* variable, Int_t TE = -1);//pt,eta,phi,wGammaP;19/31/def.:-1 TH1* CreateTrigEff(const char *var1, const char *var1, Int_t firstBin2, Int_t lastBin2, Int_t TE = -1); TH1* CreateTrigEffDsJet(const char* variable, const char* region, Int_t TE = -1);//Pt/Eta+Ds/Jet or Deta,Dphi,Dpt;Forw,Back,'';19,31,-1 TH1* CreateTrigEffDsDiJet(const char* var, Int_t TE = -1);//Pt/Eta + DJet/OthJet/Ds, Deta/Dphi/Pt/Pt2/CosTh/xGam/DeltaR + Dijet, DeltaRNoDjet;19,31,-1 TH1* CreateRecEff(const char* variable);//pt,eta,phi,wGammaP,... TH1* CreateRecEff(const char *var1, const char *var1, Int_t firstBin2, Int_t lastBin2); TH1* CreateRecEffDs1Jet(const char* var, const char* forwBack, UInt_t dmRefFlag = 2);//Pt/Eta+Ds/Jet,Dpt,Deta,Dphi;Forw,Back,'' TH1* CreateRecEffDsDiJet(const char* var, UInt_t dmRefFlag = 2);//Pt/Eta + DJet/OthJet/Ds, Deta/Dphi/Pt/Pt2/CosTh/xGam/DeltaR + Dijet, DeltaRNoDjet TH1* CreateDetAcceptance(const char* variable);//pt,eta,phi,wGammaP,... TH1* CreateHadCorr(const char* var, const char* forwBack="");//PtDs,PtJet,EtaJet,EtaDs,Deta,Dphi,PtDsJet,MDsJet,xGam TH1* CreateHadCorrDiJet(const char* var);//Pt/Eta + DJet/OthJet/Ds, Deta/Dphi/Pt/Pt2/CosTh/xGam/DeltaR + Dijet, DeltaRNoDjet TArrayD TotalHadCorr(const char *forwBack=""); TArrayD TotalHadCorrDiJet(); void DrawRecEffAll(); TH1* CreateAccept(const char* variable);//pt,eta.phi,wGammaP TH1* CreateAccept(const char *var1, const char *var2, Int_t firstBin2, Int_t lastBin2); TH1* CreateAcceptDsJet(const char* var, const char* regio);//Pt/Eta+Ds/Jet,Deta,Dphi,Dpt;'Back','Forw','' TH1* CreateAcceptDsDiJet(const char* var);//Pt/Eta + DJet/OthJet/Ds, Deta/Dphi/Pt/Pt2/CosTh/xGam/DeltaR + Dijet, DeltaRNoDjet // TH1* CreateAcceptOld(const char* variable);//pt,eta.phi,wGammaP // before 'per lumi' TArrayD TotalRecEff(); TArrayD TotalRecEffDsJet(const char* region, UInt_t dmRefFlag = 2); TArrayD TotalRecEffDsDiJet(UInt_t dmRefFlag = 2); TArrayD TotalTrigEff(Int_t TE = -1);// 19, 31, default: 0 means both TArrayD TotalTrigEffDsJet(const char* region, Int_t TE = -1);//Forw,Back,''; 19,31,-1 TArrayD TotalTrigEffDsDiJet(Int_t TE = -1); TArrayD TotalAccept(); TArrayD TotalAcceptDsJet(const char* region);//Forw, Back, '' // TArrayD TotalAcceptOld(); // outdated! TArrayD TotalAcceptDsDiJet(); TArrayD XSectionTot(Bool_t acceptanceWeighted = kFALSE); TArrayD XSectionTotDsJet(const char* forwBack); TArrayD XSectionTotDsDiJet(); TH1* XSectionTotHist(Bool_t draw = kFALSE, Bool_t acceptanceWeighted = kFALSE); TH1* XSectionPt(Bool_t acceptanceWeighted = kFALSE); TH1* XSectionEta(Bool_t acceptanceWeighted = kFALSE); TH1* XSectionPhi(Bool_t acceptanceWeighted = kFALSE); TH1* XSectionWgammaP(Bool_t acceptanceWeighted = kFALSE); TH1* XSection(const char* variable, Bool_t acceptanceWeighted = kFALSE);//pt,eta,phi,wGammaP,y,nJet TH1* XSection(const char* var1, const char* var2, Int_t firstBin2, Int_t lastBin2); TH1* XSectionRec(const char* variable);//pt,eta,phi,wGammaP,y,nJet,eta/ptJet1/2,xGamma TH1* XSectionDsJet(const char* var, const char* forwBack); TH1* XSectionDsJetRec(const char* var, const char* foBack); TH1* XSectionDsDiJet(const char* var); void DrawEflow(const char* region = NULL);// Barrel, Forw, Spacal or default: all; void DrawJetQuark(const char* jet = "jet1"); // jet1, jet2 TH1* DrawDsJetQuark(const char *var, const char *dsOrJet, Int_t mode = 0);// E pt eta phi, Ds DsJet ////////////////////////////////////////////////////// // not maintained anymore ////////////////////////////////////////////////////// // TH1* CreateJetPurity(const char* var); // n, phi, eta, pt // TH1* CreateJetStability(const char* var); // n, phi, eta, pt // TH1* DrawJetGenVsRec(const char* var, Int_t etaBin = 0);//n,phi,eta,pt; pt may take etaBin // TH1* DrawJetRes(const char* var, const char* rel = "", Int_t etaBin = 0);// n, phi, eta, pt; maybe add "Rel"; pt may take etaBin TH1* CreateDsJetPurity(const char* var);//Dphi Deta xGam PtJet PtDs EtaJet PhiJet DaughJet PtJetEta EtaJetPt TH1* CreateDsJetPurityHadCorr(const char* variable);//Dphi Deta xGam PtJet EtaJet TH1* CreateDsDiJetPurity(const char* var);//Pt/Eta + DJet/OthJet/Ds, Deta/Dphi/Pt/Pt2/CosTh/xGam/DeltaR + Dijet, DeltaRNoDjet TH1* CreateDsJetStability(const char* variable); //Dphi Deta xGam PtJet PtDs EtaJet PhiJet DaughJet PtJetEta EtaJetPt TH1* CreateDsJetStabilityHadCorr(const char* var);//xGam Deta Dphi EtaJet PtJet PtJet TH1* CreateDsDiJetStability(const char* var);//Pt/Eta + DJet/OthJet/Ds, Deta/Dphi/Pt/Pt2/CosTh/xGam/DeltaR + Dijet, DeltaRNoDjet TH1* DrawDsJetGenVsRec(const char* var = NULL, Bool_t hadGen = kFALSE); TH1* DrawDsJetRes(const char* var, const char* rel = "");//EtaJetRes EtaJetPtRes PtJetEtaResRel PtJetPtResRel PtJetResRel PtDsJetResRel PtDsResRel TH1* DrawDsDiJetGenVsRec(const char* var = NULL);//, Bool_t hadGen = kFALSE); TH2* DrawEffCorrWeights(const char* var);//Pt,Eta TH1* GetHistGen(const char* variable); TH1* GetHistGenWeight(const char* variable); TH1* GetHistGenNoAccWeight(const char* variable); TH1* GetHistGenAccept(const char* variable); TH1* GetHistTrig(const char* variable, Int_t TE = -1); // TE 19, 31 (default both) TH1* GetHistNonTrig(const char* variable); TH1* GetHistAccept(const char* variable); Double_t GetBranchRatio() const {return kBranchRatio;}// from PDG protected: void InitMC(const char* period); void Draw(TH1* (GFDstarHistsAnalysisMc::*funcPtr) (const char*)); TH1* CombinedAccept(const char* variable); TH1* CreateRecEff(const char* var, TH2* hRec2D, TH1 *hRecRef, TH1* hGen, const char* titlePrefix); TH1* CreateTrigEff(TH1* histRec, TH1* histTrig, Int_t TE, const char* var, const char* titlePrefix); TH1* CreateAccept(TH1* histGenAcc, TH1* histGen, const char* variable, const char* titlePrefix); TH1* CreateHadCorr(TH1 *hGen, TH1 *hParton, const char *var, const char *titlePrefix); TArrayD TotalRecEff(TH1* hRec, Double_t numGen, const char* prefix, TH1* hRecRef = NULL); TArrayD TotalTrigEff(Double_t nTrig, Double_t nRec, Double_t nEffRec, Double_t nFillRec, Int_t TE, const char* prefix); TArrayD TotalAccept(Double_t sumAcc, Double_t nGen, const char* prefix); TH1* CreatePurity(TH1* hAllRec,TH1* hGenRec, const char* var, Bool_t fagHadCorr); TH1* CreateStability(TH1* hGenRec, TH1* hGenNotRec, const char* variable, Bool_t fagHadCor); TH1* XSection(TH1* h, const char* var,const char* titPrefix); TH1* XSectionRecInt(TH1* hNDstar, TH1* hRecEff, //TH1* hTrigEff, TH1* hAccept, TH1* hXSecGen, TH1* hGenNoAccW, TH1* hGen); ClassDef(GFDstarHistsAnalysisMc,0) // manipulation of histograms (MC) }; #endif // __GFDSTARHISTSANALYSISMC_H