#ifndef __GFDSTARHISTSANALYSIS_H #define __GFDSTARHISTSANALYSIS_H // Author: Gero Flucke // Date: May 14th, 2002 // last update: $Date: 2005/11/16 00:39:02 $ // by: $Author: flucke $ // ROOT includes #include #include #include "TH2.h" // #include "/afs/desy.de/user/f/flucke/h1/root/DstarDmFitter/DstarDmFitter.h" #include "GFUtils/GFHistManager.h" #include "GFAnalysis/GFMultiDmFitter.h" #include "TArrayD.h" class TFile; class GFHistArray; class D0Fitter; class TH3; class TGraphAsymmErrors; class GFDstarHistsAnalysis : public TObject{ public: virtual ~GFDstarHistsAnalysis(); virtual void SetTrigger(Int_t trigger); void SetFitModeBins(Int_t mode);// {fFitMode = mode;} void SetFitModeD0(Int_t mode) {fFitModeD0 = mode;} void SetPeriod(const char* per) {fPeriod = per;} Bool_t SetBatch(Bool_t yesNo = kTRUE) {return fHistManager->SetBatch(yesNo);} Int_t GetTrigger() const {return fTrigger;} Int_t GetFitModeBins() const;// {return fFitMode;} GFHistManager* GetHistManager() {return fHistManager;} // DstarDmFitter* GetDstarDmFitter() {return fDstarFitter;} GFMultiDmFitter* GetMultiDmFitter() {return fMultiDmFitter;} const char* GetSampleName() const ; // ETAG33, 44, unknown virtual const char* GetPeriod() const {return fPeriod.Data();} const TFile* GetInFile() const {return fFileIn;} Bool_t IsBatch() const {return fHistManager->IsBatch();} void Print(const char* fileName) {fHistManager->Print(fileName);} void PrintTable(const TH1* hist, const char* title) const; void PrintPlusMinus(const TArrayD& values, const char* title) const; TArrayD DrawDm(Bool_t both = kFALSE); TArrayD DrawDmDsJet(const char* forwBack, UInt_t dmRefFlag = 2); TArrayD DrawDmDsDiJet(UInt_t dmRefFlag = 2); TH1* DrawDm(const char* var, Bool_t perBinW = kTRUE, const char *dir = NULL); //pt,eta,phi,wGammaP,ptSumEt,y,nJet,ptJet1/2,etaJet1/2,xGamma TH1* DrawDmPt();//Int_t fitMode = 1011); TH1* DrawDmEta(); TH1* DrawDmPhi(); TH1* DrawDmWgammaP(); TH1* DrawDm(const char* var1, const char* var2, Int_t firstBin2, Int_t lastBin2, Bool_t perBinW = kTRUE); TH1* DrawDm2D(const char* variablePair); TH1* DrawDmPtDsOverSumEt(const char* histName = "PtDstarOverSumETDm");//PtDstarOverSumETDm, sumETDm TH1* DrawDmTest(); void DrawDmAll(Bool_t perBinW); TH1* DrawDmDs1Jet(const char* varJetDs, const char* forwBack, Bool_t perBinW = kTRUE, UInt_t dmRefFlag = 2); void DrawDmDs1JetAll(const char* forwBack); // "Forw", "Back", "" TH1* DrawDmDsDiJet(const char* varDiJet, Bool_t perBinW = kTRUE, UInt_t dmRefFlag = 2);//Pt/Eta + DsJet/OthJet/Ds, Deta/Dphi/Pt/CosTh/xGam/DeltaR + Dijet, DeltaRNoDjet TH1* DrawDmTriggers(Bool_t allHists = kFALSE); TH1* DrawDmBgFinder(); TH1* DrawDmDoubleTrigPt(); TH1* DrawDmEventClasses(Int_t mode = 0);// 0: all events, 1: weight == 1, else: weight > 1 TH1* DrawDmEventClassesNo15(); TH1* DrawDmEventClassesNoL4Dstar(); TH1* DrawDmWeight(); TH1* DrawDmL4OpenCharm(); TArrayD DrawD0(Bool_t both = kFALSE); TH1* DrawD0(const char* variable); TH1* DrawD0NoL4Bias(const char* variable); TH1* DrawCheckD0(Int_t mode); TH1* DrawTrack(const char* varName);//var+track: PtK (Pt,Theta,Phi,Length,Start,Dca,Nhit,Dz0,LH + K,Pi,Pis) void DrawDedx(Bool_t lhCuts = kTRUE); void DrawDedxDiff(); TH1* DrawDedxLH(const char* track, Int_t pBinL, Int_t pBinU); // K, Pi, Pis TH1* DrawJetComposition(const char* component);//HadCl,EmCl,Track + 1/2/3/.../Pt1/Pt2/... TH1* DrawJetCompSRMean(const char* component, const char* pteta);//HadCl,EmCl,Track;Pt,Eta TH1* DrawJetProfile(const char* jetPhiEta);//jet1Phi, jet2Eta, jet1PhiPt1, jet1EtaEta3 TH1* DrawDmJetMult(const char* histName, Bool_t perBinW);//ptDstarNoJet,dstarInJetPt,dstarInJetEta,nNonDstarJet,nJet // defaul 'dstar' also to be changed in...McMore! TH1* CreateL4Eff(const char* var, Int_t dstar=1);//pt,eta,phi,ptSumEt,wGammaP,y,nTrack;golden dstar or class TH1* CreateL4EffSR(const char* var, Int_t dstar=1,Int_t fitFlag=2);//pt,eta,phi,ptSumEt,wGammaP,y,nTrack;golden dstar or class TH1* CreateL4EffDsClassSR(const char* var); TH1* CreateL4EffFit(const char* var, Int_t fitFlg=0, Bool_t dstar=kFALSE);//pt,eta,phi,ptSumEt,wGammaP,y TArrayD TotalL4EffSR(Int_t dstar=1);// golden D*, 0: class 15 void DrawYresolution(const char* var, Bool_t mcYtag = kFALSE); // Pt, Eta, Phi, WgammaP, Yjb, Ytag/Ygen void FitD0Hists(GFHistArray* d0Hists); void FitGaus(GFHistArray* arrayGausHists, TH1* histMean = NULL, TH1* histSigma = NULL); TH1* GetHist(const char* name, const char* dirName = NULL); TH1* GetHistPt1Cut(); TH1* GetHistPt2Cut(); TH1* GetHistPtCut(); TH1* GetHistDs1Jet(const char* forwback = ""); TH1* GetHistDs1JetRef(const char* forwback, UInt_t refFlag = 2); TH2* GetHist2D(const char* variable, const char* dirName = NULL); TH3* GetHist3D(const char* variablePair); TH1 *GetHist2Diff(Bool_t& flip, const char *v1, const char *v2, const char * nameAdd, const char* dir = NULL); TH2* GetHist2DPtDsOverSumEt(); TH2* GetHist2DDoubleTrigPt(); TH2* GetHist2DTriggers(const char* var); // L4v, L1ac, L1L4; maybe followed by Ntrig TH2* GetHist2DEventClass(); TH1* GetHistD0Pt1Cut(); TH1* GetHistD0Pt2Cut(); TH1* GetHistD0PtCut(); TH2* GetHist2DD0(const char* variable); TH2* GetHist2DTrack(const char* variableParticle); void MakeStringName(TString& variable) const; void CorrectForBinWidth(TH1* hist) const; void Normalise(TH1* hist, Bool_t overUnderflow = kFALSE) const; GFHistArray* CreateHistArray1D(TH2* hist2D, const char* varName, Bool_t ignoreUnderOverFlow = kTRUE, Bool_t projectX = kTRUE) const; // static Bool_t fgNoDelete; static const char* kDefDir; static const char* kDefName; TArrayD CountSignal(TH1* hist, Bool_t subtractBack) const; TGraphAsymmErrors* TmpGraph(TGraphAsymmErrors* grIn = NULL) { TGraphAsymmErrors* gr = fTmpGraph; fTmpGraph = grIn; return gr;} protected: GFDstarHistsAnalysis(const char* fileIn); GFDstarHistsAnalysis(const char* prefix, const char* period); void Draw(TH1* (GFDstarHistsAnalysis::*funcPtr) (const char*, Bool_t, const char*), Bool_t arg2, const char *arg3 = NULL); TH1* CreateHistYBins(TH2* hist2D, const char* titleAdd = NULL); // void DeleteObject(const char* name) const; virtual TH1* DrawDmVariable(const char* varName, TH2* hWc2D = NULL, TH1* hWc = NULL, Bool_t perBinW = kTRUE); void AddOutOfRange(TH3 *h3D, Int_t firstBin, Int_t lastBin, Bool_t flip, TH2* h2D) const; void AddOutOfRange(const TH2 *h2D, Int_t firstBin, Int_t lastBin, Bool_t flip, TH1 *h1D) const; TH1* DrawD0Variable(const char* varName); virtual TH1* DrawTrackReally(const char* varName); void SetHistPointerNull(); TFile* fFileIn; // TFile* fFileOut; // file to write histograms to GFHistManager* fHistManager; Int_t fTrigger; // which trigger's histograms (83, 84, -1) // follwing 3 into GFDstarHistsAnalysisData????? // DstarDmFitter* fDstarFitter; D0Fitter* fD0Fitter; // Int_t fFitMode; // D*-fit mode for FitDstarHists GFMultiDmFitter* fMultiDmFitter; Int_t fFitModeD0; // D0-fit mode in bins TH1* fHistSignalBack; TH2* fHist2D; TH1* fHist1D; TH1* fHistNumDstar; TString fPeriod; TObjArray* fVariables; private: void Init(const char* fileIn); // not virtual...! TGraphAsymmErrors* fTmpGraph; // possible storage as 2nd return value, reset by getter method ClassDef(GFDstarHistsAnalysis,0) //base for histogram manipulation }; #endif // __GFDSTARHISTsANALYSIS_H