92 for (
int i = 0; i < initSize; i++) {
93 auto& rawDigit = *rawDigits[i];
95 if (!waveform)
continue;
97 auto integral = waveform->getIntegral(rawDigit.getSampleRise(),
98 rawDigit.getSamplePeak(),
99 rawDigit.getSampleFall());
100 rawDigit.setIntegral(integral);
103 const auto& features = waveform->getFeatureExtractionData();
104 int sampleRise = rawDigit.getSampleRise();
105 int sampleFall = rawDigit.getSampleFall() + 1;
106 for (
const auto& feature : features) {
109 int sRise = feature.sampleRise;
110 if (sRise >= sampleRise and sRise <= sampleFall)
continue;
111 int sFall = feature.sampleFall + 1;
112 if (sFall >= sampleRise and sFall <= sampleFall)
continue;
115 auto* newDigit = rawDigits.
appendNew(rawDigit);
116 newDigit->setOfflineFlag();
117 newDigit->setSampleRise(feature.sampleRise);
118 newDigit->setDeltaSamplePeak(feature.samplePeak - feature.sampleRise);
119 newDigit->setDeltaSampleFall(feature.sampleFall - feature.sampleRise);
120 newDigit->setValueRise0(feature.vRise0);
121 newDigit->setValueRise1(feature.vRise1);
122 newDigit->setValueFall0(feature.vFall0);
123 newDigit->setValueFall1(feature.vFall1);
124 newDigit->setValuePeak(feature.vPeak);
125 newDigit->setIntegral(feature.integral);
126 double rawTime = newDigit->getCFDLeadingTime();
127 unsigned tfine = int(rawTime * sampleDivisions) % sampleDivisions;
128 newDigit->setTFine(tfine);
129 newDigit->addRelationTo(waveform);
134 B2DEBUG(20,
"TOPWaveformFeatureExtractor: appended " << finalSize - initSize
135 <<
" raw digits to initial " << initSize);
void addParam(const std::string &name, T ¶mVariable, const std::string &description, const T &defaultValue)
Adds a new parameter to the module.