ATLAS Offline Software
JobOptionTableLoader.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
7 
9 #include "./DBHelper.h"
10 
11 #include <CoralBase/Attribute.h>
12 #include <CoralBase/AttributeList.h>
13 
14 #include "RelationalAccess/SchemaException.h"
15 #include "RelationalAccess/ITransaction.h"
16 #include "RelationalAccess/ITable.h"
17 #include "RelationalAccess/ISchema.h"
18 #include "RelationalAccess/ICursor.h"
19 #include "RelationalAccess/IQuery.h"
20 
21 #include "boost/lexical_cast.hpp"
22 #include "boost/regex.hpp"
23 
24 #include <set>
25 #include <iostream>
26 #include <stdexcept>
27 #include <sstream>
28 #include <algorithm>
29 #include <iterator>
30 
31 using namespace std;
32 using namespace TrigConf;
33 
34 bool
36  int& masterTableID,
37  int& triggerMenuID,
38  int& l2SetupID,
39  int& efSetupID ) {
40 
41  unique_ptr< coral::IQuery > q( m_session.nominalSchema().newQuery() );
42 
43  // tables
44  q->addToTableList ( "SUPER_MASTER_TABLE", "SM" );
45  q->addToTableList ( "HLT_MASTER_TABLE", "HM" );
46 
47  // Bind variables
48  coral::AttributeList bindList;
49  bindList.extend<int>("smid");
50  bindList[0].data<int>() = SuperMasterKey;
51 
52  // the select condition
53  string theCondition = "SM.SMT_HLT_MASTER_TABLE_ID = HM.HMT_ID AND SM.SMT_ID = :smid";
54 
55  q->setCondition( theCondition, bindList );
56 
57  // output fields
58  coral::AttributeList attList;
59  attList.extend<int> ( "HM.HMT_ID" );
60  attList.extend<int> ( "HM.HMT_TRIGGER_MENU_ID" );
61  if(isRun1()) {
62  attList.extend<int> ( "HM.HMT_L2_SETUP_ID" );
63  attList.extend<int> ( "HM.HMT_EF_SETUP_ID" );
64  } else {
65  attList.extend<int> ( "HM.HMT_SETUP_ID" );
66  }
67  fillQuery(q.get(),attList);
68 
69  // query
70  coral::ICursor& cursor = q->execute();
71 
72  // get the HLT master-table id
73  if( ! cursor.next() )
74  return false;
75 
76  const coral::AttributeList& row = cursor.currentRow();
77 
78  masterTableID = row["HM.HMT_ID"].data<int>();
79  triggerMenuID = row["HM.HMT_TRIGGER_MENU_ID"].data<int>();
80  if(isRun1()) {
81  l2SetupID = row["HM.HMT_L2_SETUP_ID"].data<int>();
82  efSetupID = row["HM.HMT_EF_SETUP_ID"].data<int>();
83  } else {
84  l2SetupID = efSetupID = row["HM.HMT_SETUP_ID"].data<int>();
85  }
86  return true;
87 }
88 
89 
90 bool
92 
93  unsigned int batchSize = 500;
94  set<int>::const_iterator current = compIDsToLoad.begin();
95  vector< SplitParam > splitparams;
96 
97 
98  while(current!=compIDsToLoad.end()) {
99  loadComponentNamesAndParameters(JOTable, compIDsToLoad, splitparams, current, batchSize);
100  }
101 
102 
103  TRG_MSG_INFO("Split parameters => " << splitparams.size());
104  TRG_MSG_INFO("Non-split parameters => " << JOTable.jobOptionVector().size());
105  unsigned int countSplitParam = assembleSplitParameters2(JOTable, splitparams);
106  TRG_MSG_INFO("Assembled split parameters => " << countSplitParam);
107 
108  return true;
109 }
110 
111 bool
112 JobOptionTableLoader::loadComponentNamesAndParameters(JobOptionTable& JOTable,
113  const set<int>& compIDsToLoad,
114  vector<SplitParam>& splitparams,
115  set<int>::const_iterator & current,
116  unsigned int batchSize) {
117 
118  unique_ptr< coral::IQuery > q( m_session.nominalSchema().newQuery() );
119  q->setRowCacheSize( 500 );
120 
121  q->addToTableList ( "HLT_COMPONENT", "CP" );
122  q->addToTableList ( "HLT_CP_TO_PA", "CP2PA" );
123  q->addToTableList ( "HLT_PARAMETER", "PA" );
124 
125 
126  // bind
128 
129  std::string cond( buildCond_IN_("CP.HCP_ID", compIDsToLoad, current, batchSize) );
130  cond += " AND CP2PA.HCP2PA_COMPONENT_ID = CP.HCP_ID";
131  cond += " AND CP2PA.HCP2PA_PARAMETER_ID = PA.HPA_ID";
132  q->setCondition( cond , bind );
133 
134  // output and their types
135  coral::AttributeList attList;
136  attList.extend<std::string>( "CP.HCP_ALIAS" );
137  attList.extend<std::string>( "CP.HCP_TYPE" );
138  attList.extend<std::string>( "PA.HPA_NAME" );
139  attList.extend<std::string>( "PA.HPA_VALUE" );
140  fillQuery(q.get(),attList);
141 
142  coral::ICursor& cursor = q->execute();
143 
144  while( cursor.next() ) {
145 
146  const coral::AttributeList& row = cursor.currentRow();
147 
148  string alias = row["CP.HCP_ALIAS"].data<std::string>();
149  string type = "type"; //row["CP.HCP_TYPE"].data<std::string>();
150  string name = row["PA.HPA_NAME"].data<std::string>();
151  string value = row["PA.HPA_VALUE"].data<std::string>();
152 
153  if( value == "~" ) value = "";
154 
155  //if the parameter contains __ipc__ then its split - need to merge (after finding what to merge it with!)
156  if(name.find("__IPC__",0) != string::npos){
157  splitparams.push_back( SplitParam(alias, name, type, "set", value) );
158  } else {
159  JOTable.addJobOption( JobOption( alias, name, type, "set", value) );
160  }
161  }
162 
163  return true;
164 }
165 
166 
167 std::set<int>
169 
170  std::set<int> compIDs;
171 
172  std::unique_ptr< coral::IQuery > q( m_session.nominalSchema().newQuery() );
173  q->setRowCacheSize( 1000 );
174 
175  // tables
176  q->addToTableList ( "HLT_ST_TO_CP", "ST2CP" );
177 
178  // bind setup id
180  bind.extend<int>("setupid");
181  bind[0].data<int>() = setup_id;
182 
183  std::string cond("ST2CP.HST2CP_SETUP_ID = :setupid");
184  q->setCondition( cond , bind );
185 
186  // output and their types
187  coral::AttributeList attList;
188  attList.extend<int>( "ST2CP.HST2CP_COMPONENT_ID" );
189  fillQuery(q.get(),attList);
190 
191  // execute
192  coral::ICursor& cursor = q->execute();
193  while( cursor.next() ) {
194  const coral::AttributeList& row = cursor.currentRow();
195  int id = row["ST2CP.HST2CP_COMPONENT_ID"].data<int>();
196  compIDs.insert(id);
197  }
198 
199  TRG_MSG_INFO("Loaded I-Components => " << compIDs.size());
200  return compIDs;
201 }
202 
203 
204 
205 std::set<int>
206 TrigConf::JobOptionTableLoader::loadComponentIDsFromMenu(const int menu_id, int triggerLevel) {
207 
208  std::set<int> compIDs;
209 
210  std::unique_ptr< coral::IQuery > q( m_session.nominalSchema().newQuery() );
211  q->setRowCacheSize( 1000 );
212 
213  q->addToTableList( "HLT_TM_TO_TC", "TM2TC" );
214  q->addToTableList( "HLT_TRIGGER_CHAIN", "TC" );
215  q->addToTableList( "HLT_TC_TO_TS", "TC2TS" );
216  q->addToTableList( "HLT_TS_TO_TE", "TS2TE" );
217  q->addToTableList( "HLT_TE_TO_CP", "TE2CP" );
218 
219  // bind menu ID
221  bind.extend<int>("menuid");
222  bind[0].data<int>() = menu_id;
223 
224 
225  // condition
226  std::string cond("TM2TC.HTM2TC_TRIGGER_MENU_ID = :menuid");
227  cond += " AND TM2TC.HTM2TC_TRIGGER_CHAIN_ID = TC.HTC_ID";
228  cond += " AND TM2TC.HTM2TC_TRIGGER_CHAIN_ID = TC2TS.HTC2TS_TRIGGER_CHAIN_ID";
229  cond += " AND TC2TS.HTC2TS_TRIGGER_SIGNATURE_ID = TS2TE.HTS2TE_TRIGGER_SIGNATURE_ID";
230  cond += " AND TS2TE.HTS2TE_TRIGGER_ELEMENT_ID = TE2CP.HTE2CP_TRIGGER_ELEMENT_ID";
231 
232  // triggerLevel
233  if(triggerLevel!=2) { // 2 means combined
234  cond += " AND TC.HTC_L2_OR_EF = ";
235  cond += ( triggerLevel==0 ? "'L2'" : "'EF'" );
236  }
237 
238  q->setCondition( cond , bind );
239 
240  // output
241  coral::AttributeList attList;
242  attList.extend<int>( "TE2CP.HTE2CP_COMPONENT_ID" );
243  fillQuery(q.get(),attList);
244 
245  // execute
246  coral::ICursor& cursor = q->execute();
247  while( cursor.next() ) {
248  const coral::AttributeList& row = cursor.currentRow();
249  int id = row["TE2CP.HTE2CP_COMPONENT_ID"].data<int>();
250  compIDs.insert(id);
251  }
252 
253  TRG_MSG_INFO("Loaded M-Components => " << compIDs.size());
254 
255  return compIDs;
256 }
257 
258 
259 /***********
260  *
261  * turns field and a set<int>=(x1,...,x2531) into a string
262  *
263  * (field IN (x1,x2,...,x1000) OR field IN (x1001,x1002,...,x2000) OR field IN (x2001,x2002,...,x2531))
264  *
265  * this is needed since ORACLE has a limit of 1000 entries within IN(...)
266  ***/
267 std::string
268 TrigConf::JobOptionTableLoader::buildCond_IN_(const std::string& field, const std::set<int>& IDs, std::set<int>::const_iterator & current, unsigned int batchSize) {
269 
270  std::stringstream ss;
271  ss << "(" << field << " IN (";
272 
273  unsigned int count(0), totalCount(0);
274  set<int>::iterator last = IDs.end(); --last;
275  for(; current!=last && totalCount!=batchSize-1; ++current) {
276  totalCount++;
277  ss << *current;
278  if(++count==1000) {
279  ss << ") OR " << field << " IN (";
280  count=0;
281  } else {
282  ss << ",";
283  }
284  }
285  ss << *current++ << "))";
286 
287  return ss.str();
288 }
289 
290 
291 namespace {
292  vector<int> createSortedVector(const set<int>& compIDs) {
293  vector<int> sortedVector(compIDs.size());
294  copy(compIDs.begin(), compIDs.end(), sortedVector.begin());
295  sort(sortedVector.begin(),sortedVector.end());
296  return sortedVector;
297  }
298 
299  vector<string> concatAndSplit(const vector<int>& v, uint maxStringSize) {
300 
301  // create a single long string of comma-separated numbers
302  vector<string> split;
303 
304  string s("");s.reserve(8000);
305  uint count(0);
306 
307  for(int i:v) {
308 
309  s+=to_string(i) + ",";
310  count++;
311 
312  if(count<1000 && s.size()<maxStringSize ) // oracle allows max 1000 items in (list)
313  continue;
314 
315  s.erase(s.end()-1); // erase last comma
316 
317  split.push_back( s );
318 
319  s="";
320  count=0;
321  }
322 
323  // the last entries in the loop
324  if(s!="") {
325  s.erase(s.end()-1); // erase last comma
326  split.push_back( s );
327  }
328 
329  return split;
330  }
331 
332 }
333 
334 std::set<int>
335 TrigConf::JobOptionTableLoader::getChildCompIDs(const std::set<int>& compIDs) {
336 
337  std::set<int> childCompIDs; // the children IDs
338 
339  TRG_MSG_DEBUG("Number of parents " << compIDs.size());
340 
341  vector<int> sortedParentIDs = createSortedVector(compIDs);
342 
343  vector<string> splitParentIDs = concatAndSplit(sortedParentIDs, 7500);
344 
345  for(const string& idList : splitParentIDs) {
346 
347  // condition
348  string cond = "HCP2CP_PARENT_COMP_ID IN (" + idList + ")";
349 
350  coral::ITable& table = m_session.nominalSchema().tableHandle("HLT_CP_TO_CP");
351  std::unique_ptr< coral::IQuery > q( table.newQuery() );
352 
354  q->setCondition( cond, bind );
355 
356  // output
357  coral::AttributeList attList;
358  attList.extend<int>( "HCP2CP_CHILD_COMP_ID" );
359  fillQuery(q.get(),attList);
360 
361  // distinct
362  q->setDistinct();
363 
364  // execute
365  coral::ICursor& cursor = q->execute();
366 
367  // fill output
368  while( cursor.next() ) {
369  const coral::AttributeList& row = cursor.currentRow();
370  int id = row["HCP2CP_CHILD_COMP_ID"].data<int>();
371  childCompIDs.insert(id);
372  }
373 
374  }
375 
376  // no more children, can stop recursion
377  if(childCompIDs.size()==0)
378  return childCompIDs;
379 
380  // get all children recursively
381  set<int> allSubChildrenIDs = getChildCompIDs(childCompIDs);
382 
383  // add to set of all children
384  childCompIDs.insert(allSubChildrenIDs.begin(),allSubChildrenIDs.end());
385 
386  return childCompIDs;
387 }
388 
389 
390 bool
392 
393  JobOptionTable& jot = dynamic_cast<JobOptionTable&>(data);
394  try {
395  return load(jot);
396  }
397  catch( const std::exception& e ) {
398  TRG_MSG_FATAL("std::exception: " << e.what());
399  throw;
400  }
401  return false;
402 }
403 
404 
405 /*************
406  *
407  * Reassemble the split parameters - this isn't a very pretty way, probably should be rewritten
408  *
409  *************/
410 unsigned int
411 TrigConf::JobOptionTableLoader::assembleSplitParameters( JobOptionTable& jot, const std::vector< SplitParam >& splitparams ) {
412 
413  unsigned int paramCount = 0;
414 
415  // Loop over the vectors and match the alias and parameter names (excluding the __IPC__)
416  std::string mergedvalue ="";
417  std::string aliasname ="";
418  std::string paraname ="";
419 
420 
421  //ignore those we have already matched
422  vector< SplitParam > alreadymatched_v;
423 
424  for (unsigned int sit=0; sit<splitparams.size(); sit++) {
425 
426  const SplitParam & splitpar = splitparams.at(sit);
427 
428  std::string actualname = splitpar.actualname;
429  // std::cout << splitpar.alias << " " << splitpar.name << std::endl;
430 
431  // see if already matched - paraname and the alias!
432  bool matched = false;
433  for (unsigned int mit=0; mit<alreadymatched_v.size(); mit++){
434  SplitParam matchtemp = alreadymatched_v.at(mit);
435  matched = ( matchtemp.actualname==actualname && matchtemp.alias == splitpar.alias );
436  if(matched) break;
437  }
438 
439 
440  if(!matched) {
441  //have we gone on to the next name - if so, we have a merged parameter now
442  if( paraname!=actualname || aliasname!=splitpar.alias ){
443 
444  if(aliasname!=""){
445  //MAKE THE NEW JOBOPTION!
446  JobOption jo( aliasname, paraname, "type", "set", mergedvalue);
447  jot.addJobOption(jo);
448  paramCount++;
449  }
450  aliasname = splitpar.alias;
451  paraname = actualname;
452  mergedvalue="";
453  }
454 
455  alreadymatched_v.push_back( splitpar );
456  mergedvalue = splitpar.value;
457 
458  //now look for a match here
459  for (unsigned int sit2=sit+1; sit2<splitparams.size(); sit2++){
460  const SplitParam& newtemp2 = splitparams.at(sit2);
461  std::string actualname2 = newtemp2.actualname;
462 
463  if(actualname2==actualname && splitpar.alias==newtemp2.alias ){
464  mergedvalue+= newtemp2.value;
465  TRG_MSG_VERBOSE("Found split parameters " << splitpar.alias << " : " << splitpar.name << " - " << newtemp2.name);
466  TRG_MSG_VERBOSE(splitpar.value << " - " << newtemp2.value);
467  }
468  }
469  }
470  }
471 
472  if(aliasname!=""){
473  //have to take care of the last one!
474  //MAKE THE NEW JOBOPTION!
475  JobOption jo( aliasname, paraname, "type", "set", mergedvalue);
476  jot.addJobOption(jo);
477  paramCount++;
478  }
479  return paramCount;
480 
481 }
482 
483 
484 namespace {
485  class AssembledPar {
486  public:
487  AssembledPar(const std::string& compalias, const std::string& parname) :
488  comp_alias(compalias),
489  par_name(parname)
490  {}
491  std::string comp_alias;
492  std::string par_name;
493  };
494 
495  struct APlessthan {
496  bool operator()(const AssembledPar& p1, const AssembledPar& p2) const {
497  int alias_cmp = p1.comp_alias.compare(p2.comp_alias);
498  if(alias_cmp>0) return false;
499  if(alias_cmp<0) return true;
500  return p1.par_name.compare(p2.par_name)<0;
501  }
502  };
503 }
504 
505 unsigned int
506 TrigConf::JobOptionTableLoader::assembleSplitParameters2( JobOptionTable& jot, const std::vector< SplitParam >& splitparams ) {
507 
508  std::map<AssembledPar, std::vector<std::string>, APlessthan > assembled_params;
509 
510  boost::regex pname_exp("(.*)__IPC__(\\d+)");
511  boost::cmatch matches;
512 
513  // for(unsigned int i=0; i<splitparams.size(); ++i) {
514  for(const SplitParam & splitpar: splitparams ) {
515  //const SplitParam & splitpar = splitparams[i];
516 
517  if(boost::regex_match(splitpar.name.c_str(), matches, pname_exp)) {
518 
519  const std::string& comp_alias = splitpar.alias;
520  std::string par_name(matches[1].first, matches[1].second);
521  unsigned int pos = boost::lexical_cast<unsigned int,std::string>(string(matches[2].first, matches[2].second)) - 1; // start with __IPC__01
522 
523  std::vector<std::string>& values = assembled_params[ AssembledPar(comp_alias, par_name) ];
524 
525  if(values.size()<=pos) values.resize(pos+1);
526  values[pos]= splitpar.value;
527 
528  } else {
529  std::cout << "ERROR, can't parse " << splitpar.name << std::endl;
530  }
531 
532  }
533 
534  for(auto par: assembled_params) {
535 
536  const string& comp_alias = par.first.comp_alias;
537  const string& par_name = par.first.par_name;
538  vector<string>& values = par.second;
539  stringstream ss;
540  copy(values.begin(), values.end(), std::ostream_iterator<std::string>(ss));
541  jot.addJobOption( JobOption( comp_alias, par_name, "type", "set", ss.str()) );
542  }
543 
544  return assembled_params.size();
545 }
546 
547 
548 bool
550 
551  if(jot.smk()==0) {
552  TRG_MSG_ERROR("requested SMK is 0");
553  return false;
554  }
555 
556  triggerDBSchemaVersion();
557 
558  TRG_MSG_INFO("Start loading job options with smk " << jot.smk());
559 
560  startSession();
561 
562  int masterTableID(0);
563  int triggerMenuID(0);
564  int l2SetupID(0);
565  int efSetupID(0);
566  if( ! loadHLTMasterTable( jot.smk(),
567  masterTableID,
568  triggerMenuID,
569  l2SetupID,
570  efSetupID ) )
571  {
572  TRG_MSG_ERROR("Could not load menu and setup IDs for SMK " << jot.smk());
573  return false;
574  }
575 
576  jot.setHltMasterTableId( masterTableID );
577  TRG_MSG_INFO("HLT masterkey: " << jot.hltMasterTableId());
578  TRG_MSG_INFO("Menu ID : " << triggerMenuID);
579  if(l2SetupID==efSetupID) {
580  TRG_MSG_INFO("Setup ID : " << l2SetupID);
581  } else {
582  TRG_MSG_INFO("L2 Setup ID : " << l2SetupID);
583  TRG_MSG_INFO("EF Setup ID : " << efSetupID);
584  }
585 
586  int level = jot.triggerLevel()==0; // triggerLevel: 0 - L2, 1 - EF, 2 - HLT(combined L2+EF)
587  if( l2SetupID == efSetupID ||
588  (l2SetupID != 0 && efSetupID==0) )
589  level=2; // combined
590 
591  int setupId = (level==0 || level==2) ? l2SetupID : efSetupID;
592 
593  std::set<int> compIDsToLoad = loadComponentIDsFromSetup(setupId);
594 
595 
596  TRG_MSG_INFO("Direct components => " << compIDsToLoad.size());
597 
598  std::set<int> childCompIDs = getChildCompIDs( compIDsToLoad );
599 
600  TRG_MSG_INFO("All children => " << childCompIDs.size());
601 
602  compIDsToLoad.insert(childCompIDs.begin(), childCompIDs.end());
603 
604  TRG_MSG_INFO("All components => " << compIDsToLoad.size());
605 
606  loadComponentNamesAndParameters(jot, compIDsToLoad);
607 
608  jot.sort();
609 
610  commitSession();
611 
612  // some stats:
613  TRG_MSG_INFO("JobOptionTableLoader: Total parameters : " << jot.jobOptionVector().size());
614 
615  return true;
616 }
617 
618 
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
TRG_MSG_FATAL
#define TRG_MSG_FATAL(x)
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStreamMacros.h:30
TrigConf::JobOptionTableLoader::loadComponentNamesAndParameters
bool loadComponentNamesAndParameters(TrigConf::JobOptionTable &JOTable, const std::set< int > &compIDsToLoad)
Definition: JobOptionTableLoader.cxx:91
TRG_MSG_ERROR
#define TRG_MSG_ERROR(x)
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStreamMacros.h:29
query_example.row
row
Definition: query_example.py:24
fillPileUpNoiseLumi.current
current
Definition: fillPileUpNoiseLumi.py:52
python.SystemOfUnits.second
int second
Definition: SystemOfUnits.py:120
data
char data[hepevt_bytes_allocation_ATLAS]
Definition: HepEvt.cxx:11
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
TrigConf::JobOptionTableLoader::getChildCompIDs
std::set< int > getChildCompIDs(const std::set< int > &compIDs)
Definition: JobOptionTableLoader.cxx:335
TrigConf::JobOptionTable::jobOptionVector
std::vector< JobOption > & jobOptionVector()
accessor to the vector of job options
Definition: JobOptionTable.h:43
PowhegControl_ttHplus_NLO.ss
ss
Definition: PowhegControl_ttHplus_NLO.py:83
TrigConf::JobOptionTableLoader::assembleSplitParameters
unsigned int assembleSplitParameters(JobOptionTable &jot, const std::vector< SplitParam > &splitparams)
Definition: JobOptionTableLoader.cxx:411
TrigConf::JobOptionTableLoader::SplitParam::name
std::string name
Definition: JobOptionTableLoader.h:75
python.CreateTierZeroArgdict.parname
parname
Definition: CreateTierZeroArgdict.py:194
TrigConf::JobOptionTableLoader::loadComponentIDsFromMenu
std::set< int > loadComponentIDsFromMenu(const int menu_id, int triggerLevel)
Definition: JobOptionTableLoader.cxx:206
TRG_MSG_VERBOSE
#define TRG_MSG_VERBOSE(x)
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStreamMacros.h:24
TrigConf::JobOptionTable::hltMasterTableId
int hltMasterTableId() const
accessor to the HLT master table configuration key
Definition: JobOptionTable.h:29
DBHelper.h
TrigConf::JobOptionTableLoader::SplitParam::value
std::string value
Definition: JobOptionTableLoader.h:78
TrigConf::JobOptionTableLoader::SplitParam::actualname
std::string actualname
Definition: JobOptionTableLoader.h:79
TrigConf::fillQuery
void fillQuery(coral::IQuery *q, coral::AttributeList &attList)
Definition: DBHelper.cxx:13
athena.value
value
Definition: athena.py:122
ReadOfcFromCool.field
field
Definition: ReadOfcFromCool.py:48
python.PyKernel.AttributeList
AttributeList
Definition: PyKernel.py:36
TrigConf::JobOptionTable
table to hold the complete list of JobOption entries for a single configuration, from which the JobOp...
Definition: JobOptionTable.h:20
TrigConf::JobOptionTableLoader::SplitParam
Definition: JobOptionTableLoader.h:61
std::sort
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.
Definition: DVL_algorithms.h:554
XMLtoHeader.count
count
Definition: XMLtoHeader.py:85
python.Bindings.values
values
Definition: Control/AthenaPython/python/Bindings.py:797
python.iconfTool.models.loaders.level
level
Definition: loaders.py:20
PrepareReferenceFile.regex
regex
Definition: PrepareReferenceFile.py:43
TrigConf
Forward iterator to traverse the main components of the trigger configuration.
Definition: Config.h:22
uint
unsigned int uint
Definition: LArOFPhaseFill.cxx:20
JobOptionTableLoader.h
JobOption.h
lumiFormat.i
int i
Definition: lumiFormat.py:92
TrigConf::JobOptionTable::setHltMasterTableId
void setHltMasterTableId(int id)
setter of the HLT master table configuration key
Definition: JobOptionTable.h:33
TrigConf::JobOptionTableLoader::loadComponentIDsFromSetup
std::set< int > loadComponentIDsFromSetup(const int setup_id)
Definition: JobOptionTableLoader.cxx:168
COOLRates.alias
alias
Definition: COOLRates.py:1172
calibdata.exception
exception
Definition: calibdata.py:496
JobOptionTable.h
TrigConf::TrigConfData
Definition: TrigConfData.h:13
TrigConf::JobOptionTableLoader::SplitParam::alias
std::string alias
Definition: JobOptionTableLoader.h:74
TrigConf::name
Definition: HLTChainList.h:35
TRG_MSG_INFO
#define TRG_MSG_INFO(x)
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStreamMacros.h:27
TrigConf::TrigConfData::smk
unsigned int smk() const
Definition: TrigConfData.h:20
TrigConf::JobOptionTable::triggerLevel
int triggerLevel() const
accessor to the trigger level
Definition: JobOptionTable.h:31
TrigConf::JobOption
hold a single job option (parameter and value)
Definition: JobOption.h:32
TrigConf::JobOptionTableLoader::loadHLTMasterTable
bool loadHLTMasterTable(int SuperMasterKey, int &masterTableID, int &triggerMenuID, int &l2SetupID, int &efSetupID)
Definition: JobOptionTableLoader.cxx:35
createCoolChannelIdFile.par
par
Definition: createCoolChannelIdFile.py:29
ActsTrk::to_string
std::string to_string(const DetectorType &type)
Definition: GeometryDefs.h:34
python.ext.table_printer.table
list table
Definition: table_printer.py:81
python.ElectronD3PDObject.matched
matched
Definition: ElectronD3PDObject.py:138
TrigConf::JobOptionTable::sort
void sort()
sort alphabetically by component and property name
Definition: JobOptionTable.cxx:67
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
python.PyAthena.v
v
Definition: PyAthena.py:157
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
query_example.cursor
cursor
Definition: query_example.py:21
TrigConf::JobOptionTable::addJobOption
void addJobOption(const JobOption &jo)
adds a job option to the table
Definition: JobOptionTable.cxx:19
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
DeMoScan.first
bool first
Definition: DeMoScan.py:534
TrigConf::JobOptionTableLoader::load
virtual bool load(TrigConfData &data)
Definition: JobOptionTableLoader.cxx:391
TrigConf::JobOptionTableLoader::assembleSplitParameters2
unsigned int assembleSplitParameters2(JobOptionTable &jot, const std::vector< SplitParam > &splitparams)
Definition: JobOptionTableLoader.cxx:506
extractSporadic.q
list q
Definition: extractSporadic.py:98
calibdata.copy
bool copy
Definition: calibdata.py:27
python.root_pickle.load
def load(f, use_proxy=1, key=None)
Definition: root_pickle.py:476
TrigConf::JobOptionTableLoader::buildCond_IN_
std::string buildCond_IN_(const std::string &field, const std::set< int > &IDs, std::set< int >::const_iterator &current, unsigned int batchSize)
Definition: JobOptionTableLoader.cxx:268
Trk::split
@ split
Definition: LayerMaterialProperties.h:38
TRG_MSG_DEBUG
#define TRG_MSG_DEBUG(x)
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStreamMacros.h:25