ATLAS Offline Software
Loading...
Searching...
No Matches
TriggerProcessorTool.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
6
7namespace NSWL1 {
8
9 TriggerProcessorTool::TriggerProcessorTool(const std::string& type, const std::string& name, const IInterface* parent) :
10 base_class(type,name,parent) {}
11
13
14 ATH_MSG_DEBUG("In initialize()");
15 return StatusCode::SUCCESS;
16 }
17
19 const Muon::NSW_TrigRawDataContainer* stripTriggerContainer,
20 const Muon::NSW_TrigRawDataContainer* MMTriggerContainer,
21 Muon::NSW_TrigRawDataContainer* trigRdoContainer) const {
22 ATH_MSG_DEBUG("------------- TriggerProcessorTool::mergeRDO ---------------------");
23 ATH_MSG_DEBUG("Pad Trigger Container size: " << padTriggerContainer->size());
24 constexpr bool HAS_PHI_RESOLUTION{true};
25 constexpr uint8_t SPARE_IS_PAD{1};
26 for ( const auto padTriggerData : *padTriggerContainer ) {
27 ATH_MSG_DEBUG("Pad Trigger data: " << *padTriggerData);
28 const char sectorSide = (padTriggerData->sideA()) ? 'A' : 'C';
29 auto trigRawData = new Muon::NSW_TrigRawData(padTriggerData->getSecid(), sectorSide, padTriggerData->getBcid());
30 for (size_t it = 0; it < padTriggerData->getNumberOfTriggers(); ++it) {
31 auto trigRawDataSegment = new Muon::NSW_TrigRawDataSegment();
32 trigRawDataSegment->setRIndex(padTriggerData->getTriggerBandIds().at(it));
33 trigRawDataSegment->setPhiIndex(padTriggerData->getTriggerPhiIds().at(it));
34 trigRawDataSegment->setPhiRes(HAS_PHI_RESOLUTION);
35 trigRawDataSegment->setSpare(SPARE_IS_PAD);
36 trigRawData->push_back(trigRawDataSegment);
37 }
38 ATH_MSG_DEBUG("L1NSW-Pad Trigger Output: "
39 << "sectorSide=" << trigRawData->sectorSide() << " "
40 << "sectorId=" << trigRawData->sectorId() << " "
41 << "bcId=" << trigRawData->bcId());
42 for(const auto seg : *trigRawData){
43 ATH_MSG_DEBUG("\tPadSegment: "
44 << "deltaTheta=" << static_cast<int16_t>(seg->deltaTheta()) << " "
45 << "phiIndex=" << static_cast<int16_t>(seg->phiIndex()) << " "
46 << "rIndex=" << static_cast<int16_t>(seg->rIndex()) << " "
47 << "spare=" << static_cast<int16_t>(seg->spare()) << " "
48 << "lowRes=" << seg->lowRes() << " "
49 << "phiRes=" << seg->phiRes() << " "
50 << "monitor=" << seg->monitor());
51 }
52 trigRdoContainer->push_back(trigRawData);
53 }
54 ATH_MSG_DEBUG("After PadTrigger filling -> NSW Trigger RDO size: " << trigRdoContainer->size());
55
56 for (const auto rawData : *stripTriggerContainer) {
57 Muon::NSW_TrigRawData* trigRawData = new Muon::NSW_TrigRawData(*rawData, true);
58 ATH_MSG_DEBUG("L1NSW-Strip Trigger Output: "
59 << "sectorSide=" << trigRawData->sectorSide() << " "
60 << "sectorId=" << trigRawData->sectorId() << " "
61 << "bcId=" << trigRawData->bcId());
62 for(const auto seg : *trigRawData){
63 ATH_MSG_DEBUG("\tStripSegment: "
64 << "deltaTheta=" << static_cast<int16_t>(seg->deltaTheta()) << " "
65 << "phiIndex=" << static_cast<int16_t>(seg->phiIndex()) << " "
66 << "rIndex=" << static_cast<int16_t>(seg->rIndex()) << " "
67 << "spare=" << static_cast<int16_t>(seg->spare()) << " "
68 << "lowRes=" << seg->lowRes() << " "
69 << "phiRes=" << seg->phiRes() << " "
70 << "monitor=" << seg->monitor());
71 }
72 trigRdoContainer->push_back(trigRawData);
73 }
74 ATH_MSG_DEBUG("After sTGC strip trigger filling -> NSW Trigger RDO size: " << trigRdoContainer->size());
75
76 for (const auto rawData : *MMTriggerContainer) {
77 Muon::NSW_TrigRawData* trigRawData = new Muon::NSW_TrigRawData(*rawData, false);
78 ATH_MSG_DEBUG("L1NSW-MM Trigger Output: "
79 << "sectorSide=" << trigRawData->sectorSide() << " "
80 << "sectorId=" << trigRawData->sectorId() << " "
81 << "bcId=" << trigRawData->bcId());
82 for(const auto seg : *trigRawData){
83 ATH_MSG_DEBUG("\tMMSegment: "
84 << "deltaTheta=" << static_cast<int16_t>(seg->deltaTheta()) << " "
85 << "phiIndex=" << static_cast<int16_t>(seg->phiIndex()) << " "
86 << "rIndex=" << static_cast<int16_t>(seg->rIndex()) << " "
87 << "spare=" << static_cast<int16_t>(seg->spare()) << " "
88 << "lowRes=" << seg->lowRes() << " "
89 << "phiRes=" << seg->phiRes() << " "
90 << "monitor=" << seg->monitor());
91 }
92 trigRdoContainer->push_back(trigRawData);
93 }
94 ATH_MSG_DEBUG("After MMTrigger filling -> NSW Trigger RDO size: " << trigRdoContainer->size());
95
96 return StatusCode::SUCCESS;
97 }
98}
#define ATH_MSG_DEBUG(x)
value_type push_back(value_type pElem)
Add an element to the end of the collection.
size_type size() const noexcept
Returns the number of elements in the collection.
size_t size() const
Duplicate of fullSize for backwards compatability.
uint16_t bcId() const
uint16_t sectorId() const
virtual StatusCode initialize() override
TriggerProcessorTool(const std::string &type, const std::string &name, const IInterface *parent)
StatusCode mergeRDO(const Muon::NSW_PadTriggerDataContainer *padTriggerContainer, const Muon::NSW_TrigRawDataContainer *stripTriggerContainer, const Muon::NSW_TrigRawDataContainer *MMTriggerContainer, Muon::NSW_TrigRawDataContainer *trigRdoContainer) const override
PadEmulatorCoincidences.