#ifndef MCBM_RICH_QA_REAL #define MCBM_RICH_QA_REAL #include "FairTask.h" #include "CbmRichRingFinderHoughImpl.h" class TClonesArray; class CbmRichRing; class CbmRichHit; class CbmTofTracklet; class CbmHistManager; class TVector3; #include #include using namespace std; class CbmRichMCbmQaReal : public FairTask { public: /** * \brief Standard constructor. */ CbmRichMCbmQaReal(); /** * \brief Standard destructor. */ virtual ~CbmRichMCbmQaReal() {}; /** * \brief Inherited from FairTask. */ virtual InitStatus Init(); /** * \brief Inherited from FairTask. */ virtual void Exec(Option_t* option); /** * \brief Inherited from FairTask. */ virtual void Finish(); /** * \brief Set output directory where you want to write results (figures and json). * \param[in] dir Path to the output directory. */ void SetOutputDir(const string& dir) {fOutputDir = dir;} /** * \brief Draw histogram from file */ void DrawFromFile( const string& fileName, const string& outputDir); /** * Apply restriction to current mRICH Acceptance (for Simulations) */ void DoRestrictToAcc(){ fRestrictToAcc = true; } /** * Apply restriction to full mRICH Acceptance (for Simulations) */ void DoRestrictToFullAcc(bool val=true){ fRestrictToFullAcc = val; } private: TClonesArray* fRichDigis; TClonesArray* fTofDigis; TClonesArray* fStsDigis; TClonesArray* fT0Digis; TClonesArray* fRichHits; TClonesArray* fRichRings; TClonesArray* fTofHits; TClonesArray* fTofTracks; TClonesArray* fCbmEvent; CbmHistManager* fHM; Int_t fEventNum; Int_t fNofDrawnRings; Int_t fNofDrawnRichTofEv; string fOutputDir; // output dir for results bool fRestrictToAcc = false; bool fRestrictToFullAcc = false; bool RestrictToFullAcc(CbmTofTracklet *track); bool RestrictToFullAcc(TVector3 &pos); bool RestrictToFullAcc(Double_t x, Double_t y); /** * \brief Initialize histograms. */ void InitHistograms(); /** * \brief Draw histograms. */ void DrawHist(); void RichRings(); void DrawRing(CbmRichRing* ring); void DrawRing(CbmRichRing* ring, std::vector track) { DrawRing(ring, track, false); }; void DrawRing(CbmRichRing* ring, std::vector track, bool full); void DrawRichTofEv(const std::vector richHitIndx, const std::vector tofTrackIndx); std::pair FindClosestTrack(const CbmRichRing* ring, const std::vector track); std::pair FindClosestRing(CbmTofTracklet* track, std::vector &ringIndx); bool isAccmRICH(CbmTofTracklet *track); bool doToT(CbmRichHit* hit); Double_t getBeta(CbmTofTracklet *track); /** * \brief Copy constructor. */ CbmRichMCbmQaReal(const CbmRichMCbmQaReal&); /** * \brief Assignment operator. */ CbmRichMCbmQaReal& operator=(const CbmRichMCbmQaReal&); ClassDef(CbmRichMCbmQaReal,1) }; #endif