ATLAS Offline Software
Loading...
Searching...
No Matches
HTcalculator Class Reference

#include <HTcalculator.h>

Collaboration diagram for HTcalculator:

Public Member Functions

 HTcalculator ()=default
virtual ~HTcalculator ()=default
void checkInitialization ()
void setDefaultCalibrationConstants ()
StatusCode ReadVectorDB (const CondAttrListVec *channel_values)
float getProbHT (float pTrk, Trk::ParticleHypothesis hypothesis, int TrtPart, int GasType, int StrawLayer, float ZR, float rTrkAnode, float Occupancy, bool hasTrackPars) const
float pHTvsPGOG (int TrtPart, int GasType, float p, float mass, float occ) const

Static Public Member Functions

static float Limit (float prob)

Private Attributes

StorePIDinfo m_par_pHTvsPGOG_new [N_GAS][N_DET]
StorePIDinfo m_CpHT_B_Zee_SL_new [N_GAS][N_DET]
StorePIDinfo m_CpHT_B_Zmm_SL_new [N_GAS][N_DET]
StorePIDinfo m_CpHT_B_Zee_ZR_new [N_GAS][N_DET]
StorePIDinfo m_CpHT_B_Zmm_ZR_new [N_GAS][N_DET]
StorePIDinfo m_CpHT_B_Zee_TW_new [N_GAS][N_DET]
StorePIDinfo m_CpHT_B_Zmm_TW_new [N_GAS][N_DET]
StorePIDinfo m_CpHT_B_Zee_OR_new [N_GAS][N_DET]
StorePIDinfo m_CpHT_B_Zmm_OR_new [N_GAS][N_DET]

Static Private Attributes

static constexpr int N_GAS = 3
static constexpr int N_DET = 3
static constexpr int N_PAR2 = 10
static constexpr int SIZE_OF_HEADER = sizeof(float) * 4
static constexpr int SIZE_OF_BLOB = sizeof(float) * ((N_PAR2 * N_DET))

Detailed Description

Definition at line 27 of file HTcalculator.h.

Constructor & Destructor Documentation

◆ HTcalculator()

HTcalculator::HTcalculator ( )
default

◆ ~HTcalculator()

virtual HTcalculator::~HTcalculator ( )
virtualdefault

Member Function Documentation

◆ checkInitialization()

void HTcalculator::checkInitialization ( )
inline

Definition at line 32 of file HTcalculator.h.

32 {
33 // no-op
34 }

◆ getProbHT()

float HTcalculator::getProbHT ( float pTrk,
Trk::ParticleHypothesis hypothesis,
int TrtPart,
int GasType,
int StrawLayer,
float ZR,
float rTrkAnode,
float Occupancy,
bool hasTrackPars = true ) const

Definition at line 27 of file HTcalculator.cxx.

30 {
31
32 float pHT = 1.0; // Default/unit value, which ensures that unusable hits does
33 // not change probability product!
34 // Make sure that the information passed makes sense:
35 // --------------------------------------------------
36 if (pTrk < 250.0 || pTrk > 7000000.0)
37 return pHT;
38
39 if (TrtPart < 0 || TrtPart > 2)
40 return pHT;
41 if (GasType < 0 || GasType > 2)
42 return pHT;
43
44 if ((TrtPart == 0 && (StrawLayer < 0 || StrawLayer > 72)) ||
45 (TrtPart == 1 && (StrawLayer < 0 || StrawLayer > 95)) ||
46 (TrtPart == 2 && (StrawLayer < 0 || StrawLayer > 63)))
47 return pHT;
48
49 if ((TrtPart == 0 && (ZR > 720.0)) ||
50 (TrtPart > 0 && (ZR < 630.0 || ZR > 1030.0)))
51 return pHT;
52
53 if (rTrkWire < 0.0 || rTrkWire > 2.2)
54 return pHT;
55
56 // Calculate the High Threshold probability, pHT:
57 // ----------------------------------------------
58 float correctionSL, correctionZR, correctionTW;
59 float mass = Trk::ParticleMasses::mass[hypothesis];
60 float correctionPGOG = -999.;
61 if (GasType == 1 && TrtPart == 2) {
62 // estimate EB argon straws as follows:
63 // estimate pHT using EA argon straws (GasType=1, TrtPart=1)
64 // estimate correction factors using EB xenon straws (GasType=0, TrtPart=2)
65 correctionPGOG = pHTvsPGOG(1, GasType, pTrk, mass, Occupancy);
66 GasType = 0;
67 } else {
68 correctionPGOG = pHTvsPGOG(TrtPart, GasType, pTrk, mass, Occupancy);
69 }
70
71 // Jared -- Change this ugly check, use hypothesis!
72 if (std::fabs(mass - ParticleConstants::electronMassInMeV) < 0.1) { // Electron! OK, ugly way but works...
73 correctionSL = m_CpHT_B_Zee_SL_new[GasType][TrtPart].GetValue(StrawLayer);
74 correctionZR = m_CpHT_B_Zee_ZR_new[GasType][TrtPart].GetValue(ZR);
75 correctionTW = m_CpHT_B_Zee_TW_new[GasType][TrtPart].GetValue(rTrkWire);
76 } else { // Non-electron!
77 correctionSL = m_CpHT_B_Zmm_SL_new[GasType][TrtPart].GetValue(StrawLayer);
78 correctionZR = m_CpHT_B_Zmm_ZR_new[GasType][TrtPart].GetValue(ZR);
79 correctionTW = m_CpHT_B_Zmm_TW_new[GasType][TrtPart].GetValue(rTrkWire);
80 }
81
82 // Jared - In absence of track pars, no ZR or TW information -- disable
83 // correction factors
84 if (not hasTrackPars) {
85 correctionZR = 1.0;
86 correctionTW = 1.0;
87 }
88
89 // Jared - Temporarily disable ZR corrections, reproducibility issues with
90 // calibration
91 // correctionZR = 1.0;
92
93 return correctionPGOG * correctionSL * correctionZR * correctionTW;
94}
StorePIDinfo m_CpHT_B_Zee_SL_new[N_GAS][N_DET]
StorePIDinfo m_CpHT_B_Zmm_SL_new[N_GAS][N_DET]
StorePIDinfo m_CpHT_B_Zee_ZR_new[N_GAS][N_DET]
StorePIDinfo m_CpHT_B_Zee_TW_new[N_GAS][N_DET]
float pHTvsPGOG(int TrtPart, int GasType, float p, float mass, float occ) const
StorePIDinfo m_CpHT_B_Zmm_TW_new[N_GAS][N_DET]
StorePIDinfo m_CpHT_B_Zmm_ZR_new[N_GAS][N_DET]
constexpr double electronMassInMeV
the mass of the electron (in MeV)
constexpr double mass[PARTICLEHYPOTHESES]
the array of masses

◆ Limit()

float HTcalculator::Limit ( float prob)
static

Definition at line 12 of file HTcalculator.cxx.

12 {
13 if (prob > 1.0) {
14 return 1.0;
15 } else if (prob < 0.0) {
16 return 0.0;
17 }
18 return prob;
19}

◆ pHTvsPGOG()

float HTcalculator::pHTvsPGOG ( int TrtPart,
int GasType,
float p,
float mass,
float occ ) const

Definition at line 101 of file HTcalculator.cxx.

102 {
103
104 const float gamma = std::sqrt(p * p + mass * mass) / mass;
105
106 const StorePIDinfo& entry = m_par_pHTvsPGOG_new[GasType][TrtPart];
107 const auto bin0 = entry.GetBinValue(0);
108 const auto bin1 = entry.GetBinValue(1);
109 const auto bin2 = entry.GetBinValue(2);
110 const auto bin3 = entry.GetBinValue(3);
111 const auto bin4 = entry.GetBinValue(4);
112 const auto bin5 = entry.GetBinValue(5);
113 const auto bin6 = entry.GetBinValue(6);
114 const auto bin7 = entry.GetBinValue(7);
115 const auto bin8 = entry.GetBinValue(8);
116 const auto bin9 = entry.GetBinValue(9);
117
118 // The position of the upper point of linearity varies with occupancy!
119 const double par1 = bin1 + bin6 * occ;
120 // The position of the onset varies with occupancy!
121 const double par4 = bin4 + bin7 * occ;
122
123 const auto log10_gamma = std::log10(gamma);
124 // TR onset part (main part):
125 const double exp_term = std::exp(-(log10_gamma - par4) / bin5);
126 const double pHT_TR = bin2 + bin3 / (1.0 + exp_term);
127
128 // dE/dx part (linear at low gamma):
129 const double exp_term0 = std::exp(-(bin0 - par4) / bin5);
130 const double alpha0 = bin2 + bin3 / (1.0 + exp_term0);
131 const double beta0 =
132 bin3 / ((1.0 + exp_term0) * (1.0 + exp_term0)) * exp_term0 / bin5;
133 const double pHT_dEdx = alpha0 + beta0 * (log10_gamma - bin0);
134
135 // High-gamma part (linear at high gamma):
136 const double exp_term1 = std::exp(-(par1 - par4) / bin5);
137 const double alpha1 = bin2 + bin3 / (1.0 + exp_term1);
138 const double beta1 =
139 bin3 / ((1.0 + exp_term1) * (1.0 + exp_term1)) * exp_term1 / bin5;
140 double pHT_HG = alpha1 + beta1 * (std::log10(gamma) - par1);
141
142 double pHT_OccZero = pHT_TR;
143 if (log10_gamma < bin0) {
144 pHT_OccZero = pHT_dEdx;
145 } else if (log10_gamma > par1) {
146 pHT_OccZero = pHT_HG;
147 }
148
149 // The occupancy dependency is included through the Anatoli formula and a
150 // quadratic fit from the muon plateau:
151 const double DeltaOcc = bin8 * occ + bin9 * occ * occ;
152 return pHT_OccZero + (1.0 - pHT_OccZero) * DeltaOcc;
153}
StorePIDinfo m_par_pHTvsPGOG_new[N_GAS][N_DET]

◆ ReadVectorDB()

StatusCode HTcalculator::ReadVectorDB ( const CondAttrListVec * channel_values)

Definition at line 155 of file HTcalculator.cxx.

155 {
156 if (channel_values->size() < 1) {
157 MsgStream log(Athena::getMessageSvc(), "HTcalculator");
158 log << MSG::WARNING << " There are no Pid channels available!!" << endmsg;
159 log << MSG::WARNING
160 << "The HTcalculator is about to be used uninitialized - Loading "
161 "default"
162 << endmsg;
164 return StatusCode::SUCCESS;
165 }
166
167 CondAttrListVec::const_iterator first_channel = channel_values->begin();
168 CondAttrListVec::const_iterator last_channel = channel_values->end();
169
170 for (; first_channel != last_channel; ++first_channel) {
171 switch (first_channel->first) {
172 case 0: // gamma_All_Xenon_All_Barrel
173 m_par_pHTvsPGOG_new[0][0].push_back(
174 first_channel->second["array_value"].data<float>());
175 break;
176 case 1: // gamma_All_Xenon_All_EndcapA
177 m_par_pHTvsPGOG_new[0][1].push_back(
178 first_channel->second["array_value"].data<float>());
179 break;
180 case 2: // gamma_All_Xenon_All_EndcapB
181 m_par_pHTvsPGOG_new[0][2].push_back(
182 first_channel->second["array_value"].data<float>());
183 break;
184 case 3: // gamma_All_Argon_All_Barrel
185 m_par_pHTvsPGOG_new[1][0].push_back(
186 first_channel->second["array_value"].data<float>());
187 break;
188 case 4: // gamma_All_Argon_All_EndcapA
189 m_par_pHTvsPGOG_new[1][1].push_back(
190 first_channel->second["array_value"].data<float>());
191 break;
192 case 5: // gamma_All_Argon_All_EndcapB
193 m_par_pHTvsPGOG_new[1][2].push_back(
194 first_channel->second["array_value"].data<float>());
195 break;
196 case 6: // gamma_All_Krypton_All_Barrel
197 m_par_pHTvsPGOG_new[2][0].push_back(
198 first_channel->second["array_value"].data<float>());
199 break;
200 case 7: // gamma_All_Krypton_All_EndcapA
201 m_par_pHTvsPGOG_new[2][1].push_back(
202 first_channel->second["array_value"].data<float>());
203 break;
204 case 8: // gamma_All_Krypton_All_EndcapB
205 m_par_pHTvsPGOG_new[2][2].push_back(
206 first_channel->second["array_value"].data<float>());
207 break;
208
209 // Xenon Corrections:
210 case 9: // SL_Zee_Xenon_Electrons_Barrel
211 m_CpHT_B_Zee_SL_new[0][0].push_back(
212 first_channel->second["array_value"].data<float>());
213 break;
214 case 10: // SL_Zee_Xenon_Electrons_EndcapA
215 m_CpHT_B_Zee_SL_new[0][1].push_back(
216 first_channel->second["array_value"].data<float>());
217 break;
218 case 11: // SL_Zee_Xenon_Electrons_EndcapB
219 m_CpHT_B_Zee_SL_new[0][2].push_back(
220 first_channel->second["array_value"].data<float>());
221 break;
222 case 12: // ZR_Zee_Xenon_Electrons_Barrel
223 m_CpHT_B_Zee_ZR_new[0][0].push_back(
224 first_channel->second["array_value"].data<float>());
225 break;
226 case 13: // ZR_Zee_Xenon_Electrons_EndcapA
227 m_CpHT_B_Zee_ZR_new[0][1].push_back(
228 first_channel->second["array_value"].data<float>());
229 break;
230 case 14: // ZR_Zee_Xenon_Electrons_EndcapB
231 m_CpHT_B_Zee_ZR_new[0][2].push_back(
232 first_channel->second["array_value"].data<float>());
233 break;
234 case 15: // TW_Zee_Xenon_Electrons_Barrel
235 m_CpHT_B_Zee_TW_new[0][0].push_back(
236 first_channel->second["array_value"].data<float>());
237 break;
238 case 16: // TW_Zee_Xenon_Electrons_EndcapA
239 m_CpHT_B_Zee_TW_new[0][1].push_back(
240 first_channel->second["array_value"].data<float>());
241 break;
242 case 17: // TW_Zee_Xenon_Electrons_EndcapB
243 m_CpHT_B_Zee_TW_new[0][2].push_back(
244 first_channel->second["array_value"].data<float>());
245 break;
246 case 18: // OR_Zee_Xenon_Electrons_Barrel
247 m_CpHT_B_Zee_OR_new[0][0].push_back(
248 first_channel->second["array_value"].data<float>());
249 break;
250 case 19: // OR_Zee_Xenon_Electrons_EndcapA
251 m_CpHT_B_Zee_OR_new[0][1].push_back(
252 first_channel->second["array_value"].data<float>());
253 break;
254 case 20: // OR_Zee_Xenon_Electrons_EndcapB
255 m_CpHT_B_Zee_OR_new[0][2].push_back(
256 first_channel->second["array_value"].data<float>());
257 break;
258 case 21: // SL_Zmm_Xenon_NonElecs_Barrel
259 m_CpHT_B_Zmm_SL_new[0][0].push_back(
260 first_channel->second["array_value"].data<float>());
261 break;
262 case 22: // SL_Zmm_Xenon_NonElecs_EndcapA
263 m_CpHT_B_Zmm_SL_new[0][1].push_back(
264 first_channel->second["array_value"].data<float>());
265 break;
266 case 23: // SL_Zmm_Xenon_NonElecs_EndcapB
267 m_CpHT_B_Zmm_SL_new[0][2].push_back(
268 first_channel->second["array_value"].data<float>());
269 break;
270 case 24: // ZR_Zmm_Xenon_NonElecs_Barrel
271 m_CpHT_B_Zmm_ZR_new[0][0].push_back(
272 first_channel->second["array_value"].data<float>());
273 break;
274 case 25: // ZR_Zmm_Xenon_NonElecs_EndcapA
275 m_CpHT_B_Zmm_ZR_new[0][1].push_back(
276 first_channel->second["array_value"].data<float>());
277 break;
278 case 26: // ZR_Zmm_Xenon_NonElecs_EndcapB
279 m_CpHT_B_Zmm_ZR_new[0][2].push_back(
280 first_channel->second["array_value"].data<float>());
281 break;
282 case 27: // TW_Zmm_Xenon_NonElecs_Barrel
283 m_CpHT_B_Zmm_TW_new[0][0].push_back(
284 first_channel->second["array_value"].data<float>());
285 break;
286 case 28: // TW_Zmm_Xenon_NonElecs_EndcapA
287 m_CpHT_B_Zmm_TW_new[0][1].push_back(
288 first_channel->second["array_value"].data<float>());
289 break;
290 case 29: // TW_Zmm_Xenon_NonElecs_EndcapB
291 m_CpHT_B_Zmm_TW_new[0][2].push_back(
292 first_channel->second["array_value"].data<float>());
293 break;
294 case 30: // OR_Zmm_Xenon_NonElecs_Barrel
295 m_CpHT_B_Zmm_OR_new[0][0].push_back(
296 first_channel->second["array_value"].data<float>());
297 break;
298 case 31: // OR_Zmm_Xenon_NonElecs_EndcapA
299 m_CpHT_B_Zmm_OR_new[0][1].push_back(
300 first_channel->second["array_value"].data<float>());
301 break;
302 case 32: // OR_Zmm_Xenon_NonElecs_EndcapB
303 m_CpHT_B_Zmm_OR_new[0][2].push_back(
304 first_channel->second["array_value"].data<float>());
305 break;
306
307 // Argon Corrections:
308 case 33: // SL_Zee_Xenon_Electrons_Barrel
309 m_CpHT_B_Zee_SL_new[1][0].push_back(
310 first_channel->second["array_value"].data<float>());
311 break;
312 case 34: // SL_Zee_Xenon_Electrons_EndcapA
313 m_CpHT_B_Zee_SL_new[1][1].push_back(
314 first_channel->second["array_value"].data<float>());
315 break;
316 case 35: // SL_Zee_Xenon_Electrons_EndcapB
317 m_CpHT_B_Zee_SL_new[1][2].push_back(
318 first_channel->second["array_value"].data<float>());
319 break;
320 case 36: // ZR_Zee_Xenon_Electrons_Barrel
321 m_CpHT_B_Zee_ZR_new[1][0].push_back(
322 first_channel->second["array_value"].data<float>());
323 break;
324 case 37: // ZR_Zee_Xenon_Electrons_EndcapA
325 m_CpHT_B_Zee_ZR_new[1][1].push_back(
326 first_channel->second["array_value"].data<float>());
327 break;
328 case 38: // ZR_Zee_Xenon_Electrons_EndcapB
329 m_CpHT_B_Zee_ZR_new[1][2].push_back(
330 first_channel->second["array_value"].data<float>());
331 break;
332 case 39: // TW_Zee_Xenon_Electrons_Barrel
333 m_CpHT_B_Zee_TW_new[1][0].push_back(
334 first_channel->second["array_value"].data<float>());
335 break;
336 case 40: // TW_Zee_Xenon_Electrons_EndcapA
337 m_CpHT_B_Zee_TW_new[1][1].push_back(
338 first_channel->second["array_value"].data<float>());
339 break;
340 case 41: // TW_Zee_Xenon_Electrons_EndcapB
341 m_CpHT_B_Zee_TW_new[1][2].push_back(
342 first_channel->second["array_value"].data<float>());
343 break;
344 case 42: // OR_Zee_Xenon_Electrons_Barrel
345 m_CpHT_B_Zee_OR_new[1][0].push_back(
346 first_channel->second["array_value"].data<float>());
347 break;
348 case 43: // OR_Zee_Xenon_Electrons_EndcapA
349 m_CpHT_B_Zee_OR_new[1][1].push_back(
350 first_channel->second["array_value"].data<float>());
351 break;
352 case 44: // OR_Zee_Xenon_Electrons_EndcapB
353 m_CpHT_B_Zee_OR_new[1][2].push_back(
354 first_channel->second["array_value"].data<float>());
355 break;
356 case 45: // SL_Zmm_Xenon_NonElecs_Barrel
357 m_CpHT_B_Zmm_SL_new[1][0].push_back(
358 first_channel->second["array_value"].data<float>());
359 break;
360 case 46: // SL_Zmm_Xenon_NonElecs_EndcapA
361 m_CpHT_B_Zmm_SL_new[1][1].push_back(
362 first_channel->second["array_value"].data<float>());
363 break;
364 case 47: // SL_Zmm_Xenon_NonElecs_EndcapB
365 m_CpHT_B_Zmm_SL_new[1][2].push_back(
366 first_channel->second["array_value"].data<float>());
367 break;
368 case 48: // ZR_Zmm_Xenon_NonElecs_Barrel
369 m_CpHT_B_Zmm_ZR_new[1][0].push_back(
370 first_channel->second["array_value"].data<float>());
371 break;
372 case 49: // ZR_Zmm_Xenon_NonElecs_EndcapA
373 m_CpHT_B_Zmm_ZR_new[1][1].push_back(
374 first_channel->second["array_value"].data<float>());
375 break;
376 case 50: // ZR_Zmm_Xenon_NonElecs_EndcapB
377 m_CpHT_B_Zmm_ZR_new[1][2].push_back(
378 first_channel->second["array_value"].data<float>());
379 break;
380 case 51: // TW_Zmm_Xenon_NonElecs_Barrel
381 m_CpHT_B_Zmm_TW_new[1][0].push_back(
382 first_channel->second["array_value"].data<float>());
383 break;
384 case 52: // TW_Zmm_Xenon_NonElecs_EndcapA
385 m_CpHT_B_Zmm_TW_new[1][1].push_back(
386 first_channel->second["array_value"].data<float>());
387 break;
388 case 53: // TW_Zmm_Xenon_NonElecs_EndcapB
389 m_CpHT_B_Zmm_TW_new[1][2].push_back(
390 first_channel->second["array_value"].data<float>());
391 break;
392 case 54: // OR_Zmm_Xenon_NonElecs_Barrel
393 m_CpHT_B_Zmm_OR_new[1][0].push_back(
394 first_channel->second["array_value"].data<float>());
395 break;
396 case 55: // OR_Zmm_Xenon_NonElecs_EndcapA
397 m_CpHT_B_Zmm_OR_new[1][1].push_back(
398 first_channel->second["array_value"].data<float>());
399 break;
400 case 56: // OR_Zmm_Xenon_NonElecs_EndcapB
401 m_CpHT_B_Zmm_OR_new[1][2].push_back(
402 first_channel->second["array_value"].data<float>());
403 break;
404
405 // Krypton Corrections:
406 case 57: // SL_Zee_Xenon_Electrons_Barrel
407 m_CpHT_B_Zee_SL_new[2][0].push_back(
408 first_channel->second["array_value"].data<float>());
409 break;
410 case 58: // SL_Zee_Xenon_Electrons_EndcapA
411 m_CpHT_B_Zee_SL_new[2][1].push_back(
412 first_channel->second["array_value"].data<float>());
413 break;
414 case 59: // SL_Zee_Xenon_Electrons_EndcapB
415 m_CpHT_B_Zee_SL_new[2][2].push_back(
416 first_channel->second["array_value"].data<float>());
417 break;
418 case 60: // ZR_Zee_Xenon_Electrons_Barrel
419 m_CpHT_B_Zee_ZR_new[2][0].push_back(
420 first_channel->second["array_value"].data<float>());
421 break;
422 case 61: // ZR_Zee_Xenon_Electrons_EndcapA
423 m_CpHT_B_Zee_ZR_new[2][1].push_back(
424 first_channel->second["array_value"].data<float>());
425 break;
426 case 62: // ZR_Zee_Xenon_Electrons_EndcapB
427 m_CpHT_B_Zee_ZR_new[2][2].push_back(
428 first_channel->second["array_value"].data<float>());
429 break;
430 case 63: // TW_Zee_Xenon_Electrons_Barrel
431 m_CpHT_B_Zee_TW_new[2][0].push_back(
432 first_channel->second["array_value"].data<float>());
433 break;
434 case 64: // TW_Zee_Xenon_Electrons_EndcapA
435 m_CpHT_B_Zee_TW_new[2][1].push_back(
436 first_channel->second["array_value"].data<float>());
437 break;
438 case 65: // TW_Zee_Xenon_Electrons_EndcapB
439 m_CpHT_B_Zee_TW_new[2][2].push_back(
440 first_channel->second["array_value"].data<float>());
441 break;
442 case 66: // OR_Zee_Xenon_Electrons_Barrel
443 m_CpHT_B_Zee_OR_new[2][0].push_back(
444 first_channel->second["array_value"].data<float>());
445 break;
446 case 67: // OR_Zee_Xenon_Electrons_EndcapA
447 m_CpHT_B_Zee_OR_new[2][1].push_back(
448 first_channel->second["array_value"].data<float>());
449 break;
450 case 68: // OR_Zee_Xenon_Electrons_EndcapB
451 m_CpHT_B_Zee_OR_new[2][2].push_back(
452 first_channel->second["array_value"].data<float>());
453 break;
454 case 69: // SL_Zmm_Xenon_NonElecs_Barrel
455 m_CpHT_B_Zmm_SL_new[2][0].push_back(
456 first_channel->second["array_value"].data<float>());
457 break;
458 case 70: // SL_Zmm_Xenon_NonElecs_EndcapA
459 m_CpHT_B_Zmm_SL_new[2][1].push_back(
460 first_channel->second["array_value"].data<float>());
461 break;
462 case 71: // SL_Zmm_Xenon_NonElecs_EndcapB
463 m_CpHT_B_Zmm_SL_new[2][2].push_back(
464 first_channel->second["array_value"].data<float>());
465 break;
466 case 72: // ZR_Zmm_Xenon_NonElecs_Barrel
467 m_CpHT_B_Zmm_ZR_new[2][0].push_back(
468 first_channel->second["array_value"].data<float>());
469 break;
470 case 73: // ZR_Zmm_Xenon_NonElecs_EndcapA
471 m_CpHT_B_Zmm_ZR_new[2][1].push_back(
472 first_channel->second["array_value"].data<float>());
473 break;
474 case 74: // ZR_Zmm_Xenon_NonElecs_EndcapB
475 m_CpHT_B_Zmm_ZR_new[2][2].push_back(
476 first_channel->second["array_value"].data<float>());
477 break;
478 case 75: // TW_Zmm_Xenon_NonElecs_Barrel
479 m_CpHT_B_Zmm_TW_new[2][0].push_back(
480 first_channel->second["array_value"].data<float>());
481 break;
482 case 76: // TW_Zmm_Xenon_NonElecs_EndcapA
483 m_CpHT_B_Zmm_TW_new[2][1].push_back(
484 first_channel->second["array_value"].data<float>());
485 break;
486 case 77: // TW_Zmm_Xenon_NonElecs_EndcapB
487 m_CpHT_B_Zmm_TW_new[2][2].push_back(
488 first_channel->second["array_value"].data<float>());
489 break;
490 case 78: // OR_Zmm_Xenon_NonElecs_Barrel
491 m_CpHT_B_Zmm_OR_new[2][0].push_back(
492 first_channel->second["array_value"].data<float>());
493 break;
494 case 79: // OR_Zmm_Xenon_NonElecs_EndcapA
495 m_CpHT_B_Zmm_OR_new[2][1].push_back(
496 first_channel->second["array_value"].data<float>());
497 break;
498 case 80: // OR_Zmm_Xenon_NonElecs_EndcapB
499 m_CpHT_B_Zmm_OR_new[2][2].push_back(
500 first_channel->second["array_value"].data<float>());
501 break;
502 }
503 }
504
505 for (int i = 0; i < N_DET; i++) {
506 for (int j = 0; j < N_GAS; j++) {
507 if (m_par_pHTvsPGOG_new[j][i].check(j, i) != StatusCode::SUCCESS)
508 return StatusCode::FAILURE;
509 if (m_CpHT_B_Zee_SL_new[j][i].check(j, i) != StatusCode::SUCCESS)
510 return StatusCode::FAILURE;
511 if (m_CpHT_B_Zmm_SL_new[j][i].check(j, i) != StatusCode::SUCCESS)
512 return StatusCode::FAILURE;
513 if (m_CpHT_B_Zee_ZR_new[j][i].check(j, i) != StatusCode::SUCCESS)
514 return StatusCode::FAILURE;
515 if (m_CpHT_B_Zmm_ZR_new[j][i].check(j, i) != StatusCode::SUCCESS)
516 return StatusCode::FAILURE;
517 if (m_CpHT_B_Zee_TW_new[j][i].check(j, i) != StatusCode::SUCCESS)
518 return StatusCode::FAILURE;
519 if (m_CpHT_B_Zmm_TW_new[j][i].check(j, i) != StatusCode::SUCCESS)
520 return StatusCode::FAILURE;
521 if (m_CpHT_B_Zee_OR_new[j][i].check(j, i) != StatusCode::SUCCESS)
522 return StatusCode::FAILURE;
523 if (m_CpHT_B_Zmm_OR_new[j][i].check(j, i) != StatusCode::SUCCESS)
524 return StatusCode::FAILURE;
525 }
526 }
527
528 return StatusCode::SUCCESS;
529}
#define endmsg
AttrListVec::const_iterator const_iterator
const_iterator end() const
const_iterator begin() const
size_type size() const
static constexpr int N_DET
void setDefaultCalibrationConstants()
StorePIDinfo m_CpHT_B_Zmm_OR_new[N_GAS][N_DET]
StorePIDinfo m_CpHT_B_Zee_OR_new[N_GAS][N_DET]
static constexpr int N_GAS
IMessageSvc * getMessageSvc(bool quiet=false)

◆ setDefaultCalibrationConstants()

void HTcalculator::setDefaultCalibrationConstants ( )

Definition at line 535 of file HTcalculator.cxx.

535 {
536 /*****************************************************************************\
537
538 This code is never called in production. It is used to set all
539 constants in the positions in the HTBlob where they are needed, and
540 finally print out the blob as an array of numbers. This is far easier and
541 less error prone than having a separate setter-script which might itself
542 have a version mismatch with this code.
543
544 PLEASE REMEMBER to increment the version number precisely when you change
545 the addresses of the various arrays inside the HTBlob, and NEVER otherwise!
546
547 \*****************************************************************************/
548
549 MsgStream log(Athena::getMessageSvc(), "HTcalculator");
550 log << MSG::WARNING
551 << " HT PID DB is NOT available. Set hard-coded PID calibration "
552 "constants. Derived from Run1 Data Zee and Zmumu 50 ns."
553 << endmsg;
554
555 // Expanding to a 2D fit (gamma,occupancy) for three types of gases: Xenon,
556 // Argon, Krypton:
557 // ----------------------------------------------------------------------------------------
558 constexpr float par2[N_GAS][N_DET][N_PAR2] = {
559 // Xenon Gas Parameters
560 {{1.0000, 3.7204, 0.0260, 0.1445, 3.0461, 0.2206, 0.0000, 0.0078, 0.0918,
561 0.0744}, // Barrel Prob: 0.9992
562 {1.0000, 3.5836, 0.0468, 0.1475, 3.0943, 0.1303, 0.0000, 0.0089, 0.1054,
563 0.0472}, // EndcapA Prob: 1.0000
564 {1.0000, 3.4798, 0.0433, 0.1824, 3.0730, 0.1244, 0.0000, 0.0300, 0.1007,
565 0.1261}}, // EndcapB Prob: 0.8536
566 // Argon Gas Parameters
567 {{1.0000, 2.8342, 0.0384, 0.0185, 2.7161, 0.0366, 0.0000, 0.0013, 0.1261,
568 0.1241}, // Barrel Prob: 1.0000
569 {1.0000, 3.2551, 0.0388, 0.0338, 2.9090, 0.1663, 0.0000, 0.1604, 0.1100,
570 0.0521}, // EndcapA Prob: 0.9970
571 {0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
572 0.0000}}, // EndcapB ------------
573 // Krypton Gas Parameters (Place Holder)
574 {{0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
575 0.0000}, // Barrel ------------
576 {0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
577 0.0000}, // EndcapA ------------
578 {0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000, 0.0000,
579 0.0000}}}; // EndcapB ------------
580
581 for (int i = 0; i < N_GAS; i++) {
582 for (int j = 0; j < N_DET; j++) {
583 m_par_pHTvsPGOG_new[i][j].update(
584 10, 50, 1000000.0,
585 std::vector<float>(
586 par2[i][j],
587 par2[i][j] + sizeof par2[i][j] / sizeof par2[i][j][0]));
588 }
589 }
590
591 constexpr int N_SL_B = 73;
592 constexpr int N_SL_EA = 96;
593 constexpr int N_SL_EB = 64;
594 constexpr int N_ZR_B = 36;
595 constexpr int N_ZR_EA = 40;
596 constexpr int N_ZR_EB = 40;
597 constexpr int N_TW_B = 44;
598 constexpr int N_TW_EA = 44;
599 constexpr int N_TW_EB = 44;
600
601 // ---------------------------------------
602 // Electrons:
603 // ---------------------------------------
604 // Straw Layer (SL):
605 constexpr double CpHT_Zee_Barrel_SL[N_SL_B] = {
606 0.637, 0.887, 0.966, 1.034, 1.059, 1.009, 1.131, 1.073, 1.086, 0.925,
607 0.890, 0.987, 0.937, 0.964, 0.976, 0.929, 1.006, 0.979, 0.992, 0.812,
608 0.935, 0.950, 0.984, 0.994, 1.011, 0.952, 1.051, 0.997, 1.026, 1.018,
609 0.978, 1.066, 1.016, 1.039, 1.040, 0.979, 1.057, 1.018, 1.032, 1.052,
610 0.994, 1.055, 1.023, 0.823, 1.013, 0.977, 1.051, 1.031, 0.973, 1.077,
611 1.025, 1.056, 1.047, 0.992, 1.085, 1.032, 1.061, 1.054, 0.998, 1.093,
612 1.039, 1.058, 1.056, 0.988, 1.090, 1.057, 1.046, 1.053, 0.994, 1.081,
613 1.041, 1.040, 1.061};
614 constexpr double CpHT_Zee_EndcapA_SL[N_SL_EA] = {
615 0.671, 0.802, 0.890, 0.918, 0.946, 0.963, 0.974, 0.979, 1.030, 1.023,
616 1.029, 1.004, 1.030, 1.037, 1.033, 1.013, 0.913, 0.968, 0.998, 0.994,
617 1.036, 1.032, 1.043, 1.044, 1.042, 1.009, 1.026, 1.007, 1.032, 1.046,
618 1.020, 1.032, 0.913, 0.955, 0.974, 0.995, 1.035, 1.042, 1.039, 1.047,
619 1.032, 1.036, 1.033, 1.010, 1.047, 1.049, 1.055, 1.046, 0.877, 0.938,
620 0.968, 0.983, 1.004, 1.010, 1.013, 1.014, 1.038, 1.031, 1.042, 1.018,
621 1.016, 1.049, 1.023, 1.025, 0.923, 0.978, 0.995, 1.001, 1.038, 1.042,
622 1.026, 1.037, 1.042, 1.062, 1.041, 1.039, 1.078, 1.058, 1.036, 1.049,
623 0.897, 0.965, 0.993, 0.985, 1.040, 1.068, 1.053, 1.049, 1.037, 1.050,
624 1.043, 1.065, 1.026, 1.058, 1.058, 1.070};
625 constexpr double CpHT_Zee_EndcapB_SL[N_SL_EB] = {
626 0.494, 0.771, 0.887, 0.931, 0.939, 0.989, 0.994, 1.005, 0.866, 0.971,
627 1.027, 1.057, 1.021, 1.056, 1.046, 1.073, 0.901, 0.992, 1.043, 1.055,
628 1.034, 1.087, 1.094, 1.087, 0.920, 0.995, 1.048, 1.068, 1.042, 1.075,
629 1.086, 1.126, 0.920, 0.987, 1.062, 1.072, 1.059, 1.096, 1.070, 1.082,
630 0.927, 1.020, 1.068, 1.083, 1.054, 1.089, 1.078, 1.103, 0.961, 1.050,
631 1.100, 1.107, 1.098, 1.124, 1.101, 1.141, 0.988, 1.106, 1.127, 1.174,
632 1.109, 1.134, 1.134, 1.182};
633
634 // ZR-position (ZR - Z in Barrel, R in Endcaps):
635 constexpr double CpHT_Zee_Barrel_ZR[N_ZR_B] = {
636 0.861, 0.901, 0.909, 0.915, 0.919, 0.924, 0.922, 0.931, 0.928,
637 0.937, 0.945, 0.908, 0.921, 0.959, 0.970, 0.988, 0.986, 0.999,
638 1.010, 1.005, 0.996, 1.005, 1.018, 0.992, 1.042, 1.076, 1.101,
639 1.116, 1.134, 1.157, 1.170, 1.196, 1.208, 1.230, 1.230, 1.039};
640 constexpr double CpHT_Zee_EndcapA_ZR[N_ZR_EA] = {
641 0.458, 0.621, 0.694, 0.758, 0.798, 0.838, 0.871, 0.900, 0.956, 0.980,
642 1.001, 1.006, 1.016, 1.027, 1.019, 1.038, 1.046, 1.045, 1.054, 1.064,
643 1.064, 1.077, 1.081, 1.089, 1.101, 1.113, 1.102, 1.113, 1.107, 1.113,
644 1.098, 1.105, 1.083, 1.054, 1.036, 0.994, 0.965, 0.887, 0.771, 0.575};
645 constexpr double CpHT_Zee_EndcapB_ZR[N_ZR_EB] = {
646 1.000, 0.754, 0.926, 0.941, 1.001, 1.001, 0.987, 1.033, 1.054, 1.060,
647 1.057, 1.064, 1.061, 1.067, 1.052, 1.062, 1.045, 1.057, 1.053, 1.047,
648 1.053, 1.050, 1.042, 1.073, 1.050, 1.050, 1.028, 0.972, 0.928, 0.896,
649 0.881, 0.854, 0.828, 0.793, 0.755, 0.652, 0.511, 0.291, 0.481, 1.000};
650
651 // Track-to-Wire distance (TW):
652 constexpr double CpHT_Zee_Barrel_TW[44] = {
653 1.233, 1.261, 1.276, 1.296, 1.307, 1.338, 1.349, 1.386, 1.395,
654 1.434, 1.441, 1.448, 1.440, 1.439, 1.425, 1.406, 1.388, 1.363,
655 1.334, 1.320, 1.295, 1.269, 1.240, 1.212, 1.183, 1.144, 1.109,
656 1.073, 1.028, 0.981, 0.938, 0.879, 0.817, 0.752, 0.678, 0.606,
657 0.531, 0.465, 0.428, 0.443, 0.504, 0.553, 0.579, 0.766};
658 constexpr double CpHT_Zee_EndcapA_TW[44] = {
659 1.236, 1.260, 1.291, 1.292, 1.304, 1.325, 1.354, 1.363, 1.387,
660 1.394, 1.409, 1.415, 1.407, 1.414, 1.405, 1.394, 1.385, 1.357,
661 1.345, 1.331, 1.309, 1.282, 1.252, 1.226, 1.197, 1.176, 1.135,
662 1.097, 1.047, 1.013, 0.946, 0.892, 0.834, 0.756, 0.696, 0.610,
663 0.547, 0.480, 0.444, 0.445, 0.469, 0.513, 0.584, 0.892};
664 constexpr double CpHT_Zee_EndcapB_TW[44] = {
665 1.186, 1.202, 1.219, 1.246, 1.257, 1.270, 1.291, 1.297, 1.307,
666 1.319, 1.333, 1.338, 1.340, 1.326, 1.314, 1.327, 1.321, 1.310,
667 1.289, 1.279, 1.266, 1.240, 1.222, 1.194, 1.168, 1.153, 1.125,
668 1.091, 1.033, 1.009, 0.963, 0.917, 0.846, 0.802, 0.746, 0.690,
669 0.615, 0.560, 0.514, 0.485, 0.478, 0.473, 0.523, 0.726};
670
671 // ---------------------------------------
672 // Non-Electrons (here muons):
673 // ---------------------------------------
674
675 // Straw Layer (SL):
676 constexpr double CpHT_Zmm_Barrel_SL[N_SL_B] = {
677 1.100, 1.186, 1.209, 1.241, 1.199, 1.174, 1.209, 1.178, 1.150, 1.053,
678 1.033, 1.054, 1.033, 1.029, 1.041, 1.021, 1.027, 0.992, 0.988, 0.983,
679 0.998, 1.022, 1.043, 1.023, 1.027, 1.016, 1.034, 1.009, 1.014, 1.022,
680 1.001, 1.024, 1.003, 1.010, 1.004, 0.983, 0.992, 0.978, 0.981, 1.000,
681 0.984, 0.974, 0.953, 0.941, 0.982, 0.990, 1.005, 0.993, 0.966, 0.997,
682 1.000, 0.988, 0.992, 0.969, 1.003, 0.964, 0.989, 0.961, 0.956, 0.971,
683 0.948, 0.963, 0.951, 0.943, 0.964, 0.965, 0.925, 0.919, 0.918, 0.928,
684 0.919, 0.912, 0.906};
685 constexpr double CpHT_Zmm_EndcapA_SL[N_SL_EA] = {
686 0.883, 0.898, 0.923, 0.899, 0.892, 0.909, 0.893, 0.925, 0.964, 0.964,
687 0.979, 0.949, 0.944, 0.998, 0.940, 0.937, 0.950, 0.976, 0.972, 0.950,
688 0.998, 1.005, 1.007, 1.028, 1.018, 0.995, 1.006, 0.998, 1.031, 1.047,
689 1.031, 1.015, 1.017, 0.983, 1.018, 1.018, 1.025, 1.033, 1.046, 1.069,
690 1.033, 1.027, 1.006, 0.982, 1.066, 1.080, 1.048, 1.058, 0.955, 0.971,
691 0.973, 0.992, 1.013, 1.046, 1.022, 1.029, 1.040, 1.016, 1.077, 1.024,
692 1.011, 1.095, 1.019, 1.045, 1.001, 1.057, 1.043, 1.022, 1.033, 1.108,
693 1.062, 1.110, 1.090, 1.058, 1.060, 1.099, 1.065, 1.120, 1.077, 1.060,
694 1.024, 1.006, 1.022, 1.007, 1.051, 1.118, 1.079, 1.118, 1.070, 1.064,
695 1.108, 1.127, 1.039, 1.107, 1.088, 1.154};
696 constexpr double CpHT_Zmm_EndcapB_SL[N_SL_EB] = {
697 0.828, 0.961, 0.941, 0.991, 0.986, 1.015, 0.993, 0.957, 0.892, 1.005,
698 1.100, 1.054, 0.995, 1.042, 1.022, 1.007, 0.918, 1.019, 1.056, 1.034,
699 0.978, 0.981, 1.014, 1.026, 0.988, 0.978, 1.062, 1.085, 1.029, 0.989,
700 1.067, 1.054, 0.978, 0.971, 1.051, 1.114, 1.152, 1.172, 1.034, 1.170,
701 1.055, 0.990, 1.112, 1.047, 1.068, 1.013, 1.089, 1.141, 0.903, 0.960,
702 1.138, 1.218, 0.991, 1.087, 0.997, 1.028, 1.042, 1.155, 1.060, 1.130,
703 1.077, 1.186, 1.006, 1.054};
704
705 // ZR-position (ZR - Z in Barrel, R in Endcaps):
706 constexpr double CpHT_Zmm_Barrel_ZR[N_ZR_B] = {
707 0.846, 0.874, 0.880, 0.882, 0.876, 0.887, 0.901, 0.894, 0.894,
708 0.903, 0.902, 0.907, 0.918, 0.934, 0.941, 0.948, 0.963, 0.969,
709 0.990, 0.991, 1.012, 1.019, 1.029, 1.033, 1.072, 1.088, 1.111,
710 1.144, 1.164, 1.192, 1.225, 1.242, 1.271, 1.314, 1.309, 1.078};
711 constexpr double CpHT_Zmm_EndcapA_ZR[N_ZR_EA] = {
712 0.613, 0.757, 0.783, 0.849, 0.866, 0.886, 0.915, 0.939, 0.930, 0.976,
713 0.969, 0.984, 0.992, 0.979, 1.006, 1.000, 1.005, 1.022, 1.020, 1.030,
714 1.031, 1.036, 1.053, 1.050, 1.050, 1.048, 1.065, 1.071, 1.060, 1.077,
715 1.067, 1.072, 1.070, 1.067, 1.090, 1.059, 1.032, 1.081, 1.011, 0.984};
716 constexpr double CpHT_Zmm_EndcapB_ZR[N_ZR_EB] = {
717 1.000, 1.375, 0.962, 0.702, 0.869, 0.899, 0.953, 0.905, 1.052, 1.025,
718 1.016, 1.009, 1.033, 0.920, 1.056, 1.031, 1.070, 1.042, 1.052, 1.066,
719 1.024, 1.023, 1.046, 1.046, 1.007, 1.009, 1.009, 1.024, 1.007, 0.993,
720 0.968, 0.997, 0.911, 0.922, 0.938, 0.921, 0.883, 0.653, 0.917, 1.000};
721
722 // Track-to-Wire distance (TWdist):
723 constexpr double CpHT_Zmm_Barrel_TW[N_TW_B] = {
724 1.124, 1.058, 1.065, 1.079, 1.094, 1.124, 1.141, 1.173, 1.207,
725 1.226, 1.250, 1.250, 1.258, 1.249, 1.258, 1.243, 1.229, 1.211,
726 1.206, 1.180, 1.165, 1.138, 1.123, 1.100, 1.074, 1.052, 1.014,
727 0.981, 0.953, 0.896, 0.866, 0.809, 0.776, 0.736, 0.690, 0.644,
728 0.609, 0.615, 0.680, 0.854, 1.094, 1.274, 1.208, 1.219};
729 constexpr double CpHT_Zmm_EndcapA_TW[N_TW_EA] = {
730 1.210, 1.161, 1.177, 1.201, 1.221, 1.244, 1.279, 1.300, 1.319,
731 1.341, 1.362, 1.372, 1.376, 1.378, 1.384, 1.361, 1.349, 1.334,
732 1.325, 1.284, 1.264, 1.250, 1.223, 1.183, 1.121, 1.104, 1.077,
733 1.016, 0.969, 0.912, 0.863, 0.815, 0.753, 0.662, 0.604, 0.555,
734 0.513, 0.490, 0.511, 0.627, 0.843, 1.019, 0.932, 0.922};
735 constexpr double CpHT_Zmm_EndcapB_TW[N_TW_EB] = {
736 1.132, 1.150, 1.125, 1.174, 1.170, 1.282, 1.165, 1.244, 1.287,
737 1.293, 1.270, 1.366, 1.317, 1.285, 1.319, 1.291, 1.304, 1.239,
738 1.256, 1.279, 1.212, 1.221, 1.200, 1.174, 1.143, 1.120, 1.022,
739 0.983, 0.938, 0.895, 0.906, 0.826, 0.766, 0.765, 0.664, 0.566,
740 0.553, 0.556, 0.541, 0.626, 0.780, 0.964, 0.817, 0.542};
741
742 // --------------------------------------------------------------
743
744 // Same corrections for all gases:
745
746 for (int j = 0; j < N_GAS; j++) {
747 m_CpHT_B_Zee_SL_new[j][0].update(
748 N_SL_B, -0.5, 72.5,
749 std::vector<float>(
750 CpHT_Zee_Barrel_SL,
751 CpHT_Zee_Barrel_SL +
752 sizeof CpHT_Zee_Barrel_SL / sizeof CpHT_Zee_Barrel_SL[0]));
753 m_CpHT_B_Zee_SL_new[j][1].update(
754 N_SL_EA, -0.5, 95.5,
755 std::vector<float>(
756 CpHT_Zee_EndcapA_SL,
757 CpHT_Zee_EndcapA_SL +
758 sizeof CpHT_Zee_EndcapA_SL / sizeof CpHT_Zee_EndcapA_SL[0]));
759 m_CpHT_B_Zee_SL_new[j][2].update(
760 N_SL_EB, -0.5, 63.5,
761 std::vector<float>(
762 CpHT_Zee_EndcapB_SL,
763 CpHT_Zee_EndcapB_SL +
764 sizeof CpHT_Zee_EndcapB_SL / sizeof CpHT_Zee_EndcapB_SL[0]));
765
766 m_CpHT_B_Zmm_SL_new[j][0].update(
767 N_SL_B, -0.5, 72.5,
768 std::vector<float>(
769 CpHT_Zmm_Barrel_SL,
770 CpHT_Zmm_Barrel_SL +
771 sizeof CpHT_Zmm_Barrel_SL / sizeof CpHT_Zmm_Barrel_SL[0]));
772 m_CpHT_B_Zmm_SL_new[j][1].update(
773 N_SL_EA, -0.5, 95.5,
774 std::vector<float>(
775 CpHT_Zmm_EndcapA_SL,
776 CpHT_Zmm_EndcapA_SL +
777 sizeof CpHT_Zmm_EndcapA_SL / sizeof CpHT_Zmm_EndcapA_SL[0]));
778 m_CpHT_B_Zmm_SL_new[j][2].update(
779 N_SL_EB, -0.5, 63.5,
780 std::vector<float>(
781 CpHT_Zmm_EndcapB_SL,
782 CpHT_Zmm_EndcapB_SL +
783 sizeof CpHT_Zmm_EndcapB_SL / sizeof CpHT_Zmm_EndcapB_SL[0]));
784
785 m_CpHT_B_Zee_ZR_new[j][0].update(
786 N_ZR_B, 0.0, 720.0,
787 std::vector<float>(
788 CpHT_Zee_Barrel_ZR,
789 CpHT_Zee_Barrel_ZR +
790 sizeof CpHT_Zee_Barrel_ZR / sizeof CpHT_Zee_Barrel_ZR[0]));
791 m_CpHT_B_Zee_ZR_new[j][1].update(
792 N_ZR_EA, 630.0, 1030.0,
793 std::vector<float>(
794 CpHT_Zee_EndcapA_ZR,
795 CpHT_Zee_EndcapA_ZR +
796 sizeof CpHT_Zee_EndcapA_ZR / sizeof CpHT_Zee_EndcapA_ZR[0]));
797 m_CpHT_B_Zee_ZR_new[j][2].update(
798 N_ZR_EB, 630.0, 1030.0,
799 std::vector<float>(
800 CpHT_Zee_EndcapB_ZR,
801 CpHT_Zee_EndcapB_ZR +
802 sizeof CpHT_Zee_EndcapB_ZR / sizeof CpHT_Zee_EndcapB_ZR[0]));
803
804 m_CpHT_B_Zmm_ZR_new[j][0].update(
805 N_ZR_B, 0.0, 720.0,
806 std::vector<float>(
807 CpHT_Zmm_Barrel_ZR,
808 CpHT_Zmm_Barrel_ZR +
809 sizeof CpHT_Zmm_Barrel_ZR / sizeof CpHT_Zmm_Barrel_ZR[0]));
810 m_CpHT_B_Zmm_ZR_new[j][1].update(
811 N_ZR_EA, 630.0, 1030.0,
812 std::vector<float>(
813 CpHT_Zmm_EndcapA_ZR,
814 CpHT_Zmm_EndcapA_ZR +
815 sizeof CpHT_Zmm_EndcapA_ZR / sizeof CpHT_Zmm_EndcapA_ZR[0]));
816 m_CpHT_B_Zmm_ZR_new[j][2].update(
817 N_ZR_EB, 630.0, 1030.0,
818 std::vector<float>(
819 CpHT_Zmm_EndcapB_ZR,
820 CpHT_Zmm_EndcapB_ZR +
821 sizeof CpHT_Zmm_EndcapB_ZR / sizeof CpHT_Zmm_EndcapB_ZR[0]));
822
823 m_CpHT_B_Zee_TW_new[j][0].update(
824 N_TW_B, 0.0, 2.2,
825 std::vector<float>(
826 CpHT_Zee_Barrel_TW,
827 CpHT_Zee_Barrel_TW +
828 sizeof CpHT_Zee_Barrel_TW / sizeof CpHT_Zee_Barrel_TW[0]));
829 m_CpHT_B_Zee_TW_new[j][1].update(
830 N_TW_EA, 0.0, 2.2,
831 std::vector<float>(
832 CpHT_Zee_EndcapA_TW,
833 CpHT_Zee_EndcapA_TW +
834 sizeof CpHT_Zee_EndcapA_TW / sizeof CpHT_Zee_EndcapA_TW[0]));
835 m_CpHT_B_Zee_TW_new[j][2].update(
836 N_TW_EB, 0.0, 2.2,
837 std::vector<float>(
838 CpHT_Zee_EndcapB_TW,
839 CpHT_Zee_EndcapB_TW +
840 sizeof CpHT_Zee_EndcapB_TW / sizeof CpHT_Zee_EndcapB_TW[0]));
841
842 m_CpHT_B_Zmm_TW_new[j][0].update(
843 N_TW_B, 0.0, 2.2,
844 std::vector<float>(
845 CpHT_Zmm_Barrel_TW,
846 CpHT_Zmm_Barrel_TW +
847 sizeof CpHT_Zmm_Barrel_TW / sizeof CpHT_Zmm_Barrel_TW[0]));
848 m_CpHT_B_Zmm_TW_new[j][1].update(
849 N_TW_EA, 0.0, 2.2,
850 std::vector<float>(
851 CpHT_Zmm_EndcapA_TW,
852 CpHT_Zmm_EndcapA_TW +
853 sizeof CpHT_Zmm_EndcapA_TW / sizeof CpHT_Zmm_EndcapA_TW[0]));
854 m_CpHT_B_Zmm_TW_new[j][2].update(
855 N_TW_EB, 0.0, 2.2,
856 std::vector<float>(
857 CpHT_Zmm_EndcapB_TW,
858 CpHT_Zmm_EndcapB_TW +
859 sizeof CpHT_Zmm_EndcapB_TW / sizeof CpHT_Zmm_EndcapB_TW[0]));
860 }
861}
static constexpr int N_PAR2

Member Data Documentation

◆ m_CpHT_B_Zee_OR_new

StorePIDinfo HTcalculator::m_CpHT_B_Zee_OR_new[N_GAS][N_DET]
private

Definition at line 65 of file HTcalculator.h.

◆ m_CpHT_B_Zee_SL_new

StorePIDinfo HTcalculator::m_CpHT_B_Zee_SL_new[N_GAS][N_DET]
private

Definition at line 56 of file HTcalculator.h.

◆ m_CpHT_B_Zee_TW_new

StorePIDinfo HTcalculator::m_CpHT_B_Zee_TW_new[N_GAS][N_DET]
private

Definition at line 62 of file HTcalculator.h.

◆ m_CpHT_B_Zee_ZR_new

StorePIDinfo HTcalculator::m_CpHT_B_Zee_ZR_new[N_GAS][N_DET]
private

Definition at line 59 of file HTcalculator.h.

◆ m_CpHT_B_Zmm_OR_new

StorePIDinfo HTcalculator::m_CpHT_B_Zmm_OR_new[N_GAS][N_DET]
private

Definition at line 66 of file HTcalculator.h.

◆ m_CpHT_B_Zmm_SL_new

StorePIDinfo HTcalculator::m_CpHT_B_Zmm_SL_new[N_GAS][N_DET]
private

Definition at line 57 of file HTcalculator.h.

◆ m_CpHT_B_Zmm_TW_new

StorePIDinfo HTcalculator::m_CpHT_B_Zmm_TW_new[N_GAS][N_DET]
private

Definition at line 63 of file HTcalculator.h.

◆ m_CpHT_B_Zmm_ZR_new

StorePIDinfo HTcalculator::m_CpHT_B_Zmm_ZR_new[N_GAS][N_DET]
private

Definition at line 60 of file HTcalculator.h.

◆ m_par_pHTvsPGOG_new

StorePIDinfo HTcalculator::m_par_pHTvsPGOG_new[N_GAS][N_DET]
private

Definition at line 53 of file HTcalculator.h.

◆ N_DET

int HTcalculator::N_DET = 3
staticconstexprprivate

Definition at line 50 of file HTcalculator.h.

◆ N_GAS

int HTcalculator::N_GAS = 3
staticconstexprprivate

Definition at line 49 of file HTcalculator.h.

◆ N_PAR2

int HTcalculator::N_PAR2 = 10
staticconstexprprivate

Definition at line 51 of file HTcalculator.h.

◆ SIZE_OF_BLOB

int HTcalculator::SIZE_OF_BLOB = sizeof(float) * ((N_PAR2 * N_DET))
staticconstexprprivate

Definition at line 69 of file HTcalculator.h.

◆ SIZE_OF_HEADER

int HTcalculator::SIZE_OF_HEADER = sizeof(float) * 4
staticconstexprprivate

Definition at line 68 of file HTcalculator.h.


The documentation for this class was generated from the following files: