84 for (
int i = 0; i < initSize; i++) {
85 auto& rawDigit = *rawDigits[i];
87 if (!waveform)
continue;
89 auto integral = waveform->getIntegral(rawDigit.getSampleRise(),
90 rawDigit.getSamplePeak(),
91 rawDigit.getSampleFall());
92 rawDigit.setIntegral(integral);
95 const auto& features = waveform->getFeatureExtractionData();
96 int sampleRise = rawDigit.getSampleRise();
97 int sampleFall = rawDigit.getSampleFall() + 1;
98 for (
const auto& feature : features) {
101 int sRise = feature.sampleRise;
102 if (sRise >= sampleRise and sRise <= sampleFall)
continue;
103 int sFall = feature.sampleFall + 1;
104 if (sFall >= sampleRise and sFall <= sampleFall)
continue;
107 auto* newDigit = rawDigits.
appendNew(rawDigit);
108 newDigit->setOfflineFlag();
109 newDigit->setSampleRise(feature.sampleRise);
110 newDigit->setDeltaSamplePeak(feature.samplePeak - feature.sampleRise);
111 newDigit->setDeltaSampleFall(feature.sampleFall - feature.sampleRise);
112 newDigit->setValueRise0(feature.vRise0);
113 newDigit->setValueRise1(feature.vRise1);
114 newDigit->setValueFall0(feature.vFall0);
115 newDigit->setValueFall1(feature.vFall1);
116 newDigit->setValuePeak(feature.vPeak);
117 newDigit->setIntegral(feature.integral);
118 double rawTime = newDigit->getCFDLeadingTime();
119 int tfine = int(rawTime * sampleDivisions) % sampleDivisions;
120 if (tfine < 0) tfine += sampleDivisions;
121 newDigit->setTFine(tfine);
122 newDigit->addRelationTo(waveform);
126 B2DEBUG(20,
"TOPWaveformFeatureExtractor: appended " << rawDigits.
getEntries() - initSize
127 <<
" 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.