Skip to content

Commit 5e9be3b

Browse files
committed
Squashed commit of the following:
commit cee428a Author: Pedro <[email protected]> Date: Fri Feb 28 11:45:38 2025 +0100 add protection to CRC check : require at least one word commit 28834f1 Author: Pedro <[email protected]> Date: Fri Feb 28 11:42:51 2025 +0100 remove the try/catch commit 82e4757 Merge: 26ffcf1 3230c38 Author: Pedro <[email protected]> Date: Fri Feb 28 09:31:43 2025 +0100 Merged dev/monitorhgcalfedquality from repository CMS-HGCAL with cms-merge-topic commit 3230c38 Author: Pedro Silva <[email protected]> Date: Fri Feb 28 09:27:44 2025 +0100 Update HGCalECONDPacketInfoSoA.h Missed two methods commit f68a23b Author: Pedro Silva <[email protected]> Date: Wed Feb 26 15:51:39 2025 +0100 Comments (#167) * addconstexpr * code format commit 97c2c68 Author: Pedro <[email protected]> Date: Tue Feb 25 16:08:25 2025 +0100 code formats commit 671a3ca Author: Pedro <[email protected]> Date: Tue Feb 25 16:00:10 2025 +0100 first commit Co-authored-by: Pedro Silva <[email protected]>
1 parent 26ffcf1 commit 5e9be3b

File tree

16 files changed

+215
-55
lines changed

16 files changed

+215
-55
lines changed

DataFormats/HGCalDigi/interface/HGCalECONDPacketInfoSoA.h

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,20 @@ namespace hgcaldigi {
2020
} // namespace ECONDFlag
2121

2222
// functions to parse ECONDFlag
23-
inline bool truncatedFlag(uint8_t econdFlag) { return ((econdFlag >> hgcaldigi::ECONDFlag::BITT_POS) & 0b1); }
24-
inline bool matchFlag(uint8_t econdFlag) { return ((econdFlag >> hgcaldigi::ECONDFlag::BITM_POS) & 0b1); }
25-
inline uint8_t eboFlag(uint8_t econdFlag) {
23+
inline constexpr bool truncatedFlag(uint8_t econdFlag) {
24+
return ((econdFlag >> hgcaldigi::ECONDFlag::BITT_POS) & 0b1);
25+
}
26+
inline constexpr bool matchFlag(uint8_t econdFlag) { return ((econdFlag >> hgcaldigi::ECONDFlag::BITM_POS) & 0b1); }
27+
inline constexpr uint8_t eboFlag(uint8_t econdFlag) {
2628
return ((econdFlag >> hgcaldigi::ECONDFlag::EBO_POS) & hgcaldigi::ECONDFlag::EBO_MASK);
2729
}
28-
inline uint8_t htFlag(uint8_t econdFlag) {
30+
inline constexpr uint8_t htFlag(uint8_t econdFlag) {
2931
return ((econdFlag >> hgcaldigi::ECONDFlag::HT_POS) & hgcaldigi::ECONDFlag::HT_MASK);
3032
}
31-
inline bool expectedFlag(uint8_t econdFlag) { return ((econdFlag >> hgcaldigi::ECONDFlag::BITE_POS) & 0b1); }
32-
inline bool StatFlag(uint8_t econdFlag) { return ((econdFlag >> hgcaldigi::ECONDFlag::BITS_POS) & 0b1); }
33+
inline constexpr bool expectedFlag(uint8_t econdFlag) {
34+
return ((econdFlag >> hgcaldigi::ECONDFlag::BITE_POS) & 0b1);
35+
}
36+
inline constexpr bool StatFlag(uint8_t econdFlag) { return ((econdFlag >> hgcaldigi::ECONDFlag::BITS_POS) & 0b1); }
3337

3438
// generate structure of arrays (SoA) layout with Digi dataformat
3539
GENERATE_SOA_LAYOUT(HGCalECONDPacketInfoSoALayout,
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#ifndef DataFormats_HGCalDigi_interface_HGCalFEDPacketInfoHost_h
2+
#define DataFormats_HGCalDigi_interface_HGCalFEDPacketInfoHost_h
3+
4+
#include "DataFormats/Portable/interface/PortableHostCollection.h"
5+
#include "DataFormats/HGCalDigi/interface/HGCalFEDPacketInfoSoA.h"
6+
7+
namespace hgcaldigi {
8+
9+
using HGCalFEDPacketInfoHost = PortableHostCollection<HGCalFEDPacketInfoSoA>;
10+
11+
} // namespace hgcaldigi
12+
13+
#endif
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
#ifndef DataFormats_HGCalDigi_interface_HGCalFEDPacketInfoSoA_h
2+
#define DataFormats_HGCalDigi_interface_HGCalFEDPacketInfoSoA_h
3+
4+
#include <cstdint> // for uint8_t
5+
6+
#include <Eigen/Core>
7+
8+
#include "DataFormats/SoATemplate/interface/SoACommon.h"
9+
#include "DataFormats/SoATemplate/interface/SoALayout.h"
10+
#include "DataFormats/SoATemplate/interface/SoAView.h"
11+
12+
namespace hgcaldigi {
13+
14+
namespace FEDUnpackingFlags {
15+
constexpr uint8_t NormalUnpacking = 0, GenericUnpackError = 1, ErrorSLinkHeader = 2, ErrorPayload = 3,
16+
ErrorCaptureBlockHeader = 4, ActiveCaptureBlockFlags = 5, ErrorECONDHeader = 6,
17+
ECONDPayloadLengthOverflow = 7, ECONDPayloadLengthMismatch = 8, ErrorSLinkTrailer = 9,
18+
EarlySLinkEnd = 10;
19+
} // namespace FEDUnpackingFlags
20+
21+
inline constexpr bool isNotNormalFED(uint16_t fedUnpackingFlag) {
22+
return !((fedUnpackingFlag >> FEDUnpackingFlags::NormalUnpacking) & 0x1);
23+
}
24+
inline constexpr bool hasGenericUnpackError(uint16_t fedUnpackingFlag) {
25+
return ((fedUnpackingFlag >> FEDUnpackingFlags::GenericUnpackError) & 0x1);
26+
}
27+
inline constexpr bool hasHeaderUnpackError(uint16_t fedUnpackingFlag) {
28+
return ((fedUnpackingFlag >> FEDUnpackingFlags::ErrorSLinkHeader) & 0x1);
29+
}
30+
inline constexpr bool hasPayloadUnpackError(uint16_t fedUnpackingFlag) {
31+
return ((fedUnpackingFlag >> FEDUnpackingFlags::ErrorPayload) & 0x1);
32+
}
33+
inline constexpr bool hasCBHeaderError(uint16_t fedUnpackingFlag) {
34+
return ((fedUnpackingFlag >> FEDUnpackingFlags::ErrorCaptureBlockHeader) & 0x1);
35+
}
36+
inline constexpr bool hasCBActiveFlags(uint16_t fedUnpackingFlag) {
37+
return ((fedUnpackingFlag >> FEDUnpackingFlags::ActiveCaptureBlockFlags) & 0x1);
38+
}
39+
inline constexpr bool hasErrorECONDHeader(uint16_t fedUnpackingFlag) {
40+
return ((fedUnpackingFlag >> FEDUnpackingFlags::ErrorECONDHeader) & 0x1);
41+
}
42+
inline constexpr bool hasECONDPayloadLengthOverflow(uint16_t fedUnpackingFlag) {
43+
return ((fedUnpackingFlag >> FEDUnpackingFlags::ECONDPayloadLengthOverflow) & 0x1);
44+
}
45+
inline constexpr bool hasECONDPayloadLengthMismatch(uint16_t fedUnpackingFlag) {
46+
return ((fedUnpackingFlag >> FEDUnpackingFlags::ECONDPayloadLengthMismatch) & 0x1);
47+
}
48+
inline constexpr bool hasErrorSLinkTrailer(uint16_t fedUnpackingFlag) {
49+
return ((fedUnpackingFlag >> FEDUnpackingFlags::ErrorSLinkTrailer) & 0x1);
50+
}
51+
inline constexpr bool hasEarlySLinkEnd(uint16_t fedUnpackingFlag) {
52+
return ((fedUnpackingFlag >> FEDUnpackingFlags::EarlySLinkEnd) & 0x1);
53+
}
54+
55+
GENERATE_SOA_LAYOUT(HGCalFEDPacketInfoSoALayout,
56+
//FED unpacking flag
57+
// bit 0 : unable to unpack headers
58+
// bit 1 : unable to unpack data
59+
// bit 2 : at least one capture block has active flags
60+
SOA_COLUMN(uint16_t, FEDUnpackingFlag),
61+
SOA_COLUMN(uint32_t, FEDPayload)) //number of words (char)
62+
63+
using HGCalFEDPacketInfoSoA = HGCalFEDPacketInfoSoALayout<>;
64+
} // namespace hgcaldigi
65+
66+
#endif

DataFormats/HGCalDigi/interface/HGCalRawDataDefinitions.h

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -56,20 +56,6 @@ namespace hgcal {
5656
// flag for digi not in raw data
5757
NotAvailable = 0xFFFF;
5858
} // namespace DIGI_FLAG
59-
namespace UNPACKER_STAT {
60-
//This aligns with the definitons in HGCalECONDPacketInfoSoA
61-
// 0: Normal
62-
// 1: Wrong S-Link header marker
63-
// 2: Wrong Capture block header marker
64-
// 3: Wrong ECON-D header marker
65-
// 4: ECON-D payload length overflow(>469)
66-
// 5: unpacked ECON-D length and payload length not match
67-
// 6: S-Link trailer location error
68-
// 7: S-Link End earlier
69-
constexpr uint8_t Normal = 0, WrongSLinkHeader = 1, WrongCaptureBlockHeader = 2, WrongECONDHeader = 3,
70-
ECONDPayloadLengthOverflow = 4, ECONDPayloadLengthMismatch = 5, WrongSLinkTrailer = 6,
71-
EarlySLinkEnd = 7;
72-
} // namespace UNPACKER_STAT
7359

7460
} // namespace hgcal
7561

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
#ifndef DataFormats_HGCalDigi_interface_alpaka_HGCalFEDPacketInfoDevice_h
2+
#define DataFormats_HGCalDigi_interface_alpaka_HGCalFEDPacketInfoDevice_h
3+
4+
#include "DataFormats/Portable/interface/alpaka/PortableCollection.h"
5+
#include "DataFormats/HGCalDigi/interface/HGCalFEDPacketInfoSoA.h"
6+
#include "HeterogeneousCore/AlpakaInterface/interface/config.h"
7+
8+
namespace ALPAKA_ACCELERATOR_NAMESPACE {
9+
10+
namespace hgcaldigi {
11+
12+
// make the names from the top-level hgcaldigi namespace visible for unqualified lookup
13+
// inside the ALPAKA_ACCELERATOR_NAMESPACE::hgcaldigi namespace
14+
using namespace ::hgcaldigi;
15+
16+
// SoA in device global memory
17+
using HGCalFEDPacketInfoDevice = PortableCollection<HGCalFEDPacketInfoSoA>;
18+
19+
} // namespace hgcaldigi
20+
21+
} // namespace ALPAKA_ACCELERATOR_NAMESPACE
22+
23+
#endif

DataFormats/HGCalDigi/src/alpaka/classes_cuda.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,5 @@
44
#include "DataFormats/HGCalDigi/interface/alpaka/HGCalDigiDevice.h"
55
#include "DataFormats/HGCalDigi/interface/HGCalECONDPacketInfoSoA.h"
66
#include "DataFormats/HGCalDigi/interface/alpaka/HGCalECONDPacketInfoDevice.h"
7+
#include "DataFormats/HGCalDigi/interface/HGCalFEDPacketInfoSoA.h"
8+
#include "DataFormats/HGCalDigi/interface/alpaka/HGCalFEDPacketInfoDevice.h"

DataFormats/HGCalDigi/src/alpaka/classes_cuda_def.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,7 @@
55
<class name="alpaka_cuda_async::hgcaldigi::HGCalECONDPacketInfoDevice" persistent="false"/>
66
<class name="edm::DeviceProduct<alpaka_cuda_async::hgcaldigi::HGCalECONDPacketInfoDevice>" persistent="false"/>
77
<class name="edm::Wrapper<edm::DeviceProduct<alpaka_cuda_async::hgcaldigi::HGCalECONDPacketInfoDevice>>" persistent="false"/>
8+
<class name="alpaka_cuda_async::hgcaldigi::HGCalFEDPacketInfoDevice" persistent="false"/>
9+
<class name="edm::DeviceProduct<alpaka_cuda_async::hgcaldigi::HGCalFEDPacketInfoDevice>" persistent="false"/>
10+
<class name="edm::Wrapper<edm::DeviceProduct<alpaka_cuda_async::hgcaldigi::HGCalFEDPacketInfoDevice>>" persistent="false"/>
811
</lcgdict>

DataFormats/HGCalDigi/src/alpaka/classes_rocm.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,5 @@
44
#include "DataFormats/HGCalDigi/interface/alpaka/HGCalDigiDevice.h"
55
#include "DataFormats/HGCalDigi/interface/HGCalECONDPacketInfoSoA.h"
66
#include "DataFormats/HGCalDigi/interface/alpaka/HGCalECONDPacketInfoDevice.h"
7+
#include "DataFormats/HGCalDigi/interface/HGCalFEDPacketInfoSoA.h"
8+
#include "DataFormats/HGCalDigi/interface/alpaka/HGCalFEDPacketInfoDevice.h"

DataFormats/HGCalDigi/src/alpaka/classes_rocm_def.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,7 @@
55
<class name="alpaka_rocm_async::hgcaldigi::HGCalECONDPacketInfoDevice" persistent="false"/>
66
<class name="edm::DeviceProduct<alpaka_rocm_async::hgcaldigi::HGCalECONDPacketInfoDevice>" persistent="false"/>
77
<class name="edm::Wrapper<edm::DeviceProduct<alpaka_rocm_async::hgcaldigi::HGCalECONDPacketInfoDevice>>" persistent="false"/>
8+
<class name="alpaka_rocm_async::hgcaldigi::HGCalFEDPacketInfoDevice" persistent="false"/>
9+
<class name="edm::DeviceProduct<alpaka_rocm_async::hgcaldigi::HGCalFEDPacketInfoDevice>" persistent="false"/>
10+
<class name="edm::Wrapper<edm::DeviceProduct<alpaka_rocm_async::hgcaldigi::HGCalFEDPacketInfoDevice>>" persistent="false"/>
811
</lcgdict>
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
#include "DataFormats/Portable/interface/PortableHostCollectionReadRules.h"
22
#include "DataFormats/HGCalDigi/interface/HGCalDigiHost.h"
33
#include "DataFormats/HGCalDigi/interface/HGCalECONDPacketInfoHost.h"
4+
#include "DataFormats/HGCalDigi/interface/HGCalFEDPacketInfoHost.h"
45

56
SET_PORTABLEHOSTCOLLECTION_READ_RULES(hgcaldigi::HGCalDigiHost);
67
SET_PORTABLEHOSTCOLLECTION_READ_RULES(hgcaldigi::HGCalECONDPacketInfoHost);
8+
SET_PORTABLEHOSTCOLLECTION_READ_RULES(hgcaldigi::HGCalFEDPacketInfoHost);

0 commit comments

Comments
 (0)