From 36cbb7f348bbd6b19c99e2eaef40a8029785b032 Mon Sep 17 00:00:00 2001 From: shahoian Date: Tue, 27 Oct 2026 20:45:13 +0100 Subject: [PATCH] ITS/MFT digi: account BC reassignment in time wrt BC Fix from @atriolo: In continuous mode, if mCollisionTimeWrtROF < 0, the reference BC is moved one BC earlier to get the ROF ID it belongs to, but mCollisionTimeWrtROF is not increased by 24.95 ns to compensate for the shift of the reference BC: as a result the collision is placed 24.95 ns too early with respect to its ROF Also ITS3 digitization is fixed. --- Detectors/ITSMFT/common/simulation/src/Digitizer.cxx | 5 +++-- Detectors/Upgrades/ITS3/simulation/src/Digitizer.cxx | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/Detectors/ITSMFT/common/simulation/src/Digitizer.cxx b/Detectors/ITSMFT/common/simulation/src/Digitizer.cxx index 6f2adc1c09ce0..6508661feee0e 100644 --- a/Detectors/ITSMFT/common/simulation/src/Digitizer.cxx +++ b/Detectors/ITSMFT/common/simulation/src/Digitizer.cxx @@ -158,8 +158,9 @@ void Digitizer::setEventTime(const o2::InteractionTimeRecord& irt, int layer) mCollisionTimeWrtROF = mEventTime.timeInBCNS; // in triggered mode the ROF starts at BC (is there a delay?) if (mParams.isContinuous()) { auto nbc = mEventTime.differenceInBC(mIRFirstSampledTF); - if (mCollisionTimeWrtROF < 0 && nbc > 0) { - nbc--; + if (mCollisionTimeWrtROF < 0. && nbc > 0) { // move to the ROF it actually belongs to and account + nbc--; // this in the time offset wrt updated reference BC + mCollisionTimeWrtROF += o2::constants::lhc::LHCBunchSpacingNS; } // we might get interactions to digitize from before diff --git a/Detectors/Upgrades/ITS3/simulation/src/Digitizer.cxx b/Detectors/Upgrades/ITS3/simulation/src/Digitizer.cxx index 6906755eef489..dbad61e48526e 100644 --- a/Detectors/Upgrades/ITS3/simulation/src/Digitizer.cxx +++ b/Detectors/Upgrades/ITS3/simulation/src/Digitizer.cxx @@ -123,8 +123,9 @@ void Digitizer::setEventTime(const o2::InteractionTimeRecord& irt, int layer) mCollisionTimeWrtROF = mEventTime.timeInBCNS; // in triggered mode the ROF starts at BC (is there a delay?) if (mParams.isContinuous()) { auto nbc = mEventTime.differenceInBC(mIRFirstSampledTF); - if (mCollisionTimeWrtROF < 0 && nbc > 0) { - nbc--; + if (mCollisionTimeWrtROF < 0. && nbc > 0) { // move to the ROF it actually belongs to and account + nbc--; // this in the time offset wrt updated reference BC + mCollisionTimeWrtROF += o2::constants::lhc::LHCBunchSpacingNS; } // we might get interactions to digitize from before // the first sampled IR