ATLAS Offline Software
PadTrig_ROD_Decoder.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include "PadTrig_ROD_Decoder.h"
6 
7 #include <byteswap.h>
8 #include <vector>
9 
10 #include "Identifier/Identifier.h"
11 #include "eformat/Issue.h"
12 #include "eformat/SourceIdentifier.h"
15 
16 namespace Muon {
17 
18 //=====================================================================
19 PadTrig_ROD_Decoder::PadTrig_ROD_Decoder(const std::string& type, const std::string& name, const IInterface* parent)
21 {
22  declareInterface<IPadTrig_ROD_Decoder>(this);
23 }
24 
25 
26 //=====================================================================
28 {
29  try {
30  fragment.check();
31  } catch (const eformat::Issue& ex) {
32  ATH_MSG_ERROR(ex.what());
33  return StatusCode::FAILURE;
34  }
35 
36  const std::string trigger{"PadL1A"};
37  const Muon::nsw::NSWTriggerCommonDecoder decoder{fragment, trigger};
38  for (const auto& baselink: decoder.get_elinks()) {
39  const auto link = static_cast<const Muon::nsw::NSWPadTriggerL1a*>(baselink.get());
40  auto *const collection = new NSW_PadTriggerData{
41  fragment.rob_source_id(),
42  link->getFlags(),
43  link->getEc(),
44  link->getFragid(),
45  link->getSecid(),
46  link->getSpare(),
47  link->getOrbit(),
48  link->getBcid(),
49  link->getL1id(),
50  link->getOrbitid(),
51  link->getOrbit1(),
52  link->getStatus(),
53  link->getNumberOfHits(),
54  link->getNumberOfPfebs(),
55  link->getNumberOfTriggers(),
56  link->getNumberOfBcids(),
57  link->getHitRelBcids(),
58  link->getHitPfebs(),
59  link->getHitTdsChannels(),
60  link->getHitVmmChannels(),
61  link->getHitVmms(),
62  link->getHitPadChannels(),
63  link->getPfebAddresses(),
64  link->getPfebNChannels(),
65  link->getPfebDisconnecteds(),
66  link->getTriggerBandIds(),
67  link->getTriggerPhiIds(),
68  link->getTriggerRelBcids(),
69  link->getBcidRels(),
70  link->getBcidStatuses(),
71  link->getBcidMultZeros(),
72  link->getBcidMultiplicities()
73  };
74  ATH_MSG_DEBUG("Pad trigger fillCollection " << std::hex << collection->getSourceid() << std::dec << " " << rdo.numberOfCollections());
75  ATH_CHECK(rdo.addCollection(collection, rdo.numberOfCollections()));
76  }
77 
78  return StatusCode::SUCCESS;
79 }
80 
81 } // namespace Muon
NSWTriggerCommonDecoder.h
IdentifiableContainerMT::addCollection
virtual StatusCode addCollection(const T *coll, IdentifierHash hashId) override final
insert collection into container with id hash if IDC should not take ownership of collection,...
Definition: IdentifiableContainerMT.h:297
python.LArCondContChannels.decoder
decoder
def channelSelection(self, channelList, groupType): if groupType == self.SingleGroup: pass elif group...
Definition: LArCondContChannels.py:618
Issue
Configuration Issue
Definition: PscIssues.h:31
Muon::NSW_PadTriggerDataContainer
Definition: NSW_PadTriggerDataContainer.h:15
Muon
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.
Definition: TrackSystemController.h:45
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
NSWPadTriggerL1a.h
IdentifiableContainerMT::numberOfCollections
virtual size_t numberOfCollections() const override final
return number of collections
Definition: IdentifiableContainerMT.h:213
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
eformat::ROBFragment
Definition: L1CaloBsDecoderUtil.h:12
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
test_pyathena.parent
parent
Definition: test_pyathena.py:15
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
Muon::NSW_PadTriggerData
Definition: NSW_PadTriggerData.h:19
byteswap.h
C++23-compatible byteswap()
Muon::PadTrig_ROD_Decoder::PadTrig_ROD_Decoder
PadTrig_ROD_Decoder(const std::string &type, const std::string &name, const IInterface *parent)
Definition: PadTrig_ROD_Decoder.cxx:19
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
Muon::PadTrig_ROD_Decoder::fillCollection
StatusCode fillCollection(const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment &fragment, NSW_PadTriggerDataContainer &rdo) const override
Definition: PadTrig_ROD_Decoder.cxx:27
Muon::nsw::NSWPadTriggerL1a
Definition: NSWPadTriggerL1a.h:143
PadTrig_ROD_Decoder.h
AthAlgTool
Definition: AthAlgTool.h:26
Muon::nsw::NSWTriggerCommonDecoder
Definition: NSWTriggerCommonDecoder.h:21