/****************************************************************************** * $Id: CbmRichRingQa.h,v 1.1 2006/04/10 08:21:04 hoehne Exp $ * * Class : CbmRichRingQa * Description : Quality checks or ring finders: * efficiency calculation etc. * * Author : Simeon Lebedev * ******************************************************************************* * $Log: CbmRichRingQa.h,v $ * Revision 1.1 2006/04/10 08:21:04 hoehne * routine for checking the ring finders (quality, efficiency) * initial version * * * *******************************************************************************/ #ifndef CBMRICHRINGQA_H #define CBMRICHRINGQA_H #include "TH1D.h" #include "TH2D.h" #include "CbmTask.h" #include "map.h" #include #include "CbmRichRing.h" class CbmRichRingQa : public CbmTask{ TClonesArray* fRings; // Array of CbmRichRings TClonesArray* fPoints; // Array of CbmMCPoints TClonesArray* fTracks; // Array of CbmMCTracks TClonesArray* fHits; // Array of CbmRichHits TClonesArray* fMatches; // Array of CbmRichRingMatch TClonesArray* fProj; // Array of CbmRichRingMatch TClonesArray* fTrackMatch; //Array of STSTrackMatch TClonesArray* gTrackArray; // Array of Global Tracks map fRingMap; map fRingMapWithHits; Int_t fEventNumber; Int_t fNormType; Int_t fNofHitsInRingCut; public: /** Default constructor **/ CbmRichRingQa(); /** Standard Constructor with name, title, and verbosity level *@param verbose verbosity level (0=quiet, 1=event level, 2=track level, 3=debug) */ CbmRichRingQa(const char *name, const char *title, Int_t verbose, Int_t normType); /** Destructor **/ virtual ~CbmRichRingQa(); /** Initialization of the task **/ virtual InitStatus Init(); /** Executed task **/ virtual void Exec(Option_t* option); /** Finish task **/ virtual void Finish(); void EfficiencyCalc(); void DiffFakeTrue(); Bool_t DoesRingHaveProjection(Int_t trackId); Int_t fNofAllRings; //number of all MC rings Int_t fNofElRings; //number of all electron MC rings Int_t fNofPiRings; //number of all pion MC rings Int_t fNofElRingsProj; //number of El MC rings with proj Int_t fNofPiRingsProj; //number of Pi MC rings with proj Int_t fNofElRingsProjHitCut;//number of El MC rings with proj and # hits more than HitCut Int_t fNofPiRingsProjHitCut;//number of Pi MC rings with proj and # hits more than HitCut Int_t fNofTrueFoundElRingsProjHitCut; Int_t fNofTrueFoundPiRingsProjHitCut; Int_t fNofCloneRings; Int_t fNofFakeRings; TH1D* fh_TrueFoundElRingsProjHitCutMom;///Number of found rings vs momentum. Electron. Proj TH1D* fh_MCElRingsProjHitCutMom;///Number of MC rings vs momentum. Electron. Proj TH1D* fh_TrueFoundElRingsProjHitCutRadPos;///Number of found rings vs RadialPosition. Electron. Proj TH1D* fh_MCElRingsProjHitCutRadPos;///Number of MC rings vs RadialPosition. Electron. Proj TH2D* fh_FakeFoundRingsXYAll; /// Difference Fake and True rings histogramms BEGIN TH1D* fh_FakeNofHits; TH1D* fh_TrueElNofHits; //TH1D* fh_TruePiNofHits; TH1D* fh_FakeDistance; TH1D* fh_TrueElDistance; //TH1D* fh_TruePiDistance; TH1D* fh_FakeAngle; TH1D* fh_TrueElAngle; //TH1D* fh_TruePiAngle; TH1D* fh_FakeNofHitsOnRing; TH1D* fh_TrueElNofHitsOnRing; //TH1D* fh_TruePiNofHitsOnRing; TH1D* fh_FakeChi2; TH1D* fh_TrueElChi2; //TH1D* fh_TruePiChi2; TH1D* fh_FakeRadPos; TH1D* fh_TrueElRadPos; //TH1D* fh_TruePiRadPos; TH1D* fh_FakeRadius; TH1D* fh_TrueElRadius; //TH1D* fh_TruePiRadPos /// Difference Fake and True rings histogramms END std::ofstream foutFakeAndTrue; TH2D* fh_HitsXY;//hits distribution (x,y) TH2D* fh_TrueFoundRingsXYE;// (x,y) of true electron rings TH2D* fh_TrueFoundRingsXYPi; // (x,y) of true pions rings TH1D* fh_NhitsPerEvent;//Nof hits per event TH1D* fh_NprojPerEvent;//Nof projections/ event ClassDef(CbmRichRingQa,1) }; #endif