#ifndef CBMRICHMIRRORSORTINGCORRECTION_H #define CBMRICHMIRRORSORTINGCORRECTION_H #include "FairTask.h" #include "CbmRichRingFitterCOP.h" #include "CbmRichRingFitterEllipseTau.h" #include "TGeoNavigator.h" #include "CbmRichRingLight.h" #include "TVector3.h" #include "CbmHistManager.h" #include "FairTrackParam.h" #include "CbmMCTrack.h" #include "CbmRichRing.h" using namespace std; class CbmRichMirrorSortingCorrection : public FairTask { public: /* * Constructor. */ CbmRichMirrorSortingCorrection(); /* * Destructor. */ virtual ~CbmRichMirrorSortingCorrection(); /** * \brief Inherited from FairTask. */ virtual InitStatus Init(); void InitHistProjection(); void InitHistoMap(); /** * \brief Inherited from FairTask. */ virtual void Exec( Option_t* option); void GetPmtNormal(Int_t NofPMTPoints, vector &normalPMT, Double_t &normalCste); void ComputeR2(vector &ptR2Center, vector &ptR2Mirr, vector ptM, vector ptC, vector ptR1, TGeoNavigator* navi, TString option, TString mirrorTileName); void ComputeP(vector &ptPMirr, vector &ptPR2, vector normalPMT, vector ptM, vector ptR2Mirr, Double_t constantePMT); /* * Function filling the diffX, diffY and distance histograms, from the outPos vector. */ void FillHistProjection(TVector3 outPosIdeal, TVector3 outPosUnCorr, TVector3 outPos, CbmRichRingLight ringLight, vector normalPMT, Double_t constantePMT, string str); void DrawHistProjection(); void DrawMap(Int_t strX, Int_t strY); void FillRingTrackDistance(); bool IsMcPrimaryElectron( const CbmMCTrack* mctrack); void DrawRingTrackDistance( Int_t k); void FillRingTrackDistanceCorr( const CbmRichRing* richRing, const FairTrackParam* pTrack, const CbmMCTrack* mcTrack); void DrawRingTrackDistanceCorr(); void DrawDistanceComp(); void setOutputDir(TString s) { fOutputDir = s; } void setCorrectionTableDir(TString s) { fCorrectionTableDir = s; } void setStudyName(TString s) { fStudyName = s; } void setThreshold(Int_t t) { fThreshold = t; } /** * \brief Inherited from FairTask. */ virtual void Finish(); private: UInt_t fEventNb; CbmRichRingFitterCOP* fCopFit; CbmRichRingFitterEllipseTau* fTauFit; TString fOutputDir; TString fCorrectionTableDir; TString fStudyName; CbmHistManager* fHM, *fHM2; std::map fDiffHistoMap; Double_t fTrackCenterDistanceIdeal; Double_t fTrackCenterDistanceCorrected; Double_t fTrackCenterDistanceUncorrected; TString fCorrectionMatching; Int_t fThreshold; TClonesArray* fGlobalTracks; TClonesArray* fRichRings; TClonesArray* fMCTracks; TClonesArray* fMirrorPoints; TClonesArray* fRefPlanePoints; TClonesArray* fPmtPoints; TClonesArray* fRichProjections; TClonesArray* fTrackParams; TClonesArray* fRichRingMatches; TClonesArray* fStsTrackMatches; ClassDef(CbmRichMirrorSortingCorrection, 1); }; #endif