File indexing completed on 2024-04-06 12:02:09
0001 #ifndef CondFormats_EcalObjects_EcalMultifitConditionsSoA_h
0002 #define CondFormats_EcalObjects_EcalMultifitConditionsSoA_h
0003
0004 #include <array>
0005 #include <Eigen/Dense>
0006 #include "DataFormats/SoATemplate/interface/SoACommon.h"
0007 #include "DataFormats/SoATemplate/interface/SoALayout.h"
0008 #include "DataFormats/SoATemplate/interface/SoAView.h"
0009 #include "DataFormats/EcalDigi/interface/EcalConstants.h"
0010 #include "CondFormats/EcalObjects/interface/EcalPulseShapes.h"
0011
0012 using PulseShapeArray = std::array<float, EcalPulseShape::TEMPLATESAMPLES>;
0013 using SampleCorrelationArray = std::array<double, ecalPh1::sampleSize>;
0014
0015 using CovarianceMatrix = Eigen::Matrix<float, EcalPulseShape::TEMPLATESAMPLES, EcalPulseShape::TEMPLATESAMPLES>;
0016
0017 constexpr size_t kMaxTimeBiasCorrectionBinsEB = 71;
0018 constexpr size_t kMaxTimeBiasCorrectionBinsEE = 58;
0019 using TimeBiasCorrArrayEB = std::array<float, kMaxTimeBiasCorrectionBinsEB>;
0020 using TimeBiasCorrArrayEE = std::array<float, kMaxTimeBiasCorrectionBinsEE>;
0021
0022 GENERATE_SOA_LAYOUT(EcalMultifitConditionsSoALayout,
0023 SOA_COLUMN(uint32_t, rawid),
0024 SOA_COLUMN(float, pedestals_mean_x12),
0025 SOA_COLUMN(float, pedestals_mean_x6),
0026 SOA_COLUMN(float, pedestals_mean_x1),
0027 SOA_COLUMN(float, pedestals_rms_x12),
0028 SOA_COLUMN(float, pedestals_rms_x6),
0029 SOA_COLUMN(float, pedestals_rms_x1),
0030 SOA_COLUMN(PulseShapeArray, pulseShapes),
0031
0032 SOA_EIGEN_COLUMN(CovarianceMatrix, pulseCovariance),
0033 SOA_COLUMN(float, gain12Over6),
0034 SOA_COLUMN(float, gain6Over1),
0035 SOA_COLUMN(float, timeCalibConstants),
0036
0037 SOA_SCALAR(TimeBiasCorrArrayEB, timeBiasCorrections_amplitude_EB),
0038 SOA_SCALAR(TimeBiasCorrArrayEB, timeBiasCorrections_shift_EB),
0039 SOA_SCALAR(TimeBiasCorrArrayEE, timeBiasCorrections_amplitude_EE),
0040 SOA_SCALAR(TimeBiasCorrArrayEE, timeBiasCorrections_shift_EE),
0041 SOA_SCALAR(size_t, timeBiasCorrectionSizeEB),
0042 SOA_SCALAR(size_t, timeBiasCorrectionSizeEE),
0043
0044 SOA_SCALAR(SampleCorrelationArray, sampleCorrelation_EB_G12),
0045 SOA_SCALAR(SampleCorrelationArray, sampleCorrelation_EB_G6),
0046 SOA_SCALAR(SampleCorrelationArray, sampleCorrelation_EB_G1),
0047 SOA_SCALAR(SampleCorrelationArray, sampleCorrelation_EE_G12),
0048 SOA_SCALAR(SampleCorrelationArray, sampleCorrelation_EE_G6),
0049 SOA_SCALAR(SampleCorrelationArray, sampleCorrelation_EE_G1),
0050
0051 SOA_SCALAR(unsigned int, sampleMask_EB),
0052 SOA_SCALAR(unsigned int, sampleMask_EE),
0053 SOA_SCALAR(float, timeOffset_EB),
0054 SOA_SCALAR(float, timeOffset_EE),
0055
0056 SOA_SCALAR(uint32_t, offsetEE))
0057
0058 using EcalMultifitConditionsSoA = EcalMultifitConditionsSoALayout<>;
0059
0060 #endif