15 #include "GaudiKernel/MsgStream.h"
18 #include "CLHEP/Random/RandGaussZiggurat.h"
26 std::make_unique<VMM_Shaper>(m_cfg.peakTime, m_cfg.timeWindowLowerOffset - m_cfg.vmmDeadtime, m_cfg.timeWindowUpperOffset + m_cfg.vmmUpperGrazeWindow);
27 m_vmmShaper->initialize();
38 std::move(cache.tStripElectronicsAbThr),
39 std::move(cache.qStripElectronics), 5, 0.3};
48 std::move(cache.tStripElectronicsAbThr),
49 std::move(cache.qStripElectronics), 5, 0.3};
57 const std::vector<std::vector<float>>& qStrip = digiInput.
chipCharge();
58 const std::vector<std::vector<float>>& tStrip = digiInput.
chipTime();
59 const std::vector<float>& stripsElectronicsThreshold = digiInput.
stripThreshold();
61 for (
unsigned int ii = 0; ii < numberofStrip.size(); ii++) {
63 bool thisStripFired{
false};
64 double leftStripFired =
false;
65 double rightStripFired =
false;
71 m_vmmShaper->hasChargeAboveThreshold(qStrip.at(ii - 1), tStrip.at(ii - 1), stripsElectronicsThreshold.at(ii - 1));
74 if (ii + 1 < numberofStrip.size()) {
76 m_vmmShaper->hasChargeAboveThreshold(qStrip.at(ii + 1), tStrip.at(ii + 1), stripsElectronicsThreshold.at(ii + 1));
80 thisStripFired =
m_vmmShaper->hasChargeAboveThreshold(qStrip.at(ii), tStrip.at(ii), stripsElectronicsThreshold.at(ii));
83 bool neighborFired = leftStripFired || rightStripFired;
90 float tmpScaledThreshold = (thisStripFired ? stripsElectronicsThreshold.at(ii) : 1);
92 bool foundPeak =
m_vmmShaper->vmmPeakResponse(qStrip.at(ii), tStrip.at(ii), tmpScaledThreshold,
charge,
time);
93 if (!foundPeak)
continue;
107 const std::vector<std::vector<float>>& qStrip = digiInput.
chipCharge();
108 const std::vector<std::vector<float>>& tStrip = digiInput.
chipTime();
109 const std::vector<float>& electronicsThreshold = digiInput.
stripThreshold();
111 for (
unsigned int ii = 0; ii < numberofStrip.size(); ii++) {
112 double localThresholdt{FLT_MAX}, localThresholdq{FLT_MAX};
114 bool crossedThreshold =
115 m_vmmShaper->vmmThresholdResponse(qStrip.at(ii), tStrip.at(ii), electronicsThreshold.at(ii), localThresholdq, localThresholdt);
116 if (!crossedThreshold)