#ifndef CBMTRDQA_H #define CBMTRDQA_H #include "FairTask.h" #include class CbmTrdRadiator; class CbmTrdDigiPar; class CbmTrdModule; class CbmTrdGeoHandler; class TClonesArray; class CbmTrdPoint; class CbmTrdDigi; class CbmTrdCluster; class CbmTrdHit; class TProfile; class TProfile2D; class TH1F; class TH1I; class TH2I; class TH2F; class TCanvas; class TPolyLine; class CbmTrdQa : public FairTask { public: CbmTrdQa(CbmTrdRadiator *radiator=NULL); CbmTrdQa(const char *name, const char *title="CBM Task", const char *geo="", Double_t triggerThreshold = 1.0e-6, CbmTrdRadiator *radiator=NULL); virtual ~CbmTrdQa(); virtual InitStatus ReInit(); virtual InitStatus Init(); virtual void SetParContainers(); virtual void Exec(Option_t * option); void CreateLayerView(std::map& Map, TString folder, TString pics, TString zAxisTitle, Double_t fmax, Double_t fmin, Bool_t logScale); virtual void FinishEvent(); virtual void FinishTask(); void Register(); void SetTriggerThreshold(Double_t triggerthreshold); void SetTriangularPads(Bool_t triangles); private: Double_t CalcAngle(const CbmTrdPoint* pointA, const CbmTrdPoint* pointB); void SaveHistos(); TPolyLine *CreateTriangularPad(Int_t column, Int_t row, Double_t content); void NormalizeHistos(); void CreateLayerView(); void GetPadInfos(Int_t moduleAddress, Double_t x, Double_t y, Int_t &iCol, Int_t &iRow, Double_t &padSizeX, Double_t &padSizeY); Double_t GetTrackLength(CbmTrdPoint* point); CbmTrdQa& operator=(const CbmTrdQa&); CbmTrdQa(const CbmTrdQa&); TClonesArray *fMCTracks; TClonesArray *fPoints; //! TClonesArray *fDigis; //! TClonesArray *fClusters;//! TClonesArray *fHits; //! CbmTrdDigiPar *fDigiPar; //! CbmTrdModule *fModuleInfo; //! CbmTrdGeoHandler *fGeoHandler; //! std::map fLayerMap; //! std::map::iterator fLayerMapIt; //! std::map fLayerPointMap; std::map::iterator fLayerPointMapIt; //! std::map fLayerHitMap; std::map::iterator fLayerHitMapIt; //! std::map > fModulePointMap; //! std::map >::iterator fModulePointMapIt; //! std::map > fModuleDigiMap; //! std::map >::iterator fModuleDigiMapIt; //! std::map > fModuleClusterMap; //! std::map >::iterator fModuleClusterMapIt; //! std::map > fModuleHitMap; //! std::map >::iterator fModuleHitMapIt; //! std::map fModuleAveragePointsMap; std::map::iterator fModuleAveragePointsMapIt; std::map fModuleTrackableMap2; //! std::map::iterator fModuleTrackableMap2It; //! std::map fModuleTrackableMap; //! std::map::iterator fModuleTrackableMapIt; //! std::map fModuleClusterSizeMap; //! std::map::iterator fModuleClusterSizeMapIt; //! std::map fModuledEdxMap; //! std::map::iterator fModuledEdxMapIt; //! std::map fModuleTracklengthMap; //! std::map::iterator fModuleTracklengthMapIt; //! std::map fModuleMultiPointMap; //! std::map::iterator fModuleDeltaEMapIt; //! std::map fModuleDeltaEMap; //! std::map::iterator fModuleMultiPointMapIt; //! std::map fModuleGhostMap; //! std::map::iterator fModuleGhostMapIt; //! std::map fModuleLostMap; //! std::map::iterator fModuleLostMapIt; //! std::map fModuleEfficiencyMap; //! std::map::iterator fModuleEfficiencyMapIt; //! Double_t fTriggerThreshold; TString fGeo; //histos Bool_t fD; Bool_t fT; Bool_t fP; Bool_t fC; Bool_t fH; Bool_t fTrianglePads; TH2I *fLayerDummy; TH2F *fStsTrdPoints; TH2F *fStsMuchPoints; TH2F *fStsTofPoints; TH2F *fMuchTrdPoints[11]; TH2F *fMuchTofPoints[11]; TH2F *fTrdTofPoints[11]; TH2F *fStsTrdPointsTrackable; TH2F *fTrdPointsPerMcTrack_PID; TH2F *fTrdPointsPerMcTrack_PT; TH2F *fTrdPointsPerMcTrack_P; TH2F *fTrdTrackCrossedRadiator; TH1I *fMultiHitSamePadPerMcTrack; TH1I *fMultiHitSamePadPerMcTrack_angle; TH2I *fMultiHitSamePadPerMcTrack_zBirth; TH2I *fMultiHitSamePadPerMcTrack_PID; TH2I *fMultiHitSamePadPerMcTrack_motherPID; TH2I *fMultiHitSamePadPerMcTrack_motherzBirth; TH1I *fMultiHitAdjacentPadPerMcTrack; TH1I *fMultiHitAdjacentPadPerMcTrack_angle; TH2I *fMultiHitAdjacentPadPerMcTrack_zBirth; TH2I *fMultiHitAdjacentPadPerMcTrack_PID; TH2I *fMultiHitAdjacentPadPerMcTrack_motherzBirth; TH2I *fMultiHitAdjacentPadPerMcTrack_motherPID; TH1I *fDistanceMcToHit; TH1I *fDistanceMcToHitAll; TH1I *fPositionResolutionShort; TH1I *fPositionResolutionLong; TH1F *fdEdxPoint; TH1F *fdEdxDigi; TH1F *fdEdxCluster; TH1F *fdEdxHit; TH1F *fdEdxPionMc; TH1F *fdEdxPionHit; TH1F *fdEdxPionGhost; TH1F *fdEdxElectronMc; TH1F *fdEdxElectronHit; TH1F *fdEdxElectronGhost; TH1I *fClusterSize; TH1I *fPointsPerDigi; TH1I *fDigiPerCluster; TH1I *fClusterPerHit; TProfile *fMultiPointssVsR; TProfile *fGhostPointsVsR; TProfile *fMultiHitsVsR; TProfile *fGhostHitVsR; TProfile *fLostPointVsR; TProfile *fHitToPointEfficiencyVsR; TProfile *fMultiHitsVsAlpha; TProfile *fGhostHitVsAlpha; TProfile *fLostPointVsAlpha; TProfile *fHitToPointEfficiencyVsAlpha; TProfile *fPRF_1D; TH2I *fPRF_2D; //LayerView CbmTrdRadiator *fRadiator; ClassDef(CbmTrdQa,1); }; #endif //