53 mGlobalOffset[0] = &mGlobalOffsetSec0;
54 mGlobalOffset[1] = &mGlobalOffsetSec1;
55 mGlobalOffset[2] = &mGlobalOffsetSec2;
56 mGlobalOffset[3] = &mGlobalOffsetSec3;
57 mGlobalOffset[4] = &mGlobalOffsetSec4;
58 mGlobalOffset[5] = &mGlobalOffsetSec5;
59 mGlobalOffset[6] = &mGlobalOffsetSec6;
60 mGlobalOffset[7] = &mGlobalOffsetSec7;
61 mGlobalOffset[8] = &mGlobalOffsetSec8;
62 mGlobalOffset[9] = &mGlobalOffsetSec9;
63 mGlobalOffset[10] = &mGlobalOffsetSec10;
64 mGlobalOffset[11] = &mGlobalOffsetSec11;
65 mGlobalOffset[12] = &mGlobalOffsetSec12;
66 mGlobalOffset[13] = &mGlobalOffsetSec13;
67 mGlobalOffset[14] = &mGlobalOffsetSec14;
68 mGlobalOffset[15] = &mGlobalOffsetSec15;
69 mGlobalOffset[16] = &mGlobalOffsetSec16;
70 mGlobalOffset[17] = &mGlobalOffsetSec17;
72 mChannelStart[0] = &mChannelStartSec0;
73 mChannelStart[1] = &mChannelStartSec1;
74 mChannelStart[2] = &mChannelStartSec2;
75 mChannelStart[3] = &mChannelStartSec3;
76 mChannelStart[4] = &mChannelStartSec4;
77 mChannelStart[5] = &mChannelStartSec5;
78 mChannelStart[6] = &mChannelStartSec6;
79 mChannelStart[7] = &mChannelStartSec7;
80 mChannelStart[8] = &mChannelStartSec8;
81 mChannelStart[9] = &mChannelStartSec9;
82 mChannelStart[10] = &mChannelStartSec10;
83 mChannelStart[11] = &mChannelStartSec11;
84 mChannelStart[12] = &mChannelStartSec12;
85 mChannelStart[13] = &mChannelStartSec13;
86 mChannelStart[14] = &mChannelStartSec14;
87 mChannelStart[15] = &mChannelStartSec15;
88 mChannelStart[16] = &mChannelStartSec16;
89 mChannelStart[17] = &mChannelStartSec17;
91 mTimeSlewing[0] = &mTimeSlewingSec0;
92 mTimeSlewing[1] = &mTimeSlewingSec1;
93 mTimeSlewing[2] = &mTimeSlewingSec2;
94 mTimeSlewing[3] = &mTimeSlewingSec3;
95 mTimeSlewing[4] = &mTimeSlewingSec4;
96 mTimeSlewing[5] = &mTimeSlewingSec5;
97 mTimeSlewing[6] = &mTimeSlewingSec6;
98 mTimeSlewing[7] = &mTimeSlewingSec7;
99 mTimeSlewing[8] = &mTimeSlewingSec8;
100 mTimeSlewing[9] = &mTimeSlewingSec9;
101 mTimeSlewing[10] = &mTimeSlewingSec10;
102 mTimeSlewing[11] = &mTimeSlewingSec11;
103 mTimeSlewing[12] = &mTimeSlewingSec12;
104 mTimeSlewing[13] = &mTimeSlewingSec13;
105 mTimeSlewing[14] = &mTimeSlewingSec14;
106 mTimeSlewing[15] = &mTimeSlewingSec15;
107 mTimeSlewing[16] = &mTimeSlewingSec16;
108 mTimeSlewing[17] = &mTimeSlewingSec17;
110 mFractionUnderPeak[0] = &mFractionUnderPeakSec0;
111 mFractionUnderPeak[1] = &mFractionUnderPeakSec1;
112 mFractionUnderPeak[2] = &mFractionUnderPeakSec2;
113 mFractionUnderPeak[3] = &mFractionUnderPeakSec3;
114 mFractionUnderPeak[4] = &mFractionUnderPeakSec4;
115 mFractionUnderPeak[5] = &mFractionUnderPeakSec5;
116 mFractionUnderPeak[6] = &mFractionUnderPeakSec6;
117 mFractionUnderPeak[7] = &mFractionUnderPeakSec7;
118 mFractionUnderPeak[8] = &mFractionUnderPeakSec8;
119 mFractionUnderPeak[9] = &mFractionUnderPeakSec9;
120 mFractionUnderPeak[10] = &mFractionUnderPeakSec10;
121 mFractionUnderPeak[11] = &mFractionUnderPeakSec11;
122 mFractionUnderPeak[12] = &mFractionUnderPeakSec12;
123 mFractionUnderPeak[13] = &mFractionUnderPeakSec13;
124 mFractionUnderPeak[14] = &mFractionUnderPeakSec14;
125 mFractionUnderPeak[15] = &mFractionUnderPeakSec15;
126 mFractionUnderPeak[16] = &mFractionUnderPeakSec16;
127 mFractionUnderPeak[17] = &mFractionUnderPeakSec17;
129 mSigmaPeak[0] = &mSigmaPeakSec0;
130 mSigmaPeak[1] = &mSigmaPeakSec1;
131 mSigmaPeak[2] = &mSigmaPeakSec2;
132 mSigmaPeak[3] = &mSigmaPeakSec3;
133 mSigmaPeak[4] = &mSigmaPeakSec4;
134 mSigmaPeak[5] = &mSigmaPeakSec5;
135 mSigmaPeak[6] = &mSigmaPeakSec6;
136 mSigmaPeak[7] = &mSigmaPeakSec7;
137 mSigmaPeak[8] = &mSigmaPeakSec8;
138 mSigmaPeak[9] = &mSigmaPeakSec9;
139 mSigmaPeak[10] = &mSigmaPeakSec10;
140 mSigmaPeak[11] = &mSigmaPeakSec11;
141 mSigmaPeak[12] = &mSigmaPeakSec12;
142 mSigmaPeak[13] = &mSigmaPeakSec13;
143 mSigmaPeak[14] = &mSigmaPeakSec14;
144 mSigmaPeak[15] = &mSigmaPeakSec15;
145 mSigmaPeak[16] = &mSigmaPeakSec16;
146 mSigmaPeak[17] = &mSigmaPeakSec17;
162 int n = (*(mChannelStart[sector]))[channel];
166 return (*(mGlobalOffset[sector]))[channel];
168 int nstop = mTimeSlewing[sector]->size();
171 nstop = (*(mChannelStart[sector]))[channel + 1];
175 return (*(mGlobalOffset[sector]))[channel];
179 return (
float)((*(mTimeSlewing[sector]))[
n].second + (*(mGlobalOffset[sector]))[channel]);
187 unsigned short tot = (
unsigned short)(totIn * 1000);
189 while (n < nstop && tot > (*(mTimeSlewing[sector]))[
n].
first) {
195 return (*(mGlobalOffset[sector]))[channel];
198 if (
n == nstop - 1) {
199 return (
float)((*(mTimeSlewing[sector]))[
n].second + (*(mGlobalOffset[sector]))[channel]);
203 return (*(mGlobalOffset[sector]))[channel];
206 float w1 = (float)(tot - (*(mTimeSlewing[sector]))[
n].
first);
207 float w2 = (float)((*(mTimeSlewing[sector]))[
n + 1].
first - tot);
209 return (
float)((*(mGlobalOffset[sector]))[channel] + (((*(mTimeSlewing[sector]))[
n].second * w2 + (*(mTimeSlewing[sector]))[
n + 1].second * w1) / (w1 + w2)));
219 std::vector<float> deltat;
221 float minVal = 100000;
222 float maxVal = -100000;
229 std::vector<short> totFin;
231 while (k1 < nnew && k2 < nold) {
232 if (newtot[k1] == oldtot[k2]) {
234 }
else if (newtot[k1] < oldtot[k2]) {
235 totFin.push_back(newtot[k1]);
237 deltat.push_back(
float(newdt[k1]) + olddt[k2 - 1]);
239 deltat.push_back(
float(newdt[k1] + olddt[k2]));
243 totFin.push_back(oldtot[k2]);
245 deltat.push_back(
float(olddt[k2]) + newdt[k1 - 1]);
247 deltat.push_back(
float(olddt[k2] + newdt[k1]));
255 totFin.push_back(newtot[k1]);
257 deltat.push_back(
float(newdt[k1]) + olddt[nold - 1]);
259 deltat.push_back(
float(newdt[k1]));
263 }
else if (k2 < nold) {
265 totFin.push_back(oldtot[k2]);
267 deltat.push_back(
float(olddt[k2]) + newdt[nnew - 1]);
269 deltat.push_back(
float(olddt[k2]));
275 for (
int i = 0;
i < deltat.size();
i++) {
276 if (deltat[
i] < minVal) {
279 if (deltat[
i] > maxVal) {
284 float recentering = (minVal + maxVal) * 0.5;
285 (*(mGlobalOffset[sector]))[channel] = offsetold + recentering;
286 (*(mChannelStart[sector]))[channel] = mTimeSlewing[sector]->size();
288 for (
int i = 0;
i < deltat.size();
i++) {
289 (*(mTimeSlewing[sector])).emplace_back(totFin[
i], (
short)(deltat[
i] - recentering));