|
16 | 16 | #include "TPCSimulation/DigitContainer.h" |
17 | 17 | #include <atomic> |
18 | 18 | #include <memory> |
| 19 | +#include <type_traits> |
19 | 20 | #include <fairlogger/Logger.h> |
20 | 21 | #include "TPCBase/Mapper.h" |
21 | 22 | #include "TPCBaseRecSim/CDBInterface.h" |
@@ -84,39 +85,37 @@ void DigitContainer::fillOutputContainer(std::vector<Digit>& output, |
84 | 85 | // fmt::print("Processing secotor: {}, time bin: {}, mFirstTimeBin: {}, dgitTime: {}\n", sector.getSector(), timeBin, mFirstTimeBin, (void*)time); |
85 | 86 |
|
86 | 87 | 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; |
87 | 93 | 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>{}); |
90 | 96 | 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>{}); |
94 | 99 | 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>{}); |
98 | 102 | 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>{}); |
102 | 105 | 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>{}); |
106 | 108 | 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>{}); |
110 | 111 | break; |
111 | | - } |
112 | | - case DigitzationMode::Auto: { |
| 112 | + case M::Auto: |
113 | 113 | 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>{}); |
115 | 115 | } 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>{}); |
117 | 117 | } |
118 | 118 | break; |
119 | | - } |
120 | 119 | } |
121 | 120 | } |
122 | 121 |
|
|
0 commit comments