ATLAS Offline Software
TopoSteering.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
7 
8 
14 #include "L1TopoCommon/Exception.h"
15 #include "L1TopoEvent/GenericTOB.h"
16 
20 
27 
28 // c++ libraries
29 #include <iomanip>
30 #include <string>
31 
32 using namespace std;
33 using namespace TCS;
34 using namespace TrigConf;
35 
36 
37 TopoSteering::TopoSteering() :
38  TrigConfMessaging("TopoSteering")
39 {}
40 
42 TopoSteering::setupFromConfiguration ATLAS_NOT_THREAD_SAFE (const TrigConf::L1Menu& l1menu){
43 
44  TCS::StatusCode sc = m_structure.setupFromMenu( l1menu, m_isLegacyTopo );
45 
46  // configure layout of the simulation result
47  sc &= m_simulationResult.setupFromMenu( m_structure.outputConnectors(), m_structure.countConnectors() );
48 
49  return sc;
50 
51 }
52 
55 
77 
78  inputEvent().clear();
79 
81 
83 
85 }
86 
87 
90  TRG_MSG_INFO("initializing algorithms");
91  if( ! structure().isConfigured() ) {
92  TCS_EXCEPTION("L1Topo Steering has not been configured, can't run")
93  }
94 
95  for(auto conn: m_structure.connectors()) {
96  TCS::ConfigurableAlg * alg = conn->algorithm();
97  if(alg) {
98  TRG_MSG_INFO("initializing algorithm " << alg->name());
99  if(m_histSvc) {
100  alg->setL1TopoHistSvc(m_histSvc);
101  }
102  alg->setLegacyMode(m_isLegacyTopo);
103  alg->initialize();
104  }
105 
106  }
107 
109 }
110 
111 
113 TopoSteering::setHistSvc(std::shared_ptr<IL1TopoHistSvc> histSvc) {
114  TRG_MSG_INFO("setting L1TopoHistSvc ");
115  m_histSvc = histSvc;
117 }
118 
119 
122  if(m_histSvc) {
123  m_histSvc->save();
124  } else {
125  TRG_MSG_WARNING("saveHist called without an L1TopoHistSvc being available");
126  }
128 }
129 
130 
133 
134 
135  TRG_MSG_INFO("L1 TopoSteering: start executing event " << m_evtCounter << "-----------------------------------");
136 
137 
138  if( ! structure().isConfigured() ) {
139  TRG_MSG_INFO("L1Topo Steering has not been configured, can't run");
140  TCS_EXCEPTION("L1Topo Steering has not been configured, can't run");
141  }
142 
143  inputEvent().print();
144 
145  // execute all connectors
147  TRG_MSG_INFO("Going to execute " << m_structure.outputConnectors().size() << " decision connectors and " << m_structure.countConnectors().size() << " multiplicity connectors.");
148  for(auto outConn: m_structure.outputConnectors()) {
149  TRG_MSG_INFO("executing trigger line " << outConn.first);
150  sc |= executeConnector(outConn.second);
151  TRG_MSG_INFO("result of trigger line " << outConn.first << " : " << outConn.second->decision().decision());
152  }
153 
154  for(auto multConn: m_structure.countConnectors()) {
155  TRG_MSG_INFO("executing trigger line " << multConn.first);
156  sc |= executeConnector(multConn.second);
157  }
158 
160 
162 
163  TRG_MSG_INFO("finished executing event " << m_evtCounter++);
165 }
166 
167 
168 
170 TopoSteering::executeTrigger(const std::string & TrigName) {
171  if( ! structure().isConfigured() )
172  TCS_EXCEPTION("TopoSteering has not been configured, can't run");
173 
174  DecisionConnector * outConn = m_structure.outputConnector(TrigName);
175 
177 
179 
180  return sc;
181 }
182 
183 
184 
185 
186 
187 
190 
191  if (conn == NULL) {
193  }
194 
195  // caching
196  if(conn->isExecuted())
197  return conn->executionStatusCode();
198 
200 
201  if(conn->isInputConnector()) {
202  //TRG_MSG_DEBUG(" ... executing input connector '" << conn->name() << "'");
203  sc = executeInputConnector(dynamic_cast<InputConnector*>(conn));
204  } else if(conn->isSortingConnector()) {
205  //TRG_MSG_DEBUG(" ... executing sorting connector '" << conn->name() << "'");
206  sc = executeSortingConnector(dynamic_cast<SortingConnector*>(conn));
207  } else if(conn->isDecisionConnector()){
208  //TRG_MSG_DEBUG(" ... executing decision connector '" << conn->name() << "'");
210  } else if(conn->isCountingConnector()){
212  }
213 
214  conn->setIsExecuted(true);
215  conn->setExecutionStatusCode(sc);
216 
217  return sc;
218 }
219 
220 
221 
224 
225  if (conn == NULL) {
227  }
228 
230 
231  // attaching data from inputEvent to input connector, depending on the configured input type
232 
233  const InputTOBArray * inputData = inputEvent().inputTOBs( conn->inputTOBType() );
234  const bool hasInputOverflow = inputEvent().hasInputOverflow(conn->inputTOBType());
235  conn->attachOutputData( inputData );
236  conn->toggleInputOverflow(hasInputOverflow);
237 
238  TRG_MSG_DEBUG(" ... executing input connector '" << conn->name() << "' -> attaching '" << inputData->name() << "' of size " << inputData->size());
239 
240  return sc;
241 }
242 
243 
244 
247 
248  if (conn == NULL) {
249  return StatusCode::FAILURE;
250  }
251 
253 
254  // execute all the prior connectors
255  for( TCS::Connector* inputConn: conn->inputConnectors() ){
256  sc &= executeConnector(inputConn);
257  conn->toggleInputOverflow(conn->hasInputOverflow() ||
258  inputConn->hasInputOverflow());
259  }
260  TCS::SortingAlg* alg = conn->sortingAlgorithm();
261 
262  TOBArray * sortedOutput = new TOBArray(conn->outputName());
263 
264  sc &= executeSortingAlgorithm(alg, conn->inputConnector(), sortedOutput);
265 
266  conn->toggleAmbiguity(sortedOutput->ambiguityFlag());
267 
268  TRG_MSG_DEBUG(" ... executing sorting connector '" << conn->name() << "' -> attaching '" << sortedOutput->name() << "' of size " << sortedOutput->size());
269 
270  conn->attachOutputData(sortedOutput);
271 
272  return sc;
273 }
274 
275 
276 
279 
280  if (conn == NULL) {
282  }
283 
285 
286  // execute all the prior connectors
287  for( TCS::Connector* inputConn: conn->inputConnectors() ){
288  sc &= executeConnector(inputConn);
289  conn->toggleInputOverflow(conn->hasInputOverflow() ||
290  inputConn->hasInputOverflow());
291  conn->toggleAmbiguity(conn->hasAmbiguity() ||
292  inputConn->hasAmbiguity());
293  }
294  // execute
295  TCS::DecisionAlg* alg = conn->decisionAlgorithm();
296 
297  // TRG_MSG_DEBUG(" ... executing decision connector '" << conn->name() << "' with " << conn->triggers().size() << " active trigger lines. The algorithm has " << alg->numberOutputBits() << " output bits.");
298 
299  // the output is one TOBArray per output line
300  vector<TOBArray *> output( alg->numberOutputBits() );
301 
302  for(unsigned int i=0; i<alg->numberOutputBits(); ++i) {
303  output[i] = new TOBArray(conn->triggers()[i].name());
304  output[i]->setAmbiguityFlag(conn->hasAmbiguity());
305  }
306 
307  sc &= executeDecisionAlgorithm(alg, conn->inputConnectors(), output, conn->m_decision);
308 
309  TRG_MSG_DEBUG(" ... executing decision connector '" << conn->name() << "' -> attaching output data:");
310  for(TOBArray const * outarr : output) {
311  TRG_MSG_DEBUG(" data '" << outarr->name() << "' of size " << outarr->size());
312  conn->toggleAmbiguity(outarr->ambiguityFlag());
313  }
314 
315  conn->attachOutputData(output);
316 
317  conn->setIsExecuted(true);
318  conn->setExecutionStatusCode(sc);
319  bool sortOverflow = false;
320  for(TCS::Connector* inputConnector: conn->inputConnectors()) {
321  // TODO DG-2017-04-18 the sort overflow (>10 TOBs) in the SortAlg is not implemented yet
322  if(inputConnector->isSortingConnector()) {
323  if (auto sortConn = dynamic_cast<SortingConnector*>(inputConnector)) {
324  sortOverflow = sortConn->sortingAlgorithm()->overflow();
325  if (sortOverflow) break;
326  }
327  }
328  }
329  conn->m_decision.setOverflow(conn->hasInputOverflow() || sortOverflow);
330  conn->m_decision.setAmbiguity(conn->hasAmbiguity());
331  return sc;
332 }
333 
334 
337 
338  if (conn == NULL) {
340  }
341 
343 
344  // execute all the prior connectors
345  for( TCS::Connector* inputConn: conn->inputConnectors() ){
346  sc &= executeConnector(inputConn);
347  conn->toggleInputOverflow(conn->hasInputOverflow() ||
348  inputConn->hasInputOverflow());
349  }
350 
351  // execute
352  TCS::CountingAlg* alg = conn->countingAlgorithm();
353 
354  // Execute algorithm with no output data - not needed for now
355  sc &= executeCountingAlgorithm(alg, conn->inputConnector(), conn->m_count);
356 
357  conn->setIsExecuted(true);
358  conn->setExecutionStatusCode(sc);
359 
360  // TO-DO overflows in multiplicity algorithms
361 
362  return sc;
363 }
364 
365 
366 
369  TCS::InputConnector* inputConnector,
370  TCS::TOBArray * & sortedOutput) {
371 
372  TRG_MSG_DEBUG(" ... executing sorting alg '" << alg->fullname() << "'"
373  <<(m_useBitwise?" (bitwise)":""));
374 
375  const InputTOBArray * input = inputConnector->outputData();
376 
377  if(m_useBitwise) alg->sortBitCorrect(*input, *sortedOutput);
378  else alg->sort(*input, *sortedOutput);
379 
381 }
382 
383 
384 
387  const std::vector<Connector*> & inputConnectors,
388  const std::vector<TCS::TOBArray *> & output,
389  TCS::Decision & decision) {
390 
391  TRG_MSG_DEBUG(" ... executing decision alg '" << alg->fullname() << "'"
392  <<(m_useBitwise?" (bitwise)":""));
393 
394  if(inputConnectors.size()<1) {
395  TCS_EXCEPTION("L1Topo Steering: Decision algorithm expects at least 1 input array but got 0");
396  }
397 
398  std::vector<TCS::TOBArray const *> input; // needs to be optimized
399  for(const Connector* inConn: inputConnectors)
400  {
401  if (inConn == nullptr) continue;
402  const SortingConnector * sc = dynamic_cast<const SortingConnector *>(inConn);
403  if (sc==nullptr) {
404  TCS_EXCEPTION("L1Topo Steering: Decision algorithm " << alg->name() << " could not cast as SortingConnector* the input connector " << inConn->name());
405  }
406  else {
407  const TOBArray * tobA = dynamic_cast<const TOBArray *>( sc->outputData());
408  if(tobA==nullptr) {
409  TCS_EXCEPTION("L1Topo Steering: Decision algorithm " << alg->name() << " expects TOBArray(s) as input, but did not get it from connector " << (inConn ? inConn->name() : ""));
410  }
411  input.push_back( tobA );
412  }
413  }
414 
415  alg->reset();
416 
417 
418  if(m_useBitwise) alg->processBitCorrect( input, output, decision);
419  else alg->process( input, output, decision );
420  //TRG_MSG_ALWAYS("[XS1234sz]L1Topo Steering alg " << alg->name() << " has decision " << decision.decision());
421 
423 }
424 
425 
428  TCS::InputConnector* inputConnector,
429  TCS::Count & count) {
430 
431  TRG_MSG_DEBUG(" ... executing multiplicity alg '" <<alg->fullname() << "'");
432 
433  const InputTOBArray * input = inputConnector->outputData();
434 
435  alg->process( *input, count);
436 
438 }
439 
440 
441 void
443  TRG_MSG_INFO("Number of ClusterTOB : " << ClusterTOB::heap().size());
444  TRG_MSG_INFO("Number of eEmTOB : " << eEmTOB::heap().size());
445  TRG_MSG_INFO("Number of JetTOB : " << JetTOB::heap().size());
446  TRG_MSG_INFO("Number of jJetTOB : " << jJetTOB::heap().size());
447  TRG_MSG_INFO("Number of GenericTOB : " << GenericTOB::heap().size());
448  TRG_MSG_INFO("Number of CompositeTOB: " << CompositeTOB::heap().size());
449  TRG_MSG_INFO("Number of MuonTOB : " << MuonTOB::heap().size());
450  TRG_MSG_INFO("Number of LateMuonTOB : " << LateMuonTOB::heap().size());
451 }
452 
453 
454 
455 void
456 TopoSteering::printConfiguration(std::ostream & o) const {
457  o << "==========================" << endl
458  << "TopoSteering configuration" << endl
459  << "--------------------------" << endl;
460  structure().print(o);
461  o << "==========================" << endl;
462 }
463 
464 
465 
466 void
468 
469  //const char* levelNames[TrigConf::MSGTC::NUM_LEVELS] = {"NIL","VERBOSE","DEBUG","INFO",
470  // "WARNING","ERROR","FATAL","ALWAYS"};
471  msg().setLevel( lvl );
472 
473  inputEvent().msg().setLevel(lvl);
474 
476 }
477 
478 void
480 
481  m_AlgMsgLvl = lvl;
482 
483  for( Connector * conn : m_structure.connectors() ) {
484  const ConfigurableAlg * alg = conn->algorithm();
485  if(alg==nullptr) continue;
486  alg->msg().setLevel(lvl);
487  }
488 }
489 
490 //----------------------------------------------------------
491 void TopoSteering::setHardwareBits(const std::bitset<numberOfL1TopoBits> &triggerBits,
492  const std::bitset<numberOfL1TopoBits> &ovrflowBits)
493 {
494  m_triggerHdwBits = triggerBits;
495  m_ovrflowHdwBits = ovrflowBits;
496 }
497 //----------------------------------------------------------
499 {
500  for(auto connector : m_structure.outputConnectors()) {
501  const string &connectorName = connector.first;
502  TCS::DecisionConnector *outCon = connector.second;
504  unsigned int pos = 0; // for multi-output algorithms pos is the output index
505  for(const TrigConf::TriggerLine &trigger : outCon->triggers()){
506  unsigned int bitNumber = trigger.flatindex();
508  m_triggerHdwBits[bitNumber],
509  m_ovrflowHdwBits[bitNumber]);
510  pos++;
511  TRG_MSG_DEBUG("propagating hardware bit (dec/ovr) "<<bitNumber
512  <<" to algo "<<connectorName<<"["<<pos<<"]"
513  <<" "<<m_triggerHdwBits[bitNumber]<<" /"
514  <<" "<<m_ovrflowHdwBits[bitNumber]);
515 
516  }
517  }
518 }
519 //----------------------------------------------------------
521 {
522  for(auto connector : m_structure.outputConnectors()) {
523  const string &connectorName = connector.first;
524  TCS::DecisionConnector *outCon = connector.second;
525  if(outCon) {
527  } else {
528  TRG_MSG_DEBUG("skipping invalid DecisionConnector '"<<connectorName<<"'");
529  }
530  }
531 }
532 //----------------------------------------------------------
534 {
535  for(auto connector : m_structure.outputConnectors()) {
536  const string &connectorName = connector.first;
537  TCS::DecisionConnector *outCon = connector.second;
538  if(outCon) {
540  } else {
541  TRG_MSG_DEBUG("skipping invalid DecisionConnector '"<<connectorName<<"'");
542  }
543  }
544 }
545 //----------------------------------------------------------
ParameterSpace.h
TCS::TopoSteering::setHardwareBits
void setHardwareBits(const std::bitset< numberOfL1TopoBits > &triggerBits, const std::bitset< numberOfL1TopoBits > &ovrflowBits)
cache the decision/overflow bits from hardware These bits are propagated to the algorithms with propa...
Definition: TopoSteering.cxx:491
TCS::JetTOB::heap
static const Heap< TCS::JetTOB > & heap()
Definition: JetTOB.h:71
TCS::TopoSteeringStructure::connectors
const std::vector< TCS::Connector * > & connectors() const
Definition: TopoSteeringStructure.h:43
TCS::TopoSteering::m_ovrflowHdwBits
std::bitset< numberOfL1TopoBits > m_ovrflowHdwBits
Definition: TopoSteering.h:168
TCS::TopoSteering::executeDecisionAlgorithm
StatusCode executeDecisionAlgorithm(TCS::DecisionAlg *alg, const std::vector< Connector * > &inputConnectors, const std::vector< TCS::TOBArray * > &output, Decision &decsion)
Definition: TopoSteering.cxx:386
TCS::TopoInputEvent::clear
StatusCode clear()
Definition: TopoInputEvent.cxx:430
TCS::ClusterTOB::clearHeap
static void clearHeap()
Definition: ClusterTOB.cxx:40
TCS::GenericTOB::clearHeap
static void clearHeap()
Definition: GenericTOB.cxx:269
checkCorrelInHIST.conn
conn
Definition: checkCorrelInHIST.py:25
TCS::StatusCode::SUCCESS
@ SUCCESS
Definition: Trigger/TrigT1/L1Topo/L1TopoCommon/L1TopoCommon/StatusCode.h:17
TCS::MuonTOB::heap
static const Heap< TCS::MuonTOB > & heap()
Definition: MuonTOB.h:79
TCS::TopoSteering::saveHist
StatusCode saveHist()
Definition: TopoSteering.cxx:121
SGout2dot.alg
alg
Definition: SGout2dot.py:243
TCS::TopoSteeringStructure::countConnectors
const std::map< std::string, TCS::CountingConnector * > & countConnectors() const
Definition: TopoSteeringStructure.h:47
TCS::TopoSteeringStructure::outputConnector
DecisionConnector * outputConnector(const std::string &output)
Definition: TopoSteeringStructure.cxx:498
TCS::StatusCode::FAILURE
@ FAILURE
Definition: Trigger/TrigT1/L1Topo/L1TopoCommon/L1TopoCommon/StatusCode.h:17
TCS::TopoCoreSimResult::reset
StatusCode reset()
Definition: TopoCoreSimResult.cxx:73
TCS::Connector
Definition: Connector.h:22
TCS::TOBArray::ambiguityFlag
bool ambiguityFlag() const
Definition: TOBArray.h:37
InputConnector.h
L1TopoMenu.h
TCS::TopoSteering::setOutputAlgosFillBasedOnHardware
void setOutputAlgosFillBasedOnHardware(const bool &value)
tell output algos to fill accept/reject histos based on hdw decision.
Definition: TopoSteering.cxx:520
TCS::TopoSteering::executeInputConnector
StatusCode executeInputConnector(TCS::InputConnector *conn)
Definition: TopoSteering.cxx:223
TCS::GlobalOutput::print
void print() const
Definition: GlobalOutput.cxx:229
TCS::TopoSteering::structure
const TopoSteeringStructure & structure() const
Definition: TopoSteering.h:52
TCS::TopoSteering::executeSortingConnector
StatusCode executeSortingConnector(TCS::SortingConnector *conn)
Definition: TopoSteering.cxx:246
TCS::LateMuonTOB::clearHeap
static void clearHeap()
Definition: LateMuonTOB.cxx:38
TCS::TopoSteering::propagateHardwareBitsToAlgos
void propagateHardwareBitsToAlgos()
propagate the bits from hardware to each simulated decision algo.
Definition: TopoSteering.cxx:498
TCS::DecisionAlg::setFillHistosBasedOnHardware
DecisionAlg & setFillHistosBasedOnHardware(const bool &value)
! toggle m_fillHistosBasedOnHardware
Definition: Trigger/TrigT1/L1Topo/L1TopoInterfaces/Root/DecisionAlg.cxx:78
TCS::jLJetTOB::clearHeap
static void clearHeap()
Definition: jLJetTOB.cxx:32
ConfigurableAlg.h
athena.value
value
Definition: athena.py:122
TCS::CountingConnector
Definition: CountingConnector.h:26
TCS::SortingConnector
Definition: SortingConnector.h:24
TCS::TopoSteering::printConfiguration
void printConfiguration(std::ostream &o) const
Definition: TopoSteering.cxx:456
TrigConf::L1Menu
L1 menu configuration.
Definition: L1Menu.h:28
TCS::TopoSteering::m_triggerHdwBits
std::bitset< numberOfL1TopoBits > m_triggerHdwBits
Definition: TopoSteering.h:167
TCS::TopoSteeringStructure::reset
StatusCode reset()
Definition: TopoSteeringStructure.cxx:79
TCS::eEmTOB::heap
static const Heap< TCS::eEmTOB > & heap()
Definition: eEmTOB.h:61
TCS::DataArray::name
const std::string & name() const
Definition: DataArray.h:20
TCS::eEmTOB::clearHeap
static void clearHeap()
Definition: eEmTOB.cxx:38
TCS::eTauTOB::clearHeap
static void clearHeap()
Definition: eTauTOB.cxx:38
TCS::TopoSteeringStructure::outputConnectors
const std::map< std::string, TCS::DecisionConnector * > & outputConnectors() const
Definition: TopoSteeringStructure.h:45
L1TopoConfigGlobal.h
TCS::InputTOBArray::size
virtual unsigned int size() const =0
CountingAlg.h
DecisionConnector.h
XMLtoHeader.count
count
Definition: XMLtoHeader.py:85
TCS::TopoSteering::setAlgMsgLevel
void setAlgMsgLevel(TrigConf::MSGTC::Level lvl)
Definition: TopoSteering.cxx:479
TCS::DecisionAlg::setSkipHistos
DecisionAlg & setSkipHistos(const bool &value)
! toggle m_skipHistos (see TopoSteering::setOutputAlgosSkipHistograms)
Definition: Trigger/TrigT1/L1Topo/L1TopoInterfaces/Root/DecisionAlg.cxx:89
TCS::TopoSteering::inputEvent
TopoInputEvent & inputEvent()
Definition: TopoSteering.h:54
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
TCS::jXETOB::clearHeap
static void clearHeap()
Definition: jXETOB.cxx:33
TCS::cTauTOB::clearHeap
static void clearHeap()
Definition: cTauTOB.cxx:38
TCS::DecisionAlg
Definition: Trigger/TrigT1/L1Topo/L1TopoInterfaces/L1TopoInterfaces/DecisionAlg.h:22
TCS::TopoSteering::setMsgLevel
void setMsgLevel(TrigConf::MSGTC::Level lvl)
Definition: TopoSteering.cxx:467
TrigConf
Forward iterator to traverse the main components of the trigger configuration.
Definition: Config.h:22
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
TCS::jTETOB::clearHeap
static void clearHeap()
Definition: jTETOB.cxx:31
TCS::TopoSteering::m_AlgMsgLvl
TrigConf::MSGTC::Level m_AlgMsgLvl
Definition: TopoSteering.h:163
TCS::TopoSteering::m_isLegacyTopo
bool m_isLegacyTopo
Definition: TopoSteering.h:153
TCS::TopoSteering::printDebugInfo
void printDebugInfo()
Definition: TopoSteering.cxx:442
TrigConf::MSGTC::Level
Level
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStream.h:21
TrigConf::TriggerLine
a TriggerLine entry describes the location of a threshold multiplicity on a cable (connector)
Definition: L1Connector.h:21
TCS::CompositeTOB::clearHeap
static void clearHeap()
Definition: CompositeTOB.cxx:40
AlgFactory.h
TCS::TopoCoreSimResult::globalOutput
const GlobalOutput & globalOutput() const
Definition: TopoCoreSimResult.h:45
TCS::LateMuonTOB::heap
static const Heap< TCS::LateMuonTOB > & heap()
Definition: LateMuonTOB.h:74
TCS::MuonTOB::clearHeap
static void clearHeap()
Definition: MuonTOB.cxx:33
TCS::TopoSteering::executeCountingAlgorithm
StatusCode executeCountingAlgorithm(TCS::CountingAlg *alg, TCS::InputConnector *inputConnector, Count &count)
Definition: TopoSteering.cxx:427
TCS::gLJetTOB::clearHeap
static void clearHeap()
Definition: gLJetTOB.cxx:35
TCS::InputConnector
Definition: InputConnector.h:22
lumiFormat.i
int i
Definition: lumiFormat.py:92
TCS::DecisionAlg::setHardwareBits
DecisionAlg & setHardwareBits(const unsigned int &bitNumber, const bool &valueDecision, const bool &valueOverflow)
propagate the hardware decision bits for each output bit of this algo
Definition: Trigger/TrigT1/L1Topo/L1TopoInterfaces/Root/DecisionAlg.cxx:25
TCS::gJetTOB::clearHeap
static void clearHeap()
Definition: gJetTOB.cxx:35
TCS::DataArrayImpl::size
size_t size() const
Definition: DataArrayImpl.h:30
TCS::TopoSteering::m_histSvc
std::shared_ptr< IL1TopoHistSvc > m_histSvc
Definition: TopoSteering.h:165
TCS::DecisionConnector::decisionAlgorithm
TCS::DecisionAlg * decisionAlgorithm()
Definition: DecisionConnector.h:35
TrigConf::TrigConfMessaging::msg
MsgStreamTC & msg() const
The standard message stream.
Definition: TrigConfMessaging.h:81
TCS::TopoSteering::executeConnector
StatusCode executeConnector(TCS::Connector *conn)
Definition: TopoSteering.cxx:189
TCS::InputTOBArray
Definition: InputTOBArray.h:15
TCS::TopoInputEvent::hasInputOverflow
bool hasInputOverflow(TCS::inputTOBType_t) const
whether there are input overflows from Mioct for muon and from CMX for calo
Definition: TopoInputEvent.cxx:390
CountingConnector.h
PlotPulseshapeFromCool.input
input
Definition: PlotPulseshapeFromCool.py:106
TCS::TopoInputEvent::print
void print() const
Definition: TopoInputEvent.cxx:746
TCS::TopoSteering::executeCountingConnector
StatusCode executeCountingConnector(TCS::CountingConnector *conn)
Definition: TopoSteering.cxx:336
TCS::TopoInputEvent::inputTOBs
const InputTOBArray * inputTOBs(TCS::inputTOBType_t) const
Definition: TopoInputEvent.cxx:355
TCS::TopoCoreSimResult::setMsgLevel
void setMsgLevel(TrigConf::MSGTC::Level lvl)
Definition: TopoCoreSimResult.cxx:160
TCS::TopoSteering::executeEvent
StatusCode executeEvent()
Definition: TopoSteering.cxx:132
MuonSegmentReaderConfig.histSvc
histSvc
Definition: MuonSegmentReaderConfig.py:96
TCS::TopoSteering::executeSortingAlgorithm
StatusCode executeSortingAlgorithm(SortingAlg *alg, TCS::InputConnector *inputConnector, TOBArray *&output)
Definition: TopoSteering.cxx:368
LayoutConstraints.h
IL1TopoHistSvc.h
TCS_EXCEPTION
#define TCS_EXCEPTION(MSG)
Definition: Trigger/TrigT1/L1Topo/L1TopoCommon/L1TopoCommon/Exception.h:14
TCS::TopoSteering::initializeAlgorithms
StatusCode initializeAlgorithms()
Definition: TopoSteering.cxx:89
TCS::ClusterTOB::heap
static const Heap< TCS::ClusterTOB > & heap()
Definition: ClusterTOB.h:56
TCS::TopoCoreSimResult::collectResult
StatusCode collectResult(TCS::DecisionConnector *outputConn=nullptr, TCS::CountingConnector *countConn=nullptr)
Definition: TopoCoreSimResult.cxx:53
TCS::TOBArray
Definition: TOBArray.h:24
TCS::jTauTOB::clearHeap
static void clearHeap()
Definition: jTauTOB.cxx:32
TCS::MuonNextBCTOB::clearHeap
static void clearHeap()
Definition: MuonNextBCTOB.cxx:38
TCS::Decision
Definition: L1Topo/L1TopoInterfaces/L1TopoInterfaces/Decision.h:19
Connector.h
TCS::TopoSteering::reset
StatusCode reset()
Definition: TopoSteering.cxx:54
TCS::TopoSteering::m_useBitwise
bool m_useBitwise
Definition: TopoSteering.h:151
TRG_MSG_INFO
#define TRG_MSG_INFO(x)
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStreamMacros.h:27
merge.output
output
Definition: merge.py:17
TRG_MSG_WARNING
#define TRG_MSG_WARNING(x)
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStreamMacros.h:28
SortingAlg.h
TCS::ConfigurableAlg
Definition: ConfigurableAlg.h:30
DecisionAlg.h
TCS::CompositeTOB::heap
static const Heap< TCS::CompositeTOB > & heap()
Definition: CompositeTOB.h:46
TCS::DecisionConnector::triggers
const std::vector< TrigConf::TriggerLine > & triggers() const
Definition: DecisionConnector.h:44
TopoSteering.h
TCS::InputConnector::outputData
const InputTOBArray * outputData() const
Definition: InputConnector.h:33
TCS::TopoSteering::m_simulationResult
TopoCoreSimResult m_simulationResult
Definition: TopoSteering.h:157
TCS::DecisionAlg::resetHardwareBits
DecisionAlg & resetHardwareBits()
! reset all hardware bits for this algo
Definition: Trigger/TrigT1/L1Topo/L1TopoInterfaces/Root/DecisionAlg.cxx:45
TCS::jJetTOB::clearHeap
static void clearHeap()
Definition: jJetTOB.cxx:32
TrigConf::TrigConfMessaging
Class to provide easy access to TrigConf::MsgStream for TrigConf classes.
Definition: TrigConfMessaging.h:28
TCS::SortingAlg
Definition: SortingAlg.h:18
TCS::JetTOB::clearHeap
static void clearHeap()
Definition: JetTOB.cxx:37
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
GenericTOB.h
TCS::Count
Definition: L1Topo/L1TopoInterfaces/L1TopoInterfaces/Count.h:20
TCS::TopoSteering::m_structure
TopoSteeringStructure m_structure
Definition: TopoSteering.h:159
TCS::GenericTOB::heap
static const Heap< TCS::GenericTOB > & heap()
Definition: GenericTOB.h:110
TCS
Definition: Global/GlobalSimulation/src/IO/Decision.h:18
TCS::TopoSteering::executeDecisionConnector
StatusCode executeDecisionConnector(TCS::DecisionConnector *conn)
Definition: TopoSteering.cxx:278
python.XMLReader.l1menu
l1menu
Definition: XMLReader.py:73
TCS::gXETOB::clearHeap
static void clearHeap()
Definition: gXETOB.cxx:33
TCS::jEmTOB::clearHeap
static void clearHeap()
Definition: jEmTOB.cxx:32
TCS::MetTOB::clearHeap
static void clearHeap()
Definition: MetTOB.cxx:38
TrigConf::MsgStreamTC::setLevel
void setLevel(MSGTC::Level lvl)
Set message level of stream.
Definition: Trigger/TrigConfiguration/TrigConfBase/Root/MsgStream.cxx:52
TCS::TopoSteering::executeTrigger
StatusCode executeTrigger(const std::string &triggerName)
Definition: TopoSteering.cxx:170
Exception.h
TCS::TopoSteering::setOutputAlgosSkipHistograms
void setOutputAlgosSkipHistograms(const bool &value)
skip filling the histos
Definition: TopoSteering.cxx:533
TCS::TopoSteering::setHistSvc
StatusCode setHistSvc(std::shared_ptr< IL1TopoHistSvc > histSvc)
enables the histogramming service
Definition: TopoSteering.cxx:113
TCS::DecisionConnector
Definition: DecisionConnector.h:23
TCS::TopoSteeringStructure::print
void print(std::ostream &o) const
Definition: TopoSteeringStructure.cxx:87
TCS::CountingAlg
Definition: CountingAlg.h:25
TCS::jJetTOB::heap
static const Heap< TCS::jJetTOB > & heap()
Definition: jJetTOB.h:54
TRG_MSG_DEBUG
#define TRG_MSG_DEBUG(x)
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStreamMacros.h:25
TCS::StatusCode
Definition: Trigger/TrigT1/L1Topo/L1TopoCommon/L1TopoCommon/StatusCode.h:15
PhysDESDM_Quirks.trigger
trigger
Definition: PhysDESDM_Quirks.py:27
TCS::TopoSteering::m_evtCounter
unsigned int m_evtCounter
Definition: TopoSteering.h:161
SortingConnector.h
TCS::gTETOB::clearHeap
static void clearHeap()
Definition: gTETOB.cxx:31
ATLAS_NOT_THREAD_SAFE
TCS::StatusCode TopoSteering::setupFromConfiguration ATLAS_NOT_THREAD_SAFE(const TrigConf::L1Menu &l1menu)
Definition: TopoSteering.cxx:42