CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
SiStripCondObjBuilderFromDb.cc
Go to the documentation of this file.
1 
18 
19 #include <cstdlib>
20 #include <iostream>
21 #include <sstream>
22 #include <iomanip>
23 #include "Fed9UUtils.hh"
24 
25 using namespace std;
26 using namespace sistrip;
27 
28 
29 // -----------------------------------------------------------------------------
32  const edm::ActivityRegistry&):
33  m_gaincalibrationfactor(static_cast<float>(pset.getUntrackedParameter<double>("GainNormalizationFactor",690.))),
34  m_defaultpedestalvalue(static_cast<float>(pset.getUntrackedParameter<double>("DefaultPedestal",0.))),
35  m_defaultnoisevalue(static_cast<float>(pset.getUntrackedParameter<double>("DefaultNoise",0.))),
36  m_defaultthresholdhighvalue(static_cast<float>(pset.getUntrackedParameter<double>("DefaultThresholdHigh",0.))),
37  m_defaultthresholdlowvalue(static_cast<float>(pset.getUntrackedParameter<double>("DefaultThresholdLow",0.))),
38  m_defaultapvmodevalue(static_cast<uint16_t>(pset.getUntrackedParameter<uint32_t>("DefaultAPVMode",37))),
39  m_defaultapvlatencyvalue(static_cast<uint16_t>(pset.getUntrackedParameter<uint32_t>("DefaultAPVLatency",142))),
40  m_defaulttickheightvalue(static_cast<float>(pset.getUntrackedParameter<double>("DefaultTickHeight",690.))),
41  m_useanalysis(static_cast<bool>(pset.getUntrackedParameter<bool>("UseAnalysis",false))),
42  m_usefed(static_cast<bool>(pset.getUntrackedParameter<bool>("UseFED",false))),
43  m_usefec(static_cast<bool>(pset.getUntrackedParameter<bool>("UseFEC",false))),
44  m_debug(static_cast<bool>(pset.getUntrackedParameter<bool>("DebugMode",false)))
45 {
47  << "[SiStripCondObjBuilderFromDb::" << __func__ << "]"
48  << " Constructing object...";
49 }
50 
51 // -----------------------------------------------------------------------------
54 {
56  << "[SiStripCondObjBuilderFromDb::" << __func__ << "]"
57  << " Constructing object...";
58 }
59 
60 // -----------------------------------------------------------------------------
64  << "[SiStripCondObjBuilderFromDb::" << __func__ << "]"
65  << " Destructing object...";
66 }
67 
68 // -----------------------------------------------------------------------------
69 
72  if (!(dbParams_==dbParams())){
74  buildCondObj();
75  }
76 }
77 
78 
79 // -----------------------------------------------------------------------------
82 
83 
84  //get current config DB parameter
85 
87 
88  SiStripDbParams::SiStripPartitions::const_iterator ipart = partitionsRange.begin();
89  SiStripDbParams::SiStripPartitions::const_iterator ipartEnd = partitionsRange.end();
90  for ( ; ipart != ipartEnd; ++ipart ) {
91  SiStripPartition partition=ipart->second;
92  output << "@ "
93  << " Partition " << partition.partitionName() ;
94  if (label!="Cabling" && label !="ApvLatency")
95  output << " FedVer " << partition.fedVersion().first << "." << partition.fedVersion().second;
96  if(label=="Cabling")
97  output << " CabVer " << partition.cabVersion().first << "." << partition.cabVersion().second
98  << " MaskVer " << partition.maskVersion().first << "." << partition.maskVersion().second;
99  if(label=="ApvTiming")
100  output<< " ApvTimingVer " << partition.apvTimingVersion().first << "." << partition.apvTimingVersion().second;
101  if(label=="ApvLatency")
102  output<< " FecVersion " << partition.fecVersion().first << "." << partition.fecVersion().second;
103  }
104 
105  if (!strcmp(output.str().c_str(),input.str().c_str()))
106  return false;
107 
108  return true;
109 }
110 
111 // -----------------------------------------------------------------------------
115  << "[SiStripCondObjBuilderFromDb::" << __func__ << "]";
116 
117  // Check if DB connection is made
118  if ( db_ ) {
119 
120  // Check if DB connection is made
121  if ( db_->deviceFactory() ||
122  db_->databaseCache() ) {
123 
124  // Build FEC cabling object
125  SiStripFecCabling fec_cabling;
126 
128  fec_cabling,
131 
133  SiStripDetCabling det_cabling( *fed_cabling_ );
134  buildStripRelatedObjects( &*db_, det_cabling );
135 
136 
140 
141 
142 
143  } else {
145  << "[SiStripCondObjBuilderFromDb::" << __func__ << "]"
146  << " NULL pointer to DeviceFactory returned by SiStripConfigDb!"
147  << " Cannot build Pedestals object!";
148  }
149  } else {
151  << "[SiStripCondObjBuilderFromDb::" << __func__ << "]"
152  << " NULL pointer to SiStripConfigDb returned by DB \"service\"!"
153  << " Cannot build Pedestals object!";
154  }
155 }
156 
157 // -----------------------------------------------------------------------------
159 //Retrieve FedDescriptions from configuration database
162  if ( descriptions.empty() ) {
164  << "SiStripCondObjBuilderFromDb::" << __func__ << "]"
165  << " No FED descriptions found!";
166 
167  return false;
168  }
169  return true;
170 }
171 
172 // -----------------------------------------------------------------------------
174  // Retrieve gain from configuration database
176  SiStripConfigDb::AnalysisDescriptionsRange anal_descriptions =
177  db->getAnalysisDescriptions( CommissioningAnalysisDescription::T_ANALYSIS_TIMING );
178  if ( anal_descriptions.empty() ) {
180  << "SiStripCondObjBuilderFromDb::" << __func__ << "]"
181  << " Unable to build SiStripApvGain object!"
182  << " No timing-scan analysis descriptions found!";
183  return false;
184  }
185  return true;
186 }
187 
188 // -----------------------------------------------------------------------------
190  // Retrieve list of active DetIds
192  vector<uint32_t> det_ids;
193  det_cabling.addActiveDetectorsRawIds(det_ids);
194  if ( det_ids.empty() ) {
196  << "SiStripCondObjBuilderFromDb::" << __func__ << "]"
197  << " Unable to build Pedestals object!"
198  << " No DetIds found!";
199  return det_ids;
200  }
202  << "\n\nSiStripCondObjBuilderFromDb::" << __func__ << "]"
203  << " Found " << det_ids.size() << " active DetIds";
204  return det_ids;
205 }
206 
207 // -----------------------------------------------------------------------------
209  //build connections per DetId
210 vector<const FedChannelConnection *> SiStripCondObjBuilderFromDb::buildConnections(const SiStripDetCabling& det_cabling, uint32_t det_id ){
211  vector<const FedChannelConnection *> conns = det_cabling.getConnections(det_id);
212  if (conns.size()==0){
214  << "SiStripCondObjBuilderFromDb::" << __func__ << "]"
215  << " Unable to build condition object!"
216  << " No FED channel connections found for detid "<< det_id;
217  }
218  return conns;
219 }
220 
221 // -----------------------------------------------------------------------------
223 //retrieve number of APV pairs per detid
225  uint16_t nApvPairs;
227  nApvPairs=fr->getNumberOfApvsAndStripLength(det_id).first/2;
228  return nApvPairs;
229 }
230 
231 // -----------------------------------------------------------------------------
233 //set default values for Cabling Objects Peds, Noise, thresh, Quality
235  uint16_t istrip = apvPair*sistrip::STRIPS_PER_FEDCH;
236  std::cout << "Found disabled FedConnection! APVPair: " << apvPair << " Strips: " << sistrip::STRIPS_PER_FEDCH << std::endl;
237  inputQuality.push_back(quality_->encode(istrip,sistrip::STRIPS_PER_FEDCH));
238  for ( ;istrip < (apvPair+1)*sistrip::STRIPS_PER_FEDCH; ++istrip ){
242  }
243 }
244 
245 // -----------------------------------------------------------------------------
250 }
251 
252 // -----------------------------------------------------------------------------
255  std::cout << "[SiStripCondObjBuilderFromDb::"<<__func__<<"]: Set Default Latency for Detid: " << detid << " ApvNr: " << apvnr << std::endl;
256  if(!latency_.put( detid, apvnr, m_defaultapvmodevalue, m_defaultapvlatencyvalue))
257  {
258  std::cout << "[SiStripCondObjBuilderFromDb::"<<__func__<<"]: Unable to fill Latency for Detid: " << detid << " ApvNr: " << apvnr << std::endl;
259  }
260  if(!latency_.put( detid, ++apvnr, m_defaultapvmodevalue, m_defaultapvlatencyvalue))
261  {
262  std::cout << "[SiStripCondObjBuilderFromDb::"<<__func__<<"]: Unable to fill Latency for Detid: " << detid << " ApvNr: " << apvnr << std::endl;
263  }
264 
265 }
266 
267 
268 
269 // -----------------------------------------------------------------------------
272  SiStripConfigDb::AnalysisDescriptionsRange anal_descriptions = db->getAnalysisDescriptions( CommissioningAnalysisDescription::T_ANALYSIS_TIMING );
273  SiStripConfigDb::AnalysisDescriptionsV::const_iterator iii = anal_descriptions.begin();
274  SiStripConfigDb::AnalysisDescriptionsV::const_iterator jjj = anal_descriptions.end();
275 
276  while ( iii != jjj ) {
277  CommissioningAnalysisDescription* tmp = *iii;
278  uint16_t fed_id = tmp->getFedId();
279  uint16_t fed_ch = SiStripFedKey::fedCh( tmp->getFeUnit(), tmp->getFeChan() );
280  if ( fed_id == ipair.fedId() && fed_ch == ipair.fedCh() ) { break; }
281  iii++;
282  }
283 
284  TimingAnalysisDescription *anal=0;
285  if ( iii != jjj ) { anal = dynamic_cast<TimingAnalysisDescription*>(*iii); }
286  if ( anal ) {
287  float tick_height = (anal->getHeight() / m_gaincalibrationfactor);
288  inputApvGain.push_back( tick_height ); // APV0
289  inputApvGain.push_back( tick_height); // APV1
290  } else {
293  return false;
294  }
295 
296  return true;
297 }
298 
299 // -----------------------------------------------------------------------------
304 
305  SiStripConfigDb::DeviceDescriptionsV::const_iterator iapv = apvs.begin();
306  SiStripConfigDb::DeviceDescriptionsV::const_iterator japv = apvs.end();
307  if(iapv==japv) return false;
308  for ( ; iapv != japv; ++iapv ) {
309  apvDescription* apv = dynamic_cast<apvDescription*>( *iapv );
310  if ( !apv ) { continue; }
311  if((apv->getCrateId()) != (ipair.fecCrate())) continue;
312  if((apv->getFecSlot()) != (ipair.fecSlot())) continue;
313  if((apv->getRingSlot()) != (ipair.fecRing())) continue;
314  if((apv->getCcuAddress()) != (ipair.ccuAddr())) continue;
315  if((apv->getChannel()) != (ipair.ccuChan())) continue;
316  // Insert latency values into latency object
317  if((apv->getAddress()) == (ipair.i2cAddr(0))) {
318  if(!latency_.put( detid, apvnr, static_cast<uint16_t>(apv->getLatency()), static_cast<uint16_t>(apv->getApvMode()))){
319  std::cout << "UNABLE APVLatency Put: Detid "<< dec<<detid
320  << " APVNr.: " << apvnr
321  << " Latency Value: " << dec <<static_cast<uint16_t>(apv->getLatency())
322  << " APV Mode: " << dec<< static_cast<uint16_t>(apv->getApvMode())
323  << std::endl;
324  return false;
325  }else{++apvnr;}
326  }
327  if((apv->getAddress()) == (ipair.i2cAddr(1))) {
328  if(!latency_.put( detid, apvnr, static_cast<uint16_t>(apv->getLatency()), static_cast<uint16_t>(apv->getApvMode()))){
329  std::cout << "UNABLE APVLatency Put: Detid "<<dec<< detid
330  << " APVNr.: " << apvnr
331  << " Latency Value: " << dec <<static_cast<uint16_t>(apv->getLatency())
332  << " APV Mode: " << dec <<static_cast<uint16_t>(apv->getApvMode())
333  << std::endl;
334  continue;
335  return false;
336  }else{++apvnr;}
337  }
338  }
339  return true;
340 }
341 
342 // -----------------------------------------------------------------------------
344 //bool SiStripCondObjBuilderFromDb::setValuesCabling(SiStripConfigDb* const db, FedChannelConnection &ipair, uint32_t detid){
346  //SiStripConfigDb::FedDescriptionsRange descriptions = db->getFedDescriptions();
347  SiStripConfigDb::FedDescriptionsV::const_iterator description = descriptions.begin();
348  while ( description != descriptions.end() ) {
349  if ( (*description)->getFedId() ==ipair.fedId() ) { break; }
350  description++;
351  }
352  if ( description == descriptions.end() ) {return false;}
353  // Retrieve Fed9UStrips object from FED description
354  const Fed9U::Fed9UStrips& strips = (*description)->getFedStrips();
355 
356 
357  // Retrieve StripDescriptions for each APV
358  uint16_t jstrip = ipair.apvPairNumber()*sistrip::STRIPS_PER_FEDCH;
359  for ( uint16_t iapv = 2*ipair.fedCh(); iapv < 2*ipair.fedCh()+2; iapv++ ) {
360 
361  // Get StripDescriptions for the given APV
362  Fed9U::Fed9UAddress addr;
363  addr.setFedApv(iapv);
364  vector<Fed9U::Fed9UStripDescription> strip = strips.getApvStrips(addr);
365 
366  vector<Fed9U::Fed9UStripDescription>::const_iterator istrip = strip.begin();
367 
368  for ( ; istrip != strip.end(); istrip++ ) {
369  pedestals_->setData( istrip->getPedestal() , inputPedestals);
370  noises_ ->setData( istrip->getNoise() , inputNoises );
371  threshold_->setData( jstrip, istrip->getLowThresholdFactor(),
372  istrip->getHighThresholdFactor(), inputThreshold );
373  if(istrip->getDisable()){
374  std::cout << "Found disabled strip! Detid: " << detid << " APVNr: " << iapv << " Strips: " << jstrip << std::endl;
375 
376  inputQuality.push_back(quality_->encode(jstrip,1));
377  }
378  jstrip++;
379  }
380  }
381  return true;
382 }
383 
384 
385 // -----------------------------------------------------------------------------
387 //store objects
389  if ( !pedestals_->put(det_id, inputPedestals ) ) {
390  std::cout
391  << "[SiStripCondObjBuilderFromDb::" << __func__ << "]"
392  << " Unable to insert values into SiStripPedestals object!"
393  << " DetId already exists!" << std::endl;
394  }
395  inputPedestals.clear();
396 
397  }
398 
399 
400 
401 // -----------------------------------------------------------------------------
404  // Insert noise values into Noises object
405 
406  if ( !noises_->put(det_id, inputNoises ) ) {
407  std::cout
408  << "[SiStripCondObjBuilderFromDb::" << __func__ << "]"
409  << " Unable to insert values into SiStripNoises object!"
410  << " DetId already exists!" << std::endl;
411  }
412  inputNoises.clear();
413 
414  }
415 
416 // -----------------------------------------------------------------------------
419  // Insert threshold values into Threshold object
420  if ( !threshold_->put(det_id, inputThreshold ) ) {
421  std::cout
422  << "[SiStripCondObjBuilderFromDb::" << __func__ << "]"
423  << " Unable to insert values into SiStripThreshold object!"
424  << " DetId already exists!" << std::endl;
425  }
426  inputThreshold.clear();
427 }
428 
429 // -----------------------------------------------------------------------------
432  // Insert quality values into Quality object
433  if (inputQuality.size()){
434  quality_->compact(det_id,inputQuality);
435  if ( !quality_->put(det_id, inputQuality ) ) {
436  std::cout
437  << "[SiStripCondObjBuilderFromDb::" << __func__ << "]"
438  << " Unable to insert values into SiStripQuality object!"
439  << " DetId already exists!" << std::endl;
440  }
441  }
442  inputQuality.clear();
443 }
444 
445 // -----------------------------------------------------------------------------
448  // Insert tick height values into Gain object
449  SiStripApvGain::Range range( inputApvGain.begin(), inputApvGain.end() );
450  if ( !gain_->put( det_id, range ) ) {
452  << "[SiStripCondObjBuilderFromDb::" << __func__ << "]"
453  << " Unable to insert values into SiStripApvGain object!"
454  << " DetId already exists!";
455  }
456  inputApvGain.clear();
457 }
458 
459 // -----------------------------------------------------------------------------
462  const SiStripDetCabling& det_cabling){
463  //variables needed in this function
464  uint16_t nApvPairs;
465  vector<uint32_t>::const_iterator det_id;
466  vector<uint32_t> det_ids;
467 
469  << "\n[SiStripCondObjBuilderFromDb::" << __func__ << "] first call to this method";
470 
471  //Check if FedDescriptions exist, if not return
472  if (!retrieveFedDescriptions(db)) {std::cout<< "Found no FedDescription!" << std::endl;return;}
473  // Retrieve list of active DetIds
474  det_cabling.addActiveDetectorsRawIds(det_ids);
475  if ( det_ids.empty() ) {
476  std::cout
477  << "SiStripCondObjBuilderFromDb::" << __func__ << "]"
478  << " Unable to build Pedestals object!"
479  << " No DetIds found!" << std::endl;
480  return;
481  }
482  std::cout << "\n\nSiStripCondObjBuilderFromDb::" << __func__ << "]"
483  << " Found " << det_ids.size() << " active DetIds";
484 
485  // Loop Active DetIds
486  det_id = det_ids.begin();
487  for ( ; det_id != det_ids.end(); det_id++ ) {
488  std::stringstream ssMessage;
489 
490  // Ignore NULL DetIds
491  if ( !(*det_id) ) { continue; }
492  if ( *det_id == sistrip::invalid32_ ) { continue; }
493 
494 
495  //build connections per DetId
496  const vector<const FedChannelConnection *>& conns=buildConnections(det_cabling, *det_id);
497 
498  vector<const FedChannelConnection *>::const_iterator ipair = conns.begin();
499  if(conns.size() ==0 ) continue;
500 
501  //retrieve number of APV pairs per detid
502  nApvPairs=retrieveNumberAPVPairs(*det_id);
503 
504 
505  //loop connections and check if APVPair is connected
506  vector< vector<const FedChannelConnection *>::const_iterator > listConns(nApvPairs,conns.end());
507 
508  for ( ; ipair != conns.end(); ++ipair ){
509  // Check if the ApvPair is connected
510  if ((*ipair)->fedId()!=sistrip::invalid_ && (*ipair)->apvPairNumber()<3){
511  // (*ipair)->print(ssMessage);
512  // ssMessage<< std::endl;
513  listConns[ipair-conns.begin()]=ipair;
514  } else {
515  std::cout
516  << "\n impossible to assign connection position in listConns " << std::endl;
517  // (*ipair)->print(ssMessage);
518  // ssMessage << std::endl;
519  }
520  }
521 
522  // get data
523  // vector< vector<const FedChannelConnection *>::const_iterator >::const_iterator ilistConns=listConns.begin();
524  for (uint16_t apvPair=0;apvPair<listConns.size();++apvPair){
525  ipair=listConns[apvPair];
526  if ( ipair == conns.end() ) {
527  // Fill object with default values
528  std::cout
529  << "\n "
530  << " Unable to find FED connection for detid : " << std::dec << *det_id << " APV pair number " << apvPair
531  << " Writing default values" << std::endl;
532  (*ipair)->print(ssMessage);
533  //If no connection was found, add 100 to apvpair
534  apvPair+=100;
535  std::cout << " Put apvPair+100:" << apvPair << " into vector!" << std::endl;
536  p_apvpcon=std::make_pair(apvPair,**ipair);
537  v_apvpcon.push_back(p_apvpcon);
538  apvPair=apvPair-100;
539  continue;
540  }
541  p_apvpcon=std::make_pair(apvPair,**ipair);
542  v_apvpcon.push_back(p_apvpcon);
543  } //conns loop
544  p_detcon=std::make_pair(*det_id,v_apvpcon);
545  v_trackercon.push_back(p_detcon);
546  v_apvpcon.clear();
547  } // det id loop
548 }
549 
550 // -----------------------------------------------------------------------------
553  trackercon tc = _tc;
554  std::cout << "Entering [SiStripCondObjBuilderFromDb::"<<__func__ <<"]"<<std::endl;
555  //data container
556  gain_= new SiStripApvGain();
557 
558  //check if Timing analysis description is found, otherwise quit
561  << "[SiStripCondObjBuilderFromDb::" << __func__ << "]"
562  << " NULL pointer to AnalysisDescriptions returned by SiStripConfigDb!"
563  << " Cannot build Analysis object! QUIT";
564  // some values have to be set, otherwise PopCon will crash
566  storeTiming(4711);
567  return;
568  }
569 
570  i_trackercon detids_end=tc.end();
571 
572  //loop detids
573  for(i_trackercon detids=tc.begin();detids!=detids_end;detids++){
574  uint32_t detid = (*detids).first;
575  i_apvpairconn connections_end=((*detids).second).end();
576 
577  //loop connections
578  for(i_apvpairconn connections=((*detids).second).begin();connections!=connections_end;connections++){
579  uint32_t apvPair =(*connections).first;
580  FedChannelConnection ipair =(*connections).second;
581 
582 
583  //no connection for apvPair found
584  if(apvPair>=100){
586  continue;
587  }
588 
589  //fill data
590  if(!setValuesApvTiming(db, ipair)){
591  std::cout
592  << "\n "
593  << " Unable to find Timing Analysis Description"
594  << " Writing default values for DetId: " << detid
595  << " Value: " << m_defaulttickheightvalue/m_gaincalibrationfactor << std::endl;
597  }
598  }//connections
599  storeTiming(detid);
600  }//detids
601 
602 }
603 
604 // -----------------------------------------------------------------------------
607  trackercon tc = _tc;
608  std::cout << "Entering [SiStripCondObjBuilderFromDb::"<<__func__ <<"]"<<std::endl;
609  //data container
610  latency_ = new SiStripLatency();
611 
612  i_trackercon detids_end=tc.end();
613 
614  // get APV DeviceDescriptions
616 
617 
618  //loop detids
619  for(i_trackercon detids=tc.begin();detids!=detids_end;detids++){
620  uint32_t detid = (*detids).first;
621  uint16_t apvnr=1;
622  i_apvpairconn connections_end=((*detids).second).end();
623 
624 
625  //loop connections
626  for(i_apvpairconn connections=((*detids).second).begin();connections!=connections_end;connections++){
627  uint32_t apvPair =(*connections).first;
628  FedChannelConnection ipair =(*connections).second;
629 
630  //no connection for apvPair found
631  if(apvPair>=100){
632  //setDefaultValuesApvLatency((*latency_),ipair, detid, apvnr);
633  std::cout << "[SiStripCondObjBuilderFromDb::" << __func__ << "] No FEDConnection for DetId " << detid << " ApvPair " << apvPair-100 << " found, skipping Latency Insertion!" << std::endl;
634  continue;
635  }
636 
637  //fill data
638  if(!setValuesApvLatency((*latency_),db, ipair, detid, apvnr, apvs)){
639  std::cout
640  << "\n "
641  << " Unable to find FEC Description"
642  << " Skipping Insertion for DetId: " << detid << std::endl;
643  //setDefaultValuesApvLatency((*latency_),ipair, detid, apvnr);
644  }
645  apvnr+=2;
646  }//connections
647  // compact Latency Object
648 
649  }//detids
650  latency_->compress();
651  std::stringstream ss;
652  // latency debug output
653  latency_->printSummary(ss);
654  latency_->printDebug(ss);
655  std::cout << ss.str() << std::endl;
656 }
657 
658 // -----------------------------------------------------------------------------
661  trackercon tc = _tc;
662  std::cout << "Entering [SiStripCondObjBuilderFromDb::"<<__func__ <<"]"<<std::endl;
663 
664  //data containers
666  noises_ = new SiStripNoises();
668  quality_ = new SiStripQuality();
669 
670  i_trackercon detids_end=tc.end();
671 
672  //Build FED Descriptions out of db object
674 
675  //loop detids
676  for(i_trackercon detids=tc.begin();detids!=detids_end;detids++){
677  uint32_t detid = (*detids).first;
678  i_apvpairconn connections_end=((*detids).second).end();
679 
680  //loop connections
681  for(i_apvpairconn connections=((*detids).second).begin();connections!=connections_end;connections++){
682  uint32_t apvPair =(*connections).first;
683  FedChannelConnection ipair =(*connections).second;
684 
685  //no connection for apvPair found
686  if(apvPair>=100){
687  std::cout
688  << "[SiStripCondObjBuilderFromDb::" << __func__ << "]"
689  << " Unable to find FED description for FED id: " << ipair.fedId()
690  << " detid : " << detid << " APV pair number " << apvPair
691  << " Writing default values"<< std::endl;
692  setDefaultValuesCabling((apvPair-100));
693  continue;
694  }
695  // if(!setValuesCabling(db, ipair, detid)){
696  if(!setValuesCabling(descriptions, ipair, detid)){
697  std::cout
698  << "[SiStripCondObjBuilderFromDb::" << __func__ << "]"
699  << " Unable to find FED description for FED id: " << ipair.fedId()
700  << " detid : " << detid << " APV pair number " << apvPair
701  << " Writing default values"<< std::endl;
702  setDefaultValuesCabling(apvPair);
703  }
704  }//connections
705  storePedestals(detid);
706  storeNoise(detid);
707  storeThreshold(detid);
708  storeQuality(detid);
709  }//detids
710 }
711 
712 
const uint16_t & fecSlot() const
bool put(const uint32_t &detID, const InputVector &vect)
vector< uint32_t > retrieveActiveDetIds(const SiStripDetCabling &det_cabling)
SiStripPedestals::InputVector inputPedestals
const uint16_t & fecCrate() const
bool put(const uint32_t detId, const uint16_t apv, const uint16_t latency, const uint16_t mode)
void addActiveDetectorsRawIds(std::vector< uint32_t > &) const
Versions maskVersion() const
const uint16_t & fedCh() const
const std::pair< unsigned short, double > getNumberOfApvsAndStripLength(uint32_t detId) const
void buildAnalysisRelatedObjects(SiStripConfigDb *const db, const trackercon &tc)
DeviceFactory *const deviceFactory(std::string method_name="") const
static const uint32_t invalid32_
Definition: Constants.h:15
SiStripQuality::InputVector inputQuality
FedDescriptionsRange getFedDescriptions(std::string partition="")
std::string partitionName() const
uint16_t apvPairNumber() const
tuple db
Definition: EcalCondDB.py:151
FedDescriptions::range FedDescriptionsRange
SiStripThreshold::InputVector inputThreshold
const uint16_t & fedId() const
void setDefaultValuesCabling(uint16_t apvPair)
static std::string const input
Definition: EdmProvDump.cc:44
edm::Service< SiStripConfigDb > db_
bool put(const uint32_t &detID, Range input)
void buildFECRelatedObjects(SiStripConfigDb *const db, const trackercon &tc)
const std::vector< const FedChannelConnection * > & getConnections(uint32_t det_id) const
const_iterator_range partitions() const
bool setValuesApvLatency(SiStripLatency &latency_, SiStripConfigDb *const db, FedChannelConnection &ipair, uint32_t detid, uint16_t apvnr, SiStripConfigDb::DeviceDescriptionsRange apvs)
bool retrieveFedDescriptions(SiStripConfigDb *const db)
Versions apvTimingVersion() const
void buildStripRelatedObjects(SiStripConfigDb *const db, const SiStripDetCabling &det_cabling)
bool checkForCompatibility(std::stringstream &input, std::stringstream &output, std::string &label)
const uint16_t & fecRing() const
static void buildFecCabling(SiStripConfigDb *const, SiStripFecCabling &, const sistrip::CablingSource &)
Class containning control, module, detector and connection information, at the level of a FED channel...
DeviceDescriptions::range DeviceDescriptionsRange
void compact(unsigned int &, std::vector< unsigned int > &)
An interface class to the DeviceFactory.
const uint16_t & ccuChan() const
void buildFEDRelatedObjects(SiStripConfigDb *const db, const trackercon &tc)
std::pair< ContainerIterator, ContainerIterator > Range
uint16_t retrieveNumberAPVPairs(uint32_t det_id)
std::vector< pair_detcon > trackercon
Container class for database partition parameters.
#define end
Definition: vmac.h:37
AnalysisDescriptionsRange getAnalysisDescriptions(AnalysisType, std::string partition="")
const uint16_t & ccuAddr() const
vector< const FedChannelConnection * > buildConnections(const SiStripDetCabling &det_cabling, uint32_t det_id)
SiStripNoises::InputVector inputNoises
#define LogTrace(id)
void printSummary(std::stringstream &ss) const
Prints the number of ranges as well as the value of singleLatency and singleMode. ...
bool put(const uint32_t &detID, const InputVector &input)
DbClient *const databaseCache(std::string method_name="") const
const SiStripDbParams & dbParams() const
tuple description
Definition: idDealer.py:66
bool setValuesCabling(SiStripConfigDb::FedDescriptionsRange &descriptions, FedChannelConnection &ipair, uint32_t detid)
static void getFedCabling(const SiStripFecCabling &in, SiStripFedCabling &out)
static const uint16_t STRIPS_PER_FEDCH
bool put(const uint32_t &detID, InputVector &input)
bool retrieveTimingAnalysisDescriptions(SiStripConfigDb *const db)
AnalysisDescriptions::range AnalysisDescriptionsRange
static const uint16_t invalid_
Definition: Constants.h:16
void setDefaultValuesApvLatency(SiStripLatency &latency_, const FedChannelConnection &ipair, uint32_t detid, uint16_t apvnr)
void setData(const uint16_t &strip, const float &lTh, const float &hTh, Container &vthr)
Contains cabling info at the device level, including DetId, APV pair numbers, hardware addresses...
boost::iterator_range< SiStripPartitions::const_iterator > const_iterator_range
std::vector< std::vector< double > > tmp
Definition: MVATrainer.cc:100
SiStripApvGain::InputVector inputApvGain
void printDebug(std::stringstream &ss) const
Prints the full list of all ranges and corresponding values of latency and mode.
void setData(float ped, InputVector &vped)
tuple cout
Definition: gather_cfg.py:121
static uint16_t fedCh(const uint16_t &fe_unit, const uint16_t &fe_chan)
volatile std::atomic< bool > shutdown_flag false
DeviceDescriptionsRange getDeviceDescriptions(std::string partition="")
static const char mlESSources_[]
const uint16_t & i2cAddr(const uint16_t &apv0_or_1) const
bool put(const uint32_t &detID, const InputVector &vect)
std::vector< pair_detcon >::iterator i_trackercon
Versions fecVersion() const
Versions cabVersion() const
std::vector< pair_apvpairconn >::iterator i_apvpairconn
unsigned int encode(const unsigned short &first, const unsigned short &NconsecutiveBadStrips, const unsigned short &flag=0)
Versions fedVersion() const
void setData(float noise_, InputVector &vped)
bool setValuesApvTiming(SiStripConfigDb *const db, FedChannelConnection &ipair)