Back to home page

Project CMSSW displayed by LXR

 
 

    


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                     // NxN  N=templatesamples  for each xtal
0032                     SOA_EIGEN_COLUMN(CovarianceMatrix, pulseCovariance),
0033                     SOA_COLUMN(float, gain12Over6),
0034                     SOA_COLUMN(float, gain6Over1),
0035                     SOA_COLUMN(float, timeCalibConstants),
0036                     // timeBiasCorrections (fixed since 2011)
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                     // Sample correlation scalar: array of 10 values for each gain in EB and EE
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                     // Samples Masks
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                     // offset for hashed ID access to EE items of columns
0056                     SOA_SCALAR(uint32_t, offsetEE))
0057 
0058 using EcalMultifitConditionsSoA = EcalMultifitConditionsSoALayout<>;
0059 
0060 #endif