Skip to content

Commit ce1046d

Browse files
martenolesawenzel
authored andcommitted
Fix digit sharing in TRDTrapSimulatorSpec
1 parent ed32825 commit ce1046d

1 file changed

Lines changed: 12 additions & 2 deletions

File tree

Detectors/TRD/workflow/src/TRDTrapSimulatorSpec.cxx

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -280,12 +280,22 @@ void TRDDPLTrapSimulatorTask::run(o2::framework::ProcessingContext& pc)
280280
if (mShareDigitsManually) {
281281
if ((digit->getChannel() == 2) && !((digit->getROB() % 2 != 0) && (digit->getMCM() % NMCMROBINCOL == 3))) {
282282
// shared left, if not leftmost MCM of left ROB of chamber
283-
int trapIdxLeft = (digit->getMCM() % NMCMROBINCOL == 3) ? trapIdx + NMCMROB - 3 : trapIdx + 1;
283+
int robShared = (digit->getMCM() % NMCMROBINCOL == 3) ? digit->getROB() + 1 : digit->getROB(); // for the leftmost MCM on a ROB the shared digit is added to the neighbouring ROB
284+
int mcmShared = (robShared == digit->getROB()) ? digit->getMCM() + 1 : digit->getMCM() - 3;
285+
int trapIdxLeft = robShared * NMCMROB + mcmShared;
286+
if (!mTrapSimulator[trapIdxLeft].isDataSet()) {
287+
mTrapSimulator[trapIdxLeft].init(mTrapConfig, digit->getDetector(), robShared, mcmShared);
288+
}
284289
mTrapSimulator[trapIdxLeft].setData(NADCMCM - 1, digit->getADC(), digitIndices[iDigit]);
285290
}
286291
if ((digit->getChannel() == 18 || digit->getChannel() == 19) && !((digit->getROB() % 2 == 0) && (digit->getMCM() % NMCMROBINCOL == 0))) {
287292
// shared right, if not rightmost MCM of right ROB of chamber
288-
int trapIdxRight = (digit->getMCM() % NMCMROBINCOL == 0) ? trapIdx - NMCMROB + 3 : trapIdx - 1;
293+
int robShared = (digit->getMCM() % NMCMROBINCOL == 0) ? digit->getROB() - 1 : digit->getROB(); // for the rightmost MCM on a ROB the shared digit is added to the neighbouring ROB
294+
int mcmShared = (robShared == digit->getROB()) ? digit->getMCM() - 1 : digit->getMCM() + 3;
295+
int trapIdxRight = robShared * NMCMROB + mcmShared;
296+
if (!mTrapSimulator[trapIdxRight].isDataSet()) {
297+
mTrapSimulator[trapIdxRight].init(mTrapConfig, digit->getDetector(), robShared, mcmShared);
298+
}
289299
mTrapSimulator[trapIdxRight].setData(digit->getChannel() - NCOLMCM, digit->getADC(), digitIndices[iDigit]);
290300
}
291301
}

0 commit comments

Comments
 (0)