GCC Code Coverage Report


Directory: ./
File: src/event/data/sadc.cc
Date: 2025-09-01 06:19:01
Exec Total Coverage
Lines: 2 225 0.9%
Functions: 1 65 1.5%
Branches: 0 23 0.0%

Line Branch Exec Source
1 /**\file
2 * \brief Declarations for hits data on SADC managed detectors.
3 *
4 * The NA64/NA58 standard sampling ADC chip (SADC) performs sampling
5 * analog-to-digital conversion of many detectors signals. Once triggered, it
6 * measures the voltage on its input 16 times with time interval of 25ns.
7 * In NA64 DAQ a pair of chips are always enabled in parallel at a single
8 * channel with phase shift of ~12.5ns providing 32 samples with 12.5ns
9 * interval. Each chip has its own zero, but measurement scale is expected
10 * to be the same for both.
11 *
12 * \author Alexey Shevelev
13 * \author Renat Dusaev
14 *
15 * \warning This is a file generated for event's data structure.
16 * \note Generated at 14/08/2025 23:52:56 with template utils/evstruct/templates/cpp/impl.cc
17 * \version 0.1
18 */
19
20
21 #include "na64event/data/sadc.hh"
22
23 #include "na64event/data/sadc.hh"
24
25 #include "na64event/data/sadc.hh"
26
27 #include "na64event/data/sadc.hh"
28
29 #include "na64event/data/sadc.hh"
30
31 #include "na64event/data/sadc.hh"
32
33 #include "na64event/data/sadc.hh"
34
35 #include "na64event/data/sadc.hh"
36
37 #include <cmath>
38 #include "na64event/reset-values.hh"
39
40 namespace na64dp {
41
42
43
44
45
46
47
48
49
50 namespace event {
51 MSADCPeak::MSADCPeak( LocalMemory & lmem )
52
53 {}
54 } // namespace ::event::na64dp
55
56
57
58
59
60 namespace event {
61 WBWaveform::WBWaveform( LocalMemory & lmem )
62 : wave(lmem)
63
64 {}
65 } // namespace ::event::na64dp
66
67
68
69 namespace event {
70 RawDataSADC::RawDataSADC( LocalMemory & lmem )
71 : maxima(lmem)
72
73 {}
74 } // namespace ::event::na64dp
75
76
77
78 namespace event {
79 10 SADCHit::SADCHit( LocalMemory & lmem )
80
81 10 {}
82 } // namespace ::event::na64dp
83
84
85
86
87 namespace util {
88 void reset( event::MoyalSADCWfFitParameters & obj ) {
89 using namespace event;
90
91 ::na64dp::util::reset(obj.mu);
92
93 ::na64dp::util::reset(obj.sigma);
94
95 ::na64dp::util::reset(obj.S);
96
97 ::na64dp::util::reset(obj.interval);
98
99 }
100 } // namespace ::na64dp::util
101
102 namespace util {
103 void reset( event::GaussianSADCFitParameters & obj ) {
104 using namespace event;
105
106 ::na64dp::util::reset(obj.mu);
107
108 ::na64dp::util::reset(obj.sigma);
109
110 ::na64dp::util::reset(obj.S);
111
112 ::na64dp::util::reset(obj.interval);
113
114 }
115 } // namespace ::na64dp::util
116
117 namespace util {
118 void reset( event::MSADCDFFTCoefficients & obj ) {
119 using namespace event;
120
121 ::na64dp::util::reset(obj.real);
122
123 ::na64dp::util::reset(obj.imag);
124
125 }
126 } // namespace ::na64dp::util
127
128 namespace util {
129 void reset( event::MSADCPeak & obj ) {
130 using namespace event;
131
132 ::na64dp::util::reset(obj.time);
133
134 ::na64dp::util::reset(obj.timeErr);
135
136 ::na64dp::util::reset(obj.timeClusterLabel);
137
138 ::na64dp::util::reset(obj.amp);
139
140 ::na64dp::util::reset(obj.ampErr);
141
142 ::na64dp::util::reset(obj.sumCoarse);
143
144 ::na64dp::util::reset(obj.sumFine);
145
146 ::na64dp::util::reset(obj.sumFineErr);
147
148 ::na64dp::util::reset(obj.eDep);
149
150 ::na64dp::util::reset(obj.eDepErr);
151
152 ::na64dp::util::reset(obj.chi2);
153
154 ::na64dp::util::reset(obj.ndf);
155
156 ::na64dp::util::reset(obj.lastFitStatusCode);
157
158 ::na64dp::util::reset(obj.moyalFit);
159
160 }
161 } // namespace ::na64dp::util
162
163 namespace util {
164 void reset( event::MSADCWaveform & obj ) {
165 using namespace event;
166
167 ::na64dp::util::reset(obj.wave);
168
169 ::na64dp::util::reset(obj.pedestals);
170
171 }
172 } // namespace ::na64dp::util
173
174 namespace util {
175 void reset( event::WBWaveform & obj ) {
176 using namespace event;
177
178 ::na64dp::util::reset(obj.samplingTime);
179
180 ::na64dp::util::reset(obj.baseline);
181
182 obj.wave.clear();
183 }
184 } // namespace ::na64dp::util
185
186 namespace util {
187 void reset( event::RawDataSADC & obj ) {
188 using namespace event;
189
190 ::na64dp::util::reset(obj.fft);
191
192 ::na64dp::util::reset(obj.sum);
193
194 ::na64dp::util::reset(obj.maxSample);
195
196 ::na64dp::util::reset(obj.maxAmp);
197
198 ::na64dp::util::reset(obj.maxAmpError);
199
200 ::na64dp::util::reset(obj.canBeZero);
201
202 ::na64dp::util::reset(obj.ledCorr);
203
204 ::na64dp::util::reset(obj.calibCoeff);
205
206 ::na64dp::util::reset(obj.ampThreshold);
207
208 ::na64dp::util::reset(obj.samples);
209
210 obj.maxima.clear();
211 }
212 } // namespace ::na64dp::util
213
214 namespace util {
215 void reset( event::SADCHit & obj ) {
216 using namespace event;
217
218 ::na64dp::util::reset(obj.rawData);
219
220 ::na64dp::util::reset(obj.eDep);
221
222 ::na64dp::util::reset(obj.eDepError);
223
224 ::na64dp::util::reset(obj.time);
225
226 ::na64dp::util::reset(obj.timeError);
227
228 }
229 } // namespace ::na64dp::util
230
231
232 namespace event {
233
234
235
236
237 static StdFloat_t _MoyalSADCWfFitParameters_get_mu( const MoyalSADCWfFitParameters & obj ) {
238 return static_cast<StdFloat_t>(obj.mu); // simple value
239 }
240 static StdFloat_t _MoyalSADCWfFitParameters_get_sigma( const MoyalSADCWfFitParameters & obj ) {
241 return static_cast<StdFloat_t>(obj.sigma); // simple value
242 }
243 static StdFloat_t _MoyalSADCWfFitParameters_get_S( const MoyalSADCWfFitParameters & obj ) {
244 return static_cast<StdFloat_t>(obj.S); // simple value
245 }
246 // getter for MoyalSADCWfFitParameters::interval disabled
247
248
249
250 const Traits<MoyalSADCWfFitParameters>::Getters
251 Traits<MoyalSADCWfFitParameters>::getters = {
252
253 { "mu", { "Centers of peaks", _MoyalSADCWfFitParameters_get_mu } },
254 { "sigma", { "Widths of peaks", _MoyalSADCWfFitParameters_get_sigma } },
255 { "S", { "Scaling factor", _MoyalSADCWfFitParameters_get_S } },
256
257 // getter for MoyalSADCWfFitParameters::interval disabled
258
259
260 };
261
262
263
264
265 static StdFloat_t _GaussianSADCFitParameters_get_mu( const GaussianSADCFitParameters & obj ) {
266 return static_cast<StdFloat_t>(obj.mu); // simple value
267 }
268 static StdFloat_t _GaussianSADCFitParameters_get_sigma( const GaussianSADCFitParameters & obj ) {
269 return static_cast<StdFloat_t>(obj.sigma); // simple value
270 }
271 static StdFloat_t _GaussianSADCFitParameters_get_S( const GaussianSADCFitParameters & obj ) {
272 return static_cast<StdFloat_t>(obj.S); // simple value
273 }
274 // getter for GaussianSADCFitParameters::interval disabled
275
276
277
278 const Traits<GaussianSADCFitParameters>::Getters
279 Traits<GaussianSADCFitParameters>::getters = {
280
281 { "mu", { "Centers of peaks", _GaussianSADCFitParameters_get_mu } },
282 { "sigma", { "Widths of peaks", _GaussianSADCFitParameters_get_sigma } },
283 { "S", { "Scaling factor", _GaussianSADCFitParameters_get_S } },
284
285 // getter for GaussianSADCFitParameters::interval disabled
286
287
288 };
289
290
291
292
293 // getter for MSADCDFFTCoefficients::real disabled
294 // getter for MSADCDFFTCoefficients::imag disabled
295
296
297
298 const Traits<MSADCDFFTCoefficients>::Getters
299 Traits<MSADCDFFTCoefficients>::getters = {
300
301
302 // getter for MSADCDFFTCoefficients::real disabled
303
304 // getter for MSADCDFFTCoefficients::imag disabled
305
306
307 };
308
309
310
311
312 static StdFloat_t _MSADCPeak_get_time( const MSADCPeak & obj ) {
313 return static_cast<StdFloat_t>(obj.time); // simple value
314 }
315 static StdFloat_t _MSADCPeak_get_timeErr( const MSADCPeak & obj ) {
316 return static_cast<StdFloat_t>(obj.timeErr); // simple value
317 }
318 static StdFloat_t _MSADCPeak_get_timeClusterLabel( const MSADCPeak & obj ) {
319 return static_cast<StdFloat_t>(obj.timeClusterLabel); // simple value
320 }
321 static StdFloat_t _MSADCPeak_get_amp( const MSADCPeak & obj ) {
322 return static_cast<StdFloat_t>(obj.amp); // simple value
323 }
324 static StdFloat_t _MSADCPeak_get_ampErr( const MSADCPeak & obj ) {
325 return static_cast<StdFloat_t>(obj.ampErr); // simple value
326 }
327 static StdFloat_t _MSADCPeak_get_sumCoarse( const MSADCPeak & obj ) {
328 return static_cast<StdFloat_t>(obj.sumCoarse); // simple value
329 }
330 static StdFloat_t _MSADCPeak_get_sumFine( const MSADCPeak & obj ) {
331 return static_cast<StdFloat_t>(obj.sumFine); // simple value
332 }
333 static StdFloat_t _MSADCPeak_get_sumFineErr( const MSADCPeak & obj ) {
334 return static_cast<StdFloat_t>(obj.sumFineErr); // simple value
335 }
336 static StdFloat_t _MSADCPeak_get_eDep( const MSADCPeak & obj ) {
337 return static_cast<StdFloat_t>(obj.eDep); // simple value
338 }
339 static StdFloat_t _MSADCPeak_get_eDepErr( const MSADCPeak & obj ) {
340 return static_cast<StdFloat_t>(obj.eDepErr); // simple value
341 }
342 static StdFloat_t _MSADCPeak_get_chi2( const MSADCPeak & obj ) {
343 return static_cast<StdFloat_t>(obj.chi2); // simple value
344 }
345 static StdFloat_t _MSADCPeak_get_ndf( const MSADCPeak & obj ) {
346 return static_cast<StdFloat_t>(obj.ndf); // simple value
347 }
348 static StdFloat_t _MSADCPeak_get_lastFitStatusCode( const MSADCPeak & obj ) {
349 return static_cast<StdFloat_t>(obj.lastFitStatusCode); // simple value
350 }
351
352
353 // propagated from / moyalFit:mem::Ref<MoyalSADCWfFitParameters> / mu:float
354 static StdFloat_t _MSADCPeak_get_moyalFit_mu( const MSADCPeak & obj_ ) {
355 if(!obj_.moyalFit) return std::nan("0");
356 const auto & moyalFit = *obj_.moyalFit;
357 const auto & obj = moyalFit;
358
359 return static_cast<StdFloat_t>(obj.mu); // simple value
360
361 }
362
363 // propagated from / moyalFit:mem::Ref<MoyalSADCWfFitParameters> / sigma:float
364 static StdFloat_t _MSADCPeak_get_moyalFit_sigma( const MSADCPeak & obj_ ) {
365 if(!obj_.moyalFit) return std::nan("0");
366 const auto & moyalFit = *obj_.moyalFit;
367 const auto & obj = moyalFit;
368
369 return static_cast<StdFloat_t>(obj.sigma); // simple value
370
371 }
372
373 // propagated from / moyalFit:mem::Ref<MoyalSADCWfFitParameters> / S:float
374 static StdFloat_t _MSADCPeak_get_moyalFit_S( const MSADCPeak & obj_ ) {
375 if(!obj_.moyalFit) return std::nan("0");
376 const auto & moyalFit = *obj_.moyalFit;
377 const auto & obj = moyalFit;
378
379 return static_cast<StdFloat_t>(obj.S); // simple value
380
381 }
382
383 // no std getter for MSADCPeak/moyalFit/interval
384
385
386
387 static StdFloat_t _MSADCPeak_get_sqRatio( const MSADCPeak & obj ) { return obj.sumCoarse / obj.sumFine; }
388
389
390 const Traits<MSADCPeak>::Getters
391 Traits<MSADCPeak>::getters = {
392
393 { "time", { "Waveform peak\u0027s time estimate", _MSADCPeak_get_time } },
394 { "timeErr", { "Waveform peak\u0027s time estimate error", _MSADCPeak_get_timeErr } },
395 { "timeClusterLabel", { "Waveform max time cluster label", _MSADCPeak_get_timeClusterLabel } },
396 { "amp", { "Waveform peak\u0027s amp/square estimate", _MSADCPeak_get_amp } },
397 { "ampErr", { "Waveform peak\u0027s amp/square estimate error", _MSADCPeak_get_ampErr } },
398 { "sumCoarse", { "Waveform peak\u0027s coarse integral estimate (usually, by interpolation)", _MSADCPeak_get_sumCoarse } },
399 { "sumFine", { "Waveform peak\u0027s fine integral estimate (usually, by fitting with model)", _MSADCPeak_get_sumFine } },
400 { "sumFineErr", { "Waveform peak\u0027s fine integral estimate error", _MSADCPeak_get_sumFineErr } },
401 { "eDep", { "Energy estimate for this pulse", _MSADCPeak_get_eDep } },
402 { "eDepErr", { "Error of energy estimate for this pulse", _MSADCPeak_get_eDepErr } },
403 { "chi2", { "Peak fitting chi2", _MSADCPeak_get_chi2 } },
404 { "ndf", { "Peak fitting NDF", _MSADCPeak_get_ndf } },
405 { "lastFitStatusCode", { "Encoded fit status (contextual).", _MSADCPeak_get_lastFitStatusCode } },
406
407
408 // propagated from / moyalFit:mem::Ref<MoyalSADCWfFitParameters> / mu:float
409 { "moyalFit.mu", { "Centers of peaks", _MSADCPeak_get_moyalFit_mu } },
410 // propagated from / moyalFit:mem::Ref<MoyalSADCWfFitParameters> / sigma:float
411 { "moyalFit.sigma", { "Widths of peaks", _MSADCPeak_get_moyalFit_sigma } },
412 // propagated from / moyalFit:mem::Ref<MoyalSADCWfFitParameters> / S:float
413 { "moyalFit.S", { "Scaling factor", _MSADCPeak_get_moyalFit_S } },
414 // no std getter for MSADCPeak/moyalFit/interval
415
416
417
418 { "sqRatio", { "Ratio b/w coarse and fine integral estimates", _MSADCPeak_get_sqRatio } },
419
420 };
421
422
423
424
425 // getter for MSADCWaveform::wave disabled
426 // getter for MSADCWaveform::pedestals disabled
427
428
429
430 const Traits<MSADCWaveform>::Getters
431 Traits<MSADCWaveform>::getters = {
432
433
434 // getter for MSADCWaveform::wave disabled
435
436 // getter for MSADCWaveform::pedestals disabled
437
438
439 };
440
441
442
443
444 static StdFloat_t _WBWaveform_get_samplingTime( const WBWaveform & obj ) {
445 return static_cast<StdFloat_t>(obj.samplingTime); // simple value
446 }
447 static StdFloat_t _WBWaveform_get_baseline( const WBWaveform & obj ) {
448 return static_cast<StdFloat_t>(obj.baseline); // simple value
449 }
450 // getter for WBWaveform::wave disabled
451
452
453
454 const Traits<WBWaveform>::Getters
455 Traits<WBWaveform>::getters = {
456
457 { "samplingTime", { "ns per sample", _WBWaveform_get_samplingTime } },
458 { "baseline", { "baseline value for", _WBWaveform_get_baseline } },
459
460 // getter for WBWaveform::wave disabled
461
462
463 };
464
465
466
467
468
469
470 // no std getter for RawDataSADC/fft/real
471 // no std getter for RawDataSADC/fft/imag
472
473
474 static StdFloat_t _RawDataSADC_get_sum( const RawDataSADC & obj ) {
475 return static_cast<StdFloat_t>(obj.sum); // simple value
476 }
477 static StdFloat_t _RawDataSADC_get_maxSample( const RawDataSADC & obj ) {
478 return static_cast<StdFloat_t>(obj.maxSample); // simple value
479 }
480 static StdFloat_t _RawDataSADC_get_maxAmp( const RawDataSADC & obj ) {
481 return static_cast<StdFloat_t>(obj.maxAmp); // simple value
482 }
483 static StdFloat_t _RawDataSADC_get_maxAmpError( const RawDataSADC & obj ) {
484 return static_cast<StdFloat_t>(obj.maxAmpError); // simple value
485 }
486 static StdFloat_t _RawDataSADC_get_canBeZero( const RawDataSADC & obj ) {
487 return static_cast<StdFloat_t>(obj.canBeZero); // simple value
488 }
489 static StdFloat_t _RawDataSADC_get_ledCorr( const RawDataSADC & obj ) {
490 return static_cast<StdFloat_t>(obj.ledCorr); // simple value
491 }
492 static StdFloat_t _RawDataSADC_get_calibCoeff( const RawDataSADC & obj ) {
493 return static_cast<StdFloat_t>(obj.calibCoeff); // simple value
494 }
495 static StdFloat_t _RawDataSADC_get_ampThreshold( const RawDataSADC & obj ) {
496 return static_cast<StdFloat_t>(obj.ampThreshold); // simple value
497 }
498 // getter for RawDataSADC::samples disabled
499 // getter for RawDataSADC::maxima disabled
500
501 static StdFloat_t _RawDataSADC_get_nSamples( const RawDataSADC & obj ) { if(std::holds_alternative<mem::Ref<MSADCWaveform>>(obj.samples))
502 return sizeof(event::MSADCWaveform::wave)/sizeof(event::MSADCWaveform::wave[0]);
503 else if(std::holds_alternative<mem::Ref<event::WBWaveform>>(obj.samples))
504 return std::get<mem::Ref<event::WBWaveform>>(obj.samples)->wave.size();
505 return 0;
506 }
507 static StdFloat_t _RawDataSADC_get_pedestalEven( const RawDataSADC & obj ) { if(std::holds_alternative<mem::Ref<MSADCWaveform>>(obj.samples))
508 return std::get<mem::Ref<MSADCWaveform>>(obj.samples)->pedestals[0];
509 return 0;
510 }
511 static StdFloat_t _RawDataSADC_get_pedestalOdd( const RawDataSADC & obj ) { if(std::holds_alternative<mem::Ref<MSADCWaveform>>(obj.samples))
512 return std::get<mem::Ref<MSADCWaveform>>(obj.samples)->pedestals[1];
513 return 0;
514 }
515 static StdFloat_t _RawDataSADC_get_chargeVsMaxAmpRatio( const RawDataSADC & obj ) { return obj.sum / obj.maxAmp; }
516
517
518 const Traits<RawDataSADC>::Getters
519 Traits<RawDataSADC>::getters = {
520
521
522
523 // no std getter for RawDataSADC/fft/real
524 // no std getter for RawDataSADC/fft/imag
525
526
527 { "sum", { "Computed sum of the waveform, number of channels", _RawDataSADC_get_sum } },
528 { "maxSample", { "Number of waveform\u0027s sample considered as global maximum.", _RawDataSADC_get_maxSample } },
529 { "maxAmp", { "Maximum of the waveform in raw SADC units.", _RawDataSADC_get_maxAmp } },
530 { "maxAmpError", { "Error of the waveform amplitude max. in raw SADC units.", _RawDataSADC_get_maxAmpError } },
531 { "canBeZero", { "Zero probability measure (0-1)", _RawDataSADC_get_canBeZero } },
532 { "ledCorr", { "Correction by LED in use, ratio", _RawDataSADC_get_ledCorr } },
533 { "calibCoeff", { "Calibration coefficient in use, chan/MeV", _RawDataSADC_get_calibCoeff } },
534 { "ampThreshold", { "Peak-selection threshold, chan", _RawDataSADC_get_ampThreshold } },
535
536 // getter for RawDataSADC::samples disabled
537
538 // getter for RawDataSADC::maxima disabled
539
540 { "nSamples", { "Returns number of samples kept; returns zero on failure", _RawDataSADC_get_nSamples } },
541 { "pedestalEven", { "Returns even pedestal value (for sample 0, 2, 4 ...)", _RawDataSADC_get_pedestalEven } },
542 { "pedestalOdd", { "Returns odd pedestal value (for sample 1, 3, 5 ...)", _RawDataSADC_get_pedestalOdd } },
543 { "chargeVsMaxAmpRatio", { "Calculates ratio between sum and max. amplitude", _RawDataSADC_get_chargeVsMaxAmpRatio } },
544
545 };
546
547
548
549
550
551
552
553
554 // no std getter for SADCHit/rawData/fft/real
555 // no std getter for SADCHit/rawData/fft/imag
556
557
558 // propagated from / rawData:mem::Ref<RawDataSADC> / sum:StdFloat_t
559 static StdFloat_t _SADCHit_get_rawData_sum( const SADCHit & obj_ ) {
560 if(!obj_.rawData) return std::nan("0");
561 const auto & rawData = *obj_.rawData;
562 const auto & obj = rawData;
563
564 return static_cast<StdFloat_t>(obj.sum); // simple value
565
566 }
567
568 // propagated from / rawData:mem::Ref<RawDataSADC> / maxSample:uint16_t
569 static StdFloat_t _SADCHit_get_rawData_maxSample( const SADCHit & obj_ ) {
570 if(!obj_.rawData) return std::nan("0");
571 const auto & rawData = *obj_.rawData;
572 const auto & obj = rawData;
573
574 return static_cast<StdFloat_t>(obj.maxSample); // simple value
575
576 }
577
578 // propagated from / rawData:mem::Ref<RawDataSADC> / maxAmp:StdFloat_t
579 static StdFloat_t _SADCHit_get_rawData_maxAmp( const SADCHit & obj_ ) {
580 if(!obj_.rawData) return std::nan("0");
581 const auto & rawData = *obj_.rawData;
582 const auto & obj = rawData;
583
584 return static_cast<StdFloat_t>(obj.maxAmp); // simple value
585
586 }
587
588 // propagated from / rawData:mem::Ref<RawDataSADC> / maxAmpError:StdFloat_t
589 static StdFloat_t _SADCHit_get_rawData_maxAmpError( const SADCHit & obj_ ) {
590 if(!obj_.rawData) return std::nan("0");
591 const auto & rawData = *obj_.rawData;
592 const auto & obj = rawData;
593
594 return static_cast<StdFloat_t>(obj.maxAmpError); // simple value
595
596 }
597
598 // propagated from / rawData:mem::Ref<RawDataSADC> / canBeZero:StdFloat_t
599 static StdFloat_t _SADCHit_get_rawData_canBeZero( const SADCHit & obj_ ) {
600 if(!obj_.rawData) return std::nan("0");
601 const auto & rawData = *obj_.rawData;
602 const auto & obj = rawData;
603
604 return static_cast<StdFloat_t>(obj.canBeZero); // simple value
605
606 }
607
608 // propagated from / rawData:mem::Ref<RawDataSADC> / ledCorr:StdFloat_t
609 static StdFloat_t _SADCHit_get_rawData_ledCorr( const SADCHit & obj_ ) {
610 if(!obj_.rawData) return std::nan("0");
611 const auto & rawData = *obj_.rawData;
612 const auto & obj = rawData;
613
614 return static_cast<StdFloat_t>(obj.ledCorr); // simple value
615
616 }
617
618 // propagated from / rawData:mem::Ref<RawDataSADC> / calibCoeff:StdFloat_t
619 static StdFloat_t _SADCHit_get_rawData_calibCoeff( const SADCHit & obj_ ) {
620 if(!obj_.rawData) return std::nan("0");
621 const auto & rawData = *obj_.rawData;
622 const auto & obj = rawData;
623
624 return static_cast<StdFloat_t>(obj.calibCoeff); // simple value
625
626 }
627
628 // propagated from / rawData:mem::Ref<RawDataSADC> / ampThreshold:StdFloat_t
629 static StdFloat_t _SADCHit_get_rawData_ampThreshold( const SADCHit & obj_ ) {
630 if(!obj_.rawData) return std::nan("0");
631 const auto & rawData = *obj_.rawData;
632 const auto & obj = rawData;
633
634 return static_cast<StdFloat_t>(obj.ampThreshold); // simple value
635
636 }
637
638 // no std getter for SADCHit/rawData/samples
639 // no std getter for SADCHit/rawData/maxima
640
641 // propagated from / rawData:mem::Ref<RawDataSADC> / nSamples:
642 static StdFloat_t _SADCHit_get_rawData_nSamples( const SADCHit & obj_ ) {
643 if(!obj_.rawData) return std::nan("0");
644 const auto & rawData = *obj_.rawData;
645 const auto & obj = rawData;
646 if(std::holds_alternative<mem::Ref<MSADCWaveform>>(obj.samples))
647 return sizeof(event::MSADCWaveform::wave)/sizeof(event::MSADCWaveform::wave[0]);
648 else if(std::holds_alternative<mem::Ref<event::WBWaveform>>(obj.samples))
649 return std::get<mem::Ref<event::WBWaveform>>(obj.samples)->wave.size();
650 return 0;
651 // custom getter
652 }
653 // propagated from / rawData:mem::Ref<RawDataSADC> / pedestalEven:
654 static StdFloat_t _SADCHit_get_rawData_pedestalEven( const SADCHit & obj_ ) {
655 if(!obj_.rawData) return std::nan("0");
656 const auto & rawData = *obj_.rawData;
657 const auto & obj = rawData;
658 if(std::holds_alternative<mem::Ref<MSADCWaveform>>(obj.samples))
659 return std::get<mem::Ref<MSADCWaveform>>(obj.samples)->pedestals[0];
660 return 0;
661 // custom getter
662 }
663 // propagated from / rawData:mem::Ref<RawDataSADC> / pedestalOdd:
664 static StdFloat_t _SADCHit_get_rawData_pedestalOdd( const SADCHit & obj_ ) {
665 if(!obj_.rawData) return std::nan("0");
666 const auto & rawData = *obj_.rawData;
667 const auto & obj = rawData;
668 if(std::holds_alternative<mem::Ref<MSADCWaveform>>(obj.samples))
669 return std::get<mem::Ref<MSADCWaveform>>(obj.samples)->pedestals[1];
670 return 0;
671 // custom getter
672 }
673 // propagated from / rawData:mem::Ref<RawDataSADC> / chargeVsMaxAmpRatio:
674 static StdFloat_t _SADCHit_get_rawData_chargeVsMaxAmpRatio( const SADCHit & obj_ ) {
675 if(!obj_.rawData) return std::nan("0");
676 const auto & rawData = *obj_.rawData;
677 const auto & obj = rawData;
678 return obj.sum / obj.maxAmp; // custom getter
679 }
680
681 static StdFloat_t _SADCHit_get_eDep( const SADCHit & obj ) {
682 return static_cast<StdFloat_t>(obj.eDep); // simple value
683 }
684 static StdFloat_t _SADCHit_get_eDepError( const SADCHit & obj ) {
685 return static_cast<StdFloat_t>(obj.eDepError); // simple value
686 }
687 static StdFloat_t _SADCHit_get_time( const SADCHit & obj ) {
688 return static_cast<StdFloat_t>(obj.time); // simple value
689 }
690 static StdFloat_t _SADCHit_get_timeError( const SADCHit & obj ) {
691 return static_cast<StdFloat_t>(obj.timeError); // simple value
692 }
693
694
695
696 const Traits<SADCHit>::Getters
697 Traits<SADCHit>::getters = {
698
699
700
701
702
703 // no std getter for SADCHit/rawData/fft/real
704 // no std getter for SADCHit/rawData/fft/imag
705
706
707 // propagated from / rawData:mem::Ref<RawDataSADC> / sum:StdFloat_t
708 { "rawData.sum", { "Computed sum of the waveform, number of channels", _SADCHit_get_rawData_sum } },
709 // propagated from / rawData:mem::Ref<RawDataSADC> / maxSample:uint16_t
710 { "rawData.maxSample", { "Number of waveform\u0027s sample considered as global maximum.", _SADCHit_get_rawData_maxSample } },
711 // propagated from / rawData:mem::Ref<RawDataSADC> / maxAmp:StdFloat_t
712 { "rawData.maxAmp", { "Maximum of the waveform in raw SADC units.", _SADCHit_get_rawData_maxAmp } },
713 // propagated from / rawData:mem::Ref<RawDataSADC> / maxAmpError:StdFloat_t
714 { "rawData.maxAmpError", { "Error of the waveform amplitude max. in raw SADC units.", _SADCHit_get_rawData_maxAmpError } },
715 // propagated from / rawData:mem::Ref<RawDataSADC> / canBeZero:StdFloat_t
716 { "rawData.canBeZero", { "Zero probability measure (0-1)", _SADCHit_get_rawData_canBeZero } },
717 // propagated from / rawData:mem::Ref<RawDataSADC> / ledCorr:StdFloat_t
718 { "rawData.ledCorr", { "Correction by LED in use, ratio", _SADCHit_get_rawData_ledCorr } },
719 // propagated from / rawData:mem::Ref<RawDataSADC> / calibCoeff:StdFloat_t
720 { "rawData.calibCoeff", { "Calibration coefficient in use, chan/MeV", _SADCHit_get_rawData_calibCoeff } },
721 // propagated from / rawData:mem::Ref<RawDataSADC> / ampThreshold:StdFloat_t
722 { "rawData.ampThreshold", { "Peak-selection threshold, chan", _SADCHit_get_rawData_ampThreshold } },
723 // no std getter for SADCHit/rawData/samples
724 // no std getter for SADCHit/rawData/maxima
725
726 // propagated from / rawData:mem::Ref<RawDataSADC> / nSamples:
727 { "rawData.nSamples", { "propagated from / rawData:mem::Ref\u003cRawDataSADC\u003e / nSamples:", _SADCHit_get_rawData_nSamples } },
728 // propagated from / rawData:mem::Ref<RawDataSADC> / pedestalEven:
729 { "rawData.pedestalEven", { "propagated from / rawData:mem::Ref\u003cRawDataSADC\u003e / pedestalEven:", _SADCHit_get_rawData_pedestalEven } },
730 // propagated from / rawData:mem::Ref<RawDataSADC> / pedestalOdd:
731 { "rawData.pedestalOdd", { "propagated from / rawData:mem::Ref\u003cRawDataSADC\u003e / pedestalOdd:", _SADCHit_get_rawData_pedestalOdd } },
732 // propagated from / rawData:mem::Ref<RawDataSADC> / chargeVsMaxAmpRatio:
733 { "rawData.chargeVsMaxAmpRatio", { "propagated from / rawData:mem::Ref\u003cRawDataSADC\u003e / chargeVsMaxAmpRatio:", _SADCHit_get_rawData_chargeVsMaxAmpRatio } },
734
735 { "eDep", { "Reconstructed energy deposition, MeV.", _SADCHit_get_eDep } },
736 { "eDepError", { "Error estimation of reconstructed energy deposition (sigma), MeV", _SADCHit_get_eDepError } },
737 { "time", { "Reconstructed time of hit, nanoseconds", _SADCHit_get_time } },
738 { "timeError", { "Estimateion of reconstructed time error (sigma), nanoseconds", _SADCHit_get_timeError } },
739
740
741 };
742
743
744
745 } // namespace ::na64dp::event
746 } // namespace na64dp
747