8 float stripPitch,
int stripID,
int minstripID,
int maxstripID) :
9 m_timeResolution(timeResolution), m_stripPitch(stripPitch), m_stripID(stripID), m_minstripID(minstripID), m_maxstripID(maxstripID) {
10 for (
auto& IonizationCluster : IonizationClusters)
27 [](
const std::unique_ptr<MM_Electron>&
a,
const std::unique_ptr<MM_Electron>&
b) ->
bool { return a->getTime() < b->getTime(); });
45 if (stripVal < m_minstripID - 2 || stripVal >
m_maxstripID + 1) stripVal = -1;
52 if (crossTalk1 > 0.) {
56 std::map<int, std::map<int, float>> stripChargesCopy1;
62 for (
auto& stripTimeSeries : stripChargesCopy1) {
63 int timeBin = stripTimeSeries.first;
64 for (
auto& stripCharge : stripTimeSeries.second) {
65 int stripVal = stripCharge.first;
66 float stripChargeVal = stripCharge.second;
68 if (stripChargeVal == 0.)
continue;
71 float chargeScaleFactor = 1.0 / (1. + ((stripVal - 1 > 0) + (stripVal + 1 <
m_maxstripID)) * crossTalk1 +
72 ((stripVal - 2 > 0) + (stripVal + 2 <
m_maxstripID)) * crossTalk2);
73 stripChargeVal *= chargeScaleFactor;
79 if (stripVal - 1 > 0)
m_stripCharges[timeBin][stripVal - 1] += stripChargeVal * crossTalk1;
82 if (crossTalk2 > 0.) {
83 if (stripVal - 2 > 0)
m_stripCharges[timeBin][stripVal - 2] += stripChargeVal * crossTalk2;
92 std::map<int, std::map<int, float>> stripChargesCopy2;
94 for (
auto& stripTimeSeries : stripChargesCopy2) {
95 int timeBin = stripTimeSeries.first;
96 for (
auto& stripCharge : stripTimeSeries.second) {
97 int stripVal = stripCharge.first;
101 if (stripVal < m_minstripID || stripVal >
m_maxstripID - 1)
continue;
103 if (stripVal == 1024 || stripVal == 1025 || stripVal == 2048 || stripVal == 2049 || stripVal == 3072 || stripVal == 3073 ||
104 stripVal == 4096 || stripVal == 4097)
106 float stripChargeVal = stripCharge.second;
107 if (stripChargeVal < chargeThreshold)
continue;
110 for (
size_t ii = 0; ii <
m_v_strip.size(); ii++) {
120 std::vector<float> qTemp;
121 qTemp.push_back(stripChargeVal);
123 std::vector<float> tTemp;