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