File indexing completed on 2025-06-26 23:26:37
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
0011 namespace hgcaldigi {
0012
0013
0014 using Matrix = Eigen ::Matrix<uint16_t, 12, 2>;
0015
0016 namespace ECONDFlag {
0017 constexpr uint8_t BITT_POS = 0, BITM_POS = 1, EBO_POS = 2, EBO_MASK = 0b11, HT_POS = 4, HT_MASK = 0b11,
0018 BITE_POS = 6, BITS_POS = 7;
0019 }
0020
0021
0022 inline constexpr bool truncatedFlag(uint8_t econdFlag) {
0023 return ((econdFlag >> hgcaldigi::ECONDFlag::BITT_POS) & 0b1);
0024 }
0025 inline constexpr bool matchFlag(uint8_t econdFlag) { return ((econdFlag >> hgcaldigi::ECONDFlag::BITM_POS) & 0b1); }
0026 inline constexpr uint8_t eboFlag(uint8_t econdFlag) {
0027 return ((econdFlag >> hgcaldigi::ECONDFlag::EBO_POS) & hgcaldigi::ECONDFlag::EBO_MASK);
0028 }
0029 inline constexpr uint8_t htFlag(uint8_t econdFlag) {
0030 return ((econdFlag >> hgcaldigi::ECONDFlag::HT_POS) & hgcaldigi::ECONDFlag::HT_MASK);
0031 }
0032 inline constexpr bool expectedFlag(uint8_t econdFlag) {
0033 return ((econdFlag >> hgcaldigi::ECONDFlag::BITE_POS) & 0b1);
0034 }
0035 inline constexpr bool StatFlag(uint8_t econdFlag) { return ((econdFlag >> hgcaldigi::ECONDFlag::BITS_POS) & 0b1); }
0036
0037
0038 GENERATE_SOA_LAYOUT(HGCalECONDPacketInfoSoALayout,
0039
0040
0041
0042
0043
0044
0045
0046
0047
0048 SOA_COLUMN(uint16_t, cbFlag),
0049
0050
0051
0052
0053
0054
0055
0056 SOA_COLUMN(uint8_t, econdFlag),
0057
0058
0059
0060
0061
0062
0063
0064
0065
0066
0067 SOA_COLUMN(uint8_t, exception),
0068
0069
0070
0071 SOA_COLUMN(uint32_t, location),
0072
0073
0074
0075 SOA_COLUMN(uint16_t, payloadLength),
0076 SOA_EIGEN_COLUMN(Matrix, cm))
0077 using HGCalECONDPacketInfoSoA = HGCalECONDPacketInfoSoALayout<>;
0078 }
0079
0080 #endif