/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ /* * File: CbmTofTBClusterizer.h * Author: tablyaz * * Created on December 6, 2016, 11:29 AM */ #ifndef CBMTOFTBCLUSTERIZER_H #define CBMTOFTBCLUSTERIZER_H #include "CbmTofCell.h" #include "CbmTofDetectorId_v12b.h" #include "CbmTofDetectorId_v14a.h" #include "CbmTofDigiBdfPar.h" #include "CbmTofDigiExp.h" #include "CbmTofDigiPar.h" #include "CbmTofGeoHandler.h" #include "FairTask.h" #include "TClonesArray.h" class CbmTofTBClusterizer : public FairTask { public: struct ChannelDigis { ChannelDigis() : topDigis(), bottomDigis(), digiPairs() {}; struct DigiDesc { CbmTofDigiExp* pDigi; Int_t digiInd; }; struct DigiPair { Double_t y; DigiDesc topDigi; DigiDesc bottomDigi; }; std::map<Double_t, DigiDesc> topDigis; std::map<Double_t, DigiDesc> bottomDigis; std::map<Double_t, DigiPair> digiPairs; }; CbmTofTBClusterizer(); InitStatus Init(); void SetParContainers(); void Exec(Option_t* option); void Finish(); private: Bool_t InitCalibParameter(); void GetEventInfo(Int_t& inputNr, Int_t& eventNr, Double_t& eventTime); private: CbmTofGeoHandler* fGeoHandler; CbmTofDetectorId* fTofId; CbmTofDigiPar* fDigiPar; CbmTofCell* fChannelInfo; CbmTofDigiBdfPar* fDigiBdfPar; std::vector<std::vector<Double_t>> fvCPSigPropSpeed; //[nSMT][nRpc] std::vector<std::vector<std::vector<std::vector<Double_t>>>> fvCPDelTof; //[nSMT][nRpc][nbClDelTofBinX][nbTrg] std::vector<std::vector<std::vector<std::vector<Double_t>>>> fvCPTOff; //[nSMT][nRpc][nCh][nbSide] std::vector<std::vector<std::vector<std::vector<Double_t>>>> fvCPTotGain; //[nSMT][nRpc][nCh][nbSide] std::vector<std::vector<std::vector<std::vector<std::vector<Double_t>>>>> fvCPWalk; //[nSMT][nRpc][nCh][nbSide][nbWalkBins] TClonesArray* fTofDigis; TClonesArray* fTofPoints; TClonesArray* fTofHits; TClonesArray* fTofDigiMatchs; //std::vector<std::vector<std::vector<std::list<CbmTofDigiExp*> > > > fStorDigiExp; //[nbType][nbSm*nbRpc][nbCh]{nDigis} std::vector<std::vector<std::vector<ChannelDigis>>> fStorDigiExp; std::vector<std::vector<std::vector<std::pair< std::pair<std::map<Double_t, std::pair<CbmTofDigiExp*, Int_t>>, std::map<Double_t, std::pair<CbmTofDigiExp*, Int_t>>>, std::map<Double_t, std::pair<Double_t, std::pair<std::pair<CbmTofDigiExp*, Int_t>, std::pair<CbmTofDigiExp*, Int_t>>>>>>>> fStorDigiExpOld; //[nbType][nbSm*nbRpc][nbCh]<[->|nTopDigis][->|nBottomDigis]> Double_t fOutTimeFactor; /** Make copy constructor and copy operator private to avoid warning due to pointer members **/ CbmTofTBClusterizer(const CbmTofTBClusterizer&); CbmTofTBClusterizer& operator=(const CbmTofTBClusterizer&); ClassDef(CbmTofTBClusterizer, 1); }; #endif /* CBMTOFTBCLUSTERIZER_H */