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 
14 
17 
22 
23 #include <iostream>
24 #include <iomanip>
25 
26 using std::cout;
27 using std::endl;
28 using std::vector;
29 using std::auto_ptr;
30 
31 //
32 // constructors and destructor
33 //
34 
36 {
37  // tell the framework what record is being produced
39 
40  cfgConfig = p.getParameter<bool>("cfgConfig");
41 
42  // get and store parameter set and config manager pointer
43  m_ps = p;
44 
45  // debug flags
46  m_debugDB = p.getParameter<bool>("debugDB");
47  m_debugBti = p.getParameter<int>("debugBti");
48  m_debugTraco = p.getParameter<int>("debugTraco");
49  m_debugTSP = p.getParameter<bool>("debugTSP");
50  m_debugTST = p.getParameter<bool>("debugTST");
51  m_debugTU = p.getParameter<bool>("debugTU");
52  m_debugSC = p.getParameter<bool>("debugSC");
53  m_debugLUTs = p.getParameter<bool>("debugLUTs");
54  m_debugPed = p.getParameter<bool>("debugPed");
55 
56  m_UseT0 = p.getParameter<bool>("UseT0"); // CB check for a better way to do it
57 
58 }
59 
60 
62 {
63 
64 }
65 
66 
67 //
68 // member functions
69 //
70 
71 std::auto_ptr<DTConfigManager> DTConfigDBProducer::produce(const DTConfigManagerRcd& iRecord)
72 {
73  using namespace edm;
74 
75  std::auto_ptr<DTConfigManager> dtConfig = std::auto_ptr<DTConfigManager>( new DTConfigManager() );
76  DTConfigManager & dttpgConfig = *(dtConfig.get());
77 
78  // DB specific requests
79  bool tracoLutsFromDB = m_ps.getParameter<bool>("TracoLutsFromDB");
80  bool useBtiAcceptParam = m_ps.getParameter<bool>("UseBtiAcceptParam");
81 
82  // set specific DB requests
83  dttpgConfig.setLutFromDB(tracoLutsFromDB);
84  dttpgConfig.setUseAcceptParam(useBtiAcceptParam);
85 
86  // set debug
87  edm::ParameterSet conf_ps = m_ps.getParameter<edm::ParameterSet>("DTTPGParameters");
88  bool dttpgdebug = conf_ps.getUntrackedParameter<bool>("Debug");
89  dttpgConfig.setDTTPGDebug(dttpgdebug);
90 
91  int code;
92  if(cfgConfig){
93  dttpgConfig.setLutFromDB(false);
94  configFromCfg(dttpgConfig);
95  code = 2;
96  } else{
97  code = readDTCCBConfig(iRecord,dttpgConfig);
98  readDBPedestalsConfig(iRecord,dttpgConfig);
99  // 110628 SV add config check
100  if(code != -1 && checkDTCCBConfig(dttpgConfig) > 0)
101  code=-1;
102  }
103  //cout << "DTConfigDBProducer::produce CODE " << code << endl;
104  if(code==-1) {
105  dttpgConfig.setCCBConfigValidity(false);
106  } else if(code==2) {
107  LogVerbatim ("DTTPG") << "DTConfigDBProducer::produce : Trivial : " << endl
108  << "configurations has been read from cfg" << endl;
109  } else if(code==0) {
110  LogVerbatim ("DTTPG") << "DTConfigDBProducer::produce : " << endl
111  << "Configurations successfully read from OMDS" << endl;
112  } else {
113  LogProblem ("DTTPG") << "DTConfigDBProducer::produce : " << endl
114  << "Wrong configuration return CODE" << endl;
115  }
116 
117  return dtConfig ;
118 }
119 
121  DTConfigManager & dttpgConfig){
122 
123  edm::ESHandle<DTTPGParameters> dttpgParams;
124  iRecord.getRecord<DTTPGParametersRcd>().get(dttpgParams);
125 
126  DTConfigPedestals pedestals;
127  pedestals.setDebug(m_debugPed);
128 
129  if (m_UseT0) {
130 
132  iRecord.getRecord<DTT0Rcd>().get(t0i);
133 
134  pedestals.setUseT0(true);
135  pedestals.setES(dttpgParams.product(),t0i.product());
136  //cout << "checkDTCCBConfig CODE is " << checkDTCCBConfig() << endl;
137 
138  } else {
139 
140  pedestals.setUseT0(false);
141  pedestals.setES(dttpgParams.product());
142 
143  }
144 
145  dttpgConfig.setDTConfigPedestals(pedestals);
146 
147 }
148 
150 {
151  // 110627 SV test if configuration from CCB has correct number of chips,
152  // return error code:
153  // check_cfg_code = 1 : NO correct BTI number
154  // check_cfg_code = 2 : NO correct TRACO number
155  // check_cfg_code = 3 : NO correct valid TSS number
156  // check_cfg_code = 4 : NO correct valid TSM number
157 
158  int check_cfg_code = 0;
159 
160  // do not take chambers from MuonGeometryRecord to avoid geometry dependency
161  for(int iwh=-2;iwh<=2;iwh++){
162  for(int ise=1;ise<=12;ise++){
163  for(int ist=1;ist<=4;ist++){
164 
165  check_cfg_code = 0;
166  DTChamberId chid(iwh,ist,ise);
167 
168  //retrive number of configurated chip
169  int nbti = dttpgConfig.getDTConfigBtiMap(chid).size();
170  int ntraco = dttpgConfig.getDTConfigTracoMap(chid).size();
171  int ntss = dttpgConfig.getDTConfigTSPhi(chid)->nValidTSS();
172  int ntsm = dttpgConfig.getDTConfigTSPhi(chid)->nValidTSM();
173 
174  //check BTIs
175  if((ist==1 && nbti!=168) ||
176  (ist==2 && nbti!=192) ||
177  (ist==3 && nbti!=224) ||
178  (ist==4 && (ise==1||ise==2||ise==3||ise==5||ise==6||ise==7||ise==8||ise==12) && nbti!=192) ||
179  (ist==4 && (ise==9||ise==11) && nbti!=96) ||
180  (ist==4 && ise==10 && nbti!=128) ||
181  (ist==4 && ise==4 && nbti!=160)){
182  check_cfg_code = 1;
183  return check_cfg_code;
184  }
185 
186  //check TRACOs
187  if((ist==1 && ntraco!=13) ||
188  (ist==2 && ntraco!=16) ||
189  (ist==3 && ntraco!=20) ||
190  (ist==4 && (ise==1||ise==2||ise==3||ise==5||ise==6||ise==7||ise==8||ise==12) && ntraco!=24) ||
191  (ist==4 && (ise==9||ise==11) && ntraco!=12) ||
192  (ist==4 && ise==10 && ntraco!=16) ||
193  (ist==4 && ise==4 && ntraco!=20)){
194  check_cfg_code = 2;
195  return check_cfg_code;
196  }
197 
198  //check TSS
199  if((ist==1 && ntss!=4) ||
200  (ist==2 && ntss!=4) ||
201  (ist==3 && ntss!=5) ||
202  (ist==4 && (ise==1||ise==2||ise==3||ise==5||ise==6||ise==7||ise==8||ise==12) && ntss!=6) ||
203  (ist==4 && (ise==9||ise==11) && ntss!=3) ||
204  (ist==4 && ise==10 && ntss!=4) ||
205  (ist==4 && ise==4 && ntss!=5) ){
206  check_cfg_code = 3;
207  return check_cfg_code;
208  }
209 
210  //check TSM
211  if(ntsm!=1){
212  check_cfg_code = 4;
213  return check_cfg_code;
214  }
215 
216  //if(check_cfg_code){
217  //cout << "nbti " << nbti << " ntraco " << ntraco << " ntss " << ntss << " ntsm " << ntsm << endl;
218  //cout << "Check: ch " << ist << " sec " << ise << " wh " << iwh << " == >check_cfg_code " << check_cfg_code << endl;
219  //}
220  }// end st loop
221  }// end sec loop
222 
223  // SV MB4 has two more chambers
224  for(int ise=13;ise<=14;ise++){
225 
226  DTChamberId chid(iwh,4,ise);
227 
228  int nbti = dttpgConfig.getDTConfigBtiMap(chid).size();
229  int ntraco = dttpgConfig.getDTConfigTracoMap(chid).size();
230  int ntss = dttpgConfig.getDTConfigTSPhi(chid)->nValidTSS();
231  int ntsm = dttpgConfig.getDTConfigTSPhi(chid)->nValidTSM();
232 
233  if((ise==13 && nbti != 160) ||
234  (ise==14 && nbti != 128)){
235  check_cfg_code = 1;
236  return check_cfg_code;
237  }
238  if((ise==13 && ntraco != 20) ||
239  (ise==14 && ntraco != 16)){
240  check_cfg_code = 2;
241  return check_cfg_code;
242  }
243  if((ise==13 && ntss != 5) ||
244  (ise==14 && ntss != 4)) {
245  check_cfg_code = 3;
246  return check_cfg_code;
247  }
248  if(ntsm != 1){
249  check_cfg_code = 4;
250  return check_cfg_code;
251  }
252  //if(check_cfg_code){
253  //cout << "nbti " << nbti << " ntraco " << ntraco << " ntss " << ntss << " ntsm " << ntsm << endl;
254  //cout << "Check: ch " << 4 << " sec " << ise << " wh " << iwh << " == >check_cfg_code " << check_cfg_code << endl;
255  //}
256  }// end sec 13 14
257 
258  }// end wh loop
259 
260  //cout << "CheckDTCCB: config OK! check_cfg_code = " << check_cfg_code << endl;
261  return check_cfg_code;
262 }
263 
265  DTConfigManager & dttpgConfig)
266 {
267  using namespace edm::eventsetup;
268 
269  // initialize CCB validity flag
270  dttpgConfig.setCCBConfigValidity(true);
271 
272  // get DTCCBConfigRcd from DTConfigManagerRcd (they are dependent records)
274  iRecord.getRecord<DTCCBConfigRcd>().get(ccb_conf);
275  int ndata = std::distance( ccb_conf->begin(), ccb_conf->end() );
276 
278  const DTKeyedConfigListRcd& keyRecord = iRecord.getRecord<DTKeyedConfigListRcd>();
279 
280  if(m_debugDB)
281  {
282  cout << ccb_conf->version() << endl;
283  cout << ndata << " data in the container" << endl;
284  }
285 
287  unsigned int currValidityStart = iov.first().eventID().run();
288  unsigned int currValidityEnd = iov.last( ).eventID().run();
289 
290  if(m_debugDB)
291  cout << "valid since run " << currValidityStart
292  << " to run " << currValidityEnd << endl;
293 
294  // if there are no data in the container, configuration from cfg files...
295  if( ndata==0 ){
296  return -1;
297  }
298 
299  // get DTTPGMap for retrieving bti number and traco number
301 
302  // loop over chambers
303  DTCCBConfig::ccb_config_map configKeys( ccb_conf->configKeyMap() );
304  DTCCBConfig::ccb_config_iterator iter = configKeys.begin();
305  DTCCBConfig::ccb_config_iterator iend = configKeys.end();
306 
307  // 110628 SV check that number of CCB is equal to total number of chambers
308  if(ccb_conf->configKeyMap().size() != 250) //check the number of chambers!!!
309  return -1;
310 
311  // read data from CCBConfig
312  while ( iter != iend ) {
313  // 110628 SV moved here from constructor, to check config consistency for EVERY chamber
314  // initialize flags to check if data are present in OMDS
315  flagDBBti = false;
316  flagDBTraco = false;
317  flagDBTSS = false;
318  flagDBTSM = false;
319  flagDBLUTS = false;
320 
321  // get chamber id
322  const DTCCBId& ccbId = iter->first;
323  if(m_debugDB)
324  cout << " Filling configuration for chamber : wh " << ccbId.wheelId << " st "
325  << ccbId.stationId << " se "
326  << ccbId.sectorId << " -> " << endl;
327 
328  // get chamber type and id from ccbId
329  int mbtype = DTPosNegType::getCT( ccbId.wheelId, ccbId.sectorId, ccbId.stationId );
330  int posneg = DTPosNegType::getPN( ccbId.wheelId, ccbId.sectorId, ccbId.stationId );
331  if(m_debugDB)
332  cout << "Chamber type : " << mbtype
333  << " posneg : " << posneg << endl;
334  DTChamberId chambid(ccbId.wheelId, ccbId.stationId, ccbId.sectorId);
335 
336  // get brick identifiers list
337  const std::vector<int>& ccbConf = iter->second;
338  std::vector<int>::const_iterator cfgIter = ccbConf.begin();
339  std::vector<int>::const_iterator cfgIend = ccbConf.end();
340 
341  //TSS-TSM buffers
342  unsigned short int tss_buffer[7][31];
343  unsigned short int tsm_buffer[9];
344  int ntss=0;
345 
346  // loop over configuration bricks
347  while ( cfgIter != cfgIend ) {
348  // get brick identifier
349  int id = *cfgIter++;
350  if(m_debugDB)
351  cout << " BRICK " << id << endl;
352 
353  // create strings list
354  std::vector<std::string> list;
355  cfgCache->getData( keyRecord, id, list );
356 
357  // loop over strings
358  std::vector<std::string>::const_iterator s_iter = list.begin();
359  std::vector<std::string>::const_iterator s_iend = list.end();
360  while ( s_iter != s_iend ) {
361  if(m_debugDB)
362  cout << " ----> " << *s_iter << endl;
363 
364  // copy string in unsigned int buffer
365  std::string str = *s_iter++;
366  unsigned short int buffer[100]; //2 bytes
367  int c = 0;
368  const char* cstr = str.c_str();
369  const char* ptr = cstr + 2;
370  const char* end = cstr + str.length();
371  while ( ptr < end ) {
372  char c1 = *ptr++;
373  int i1 = 0;
374  if ( ( c1 >= '0' ) && ( c1 <= '9' ) ) i1 = c1 - '0';
375  if ( ( c1 >= 'a' ) && ( c1 <= 'f' ) ) i1 = 10 + c1 - 'a';
376  if ( ( c1 >= 'A' ) && ( c1 <= 'F' ) ) i1 = 10 + c1 - 'A';
377  char c2 = *ptr++;
378  int i2 = 0;
379  if ( ( c2 >= '0' ) && ( c2 <= '9' ) ) i2 = c2 - '0';
380  if ( ( c2 >= 'a' ) && ( c2 <= 'f' ) ) i2 = 10 + c2 - 'a';
381  if ( ( c2 >= 'A' ) && ( c2 <= 'F' ) ) i2 = 10 + c2 - 'A';
382  buffer[c] = ( i1 * 16 ) + i2;
383  c++;
384  }// end loop over string
385 
386  // BTI configuration string
387  if (buffer[2]==0x54){
388  if(m_debugDB)
389  cout << "BTI STRING found in DB" << endl;
390 
391  // BTI configuration read for BTI
392  flagDBBti = true;
393 
394  // compute sl and bti number from board and chip
395  int brd=buffer[3]; // Board Nr.
396  int chip=buffer[4]; // Chip Nr.
397 
398  if (brd>7) {
399  cout << "Not existing board ... " << brd << endl;
400  return -1; // Non-existing board
401  }
402  if (chip>31) {
403  cout << "Not existing chip... " << chip << endl;
404  return -1; // Non existing chip
405  }
406 
407  // Is it Phi or Theta board?
408  bool ThetaSL, PhiSL;
409  PhiSL=false;
410  ThetaSL=false;
411  switch (mbtype) {
412  case 1: // mb1
413  if (brd==6 || brd==7) {
414  ThetaSL=true;
415  brd-=6;
416  }
417  else if ((brd<3 && chip<32) || (brd==3 && chip<8))
418  PhiSL=true;
419  break;
420  case 2: // mb2
421  if (brd==6 || brd==7) {
422  ThetaSL=true;
423  brd-=6;
424  }
425  else if (brd<4 && chip<32)
426  PhiSL=true;
427  break;
428  case 3: // mb3
429  if (brd==6 || brd==7) {
430  ThetaSL=true;
431  brd-=6;
432  }
433  else if (brd<5 && chip<32)
434  PhiSL=true;
435  break;
436  case 4: // mb4-s, mb4_8
437  if (brd<6 && chip<32)
438  PhiSL=true;
439  break;
440  case 5: // mb4-9
441  if (brd<3 && chip<32)
442  PhiSL=true;
443  break;
444  case 6: // mb4-4
445  if (brd<5 && chip<32)
446  PhiSL=true;
447  break;
448  case 7: // mb4-10
449  if (brd<4 && chip<32)
450  PhiSL=true;
451  break;
452  }
453  if (!PhiSL && !ThetaSL) {
454  cout << "MB type " << mbtype << endl;
455  cout << "Board " << brd << " chip " <<chip << endl;
456  cout << "Not phi SL nor Theta SL" << endl;
457  return -1; // Not PhiSL nor ThetaSL
458  }
459 
460  // compute SL number and bti number
461  int isl;
462  int ibti;
463  if (PhiSL) {
464  if ((chip%8)<4)
465  isl=1; // Phi1
466  else
467  isl=3; // Phi2
468  ibti=brd*16+(int)(chip/8)*4+(chip%4);
469  }
470  else if (ThetaSL){
471  isl=2; // Theta
472  if ((chip%8)<4)
473  ibti=brd*32+ chip-4*(int)(chip/8);
474  else
475  ibti=brd*32+ chip+12-4*(int)(chip/8);
476  }
477 
478  // BTI config constructor from strings
479  DTConfigBti bticonf(m_debugBti,buffer);
480 
481  dttpgConfig.setDTConfigBti(DTBtiId(chambid,isl,ibti+1),bticonf);
482 
483  if(m_debugDB)
484  cout << "Filling BTI config for chamber : wh " << chambid.wheel() <<
485  ", st " << chambid.station() <<
486  ", se " << chambid.sector() <<
487  "... sl " << isl <<
488  ", bti " << ibti+1 << endl;
489  }
490 
491  // TRACO configuration string
492  if (buffer[2]==0x15){
493  if(m_debugDB)
494  cout << "TRACO STRING found in DB" << endl;
495  // TRACO configuration read from OMDS
496  flagDBTraco = true;
497 
498  // TRACO config constructor from strings
499  int traco_brd = buffer[3]; // Board Nr.;
500  int traco_chip = buffer[4]; // Chip Nr.;
501  int itraco = traco_brd * 4 + traco_chip + 1;
502  DTConfigTraco tracoconf(m_debugTraco,buffer);
503  dttpgConfig.setDTConfigTraco(DTTracoId(chambid,itraco),tracoconf);
504 
505  if(m_debugDB)
506  cout << "Filling TRACO config for chamber : wh " << chambid.wheel() <<
507  ", st " << chambid.station() <<
508  ", se " << chambid.sector() <<
509  ", board " << traco_brd <<
510  ", chip " << traco_chip <<
511  ", traco " << itraco << endl;
512  }
513 
514 
515  // TSS configuration string
516  if (buffer[2]==0x16){
517  if(m_debugDB)
518  cout << "TSS STRING found in DB" << endl;
519  // TSS configuration read from OMDS
520  flagDBTSS = true;
521 
522  unsigned short int itss=buffer[3];
523  for (int i=0;i<31;i++)
524  tss_buffer[itss][i]=buffer[i];
525  ntss++;
526  }
527 
528  // TSM configuration string
529  if (buffer[2]==0x17){
530  if(m_debugDB)
531  cout << "TSM STRING found in DB" << endl;
532 
533  // TSM configuration read from OMDS
534  flagDBTSM = true;
535 
536  for (int i=0; i<9; i++)
537  tsm_buffer[i]=buffer[i];
538  }
539 
540  // LUT configuration string
541  if (buffer[2]==0xA8){
542  if(m_debugDB)
543  cout << "LUT STRING found in DB" << endl;
544 
545  // LUT parameters read from OMDS
546  flagDBLUTS = true;
547  DTConfigLUTs lutconf(m_debugLUTs,buffer);
548  //lutconf.setDebug(m_debugLUTs);
549  dttpgConfig.setDTConfigLUTs(chambid,lutconf);
550  }
551 
552  }//end string iteration
553  }//end brick iteration
554 
555  //TSS + TSM configurations are set in DTConfigTSPhi constructor
556  if(flagDBTSM && flagDBTSS) {
557  DTConfigTSPhi tsphiconf(m_debugTSP,tss_buffer,ntss,tsm_buffer);
558  dttpgConfig.setDTConfigTSPhi(chambid,tsphiconf);
559  }
560 
561  // get configuration for TSTheta, SC and TU from .cfg
562  edm::ParameterSet conf_ps = m_ps.getParameter<edm::ParameterSet>("DTTPGParameters");
563  edm::ParameterSet tups = conf_ps.getParameter<edm::ParameterSet>("TUParameters");
564 
565  // TSTheta configuration from .cfg
566  DTConfigTSTheta tsthetaconf(tups.getParameter<edm::ParameterSet>("TSThetaParameters"));
567  tsthetaconf.setDebug(m_debugTST);
568  dttpgConfig.setDTConfigTSTheta(chambid,tsthetaconf);
569 
570  // SC configuration from .cfg
571  DTConfigSectColl sectcollconf(conf_ps.getParameter<edm::ParameterSet>("SectCollParameters"));
572  sectcollconf.setDebug(m_debugSC);
573  dttpgConfig.setDTConfigSectColl(DTSectCollId(chambid.wheel(),chambid.sector()),sectcollconf);
574 
575  // TU configuration from .cfg
576  DTConfigTrigUnit trigunitconf(tups);
577  trigunitconf.setDebug(m_debugTU);
578  dttpgConfig.setDTConfigTrigUnit(chambid,trigunitconf);
579 
580  ++iter;
581 
582  // 110628 SV moved inside CCB loop to check for every chamber
583  // moved to exception handling no attempt to configure from cfg is DB is missing
584  // SV comment exception handling and activate flag in DTConfigManager
585  if(!flagDBBti || !flagDBTraco || !flagDBTSS || !flagDBTSM ){
586  return -1;
587  }
588  if(!flagDBLUTS && dttpgConfig.lutFromDB()==true){
589  return -1;
590  }
591  } // end loop over CCB
592 
593 
594  return 0;
595 }
596 
598 {
599  int iwh = chambid.wheel();
600  std::ostringstream os;
601  os << "wh";
602  if (iwh < 0) {
603  os << 'm' << -iwh;
604  } else {
605  os << iwh;
606  }
607  os << "st" << chambid.station() << "se" << chambid.sector();
608  return os.str();
609 }
610 
611 
613 
614  // ... but still set CCB validity flag to let the emulator run
615  dttpgConfig.setCCBConfigValidity(true);
616 
617  //create config classes&C.
618  edm::ParameterSet conf_ps = m_ps.getParameter<edm::ParameterSet>("DTTPGParameters");
620  bool dttpgdebug = conf_ps.getUntrackedParameter<bool>("Debug");
621  DTConfigSectColl sectcollconf(conf_ps.getParameter<edm::ParameterSet>("SectCollParameters"));
622  edm::ParameterSet tups = conf_ps.getParameter<edm::ParameterSet>("TUParameters");
623  DTConfigBti bticonf(tups.getParameter<edm::ParameterSet>("BtiParameters"));
624  DTConfigTraco tracoconf(tups.getParameter<edm::ParameterSet>("TracoParameters"));
625  DTConfigTSTheta tsthetaconf(tups.getParameter<edm::ParameterSet>("TSThetaParameters"));
626  DTConfigTSPhi tsphiconf(tups.getParameter<edm::ParameterSet>("TSPhiParameters"));
627  DTConfigTrigUnit trigunitconf(tups);
628  DTConfigLUTs lutconf(tups.getParameter<edm::ParameterSet>("LutParameters"));
629 
630 
631  for (int iwh=-2;iwh<=2;++iwh){
632  for (int ist=1;ist<=4;++ist){
633  for (int ise=1;ise<=12;++ise){
634  DTChamberId chambid(iwh,ist,ise);
635  vector<int> nmap = conf_map.getUntrackedParameter<vector<int> >(mapEntryName(chambid).c_str());
636 
637  if(dttpgdebug)
638  {
639  cout << " Filling configuration for chamber : wh " << chambid.wheel() <<
640  ", st " << chambid.station() <<
641  ", se " << chambid.sector() << endl;
642  }
643 
644  //fill the bti map
645  if(!flagDBBti){
646  for (int isl=1;isl<=3;isl++){
647  int ncell = nmap[isl-1];
648  // cout << ncell <<" , ";
649  for (int ibti=0;ibti<ncell;ibti++){
650  dttpgConfig.setDTConfigBti(DTBtiId(chambid,isl,ibti+1),bticonf);
651  if(dttpgdebug)
652  cout << "Filling BTI config for chamber : wh " << chambid.wheel() <<
653  ", st " << chambid.station() <<
654  ", se " << chambid.sector() <<
655  "... sl " << isl <<
656  ", bti " << ibti+1 << endl;
657  }
658  }
659  }
660 
661  // fill the traco map
662  if(!flagDBTraco){
663  int ntraco = nmap[3];
664  //cout << ntraco << " }" << endl;
665  for (int itraco=0;itraco<ntraco;itraco++){
666  dttpgConfig.setDTConfigTraco(DTTracoId(chambid,itraco+1),tracoconf);
667  if(dttpgdebug)
668  cout << "Filling TRACO config for chamber : wh " << chambid.wheel() <<
669  ", st " << chambid.station() <<
670  ", se " << chambid.sector() <<
671  ", traco " << itraco+1 << endl;
672  }
673  }
674 
675  // fill TS & TrigUnit
676  if(!flagDBTSS || !flagDBTSM)
677  {
678  dttpgConfig.setDTConfigTSTheta(chambid,tsthetaconf);
679  dttpgConfig.setDTConfigTSPhi(chambid,tsphiconf);
680  dttpgConfig.setDTConfigTrigUnit(chambid,trigunitconf);
681  }
682 
683  }
684  }
685  }
686 
687  for (int iwh=-2;iwh<=2;++iwh){
688  for (int ise=13;ise<=14;++ise){
689  int ist =4;
690  DTChamberId chambid(iwh,ist,ise);
691  vector<int> nmap = conf_map.getUntrackedParameter<vector<int> >(mapEntryName(chambid).c_str());
692 
693  if(dttpgdebug)
694  {
695  cout << " Filling configuration for chamber : wh " << chambid.wheel() <<
696  ", st " << chambid.station() <<
697  ", se " << chambid.sector() << endl;
698  }
699 
700  //fill the bti map
701  if(!flagDBBti){
702  for (int isl=1;isl<=3;isl++){
703  int ncell = nmap[isl-1];
704  // cout << ncell <<" , ";
705  for (int ibti=0;ibti<ncell;ibti++){
706  dttpgConfig.setDTConfigBti(DTBtiId(chambid,isl,ibti+1),bticonf);
707  if(dttpgdebug)
708  cout << "Filling BTI config for chamber : wh " << chambid.wheel() <<
709  ", st " << chambid.station() <<
710  ", se " << chambid.sector() <<
711  "... sl " << isl <<
712  ", bti " << ibti+1 << endl;
713  }
714  }
715  }
716 
717  // fill the traco map
718  if(!flagDBTraco){
719  int ntraco = nmap[3];
720  // cout << ntraco << " }" << endl;
721  for (int itraco=0;itraco<ntraco;itraco++){
722  dttpgConfig.setDTConfigTraco(DTTracoId(chambid,itraco+1),tracoconf);
723  if(dttpgdebug)
724  cout << "Filling TRACO config for chamber : wh " << chambid.wheel() <<
725  ", st " << chambid.station() <<
726  ", se " << chambid.sector() <<
727  ", traco " << itraco+1 << endl;
728  }
729  }
730 
731  // fill TS & TrigUnit
732  if(!flagDBTSS || !flagDBTSM)
733  {
734  dttpgConfig.setDTConfigTSTheta(chambid,tsthetaconf);
735  dttpgConfig.setDTConfigTSPhi(chambid,tsphiconf);
736  dttpgConfig.setDTConfigTrigUnit(chambid,trigunitconf);
737  }
738  }
739  }
740 
741  //loop on Sector Collectors
742  for (int wh=-2;wh<=2;wh++)
743  for (int se=1;se<=12;se++)
744  dttpgConfig.setDTConfigSectColl(DTSectCollId(wh,se),sectcollconf);
745 
746  //fake collection of pedestals
748 
749  return;
750 
751 }
752 
754 {
755  DTTPGParameters* m_tpgParams = new DTTPGParameters();
756 
757  int counts = m_ps.getParameter<int>("bxOffset");
758  float fine = m_ps.getParameter<double>("finePhase");
759 
760  if (m_debugPed)
761  cout << "DTConfigTrivialProducer::buildPedestals()" << endl;
762 
763  //DTTPGParameters tpgParams;
764  for (int iwh=-2;iwh<=2;++iwh){
765  for (int ist=1;ist<=4;++ist){
766  for (int ise=1;ise<=14;++ise){
767  if (ise>12 && ist!=4) continue;
768 
769  DTChamberId chId(iwh,ist,ise);
770  m_tpgParams->set(chId,counts,fine,DTTimeUnits::ns);
771  }
772  }
773  }
774 
775  DTConfigPedestals tpgPedestals;
776  tpgPedestals.setUseT0(false);
777  tpgPedestals.setES(m_tpgParams);
778 
779  return tpgPedestals;
780 
781 }
782 
783 
std::string mapEntryName(const DTChamberId &chambid) const
std::auto_ptr< DTConfigManager > produce(const DTConfigManagerRcd &)
ES produce method.
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
int i
Definition: DBlmapReader.cc:9
int readDTCCBConfig(const DTConfigManagerRcd &iRecord, DTConfigManager &dttpgConfig)
Read CCB string configuration.
void setDTConfigTSTheta(DTChamberId chambid, DTConfigTSTheta conf)
Set DTConfigTSTheta for desired chip.
~DTConfigDBProducer()
Destructor.
ccb_config_map::const_iterator ccb_config_iterator
Definition: DTCCBConfig.h:88
int wheelId
Definition: DTCCBConfig.h:43
int nValidTSS()
Number of correctly configured TSS.
edm::ParameterSet m_ps
int set(int wheelId, int stationId, int sectorId, int nc, float ph, DTTimeUnits::type unit)
void setDebug(bool debug)
Set debug flag.
void setDebug(bool debug)
Set debug flag.
DTConfigPedestals buildTrivialPedestals()
SV for debugging purpose ONLY.
void setWhatProduced(T *iThis, const es::Label &iLabel=es::Label())
Definition: ESProducer.h:115
DTConfigDBProducer(const edm::ParameterSet &)
Constructor.
int sectorId
Definition: DTCCBConfig.h:45
void setDTConfigTraco(DTTracoId, DTConfigTraco)
Set DTConfigTraco for desired chip.
int checkDTCCBConfig(DTConfigManager &dttpgConfig)
110629 SV function for CCB configuration check
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 setES(DTTPGParameters const *tpgParams, DTT0 const *t0Params=0)
Set parameters from ES.
void setDTConfigBti(DTBtiId, DTConfigBti)
Set DTConfigBti for desired chip.
const std::map< DTBtiId, DTConfigBti > & getDTConfigBtiMap(DTChamberId) const
Get desired BTI configuration map for a given DTChamber.
void configFromCfg(DTConfigManager &dttpgConfig)
SV for debugging purpose ONLY.
void setDTConfigTSPhi(DTChamberId chambid, DTConfigTSPhi conf)
Set DTConfigTSPhi for desired chip.
#define end
Definition: vmac.h:38
void setUseT0(bool useT0)
Set t0i subtraction.
std::vector< std::pair< DTCCBId, std::vector< int > > > ccb_config_map
Definition: DTCCBConfig.h:87
void setDebug(bool debug)
Set debug flag.
const std::map< DTTracoId, DTConfigTraco > & getDTConfigTracoMap(DTChamberId) const
Get desired TRACO configuration map for a given DTChamber.
void setDTConfigLUTs(DTChamberId chambid, DTConfigLUTs conf)
Set DTConfigLUTs for desired chamber.
void setDTConfigPedestals(DTConfigPedestals pedestals)
Set DTConfigPedestals configuration.
static int getCT(int whe, int sec, int sta)
void setDTConfigSectColl(DTSectCollId sectcollid, DTConfigSectColl conf)
Set DTConfigSectColl for desired chip.
void readDBPedestalsConfig(const DTConfigManagerRcd &iRecord, DTConfigManager &dttpgConfig)
Read DTTPG pedestal configuration.
T const * product() const
Definition: ESHandle.h:62
bool lutFromDB() const
Lut from DB flag.
void setCCBConfigValidity(bool CCBValid)
Set the flag for CCB configuration validity.
Definition: DTT0Rcd.h:9
int sector() const
Definition: DTChamberId.h:63
tuple cout
Definition: gather_cfg.py:121
int nValidTSM()
Number of correctly configured TSS.
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
ValidityInterval const & validityInterval() const
DTConfigTSPhi * getDTConfigTSPhi(DTChamberId) const
Get desired Trigger Server Phi configuration.
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