#ifndef CBMRICHMIRRORSORTINGALIGNMENT_H #define CBMRICHMIRRORSORTINGALIGNMENT_H #include "FairTask.h" #include "CbmRichRingFitterCOP.h" #include "CbmRichRingFitterEllipseTau.h" #include "alignment/CbmRichMirror.h" #include "TGeoNavigator.h" #include #include #include using namespace std; class TClonesArray; class TH1D; class TH2D; class CbmRichMirrorSortingAlignment : public FairTask { public: /* * Constructor. */ CbmRichMirrorSortingAlignment(); /* * Destructor. */ virtual ~CbmRichMirrorSortingAlignment(); /** * \brief Inherited from FairTask. */ virtual InitStatus Init(); /** * \brief Inherited from FairTask. */ virtual void Exec( Option_t* option); void ComputeAngles(); 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 s); void ComputeP(vector &ptPMirr, vector &ptPR2, vector normalPMT, vector ptM, vector ptR2Mirr, Double_t constantePMT); void CreateHistoMap(std::map> mirrorMap, std::map &histoMap); void DrawFitAndExtractAngles(std::map> &anglesMap, std::map histoMap); void setOutputDir(TString s) { fOutputDir = 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 fStudyName; Int_t fThreshold; std::map> fMirrorMap; TClonesArray* fGlobalTracks; TClonesArray* fRichRings; TClonesArray* fMCTracks; TClonesArray* fMirrorPoints; TClonesArray* fRefPlanePoints; TClonesArray* fPmtPoints; TClonesArray* fRichProjections; TClonesArray* fTrackParams; TClonesArray* fRichRingMatches; TClonesArray* fStsTrackMatches; CbmRichMirrorSortingAlignment(const CbmRichMirrorSortingAlignment&); CbmRichMirrorSortingAlignment operator=(const CbmRichMirrorSortingAlignment&); ClassDef(CbmRichMirrorSortingAlignment, 1); }; #endif