diff --git a/macro/beamtime/mcbm2022/check_timing_any.C b/macro/beamtime/mcbm2022/check_timing_any.C index 7535424412bb18c1e348c38dc377005319035f5b..3d79b1defc79ad0f52eae2c5195fdb8c1f13c0e2 100644 --- a/macro/beamtime/mcbm2022/check_timing_any.C +++ b/macro/beamtime/mcbm2022/check_timing_any.C @@ -36,11 +36,10 @@ void check_timing_any(TString fileName, UInt_t uRunId = 0, Int_t nEvents = 0, TS CbmMcbmCheckTimingTask* timeChecker = new CbmMcbmCheckTimingTask(); /// Default is using T0 as reference /// With Pulser rejection - /* timeChecker->SetReferenceDetector( ECbmModuleId::kT0, "T0", -1000., 1000., 320., 182, 190 ); -*/ + /// With pulser selection /* timeChecker->SetReferenceDetector( ECbmModuleId::kT0, "T0", @@ -48,9 +47,9 @@ void check_timing_any(TString fileName, UInt_t uRunId = 0, Int_t nEvents = 0, TS 190, 182 ); */ /// Here swapping with TOF - timeChecker->SetReferenceDetector(ECbmModuleId::kTof, "Tof", -3000, 3000, 3000); - timeChecker->RemoveCheckDetector(ECbmModuleId::kTof); - //timeChecker->AddCheckDetector(ECbmModuleId::kT0, "T0"); + // timeChecker->SetReferenceDetector(ECbmModuleId::kTof, "Tof", -3000, 3000, 3000); + // timeChecker->RemoveCheckDetector(ECbmModuleId::kTof); + // timeChecker->AddCheckDetector(ECbmModuleId::kT0, "T0"); /// Here swapping with MUCH /* @@ -60,7 +59,7 @@ void check_timing_any(TString fileName, UInt_t uRunId = 0, Int_t nEvents = 0, TS */ /// Remove detectors not present in 2021 - timeChecker->RemoveCheckDetector(ECbmModuleId::kT0); + //timeChecker->RemoveCheckDetector(ECbmModuleId::kT0); timeChecker->RemoveCheckDetector(ECbmModuleId::kMuch); //timeChecker->SetReferenceDetector(ECbmModuleId::kPsd, "Psd", -300000, 300000, 320 * 300); timeChecker->RemoveCheckDetector(ECbmModuleId::kPsd); @@ -77,9 +76,10 @@ void check_timing_any(TString fileName, UInt_t uRunId = 0, Int_t nEvents = 0, TS */ /// Add extra differential analysis on specific detectors - timeChecker->AddCheckDetector(ECbmModuleId::kSts, "Sts", -200., 200., 4000); + timeChecker->AddCheckDetector(ECbmModuleId::kSts, "Sts", -100., 100., 4000); timeChecker->AddCheckDetector(ECbmModuleId::kRich, "Rich", -100., 100., 4000); - timeChecker->AddCheckDetector(ECbmModuleId::kTrd, "Trd", -500.5, 500.5, 1001); + timeChecker->AddCheckDetector(ECbmModuleId::kTrd, "Trd", -500., 500., 250); + timeChecker->AddCheckDetector(ECbmModuleId::kTof, "Tof", -100, 100, 4000); timeChecker->SetDetectorDifferential(ECbmModuleId::kTrd, {"5", "21", "37", "53"}); TString outFileName = fileName(0, fileName.Index(".digi.root")); diff --git a/reco/detectors/trd/unpack/CbmTrdUnpackFaspAlgo.cxx b/reco/detectors/trd/unpack/CbmTrdUnpackFaspAlgo.cxx index a09c8070a82c4e718247614d1bf7b803a4e4e3fa..d245ff767000e0f2d23219eb518d2ac5fd51c9f0 100644 --- a/reco/detectors/trd/unpack/CbmTrdUnpackFaspAlgo.cxx +++ b/reco/detectors/trd/unpack/CbmTrdUnpackFaspAlgo.cxx @@ -205,7 +205,7 @@ bool CbmTrdUnpackFaspAlgo::pushDigis(std::vector<CbmTrdUnpackFaspAlgo::CbmTrdFas UShort_t lchR, lchT; Double_t r, t; Int_t dt, dtime, ch, pad, row; - ULong64_t tlab; + ULong64_t tlab, tdaqOffset(0); CbmTrdParFasp* faspPar(nullptr); const CbmTrdParFaspChannel* chCalib(nullptr); CbmTrdParModDigi* digiPar(nullptr); @@ -228,6 +228,7 @@ bool CbmTrdUnpackFaspAlgo::pushDigis(std::vector<CbmTrdUnpackFaspAlgo::CbmTrdFas chCalib = faspPar->GetChannel(imess->ch); ch = 2 * pad + chCalib->HasPairingR(); row = digiPar->GetPadRow(pad); + if (row % 2) tdaqOffset = 3; if (VERBOSE) printf("fasp[%2d] ch[%4d / %2d] pad[%4d] row[%2d] col[%2d] tilt[%d]\n", lFasp, ch, imess->ch, pad, row, digiPar->GetPadColumn(pad), chCalib->HasPairingT()); @@ -274,7 +275,9 @@ bool CbmTrdUnpackFaspAlgo::pushDigis(std::vector<CbmTrdUnpackFaspAlgo::CbmTrdFas // push finalized digits to the next level for (vector<CbmTrdDigi*>::iterator id = digis.begin(); id != digis.end(); id++) { - (*id)->SetTimeDAQ(fTime[0] + (*id)->GetTimeDAQ()); + // TODO temporary add DAQ time calibration for FASPRO. + // Should be absorbed in the ASIC parameter definition + (*id)->SetTimeDAQ(fTime[0] + (*id)->GetTimeDAQ() + tdaqOffset); fOutputVec.emplace_back(*std::move(*id)); if (fMonitor) fMonitor->FillHistos((*id)); if (VERBOSE) cout << (*id)->ToString();