#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 #include #endif class TStnMuonID; class TSimpleExtrapolator; class TCtvmft; class TJpsiMonModule: public TStnModule { private: TCtvmft* dimuFit; public: struct MuMuHist_t { TH1F* fMass; TH1F* fMassSvx; TH1F* fMassCot; TH1F* fFitMass; TH1F* fCharge; TH1F* fPt; }; struct EScaleHist_t { TH1F* fEmEnergyCMU; TH1F* fHadEnergyCMU; }; struct MuoIDHist_t { TH1F* fCentral [5]; TH1F* fDetEta [5]; TH1F* fIso [5]; TH1F* fIso1 [5]; TH1F* fHadEm [5]; TH1F* fEOverP [5]; TH1F* fEt [5]; TH1F* fSeedIEta [5]; TH1F* fWedgeNumber [5]; TH1F* fTrackPt [5]; TH1F* fChi2Strip [5]; TH1F* fXCes [5]; TH1F* fZCes [5]; TH1F* fDelX [5]; TH1F* fDelZ [5]; TH1F* fLshr [5]; TH1F* fLshr2 [5]; TH1F* fTIso [5]; TH1F* fTrackD0 [5]; TH1F* fTrackZ0 [5]; TH1F* fCotNAxHits [5]; TH1F* fCotNStHits [5]; TH1F* fFailedBits; TH1F* fPassed; // summary histogram }; struct MuoHist_t { TH1F* fPt; TH1F* fEta; TH1F* fPhi; TH1F* fEmEnergy; TH1F* fHadEnergy; TH1F* fDetCode; TH1F* fTrkAlg; TH1F* fNSVXHits; }; struct EventHist_t { TH1F* fNMu ; }; struct Hist_t { MuoHist_t fMuoHist ; MuMuHist_t fMuMuHist[2]; EScaleHist_t fEScaleHist; EventHist_t fEventHist; TH1F* fRunNumber; TH1F* fFilterResult; }; protected: // pointers to the data blocks used TStnTriggerBlock* fTriggerBlock; TStnTrackBlock* fTrackBlock; TStnMetBlock* fMetBlock; TStnMuonBlock* fMuonBlock; // histograms filled Hist_t fHist; //----------------------------------------------------------------------------- // to study electron ID efficiencies //----------------------------------------------------------------------------- Int_t fIdWord [100]; Int_t fLooseIdWord[100]; TObjArray* fListOfGoodMuons; TObjArray* fListOfLooseMuons; Int_t fNGoodMuons; Int_t fNLooseMuons; //----------------------------------------------------------------------------- // modes of operations //----------------------------------------------------------------------------- Int_t fCutMode; // 0: me, 1: etf, 2: etf_fid //----------------------------------------------------------------------------- // extrapolator //----------------------------------------------------------------------------- TSimpleExtrapolator* fExtrapolator; public: TJpsiMonModule(const char* name="JpsiMon", const char* title="JpsiMon"); ~TJpsiMonModule(); // ****** accessors Hist_t* GetHist () { return &fHist; } TStnMuonBlock* GetMuonBlock() { return fMuonBlock; } TStnTriggerBlock* GetTriggerBlock () { return fTriggerBlock; } TStnTrackBlock* GetTrackBlock () { return fTrackBlock; } // ****** 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 BookMuMuHistograms (MuMuHist_t& Hist, Int_t I); void BookEScaleHistograms(EScaleHist_t& Hist); void BookMuonHistograms (MuoHist_t& Hist); void BookEventHistograms (EventHist_t& Hist); void BookHistograms(); bool IsGoodMuon(TStnMuon* Mu); void FillMuonHistograms (MuoHist_t& Hist, TStnMuon* Muon); void FillMuMuHistograms (MuMuHist_t& Hist, TStnMuon* Mu1 , TStnMuon* Mu2 ); void FillEScaleHistograms (EScaleHist_t& Hist, TStnMuon* Mu1 , TStnMuon* Mu2 ); void FillEventHistograms (EventHist_t& Hist); void PlotHistograms(int run_number, int slide); ClassDef(TJpsiMonModule,0) };