// ------------------------------------------------------------------------- // ----- PndGemTrackFinderQA header file ----- // ----- Created 02.06.2009 by R. Karabowicz ----- // ------------------------------------------------------------------------- /** \class PndGemTrackFinderQA * \author R. Karabowicz * \date 19.03.2009 * \brief track finding quality assesment task * * Track finding QA, efficiency, mom. resolution and so on **/ #ifndef PNDGEMTRACKFINDERQA_H #define PNDGEMTRACKFINDERQA_H #include "TH1F.h" #include "TH2F.h" #include "FairMCPoint.h" #include "FairTask.h" #include "PndMCTrack.h" #include "PndGemHit.h" #include "PndGemTrack.h" #include "PndGemDigiPar.h" #include class PndGemTrackFinderQA : public FairTask { public: /** Default constructor **/ PndGemTrackFinderQA(); /** Default constructor **/ PndGemTrackFinderQA(Int_t iVerbose); /** Destructor **/ virtual ~PndGemTrackFinderQA(); /** Execution **/ virtual void Exec(Option_t* opt); /** Public modifiers **/ void SetVerbose(const Int_t& verbose) { fVerbose = verbose; }; private: PndGemDigiPar* fDigiPar; /** Arrays of MC information **/ TClonesArray* fMCTrackArray; TClonesArray* fMCPointArray; TClonesArray* fGemHitArray; // TClonesArray* fGemTrackArray; ///< Output array of PndGemTracks /** Verbosity level. ** 0 - quit ** 1 - event level ** 2 - track level ** 3 - debug (maximal output) **/ Int_t fVerbose; /** Event counter **/ Int_t fNofEvents; ///< event counter TVector3 fTargetPos; std::vector fMCTrackNofCrossedGemStations; std::vector fMCTrackNofGemPoints; std::vector fRecoTrackMCMatch; Int_t fNeededStationsToRecoTrack; Double_t fMinQuota; Int_t fNofMCAll; Int_t fNofMCAcc; Int_t fNofMCPrim; Int_t fNofMCSec; Int_t fNofMCRef; // primary, mom.mag > 0.5GeV/c Int_t fNofRecoAcc; Int_t fNofRecoPrim; Int_t fNofRecoSec; Int_t fNofRecoRef; // primary, mom.mag > 0.5GeV/c Int_t fNofRecoGhosts; Int_t fNofRecoClones; TList* fHistoList; // number of mc tracks, reco tracks, efficiency as function of MOMENTUM TH1F* fhMCAllVsP, *fhMCAccVsP, *fhMCPrimVsP, *fhMCSecVsP; TH1F* fhRecoAccVsP, *fhRecoPrimVsP, *fhRecoSecVsP; TH1F* fhEffAccVsP, *fhEffPrimVsP, *fhEffSecVsP; // number of mc tracks, reco tracks, efficiency as function of THETA TH1F* fhMCAllVsT, *fhMCAccVsT, *fhMCPrimVsT, *fhMCSecVsT; TH1F* fhRecoAccVsT, *fhRecoPrimVsT, *fhRecoSecVsT; TH1F* fhEffAccVsT, *fhEffPrimVsT, *fhEffSecVsT; // number of mc tracks, reco tracks, efficiency as function of NUMBER OF POINTS TH1F* fhMCAllVsN, *fhMCAccVsN, *fhMCPrimVsN, *fhMCSecVsN; TH1F* fhRecoAccVsN, *fhRecoPrimVsN, *fhRecoSecVsN; TH1F* fhEffAccVsN, *fhEffPrimVsN, *fhEffSecVsN; // momentum resolution vs MOMENTUM TH2F* fhMomResAcc, *fhMomResPrim, *fhMomResSec; TH1F* fhNofHitsPerTrack; TH1F* fhNofHitsPerRecoTrack; TH1F* fhNofHitsPerGhost; TH1F* fhNofHitsPerClone; TH1F* fhNofCorrHitsPerRecoTrack; TH1F* fhNofOthTHitsPerRecoTrack; TH1F* fhNofNoTrHitsPerRecoTrack; TH1F* fhNofMCTracksPerEvent, *fhNofRecoTracksPerEvent; void CreateHistos(); void PrepareMCTracks(); void MatchRecoTracks(); /** Get parameter containers **/ virtual void SetParContainers(); void DivideHistos(TH1*, TH1*, TH1*); /** Finish **/ virtual void Finish(); /** Intialisation **/ virtual InitStatus Init(); /** Reinitialisation **/ virtual InitStatus ReInit(); ClassDef(PndGemTrackFinderQA,1); }; #endif