ATLAS Offline Software
Loading...
Searching...
No Matches
TCS::TopoSteering Class Reference

#include <TopoSteering.h>

Inheritance diagram for TCS::TopoSteering:
Collaboration diagram for TCS::TopoSteering:

Public Member Functions

 TopoSteering ()
const TopoSteeringStructurestructure () const
TopoInputEventinputEvent ()
const TopoCoreSimResultsimulationResult () const
StatusCode setupFromConfiguration ATLAS_NOT_THREAD_SAFE (const TrigConf::L1Menu &l1menu)
void setUseBitwise (bool useBitwise)
StatusCode initializeAlgorithms ()
StatusCode executeEvent ()
StatusCode executeTrigger (const std::string &triggerName)
StatusCode reset ()
void printDebugInfo ()
const TCS::ParameterSpaceparameters (const std::string &algName) const
const std::vector< TCS::Connector * > & connectors () const
void printConfiguration (std::ostream &o) const
void setMsgLevel (TrigConf::MSGTC::Level lvl)
void setAlgMsgLevel (TrigConf::MSGTC::Level lvl)
void setLegacyMode (bool isLegacyTopo)
StatusCode setHistSvc (std::shared_ptr< IL1TopoHistSvc > histSvc)
 enables the histogramming service
StatusCode saveHist ()
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 propagateHardwareBitsToAlgos.
void propagateHardwareBitsToAlgos ()
 propagate the bits from hardware to each simulated decision algo.
void setOutputAlgosFillBasedOnHardware (const bool &value)
 tell output algos to fill accept/reject histos based on hdw decision.
void setOutputAlgosSkipHistograms (const bool &value)
 skip filling the histos
bool msgLvl (const MSGTC::Level lvl) const
 Test the output level.
MsgStreamTC & msg () const
 The standard message stream.
MsgStreamTC & msg (const MSGTC::Level lvl) const
 The standard message stream.
const std::string & getName () const
 name accessor

Static Public Attributes

static const unsigned int numberOfL1TopoBits = 128

Private Member Functions

StatusCode executeConnector (TCS::Connector *conn)
StatusCode executeInputConnector (TCS::InputConnector *conn)
StatusCode executeSortingConnector (TCS::SortingConnector *conn)
StatusCode executeDecisionConnector (TCS::DecisionConnector *conn)
StatusCode executeCountingConnector (TCS::CountingConnector *conn)
StatusCode executeAlgorithm (ConfigurableAlg *alg, Connector *connector)
StatusCode executeSortingAlgorithm (SortingAlg *alg, TCS::InputConnector *inputConnector, TOBArray *&output)
StatusCode executeDecisionAlgorithm (TCS::DecisionAlg *alg, const std::vector< Connector * > &inputConnectors, const std::vector< TCS::TOBArray * > &output, Decision &decsion)
StatusCode executeCountingAlgorithm (TCS::CountingAlg *alg, TCS::InputConnector *inputConnector, Count &count)

Private Attributes

bool m_useBitwise {false}
bool m_isLegacyTopo {false}
TopoInputEvent m_inputEvent
TopoCoreSimResult m_simulationResult
TopoSteeringStructure m_structure
unsigned int m_evtCounter {1}
TrigConf::MSGTC::Level m_AlgMsgLvl { TrigConf::MSGTC::WARNING }
std::shared_ptr< IL1TopoHistSvcm_histSvc
std::bitset< numberOfL1TopoBitsm_triggerHdwBits
std::bitset< numberOfL1TopoBitsm_ovrflowHdwBits
boost::thread_specific_ptr< MsgStreamTC > m_msg_tls
 MsgStreamTC instance (a std::cout like with print-out levels)
std::string m_name

Detailed Description

Definition at line 47 of file TopoSteering.h.

Constructor & Destructor Documentation

◆ TopoSteering()

TopoSteering::TopoSteering ( )

Definition at line 38 of file TopoSteering.cxx.

38 :
39 TrigConfMessaging("TopoSteering")
40{}

Member Function Documentation

◆ ATLAS_NOT_THREAD_SAFE()

StatusCode setupFromConfiguration TCS::TopoSteering::ATLAS_NOT_THREAD_SAFE ( const TrigConf::L1Menu & l1menu)

◆ connectors()

const std::vector< TCS::Connector * > & TCS::TopoSteering::connectors ( ) const
inline

Definition at line 84 of file TopoSteering.h.

84{ return structure().connectors(); } //added
const std::vector< TCS::Connector * > & connectors() const
const TopoSteeringStructure & structure() const

◆ executeAlgorithm()

StatusCode TCS::TopoSteering::executeAlgorithm ( ConfigurableAlg * alg,
Connector * connector )
private

◆ executeConnector()

TCS::StatusCode TopoSteering::executeConnector ( TCS::Connector * conn)
private

Definition at line 190 of file TopoSteering.cxx.

190 {
191
192 if (conn == NULL) {
194 }
195
196 // caching
197 if(conn->isExecuted())
198 return conn->executionStatusCode();
199
200 TCS::StatusCode sc(TCS::StatusCode::SUCCESS);
201
202 if(conn->isInputConnector()) {
203 //TRG_MSG_DEBUG(" ... executing input connector '" << conn->name() << "'");
204 sc = executeInputConnector(dynamic_cast<InputConnector*>(conn));
205 } else if(conn->isSortingConnector()) {
206 //TRG_MSG_DEBUG(" ... executing sorting connector '" << conn->name() << "'");
207 sc = executeSortingConnector(dynamic_cast<SortingConnector*>(conn));
208 } else if(conn->isDecisionConnector()){
209 //TRG_MSG_DEBUG(" ... executing decision connector '" << conn->name() << "'");
210 sc = executeDecisionConnector(dynamic_cast<DecisionConnector*>(conn));
211 } else if(conn->isCountingConnector()){
212 sc = executeCountingConnector(dynamic_cast<CountingConnector*>(conn));
213 }
214
215 conn->setIsExecuted(true);
216 conn->setExecutionStatusCode(sc);
217
218 return sc;
219}
static Double_t sc
StatusCode executeSortingConnector(TCS::SortingConnector *conn)
StatusCode executeDecisionConnector(TCS::DecisionConnector *conn)
StatusCode executeInputConnector(TCS::InputConnector *conn)
StatusCode executeCountingConnector(TCS::CountingConnector *conn)

◆ executeCountingAlgorithm()

TCS::StatusCode TopoSteering::executeCountingAlgorithm ( TCS::CountingAlg * alg,
TCS::InputConnector * inputConnector,
TCS::Count & count )
private

Definition at line 428 of file TopoSteering.cxx.

430 {
431
432 TRG_MSG_DEBUG(" ... executing multiplicity alg '" <<alg->fullname() << "'");
433
434 const InputTOBArray * input = inputConnector->outputData();
435
436 alg->process( *input, count);
437
439}
const InputTOBArray * outputData() const
int count(std::string s, const std::string &regx)
count how many occurances of a regx are in a string
Definition hcg.cxx:146

◆ executeCountingConnector()

TCS::StatusCode TopoSteering::executeCountingConnector ( TCS::CountingConnector * conn)
private

Definition at line 337 of file TopoSteering.cxx.

337 {
338
339 if (conn == NULL) {
341 }
342
343 TCS::StatusCode sc = TCS::StatusCode::SUCCESS;
344
345 // execute all the prior connectors
346 for( TCS::Connector* inputConn: conn->inputConnectors() ){
347 sc &= executeConnector(inputConn);
348 conn->toggleInputOverflow(conn->hasInputOverflow() ||
349 inputConn->hasInputOverflow());
350 }
351
352 // execute
353 TCS::CountingAlg* alg = conn->countingAlgorithm();
354
355 // Execute algorithm with no output data - not needed for now
356 sc &= executeCountingAlgorithm(alg, conn->inputConnector(), conn->m_count);
357
358 conn->setIsExecuted(true);
359 conn->setExecutionStatusCode(sc);
360
361 // TO-DO overflows in multiplicity algorithms
362
363 return sc;
364}
StatusCode executeConnector(TCS::Connector *conn)
StatusCode executeCountingAlgorithm(TCS::CountingAlg *alg, TCS::InputConnector *inputConnector, Count &count)

◆ executeDecisionAlgorithm()

TCS::StatusCode TopoSteering::executeDecisionAlgorithm ( TCS::DecisionAlg * alg,
const std::vector< Connector * > & inputConnectors,
const std::vector< TCS::TOBArray * > & output,
TCS::Decision & decision )
private

Definition at line 387 of file TopoSteering.cxx.

390 {
391
392 TRG_MSG_DEBUG(" ... executing decision alg '" << alg->fullname() << "'"
393 <<(m_useBitwise?" (bitwise)":""));
394
395 if(inputConnectors.size()<1) {
396 TCS_EXCEPTION("L1Topo Steering: Decision algorithm expects at least 1 input array but got 0");
397 }
398
399 std::vector<TCS::TOBArray const *> input; // needs to be optimized
400 for(const Connector* inConn: inputConnectors)
401 {
402 if (inConn == nullptr) continue;
403 const SortingConnector * sc = dynamic_cast<const SortingConnector *>(inConn);
404 if (sc==nullptr) {
405 TCS_EXCEPTION("L1Topo Steering: Decision algorithm " << alg->name() << " could not cast as SortingConnector* the input connector " << inConn->name());
406 }
407 else {
408 const TOBArray * tobA = dynamic_cast<const TOBArray *>( sc->outputData());
409 if(tobA==nullptr) {
410 TCS_EXCEPTION("L1Topo Steering: Decision algorithm " << alg->name() << " expects TOBArray(s) as input, but did not get it from connector " << (inConn ? inConn->name() : ""));
411 }
412 input.push_back( tobA );
413 }
414 }
415
416 alg->reset();
417
418
419 if(m_useBitwise) alg->processBitCorrect( input, output, decision);
420 else alg->process( input, output, decision );
421 //TRG_MSG_ALWAYS("[XS1234sz]L1Topo Steering alg " << alg->name() << " has decision " << decision.decision());
422
424}

◆ executeDecisionConnector()

TCS::StatusCode TopoSteering::executeDecisionConnector ( TCS::DecisionConnector * conn)
private

Definition at line 279 of file TopoSteering.cxx.

279 {
280
281 if (conn == NULL) {
283 }
284
285 TCS::StatusCode sc = TCS::StatusCode::SUCCESS;
286
287 // execute all the prior connectors
288 for( TCS::Connector* inputConn: conn->inputConnectors() ){
289 sc &= executeConnector(inputConn);
290 conn->toggleInputOverflow(conn->hasInputOverflow() ||
291 inputConn->hasInputOverflow());
292 conn->toggleAmbiguity(conn->hasAmbiguity() ||
293 inputConn->hasAmbiguity());
294 }
295 // execute
296 TCS::DecisionAlg* alg = conn->decisionAlgorithm();
297
298 // TRG_MSG_DEBUG(" ... executing decision connector '" << conn->name() << "' with " << conn->triggers().size() << " active trigger lines. The algorithm has " << alg->numberOutputBits() << " output bits.");
299
300 // the output is one TOBArray per output line
301 vector<TOBArray *> output( alg->numberOutputBits() );
302
303 for(unsigned int i=0; i<alg->numberOutputBits(); ++i) {
304 output[i] = new TOBArray(conn->triggers()[i].name());
305 output[i]->setAmbiguityFlag(conn->hasAmbiguity());
306 }
307
308 sc &= executeDecisionAlgorithm(alg, conn->inputConnectors(), output, conn->m_decision);
309
310 TRG_MSG_DEBUG(" ... executing decision connector '" << conn->name() << "' -> attaching output data:");
311 for(TOBArray const * outarr : output) {
312 TRG_MSG_DEBUG(" data '" << outarr->name() << "' of size " << outarr->size());
313 conn->toggleAmbiguity(conn->hasAmbiguity() || outarr->ambiguityFlag());
314 }
315
316 conn->attachOutputData(output);
317
318 conn->setIsExecuted(true);
319 conn->setExecutionStatusCode(sc);
320 bool sortOverflow = false;
321 for(TCS::Connector* inputConnector: conn->inputConnectors()) {
322 // TODO DG-2017-04-18 the sort overflow (>10 TOBs) in the SortAlg is not implemented yet
323 if(inputConnector->isSortingConnector()) {
324 if (auto sortConn = dynamic_cast<SortingConnector*>(inputConnector)) {
325 sortOverflow = sortConn->sortingAlgorithm()->overflow();
326 if (sortOverflow) break;
327 }
328 }
329 }
330 conn->m_decision.setOverflow(conn->hasInputOverflow() || sortOverflow);
331 conn->m_decision.setAmbiguity(conn->hasAmbiguity());
332 return sc;
333}
StatusCode executeDecisionAlgorithm(TCS::DecisionAlg *alg, const std::vector< Connector * > &inputConnectors, const std::vector< TCS::TOBArray * > &output, Decision &decsion)
output
Definition merge.py:16

◆ executeEvent()

TCS::StatusCode TopoSteering::executeEvent ( )

Definition at line 133 of file TopoSteering.cxx.

133 {
134
135
136 TRG_MSG_INFO("L1 TopoSteering: start executing event " << m_evtCounter << "-----------------------------------");
137
138
139 if( ! structure().isConfigured() ) {
140 TRG_MSG_INFO("L1Topo Steering has not been configured, can't run");
141 TCS_EXCEPTION("L1Topo Steering has not been configured, can't run");
142 }
143
144 inputEvent().print();
145
146 // execute all connectors
147 TCS::StatusCode sc = TCS::StatusCode::SUCCESS;
148 TRG_MSG_INFO("Going to execute " << m_structure.outputConnectors().size() << " decision connectors and " << m_structure.countConnectors().size() << " multiplicity connectors.");
149 for(const auto & [name, pConnector]: m_structure.outputConnectors()) {
150 TRG_MSG_INFO("executing trigger line " << name);
151 sc |= executeConnector(pConnector);
152 TRG_MSG_INFO("result of trigger line " << name << " : " << pConnector->decision().decision());
153 }
154
155 for(const auto & [name, pConnector]: m_structure.countConnectors()) {
156 TRG_MSG_INFO("executing trigger line " << name);
157 sc |= executeConnector(pConnector);
158 }
159
160 sc |= m_simulationResult.collectResult();
161
162 m_simulationResult.globalOutput().print();
163
164 TRG_MSG_INFO("finished executing event " << m_evtCounter++);
166}
TopoSteeringStructure m_structure
TopoInputEvent & inputEvent()
unsigned int m_evtCounter
TopoCoreSimResult m_simulationResult

◆ executeInputConnector()

TCS::StatusCode TopoSteering::executeInputConnector ( TCS::InputConnector * conn)
private

Definition at line 224 of file TopoSteering.cxx.

224 {
225
226 if (conn == NULL) {
228 }
229
230 TCS::StatusCode sc(TCS::StatusCode::SUCCESS);
231
232 // attaching data from inputEvent to input connector, depending on the configured input type
233
234 const InputTOBArray * inputData = inputEvent().inputTOBs( conn->inputTOBType() );
235 const bool hasInputOverflow = inputEvent().hasInputOverflow(conn->inputTOBType());
236 conn->attachOutputData( inputData );
237 conn->toggleInputOverflow(hasInputOverflow);
238
239 TRG_MSG_DEBUG(" ... executing input connector '" << conn->name() << "' -> attaching '" << inputData->name() << "' of size " << inputData->size());
240
241 return sc;
242}
const std::string & name() const
Definition DataArray.h:20
virtual unsigned int size() const =0
const InputTOBArray * inputTOBs(TCS::inputTOBType_t) const
bool hasInputOverflow(TCS::inputTOBType_t) const
whether there are input overflows from Mioct for muon and from CMX for calo

◆ executeSortingAlgorithm()

TCS::StatusCode TopoSteering::executeSortingAlgorithm ( TCS::SortingAlg * alg,
TCS::InputConnector * inputConnector,
TCS::TOBArray *& sortedOutput )
private

Definition at line 369 of file TopoSteering.cxx.

371 {
372
373 TRG_MSG_DEBUG(" ... executing sorting alg '" << alg->fullname() << "'"
374 <<(m_useBitwise?" (bitwise)":""));
375
376 const InputTOBArray * input = inputConnector->outputData();
377
378 if(m_useBitwise) alg->sortBitCorrect(*input, *sortedOutput);
379 else alg->sort(*input, *sortedOutput);
380
382}

◆ executeSortingConnector()

TCS::StatusCode TopoSteering::executeSortingConnector ( TCS::SortingConnector * conn)
private

Definition at line 247 of file TopoSteering.cxx.

247 {
248
249 if (conn == NULL) {
250 return StatusCode::FAILURE;
251 }
252
253 TCS::StatusCode sc = TCS::StatusCode::SUCCESS;
254
255 // execute all the prior connectors
256 for( TCS::Connector* inputConn: conn->inputConnectors() ){
257 sc &= executeConnector(inputConn);
258 conn->toggleInputOverflow(conn->hasInputOverflow() ||
259 inputConn->hasInputOverflow());
260 }
261 TCS::SortingAlg* alg = conn->sortingAlgorithm();
262
263 TOBArray * sortedOutput = new TOBArray(conn->outputName());
264
265 sc &= executeSortingAlgorithm(alg, conn->inputConnector(), sortedOutput);
266
267 conn->toggleAmbiguity(sortedOutput->ambiguityFlag());
268
269 TRG_MSG_DEBUG(" ... executing sorting connector '" << conn->name() << "' -> attaching '" << sortedOutput->name() << "' of size " << sortedOutput->size());
270
271 conn->attachOutputData(sortedOutput);
272
273 return sc;
274}
size_t size() const
bool ambiguityFlag() const
Definition TOBArray.h:37
StatusCode executeSortingAlgorithm(SortingAlg *alg, TCS::InputConnector *inputConnector, TOBArray *&output)

◆ executeTrigger()

TCS::StatusCode TopoSteering::executeTrigger ( const std::string & triggerName)

Definition at line 171 of file TopoSteering.cxx.

171 {
172 if( ! structure().isConfigured() )
173 TCS_EXCEPTION("TopoSteering has not been configured, can't run");
174
175 DecisionConnector * outConn = m_structure.outputConnector(TrigName);
176
177 TCS::StatusCode sc = executeConnector(outConn);
178
179 m_simulationResult.collectResult(outConn);
180
181 return sc;
182}

◆ getName()

const std::string & TrigConf::TrigConfMessaging::getName ( ) const
inlineinherited

name accessor

Returns
the name

Definition at line 101 of file TrigConfMessaging.h.

101 {
102 return m_name;
103 }

◆ initializeAlgorithms()

TCS::StatusCode TopoSteering::initializeAlgorithms ( )

Definition at line 90 of file TopoSteering.cxx.

90 {
91 TRG_MSG_INFO("initializing algorithms");
92 if( ! structure().isConfigured() ) {
93 TCS_EXCEPTION("L1Topo Steering has not been configured, can't run")
94 }
95
96 for(auto conn: m_structure.connectors()) {
97 TCS::ConfigurableAlg * alg = conn->algorithm();
98 if(alg) {
99 TRG_MSG_INFO("initializing algorithm " << alg->name());
100 if(m_histSvc) {
101 alg->setL1TopoHistSvc(m_histSvc);
102 }
103 alg->setLegacyMode(m_isLegacyTopo);
104 alg->initialize();
105 }
106
107 }
108
110}
std::shared_ptr< IL1TopoHistSvc > m_histSvc

◆ inputEvent()

TopoInputEvent & TCS::TopoSteering::inputEvent ( )
inline

Definition at line 55 of file TopoSteering.h.

55{ return m_inputEvent; }
TopoInputEvent m_inputEvent

◆ msg() [1/2]

MsgStreamTC & TrigConf::TrigConfMessaging::msg ( ) const
inlineinherited

The standard message stream.

Returns a reference to the message stream May not be invoked before sysInitialize() has been invoked.

Definition at line 86 of file TrigConfMessaging.h.

87 {
88 MsgStreamTC* ms = m_msg_tls.get();
89 if (!ms) {
90 ms = new MsgStreamTC(m_name);
91 m_msg_tls.reset(ms);
92 }
93 return *ms;
94 }
boost::thread_specific_ptr< MsgStreamTC > m_msg_tls
MsgStreamTC instance (a std::cout like with print-out levels)

◆ msg() [2/2]

MsgStreamTC & TrigConf::TrigConfMessaging::msg ( const MSGTC::Level lvl) const
inlineinherited

The standard message stream.

Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.

Definition at line 96 of file TrigConfMessaging.h.

97 {
98 return msg() << lvl;
99 }
MsgStreamTC & msg() const
The standard message stream.

◆ msgLvl()

bool TrigConf::TrigConfMessaging::msgLvl ( const MSGTC::Level lvl) const
inlineinherited

Test the output level.

Parameters
lvlThe message level to test against
Returns
boolean Indicting if messages at given level will be printed
Return values
trueMessages at level "lvl" will be printed

Definition at line 75 of file TrigConfMessaging.h.

76 {
77 if (msg().level() <= lvl) {
78 msg() << lvl;
79 return true;
80 }
81 else {
82 return false;
83 }
84 }

◆ parameters()

const TCS::ParameterSpace & TCS::TopoSteering::parameters ( const std::string & algName) const

◆ printConfiguration()

void TopoSteering::printConfiguration ( std::ostream & o) const

Definition at line 457 of file TopoSteering.cxx.

457 {
458 o << "==========================\n"
459 << "TopoSteering configuration\n"
460 << "--------------------------\n";
461 structure().print(o);
462 o << "==========================" << endl;
463}
void print(std::ostream &o) const

◆ printDebugInfo()

void TopoSteering::printDebugInfo ( )

Definition at line 443 of file TopoSteering.cxx.

443 {
444 TRG_MSG_INFO("Number of ClusterTOB : " << ClusterTOB::heap().size());
445 TRG_MSG_INFO("Number of eEmTOB : " << eEmTOB::heap().size());
446 TRG_MSG_INFO("Number of JetTOB : " << JetTOB::heap().size());
447 TRG_MSG_INFO("Number of jJetTOB : " << jJetTOB::heap().size());
448 TRG_MSG_INFO("Number of GenericTOB : " << GenericTOB::heap().size());
449 TRG_MSG_INFO("Number of CompositeTOB: " << CompositeTOB::heap().size());
450 TRG_MSG_INFO("Number of MuonTOB : " << MuonTOB::heap().size());
451 TRG_MSG_INFO("Number of LateMuonTOB : " << LateMuonTOB::heap().size());
452}
static const Heap< TCS::ClusterTOB > & heap()
Definition ClusterTOB.h:56
static const Heap< TCS::CompositeTOB > & heap()
static const Heap< TCS::GenericTOB > & heap()
Definition GenericTOB.h:110
static const Heap< TCS::JetTOB > & heap()
Definition JetTOB.h:71
static const Heap< TCS::LateMuonTOB > & heap()
Definition LateMuonTOB.h:74
static const Heap< TCS::MuonTOB > & heap()
Definition MuonTOB.h:79
static const Heap< TCS::eEmTOB > & heap()
static const Heap< TCS::jJetTOB > & heap()
Definition jJetTOB.h:54

◆ propagateHardwareBitsToAlgos()

void TopoSteering::propagateHardwareBitsToAlgos ( )

propagate the bits from hardware to each simulated decision algo.

They will then be used to fill the accept/reject monitoring histograms.

Definition at line 498 of file TopoSteering.cxx.

498 {
499 for(const auto & [connectorName, outCon] : m_structure.outputConnectors()) {
500 outCon->decisionAlgorithm()->resetHardwareBits();
501 unsigned int pos = 0; // for multi-output algorithms pos is the output index
502 for(const TrigConf::TriggerLine &trigger : outCon->triggers()){
503 unsigned int bitNumber = trigger.flatindex();
504 outCon->decisionAlgorithm()->setHardwareBits(pos,
505 m_triggerHdwBits[bitNumber],
506 m_ovrflowHdwBits[bitNumber]);
507 pos++;
508 TRG_MSG_DEBUG("propagating hardware bit (dec/ovr) "<<bitNumber
509 <<" to algo "<<connectorName<<"["<<pos<<"]"
510 <<" "<<m_triggerHdwBits[bitNumber]<<" /"
511 <<" "<<m_ovrflowHdwBits[bitNumber]);
512
513 }
514 }
515}
std::bitset< numberOfL1TopoBits > m_ovrflowHdwBits
std::bitset< numberOfL1TopoBits > m_triggerHdwBits

◆ reset()

TCS::StatusCode TopoSteering::reset ( )

Definition at line 55 of file TopoSteering.cxx.

55 {
56
78
79 inputEvent().clear();
80
81 m_structure.reset();
82
83 m_simulationResult.reset();
84
86}
static void clearHeap()
static void clearHeap()
static void clearHeap()
static void clearHeap()
Definition JetTOB.cxx:37
static void clearHeap()
static void clearHeap()
Definition MetTOB.cxx:38
static void clearHeap()
static void clearHeap()
Definition MuonTOB.cxx:33
static void clearHeap()
Definition cTauTOB.cxx:38
static void clearHeap()
Definition eTauTOB.cxx:38
static void clearHeap()
Definition gJetTOB.cxx:35
static void clearHeap()
Definition gLJetTOB.cxx:35
static void clearHeap()
Definition gTETOB.cxx:31
static void clearHeap()
Definition gXETOB.cxx:33
static void clearHeap()
Definition jEmTOB.cxx:32
static void clearHeap()
Definition jJetTOB.cxx:32
static void clearHeap()
Definition jLJetTOB.cxx:32
static void clearHeap()
Definition jTETOB.cxx:31
static void clearHeap()
Definition jTauTOB.cxx:32
static void clearHeap()
Definition jXETOB.cxx:33

◆ saveHist()

TCS::StatusCode TopoSteering::saveHist ( )

Definition at line 122 of file TopoSteering.cxx.

122 {
123 if(m_histSvc) {
124 m_histSvc->save();
125 } else {
126 TRG_MSG_WARNING("saveHist called without an L1TopoHistSvc being available");
127 }
129}

◆ setAlgMsgLevel()

void TopoSteering::setAlgMsgLevel ( TrigConf::MSGTC::Level lvl)

Definition at line 480 of file TopoSteering.cxx.

480 {
481 m_AlgMsgLvl = lvl;
482 for( Connector * conn : m_structure.connectors() ) {
483 const ConfigurableAlg * alg = conn->algorithm();
484 if(alg==nullptr) continue;
485 alg->msg().setLevel(lvl);
486 }
487}
TrigConf::MSGTC::Level m_AlgMsgLvl

◆ setHardwareBits()

void TopoSteering::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 propagateHardwareBitsToAlgos.

Definition at line 491 of file TopoSteering.cxx.

492 {
493 m_triggerHdwBits = triggerBits;
494 m_ovrflowHdwBits = ovrflowBits;
495}

◆ setHistSvc()

TCS::StatusCode TopoSteering::setHistSvc ( std::shared_ptr< IL1TopoHistSvc > histSvc)

enables the histogramming service

Definition at line 114 of file TopoSteering.cxx.

114 {
115 TRG_MSG_INFO("setting L1TopoHistSvc ");
116 m_histSvc = std::move(histSvc);
118}

◆ setLegacyMode()

void TCS::TopoSteering::setLegacyMode ( bool isLegacyTopo)
inline

Definition at line 92 of file TopoSteering.h.

92{m_isLegacyTopo=isLegacyTopo;}

◆ setMsgLevel()

void TopoSteering::setMsgLevel ( TrigConf::MSGTC::Level lvl)

Definition at line 468 of file TopoSteering.cxx.

468 {
469
470 //const char* levelNames[TrigConf::MSGTC::NUM_LEVELS] = {"NIL","VERBOSE","DEBUG","INFO",
471 // "WARNING","ERROR","FATAL","ALWAYS"};
472 msg().setLevel( lvl );
473
474 inputEvent().msg().setLevel(lvl);
475
476 m_simulationResult.setMsgLevel( lvl );
477}
void setLevel(MSGTC::Level lvl)
Set message level of stream.

◆ setOutputAlgosFillBasedOnHardware()

void TopoSteering::setOutputAlgosFillBasedOnHardware ( const bool & value)

tell output algos to fill accept/reject histos based on hdw decision.

In this case you will need to call setHardwareBits + propagateHardwareBitsToAlgos at each event.

Definition at line 518 of file TopoSteering.cxx.

518 {
519 for(const auto & [connectorName, outCon] : m_structure.outputConnectors()) {
520 if(outCon) {
521 outCon->decisionAlgorithm()->setFillHistosBasedOnHardware(value);
522 } else {
523 TRG_MSG_DEBUG("skipping invalid DecisionConnector '"<<connectorName<<"'");
524 }
525 }
526}

◆ setOutputAlgosSkipHistograms()

void TopoSteering::setOutputAlgosSkipHistograms ( const bool & value)

skip filling the histos

When filling the histograms based on the hdw decision we want to skip filling them if we didn't fetch the hdw bits from the ROS. The flag is then toggled on/off depending on the prescaler.

Definition at line 529 of file TopoSteering.cxx.

529 {
530 for(const auto & [connectorName,outCon] : m_structure.outputConnectors()) {
531 if(outCon) {
532 outCon->decisionAlgorithm()->setSkipHistos(value);
533 } else {
534 TRG_MSG_DEBUG("skipping invalid DecisionConnector '"<<connectorName<<"'");
535 }
536 }
537}

◆ setUseBitwise()

void TCS::TopoSteering::setUseBitwise ( bool useBitwise)
inline

Definition at line 64 of file TopoSteering.h.

64{ m_useBitwise = useBitwise; }

◆ simulationResult()

const TopoCoreSimResult & TCS::TopoSteering::simulationResult ( ) const
inline

Definition at line 57 of file TopoSteering.h.

57{ return m_simulationResult; }

◆ structure()

const TopoSteeringStructure & TCS::TopoSteering::structure ( ) const
inline

Definition at line 53 of file TopoSteering.h.

53{ return m_structure; }

Member Data Documentation

◆ m_AlgMsgLvl

◆ m_evtCounter

unsigned int TCS::TopoSteering::m_evtCounter {1}
private

Definition at line 162 of file TopoSteering.h.

162{1};

◆ m_histSvc

std::shared_ptr<IL1TopoHistSvc> TCS::TopoSteering::m_histSvc
private

Definition at line 166 of file TopoSteering.h.

◆ m_inputEvent

TopoInputEvent TCS::TopoSteering::m_inputEvent
private

Definition at line 156 of file TopoSteering.h.

◆ m_isLegacyTopo

bool TCS::TopoSteering::m_isLegacyTopo {false}
private

Definition at line 154 of file TopoSteering.h.

154{false};

◆ m_msg_tls

boost::thread_specific_ptr<MsgStreamTC> TrigConf::TrigConfMessaging::m_msg_tls
mutableprivateinherited

MsgStreamTC instance (a std::cout like with print-out levels)

Definition at line 71 of file TrigConfMessaging.h.

◆ m_name

std::string TrigConf::TrigConfMessaging::m_name
privateinherited

Definition at line 72 of file TrigConfMessaging.h.

◆ m_ovrflowHdwBits

std::bitset<numberOfL1TopoBits> TCS::TopoSteering::m_ovrflowHdwBits
private

Definition at line 169 of file TopoSteering.h.

◆ m_simulationResult

TopoCoreSimResult TCS::TopoSteering::m_simulationResult
private

Definition at line 158 of file TopoSteering.h.

◆ m_structure

TopoSteeringStructure TCS::TopoSteering::m_structure
private

Definition at line 160 of file TopoSteering.h.

◆ m_triggerHdwBits

std::bitset<numberOfL1TopoBits> TCS::TopoSteering::m_triggerHdwBits
private

Definition at line 168 of file TopoSteering.h.

◆ m_useBitwise

bool TCS::TopoSteering::m_useBitwise {false}
private

Definition at line 152 of file TopoSteering.h.

152{false}; // Using bitwise algorithms? Disabled by default. Needs a menu global flag.

◆ numberOfL1TopoBits

const unsigned int TCS::TopoSteering::numberOfL1TopoBits = 128
static

Definition at line 101 of file TopoSteering.h.


The documentation for this class was generated from the following files: