From 3bc54cb37d5f390a18e7322989c3e639e92fd797 Mon Sep 17 00:00:00 2001 From: shahoian Date: Mon, 26 Oct 2026 16:21:25 +0100 Subject: [PATCH] ITS/MFT/ITS3 digi: fix for late hits seen by next ROF The timeInROF passed to registerDigits should be relative to the actual hit ROF not the collision ROF. Thanks to @atriolo for spotting --- Detectors/ITSMFT/common/simulation/src/Digitizer.cxx | 3 ++- Detectors/Upgrades/ITS3/simulation/src/Digitizer.cxx | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Detectors/ITSMFT/common/simulation/src/Digitizer.cxx b/Detectors/ITSMFT/common/simulation/src/Digitizer.cxx index 5480392600074..6f2adc1c09ce0 100644 --- a/Detectors/ITSMFT/common/simulation/src/Digitizer.cxx +++ b/Detectors/ITSMFT/common/simulation/src/Digitizer.cxx @@ -404,6 +404,7 @@ void Digitizer::processHit(const o2::itsmft::Hit& hit, uint32_t& maxFr, int evID // fire the pixels assuming Poisson(n_response_electrons) o2::MCCompLabel lbl(hit.GetTrackID(), evID, srcID, false); auto roFrameAbs = mNewROFrame + roFrameRel; + auto timeInROFAbs = timeInROF - roFrameRel * mParams.getROFrameLengthInv(lay); // account for hit migration to next ROF with roFrameRel>0 for (int irow = rowSpan; irow--;) { uint16_t rowIS = irow + rowS; for (int icol = colSpan; icol--;) { @@ -424,7 +425,7 @@ void Digitizer::processHit(const o2::itsmft::Hit& hit, uint32_t& maxFr, int evID continue; } // - registerDigits(chip, roFrameAbs, timeInROF, nFrames, rowIS, colIS, nEle, lbl, lay); + registerDigits(chip, roFrameAbs, timeInROFAbs, nFrames, rowIS, colIS, nEle, lbl, lay); } } } diff --git a/Detectors/Upgrades/ITS3/simulation/src/Digitizer.cxx b/Detectors/Upgrades/ITS3/simulation/src/Digitizer.cxx index 9d048ea1f31ca..6906755eef489 100644 --- a/Detectors/Upgrades/ITS3/simulation/src/Digitizer.cxx +++ b/Detectors/Upgrades/ITS3/simulation/src/Digitizer.cxx @@ -408,6 +408,7 @@ void Digitizer::processHit(const o2::itsmft::Hit& hit, uint32_t& maxFr, int evID // fire the pixels assuming Poisson(n_response_electrons) o2::MCCompLabel lbl(hit.GetTrackID(), evID, srcID, false); auto roFrameAbs = mNewROFrame + roFrameRel; + auto timeInROFAbs = timeInROF - roFrameRel * mParams.getROFrameLengthInv(lay); // account for hit migration to next ROF with roFrameRel>0 for (int irow = rowSpan; irow--;) { uint16_t rowIS = irow + rowS; for (int icol = colSpan; icol--;) { @@ -421,7 +422,7 @@ void Digitizer::processHit(const o2::itsmft::Hit& hit, uint32_t& maxFr, int evID continue; } uint16_t colIS = icol + colS; - registerDigits(chip, roFrameAbs, timeInROF, nFrames, rowIS, colIS, nEle, lbl, lay); + registerDigits(chip, roFrameAbs, timeInROFAbs, nFrames, rowIS, colIS, nEle, lbl, lay); } } }