diff --git a/macro/beamtime/mcbm2022/mcbm_event_reco_L1.C b/macro/beamtime/mcbm2022/mcbm_event_reco_L1.C index 169b1fd751526cd223fbc4cd23771873b294a71d..49fd93511de5b8d30f5e938f06a17d2d9cff6962 100644 --- a/macro/beamtime/mcbm2022/mcbm_event_reco_L1.C +++ b/macro/beamtime/mcbm2022/mcbm_event_reco_L1.C @@ -461,6 +461,7 @@ Bool_t mcbm_event_reco_L1(UInt_t uRunId = 2391, std::cout << "-I- : Added task " << trdCluster->GetName() << std::endl; CbmTrdHitProducer* trdHit = new CbmTrdHitProducer(); + trdHit->SetHitTimeOffset(363); // hit time synchronization for TRD2D determined on run 2391 run->AddTask(trdHit); std::cout << "-I- : Added task " << trdHit->GetName() << std::endl; } diff --git a/reco/detectors/trd/CbmTrdClusterFinder.cxx b/reco/detectors/trd/CbmTrdClusterFinder.cxx index 10aad5baa85ccd2e13a4761ee89d6a8fc42e013b..2d239d67ca44f3160ad914006feb23aff0f2110a 100644 --- a/reco/detectors/trd/CbmTrdClusterFinder.cxx +++ b/reco/detectors/trd/CbmTrdClusterFinder.cxx @@ -62,7 +62,7 @@ CbmTrdClusterFinder::~CbmTrdClusterFinder() fClusters->Delete(); delete fClusters; } - if (fGeoPar) { delete fGeoPar; } + // if (fGeoPar) { delete fGeoPar; } // if(fModuleInfo){ // delete fModuleInfo; // } diff --git a/reco/detectors/trd/CbmTrdHitProducer.cxx b/reco/detectors/trd/CbmTrdHitProducer.cxx index 0a9ab6b8299636ff5a94902ba17638732f485d12..7f77912475a412d1ce63b07fb2c27da8b264b0fb 100644 --- a/reco/detectors/trd/CbmTrdHitProducer.cxx +++ b/reco/detectors/trd/CbmTrdHitProducer.cxx @@ -52,7 +52,7 @@ CbmTrdHitProducer::~CbmTrdHitProducer() { fHits->Clear(); delete fHits; - if (fGeoPar) delete fGeoPar; + //if (fGeoPar) delete fGeoPar; } //____________________________________________________________________________________ @@ -101,6 +101,7 @@ CbmTrdModuleRec* CbmTrdHitProducer::AddModule(Int_t address, const CbmTrdParModG if (moduleType >= 9) { module = fModules[address] = new CbmTrdModuleRec2D(address); ((CbmTrdModuleRec2D*) module)->SetUseHelpers(CbmTrdClusterFinder::UseRecoHelpers()); + ((CbmTrdModuleRec2D*) module)->SetHitTimeOffset(fHitTimeOffset); } else { module = fModules[address] = new CbmTrdModuleRecR(address); diff --git a/reco/detectors/trd/CbmTrdHitProducer.h b/reco/detectors/trd/CbmTrdHitProducer.h index 9cd1c6e2b399ac3b123e55c0be8b6b414afc00f8..c6fee3599111961ebab68e21d8b1afa6e7fa5d98 100644 --- a/reco/detectors/trd/CbmTrdHitProducer.h +++ b/reco/detectors/trd/CbmTrdHitProducer.h @@ -60,6 +60,8 @@ public: */ virtual void Finish(); virtual void SetParContainers(); + /** \brief Correction of hit time in TRD2D due to different processes */ + void SetHitTimeOffset(int dt) { fHitTimeOffset = dt; } private: CbmTrdHitProducer(const CbmTrdHitProducer&); @@ -138,8 +140,8 @@ private: /** @brief Total processing time [RealTime]. */ Float_t fProcessTime = 0; - - + int fHitTimeOffset = 0; ///< hit time correction for synchronization + ClassDef(CbmTrdHitProducer, 2); }; diff --git a/reco/detectors/trd/CbmTrdModuleRec2D.cxx b/reco/detectors/trd/CbmTrdModuleRec2D.cxx index 837d67caf584019b26dcae6dd3e625dffd230d2d..df0caa23869d7e67bebd9fd49470e61fc259a31c 100644 --- a/reco/detectors/trd/CbmTrdModuleRec2D.cxx +++ b/reco/detectors/trd/CbmTrdModuleRec2D.cxx @@ -520,7 +520,7 @@ Bool_t CbmTrdModuleRec2D::MergeHits(CbmTrdHit* h, Int_t a0) h->SetDy(edy); h->SetDz(0.); h->SetDxy(0.); - h->SetTime(CbmTrdDigi::Clk(CbmTrdDigi::eCbmTrdAsicType::kFASP) * (vt0 + time) - tdrift + 30.29, edt); + h->SetTime(CbmTrdDigi::Clk(CbmTrdDigi::eCbmTrdAsicType::kFASP) * (vt0 + time) - tdrift + 30.29 + fHitTimeOff, edt); h->SetELoss(e); h->SetClassType(); h->SetMaxType(IsMaxTilt()); @@ -732,7 +732,7 @@ Bool_t CbmTrdModuleRec2D::BuildHit(CbmTrdHit* h) h->SetDy(edy); h->SetDz(0); h->SetDxy(0.); - h->SetTime(CbmTrdDigi::Clk(CbmTrdDigi::eCbmTrdAsicType::kFASP) * (vt0 + time) - tdrift + 30.29, edt); + h->SetTime(CbmTrdDigi::Clk(CbmTrdDigi::eCbmTrdAsicType::kFASP) * (vt0 + time) - tdrift + 30.29 + fHitTimeOff, edt); h->SetELoss(e); h->SetClassType(); h->SetMaxType(IsMaxTilt()); diff --git a/reco/detectors/trd/CbmTrdModuleRec2D.h b/reco/detectors/trd/CbmTrdModuleRec2D.h index f74f0e9cb45079d3262c930e947726af0d35640e..dd9fcac98caeb804d59937673c41c50d81e300d8 100644 --- a/reco/detectors/trd/CbmTrdModuleRec2D.h +++ b/reco/detectors/trd/CbmTrdModuleRec2D.h @@ -125,6 +125,10 @@ public: { use ? SETBIT(fConfigMap, ECbmTrdModuleRec2D::kHelpers) : CLRBIT(fConfigMap, ECbmTrdModuleRec2D::kHelpers); } + /** \brief Time offset to synchronize TRD2D hits to the rest of detectors + * \param dt offset in [ns] + */ + void SetHitTimeOffset(int dt) { fHitTimeOff = dt; } protected: private: @@ -205,6 +209,7 @@ private: UChar_t vrM = 0; //! maximum row UChar_t viM = 0; //! index of maximum signal in the projection UShort_t vyM = 0; //! bit map for cluster topology classification + int fHitTimeOff = 0; //! hit time offset for synchronization std::vector<Double_t> vs; //! working copy of signals from cluster std::vector<Double_t> vse; //! working copy of signal errors from cluster std::vector<Char_t> vt; //! working copy of signal relative timing