| 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 |