File indexing completed on 2025-03-10 00:36:54
0001 #ifndef DataFormats_HGCalDigi_interface_HGCalECONDPacketInfoSoA_h
0002 #define DataFormats_HGCalDigi_interface_HGCalECONDPacketInfoSoA_h
0003
0004 #include <cstdint> // for uint8_t
0005
0006 #include <Eigen/Core>
0007
0008 #include "DataFormats/SoATemplate/interface/SoACommon.h"
0009 #include "DataFormats/SoATemplate/interface/SoALayout.h"
0010 #include "DataFormats/SoATemplate/interface/SoAView.h"
0011
0012 namespace hgcaldigi {
0013
0014
0015 using Matrix = Eigen ::Matrix<uint16_t, 12, 2>;
0016
0017 namespace ECONDFlag {
0018 constexpr uint8_t BITT_POS = 0, BITM_POS = 1, EBO_POS = 2, EBO_MASK = 0b11, HT_POS = 4, HT_MASK = 0b11,
0019 BITE_POS = 6, BITS_POS = 7;
0020 }
0021
0022
0023 inline constexpr bool truncatedFlag(uint8_t econdFlag) {
0024 return ((econdFlag >> hgcaldigi::ECONDFlag::BITT_POS) & 0b1);
0025 }
0026 inline constexpr bool matchFlag(uint8_t econdFlag) { return ((econdFlag >> hgcaldigi::ECONDFlag::BITM_POS) & 0b1); }
0027 inline constexpr uint8_t eboFlag(uint8_t econdFlag) {
0028 return ((econdFlag >> hgcaldigi::ECONDFlag::EBO_POS) & hgcaldigi::ECONDFlag::EBO_MASK);
0029 }
0030 inline constexpr uint8_t htFlag(uint8_t econdFlag) {
0031 return ((econdFlag >> hgcaldigi::ECONDFlag::HT_POS) & hgcaldigi::ECONDFlag::HT_MASK);
0032 }
0033 inline constexpr bool expectedFlag(uint8_t econdFlag) {
0034 return ((econdFlag >> hgcaldigi::ECONDFlag::BITE_POS) & 0b1);
0035 }
0036 inline constexpr bool StatFlag(uint8_t econdFlag) { return ((econdFlag >> hgcaldigi::ECONDFlag::BITS_POS) & 0b1); }
0037
0038
0039 GENERATE_SOA_LAYOUT(HGCalECONDPacketInfoSoALayout,
0040
0041
0042
0043
0044
0045
0046
0047
0048
0049 SOA_COLUMN(uint16_t, cbFlag),
0050
0051
0052
0053
0054
0055
0056
0057 SOA_COLUMN(uint8_t, econdFlag),
0058
0059
0060
0061
0062
0063
0064
0065
0066
0067
0068 SOA_COLUMN(uint8_t, exception),
0069
0070
0071
0072 SOA_COLUMN(uint32_t, location),
0073
0074
0075
0076 SOA_COLUMN(uint16_t, payloadLength),
0077 SOA_EIGEN_COLUMN(Matrix, cm))
0078 using HGCalECONDPacketInfoSoA = HGCalECONDPacketInfoSoALayout<>;
0079 }
0080
0081 #endif