ATLAS Offline Software
Public Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
TrigConf::ThresholdConfigLoader Class Referenceabstract

TriggerDB loader of the LVL1 trigger threshold configuration. More...

#include <ThresholdConfigLoader.h>

Inheritance diagram for TrigConf::ThresholdConfigLoader:
Collaboration diagram for TrigConf::ThresholdConfigLoader:

Public Member Functions

 ThresholdConfigLoader (StorageMgr &sm, coral::ISessionProxy &session)
 constructor More...
 
virtual ~ThresholdConfigLoader () override=default
 
virtual bool load (ThresholdConfig &data) override
 
virtual void setLevel (MSGTC::Level lvl)=0
 Load the configuration data from the configuration source. More...
 
virtual MSGTC::Level outputLevel () const =0
 
virtual int verbose () const =0
 
virtual void setVerbose (int v)=0
 
virtual void setLevel (MSGTC::Level lvl) override
 access to output stream More...
 
virtual MSGTC::Level outputLevel () const override
 
void startSession ()
 start session if not already active More...
 
void commitSession ()
 commit session if not already done More...
 
bool loadL1MasterKey (int SuperMasterKey, int &Lvl1MasterKey)
 get l1 master from super master More...
 
bool loadL1MenuKey (int SuperMasterKey, int &Lvl1MenuKey)
 get l1 menu id from super master More...
 
unsigned int triggerDBSchemaVersion ()
 
virtual int verbose () const override
 
virtual void setVerbose (int v) override
 
bool isRun1 ()
 
bool isRun2 ()
 
bool msgLvl (const MSGTC::Level lvl) const
 Test the output level. More...
 
MsgStreamTCmsg () const
 The standard message stream. More...
 
MsgStreamTCmsg (const MSGTC::Level lvl) const
 The standard message stream. More...
 

Protected Attributes

StorageMgrm_storageMgr
 reference to the storage manager More...
 
coral::ISessionProxy & m_session
 CORAL interface to database session. More...
 
bool m_sessionOwner {false}
 remember if the loader started the session in the first place More...
 

Private Member Functions

void loadCaloInfo (ThresholdConfig &thrConfig, long caloInfoId)
 
std::tuple< unsigned int, unsigned int > loadSchemaVersion () const
 get DB schema version and run number More...
 

Private Attributes

int m_verbose {1}
 
boost::thread_specific_ptr< MsgStreamTCm_msg_tls
 MsgStreamTC instance (a std::cout like with print-out levels) More...
 
std::string m_name
 

Detailed Description

TriggerDB loader of the LVL1 trigger threshold configuration.

Definition at line 26 of file ThresholdConfigLoader.h.

Constructor & Destructor Documentation

◆ ThresholdConfigLoader()

TrigConf::ThresholdConfigLoader::ThresholdConfigLoader ( StorageMgr sm,
coral::ISessionProxy &  session 
)
inline

constructor

Parameters
smreference to storage manager
sessionreference to the database session

Definition at line 35 of file ThresholdConfigLoader.h.

36  : DBLoader("ThresholdConfigLoader", sm, session) {}

◆ ~ThresholdConfigLoader()

virtual TrigConf::ThresholdConfigLoader::~ThresholdConfigLoader ( )
overridevirtualdefault

Member Function Documentation

◆ commitSession()

void TrigConf::DBLoader::commitSession ( )
inherited

commit session if not already done

Definition at line 45 of file DBLoader.cxx.

46 {
47  if ( m_session.transaction().isActive() && m_sessionOwner) {
48  m_session.transaction().commit();
49  }
50 }

◆ isRun1()

bool TrigConf::DBLoader::isRun1 ( )
inlineinherited

Definition at line 60 of file DBLoader.h.

60 { return ! isRun2(); }

◆ isRun2()

bool DBLoader::isRun2 ( )
inherited

Definition at line 54 of file DBLoader.cxx.

54  {
55  const static unsigned int run = std::get<1>(loadSchemaVersion());
56  return run == 2;
57 }

◆ load()

bool TrigConf::ThresholdConfigLoader::load ( ThresholdConfig data)
overridevirtual

Implements TrigConf::IThresholdConfigLoader.

Definition at line 43 of file ThresholdConfigLoader.cxx.

43  {
44 
45  const unsigned int schema_version_with_zb_fields = 9;
46 
47  TRG_MSG_DEBUG("Loading ThresholdConfig object attached to Lvl1 master ID " << thrConfig.lvl1MasterTableId());
48  TRG_MSG_DEBUG("Current number of thresholds: " << thrConfig.size());
49 
50  long caloinfoid = 0;
51 
52  try {
53  startSession();
54  // get menu id and caloinfo id from thrConfig.m_MasterTableId and the table L1_MASTER_TABLE
55  int menuid = 0;
56 
57  unique_ptr<coral::IQuery> query0(m_session.nominalSchema().tableHandle( "L1_MASTER_TABLE").newQuery());
58  query0->setRowCacheSize( 5 );
59 
60  //Bind list
61  coral::AttributeList bindList0;
62  bindList0.extend<int>("mtId");
63  std::string cond0 = "L1MT_ID = :mtId";
64  bindList0[0].data<int>() = thrConfig.lvl1MasterTableId();
65  query0->setCondition( cond0, bindList0 );
66 
67  //Output and types
68  coral::AttributeList attList0;
69  attList0.extend<int>( "L1MT_TRIGGER_MENU_ID" );
70  attList0.extend<long>( "L1MT_CALO_INFO_ID" );
71  query0->defineOutput(attList0);
72  query0->addToOutputList( "L1MT_TRIGGER_MENU_ID" );
73  query0->addToOutputList( "L1MT_CALO_INFO_ID" );
74  coral::ICursor& cursor0 = query0->execute();
75 
76  if ( ! cursor0.next() ) {
77  TRG_MSG_ERROR("ThresholdConfigLoader >> No such Master_Table exists " << thrConfig.lvl1MasterTableId());
78  commitSession();
79  throw std::runtime_error( "ThresholdConfigLoader >> ThresholdConfig not available" );
80  }
81 
82  const coral::AttributeList& row0 = cursor0.currentRow();
83  menuid = row0["L1MT_TRIGGER_MENU_ID"].data<int>();
84  caloinfoid = row0["L1MT_CALO_INFO_ID"].data<long>();
85 
86  if ( cursor0.next() ) {
87 
88  TRG_MSG_ERROR("ThresholdConfigLoader >> More than one Master_Table exists "
89  << thrConfig.lvl1MasterTableId());
90  commitSession();
91  throw std::runtime_error( "ThresholdConfigLoader >> Master_Table not available" );
92  }
93 
94  //=====================================================
95  // get Thresholds WITH trigger threshold values
96 
97  coral::AttributeList emptyBindVariableList;
98 
99  unique_ptr<coral::IQuery> query(m_session.nominalSchema().newQuery());
100 
101  // Set the tables that are used
102  query->addToTableList ( "L1_TM_TO_TT", "TM2TT" );
103  query->addToTableList ( "L1_TRIGGER_THRESHOLD", "TT" );
104  query->addToTableList ( "L1_TT_TO_TTV", "TT2TTV" );
105  query->addToTableList ( "L1_TRIGGER_THRESHOLD_VALUE", "TTV" );
106 
107  // Bind list
108  coral::AttributeList bindList;
109  bindList.extend<int>("menuId");
110  bindList[0].data<int>() = menuid;
111  std::string theCondition = "";
112  theCondition += std::string( " TM2TT.L1TM2TT_TRIGGER_MENU_ID = :menuId" );
113  theCondition += std::string( " AND TM2TT.L1TM2TT_TRIGGER_THRESHOLD_ID = TT.L1TT_ID" );
114  theCondition += std::string( " AND TT2TTV.L1TT2TTV_TRIGGER_THRESHOLD_ID = TT.L1TT_ID" );
115  theCondition += std::string( " AND TT2TTV.L1TT2TTV_TRIG_THRES_VALUE_ID = TTV.L1TTV_ID" );
116  query->setCondition( theCondition, bindList );
117 
118  // Output data and types
119  coral::AttributeList attList;
120  attList.extend<std::string>( "TM2TT.L1TM2TT_CABLE_NAME" );
121  attList.extend<std::string>( "TM2TT.L1TM2TT_CABLE_CTPIN" );
122  attList.extend<std::string>( "TM2TT.L1TM2TT_CABLE_CONNECTOR" );
123  attList.extend<int> ( "TM2TT.L1TM2TT_CABLE_START" );
124  attList.extend<int> ( "TM2TT.L1TM2TT_CABLE_END" );
125  if(isRun2()) {
126  attList.extend<int> ( "TM2TT.L1TM2TT_CABLE_CLOCK" );
127  }
128  attList.extend<int> ( "TT.L1TT_ID" );
129  attList.extend<std::string>( "TT.L1TT_NAME" );
130  attList.extend<int> ( "TT.L1TT_VERSION" );
131  attList.extend<std::string>( "TT.L1TT_TYPE" );
132  attList.extend<int> ( "TT.L1TT_ACTIVE" );
133  attList.extend<int> ( "TT.L1TT_MAPPING" );
134  attList.extend<int> ( "TT.L1TT_BITNUM" );
135  attList.extend<int> ( "TTV.L1TTV_ID" );
136  attList.extend<std::string>( "TTV.L1TTV_NAME" );
137  attList.extend<int> ( "TTV.L1TTV_VERSION" );
138  attList.extend<std::string>( "TTV.L1TTV_TYPE" );
139  attList.extend<std::string>( "TTV.L1TTV_PT_CUT" );
140  attList.extend<int> ( "TTV.L1TTV_ETA_MIN" );
141  attList.extend<int> ( "TTV.L1TTV_ETA_MAX" );
142  attList.extend<int> ( "TTV.L1TTV_PHI_MIN" );
143  attList.extend<int> ( "TTV.L1TTV_PHI_MAX" );
144  attList.extend<std::string>( "TTV.L1TTV_EM_ISOLATION" );
145  attList.extend<std::string>( "TTV.L1TTV_HAD_ISOLATION" );
146  attList.extend<std::string>( "TTV.L1TTV_HAD_VETO" );
147  attList.extend<int> ( "TTV.L1TTV_WINDOW" );
148  attList.extend<std::string>( "TTV.L1TTV_PRIORITY" );
149  fillQuery(query.get(), attList);
150 
151  // the ordering
152  std::string theOrder = "";
153  theOrder += " TT.L1TT_MAPPING ASC";
154  theOrder += ", TT.L1TT_ID ASC";
155  theOrder += ", TTV.L1TTV_PRIORITY ASC";
156  theOrder += ", TTV.L1TTV_ETA_MAX ASC";
157  query->addToOrderList( theOrder );
158 
159  //query->setRowCacheSize(1000);
160  query->setRowCacheSize(500);
161 
162  coral::ICursor& cursor = query->execute();
163 
164  unsigned int schema_version = triggerDBSchemaVersion();
165  //unsigned int numberofvalues = 0;
166  TriggerThreshold* tt = 0;
167  int nRowsLoop1 = -2009;
168  int nRowsLoop2 = -2010;
169 
170  while (cursor.next()) {
171 
172  const coral::AttributeList& row = cursor.currentRow();
173 
174  nRowsLoop1 = row["TT.L1TT_ID"].data<int>();
175  if (nRowsLoop1 != nRowsLoop2) {
176 
177  if (tt != 0) {
178  // trigger thresholds sorted by type
179  thrConfig.addTriggerThreshold(tt);
180  tt = new TriggerThreshold();
181  //numberofvalues = 0;
182  } else {
183  tt = new TriggerThreshold();
184  //numberofvalues = 0;
185  }
186 
187  //==================================================
188  // now get the cable info from TM_TT
189 
190  string cableName = row["TM2TT.L1TM2TT_CABLE_NAME"].data<std::string>();
191  tt->setCableName (cableName);
192  tt->setCableCtpin (row["TM2TT.L1TM2TT_CABLE_CTPIN"].data<std::string>());
193  tt->setCableConnector(row["TM2TT.L1TM2TT_CABLE_CONNECTOR"].data<std::string>());
194  tt->setCableStart (row["TM2TT.L1TM2TT_CABLE_START"].data<int>());
195  tt->setCableEnd (row["TM2TT.L1TM2TT_CABLE_END"].data<int>());
196 
197  int clock = 0;
198  if(isRun2()) {
199  clock = row["TM2TT.L1TM2TT_CABLE_CLOCK"].data<int>();
200  }
201  if(clock >= 0) {
202  tt->setClock(clock);
203  }
204  tt->setId (row["TT.L1TT_ID"].data<int>());
205  tt->setName (row["TT.L1TT_NAME"].data<std::string>());
206  tt->setVersion(row["TT.L1TT_VERSION"].data<int>());
207  string thrtype(row["TT.L1TT_TYPE"].data<std::string>());
208  tt->setType (thrtype);
209  tt->setActive (row["TT.L1TT_ACTIVE"].data<int>());
210  tt->setMapping(row["TT.L1TT_MAPPING"].data<int>());
211  tt->setBitnum(row["TT.L1TT_BITNUM"].data<int>());
212  tt->setInput ( (thrtype=="TOPO" || thrtype=="ALFA") ? "ctpcore" : "ctpin" );
213 
214  TRG_MSG_VERBOSE("ThresholdConfigLoader loading threshold with ID = " << tt->id() << " for MenuId = " << menuid << ": ");
215  }
216 
217  if(tt->type() == L1DataDef::rndmType() ||
218  tt->type() == L1DataDef::pclkType() ||
219  tt->type() == L1DataDef::bgrpType() ) {
220  } else {
221 
222  TriggerThresholdValue* ttv = tt->createThresholdValue(row["TT.L1TT_TYPE"].data<std::string>());
223 
224  ttv->setId (row["TTV.L1TTV_ID"].data<int>());
225 
226  // Fill the value common for all threshold_value
227  ttv->setName (row["TTV.L1TTV_NAME"].data<std::string>());
228  ttv->setVersion (row["TTV.L1TTV_VERSION"].data<int>());
229  ttv->setType (row["TTV.L1TTV_TYPE"].data<std::string>());
230  float ptcut = boost::lexical_cast<float,std::string>(row["TTV.L1TTV_PT_CUT"].data<std::string>());
231  string emisolation = row["TTV.L1TTV_EM_ISOLATION"].data<std::string>();
232  string hadisolation = row["TTV.L1TTV_HAD_ISOLATION"].data<std::string>();
233  string hadveto = row["TTV.L1TTV_HAD_VETO"].data<std::string>();
234  float priority = boost::lexical_cast<float,std::string>(row["TTV.L1TTV_PRIORITY"].data<std::string>());
235  ttv->setPtcut (ptcut);
236  ttv->setPriority (priority);
237 
238  //is it a cluster_threshold_value?
239  try {
240  ClusterThresholdValue& ctv = dynamic_cast<ClusterThresholdValue&>(*ttv);
241  if (ttv->type() != L1DataDef::emType() &&
242  ttv->type() != L1DataDef::tauType()) {
243  msg() << "ThresholdConfigLoader >> No type match for ttv_id = "
244  << ctv.id() << " " << ttv->type() << std::endl;
245  throw std::runtime_error( "ThresholdConfigLoader >> ClusterThresholdValue not available" );
246  }
247 
248  if(hadveto=="USEISOBITS" || boost::lexical_cast<int,std::string>(hadveto)==99 ) {
249  ctv.setEmIsolation( 63 );
250  ctv.setHadIsolation( 63 );
251  ctv.setHadVeto( 99 );
252  ctv.setIsolationMask( TrigConf::bin2uint(emisolation) );
253  ctv.setUseIsolationMask();
254  } else {
255  ctv.setEmIsolation( boost::lexical_cast<float,std::string>(emisolation) );
256  ctv.setHadIsolation( boost::lexical_cast<float,std::string>(hadisolation) );
257  ctv.setHadVeto( boost::lexical_cast<float,std::string>(hadveto) );
258  ctv.setUseIsolationMask( false );
259  }
260 
261  } catch (std::bad_cast& ex) { }
262 
263  //is it a jet_threshold_value?
264  try {
265  JetThresholdValue& jtv = dynamic_cast<JetThresholdValue&>(*ttv);
266  if (ttv->type() != L1DataDef::jetType() &&
267  ttv->type() != L1DataDef::jbType() &&
268  ttv->type() != L1DataDef::jfType()) {
269  TRG_MSG_ERROR("No type match for ttv_id = " << jtv.id() << ttv->type());
270  throw std::runtime_error( "ThresholdConfigLoader >> TriggerThresholdValue not available" );
271  }
272  // jtv.setPhiMin(row["TTV.L1TTV_PHI_MIN"].data<int>());
273  // jtv.setPhiMax(row["TTV.L1TTV_PHI_MAX"].data<int>());
274  // jtv.setEtaMin(row["TTV.L1TTV_ETA_MIN"].data<int>());
275  // jtv.setEtaMax(row["TTV.L1TTV_ETA_MAX"].data<int>());
276  // jtv.setWindow(row["TTV.L1TTV_WINDOW"].data<int>());
277  } catch (std::bad_cast& ex) { }
278 
279  ttv->setPhiMin(row["TTV.L1TTV_PHI_MIN"].data<int>());
280  ttv->setPhiMax(row["TTV.L1TTV_PHI_MAX"].data<int>());
281  ttv->setEtaMin(row["TTV.L1TTV_ETA_MIN"].data<int>());
282  ttv->setEtaMax(row["TTV.L1TTV_ETA_MAX"].data<int>());
283  ttv->setWindow(row["TTV.L1TTV_WINDOW"].data<int>());
284  tt->addThresholdValue(ttv);
285  //++numberofvalues;
286  TRG_MSG_DEBUG("ThresholdConfigLoader loading thresholdvalue with ID = " << ttv->id() << ": " << ttv->name());
287  }
288 
289  nRowsLoop2 = row["TT.L1TT_ID"].data<int>();
290 
291  }
292 
293  // trigger thresholds sorted by type
294  thrConfig.addTriggerThreshold(tt);
295 
296  //===========================================
297  // now get the Thresholds WITHOUT trigger threshold values
298  // we are aware that some code is duplicated below
299  // it is done this way because most Thresholds are WITH trigger threshold values
300 
301  if (!m_session.transaction().isActive()) m_session.transaction().start();
302  unique_ptr<coral::IQuery> query1(m_session.nominalSchema().newQuery());
303 
304  // Set the tables that are used
305  query1->addToTableList ( "L1_TM_TO_TT", "TM2TT" );
306  query1->addToTableList ( "L1_TRIGGER_THRESHOLD", "TT" );
307 
308  // Bind list
309  coral::AttributeList bindList1;
310  bindList1.extend<int>("menuId");
311  bindList1[0].data<int>() = menuid;
312  std::string theCondition1 = "";
313  theCondition1 += std::string( " TM2TT.L1TM2TT_TRIGGER_MENU_ID = :menuId" );
314  theCondition1 += std::string( " AND TM2TT.L1TM2TT_TRIGGER_THRESHOLD_ID = TT.L1TT_ID" );
315  query1->setCondition( theCondition1, bindList1 );
316 
317  // Output data and types
318  coral::AttributeList attList1;
319  attList1.extend<std::string>( "TM2TT.L1TM2TT_CABLE_NAME" );
320  attList1.extend<std::string>( "TM2TT.L1TM2TT_CABLE_CTPIN" );
321  attList1.extend<std::string>( "TM2TT.L1TM2TT_CABLE_CONNECTOR" );
322  attList1.extend<int> ( "TM2TT.L1TM2TT_CABLE_START" );
323  attList1.extend<int> ( "TM2TT.L1TM2TT_CABLE_END" );
324  if(isRun2()) {
325  attList1.extend<int> ( "TM2TT.L1TM2TT_CABLE_CLOCK" );
326  }
327  attList1.extend<int> ( "TT.L1TT_ID" );
328  attList1.extend<std::string>( "TT.L1TT_NAME" );
329  attList1.extend<int> ( "TT.L1TT_VERSION" );
330  attList1.extend<std::string>( "TT.L1TT_TYPE" );
331  attList1.extend<int> ( "TT.L1TT_ACTIVE" );
332  attList1.extend<int> ( "TT.L1TT_MAPPING" );
333  if( isRun2() || (schema_version >= schema_version_with_zb_fields) ) {
334  attList1.extend<int> ( "TT.L1TT_BCDELAY" );
335  attList1.extend<std::string>( "TT.L1TT_SEED" );
336  attList1.extend<int> ( "TT.L1TT_SEED_MULTI" );
337  }
338  fillQuery(query1.get(), attList1);
339 
340  // the ordering
341  std::string theOrder1 = "";
342  theOrder1 += " TT.L1TT_ID ASC";
343  query1->addToOrderList( theOrder1 );
344 
345  //query->setRowCacheSize(1000);
346  query1->setRowCacheSize(500);
347 
348  coral::ICursor& cursor1 = query1->execute();
349 
350  //numberofvalues = 0;
351  tt = 0;
352  nRowsLoop1 = -2009;
353  nRowsLoop2 = -2010;
354 
355  while (cursor1.next()) {
356 
357  const coral::AttributeList& row = cursor1.currentRow();
358 
359  nRowsLoop1 = row["TT.L1TT_ID"].data<int>();
360  tt = thrConfig.findTriggerThreshold(nRowsLoop1);
361  if (tt) continue;
362  if (nRowsLoop1 != nRowsLoop2) {
363 
364  if (tt != 0) {
365  //tt->setNumberofValues(numberofvalues);
366  // trigger thresholds sorted by type
367  thrConfig.addTriggerThreshold(tt);
368  tt = new TriggerThreshold();
369  //numberofvalues = 0;
370  } else {
371  tt = new TriggerThreshold();
372  //numberofvalues = 0;
373  }
374 
375  //==================================================
376  // now get the cable info from TM_TT
377 
378  // ttldr.setLoadCableInfo(true); will be moved from tt to thrcfg loader
379 
380  string cableName = row["TM2TT.L1TM2TT_CABLE_NAME"].data<std::string>();
381  tt->setCableName(cableName);
382  tt->setCableCtpin (row["TM2TT.L1TM2TT_CABLE_CTPIN"].data<std::string>());
383  tt->setCableConnector(row["TM2TT.L1TM2TT_CABLE_CONNECTOR"].data<std::string>());
384  tt->setCableStart (row["TM2TT.L1TM2TT_CABLE_START"].data<int>());
385  tt->setCableEnd (row["TM2TT.L1TM2TT_CABLE_END"].data<int>());
386 
387  int clock = 0;
388  if(isRun2()) {
389  clock = row["TM2TT.L1TM2TT_CABLE_CLOCK"].data<int>();
390  }
391  if(clock >= 0) {
392  tt->setClock(clock);
393  }
394  tt->setId (row["TT.L1TT_ID"].data<int>());
395  tt->setName (row["TT.L1TT_NAME"].data<std::string>());
396  tt->setVersion(row["TT.L1TT_VERSION"].data<int>());
397  string thrtype(row["TT.L1TT_TYPE"].data<std::string>());
398  tt->setType (thrtype);
399  tt->setActive (row["TT.L1TT_ACTIVE"].data<int>());
400  tt->setMapping(row["TT.L1TT_MAPPING"].data<int>());
401  tt->setInput ( (thrtype=="TOPO" || thrtype=="ALFA") ? "ctpcore" : "ctpin" );
402 
403 
404  // zero bias related
405  int bcdelay(-1), seed_multi(-1);
406  std::string seed("");
407  if( isRun2() || (schema_version >= schema_version_with_zb_fields) ) {
408  bcdelay = row["TT.L1TT_BCDELAY"].data<int>();
409  seed = row["TT.L1TT_SEED"].data<std::string>();
410  seed_multi = row["TT.L1TT_SEED_MULTI"].data<int>();
411  }
412  tt->setBCDelay (bcdelay);
413  tt->setZBSeedingThresholdName (seed);
414  tt->setZBSeedingThresholdMulti(seed_multi);
415 
416  TRG_MSG_VERBOSE("ThresholdConfigLoader loading threshold with ID = " << tt->id() << " for MenuId = " << menuid << ": ");
417  //tt->setNumberofValues(numberofvalues);
418  // trigger thresholds sorted by type
419  thrConfig.addTriggerThreshold(tt);
420  tt = nullptr;
421  }
422 
423  nRowsLoop2 = row["TT.L1TT_ID"].data<int>();
424 
425  }
426  commitSession();
427  }
428  catch( const coral::Exception& e ) {
429  TRG_MSG_ERROR("Caught coral exception: " << e.what() );
430  throw;
431  }
432  catch( const std::exception& e ) {
433  TRG_MSG_ERROR("Caught standard exception: " << e.what() );
434  throw;
435  }
436 
437  loadCaloInfo(thrConfig, caloinfoid);
438 
439  // create TIPs from TOPO and ALFA TriggerThresholds
440 
441  return true;
442 
443 }

◆ loadCaloInfo()

void TrigConf::ThresholdConfigLoader::loadCaloInfo ( ThresholdConfig thrConfig,
long  caloInfoId 
)
private

Definition at line 448 of file ThresholdConfigLoader.cxx.

448  {
449  //============================================
450  // get CaloInfo
451  //============================================
452  try {
453  startSession();
454  CaloInfoLoader& cildr = dynamic_cast<CaloInfoLoader&>
455  ((dynamic_cast<StorageMgr&>(m_storageMgr)).caloInfoLoader());
456  cildr.setLevel(outputLevel());
457  CaloInfo ci;
458  ci.setId(caloInfoId);
459  if ( !cildr.load( ci )) {
460  TRG_MSG_ERROR("loading CaloInfo " << ci.id());
461  throw runtime_error( "ThresholdConfigLoader: Error loading CaloInfo" );
462  }
463  thrConfig.setCaloInfo(ci);
465  commitSession();
466  }
467  catch( const coral::Exception& e ) {
468  TRG_MSG_ERROR("Caught coral exception: " << e.what() );
469  throw;
470  }
471  catch( const std::exception& e ) {
472  TRG_MSG_ERROR("Caught standard exception: " << e.what() );
473  throw;
474  }
475 }

◆ loadL1MasterKey()

bool TrigConf::DBLoader::loadL1MasterKey ( int  SuperMasterKey,
int &  Lvl1MasterKey 
)
inherited

get l1 master from super master

Definition at line 128 of file DBLoader.cxx.

128  {
129  try {
130  startSession();
131 
132  unique_ptr< coral::IQuery > q( m_session.nominalSchema().tableHandle( "SUPER_MASTER_TABLE").newQuery() );
133  q->setRowCacheSize( 5 );
134 
135  //Bind list
136  coral::AttributeList bindings;
137  bindings.extend<int>("smtid");
138  bindings[0].data<int>() = smk;
139  q->setCondition( "SMT_ID = :smtid", bindings );
140 
141  //Output data and types
142  coral::AttributeList attList;
143  attList.extend<int>( "SMT_L1_MASTER_TABLE_ID" );
144  fillQuery(q.get(), attList);
145 
146  coral::ICursor& cursor = q->execute();
147  if ( ! cursor.next() ) {
148  msg() << "DBLoader: No such SuperMaster key exists " << smk << endl;
149  throw runtime_error( "DBLoader: SuperMasterKey not available" );
150  }
151 
152  const coral::AttributeList& row = cursor.currentRow();
153  Lvl1MasterKey = row["SMT_L1_MASTER_TABLE_ID"].data<int>();
154  }
155  catch( const std::exception& e ) {
156  commitSession();
157  msg() << "DBLoader: C++ exception: " << e.what() << std::endl;
158  throw;
159  }
160  commitSession();
161  return true;
162 }

◆ loadL1MenuKey()

bool TrigConf::DBLoader::loadL1MenuKey ( int  SuperMasterKey,
int &  Lvl1MenuKey 
)
inherited

get l1 menu id from super master

Definition at line 167 of file DBLoader.cxx.

167  {
168  try {
169 
170  int l1Master = 0;
171  loadL1MasterKey(SuperMasterKey, l1Master);
172 
173  startSession();
174 
175  unique_ptr< coral::IQuery > q( m_session.nominalSchema().tableHandle( "L1_MASTER_TABLE").newQuery() );
176  q->setRowCacheSize( 5 );
177 
178  //Bind list
179  coral::AttributeList bindings;
180  bindings.extend<int>("l1mtid");
181  bindings[0].data<int>() = l1Master;
182  q->setCondition( "L1MT_ID = :l1mtid" , bindings );
183 
184  //Output data and types
185  coral::AttributeList attList;
186  attList.extend<int>( "L1MT_TRIGGER_MENU_ID" );
187  q->defineOutput(attList);
188  q->addToOutputList( "L1MT_TRIGGER_MENU_ID" );
189 
190  coral::ICursor& cursor = q->execute();
191  if ( ! cursor.next() ) {
192  msg() << "DBLoader >> No such L1 Master key exists " << l1Master << std::endl;
193  throw std::runtime_error( "DBLoader >> L1MasterKey not available" );
194  commitSession();
195  }
196 
197  const coral::AttributeList& row = cursor.currentRow();
198  Lvl1MenuKey = row["L1MT_TRIGGER_MENU_ID"].data<int>();
199 
200  commitSession();
201 
202  }
203  catch( const std::exception& e ) {
204  msg() << "DBLoader >> Standard C++ exception: " << e.what() << std::endl;
205  m_session.transaction().rollback();
206  throw;
207  }
208  return true;
209 }

◆ loadSchemaVersion()

std::tuple< unsigned int, unsigned int > DBLoader::loadSchemaVersion ( ) const
privateinherited

get DB schema version and run number

Definition at line 81 of file DBLoader.cxx.

82 {
83  const static auto versions = [&]() -> std::tuple<unsigned int,unsigned int> {
84  bool mySession = false;
85  if ( ! m_session.transaction().isActive() ) {
86  m_session.transaction().start(true);
87  mySession = true;
88  }
89 
90  std::unique_ptr< coral::IQuery > q( m_session.nominalSchema().tableHandle( "TRIGGER_SCHEMA").newQuery() );
91  q->setRowCacheSize( 1 );
92 
93  //Output data and types
94  coral::AttributeList attList;
95  attList.extend<int>( "TS_ID" );
96  q->defineOutput(attList);
97  q->addToOutputList( "TS_ID" );
98 
99  q->addToOrderList("TS_ID desc");
100  coral::ICursor& cursor = q->execute();
101 
102  if ( ! cursor.next() ) {
103  TRG_MSG_ERROR("Table TRIGGER_SCHEMA is not filled");
104  if ( mySession ) m_session.transaction().commit();
105  throw std::runtime_error( "DBLoader::loadSchemaVersion() >> Table TRIGGER_SCHEMA is not filled" );
106  }
107 
108  const coral::AttributeList& row = cursor.currentRow();
109  const unsigned int triggerDBSchemaVersion = row["TS_ID"].data<int>();
110 
111  TRG_MSG_INFO("TriggerDB schema version: " << triggerDBSchemaVersion);
112 
113  const unsigned int run = m_session.nominalSchema().existsTable( "ACTIVE_MASTERS" ) ? 2 : 1;
114 
115  TRG_MSG_INFO("Database has Run " << run << " schema");
116  TRG_MSG_INFO("Total number of tables : " << m_session.nominalSchema().listTables().size());
117 
118  //commitSession();
119  if ( mySession ) m_session.transaction().commit();
120 
121  return {triggerDBSchemaVersion, run};
122  }();
123 
124  return versions;
125 }

◆ 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 81 of file TrigConfMessaging.h.

82  {
83  MsgStreamTC* ms = m_msg_tls.get();
84  if (!ms) {
85  ms = new MsgStreamTC(m_name);
86  m_msg_tls.reset(ms);
87  }
88  return *ms;
89  }

◆ 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 91 of file TrigConfMessaging.h.

92  {
93  return msg() << lvl;
94  }

◆ 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 70 of file TrigConfMessaging.h.

71  {
72  if (msg().level() <= lvl) {
73  msg() << lvl;
74  return true;
75  }
76  else {
77  return false;
78  }
79  }

◆ outputLevel() [1/2]

virtual MSGTC::Level TrigConf::ILoader::outputLevel ( ) const
pure virtualinherited

Implemented in TrigConf::DBLoader.

◆ outputLevel() [2/2]

virtual MSGTC::Level TrigConf::DBLoader::outputLevel ( ) const
inlineoverridevirtualinherited

Implements TrigConf::ILoader.

Definition at line 40 of file DBLoader.h.

40 { return msg().level(); }

◆ setLevel() [1/2]

void DBLoader::setLevel ( MSGTC::Level  lvl)
overridevirtualinherited

access to output stream

Implements TrigConf::ILoader.

Definition at line 60 of file DBLoader.cxx.

60  {
61  msg().setLevel(lvl);
62 
63  switch(lvl) {
64  case MSGTC::ALWAYS: m_verbose = 5; break;
65  case MSGTC::VERBOSE: m_verbose = 4; break;
66  case MSGTC::DEBUG: m_verbose = 3; break;
67  case MSGTC::INFO: m_verbose = 2; break;
68  case MSGTC::WARNING:
69  case MSGTC::ERROR:
70  case MSGTC::FATAL: m_verbose = 0; break;
71  default: m_verbose = 0;
72  }
73 }

◆ setLevel() [2/2]

virtual void TrigConf::ILoader::setLevel ( MSGTC::Level  lvl)
pure virtualinherited

Load the configuration data from the configuration source.

Parameters
ctpcreference to the data object to be filled
Returns
true if the loading was successful, false otherwise

Implemented in TrigConf::DBLoader.

◆ setVerbose() [1/2]

virtual void TrigConf::DBLoader::setVerbose ( int  v)
inlineoverridevirtualinherited

Implements TrigConf::ILoader.

Definition at line 58 of file DBLoader.h.

58 { m_verbose=v; }

◆ setVerbose() [2/2]

virtual void TrigConf::ILoader::setVerbose ( int  v)
pure virtualinherited

Implemented in TrigConf::DBLoader.

◆ startSession()

void TrigConf::DBLoader::startSession ( )
inherited

start session if not already active

Definition at line 35 of file DBLoader.cxx.

36 {
37  if ( ! m_session.transaction().isActive() ) {
38  //std::cout << "DBLoader: startSession(readonly=true)" << std::endl;
39  bool readOnly = true;
40  m_session.transaction().start(readOnly);
41  m_sessionOwner = true;
42  }
43 }

◆ triggerDBSchemaVersion()

unsigned int DBLoader::triggerDBSchemaVersion ( )
inherited

Definition at line 76 of file DBLoader.cxx.

76  {
77  return std::get<0>(loadSchemaVersion());
78 }

◆ verbose() [1/2]

virtual int TrigConf::ILoader::verbose ( ) const
pure virtualinherited

Implemented in TrigConf::DBLoader.

◆ verbose() [2/2]

virtual int TrigConf::DBLoader::verbose ( ) const
inlineoverridevirtualinherited

Implements TrigConf::ILoader.

Definition at line 57 of file DBLoader.h.

57 { return m_verbose; }

Member Data Documentation

◆ 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 66 of file TrigConfMessaging.h.

◆ m_name

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

Definition at line 67 of file TrigConfMessaging.h.

◆ m_session

coral::ISessionProxy& TrigConf::DBLoader::m_session
protectedinherited

CORAL interface to database session.

Definition at line 68 of file DBLoader.h.

◆ m_sessionOwner

bool TrigConf::DBLoader::m_sessionOwner {false}
protectedinherited

remember if the loader started the session in the first place

Definition at line 69 of file DBLoader.h.

◆ m_storageMgr

StorageMgr& TrigConf::DBLoader::m_storageMgr
protectedinherited

reference to the storage manager

Definition at line 67 of file DBLoader.h.

◆ m_verbose

int TrigConf::DBLoader::m_verbose {1}
privateinherited

Definition at line 64 of file DBLoader.h.


The documentation for this class was generated from the following files:
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
TrigConf::TrigConfMessaging::m_msg_tls
boost::thread_specific_ptr< MsgStreamTC > m_msg_tls
MsgStreamTC instance (a std::cout like with print-out levels)
Definition: TrigConfMessaging.h:66
TrigConf::DBLoader::outputLevel
virtual MSGTC::Level outputLevel() const override
Definition: DBLoader.h:40
RunEBWeightsComputation.smk
smk
Definition: RunEBWeightsComputation.py:87
TrigConf::MSGTC::DEBUG
@ DEBUG
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStream.h:24
TrigConf::DBLoader::m_storageMgr
StorageMgr & m_storageMgr
reference to the storage manager
Definition: DBLoader.h:67
TRG_MSG_VERBOSE
#define TRG_MSG_VERBOSE(x)
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStreamMacros.h:24
TrigConf::fillQuery
void fillQuery(coral::IQuery *q, coral::AttributeList &attList)
Definition: DBHelper.cxx:13
TrigConf::DBLoader::triggerDBSchemaVersion
unsigned int triggerDBSchemaVersion()
Definition: DBLoader.cxx:76
TrigConf::MSGTC::ERROR
@ ERROR
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStream.h:27
python.selector.AtlRunQuerySelectorLhcOlc.priority
priority
Definition: AtlRunQuerySelectorLhcOlc.py:611
TrigConf::bin2uint
uint32_t bin2uint(const std::string &binary)
Definition: Trigger/TrigConfiguration/TrigConfL1Data/Root/HelperFunctions.cxx:321
TrigConf::MSGTC::FATAL
@ FATAL
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStream.h:28
TrigConf::DBLoader::isRun2
bool isRun2()
Definition: DBLoader.cxx:54
python.PyKernel.AttributeList
AttributeList
Definition: PyKernel.py:36
TrigConf::DBLoader::m_session
coral::ISessionProxy & m_session
CORAL interface to database session.
Definition: DBLoader.h:68
TrigConf::DBLoader::m_verbose
int m_verbose
Definition: DBLoader.h:64
TrigConf::DBLoader::DBLoader
DBLoader(StorageMgr &sm, coral::ISessionProxy &session)
constructor
Definition: DBLoader.cxx:30
python.SystemOfUnits.ms
int ms
Definition: SystemOfUnits.py:132
Pythia8_A14_NNPDF23LO_forMGHT_EvtGen.ptcut
float ptcut
Definition: Pythia8_A14_NNPDF23LO_forMGHT_EvtGen.py:9
python.iconfTool.models.loaders.level
level
Definition: loaders.py:20
TrigConf::ThresholdConfigLoader::loadCaloInfo
void loadCaloInfo(ThresholdConfig &thrConfig, long caloInfoId)
Definition: ThresholdConfigLoader.cxx:448
query
Definition: query.py:1
Generate_dsid_ranseed.seed
seed
Definition: Generate_dsid_ranseed.py:10
TrigConf::TrigConfMessaging::m_name
std::string m_name
Definition: TrigConfMessaging.h:67
TrigConf::MSGTC::ALWAYS
@ ALWAYS
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStream.h:29
TrigConf::MSGTC::VERBOSE
@ VERBOSE
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStream.h:23
TrigConf::DBLoader::m_sessionOwner
bool m_sessionOwner
remember if the loader started the session in the first place
Definition: DBLoader.h:69
TrigConf::TrigConfMessaging::msg
MsgStreamTC & msg() const
The standard message stream.
Definition: TrigConfMessaging.h:81
TrigConf::MSGTC::INFO
@ INFO
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStream.h:25
calibdata.exception
exception
Definition: calibdata.py:496
TrigConf::MsgStreamTC::level
MSGTC::Level level()
Return message level of stream.
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStream.h:53
run
Definition: run.py:1
query_example.query
query
Definition: query_example.py:15
TRG_MSG_INFO
#define TRG_MSG_INFO(x)
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStreamMacros.h:27
TrigConf::TriggerThresholdValue::setCaloInfo
static void setCaloInfo(const CaloInfo &ci)
Definition: TriggerThresholdValue.cxx:29
TrigConf::DBLoader::commitSession
void commitSession()
commit session if not already done
Definition: DBLoader.cxx:45
python.PyAthena.v
v
Definition: PyAthena.py:157
ConvertOldUJHistosToNewHistos.jetType
string jetType
Definition: ConvertOldUJHistosToNewHistos.py:121
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
query_example.cursor
cursor
Definition: query_example.py:21
TrigConf::DBLoader::loadSchemaVersion
std::tuple< unsigned int, unsigned int > loadSchemaVersion() const
get DB schema version and run number
Definition: DBLoader.cxx:81
TrigConf::DBLoader::startSession
void startSession()
start session if not already active
Definition: DBLoader.cxx:35
extractSporadic.q
list q
Definition: extractSporadic.py:98
TrigConf::MsgStreamTC::setLevel
void setLevel(MSGTC::Level lvl)
Set message level of stream.
Definition: Trigger/TrigConfiguration/TrigConfBase/Root/MsgStream.cxx:52
TileDCSDataPlotter.tt
tt
Definition: TileDCSDataPlotter.py:874
TRG_MSG_DEBUG
#define TRG_MSG_DEBUG(x)
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStreamMacros.h:25
TrigConf::DBLoader::loadL1MasterKey
bool loadL1MasterKey(int SuperMasterKey, int &Lvl1MasterKey)
get l1 master from super master
Definition: DBLoader.cxx:128
TrigConf::MSGTC::WARNING
@ WARNING
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStream.h:26