#if !defined (__CINT__) || defined (__MAKECINT__) #include "TH1.h" #include "TH2.h" #include "TProfile.h" #include #include #include "Stntuple/obj/TCalDataBlock.hh" #include #include #endif class TTrackAnaModule: public TStnModule { //----------------------------------------------------------------------------- // histograms //----------------------------------------------------------------------------- public: struct TrackHist_t { TH1F* fNSvxHits; // algorithm vs N hits TH1F* fNSvxRPhiHits; // algorithm vs N(r-phi)hits TH1F* fNSvxStereoHits; // algorithm vs N(stereo)hits TH1F* fNCotHits; TH1F* fAlgorithm; TH1F* fPt; TH1F* fC0; TH1F* fPhi0; TH1F* fLam0; TH1F* fChi2; TH1F* fChi2Cot; TH1F* fChi2Svx; TH1F* fZ0; TH1F* fD0; }; //----------------------------------------------------------------------------- // set 0 : all tracks // set 1 : COT-only algorithm#2 // set 2 : IO tracks 3 // set 3 : OI 4 // set 4 : OI 3D 11 // set 5 : SVX-only KAL 16 // set 6 : KAL OI 3D 17 // set 7 : OI stereo 22 // set 8 : KAL OI stereo 23 // set 9 : KAL OI 24 //----------------------------------------------------------------------------- enum { kNTrackHistSets = 10 }; struct EventHist_t { TH1F* fRunNumber; TH1F* fNTracks[kNTrackHistSets]; }; //----------------------------------------------------------------------------- // data members //----------------------------------------------------------------------------- public: // pointers to the data blocks used TStnTrackBlock* fTrackBlock; // histograms filled struct Hist_t { TrackHist_t fTrack[kNTrackHistSets]; EventHist_t fEvent; } fHist; int fMinNTracks_101; // used by bit 101 int fMaxNTracks_101; int fSet_101 ; //----------------------------------------------------------------------------- // functions //----------------------------------------------------------------------------- public: TTrackAnaModule(const char* name="TrackAna", const char* title="TrackAna"); ~TTrackAnaModule(); // accessors Hist_t* GetHist () { return &fHist; } TStnTrackBlock* GetTrackBlock () { return fTrackBlock; } //----------------------------------------------------------------------------- // setters //----------------------------------------------------------------------------- void SetMinNTracks_101(int N) { fMinNTracks_101 = N; } void SetMaxNTracks_101(int N) { fMaxNTracks_101 = N; } void SetSet_101 (int A) { fSet_101 = A; } //----------------------------------------------------------------------------- // overloaded methods of TStnModule //----------------------------------------------------------------------------- int BeginJob(); int BeginRun(); int Event (int ientry); int EndJob (); //----------------------------------------------------------------------------- // other methods //----------------------------------------------------------------------------- void BookTrackHistograms(TrackHist_t& Hist, const char* Folder); void BookEventHistograms(EventHist_t& Hist, const char* Folder); void BookHistograms(); void FillTrackHistograms(TrackHist_t& Hist, TStnTrack* Track); void FillEventHistograms(EventHist_t& Hist); ClassDef(TTrackAnaModule,0) };