CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
DTConfigDBProducer.cc
Go to the documentation of this file.
2 
6 
9 // @@@ add headers
13 
15 
16 //#include "CondTools/DT/interface/DTPosNeg.h"
18 
21 
22 #include <iostream>
23 #include <iomanip>
24 
25 using std::cout;
26 using std::endl;
27 using std::vector;
28 using std::auto_ptr;
29 
30 
31 //
32 // constants, enums and typedefs
33 //
34 
35 //
36 // static data member definitions
37 //
38 
39 //
40 // constructors and destructor
41 //
43 {
44  // tell the framework what record is being produced
46 
47  // parameters to setup
48 // @@@ remove
49 // contact = p.getParameter< std::string >("contact");
50 // auth_path = p.getParameter< std::string >("authPath");
51 // token = p.getParameter< std::string >("token");
52 // local = p.getParameter< bool >("siteLocalConfig");
53 // @@@ add
54  cfgConfig = p.getParameter< bool >("cfgConfig");
55 
56 // @@@ remove direct DB access
57 /*
58  if ( local ) catalog = "";
59  else catalog = p.getParameter< std::string >("catalog");
60 
61  // create DB session
62  session = new DTDB1Session( contact, catalog, auth_path, local );
63  session->connect( false );
64 
65  // create an interface to handle configurations list
66  DTConfig1Handler::maxBrickNumber = 100;
67  DTConfig1Handler::maxStringNumber = 10000;
68  DTConfig1Handler::maxByteNumber = 1000000;
69  rs = 0;
70  ri = DTConfig1Handler::create( session, token );
71  rs = ri->getContainer();
72 */
73 
74  // get and store parameter set and config manager pointer
75  m_ps = p;
76  m_manager = new DTConfigManager();
77 
78  // debug flags
79  m_debugDB = p.getParameter< bool >("debugDB");
80  m_debugBti = p.getParameter< int >("debugBti");
81  m_debugTraco = p.getParameter< int >("debugTraco");
82  m_debugTSP = p.getParameter< bool >("debugTSP");
83  m_debugTST = p.getParameter< bool >("debugTST");
84  m_debugTU = p.getParameter< bool >("debugTU");
85  m_debugSC = p.getParameter< bool >("debugSC");
86  m_debugLUTs = p.getParameter< bool >("debugLUTs");
87 
88  // DB specific requests
89  bool tracoLutsFromDB = p.getParameter< bool >("TracoLutsFromDB");
90  bool useBtiAcceptParam = p.getParameter< bool >("UseBtiAcceptParam");
91 
92  // initialize flags to check if data are present in OMDS
93  flagDBBti = false;
94  flagDBTraco = false;
95  flagDBTSS = false;
96  flagDBTSM = false;
97  flagDBLUTS = false;
98 
99  // set debug
100  edm::ParameterSet conf_ps = m_ps.getParameter<edm::ParameterSet>("DTTPGParameters");
101  bool dttpgdebug = conf_ps.getUntrackedParameter<bool>("Debug");
102  m_manager->setDTTPGDebug(dttpgdebug);
103 
104  // set specific DB requests
105  m_manager->setLutFromDB(tracoLutsFromDB);
106  m_manager->setUseAcceptParam(useBtiAcceptParam);
107 }
108 
109 
111 {
112  // destruction time
113 // @@@ remove
114 // DTConfig1Handler::remove( session );
115 // session->disconnect();
116 // delete session;
117 }
118 
119 
120 //
121 // member functions
122 //
123 // ------------ method called to produce the data ------------
124 std::auto_ptr<DTConfigManager> DTConfigDBProducer::produce(const DTConfigManagerRcd& iRecord)
125 {
126  using namespace edm::es;
127 
128  int code;
129  if(cfgConfig){
130  configFromCfg();
131  code = 2;
132  }
133  else
134  code = readDTCCBConfig(iRecord);
135 
136  if(code==-1)
137  cout << "ERROR code: please check!" << endl;
138 
139  if(code==1)
140  cout << "Empty DB: configurations has been read from cfg!" << endl;
141 
142  if(code==2)
143  cout << "Trivial : configurations has been read from cfg!" << endl;
144 
145  if(code==0)
146  cout << "Configurations successfully read from OMDS!" << endl;
147 
148  std::auto_ptr<DTConfigManager> dtConfig = std::auto_ptr<DTConfigManager>( m_manager );
149 
150  return dtConfig ;
151 }
152 
154 {
155  using namespace edm::eventsetup;
156 
157 
158  // get DTCCBConfigRcd from DTConfigManagerRcd (they are dependent records)
160  iRecord.getRecord<DTCCBConfigRcd>().get(ccb_conf);
161  int ndata = std::distance( ccb_conf->begin(), ccb_conf->end() );
162 
163 // @@@ add
165  const DTKeyedConfigListRcd& keyRecord =
166  iRecord.getRecord<DTKeyedConfigListRcd>();
167 
168  if(m_debugDB)
169  {
170  cout << ccb_conf->version() << endl;
171  cout << ndata << " data in the container" << endl;
172 // SV 090928 : update for Paolo Ronchese new tags CondFormats/DTObjects V07-01-02 and CondTools/DT V07-01-02
173 // cout << "Full config key: " << ccb_conf->fullKey() << endl;
174  }
175 
177  unsigned int currValidityStart = iov.first().eventID().run();
178  unsigned int currValidityEnd = iov.last( ).eventID().run();
179 
180  if(m_debugDB)
181  cout << "valid since run " << currValidityStart
182  << " to run " << currValidityEnd << endl;
183 
184  // if there are no data in the container, configuration from cfg files...
185  if( ndata==0 ){
186  configFromCfg();
187  return 1;
188  }
189 
190  // get DTTPGMap for retrieving bti number and traco number
192 
193  // loop over chambers
194  DTCCBConfig::ccb_config_map configKeys( ccb_conf->configKeyMap() );
195  DTCCBConfig::ccb_config_iterator iter = configKeys.begin();
196  DTCCBConfig::ccb_config_iterator iend = configKeys.end();
197 
198  // read data from CCBConfig
199  while ( iter != iend ) {
200  // get chamber id
201  const DTCCBId& ccbId = iter->first;
202  if(m_debugDB)
203  cout << " Filling configuration for chamber : wh " << ccbId.wheelId << " st "
204  << ccbId.stationId << " se "
205  << ccbId.sectorId << " -> " << endl;
206 
207  // get chamber type and id from ccbId
208  int mbtype = DTPosNegType::getCT( ccbId.wheelId, ccbId.sectorId, ccbId.stationId );
209  int posneg = DTPosNegType::getPN( ccbId.wheelId, ccbId.sectorId, ccbId.stationId );
210  if(m_debugDB)
211  cout << "Chamber type : " << mbtype
212  << " posneg : " << posneg << endl;
213  DTChamberId chambid(ccbId.wheelId, ccbId.stationId, ccbId.sectorId);
214 
215  // get brick identifiers list
216  const std::vector<int>& ccbConf = iter->second;
217  std::vector<int>::const_iterator cfgIter = ccbConf.begin();
218  std::vector<int>::const_iterator cfgIend = ccbConf.end();
219 
220  //TSS-TSM buffers
221  unsigned short int tss_buffer[7][31];
222  unsigned short int tsm_buffer[9];
223  int ntss=0;
224 
225  // loop over configuration bricks
226  while ( cfgIter != cfgIend ) {
227  // get brick identifier
228  int id = *cfgIter++;
229  if(m_debugDB)
230  cout << " BRICK " << id << endl;
231 
232  // create strings list
233 // @@@ change to vector of strings in place of vector of pointers to string
234 // std::vector<const std::string*> list;
235  std::vector<std::string> list;
236 // @@@ change access to DB
237 // ri->getData( id, list );
238 // const DTKeyedConfig* kBrick = 0;
239  cfgCache->getData( keyRecord, id, list );
240 
241  // loop over strings
242 // @@@ change to vector of strings in place of vector of pointers to string
243 // std::vector<const std::string*>::const_iterator s_iter = list.begin();
244 // std::vector<const std::string*>::const_iterator s_iend = list.end();
245  std::vector<std::string>::const_iterator s_iter = list.begin();
246  std::vector<std::string>::const_iterator s_iend = list.end();
247  while ( s_iter != s_iend ) {
248 // @@@ change to string in place of pointer to string
249  if(m_debugDB)
250  cout << " ----> " << *s_iter << endl;
251 // cout << " ----> " << **s_iter << endl;
252 
253  // copy string in unsigned int buffer
254 // @@@ change to string in place of pointer to string
255 // std::string str = **s_iter++;
256  std::string str = *s_iter++;
257  unsigned short int buffer[100]; //2 bytes
258  int c = 0;
259  const char* cstr = str.c_str();
260  const char* ptr = cstr + 2;
261  const char* end = cstr + str.length();
262  while ( ptr < end ) {
263  char c1 = *ptr++;
264  int i1 = 0;
265  if ( ( c1 >= '0' ) && ( c1 <= '9' ) ) i1 = c1 - '0';
266  if ( ( c1 >= 'a' ) && ( c1 <= 'f' ) ) i1 = 10 + c1 - 'a';
267  if ( ( c1 >= 'A' ) && ( c1 <= 'F' ) ) i1 = 10 + c1 - 'A';
268  char c2 = *ptr++;
269  int i2 = 0;
270  if ( ( c2 >= '0' ) && ( c2 <= '9' ) ) i2 = c2 - '0';
271  if ( ( c2 >= 'a' ) && ( c2 <= 'f' ) ) i2 = 10 + c2 - 'a';
272  if ( ( c2 >= 'A' ) && ( c2 <= 'F' ) ) i2 = 10 + c2 - 'A';
273  buffer[c] = ( i1 * 16 ) + i2;
274  c++;
275  }// end loop over string
276 
277  // BTI configuration string
278  if (buffer[2]==0x54){
279  // BTI configuration read for BTI
280  flagDBBti = true;
281 
282  // compute sl and bti number from board and chip
283  int brd=buffer[3]; // Board Nr.
284  int chip=buffer[4]; // Chip Nr.
285 
286  if (brd>7) {
287  cout << "Not existing board ... " << brd << endl;
288  return -1; // Non-existing board
289  }
290  if (chip>31) {
291  cout << "Not existing chip... " << chip << endl;
292  return -1; // Non existing chip
293  }
294 
295  // Is it Phi or Theta board?
296  bool ThetaSL, PhiSL;
297  PhiSL=false;
298  ThetaSL=false;
299  switch (mbtype) {
300  case 1: // mb1
301  if (brd==6 || brd==7) {
302  ThetaSL=true;
303  brd-=6;
304  }
305  else if ((brd<3 && chip<32) || (brd==3 && chip<8))
306  PhiSL=true;
307  break;
308  case 2: // mb2
309  if (brd==6 || brd==7) {
310  ThetaSL=true;
311  brd-=6;
312  }
313  else if (brd<4 && chip<32)
314  PhiSL=true;
315  break;
316  case 3: // mb3
317  if (brd==6 || brd==7) {
318  ThetaSL=true;
319  brd-=6;
320  }
321  else if (brd<5 && chip<32)
322  PhiSL=true;
323  break;
324  case 4: // mb4-s, mb4_8
325  if (brd<6 && chip<32)
326  PhiSL=true;
327  break;
328  case 5: // mb4-9
329  if (brd<3 && chip<32)
330  PhiSL=true;
331  break;
332  case 6: // mb4-4
333  if (brd<5 && chip<32)
334  PhiSL=true;
335  break;
336  case 7: // mb4-10
337  if (brd<4 && chip<32)
338  PhiSL=true;
339  break;
340  }
341  if (!PhiSL && !ThetaSL) {
342  cout << "MB type " << mbtype << endl;
343  cout << "Board " << brd << " chip " <<chip << endl;
344  cout << "Not phi SL nor Theta SL" << endl;
345  return -1; // Not PhiSL nor ThetaSL
346  }
347 
348  // compute SL number and bti number
349  int isl;
350  int ibti;
351  if (PhiSL) {
352  if ((chip%8)<4)
353  isl=1; // Phi1
354  else
355  isl=3; // Phi2
356  ibti=brd*16+(int)(chip/8)*4+(chip%4);
357  }
358  else if (ThetaSL){
359  isl=2; // Theta
360  if ((chip%8)<4)
361  ibti=brd*32+ chip-4*(int)(chip/8);
362  else
363  ibti=brd*32+ chip+12-4*(int)(chip/8);
364  }
365 
366  // BTI config constructor from strings
367  DTConfigBti bticonf(buffer);
368  bticonf.setDebug(m_debugBti);
369 
370  m_manager->setDTConfigBti(DTBtiId(chambid,isl,ibti+1),bticonf);
371 
372  if(m_debugDB)
373  cout << "Filling BTI config for chamber : wh " << chambid.wheel() <<
374  ", st " << chambid.station() <<
375  ", se " << chambid.sector() <<
376  "... sl " << isl <<
377  ", bti " << ibti+1 << endl;
378  }
379 
380  // TRACO configuration string
381  if (buffer[2]==0x15){
382  // TRACO configuration read from OMDS
383  flagDBTraco = true;
384 
385  // TRACO config constructor from strings
386  int traco_brd = buffer[3]; // Board Nr.;
387  int traco_chip = buffer[4]; // Chip Nr.;
388  int itraco = traco_brd * 4 + traco_chip + 1;
389  DTConfigTraco tracoconf(buffer);
390  tracoconf.setDebug(m_debugTraco);
391  m_manager->setDTConfigTraco(DTTracoId(chambid,itraco),tracoconf);
392 
393  if(m_debugDB)
394  cout << "Filling TRACO config for chamber : wh " << chambid.wheel() <<
395  ", st " << chambid.station() <<
396  ", se " << chambid.sector() <<
397  ", board " << traco_brd <<
398  ", chip " << traco_chip <<
399  ", traco " << itraco << endl;
400  }
401 
402 
403  // TSS configuration string
404  if (buffer[2]==0x16){
405  // TSS configuration read from OMDS
406  flagDBTSS = true;
407 
408  unsigned short int itss=buffer[3];
409  for (int i=0;i<31;i++)
410  tss_buffer[itss][i]=buffer[i];
411  ntss++;
412  }
413 
414  // TSM configuration string
415  if (buffer[2]==0x17){
416  // TSM configuration read from OMDS
417  flagDBTSM = true;
418 
419  for (int i=0; i<9; i++)
420  tsm_buffer[i]=buffer[i];
421  }
422 
423  // LUT configuration string
424  if (buffer[2]==0xA8){
425 
426  // LUT parameters read from OMDS
427  flagDBLUTS = true;
428  DTConfigLUTs lutconf(buffer);
429  lutconf.setDebug(m_debugLUTs);
430  m_manager->setDTConfigLUTs(chambid,lutconf);
431  }
432 
433  }//end string iteration
434  }//end brick iteration
435 
436  //TSS + TSM configurations are set in DTConfigTSPhi constructor
437  DTConfigTSPhi tsphiconf(m_debugTSP,tss_buffer,ntss,tsm_buffer);
438  m_manager->setDTConfigTSPhi(chambid,tsphiconf);
439 
440  // get configuration for TSTheta, SC and TU from .cfg
441  edm::ParameterSet conf_ps = m_ps.getParameter<edm::ParameterSet>("DTTPGParameters");
442  edm::ParameterSet tups = conf_ps.getParameter<edm::ParameterSet>("TUParameters");
443 
444  // TSTheta configuration from .cfg
445  DTConfigTSTheta tsthetaconf(tups.getParameter<edm::ParameterSet>("TSThetaParameters"));
446  tsthetaconf.setDebug(m_debugTST);
447  m_manager->setDTConfigTSTheta(chambid,tsthetaconf);
448 
449  // SC configuration from .cfg
450  DTConfigSectColl sectcollconf(conf_ps.getParameter<edm::ParameterSet>("SectCollParameters"));
451  sectcollconf.setDebug(m_debugSC);
452  m_manager->setDTConfigSectColl(DTSectCollId(chambid.wheel(),chambid.sector()),sectcollconf);
453 
454  // TU configuration from .cfg
455  DTConfigTrigUnit trigunitconf(tups);
456  trigunitconf.setDebug(m_debugTU);
457  m_manager->setDTConfigTrigUnit(chambid,trigunitconf);
458 
459  ++iter;
460  }
461 
462  // SV 100511 add check flag for lut configuration
463  // if no lut configuration is found, luts are computed from geometry!
464  if(!flagDBLUTS && m_manager->lutFromDB()==true){
465  cout << "*** ATTENTION: Lut configuration parameters NOT found in OMDS:" << endl;
466  cout << "*** RE_RUN with the option TracoLutsFromDB = cms.bool(False)" << endl;
467  cout << "*** in L1TriggerConfig/DTTPGConfigProducers/python/L1DTConfigFromDB_cfi.py" << endl;
468  cout << "*** In this run LUTS are computed FROM GEOMETRY! " << endl;
469  m_manager->setLutFromDB(false);
470  return -1;
471  }
472  if(!flagDBBti || !flagDBTraco || !flagDBTSS || !flagDBTSM ){
473  configFromCfg();
474  return 1;
475  }
476 
477  return 0;
478 }
479 
480 std::string DTConfigDBProducer::mapEntryName(const DTChamberId & chambid) const
481 {
482  int iwh = chambid.wheel();
483  std::ostringstream os;
484  os << "wh";
485  if (iwh < 0) {
486  os << 'm' << -iwh;
487  } else {
488  os << iwh;
489  }
490  os << "st" << chambid.station() << "se" << chambid.sector();
491  return os.str();
492 }
493 
494 
496 
497  //create config classes&C.
498  edm::ParameterSet conf_ps = m_ps.getParameter<edm::ParameterSet>("DTTPGParameters");
500  bool dttpgdebug = conf_ps.getUntrackedParameter<bool>("Debug");
501  DTConfigSectColl sectcollconf(conf_ps.getParameter<edm::ParameterSet>("SectCollParameters"));
502  edm::ParameterSet tups = conf_ps.getParameter<edm::ParameterSet>("TUParameters");
503  DTConfigBti bticonf(tups.getParameter<edm::ParameterSet>("BtiParameters"));
504  DTConfigTraco tracoconf(tups.getParameter<edm::ParameterSet>("TracoParameters"));
505  DTConfigTSTheta tsthetaconf(tups.getParameter<edm::ParameterSet>("TSThetaParameters"));
506  DTConfigTSPhi tsphiconf(tups.getParameter<edm::ParameterSet>("TSPhiParameters"));
507  DTConfigTrigUnit trigunitconf(tups);
508 
509  for (int iwh=-2;iwh<=2;++iwh){
510  for (int ist=1;ist<=4;++ist){
511  for (int ise=1;ise<=12;++ise){
512  DTChamberId chambid(iwh,ist,ise);
513  vector<int> nmap = conf_map.getUntrackedParameter<vector<int> >(mapEntryName(chambid).c_str());
514 
515  if(dttpgdebug)
516  {
517  cout << " Filling configuration for chamber : wh " << chambid.wheel() <<
518  ", st " << chambid.station() <<
519  ", se " << chambid.sector() << endl;
520  }
521 
522  //fill the bti map
523  if(!flagDBBti){
524  for (int isl=1;isl<=3;isl++){
525  int ncell = nmap[isl-1];
526  // cout << ncell <<" , ";
527  for (int ibti=0;ibti<ncell;ibti++){
528  m_manager->setDTConfigBti(DTBtiId(chambid,isl,ibti+1),bticonf);
529  if(dttpgdebug)
530  cout << "Filling BTI config for chamber : wh " << chambid.wheel() <<
531  ", st " << chambid.station() <<
532  ", se " << chambid.sector() <<
533  "... sl " << isl <<
534  ", bti " << ibti+1 << endl;
535  }
536  }
537  }
538 
539  // fill the traco map
540  if(!flagDBTraco){
541  int ntraco = nmap[3];
542  //cout << ntraco << " }" << endl;
543  for (int itraco=0;itraco<ntraco;itraco++){
544  m_manager->setDTConfigTraco(DTTracoId(chambid,itraco+1),tracoconf);
545  if(dttpgdebug)
546  cout << "Filling TRACO config for chamber : wh " << chambid.wheel() <<
547  ", st " << chambid.station() <<
548  ", se " << chambid.sector() <<
549  ", traco " << itraco+1 << endl;
550  }
551  }
552 
553  // fill TS & TrigUnit
554  if(!flagDBTSS || !flagDBTSM)
555  {
556  m_manager->setDTConfigTSTheta(chambid,tsthetaconf);
557  m_manager->setDTConfigTSPhi(chambid,tsphiconf);
558  m_manager->setDTConfigTrigUnit(chambid,trigunitconf);
559  }
560  }
561  }
562  }
563 
564  for (int iwh=-2;iwh<=2;++iwh){
565  for (int ise=13;ise<=14;++ise){
566  int ist =4;
567  DTChamberId chambid(iwh,ist,ise);
568  vector<int> nmap = conf_map.getUntrackedParameter<vector<int> >(mapEntryName(chambid).c_str());
569 
570  if(dttpgdebug)
571  {
572  cout << " Filling configuration for chamber : wh " << chambid.wheel() <<
573  ", st " << chambid.station() <<
574  ", se " << chambid.sector() << endl;
575  }
576 
577  //fill the bti map
578  if(!flagDBBti){
579  for (int isl=1;isl<=3;isl++){
580  int ncell = nmap[isl-1];
581  // cout << ncell <<" , ";
582  for (int ibti=0;ibti<ncell;ibti++){
583  m_manager->setDTConfigBti(DTBtiId(chambid,isl,ibti+1),bticonf);
584  if(dttpgdebug)
585  cout << "Filling BTI config for chamber : wh " << chambid.wheel() <<
586  ", st " << chambid.station() <<
587  ", se " << chambid.sector() <<
588  "... sl " << isl <<
589  ", bti " << ibti+1 << endl;
590  }
591  }
592  }
593 
594  // fill the traco map
595  if(!flagDBTraco){
596  int ntraco = nmap[3];
597  // cout << ntraco << " }" << endl;
598  for (int itraco=0;itraco<ntraco;itraco++){
599  m_manager->setDTConfigTraco(DTTracoId(chambid,itraco+1),tracoconf);
600  if(dttpgdebug)
601  cout << "Filling TRACO config for chamber : wh " << chambid.wheel() <<
602  ", st " << chambid.station() <<
603  ", se " << chambid.sector() <<
604  ", traco " << itraco+1 << endl;
605  }
606  }
607 
608  // fill TS & TrigUnit
609  if(!flagDBTSS || !flagDBTSM)
610  {
611  m_manager->setDTConfigTSTheta(chambid,tsthetaconf);
612  m_manager->setDTConfigTSPhi(chambid,tsphiconf);
613  m_manager->setDTConfigTrigUnit(chambid,trigunitconf);
614  }
615  }
616  }
617 
618  //loop on Sector Collectors
619  for (int wh=-2;wh<=2;wh++)
620  for (int se=1;se<=12;se++)
621  m_manager->setDTConfigSectColl(DTSectCollId(wh,se),sectcollconf);
622 
623 
624  return;
625 
626 }
627 
std::string mapEntryName(const DTChamberId &chambid) const
std::auto_ptr< DTConfigManager > produce(const DTConfigManagerRcd &)
void setLutFromDB(bool lutFromDB)
Set lut from DB flag.
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
int i
Definition: DBlmapReader.cc:9
void setDTTPGDebug(bool debug)
SetGlobalDebug flag.
DTConfigManager * m_manager
void setDTConfigTSTheta(DTChamberId chambid, DTConfigTSTheta conf)
Set DTConfigTSTheta for desired chip.
ccb_config_map::const_iterator ccb_config_iterator
Definition: DTCCBConfig.h:88
int wheelId
Definition: DTCCBConfig.h:43
edm::ParameterSet m_ps
void setUseAcceptParam(bool acceptparam)
Set the use of Bti acceptance parameters (LL,LH,CL,CH,RL,RH)
void setDebug(bool debug)
Set debug flag.
void setWhatProduced(T *iThis, const es::Label &iLabel=es::Label())
Definition: ESProducer.h:115
DTConfigDBProducer(const edm::ParameterSet &)
int sectorId
Definition: DTCCBConfig.h:45
void setDTConfigTraco(DTTracoId, DTConfigTraco)
Set DTConfigTraco for desired chip.
const ValidityInterval & validityInterval() const
static int getPN(int whe, int sec, int sta)
Definition: DTPosNegType.cc:89
tuple iov
Definition: o2o.py:307
int stationId
Definition: DTCCBConfig.h:44
void setDTConfigBti(DTBtiId, DTConfigBti)
Set DTConfigBti for desired chip.
void setDTConfigTSPhi(DTChamberId chambid, DTConfigTSPhi conf)
Set DTConfigTSPhi for desired chip.
#define end
Definition: vmac.h:38
std::vector< std::pair< DTCCBId, std::vector< int > > > ccb_config_map
Definition: DTCCBConfig.h:87
void setDebug(bool debug)
Set debug flag.
void setDTConfigLUTs(DTChamberId chambid, DTConfigLUTs conf)
Set DTConfigLUTs for desired chamber.
static int getCT(int whe, int sec, int sta)
void setDTConfigSectColl(DTSectCollId sectcollid, DTConfigSectColl conf)
Set DTConfigSectColl for desired chip.
bool lutFromDB() const
Lut from DB flag.
void setDebug(bool debug)
Set single parameter functions.
Definition: DTConfigLUTs.h:68
int sector() const
Definition: DTChamberId.h:63
int readDTCCBConfig(const DTConfigManagerRcd &iRecord)
void setDebug(int debug)
Definition: DTConfigBti.h:131
tuple cout
Definition: gather_cfg.py:41
static DTConfigAbstractHandler * getInstance()
get static object
int station() const
Return the station number.
Definition: DTChamberId.h:53
void setDTConfigTrigUnit(DTChamberId chambid, DTConfigTrigUnit conf)
Set DTConfigTrigUnit for desired chamber.
int wheel() const
Return the wheel number.
Definition: DTChamberId.h:47
void setDebug(int debug)
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger list("!*","!HLTx*"if it matches 2 triggers or more) will accept the event if all the matching triggers are FAIL.It will reject the event if any of the triggers are PASS or EXCEPTION(this matches the behavior of"!*"before the partial wildcard feature was incorporated).Triggers which are in the READY state are completely ignored.(READY should never be returned since the trigger paths have been run