// Author: Gero Flucke // Date: June 1st, 2002 // last update: $Date: 2006/01/11 11:33:27 $ // by: $Author: flucke $ #ifndef __GFDSTARANALYSE_H #define __GFDSTARANALYSE_H // ROOT includes #include #include #include #include "H1Skeleton/H1RunDependent.h" class TString; class TDirectory; class TH1; class H1Part; class H1PartJet; class H1PartDstar; class H1PartSelTrack; class H1Event; class H1EventList; class GFHistArray; class H1JetProfile2D; class GFSteerDstarAnalyse; class H1BankPtr; class GFDstarAnalyse : public H1RunDependent { public: GFDstarAnalyse(); virtual ~GFDstarAnalyse(); virtual void StartJob(); virtual void StartRun(Int_t run); virtual void EndJob(); virtual void EndRun(Int_t run); virtual void PrepareEvent(); virtual void CreateHistsDm(GFHistArray*& dmHist, GFHistArray*& dmHist83, GFHistArray*& dmHist84, const TString& nameAdd); virtual void CreateHistsD0(); virtual void CreateHistsTracks(); virtual void CreateHistsSumEt(); void CreateHistsTriggers(); void CreateHistsEventClass(); void CreateHistsTrackKind(); void CreateHistsCentralNotCombinedTrack(); virtual void CreateHistsL4Eff2(); void CreateHistsJetProf(); void CreateHistsJetComp(); virtual void CreateHistsDstarJets(); virtual void CreateHistsDstarDiJet(); void CreateHistsTest(); void CreateHistsTrackClus(); void CreateHistsTrackErr(); virtual void OpenTree() = 0; void OpenOds(Bool_t yesNo = kTRUE) {fOpenOds = yesNo;} void OpenMods(Bool_t yesNo = kTRUE) {fOpenMods = yesNo;} void OpenHat(Bool_t yesNo = kTRUE) {fOpenHat = yesNo;} virtual TDirectory* OpenHistsFile(const char* fileName = 0); Bool_t FillHistsDstar(const H1PartDstar* dstar); void FillHistsD0(const H1PartDstar* dstar); void FillHistsTracks(const H1PartDstar* dstar); void FillHistsSumEt(const H1PartDstar* dstar, Double_t sumEt = 0.); void FillHistsTriggers(const H1PartDstar* dstar); void FillHistsBgFinder(const H1PartDstar* dstar); void FillHistsEventClass(const H1PartDstar* dstar); void FillHistsTrackKind(const H1PartDstar* dstar); void FillHistsCentralNotCombinedTrack(const H1PartDstar* dstar); void FillHistsL4Eff2(const TObjArray* dstars); // void FillHistsJets(const H1PartDstar* dstar); virtual void FillHistsYjbRes(const H1PartDstar* ds) = 0; void FillHistsJetProf(const H1PartDstar* ds); void FillHistsJetComp(const H1PartDstar* ds); void FillHistsDstarJets(const H1PartDstar* ds); void FillHistsDstarDiJet(const H1PartDstar* ds); GFHistArray* CreateHistsDstar1Jet(Int_t forwbackFlag, Int_t dim) const; GFHistArray* CreateHistsDstarDiJetInt(Int_t dim) const; void FillHistsD0Checks(const H1PartDstar* ds); virtual void FillHistsJetMult(const H1PartDstar* ds, Bool_t accessPartCand); virtual void FillHistsTest(const H1PartDstar* ds); void FillHistsTrackClus(); void FillHistsTrackErr(const TObjArray *dstars); virtual Bool_t IsS83(const H1PartDstar* ds = NULL) const = 0; virtual Bool_t IsS84(const H1PartDstar* ds = NULL) const = 0; virtual Bool_t IsS83NoL4Check(const H1PartDstar* dstar) const = 0; virtual Bool_t IsS84NoL4Check(const H1PartDstar* dstar) const = 0; virtual Bool_t IsL4Ref(Int_t subtrig) const = 0; virtual Bool_t IsL4Found(Int_t hqsel45bit, const H1PartDstar *ds, Int_t hqselMode = -2) const = 0; Bool_t IsL4Found(Int_t hqsel45Bit, Int_t hqselMode, const H1BankPtr& yrclYecl) const; virtual Bool_t IsZvtxCut(Float_t cut = 0.) const; // 0.: default! virtual Bool_t IsSumEt(const H1PartDstar* dstar) const; virtual Bool_t IsSumPtKPiOK(const H1PartDstar* ds, Double_t ptCut) const; virtual Bool_t IsSignalRegionDm(const H1PartDstar* ds) const; virtual Bool_t DstarCutLoose(const H1PartDstar* ds) const; virtual Bool_t DstarCutLooseNoTrackCut(const H1PartDstar* ds) const; Bool_t D0CutLoose(const H1PartDstar* ds) const; // Bool_t HasNonCentralTrack(const H1PartDstar* dstar) const; virtual Bool_t AreTracksOk(const H1PartDstar* dstar) const; Bool_t IsDedxOK(const H1PartDstar* dstar, Int_t nDaughter = -1) const; Float_t GetNLH(const H1PartDstar* dstar, Int_t part) const; TObjArray GetJets(const H1PartDstar* ds, Int_t *dsJet = NULL) const; Int_t GetNonDstarJets(const H1PartDstar* dstar, TObjArray& jets) const; Bool_t GetDiJets(const H1PartDstar* dstar, const H1PartJet *&dsJet, const H1PartJet *&oJet) const; Bool_t JetCut(const H1PartJet* jet) const;//, Bool_t firstJet = kFALSE) const; Int_t GetHighestPt(const TObjArray& parts) const; Bool_t JetContains(const H1PartJet* jet, const H1PartDstar* ds) const; Double_t GetRecEnergies(Double_t& forward, Double_t& forwardBar, Double_t& barrel, Double_t& spacal) const; void GetEtRatios(const H1PartJet* jet, Double_t& ratioTrack, Double_t& ratioEmClus, Double_t& ratioHadClus); static const H1Part* GetCloser(const H1Part* reference, const H1Part* first, const H1Part* second, Float_t* dist = NULL); Double_t CalcSumEt(Double_t thetaCutDegree) const; Double_t GetCutPt1() { return fDsCutPt1;} Double_t GetCutPt2() { return fDsCutPt2;} const TString* GetPeriod() const {return fPeriod;} void Print(const H1PartDstar* dstar) const; // void Close(); #ifdef H1OO23 void SetOpenUserTree(Bool_t yesNo) {fOpenUserTree = yesNo;} #endif void SetJetFlag(Int_t flag) {fJetFlag = flag;} Bool_t SetIgnoreDedx(Bool_t ignore) { const Bool_t res = fIgnoreDedx; fIgnoreDedx = ignore; return res; } Bool_t SetIgnoreSumEt(Bool_t ignore) { const Bool_t res = fIgnoreSumEt; fIgnoreSumEt = ignore; return res; } Bool_t SetIgnoreSumPtKPi(Bool_t ignore) { const Bool_t res = fIgnoreSumPtKPi; fIgnoreSumPtKPi = ignore; return res; } static const Int_t kDmHistNumBins; static const Double_t kDmHistLowEdge; static const Double_t kDmHistHighEdge; static const Int_t kD0HistNumBins; static const Float_t kD0HistLowEdge; static const Float_t kD0HistHighEdge; static const Double_t kCmEnergySqr; // s = 4*E_e*E_p static const Int_t kNumEventClass; static const Int_t kL4FinderBit; static const Int_t kNumMaxWarn; // max number of warnings printed where limit foreseen static const Int_t kNumDefaultHists; // num hists handled by CreateHists and FillHists! GFHistArray* CreateHists(const char* nameAdd, const char* title, Int_t subTrig, UInt_t dimension, TDirectory* dir = NULL); void FillHists(GFHistArray* hists, const H1PartDstar* ds, Int_t subTrig, Double_t weightExtern = -1.); virtual Int_t RemoveLowPt(TObjArray* parts, Int_t nStay) const; virtual Int_t RemoveLowPt(TObjArray* parts, Double_t minPt) const; virtual Double_t Associate(const H1Part* ref1, const H1Part* ref2, H1PartJet*& outCloseTo1, H1PartJet*& outCloseTo2); // Float_t GetLikelihood(const H1PartSelTrack* selTr, Int_t part) const; H1EventList* GetEventList() {return fList;} protected: virtual Double_t GetWeight(Int_t trigger, const H1PartDstar *ds) const = 0; void CreateRunDepAnalog(TH1* input, GFHistArray* output, Int_t trigger); void FillHistsTracks(const H1PartDstar* dstar, GFHistArray* toFill, Double_t w);// const Bool_t FillHistsDstar(const H1PartDstar* dstar, GFHistArray* dmHists, GFHistArray* dmHists83, GFHistArray* dmHists84, Bool_t requireL4); void FillHistsJetComp(GFHistArray* hists, const H1PartJet* jet, Double_t dm, Double_t weight); void FillHistsDstar1Jet(const H1Part* ds, const H1PartJet* jet, GFHistArray* hists, Double_t weight, Double_t dm); void FillHistsDstarDiJet(const H1Part* ds, const H1PartJet* dsJet, const H1PartJet* oJet, Bool_t realDsJet, GFHistArray* hists, Double_t weight, Double_t dm); void CreateHistsD0Checks(); void CreateHistsBgFinder(); virtual void CreateHistsJetMult(); virtual Float_t GetWgammaP33() const = 0; virtual Float_t GetWgammaP44() const = 0; virtual Float_t GetWgammaPjb() const; virtual Float_t GetWgammaP(Int_t subTrig) const; virtual Float_t GetY33() const = 0; virtual Float_t GetY44() const = 0; virtual Float_t GetYjb() const; virtual Float_t GetY(Int_t subTrig) const; virtual Double_t GetZ(const H1PartDstar *ds) const; Bool_t OneL4ClassGiven(const TArrayI& classes) const; Double_t GetXgamma(const H1Part* part1, const H1Part* part2, Int_t trig) const; Double_t GetXgamma(const H1Part* part1, const H1Part* part2, Double_t y) const; Double_t GetXgammaMass(const H1PartDstar* dstar,const H1PartJet* jet,Double_t yHfs) const; virtual Double_t GetXgammaMassHelp(const H1Part* dstar,const H1PartJet* jet)const =0; Double_t GetXgammaMassDiJet(const H1PartDstar* dstar, const H1PartJet* dsJet, const H1PartJet* othJet, Double_t yHfs) const; virtual Double_t GetXgammaMassDiJetHelp(const H1Part *dstar, const H1PartJet *dsJet, const H1PartJet *othJet) const = 0; virtual Double_t GetXpMass(const H1PartDstar* dstar,const H1PartJet* jet) const; virtual Double_t GetXpMassHelp(const H1Part* dstar, const H1PartJet* jet) const = 0; Double_t GetSumEt(Int_t threshold = 1) const; virtual Double_t GetCmEnergySqr() const; TDirectory* MakeHistDir(const char* name, const char* title); GFSteerDstarAnalyse* fSteer; // steering object containing cuts and binning Bool_t fIgnoreDedx; Bool_t fIgnoreSumEt; Bool_t fIgnoreSumPtKPi; Double_t fDsCutPt1; // used for S84 from 24/9/2002 on Double_t fDsCutPt2; // used for S83 from 24/9/2002 on Double_t fEventCutyMinS83; Double_t fEventCutyMaxS83; Double_t fEventCutyMinS84; Double_t fEventCutyMaxS84; TArrayD fWgammaP33Bins; TArrayD fWgammaP44Bins; TArrayD fY33Bins; TArrayD fY44Bins; // TArrayD fJetEtaBins; // bins (and cuts?) for jet eta // TArrayD fJet1PtBins; // bins first jet // TArrayD fJet2PtBins; // 2nd jet Float_t fXgamProfile; // x_gamma border for profile hists GFHistArray* fDmHists; GFHistArray* fDmHistsS83; GFHistArray* fDmHistsS84; GFHistArray* fD0CheckHists; GFHistArray* fD0CheckHistsS83; GFHistArray* fD0Hists; GFHistArray* fD0HistsS83; GFHistArray* fD0HistsS84; GFHistArray* fTrackHists; GFHistArray* fTrackHistsS83; GFHistArray* fTrackHistsS84; GFHistArray* fSumEtHistsS83; GFHistArray* fSumEtHistsS84; GFHistArray* fTriggersHists; GFHistArray* fBgFinderHists; GFHistArray* fL4YesHistsS83; // L4 class GFHistArray* fL4YesHistsS84; GFHistArray* fL4NoHistsS83; GFHistArray* fL4NoHistsS84; GFHistArray* fL4YesNotDsHistsS83; GFHistArray* fL4YesNotDsHistsS84; GFHistArray* fL4YesDstarHistsS83; // L4 dstar finder in gamma p GFHistArray* fL4YesDstarHistsS84; GFHistArray* fL4NoDstarHistsS83; GFHistArray* fL4NoDstarHistsS84; GFHistArray* fEventClassHists; GFHistArray* fEventClassHistsS83; GFHistArray* fEventClassHistsS84; GFHistArray* fOpenCharmFindHists; GFHistArray* fTrackKindHists; GFHistArray* fCentralNotCombinedTrackHists; GFHistArray* fJet1ProfileHists; GFHistArray* fJet1ProfileHistsS83; GFHistArray* fJet1ProfileHistsS84; GFHistArray* fJet2ProfileHists; GFHistArray* fJet2ProfileHistsS83; GFHistArray* fJet2ProfileHistsS84; GFHistArray* fJetCompHists; GFHistArray* fJetCompHistsS83; GFHistArray* fJetCompHistsS84; // // GFHistArray* fNonDstarJetsHists; // // GFHistArray* fNonDstarJetsHistsS83; // // GFHistArray* fNonDstarJetsHistsS84; TObjArray fJetProfiler; TObjArray fJetProfilerS83; TObjArray fJetProfilerS84; GFHistArray* fTrackClusHists; GFHistArray* fTrackClusHistsForw; GFHistArray* fTrackClusHistsForwBar; GFHistArray* fTrackClusHistsBar; GFHistArray* fTrackClusHistsSpac; GFHistArray* fTrackErrHists; GFHistArray* fDstar1JetHists; GFHistArray* fDstar1JetHistsS83; GFHistArray* fDstar1JetHistsS84; GFHistArray* fDstarBack1JetHists; GFHistArray* fDstarBack1JetHistsS83; GFHistArray* fDstarBack1JetHistsS84; GFHistArray* fDstarForw1JetHists; GFHistArray* fDstarForw1JetHistsS83; GFHistArray* fDstarForw1JetHistsS84; GFHistArray* fDstarDiJetHists; GFHistArray* fDstarDiJetHistsS83; GFHistArray* fDstarDiJetHistsS84; GFHistArray* fJetMultHistsS83; GFHistArray* fTestHists; TObjArray fAllHistArrays; TFile* fHistFile; TString* fPeriod; #ifdef H1OO23 H1Event* fUserEvent; Bool_t fOpenUserTree; // dito #endif Bool_t fOpenHat; // flags to open chains or not Bool_t fOpenMods; // dito Bool_t fOpenOds; // dito Int_t fJetFlag; // flag to use jets with (0) or without (1) D* as input H1EventList* fList;// ClassDef(GFDstarAnalyse,0) // histogram book keeping, filling etc., base for MC and data }; #endif // __GFDSTARANALYSE_H