Skip to content

Commit 7b51a21

Browse files
committed
Squashed commit of the following:
commit 488db5b Author: Pedro Silva <[email protected]> Date: Thu Sep 18 10:57:11 2025 +0200 add fallback in case PhaseI raw data is still used (TB2023/2024+EESR) (#172) commit 58ec4d0 Author: Pedro <[email protected]> Date: Thu Sep 11 10:18:22 2025 +0200 code checks/format commit 216cfce Author: Pedro <[email protected]> Date: Thu Sep 11 10:12:58 2025 +0200 update Co-authored-by: Pedro Silva <[email protected]>
1 parent 05248a5 commit 7b51a21

File tree

3 files changed

+48
-15
lines changed

3 files changed

+48
-15
lines changed

EventFilter/HGCalRawToDigi/interface/HGCalUnpacker.h

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
#define EventFilter_HGCalRawToDigi_HGCalUnpacker_h
1313

1414
#include "DataFormats/HGCalDigi/interface/HGCalRawDataDefinitions.h"
15-
#include "DataFormats/FEDRawData/interface/FEDRawData.h"
15+
#include "DataFormats/FEDRawData/interface/RawDataBuffer.h"
1616
#include "DataFormats/HGCalDigi/interface/HGCalDigiHost.h"
1717
#include "DataFormats/HGCalDigi/interface/HGCalFEDPacketInfoHost.h"
1818
#include "DataFormats/HGCalDigi/interface/HGCalECONDPacketInfoHost.h"
@@ -34,14 +34,24 @@ class HGCalUnpacker {
3434
// HGCalUnpacker(HGCalUnpackerConfig config);
3535

3636
uint16_t parseFEDData(unsigned fedId,
37-
const FEDRawData& fed_data,
37+
const RawFragmentWrapper& fed_data,
3838
const HGCalMappingModuleIndexer& moduleIndexer,
3939
const HGCalConfiguration& config,
4040
hgcaldigi::HGCalDigiHost& digis,
4141
hgcaldigi::HGCalFEDPacketInfoHost& fedPacketInfo,
4242
hgcaldigi::HGCalECONDPacketInfoHost& econdPacketInfo,
4343
bool headerOnlyMode = false);
4444

45+
uint16_t parseFEDData(unsigned fedId,
46+
const unsigned char* start_fed_data,
47+
size_t fed_data_size,
48+
const HGCalMappingModuleIndexer& moduleIndexer,
49+
const HGCalConfiguration& config,
50+
hgcaldigi::HGCalDigiHost& digis,
51+
hgcaldigi::HGCalFEDPacketInfoHost& fedPacketInfo,
52+
hgcaldigi::HGCalECONDPacketInfoHost& econdPacketInfo,
53+
bool headerOnlyMode);
54+
4555
private:
4656
constexpr static uint8_t tctp_[16] = {
4757
0b00, 0b00, 0b01, 0b00, 0b00, 0b00, 0b00, 0b00, 0b10, 0b10, 0b10, 0b10, 0b11, 0b11, 0b11, 0b11};

EventFilter/HGCalRawToDigi/plugins/HGCalRawToDigi.cc

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
#include "FWCore/ParameterSet/interface/ParameterSet.h"
99
#include "FWCore/Utilities/interface/StreamID.h"
1010

11-
#include "DataFormats/FEDRawData/interface/FEDRawDataCollection.h"
11+
#include "DataFormats/FEDRawData/interface/RawDataBuffer.h"
1212
#include "DataFormats/HGCalDigi/interface/HGCalElectronicsId.h"
1313
#include "DataFormats/HGCalDigi/interface/HGCalDigiHost.h"
1414
#include "DataFormats/HGCalDigi/interface/HGCalECONDPacketInfoHost.h"
@@ -29,7 +29,7 @@ class HGCalRawToDigi : public edm::stream::EDProducer<> {
2929
public:
3030
explicit HGCalRawToDigi(const edm::ParameterSet&);
3131
uint16_t callUnpacker(unsigned fedId,
32-
const FEDRawData& fed_data,
32+
const RawFragmentWrapper& fed_data,
3333
const HGCalMappingModuleIndexer& moduleIndexer,
3434
const HGCalConfiguration& config,
3535
hgcaldigi::HGCalDigiHost& digis,
@@ -42,7 +42,7 @@ class HGCalRawToDigi : public edm::stream::EDProducer<> {
4242
void beginRun(edm::Run const&, edm::EventSetup const&) override;
4343

4444
// input tokens
45-
const edm::EDGetTokenT<FEDRawDataCollection> fedRawToken_;
45+
const edm::EDGetTokenT<RawDataBuffer> fedRawToken_;
4646

4747
// output tokens
4848
const edm::EDPutTokenT<hgcaldigi::HGCalDigiHost> digisToken_;
@@ -70,7 +70,7 @@ class HGCalRawToDigi : public edm::stream::EDProducer<> {
7070
};
7171

7272
HGCalRawToDigi::HGCalRawToDigi(const edm::ParameterSet& iConfig)
73-
: fedRawToken_(consumes<FEDRawDataCollection>(iConfig.getParameter<edm::InputTag>("src"))),
73+
: fedRawToken_(consumes<RawDataBuffer>(iConfig.getParameter<edm::InputTag>("src"))),
7474
digisToken_(produces<hgcaldigi::HGCalDigiHost>()),
7575
econdPacketInfoToken_(produces<hgcaldigi::HGCalECONDPacketInfoHost>()),
7676
fedPacketInfoToken_(produces<hgcaldigi::HGCalFEDPacketInfoHost>()),
@@ -96,7 +96,7 @@ void HGCalRawToDigi::produce(edm::Event& iEvent, const edm::EventSetup& iSetup)
9696
hgcaldigi::HGCalFEDPacketInfoHost fedPacketInfo(moduleIndexer.fedCount(), cms::alpakatools::host());
9797

9898
// retrieve the FED raw data
99-
const auto& raw_data = iEvent.get(fedRawToken_);
99+
const auto& fedBuffer = iEvent.get(fedRawToken_);
100100

101101
for (int32_t i = 0; i < digis.view().metadata().size(); i++) {
102102
digis.view()[i].flags() = hgcal::DIGI_FLAG::NotAvailable;
@@ -109,7 +109,8 @@ void HGCalRawToDigi::produce(edm::Event& iEvent, const edm::EventSetup& iSetup)
109109
if (frs.readoutTypes_.empty()) {
110110
continue;
111111
}
112-
const auto& fed_data = raw_data.FEDData(fedId);
112+
113+
const auto& fed_data = fedBuffer.fragmentData(fedId);
113114
fedPacketInfo.view()[fedId].FEDPayload() = fed_data.size();
114115
if (fed_data.size() == 0)
115116
continue;
@@ -125,7 +126,7 @@ void HGCalRawToDigi::produce(edm::Event& iEvent, const edm::EventSetup& iSetup)
125126
if (frs.readoutTypes_.empty()) {
126127
return;
127128
}
128-
const auto& fed_data = raw_data.FEDData(fedId);
129+
const auto& fed_data = fedBuffer.fragmentData(fedId);
129130
fedPacketInfo.view()[fedId].FEDPayload() = fed_data.size();
130131
if (fed_data.size() == 0)
131132
return;
@@ -144,7 +145,7 @@ void HGCalRawToDigi::produce(edm::Event& iEvent, const edm::EventSetup& iSetup)
144145

145146
//
146147
uint16_t HGCalRawToDigi::callUnpacker(unsigned fedId,
147-
const FEDRawData& fed_data,
148+
const RawFragmentWrapper& fed_data,
148149
const HGCalMappingModuleIndexer& moduleIndexer,
149150
const HGCalConfiguration& config,
150151
hgcaldigi::HGCalDigiHost& digis,

EventFilter/HGCalRawToDigi/src/HGCalUnpacker.cc

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
#include "CondFormats/HGCalObjects/interface/HGCalMappingCellIndexer.h"
99
#include "CondFormats/HGCalObjects/interface/HGCalMappingModuleIndexer.h"
10-
#include "DataFormats/FEDRawData/interface/FEDRawData.h"
10+
#include "DataFormats/FEDRawData/interface/RawDataBuffer.h"
1111
#include "DataFormats/HGCalDigi/interface/HGCalDigiHost.h"
1212
#include "DataFormats/HGCalDigi/interface/HGCalECONDPacketInfoHost.h"
1313
#include "DataFormats/HGCalDigi/interface/HGCalFEDPacketInfoHost.h"
@@ -20,7 +20,29 @@
2020
using namespace hgcal;
2121

2222
uint16_t HGCalUnpacker::parseFEDData(unsigned fedId,
23-
const FEDRawData& fed_data,
23+
const RawFragmentWrapper& fed_data,
24+
const HGCalMappingModuleIndexer& moduleIndexer,
25+
const HGCalConfiguration& config,
26+
hgcaldigi::HGCalDigiHost& digis,
27+
hgcaldigi::HGCalFEDPacketInfoHost& fedPacketInfo,
28+
hgcaldigi::HGCalECONDPacketInfoHost& econdPacketInfo,
29+
bool headerOnlyMode) {
30+
const auto fed_data_size = fed_data.size();
31+
const auto* start_fed_data = &(fed_data.data().front());
32+
return parseFEDData(fedId,
33+
start_fed_data,
34+
fed_data_size,
35+
moduleIndexer,
36+
config,
37+
digis,
38+
fedPacketInfo,
39+
econdPacketInfo,
40+
headerOnlyMode);
41+
}
42+
43+
uint16_t HGCalUnpacker::parseFEDData(unsigned fedId,
44+
const unsigned char* start_fed_data,
45+
size_t fed_data_size,
2446
const HGCalMappingModuleIndexer& moduleIndexer,
2547
const HGCalConfiguration& config,
2648
hgcaldigi::HGCalDigiHost& digis,
@@ -50,8 +72,8 @@ uint16_t HGCalUnpacker::parseFEDData(unsigned fedId,
5072
// Endianness assumption
5173
// From 32-bit word(ECOND) to 64-bit word(capture block): little endianness
5274
// Others: big endianness
53-
const auto* const header = reinterpret_cast<const uint64_t*>(fed_data.data());
54-
const auto* const trailer = reinterpret_cast<const uint64_t*>(fed_data.data() + fed_data.size());
75+
const auto* const header = reinterpret_cast<const uint64_t*>(start_fed_data);
76+
const auto* const trailer = reinterpret_cast<const uint64_t*>(start_fed_data + fed_data_size);
5577
LogDebug("[HGCalUnpacker]") << "fedId = " << fedId << ", nwords (64b) = " << std::distance(header, trailer);
5678
const auto* ptr = header;
5779

@@ -120,7 +142,7 @@ uint16_t HGCalUnpacker::parseFEDData(unsigned fedId,
120142
uint32_t ECONDdenseIdx = moduleIndexer.getIndexForModule(fedId, 0);
121143
econdPacketInfo.view()[ECONDdenseIdx].location() = (uint32_t)(ptr - header);
122144
if (cb_header == 0x0) {
123-
auto nToEnd = (fed_data.size() / 8 - 2) - std::distance(header, ptr);
145+
auto nToEnd = (fed_data_size / 8 - 2) - std::distance(header, ptr);
124146
if (nToEnd == 1) {
125147
ptr++;
126148
LogDebug("[HGCalUnpacker]")

0 commit comments

Comments
 (0)