/** * @file * @author Christian Simon * @since 2017-08-10 */ #ifndef CBMTOFRECOMCQA_H #define CBMTOFRECOMCQA_H 1 #include "FairTask.h" #include "TString.h" #include #include class TClonesArray; class FairFileSource; class CbmTofDigiTbPar; class TH1F; class TH2F; class TH3F; class TEfficiency; class TFile; /** * @brief ... * @author Christian Simon * @since 2017-08-10 * @version 1.0 * @details ... */ class CbmTofRecoMCQa: public FairTask { public: CbmTofRecoMCQa(); virtual ~CbmTofRecoMCQa(); virtual void Exec(Option_t *option); // virtual void FinishEvent(); void SetAverageSpills(Bool_t bAverage) {fbAverageSpills = bAverage;} void SetLocalRadius(Double_t dRadius) {fdLocalRadius = dRadius;} void SetSpillLength(Double_t dLength) {fdSpillLength = dLength;} void SetSpillBreakLength(Double_t dLength) {fdSpillBreakLength = dLength;} void SetDataTimeOffset(Double_t dOffset) {fdDataTimeOffset = dOffset;} void SetNSerialSpills(Int_t iNSpills) {fiNSerialSpills = iNSpills;} void SetTimeAxisBinWidth(Double_t dBinWidth) {fdTimeAxisBinWidth = dBinWidth;} void SetHistogramFileName(const char* cFileName) {fHistogramFileName = TString(cFileName);} void SetFillLocalHistos(Bool_t bFill) {fbFillLocalHistos = bFill;} void SetHitCompatibilityMode(Bool_t bCompatibility = kTRUE) {fbHitCompatibilityMode = bCompatibility;} void SetAlternativeBranchNames(Bool_t bAlternative = kTRUE) {fbAlternativeBranchNames = bAlternative;} void SetConsiderPointClusters(Bool_t bPointClusters = kTRUE) {fbConsiderPointClusters = bPointClusters;} void SetRealClustering(Bool_t bRealClustering = kTRUE) {fbRealClustering = bRealClustering;} void SetConsiderRefTracks(Bool_t bRefTracks = kTRUE) {fbConsiderRefTracks = bRefTracks;} void SetChiSquareLimit(Double_t dLimit) {fdChiSquareLimit = dLimit;} protected: virtual InitStatus Init(); virtual void SetParContainers(); virtual void Finish(); private: CbmTofRecoMCQa(const CbmTofRecoMCQa&); CbmTofRecoMCQa& operator=(const CbmTofRecoMCQa&); void CreateHistograms(); void WriteHistograms(); void CreateSigmaHistograms(); Double_t GetAcrossPositionResidualSigma(Int_t iCounterAddress, Double_t dPointTime); Double_t GetAlongPositionResidualSigma(Int_t iCounterAddress, Double_t dPointTime); Double_t GetTimeResidualSigma(Int_t iCounterAddress, Double_t dPointTime); Double_t GetAcrossPositionResidualSigmaSPH(Int_t iCounterAddress, Double_t dPointTime); Double_t GetAlongPositionResidualSigmaSPH(Int_t iCounterAddress, Double_t dPointTime); Double_t GetTimeResidualSigmaSPH(Int_t iCounterAddress, Double_t dPointTime); FairFileSource* fFileSource; //! TClonesArray* fTofPointsTB; TClonesArray* fTofDigis; TClonesArray* fTofHits; TClonesArray* fTofHitDigiMatches; TClonesArray* fTofHitPointMatches; TClonesArray* fTofPointMatches; CbmTofDigiTbPar* fDigiTbParSet; Int_t fiNTimeAxisBins; Double_t fdTimeAxisBinWidth; Double_t fdTimeAxisRange; std::map fClusterSizes; std::map fStripToTSpectra; std::map fStripPositionSpectra; std::map fPointPositionSpectra; std::map fHitPositionSpectra; std::map fStripTimeResidualWalk; std::map fHitAcrossPositionResidual; std::map fHitAlongPositionResidual; std::map fHitTimeResidual; std::map fCentralClusterSizeEvolution; std::map fCentralTimeResidualEvolution; std::map fHitChiSquare; std::map fCorrectedHitChiSquare; std::map fClusterSizeEvolution; std::map fAcrossPositionResidualEvolution; std::map fAlongPositionResidualEvolution; std::map fTimeResidualEvolution; std::map fCentralStripToTEvolution; std::map fIntegratedEfficiency; std::map fChiSquareEfficiency; std::map fCorrectedChiSquareEfficiency; std::map fClusterSizesSPH; std::map fStripToTSpectraSPH; std::map fStripPositionSpectraSPH; std::map fHitPositionSpectraSPH; std::map fStripTimeResidualWalkSPH; std::map fHitAcrossPositionResidualSPH; std::map fHitAlongPositionResidualSPH; std::map fHitTimeResidualSPH; std::map fHitChiSquareSPH; std::map fCorrectedHitChiSquareSPH; std::map fClusterSizeEvolutionSPH; std::map fAcrossPositionResidualEvolutionSPH; std::map fAlongPositionResidualEvolutionSPH; std::map fTimeResidualEvolutionSPH; std::map fCentralStripToTEvolutionSPH; std::map fDistanceToLastPoint; std::map fDistanceToLocalLastPoint; std::map fDistanceToLastHitUnbiased; std::map fDistanceToLastHitBiased; std::map fEfficiencyToLastHitUnbiased; std::map fEfficiencyToLastHitBiased; std::map fClusterSizeToLastHitUnbiased; std::map fClusterSizeToLastHitBiased; std::map fTimeResidualToLastHitUnbiased; std::map fTimeResidualToLastHitBiased; std::map fLocalSurfaceFlux; std::map fChannelDigiRates; std::map fNHitsPerPoint; std::map fNPointsPerHit; std::map fAcrossPositionResidualEvolutionSigma; std::map fAlongPositionResidualEvolutionSigma; std::map fTimeResidualEvolutionSigma; std::map fAcrossPositionResidualEvolutionSigmaSPH; std::map fAlongPositionResidualEvolutionSigmaSPH; std::map fTimeResidualEvolutionSigmaSPH; TFile* fHistogramFile; TString fHistogramFileName; Int_t fiTotalNPoints; Int_t fiTotalNMergedPoints; Bool_t fbAverageSpills; Double_t fdSpillLength; Double_t fdSpillBreakLength; Double_t fdDataTimeOffset; Double_t fdLocalRadius; Bool_t fbFillLocalHistos; Int_t fiNSerialSpills; std::map fdPreviousPointTime; std::set > fPointLinkNbSet; Bool_t fbHitCompatibilityMode; Bool_t fbAlternativeBranchNames; Bool_t fbConsiderPointClusters; Bool_t fbRealClustering; Bool_t fbConsiderRefTracks; std::set > fProcessedHits; std::set > fProcessedDigis; Double_t fdChiSquareLimit; ClassDef(CbmTofRecoMCQa, 0); }; #endif