ATLAS Offline Software
L1TopoSimulation.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include "L1TopoSimulation.h"
6 
7 // Histogram Service
8 #include "AthenaL1TopoHistSvc.h"
9 
10 // Trigger includes
13 
14 
15 // L1Topo includes
18 #include "L1TopoCommon/Types.h"
19 
21 
22 #include "L1TopoRDO/BlockTypes.h"
23 #include "L1TopoRDO/Header.h"
24 #include "L1TopoRDO/Helpers.h"
25 #include "L1TopoRDO/L1TopoTOB.h"
27 #include "L1TopoRDO/L1TopoResult.h"
28 
29 // xAOD
32 
33 using namespace LVL1;
34 
35 
36 L1TopoSimulation::L1TopoSimulation(const std::string &name, ISvcLocator *pSvcLocator) :
37  AthAlgorithm(name, pSvcLocator),
38  m_topoSteering( std::make_unique<TCS::TopoSteering>() ),
39  m_scaler( std::make_unique<LVL1::PeriodicScaler>() )
40 {
41 }
42 
43 
44 bool
46 {
47  return true;
48 }
49 
52  ATH_MSG_INFO("initialize");
53 
54  m_topoSteering->setMsgLevel( TrigConf::MSGTC::Level((int)m_topoSteeringOutputLevel) );
55 
56  m_topoSteering->setLegacyMode(m_isLegacyTopo);
57 
58  ATH_MSG_DEBUG("retrieving " << m_histSvc);
59  CHECK( m_histSvc.retrieve() );
60 
61  if (m_emtauInputProvider.isEnabled()) {
62  ATH_MSG_DEBUG("retrieving " << m_emtauInputProvider);
63  CHECK( m_emtauInputProvider.retrieve() );
64  }
65 
66  if (m_jetInputProvider.isEnabled()) {
67  ATH_MSG_DEBUG("retrieving " << m_jetInputProvider);
68  CHECK( m_jetInputProvider.retrieve() );
69  }
70 
71  if (m_energyInputProvider.isEnabled()) {
72  ATH_MSG_DEBUG("retrieving " << m_energyInputProvider);
73  CHECK( m_energyInputProvider.retrieve() );
74  }
75 
76  if (m_muonInputProvider.isEnabled()) {
77  ATH_MSG_DEBUG("retrieving " << m_muonInputProvider);
78  CHECK( m_muonInputProvider.retrieve(DisableTool{m_isLegacyTopo}) );
79  }
80 
81  ATH_MSG_DEBUG("retrieving " << m_ControlHistSvc);
82  CHECK( m_ControlHistSvc.retrieve());
83 
84  CHECK(m_l1topoRawDataKey.initialize(m_fillHistogramsBasedOnHardwareDecision));
85 
86  CHECK(m_legacyTopoCTPLocation.initialize(m_isLegacyTopo));
87  CHECK(m_legacyTopoOverflowCTPLocation.initialize(m_isLegacyTopo));
88  CHECK(m_topoCTPLocation.initialize(!m_isLegacyTopo));
89  CHECK(m_topoOverflowCTPLocation.initialize(!m_isLegacyTopo));
90  if (m_isLegacyTopo){
91  ATH_MSG_DEBUG("Legacy output trigger key property " << m_legacyTopoCTPLocation);
92  ATH_MSG_DEBUG("Legacy output overflow key property " << m_legacyTopoOverflowCTPLocation);
93  }
94  else {
95  ATH_MSG_DEBUG("Output trigger key property " << m_topoCTPLocation);
96  ATH_MSG_DEBUG("Output overflow key property " << m_topoOverflowCTPLocation);
97  }
98 
99  ATH_MSG_DEBUG("Prescale factor set to " << m_prescale);
100  ATH_MSG_DEBUG("PrescaleDAQROBAccess factor set to " << m_prescaleForDAQROBAccess);
101  ATH_MSG_DEBUG("FillHistoBasedOnHardware " << m_fillHistogramsBasedOnHardwareDecision);
102  if(m_fillHistogramsBasedOnHardwareDecision and
103  (m_prescaleForDAQROBAccess % m_prescale)) {
104  ATH_MSG_FATAL("PrescaleDAQROBAccess must be a multiple of Prescale"
105  <<" : current values :"
106  <<" "<<m_prescaleForDAQROBAccess
107  <<", "<<m_prescale);
108  return StatusCode::FAILURE;
109  }
110 
111  const TrigConf::L1Menu * l1menu = nullptr;
113  ATH_MSG_INFO( "initialize(): retrieving new-style L1 trigger menu from Detector Store" );
114 
115  m_topoSteering->setUseBitwise(m_enableBitwise);
116  try {
117  m_topoSteering->setupFromConfiguration(*l1menu);
118  }
119  catch(std::exception & e) {
120  ATH_MSG_FATAL("Caught exception when configuring topo steering from menu: " << e.what() );
121  return StatusCode::FAILURE;
122  }
123 
124  m_topoSteering->setAlgMsgLevel( TrigConf::MSGTC::Level((int)m_topoOutputLevel) );
125  m_topoSteering->setOutputAlgosFillBasedOnHardware(m_fillHistogramsBasedOnHardwareDecision);
126 
127  if (m_doMonitoring) {ATH_CHECK(m_ControlHistSvc->SetHistSvc(m_topoSteering, m_histBaseDir.value()));}
128 
129  ATH_CHECK(m_legacyL1topoKey.initialize(m_isLegacyTopo));
130  ATH_CHECK(m_l1topoKey.initialize(!m_isLegacyTopo));
131 
132  return StatusCode::SUCCESS;
133 }
134 
135 
136 // Exectued once per offline job and for every new run online
139  ATH_MSG_DEBUG("start");
140 
141  m_scaler->reset();
142 
143  try {
144  m_topoSteering->initializeAlgorithms();
145  }
146  catch(std::exception & e) {
147  ATH_MSG_FATAL("Caught exception when initializing topo algorithms" << e.what() );
148  return StatusCode::FAILURE;
149  }
150 
151  if( m_enableInputDump ) {
152  m_topoSteering->inputEvent().enableInputDump( m_inputDumpFile );
153  m_topoSteering->inputEvent().dumpStart();
154  }
155 
156  return StatusCode::SUCCESS;
157 }
158 
159 
160 
163  const EventContext& ctx = Gaudi::Hive::currentContext();
164 
165  if (m_prescale>1 && not m_scaler->decision(m_prescale)){
166  ATH_MSG_DEBUG( "This event not processed due to prescale");
167  return StatusCode::SUCCESS;
168  // do not record dummy output:
169  // LVL1::FrontPanelCTP is initialised with all 6 32-bit words set to 0 which is valid data
170  // LVL1::FrontPanelCTP * topo2CTP = new LVL1::FrontPanelCTP();
171  // CHECK(evtStore()->record( topo2CTP, m_topoCTPLocation ));
172  }
173  else {
174  ATH_MSG_DEBUG( "This event is processed - not prescaled");
175  }
176 
177  // reset input and internal state
178  m_topoSteering->reset();
179 
180  // fill the L1Topo Input Event
181  TCS::TopoInputEvent & inputEvent = m_topoSteering->inputEvent();
182 
183  inputEvent.setEventInfo(ctx.eventID().run_number(),
184  ctx.eventID().event_number(),
185  ctx.eventID().lumi_block(),
186  ctx.eventID().bunch_crossing_id());
187 
188  // EM TAU
189  if (m_emtauInputProvider.isEnabled()) {
190  CHECK(m_emtauInputProvider->fillTopoInputEvent(inputEvent));
191  }
192  // JET
193  if (m_jetInputProvider.isEnabled()) {
194  CHECK(m_jetInputProvider->fillTopoInputEvent(inputEvent));
195  }
196  // ET sum, ET miss
197  if (m_energyInputProvider.isEnabled()) {
198  CHECK(m_energyInputProvider->fillTopoInputEvent(inputEvent));
199  }
200  // Muon
201  if (m_muonInputProvider.isEnabled()) {
202  CHECK(m_muonInputProvider->fillTopoInputEvent(inputEvent));
203  }
204 
205  ATH_MSG_DEBUG("" << inputEvent);
206 
207  inputEvent.dump();
208 
210  if (retrieveHardwareDecision(m_isLegacyTopo, ctx).isSuccess()) {
211  m_topoSteering->propagateHardwareBitsToAlgos();
212  m_topoSteering->setOutputAlgosSkipHistograms(false);
213  }
214  else {
215  m_topoSteering->setOutputAlgosSkipHistograms(true);
216  }
218  m_topoSteering->setOutputAlgosSkipHistograms(true);
219  }
220  }
221 
222  // execute the toposteering
223  m_topoSteering->executeEvent();
224 
225  ATH_MSG_DEBUG("Global Decision:\n" << m_topoSteering->simulationResult().globalOutput());
226 
227 
237  // Format for CTP still undecided
238 
239  const TCS::GlobalOutput & globalOutput = m_topoSteering->simulationResult().globalOutput();
240  auto topoOutput2CTP = std::make_unique< LVL1::FrontPanelCTP >();
241  auto topoOverflow2CTP = std::make_unique< LVL1::FrontPanelCTP >();
242 
243  const TrigConf::L1Menu * l1menu = nullptr;
245 
246 
248  ATH_MSG_DEBUG(" write: " << outputHandle.key() << " = " << "..." );
249  ATH_CHECK(outputHandle.record(std::make_unique<xAOD::L1TopoSimResultsContainer>(), std::make_unique<xAOD::L1TopoSimResultsAuxContainer>()));
250 
251 
252  if( m_isLegacyTopo ) {
253  // set electrical connectors
254  std::string conn1 = l1menu->board("LegacyTopo0").connectorNames()[0];
255  std::string conn2 = l1menu->board("LegacyTopo1").connectorNames()[0];
256  for(unsigned int clock=0; clock<2; ++clock) {
257  topoOutput2CTP->setCableWord0( clock, 0 ); // ALFA
258  ATH_MSG_DEBUG("Word 1 " << conn1 << " clock " << clock << " " << globalOutput.decision_field( conn1, clock) );
259  topoOutput2CTP->setCableWord1( clock, globalOutput.decision_field( conn1, clock) ); // TOPO 0
260  WriteEDM(outputHandle,conn1,clock,globalOutput.decision_field( conn1, clock));
261  ATH_MSG_DEBUG("Word 2 " << conn2 << " clock " << clock << " " << globalOutput.decision_field( conn2, clock) );
262  topoOutput2CTP->setCableWord2( clock, globalOutput.decision_field( conn2, clock) ); // TOPO 1
263  WriteEDM(outputHandle,conn2,clock,globalOutput.decision_field( conn2, clock));
264  // topoOverflow2CTP->setCableWord0( clock, 0 ); // ALFA
265  // topoOverflow2CTP->setCableWord1( clock, dec.overflow( 0, clock) ); // TOPO 0
266  // topoOverflow2CTP->setCableWord2( clock, dec.overflow( 1, clock) ); // TOPO 1
267  }
268 
269  CHECK(SG::makeHandle(m_legacyTopoCTPLocation) .record(std::move(topoOutput2CTP)));
270  CHECK(SG::makeHandle(m_legacyTopoOverflowCTPLocation).record(std::move(topoOverflow2CTP)));
271 
272  } else {
273  // set electrical connectors
274  std::string conn1 = l1menu->board("Topo2").connectorNames()[0];
275  std::string conn2 = l1menu->board("Topo3").connectorNames()[0];
276  for(unsigned int clock=0; clock<2; ++clock) {
277  ATH_MSG_DEBUG("Word 1 " << conn1 << " clock " << clock << " " << globalOutput.decision_field( conn1, clock) );
278  topoOutput2CTP->setCableWord1( clock, globalOutput.decision_field( conn1, clock) | globalOutput.overflow_field(conn1, clock) ); // TOPO 0
279  WriteEDM(outputHandle,conn1,clock,globalOutput.decision_field( conn1, clock));
280  ATH_MSG_DEBUG("Word 2 " << conn2 << " clock " << clock << " " << globalOutput.decision_field( conn2, clock) );
281  topoOutput2CTP->setCableWord2( clock, globalOutput.decision_field( conn2, clock) | globalOutput.overflow_field(conn2, clock) ); // TOPO 1
282  WriteEDM(outputHandle,conn2,clock,globalOutput.decision_field( conn2, clock));
283 
284  topoOverflow2CTP->setCableWord0( clock, 0 ); // ALFA
285  topoOverflow2CTP->setCableWord1( clock, globalOutput.overflow_field( conn1, clock) ); // TOPO 0
286  WriteEDM_Overflow(outputHandle,"Overflow"+conn1,clock,globalOutput.overflow_field( conn1, clock));
287  topoOverflow2CTP->setCableWord2( clock, globalOutput.overflow_field( conn2, clock) ); // TOPO 1
288  WriteEDM_Overflow(outputHandle,"Overflow"+conn2,clock,globalOutput.overflow_field( conn2, clock));
289 
290  WriteEDM(outputHandle,"Ambiguity"+conn1,clock,globalOutput.ambiguity_field( conn1, clock));
291  WriteEDM(outputHandle,"Ambiguity"+conn2,clock,globalOutput.ambiguity_field( conn2, clock));
292  }
293 
294  // set optical connectors
295  for( const auto& connOpt : l1menu->board("Topo1").connectorNames() ) {
296  auto outputOpt = globalOutput.count_field(connOpt);
297  std::bitset<64> outputOpt_1(outputOpt.to_string());
298  std::bitset<64> outputOpt_2((outputOpt<<64).to_string());
299  topoOutput2CTP->setOptCableWord( connOpt, outputOpt );
300  WriteEDM(outputHandle,connOpt,1,outputOpt_1.to_ulong());
301  WriteEDM(outputHandle,connOpt,0,outputOpt_2.to_ulong());
302  }
303 
304  CHECK(SG::makeHandle(m_topoCTPLocation) .record(std::move(topoOutput2CTP)));
305  CHECK(SG::makeHandle(m_topoOverflowCTPLocation).record(std::move(topoOverflow2CTP)));
306  }
307 
308  return StatusCode::SUCCESS;
309 }
310 
311 
314  m_topoSteering->inputEvent().dumpFinish();
315  return StatusCode::SUCCESS;
316 }
317 
318 void
319 L1TopoSimulation::WriteEDM(SG::WriteHandle<xAOD::L1TopoSimResultsContainer> &handle, const std::string &name, unsigned int clock, uint32_t word) {
320 
321  handle->push_back(std::make_unique<xAOD::L1TopoSimResults>());
322  handle->back()->setConnectionId(TCS::outputType(name));
323  handle->back()->setClock(clock);
324  handle->back()->setBitWidth(32);
325  handle->back()->setTopoWord(word);
326 
327  ATH_MSG_DEBUG( "L1Topo EDM:: Connection Id: " << handle->back()->connectionId() << " Clock: " << handle->back()->clock() << " Decision: " << handle->back()->topoWord() );
328 }
329 
330 void
332 
333  handle->push_back(std::make_unique<xAOD::L1TopoSimResults>());
334  handle->back()->setConnectionId(TCS::outputType(name));
335  handle->back()->setClock(clock);
336  handle->back()->setBitWidth(32);
337  handle->back()->setTopoWordOverflow(word);
338 
339  ATH_MSG_DEBUG( "L1Topo EDM:: Connection Id: " << handle->back()->connectionId() << " Clock: " << handle->back()->clock() << " Decision: " << handle->back()->topoWord() );
340 }
341 
342 void
343 L1TopoSimulation::WriteEDM(SG::WriteHandle<xAOD::L1TopoSimResultsContainer> &handle, const std::string &name, unsigned int clock, uint64_t word) {
344 
345  handle->push_back(std::make_unique<xAOD::L1TopoSimResults>());
346  handle->back()->setConnectionId(TCS::outputType(name));
347  handle->back()->setClock(clock);
348  handle->back()->setBitWidth(64);
349  handle->back()->setTopoWord64(word);
350 
351  ATH_MSG_DEBUG( "L1Topo EDM:: Connection Id: " << handle->back()->connectionId() << " Clock: " << handle->back()->clock() << " Decision: " << handle->back()->topoWord() );
352 }
353 
354 void
356 
357  handle->push_back(std::make_unique<xAOD::L1TopoSimResults>());
358  handle->back()->setConnectionId(TCS::outputType(name));
359  handle->back()->setClock(clock);
360  handle->back()->setBitWidth(64);
361  handle->back()->setTopoWord64Overflow(word);
362 
363  ATH_MSG_DEBUG( "L1Topo EDM:: Connection Id: " << handle->back()->connectionId() << " Clock: " << handle->back()->clock() << " Decision: " << handle->back()->topoWord() );
364 }
365 
367 L1TopoSimulation::retrieveHardwareDecision(bool isLegacy, const EventContext& ctx)
368 {
369  if (isLegacy) {return hardwareDecisionLegacy();}
370  else {return hardwareDecisionPhase1(ctx);}
371 }
372 
375 {
376  // some duplication with L1TopoRDO::Helpers
377  // getDecisionAndOverflowBits() ?
378  StatusCode sc = StatusCode::SUCCESS;
379  std::bitset<TCS::TopoSteering::numberOfL1TopoBits> hardwareDaqRobTriggerBits;
380  std::bitset<TCS::TopoSteering::numberOfL1TopoBits> hardwareDaqRobOvrflowBits;
381  bool prescalForDAQROBAccess = true; // DG-2017-06-30 decide what to do when the hdw dec is not to be retrieved
382  if (prescalForDAQROBAccess){
383  std::vector<L1Topo::L1TopoTOB> daqTobsBC0;
384  std::vector<uint32_t> tobsbc0SourceIds; // to compute bit indices
385  const L1TopoRDOCollection* rdos = 0;
386  sc = evtStore()->retrieve(rdos);
387  if (sc.isFailure() or 0 == rdos) {
388  ATH_MSG_INFO ( "Could not retrieve L1Topo DAQ RDO collection from StoreGate" );
389  } else if (rdos->empty()) {
390  ATH_MSG_INFO ( "L1Topo DAQ RDO collection is empty" );
391  } else {
392  for (const L1TopoRDO* rdo : *rdos){
393  const std::vector<uint32_t> cDataWords = rdo->getDataWords();
394  // initialise header: set version 15, BCN -7, which is unlikely
395  L1Topo::Header header(0xf,0,0,0,0,1,0x7);
396  for (const uint32_t word : cDataWords){
397  switch (L1Topo::blockType(word)){
399  header = L1Topo::Header(word);
400  break;
401  }
403  auto tob = L1Topo::L1TopoTOB(word);
404  if (header.bcn_offset()==0){
405  daqTobsBC0.push_back(tob);
406  tobsbc0SourceIds.push_back(rdo->getSourceID());
407  }
408  break;
409  }
410  default: break;
411  }
412  } // for(word)
413  } // for(rdo)
414  }
415  for(uint32_t iTob=0; iTob<daqTobsBC0.size(); ++iTob){
416  const L1Topo::L1TopoTOB &tob = daqTobsBC0[iTob];
417  const uint32_t &sourceId = tobsbc0SourceIds[iTob];
418  for(unsigned int i=0; i<8; ++i){
419  unsigned int index = L1Topo::triggerBitIndexNew(sourceId, tob, i);
420  hardwareDaqRobTriggerBits[index] = (tob.trigger_bits()>>i)&1;
421  hardwareDaqRobOvrflowBits[index] = (tob.overflow_bits()>>i)&1;
422  }
423  }
424  m_topoSteering->setHardwareBits(hardwareDaqRobTriggerBits,
425  hardwareDaqRobOvrflowBits);
426  }
427  return sc;
428 }
429 
430 
433 {
434  // some duplication with L1TopoRDO::Helpers
435  // getDecisionAndOverflowBits() ?
436  StatusCode sc = StatusCode::SUCCESS;
437 
438  std::bitset<TCS::TopoSteering::numberOfL1TopoBits> hardwareDaqRobTriggerBits;
439  std::bitset<TCS::TopoSteering::numberOfL1TopoBits> hardwareDaqRobOvrflowBits;
440 
442  if(!cont.isValid()){
443  ATH_MSG_FATAL("Could not retrieve L1Topo RAW Data Container from the BS data.");
444  return StatusCode::FAILURE;
445  }
446 
447  std::unique_ptr<L1Topo::L1TopoResult> l1topoResult = std::make_unique<L1Topo::L1TopoResult>(*cont);
448  if (!l1topoResult->getStatus()) {
449  ATH_MSG_WARNING("Decoding L1Topo results failed!!");
450  return StatusCode::FAILURE;
451  }
452  hardwareDaqRobTriggerBits = l1topoResult->getDecisions();
453  hardwareDaqRobOvrflowBits = l1topoResult->getOverflows();
454 
455 
456 
457  m_topoSteering->setHardwareBits(hardwareDaqRobTriggerBits,
458  hardwareDaqRobOvrflowBits);
459 
460  return sc;
461 }
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
L1TopoRDO
The class that represents the raw data received from an L1Topo board.
Definition: L1TopoRDO.h:29
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
L1Topo::triggerBitIndexNew
unsigned int triggerBitIndexNew(uint32_t moduleId, const L1Topo::L1TopoTOB &, unsigned int bitIdx)
Helper to calculate the index needed to pack trigger bits into the full 128-bit decision....
Definition: Trigger/TrigT1/L1Topo/L1TopoRDO/src/Helpers.cxx:144
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
EmTauROI_ClassDEF.h
header
Definition: hcg.cxx:526
AthenaL1TopoHistSvc.h
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
L1Topo::L1TopoTOB
Represents the L1Topo TOB word of the L1Topo ROI data, with decode and encoder.
Definition: L1TopoTOB.h:17
ATLAS_NOT_THREAD_SAFE
StatusCode L1TopoSimulation::initialize ATLAS_NOT_THREAD_SAFE()
Install fatal handler with default options.
Definition: L1TopoSimulation.cxx:51
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
make_unique
std::unique_ptr< T > make_unique(Args &&... args)
Definition: SkimmingToolEXOT5.cxx:23
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:67
index
Definition: index.py:1
L1TopoMenu.h
L1TopoSimResults.h
initialize
void initialize()
Definition: run_EoverP.cxx:894
BlockTypes.h
L1Topo::blockType
L1Topo::BlockTypes blockType(const uint32_t word, uint32_t offset=28, uint32_t size=0x0f)
Function to return the block type of a data word from L1Topo
Definition: BlockTypes.cxx:9
TCS::outputType
outputTopoType_t outputType(const std::string &output)
Definition: Types.cxx:146
LVL1::L1TopoSimulation::m_topoCTPLocation
SG::WriteHandleKey< LVL1::FrontPanelCTP > m_topoCTPLocation
SG key of decision bits for CTP.
Definition: L1TopoSimulation.h:80
Types.h
TrigConf::L1Menu
L1 menu configuration.
Definition: L1Menu.h:28
LVL1::L1TopoSimulation::m_fillHistogramsBasedOnHardwareDecision
Gaudi::Property< bool > m_fillHistogramsBasedOnHardwareDecision
Definition: L1TopoSimulation.h:102
TCS::TopoInputEvent::setEventInfo
StatusCode setEventInfo(const uint32_t runNo, const uint32_t evtNo, const uint32_t lumiB, const uint32_t BCID)
Definition: TopoInputEvent.cxx:215
LVL1::L1TopoSimulation::m_scaler
std::unique_ptr< LVL1::PeriodicScaler > m_scaler
Definition: L1TopoSimulation.h:66
LVL1::L1TopoSimulation::m_isLegacyTopo
Gaudi::Property< bool > m_isLegacyTopo
Definition: L1TopoSimulation.h:94
LVL1::L1TopoSimulation::m_emtauInputProvider
ToolHandle< IInputTOBConverter > m_emtauInputProvider
Definition: L1TopoSimulation.h:71
TCS::GlobalOutput::overflow_field
uint64_t overflow_field(const std::string &l1connName) const
Definition: GlobalOutput.cxx:84
LVL1
eFexTowerBuilder creates xAOD::eFexTowerContainer from supercells (LATOME) and triggerTowers (TREX) i...
Definition: ICMMCPHitsCnvTool.h:18
LVL1::L1TopoSimulation::m_enableInputDump
Gaudi::Property< bool > m_enableInputDump
Definition: L1TopoSimulation.h:95
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
LVL1::L1TopoSimulation::start
virtual StatusCode start() override
Definition: L1TopoSimulation.cxx:138
LVL1::L1TopoSimulation::m_topoSteering
std::unique_ptr< TCS::TopoSteering > m_topoSteering
the topo steering
Definition: L1TopoSimulation.h:65
AthCommonDataStore< AthCommonMsg< Algorithm > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
LVL1::L1TopoSimulation::m_l1topoKey
SG::WriteHandleKey< xAOD::L1TopoSimResultsContainer > m_l1topoKey
Definition: L1TopoSimulation.h:88
L1Topo::Header
Represents the L1Topo header word of the L1Topo DAQ data, with decoder and encoder.
Definition: L1Topo/L1TopoRDO/L1TopoRDO/Header.h:18
LVL1::L1TopoSimulation::m_prescale
Gaudi::Property< unsigned int > m_prescale
Definition: L1TopoSimulation.h:104
LVL1::L1TopoSimulation::m_energyInputProvider
ToolHandle< IInputTOBConverter > m_energyInputProvider
Definition: L1TopoSimulation.h:73
SG::makeHandle
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
Definition: ReadCondHandle.h:274
LVL1::L1TopoSimulation::WriteEDM_Overflow
void WriteEDM_Overflow(SG::WriteHandle< xAOD::L1TopoSimResultsContainer > &handle, const std::string &name, unsigned int clock, uint32_t word)
Definition: L1TopoSimulation.cxx:331
Header.h
AthCommonDataStore< AthCommonMsg< Algorithm > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
LVL1::L1TopoSimulation::m_muonInputProvider
ToolHandle< IInputTOBConverter > m_muonInputProvider
Definition: L1TopoSimulation.h:74
TopoInputEvent.h
TCS::GlobalOutput
Definition: GlobalOutput.h:37
LVL1::L1TopoSimulation::m_l1topoRawDataKey
SG::ReadHandleKey< xAOD::L1TopoRawDataContainer > m_l1topoRawDataKey
Definition: L1TopoSimulation.h:90
TrigConf::MSGTC::Level
Level
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStream.h:21
LVL1::L1TopoSimulation::m_jetInputProvider
ToolHandle< IInputTOBConverter > m_jetInputProvider
Definition: L1TopoSimulation.h:72
lumiFormat.i
int i
Definition: lumiFormat.py:85
L1Topo::BlockTypes::L1TOPO_TOB
@ L1TOPO_TOB
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
LVL1::L1TopoSimulation::hardwareDecisionPhase1
StatusCode hardwareDecisionPhase1(const EventContext &ctx)
Definition: L1TopoSimulation.cxx:432
LVL1::L1TopoSimulation::isClonable
virtual bool isClonable() const override
Definition: L1TopoSimulation.cxx:45
TCS::TopoInputEvent
Definition: TopoInputEvent.h:42
calibdata.exception
exception
Definition: calibdata.py:495
L1TopoSimResultsAuxContainer.h
L1TopoRDOCollection.h
xAOD::uint64_t
uint64_t
Definition: EventInfo_v1.cxx:123
LVL1::L1TopoSimulation::execute
virtual StatusCode execute() override
Definition: L1TopoSimulation.cxx:162
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
LVL1::L1TopoSimulation::m_topoOverflowCTPLocation
SG::WriteHandleKey< LVL1::FrontPanelCTP > m_topoOverflowCTPLocation
SG key of overflow bits for CTP.
Definition: L1TopoSimulation.h:81
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:422
LVL1::L1TopoSimulation::WriteEDM
void WriteEDM(SG::WriteHandle< xAOD::L1TopoSimResultsContainer > &handle, const std::string &name, unsigned int clock, uint32_t word)
Definition: L1TopoSimulation.cxx:319
IL1TopoHistSvc.h
LVL1::L1TopoSimulation::m_legacyL1topoKey
SG::WriteHandleKey< xAOD::L1TopoSimResultsContainer > m_legacyL1topoKey
Definition: L1TopoSimulation.h:87
DataVector::back
const T * back() const
Access the last element in the collection as an rvalue.
L1Topo::L1TopoResult::getDecisions
const std::bitset< s_nTopoOutputs > & getDecisions() const
Definition: L1Topo/L1TopoRDO/L1TopoRDO/L1TopoResult.h:45
AthAlgorithm
Definition: AthAlgorithm.h:47
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
TrigConf::name
Definition: HLTChainList.h:35
L1Topo::L1TopoResult::getOverflows
const std::bitset< s_nTopoOutputs > & getOverflows() const
Definition: L1Topo/L1TopoRDO/L1TopoRDO/L1TopoResult.h:46
LVL1::L1TopoSimulation::m_legacyTopoOverflowCTPLocation
SG::WriteHandleKey< LVL1::FrontPanelCTP > m_legacyTopoOverflowCTPLocation
SG key of overflow bits for CTP.
Definition: L1TopoSimulation.h:84
LVL1::L1TopoSimulation::m_inputDumpFile
Gaudi::Property< std::string > m_inputDumpFile
Definition: L1TopoSimulation.h:97
LVL1::L1TopoSimulation::L1TopoSimulation
L1TopoSimulation(const std::string &name, ISvcLocator *pSvcLocator)
Definition: L1TopoSimulation.cxx:36
python.PyKernel.detStore
detStore
Definition: PyKernel.py:41
LVL1::L1TopoSimulation::hardwareDecisionLegacy
StatusCode hardwareDecisionLegacy()
Definition: L1TopoSimulation.cxx:374
L1TopoRDOCollection
Container of L1TopoRDOs (standard Athena boilerplate)
Definition: L1TopoRDOCollection.h:13
ActsTrk::to_string
std::string to_string(const DetectorType &type)
Definition: GeometryDefs.h:34
DataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
TCS::TopoInputEvent::dump
void dump()
Definition: TopoInputEvent.cxx:494
SG::VarHandleBase::key
virtual const std::string & key() const override final
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleBase.cxx:64
TrigT1CaloDefs.h
LVL1::L1TopoSimulation::m_prescaleForDAQROBAccess
Gaudi::Property< unsigned int > m_prescaleForDAQROBAccess
Definition: L1TopoSimulation.h:103
L1Topo::L1TopoTOB::trigger_bits
uint32_t trigger_bits() const
accessor method for trigger bits
Definition: L1TopoTOB.cxx:84
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:73
TCS::GlobalOutput::decision_field
uint64_t decision_field(const std::string &l1connName) const
Definition: GlobalOutput.cxx:47
DeMoScan.index
string index
Definition: DeMoScan.py:362
TCS::GlobalOutput::count_field
std::bitset< 128 > count_field(const std::string &l1connName) const
Definition: GlobalOutput.cxx:74
L1Topo::L1TopoTOB::overflow_bits
uint32_t overflow_bits() const
accessor method for overflow bits
Definition: L1TopoTOB.cxx:81
SG::WriteHandle::record
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
TCS
Definition: Global/GlobalSimulation/src/IO/Decision.h:18
L1TopoSimulation.h
LVL1::L1TopoSimulation::m_legacyTopoCTPLocation
SG::WriteHandleKey< LVL1::FrontPanelCTP > m_legacyTopoCTPLocation
SG key of decision bits for CTP.
Definition: L1TopoSimulation.h:83
python.XMLReader.l1menu
l1menu
Definition: XMLReader.py:73
L1Topo::BlockTypes::HEADER
@ HEADER
L1Topo::L1TopoResult::getStatus
bool getStatus()
Definition: L1Topo/L1TopoRDO/L1TopoRDO/L1TopoResult.h:51
L1TopoTOB.h
LVL1::L1TopoSimulation::finalize
virtual StatusCode finalize() override
Definition: L1TopoSimulation.cxx:313
LVL1::PeriodicScaler
Definition: PeriodicScaler.h:43
makeTOC.header
header
Definition: makeTOC.py:28
TCS::GlobalOutput::ambiguity_field
uint64_t ambiguity_field(const std::string &l1connName) const
Definition: GlobalOutput.cxx:111
LVL1::L1TopoSimulation::retrieveHardwareDecision
StatusCode retrieveHardwareDecision(bool isLegacy, const EventContext &ctx)
Retrieve the L1Topo hardware bits from the DAQ RODs.
Definition: L1TopoSimulation.cxx:367
L1TopoResult.h
DataVector::empty
bool empty() const noexcept
Returns true if the collection is empty.
Helpers.h