ATLAS Offline Software
TopoSteeringStructure.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
5 
8 #include "L1TopoCommon/Types.h"
9 
12 
16 
22 
24 #include "TrigConfData/L1Menu.h"
25 
26 #include <set>
27 #include <iostream>
28 #include <iomanip>
29 #include <memory>
30 #include <boost/lexical_cast.hpp>
31 
32 using namespace std;
33 using namespace TCS;
34 using boost::lexical_cast;
35 
36 namespace {
37  uint32_t interpretGenericParam(const std::string& parvalue) {
38  uint32_t val;
39  try {
40  val = lexical_cast<uint32_t, string>(parvalue);
41  }
42  catch(const boost::bad_lexical_cast & bc) {
43  if( parvalue.size()>=3 && parvalue[0]==':' and parvalue[parvalue.size()-1]==':' ) {
44 
45  auto x = L1TopoHWParameters::get().find(parvalue.substr(1,parvalue.size()-2));
46 
47  string parname = parvalue.substr(1,parvalue.size()-2);
48 
49  if( x != L1TopoHWParameters::get().end()) {
50  val = x->second.value;
51  } else {
52  cout << "Hardware constrained parameters are" << endl;
53  for(auto & x : L1TopoHWParameters::get())
54  cout << " " << x.first << endl;
55 
56  TCS_EXCEPTION("Generic parameter value " << parvalue << " has the hardware contrained parameter format, but '" << parname << "' is not listed in L1TopoHardware.cxx");
57  }
58  } else {
59  TCS_EXCEPTION("Generic parameter value " << parvalue << " is not a uint32_t and does not match the hardware contrained parameter specification ':<parname>:' ");
60  }
61  }
62  return val;
63  }
64 }
65 
66 
68  m_parameters(2 * LayoutConstraints::maxComponents(), nullptr)
69 {}
70 
71 
73  for( Connector* c: m_connectors )
74  delete c;
75  for( ParameterSpace * ps : m_parameters )
76  delete ps;
77 }
78 
82  conn->reset();
84 }
85 
86 
87 void
88 TCS::TopoSteeringStructure::print(std::ostream & o) const {
89  o << "Topo Steering Structure" << endl
90  << "-----------------------" << endl;
91 
92  o << "Output summary:" << endl;
93  for(const auto & conn: outputConnectors() ) {
94  o << " " << *conn.second << endl;
95  }
96 
97  o << endl
98  << "Algorithm detail:" << endl;
99  for(const auto & nc: outputConnectors() ) {
100  DecisionConnector * conn = nc.second;
101  unsigned int firstBit = conn->decision().firstBit();
102  unsigned int lastBit = conn->numberOutputBits() + firstBit - 1;
103  const ConfigurableAlg* alg = conn->algorithm();
104  const Connector* inputconn = conn->inputConnectors().back();
105  const ConfigurableAlg* sortalg = inputconn->algorithm();
106  o << std::setw(2) << "bits " << firstBit << "-" << lastBit << ": " << conn->name() << " [input " << inputconn->name() <<"]" << endl;
107  o << *alg << endl << endl;
108  o << *sortalg << endl;
109  }
110 }
111 
112 
113 void
115  unsigned int idx(0);
116  for(const ParameterSpace* ps: m_parameters) {
117  if(ps && ps->isInitialized())
118  o << "pos " << std::setw(2) << idx << ": " << ps << endl;
119  idx++;
120  }
121 }
122 
123 
125 TCS::TopoSteeringStructure::setupFromMenu ATLAS_NOT_THREAD_SAFE (const TrigConf::L1Menu& l1menu, bool legacy, bool debug) {
126 
127  if(debug)
128  cout << "/***************************************************************************/" << endl
129  << " L1Topo steering structure: configuring from L1 Topo Menu " << endl
130  << "/***************************************************************************/" << endl;
131 
132  // set<TCS::inputTOBType_t> neededInputs; // Stores inputs for DecisionConnectors
133  vector<string> storedConn; // Stores decision connectors in order to avoid double counting
134  vector<vector<string>> confAlgorithms; // Stores algorithm name/category that have been configured in L1Menu to be used for setting the parameters
135  vector<string> confMultAlgorithms; // Stores algorithm names that have been configured in L1Menu to be used for setting the multiplicity thresholds
136  // Loop over boards in L1Menu and skip the ones that are not TOPO. Use Run-2 boards if legacy flag is on
137 
138  string AvailableMultAlgs[] = { "eEmMultiplicity",
139  "jEmMultiplicity",
140  "eTauMultiplicity",
141  "jTauMultiplicity",
142  "cTauMultiplicity",
143  "jJetMultiplicity",
144  "jLJetMultiplicity",
145  "gJetMultiplicity",
146  "gLJetMultiplicity",
147  "EnergyThreshold",
148  "LArSaturation" };
149 
150  for (const string & boardName : l1menu.boardNames() ){
151 
152  auto & l1board = l1menu.board(boardName);
153 
154  if (l1board.type() != "TOPO") continue;
155  if (l1board.legacy() != legacy) continue;
156 
157  // Access the connectors in the boards
158 
159  for (const string & connName : l1board.connectorNames() ){
160 
161  auto & l1conn = l1menu.connector(connName);
162 
163  // First configure decision algorithms
164  // Look at all Topo algorithms in each connector, and get inputs from each algorithm to configure SortingConnectors
165  if ( l1conn.connectorType() == TrigConf::L1Connector::ConnectorType::ELECTRICAL ) {
166 
167  for( size_t fpga : { 0, 1} ) {
168  for( size_t clock : { 0, 1} ) {
169  for( auto & tl : l1conn.triggerLines(fpga, clock) ) {
170 
171  const string & tlName = tl.name();
172  auto & algo = l1menu.algorithmFromTriggerline(tlName);
173  const string algoName = (legacy?"R2_"+algo.name():algo.name());
174 
175  // One algorithm can have multiple trigger lines. Check the connector/algorithm has not been stored already
176  auto it = find(storedConn.begin(), storedConn.end(), algoName);
177  if (it == storedConn.end()) { // Algorithm/Connector does not exist: create and store it
178 
179  storedConn.push_back(algoName);
180  vector<string> inputNames;
181  for( auto & input : algo.inputs() ) {
182  if( sortingConnector(input) == 0 ) { // if connector does not exist, create it
183  if(debug)
184  cout << "L1TopoSteering: Decision algo( " << algo.name() << " ) input is not defined: " << input << ". Creating sortingConnector" << endl;
185 
186  auto & sortAlgo = l1menu.algorithm(input, algo.category());
187  if(!(sortAlgo.type() == TrigConf::L1TopoAlgorithm::AlgorithmType::SORTING ) )
188  TCS_EXCEPTION("L1TopoSteering: Decision algo " << algo.name() << ") has as input " << input << " which is not associated to a sorting algorithm");
189 
190  // Create connector
191  SortingConnector * sortConn = new SortingConnector(sortAlgo.inputs().at(0), sortAlgo.klass()+"/"+input, sortAlgo.outputs().at(0));
192  if(debug)
193  cout << "Adding sorting connector " << "[" << *sortConn << "]" << endl;
194  addSortingConnector( sortConn );
195  confAlgorithms.push_back({sortAlgo.name(), sortAlgo.category()});
196 
197  } // if connector does not exist
198 
199  inputNames.push_back(input);
200 
201  } // loop over inputs
202 
203  DecisionConnector * conn = new DecisionConnector(algoName, inputNames, algo.klass()+"/"+algoName, algo.outputs());
204  conn->m_decision.setNBits( algo.outputs().size() );
205 
206  if(tl.name() != "UNDEF")
207  conn->m_triggers.push_back(tl);
208 
209  if(debug)
210  cout << "Adding decision connector " << "[" << *conn << "]" << endl;
211  addDecisionConnector( conn );
212  confAlgorithms.push_back({algo.name(), algo.category()});
213 
214  } else { // Connector already exists: look for it and add the trigger line
215  for(const auto & out : algo.outputs()){
216  auto c = m_outputLookup.find(out);
217  if (c != m_outputLookup.end()){
218  auto conn = c->second;
219  if(tl.name() != "UNDEF")
220  conn->m_triggers.push_back(tl);
221  break;
222  }
223  }
224  }
225 
226  } // Trigger Line
227 
228  } // Clock
229 
230  } // FPGA
231 
232  } else { // Configure optical connectors - multiplicity algorithms
233 
234  // In multiplicity boards all trigger lines are copied into the L1Menu::Connector 4 times (fpga 0,1 and clock 0,1)
235  // Take (fpga, clock) = (0, 0)
236 
237  for( auto & tl : l1conn.triggerLines(0, 0) ) {
238 
239  const string & tlName = tl.name();
240  auto & algo = l1menu.algorithmFromTriggerline(tlName);
241 
242  string algo_klass = algo.klass();
243  if(algo_klass=="eEmVarMultiplicity") algo_klass="eEmMultiplicity"; // in sim, use the same multiplicity algo for fixed and variable thresholds
244 
245  //Zero Bias events can't be simulated.
246  //The following line is set to simply ignore it in the simulation
247  //ZeroBias Multiplicity algorithms are not added to confMultAlgorithms
248  if ( algo_klass == "ZeroBias" ) continue;
249 
250  auto it = find(storedConn.begin(), storedConn.end(), algo.name());
251  if (it == storedConn.end()) { // Algorithm/Connector does not exist: create and store it
252 
253  storedConn.push_back(algo.name());
254  if(debug)
255  cout << "L1TopoSteering: Multiplicity algo( " << algo.name() << " ) has as input " << algo.inputs().at(0) << endl;
256 
257  CountingConnector * conn = new CountingConnector(algo.name(), algo.inputs().at(0), algo_klass+"/"+algo.name(), algo.outputs().at(0));
258  conn->m_count.setNBits( tl.nbits() );
259  conn->m_count.setFirstBit( tl.startbit() );
260 
261  if(tl.name() != "UNDEF")
262  conn->m_triggers.push_back(tl);
263 
264  if(debug)
265  cout << "Adding count connector " << "[" << *conn << "]" << endl;
266  addCountingConnector( conn );
267  confMultAlgorithms.push_back( algo.name() );
268  }
269 
270  } // Trigger Line
271 
272  } // Optical connectors - multiplicities
273 
274  } // Connector in l1board
275 
276  } // Board in l1menu
277 
278 
279  if(debug)
280  cout << "... building input connectors" << endl;
281  for(const auto & sortConn : m_sortedLookup) {
282  const string & in = sortConn.second->inputNames()[0]; // name of input
283 
284  if( m_inputLookup.count(in) > 0 ) continue; // InputConnector already exists
285 
286  InputConnector * conn = new InputConnector(in);
287  m_connectors.push_back(conn);
288  m_inputLookup[in] = conn;
289  if(debug)
290  cout << "Adding input connector " << "[" << *conn << "]" << endl;
291  }
292  for(const auto & countConn : m_countLookup) {
293  const string & in = countConn.second->inputNames()[0]; // name of input
294 
295  if( m_inputLookup.count(in) > 0 ) continue; // InputConnector already exists
296 
297  InputConnector * conn = new InputConnector(in);
298  m_connectors.push_back(conn);
299  m_inputLookup[in] = conn;
300  if(debug)
301  cout << "Adding input connector " << "[" << *conn << "]" << endl;
302  }
303 
304  // link the connector objects together
305  TCS::StatusCode sc = linkConnectors();
306 
307  // instantiate the algorithms from the algorithm names in the connectors
308  if(debug)
309  cout << "... instantiating algorithms" << endl;
310  sc &= instantiateAlgorithms(debug);
311 
312 
313  // set algorithm parameters
314  if(debug)
315  cout << "... setting algorithm parameters" << endl;
316 
317  for ( auto & confAlgo : confAlgorithms ) {
318 
319  auto & l1algo = l1menu.algorithm(confAlgo.at(0), confAlgo.at(1));
320  auto l1algoName = confAlgo.at(0);
322  l1algoName ="R2_"+confAlgo.at(0);
323 
324  if(debug)
325  cout << "TopoSteeringStructure: Parameters for algorithm with name " << l1algoName << " going to be configured." << endl;
326  ConfigurableAlg * alg = AlgFactory::mutable_instance().algorithm(l1algoName);
327 
328  if(alg->isDecisionAlg()){
329  ( static_cast<DecisionAlg *>(alg) )->setNumberOutputBits(l1algo.outputs().size());
330  }
331  // create ParameterSpace for this algorithm
332  auto ps = std::make_unique<ParameterSpace>(alg->name());
333 
334  for(auto & pe : l1algo.parameters()) {
335 
336  auto & pname = pe.name();
337  uint32_t val = pe.value();
338  uint32_t sel = pe.selection();
339 
340  if(debug)
341  cout << "Algo Name: " << l1algoName << " parameter " << ": " << setw(20) << left << pname << " value = " << setw(3) << left << val << " (selection " << sel << ")" << endl;
342  ps->addParameter( pname, val, sel);
343 
344  }
345 
346  for(auto & gen : l1algo.generics().getKeys()) {
347 
348  auto pe = l1algo.generics().getObject(gen);
349  string pname = gen;
350  uint32_t val = interpretGenericParam(pe.getAttribute("value"));
351  if (pname == "NumResultBits"){
352  if(val != l1algo.outputs().size()) {
353  TCS_EXCEPTION("Algorithm " << pname << " parameter OutputBits (" << val << ") is different from output size (" << l1algo.outputs().size() << ")");
354  }
355  continue; // ignore this, because it is defined through the output list
356  }
357  if(debug)
358  cout << " fixed parameter : " << setw(20) << left << pname << " value = " << setw(3) << left << val << endl;
359  ps->addParameter( pname, val );
360 
361  }
362 
363 
364  if(debug)
365  cout << " (setting parameters)";
366  alg->setParameters( *ps );
367 
368  if(debug)
369  cout << " --> (parameters set)";
370 
371  if(debug)
372  cout << " --> (parameters stored)" << endl;
373  } // Set parameters for Sorting/Decision algorithms
374 
375  // // set thresholds for multiplicity algorithms
376  for ( auto & multAlgo : confMultAlgorithms ) {
377 
378  auto & l1algo = l1menu.algorithm(multAlgo, "MULTTOPO");
379 
380  //Zero Bias events can't be simulated.
381  //The following line is set to simply ignore it in the simulation
382  if ( l1algo.klass() == "ZeroBias" ) continue;
383 
384  ConfigurableAlg * alg = AlgFactory::mutable_instance().algorithm(l1algo.name());
385 
386  // Get L1Threshold object and pass it to CountingAlg, from where it will be propagated to and decoded in each algorithm
387  // The output of each algorithm and the threshold name is the same - use output name to retrieve L1Threshold object
388  auto & l1thr = l1menu.threshold( l1algo.outputs().at(0) );
389  auto pCountAlg = dynamic_cast<CountingAlg *>(alg);
390  if (not pCountAlg) continue;
391  pCountAlg->setThreshold(l1thr);
392 
393  } // Set thresholds for multiplicity algorithms
394 
395 
396  m_isConfigured = true;
397 
398  if(debug)
399  cout << "... L1TopoSteering successfully configured" << endl;
400 
401  return sc;
402 }
403 
404 
407  m_connectors.push_back(conn);
408  for( const string & output : conn->outputNames() )
411 }
412 
415  m_connectors.push_back(conn);
416  for( const string & output : conn->outputNames() )
419 }
420 
421 
424  m_connectors.push_back(conn);
425  for( const string & output : conn->outputNames() )
428 }
429 
430 
433 
435  for(const std::string & inconn: conn->inputNames())
436  conn->inputConnectors().push_back( connector(inconn) );
437 
439 }
440 
441 
443 TCS::TopoSteeringStructure::instantiateAlgorithms ATLAS_NOT_THREAD_SAFE (bool debug) {
444 
445  for(TCS::Connector* conn: m_connectors) {
446 
447  if(conn->isInputConnector()) continue;
448 
449  // for each connector instantiate the algorithm and add to connector
450  const std::string & alg = conn->algorithmName();
451 
452  // split into name and type
453  std::string algType(alg, 0, alg.find('/'));
454  std::string algName(alg, alg.find('/')+1);
455 
456  ConfigurableAlg * algInstance = TCS::AlgFactory::mutable_instance().algorithm(algName);
457  if(algInstance==0) {
458  if(debug)
459  cout << "Instantiating " << alg << endl;
460  algInstance = TCS::AlgFactory::mutable_instance().create(algType, algName);
461  } else {
462  if(algInstance->className() != algType) {
463  TCS_EXCEPTION("L1 TopoSteering: duplicate algorithm names: algorithm " << algName << " has already been instantiated but with different type");
464  }
465  }
466  conn->setAlgorithm(algInstance);
467  }
469 }
470 
471 
473 TCS::TopoSteeringStructure::connector(const std::string & connectorName) const {
474  for( TCS::Connector* conn: m_connectors ) {
475  if( conn->name() == connectorName )
476  return conn;
477  }
478  TCS_EXCEPTION("L1Topo Steering: can not find connector of name " << connectorName << ". Need to abort!");
479  return 0;
480 }
481 
482 
484 TopoSteeringStructure::sortingConnector(const std::string & connectorName) const {
485  SortingConnector * sc = nullptr;
486  for( TCS::Connector* conn: m_connectors ) {
487  if( conn->name() == connectorName ) {
488  sc = dynamic_cast<SortingConnector*>(conn);
489  if(sc==nullptr) {
490  TCS_EXCEPTION("TopoSteeringStructure: connector of name " << connectorName << " exists, but is not a SortingConnector. Need to abort!");
491  }
492  }
493  }
494 
495  return sc;
496 }
497 
498 
499 
502  auto c = m_outputLookup.find(output);
503  if( c != m_outputLookup.end() )
504  return c->second;
505  TCS_EXCEPTION("L1Topo Steering: can not find output connector of that produces " << output << ". Need to abort!");
506  return 0;
507 }
508 
509 
512  auto c = m_countLookup.find(output);
513  if( c != m_countLookup.end() )
514  return c->second;
515  TCS_EXCEPTION("L1Topo Steering: can not find counting connector of that produces " << output << ". Need to abort!");
516  return 0;
517 }
518 
TCS::TopoSteeringStructure::m_sortedLookup
std::map< std::string, TCS::SortingConnector * > m_sortedLookup
Definition: TopoSteeringStructure.h:86
TCS::ConfigurableAlg::className
const std::string & className() const
Definition: ConfigurableAlg.h:49
TCS::TopoSteeringStructure::~TopoSteeringStructure
~TopoSteeringStructure()
Definition: TopoSteeringStructure.cxx:72
checkCorrelInHIST.conn
conn
Definition: checkCorrelInHIST.py:25
TCS::StatusCode::SUCCESS
@ SUCCESS
Definition: Trigger/TrigT1/L1Topo/L1TopoCommon/L1TopoCommon/StatusCode.h:17
SGout2dot.alg
alg
Definition: SGout2dot.py:243
TCS::TopoSteeringStructure::outputConnector
DecisionConnector * outputConnector(const std::string &output)
Definition: TopoSteeringStructure.cxx:501
find
std::string find(const std::string &s)
return a remapped string
Definition: hcg.cxx:135
L1TopoHardware.h
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
TCS::Connector
Definition: Connector.h:22
InputConnector.h
L1TopoMenu.h
xAOD::JetAlgorithmType::algName
const std::string & algName(ID id)
Converts a JetAlgorithmType::ID into a string.
Definition: JetContainerInfo.cxx:67
python.CreateTierZeroArgdict.parname
parname
Definition: CreateTierZeroArgdict.py:194
skel.it
it
Definition: skel.GENtoEVGEN.py:396
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:71
TCS::TopoSteeringStructure::addSortingConnector
StatusCode addSortingConnector(SortingConnector *conn)
Definition: TopoSteeringStructure.cxx:406
TCS::LayoutConstraints
Definition: LayoutConstraints.h:16
TCS::CountingConnector
Definition: CountingConnector.h:26
TCS::SortingConnector
Definition: SortingConnector.h:24
Types.h
TrigConf::L1Menu
L1 menu configuration.
Definition: L1Menu.h:28
TCS::TopoSteeringStructure::m_countLookup
std::map< std::string, TCS::CountingConnector * > m_countLookup
Definition: TopoSteeringStructure.h:88
TCS::TopoSteeringStructure::reset
StatusCode reset()
Definition: TopoSteeringStructure.cxx:80
TCS::TopoSteeringStructure::addCountingConnector
StatusCode addCountingConnector(CountingConnector *conn)
Definition: TopoSteeringStructure.cxx:423
x
#define x
LArG4AODNtuplePlotter.pe
pe
Definition: LArG4AODNtuplePlotter.py:116
CountingAlg.h
DecisionConnector.h
master.gen
gen
Definition: master.py:32
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:93
TCS::TopoSteeringStructure::countingConnector
CountingConnector * countingConnector(const std::string &output)
Definition: TopoSteeringStructure.cxx:511
TCS::DecisionAlg
Definition: Trigger/TrigT1/L1Topo/L1TopoInterfaces/L1TopoInterfaces/DecisionAlg.h:22
TrigConf::L1TopoAlgorithm::AlgorithmType::SORTING
@ SORTING
TCS::ParameterSpace
Definition: ParameterSpace.h:18
TopoSteeringStructure.h
TCS::InputConnector
Definition: InputConnector.h:22
sel
sel
Definition: SUSYToolsTester.cxx:97
TCS::TopoSteeringStructure::m_connectors
std::vector< TCS::Connector * > m_connectors
Definition: TopoSteeringStructure.h:82
CountingConnector.h
TCS::TopoSteeringStructure::connector
Connector * connector(const std::string &connectorName) const
Definition: TopoSteeringStructure.cxx:473
PlotPulseshapeFromCool.input
input
Definition: PlotPulseshapeFromCool.py:106
ATLAS_NOT_THREAD_SAFE
TCS::StatusCode TCS::TopoSteeringStructure::setupFromMenu ATLAS_NOT_THREAD_SAFE(const TrigConf::L1Menu &l1menu, bool legacy, bool debug)
Definition: TopoSteeringStructure.cxx:125
TrigConf::L1Connector::ConnectorType::ELECTRICAL
@ ELECTRICAL
LayoutConstraints.h
StringUtils.h
TCS_EXCEPTION
#define TCS_EXCEPTION(MSG)
Definition: Trigger/TrigT1/L1Topo/L1TopoCommon/L1TopoCommon/Exception.h:14
Connector.h
merge.output
output
Definition: merge.py:17
TCS::CountingAlg::setThreshold
void setThreshold(const TrigConf::L1Threshold &thr)
Definition: CountingAlg.h:44
SortingAlg.h
TCS::ConfigurableAlg
Definition: ConfigurableAlg.h:30
DecisionAlg.h
TCS::TopoSteeringStructure::m_parameters
std::vector< TCS::ParameterSpace * > m_parameters
Definition: TopoSteeringStructure.h:92
TCS::Connector::algorithm
const TCS::ConfigurableAlg * algorithm() const
Definition: Connector.h:50
debug
const bool debug
Definition: MakeUncertaintyPlots.cxx:53
TCS::Connector::name
const std::string & name() const
Definition: Connector.h:44
TCS::TopoSteeringStructure::addDecisionConnector
StatusCode addDecisionConnector(DecisionConnector *conn)
Definition: TopoSteeringStructure.cxx:414
TCS::TopoSteeringStructure::linkConnectors
StatusCode linkConnectors()
Definition: TopoSteeringStructure.cxx:432
TrigConf::L1TopoAlgorithm::AlgorithmType::DECISION
@ DECISION
TCS::TopoSteeringStructure::printParameters
void printParameters(std::ostream &o) const
Definition: TopoSteeringStructure.cxx:114
Pythia8_RapidityOrderMPI.val
val
Definition: Pythia8_RapidityOrderMPI.py:14
MistimedStreamPhI_runStandalone.legacy
legacy
Definition: MistimedStreamPhI_runStandalone.py:110
TCS::TopoSteeringStructure::m_outputLookup
std::map< std::string, TCS::DecisionConnector * > m_outputLookup
Definition: TopoSteeringStructure.h:84
TCS
Definition: Global/GlobalSimulation/src/IO/Decision.h:18
get
T * get(TKey *tobj)
get a TObject* from a TKey* (why can't a TObject be a TKey?)
Definition: hcg.cxx:127
python.XMLReader.l1menu
l1menu
Definition: XMLReader.py:73
LArNewCalib_DelayDump_OFC_Cali.idx
idx
Definition: LArNewCalib_DelayDump_OFC_Cali.py:69
dqt_zlumi_alleff_HIST.tl
tl
Definition: dqt_zlumi_alleff_HIST.py:73
TCS::TopoSteeringStructure::sortingConnector
SortingConnector * sortingConnector(const std::string &output) const
Definition: TopoSteeringStructure.cxx:484
TCS::TopoSteeringStructure::TopoSteeringStructure
TopoSteeringStructure()
Definition: TopoSteeringStructure.cxx:67
L1Menu.h
Exception.h
python.compressB64.c
def c
Definition: compressB64.py:93
TCS::DecisionConnector
Definition: DecisionConnector.h:23
plotBeamSpotMon.nc
int nc
Definition: plotBeamSpotMon.py:83
TCS::TopoSteeringStructure::print
void print(std::ostream &o) const
Definition: TopoSteeringStructure.cxx:88
TCS::CountingAlg
Definition: CountingAlg.h:25
TCS::StatusCode
Definition: Trigger/TrigT1/L1Topo/L1TopoCommon/L1TopoCommon/StatusCode.h:15
SortingConnector.h