Skip to content

Commit 128083b

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 02765f4 commit 128083b

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
@@ -16,6 +16,7 @@
1616
#include "TPCSimulation/DigitContainer.h"
1717
#include <atomic>
1818
#include <memory>
19+
#include <type_traits>
1920
#include <fairlogger/Logger.h>
2021
#include "TPCBase/Mapper.h"
2122
#include "TPCBaseRecSim/CDBInterface.h"
@@ -84,39 +85,37 @@ void DigitContainer::fillOutputContainer(std::vector<Digit>& output,
8485
// fmt::print("Processing secotor: {}, time bin: {}, mFirstTimeBin: {}, dgitTime: {}\n", sector.getSector(), timeBin, mFirstTimeBin, (void*)time);
8586

8687
if (time) {
88+
// the digitization mode is a template parameter of fillOutputContainer
89+
auto fill = [&](auto mode) {
90+
time->fillOutputContainer<decltype(mode)::value>(output, mcTruth, commonModeOutput, sector, timeBin, sampaProcessing, mLabelCollector, mPrevDigArr.get(), debugStream, mPadParams, mDeadMap);
91+
};
92+
using M = DigitzationMode;
8793
switch (digitizationMode) {
88-
case DigitzationMode::FullMode: {
89-
time->fillOutputContainer<DigitzationMode::FullMode>(output, mcTruth, commonModeOutput, sector, timeBin, sampaProcessing, mLabelCollector, mPrevDigArr.get(), debugStream, mPadParams, mDeadMap);
94+
case M::FullMode:
95+
fill(std::integral_constant<M, M::FullMode>{});
9096
break;
91-
}
92-
case DigitzationMode::ZeroSuppression: {
93-
time->fillOutputContainer<DigitzationMode::ZeroSuppression>(output, mcTruth, commonModeOutput, sector, timeBin, sampaProcessing, mLabelCollector, mPrevDigArr.get(), debugStream, mPadParams, mDeadMap);
97+
case M::ZeroSuppression:
98+
fill(std::integral_constant<M, M::ZeroSuppression>{});
9499
break;
95-
}
96-
case DigitzationMode::ZeroSuppressionCMCorr: {
97-
time->fillOutputContainer<DigitzationMode::ZeroSuppressionCMCorr>(output, mcTruth, commonModeOutput, sector, timeBin, sampaProcessing, mLabelCollector, mPrevDigArr.get(), debugStream, mPadParams, mDeadMap);
100+
case M::ZeroSuppressionCMCorr:
101+
fill(std::integral_constant<M, M::ZeroSuppressionCMCorr>{});
98102
break;
99-
}
100-
case DigitzationMode::SubtractPedestal: {
101-
time->fillOutputContainer<DigitzationMode::SubtractPedestal>(output, mcTruth, commonModeOutput, sector, timeBin, sampaProcessing, mLabelCollector, mPrevDigArr.get(), debugStream, mPadParams, mDeadMap);
103+
case M::SubtractPedestal:
104+
fill(std::integral_constant<M, M::SubtractPedestal>{});
102105
break;
103-
}
104-
case DigitzationMode::NoSaturation: {
105-
time->fillOutputContainer<DigitzationMode::NoSaturation>(output, mcTruth, commonModeOutput, sector, timeBin, sampaProcessing, mLabelCollector, mPrevDigArr.get(), debugStream, mPadParams, mDeadMap);
106+
case M::NoSaturation:
107+
fill(std::integral_constant<M, M::NoSaturation>{});
106108
break;
107-
}
108-
case DigitzationMode::PropagateADC: {
109-
time->fillOutputContainer<DigitzationMode::PropagateADC>(output, mcTruth, commonModeOutput, sector, timeBin, sampaProcessing, mLabelCollector, mPrevDigArr.get(), debugStream, mPadParams, mDeadMap);
109+
case M::PropagateADC:
110+
fill(std::integral_constant<M, M::PropagateADC>{});
110111
break;
111-
}
112-
case DigitzationMode::Auto: {
112+
case M::Auto:
113113
if (mCMCEnabled) {
114-
time->fillOutputContainer<DigitzationMode::ZeroSuppressionCMCorr>(output, mcTruth, commonModeOutput, sector, timeBin, sampaProcessing, mLabelCollector, mPrevDigArr.get(), debugStream, mPadParams, mDeadMap);
114+
fill(std::integral_constant<M, M::ZeroSuppressionCMCorr>{});
115115
} else {
116-
time->fillOutputContainer<DigitzationMode::ZeroSuppression>(output, mcTruth, commonModeOutput, sector, timeBin, sampaProcessing, mLabelCollector, mPrevDigArr.get(), debugStream, mPadParams, mDeadMap);
116+
fill(std::integral_constant<M, M::ZeroSuppression>{});
117117
}
118118
break;
119-
}
120119
}
121120
}
122121

0 commit comments

Comments
 (0)