Skip to content

Commit 7e6c65d

Browse files
sawenzelclaude
andcommitted
Use one call for all TPC digitization modes in DigitContainer
This addresses a review comment on the repeated fillOutputContainer calls. - The eight cases now pass the mode as a type to one lambda. https://its.cern.ch/jira/browse/O2-7309 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 parent 549f0e3 commit 7e6c65d

1 file changed

Lines changed: 21 additions & 22 deletions

File tree

‎Detectors/TPC/simulation/src/DigitContainer.cxx‎

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
#include "TPCSimulation/DigitContainer.h"
1717
#include <memory>
18+
#include <type_traits>
1819
#include <fairlogger/Logger.h>
1920
#include "TPCBase/Mapper.h"
2021
#include "TPCBaseRecSim/CDBInterface.h"
@@ -92,39 +93,37 @@ void DigitContainer::fillOutputContainer(std::vector<Digit>& output,
9293
// fmt::print("Processing secotor: {}, time bin: {}, mFirstTimeBin: {}, dgitTime: {}\n", sector.getSector(), timeBin, mFirstTimeBin, (void*)time);
9394

9495
if (time) {
96+
// the digitization mode is a template parameter of fillOutputContainer
97+
auto fill = [&](auto mode) {
98+
time->fillOutputContainer<decltype(mode)::value>(output, mcTruth, commonModeOutput, sector, timeBin, sampaProcessing, mLabelCollector, mPrevDigArr.get(), debugStream, mPadParams, mDeadMap);
99+
};
100+
using M = DigitzationMode;
95101
switch (digitizationMode) {
96-
case DigitzationMode::FullMode: {
97-
time->fillOutputContainer<DigitzationMode::FullMode>(output, mcTruth, commonModeOutput, sector, timeBin, sampaProcessing, mLabelCollector, mPrevDigArr.get(), debugStream, mPadParams, mDeadMap);
102+
case M::FullMode:
103+
fill(std::integral_constant<M, M::FullMode>{});
98104
break;
99-
}
100-
case DigitzationMode::ZeroSuppression: {
101-
time->fillOutputContainer<DigitzationMode::ZeroSuppression>(output, mcTruth, commonModeOutput, sector, timeBin, sampaProcessing, mLabelCollector, mPrevDigArr.get(), debugStream, mPadParams, mDeadMap);
105+
case M::ZeroSuppression:
106+
fill(std::integral_constant<M, M::ZeroSuppression>{});
102107
break;
103-
}
104-
case DigitzationMode::ZeroSuppressionCMCorr: {
105-
time->fillOutputContainer<DigitzationMode::ZeroSuppressionCMCorr>(output, mcTruth, commonModeOutput, sector, timeBin, sampaProcessing, mLabelCollector, mPrevDigArr.get(), debugStream, mPadParams, mDeadMap);
108+
case M::ZeroSuppressionCMCorr:
109+
fill(std::integral_constant<M, M::ZeroSuppressionCMCorr>{});
106110
break;
107-
}
108-
case DigitzationMode::SubtractPedestal: {
109-
time->fillOutputContainer<DigitzationMode::SubtractPedestal>(output, mcTruth, commonModeOutput, sector, timeBin, sampaProcessing, mLabelCollector, mPrevDigArr.get(), debugStream, mPadParams, mDeadMap);
111+
case M::SubtractPedestal:
112+
fill(std::integral_constant<M, M::SubtractPedestal>{});
110113
break;
111-
}
112-
case DigitzationMode::NoSaturation: {
113-
time->fillOutputContainer<DigitzationMode::NoSaturation>(output, mcTruth, commonModeOutput, sector, timeBin, sampaProcessing, mLabelCollector, mPrevDigArr.get(), debugStream, mPadParams, mDeadMap);
114+
case M::NoSaturation:
115+
fill(std::integral_constant<M, M::NoSaturation>{});
114116
break;
115-
}
116-
case DigitzationMode::PropagateADC: {
117-
time->fillOutputContainer<DigitzationMode::PropagateADC>(output, mcTruth, commonModeOutput, sector, timeBin, sampaProcessing, mLabelCollector, mPrevDigArr.get(), debugStream, mPadParams, mDeadMap);
117+
case M::PropagateADC:
118+
fill(std::integral_constant<M, M::PropagateADC>{});
118119
break;
119-
}
120-
case DigitzationMode::Auto: {
120+
case M::Auto:
121121
if (mCMCEnabled) {
122-
time->fillOutputContainer<DigitzationMode::ZeroSuppressionCMCorr>(output, mcTruth, commonModeOutput, sector, timeBin, sampaProcessing, mLabelCollector, mPrevDigArr.get(), debugStream, mPadParams, mDeadMap);
122+
fill(std::integral_constant<M, M::ZeroSuppressionCMCorr>{});
123123
} else {
124-
time->fillOutputContainer<DigitzationMode::ZeroSuppression>(output, mcTruth, commonModeOutput, sector, timeBin, sampaProcessing, mLabelCollector, mPrevDigArr.get(), debugStream, mPadParams, mDeadMap);
124+
fill(std::integral_constant<M, M::ZeroSuppression>{});
125125
}
126126
break;
127-
}
128127
}
129128
}
130129

0 commit comments

Comments
 (0)