#if !defined (__CINT__) || defined (__MAKECINT__) #include "TH1.h" #include "TH2.h" #include "TProfile.h" #include "TRandom.h" #include #include #include #include #include #include #include #include #endif class TStnElectronID; class TLumiMonModule: public TStnModule { public: struct EleHist_t { TH1F* fEt; TH2F* fEtVsEta; TH2F* fWedgeVsDelXPos; TH2F* fWedgeVsDelXNeg; TH2F* fWedgeVsZCes; TH2F* fWedgeVsDelZ; TH2F* fEmfrVsDelZ; TH1F* fPhi; TH1F* fN10; TH1F* fIso; TH1F* fIso1; TH1F* fDelX; TH1F* fDelZ; TH1F* fEOverP; TH1F* fEOverPPos; TH1F* fEOverPNeg; TH1F* fHadEm; TH1F* fNCesStripClusters; TH1F* fNCesWireClusters; TH1F* fCesStripEnergy; TH1F* fCesWireEnergy; TH2F* fCesEStripVsEWire; TH2F* fCesEStripVsEta[2]; TH2F* fCesEStripVsEt[2]; TH1F* fCesStripChi2; TH1F* fCesWireChi2; TH1F* fXCes; TH1F* fZCes; TH1F* fLshr; TH1F* fLshr2; TH1F* fMass; //----------------------------------------------------------------------------- // electron track histograms //----------------------------------------------------------------------------- TH1F* fTrackPt; TH1F* fTrackD0; TH1F* fTrackD0Corr; TH1F* fTrackZ0; TH1F* fTrackChi2; TH1F* fTrackNCotHitsTot; TH1F* fTrackNCotHitsAx; TH1F* fTrackNCotHitsSt; TH1F* fTrackCotChi2; TH1F* fTIso; TH1F* fTrackXCes; TH1F* fTrackZCes; TH1F* fNSvxHits; // total number of SVX hits TH1F* fNSvxRPhiHits; TH1F* fNSvxSASHits; TH1F* fNSvxZHits; TH2F* fNCotHitsTotVsLumi; TH2F* fNCotHitsAxVsLumi; TH2F* fNCotHitsStVsLumi; TH2F* fIsoVsLumi; TH1F* fFailedBits; }; struct EventHist_t { TH1F* fRunNumber; TH1F* fFilterResult; TH1F* fInstLumi; TH1F* fMet0; TH1F* fMet1; TH2F* fMet0VsMet1; TH1F* fMt[2]; TH1F* fNTracks; TH1F* fNGoodEle; TH2F* fIsoVsMet; TH2F* fIso1VsMet; TH1F* fMetPerp[2]; TH2F* fNTracksVsLumi[3]; TH2F* fNV00VsLumi; TH2F* fNV12VsLumi; }; //----------------------------------------------------------------------------- // set 0 : all electrons // set 1 : tight electrons // set 2 : loose electrons // set 3 : electrons with I/O tracks //----------------------------------------------------------------------------- enum { kNElectronHistSets = 4 }; enum { kNEventHistSets = 2 }; struct Hist_t { EleHist_t fEle [kNElectronHistSets]; EventHist_t fEvent[kNEventHistSets ]; }; protected: // pointers to the data blocks used TStnElectronBlock* fElectronBlock; TStnTriggerBlock* fTriggerBlock; TStnTrackBlock* fTrackBlock; TStnVertexBlock* fVertexBlock; TStnMetBlock* fMetBlock; // histograms filled Hist_t fHist; //----------------------------------------------------------------------------- // to study electron ID efficiencies //----------------------------------------------------------------------------- Int_t fIdWord [100]; TObjArray* fListOfGoodElectrons; Int_t fNGoodElectrons; //luminosity monitoring Float_t fInstLumi; Int_t fNTracks[10]; Int_t fNV00; Int_t fNV12; TStnElectronID* fTightID; //----------------------------------------------------------------------------- // modes of operations //----------------------------------------------------------------------------- Int_t fCutMode; // 0: me, 1: etf, 2: etf_fid public: TLumiMonModule(const char* name="LumMon", const char* title="LumMon"); ~TLumiMonModule(); //----------------------------------------------------------------------------- // accessors //----------------------------------------------------------------------------- Hist_t* GetHist () { return &fHist; } EleHist_t* GetEleHist(int i) { return &fHist.fEle[i]; } TStnElectronBlock* GetElectronBlock() { return fElectronBlock; } TStnTriggerBlock* GetTriggerBlock () { return fTriggerBlock; } TStnTrackBlock* GetTrackBlock () { return fTrackBlock; } TStnElectronID* GetTightID () { return fTightID; } //----------------------------------------------------------------------------- // modifiers //----------------------------------------------------------------------------- void SetCutMode (Int_t M) { fCutMode = M; } //----------------------------------------------------------------------------- // overloaded methods of TStnModule //----------------------------------------------------------------------------- int BeginJob(); int BeginRun(); int Event (int ientry); int EndJob (); //----------------------------------------------------------------------------- // other methods //----------------------------------------------------------------------------- void BookElectronHistograms (EleHist_t& Hist, const char* Folder); void BookEventHistograms (EventHist_t& Hist, const char* Folder); void BookHistograms (); void FillElectronHistograms (EleHist_t& Hist, TStnElectron* Ele); void FillEventHistograms (EventHist_t& Hist); ClassDef(TLumiMonModule,0) };