CMS 3D CMS Logo

EcalEBTrigPrimPhase2ESProducer.cc
Go to the documentation of this file.
1 // user include files
9 //
13 // commented lines are for a reminder that in future we might need to implement something alike
14 //#include "CondFormats/DataRecord/interface/EcalTPGSpikeRcd.h"
15 //#include "CondFormats/DataRecord/interface/EcalTPGTowerStatusRcd.h"
25 //#include "CondFormats/EcalObjects/interface/EcalTPGSpike.h"
26 //#include "CondFormats/EcalObjects/interface/EcalTPGTowerStatus.h"
31 
32 #include "zlib.h"
33 #include <TMath.h>
34 #include <fstream>
35 #include <iostream>
36 #include <sstream>
37 
38 //
39 // class declaration
40 //
41 
48 public:
51 
52  std::unique_ptr<EcalEBPhase2TPGLinearizationConst> produceLinearizationConst(
54  std::unique_ptr<EcalEBPhase2TPGPedestalsMap> producePedestals(const EcalEBPhase2TPGPedestalsRcd &);
55  std::unique_ptr<EcalEBPhase2TPGAmplWeightIdMap> produceAmpWeight(const EcalEBPhase2TPGAmplWeightIdMapRcd &);
56  std::unique_ptr<EcalEBPhase2TPGTimeWeightIdMap> produceTimeWeight(const EcalEBPhase2TPGTimeWeightIdMapRcd &);
57  std::unique_ptr<EcalTPGWeightGroup> produceWeightGroup(const EcalTPGWeightGroupRcd &);
58  std::unique_ptr<EcalTPGPhysicsConst> producePhysicsConst(const EcalTPGPhysicsConstRcd &);
59  std::unique_ptr<EcalTPGCrystalStatus> produceBadX(const EcalTPGCrystalStatusRcd &);
60 
61  // These commented lines are a reminder that in the future we might need to implement something alike
62  //std::unique_ptr<EcalTPGLutGroup> produceLutGroup(const EcalTPGLutGroupRcd &);
63  //std::uniq//std::unique_ptr<EcalTPGStripStatus> produceBadStrip(const EcalTPGStripStatusRcd &);
64  //std::unique_ptr<EcalTPGTowerStatus> produceBadTT(const EcalTPGTowerStatusRcd &);
65  //std::unique_ptr<EcalTPGSpike> produceSpike(const EcalTPGSpikeRcd &);
66 
67 private:
68  void parseTextFile();
69  std::vector<int> getRange(int subdet, int smNb, int towerNbInSm, int stripNbInTower = 0, int xtalNbInStrip = 0);
70  void parseWeightsFile();
71 
72  // ----------member data ---------------------------
74  // std::string configFilename_;
76  bool flagPrint_;
77  std::map<uint32_t, std::vector<uint32_t>> mapXtal_;
78  std::map<uint32_t, std::vector<uint32_t>> mapStrip_[2];
79  std::map<uint32_t, std::vector<uint32_t>> mapTower_[2];
80  std::map<uint32_t, std::vector<uint32_t>> mapWeight_;
81  std::map<uint32_t, std::vector<uint32_t>> mapTimeWeight_;
82  std::map<int, std::vector<unsigned int>> mapXtalToGroup_;
83  std::map<int, std::vector<unsigned int>> mapXtalToLin_;
84  std::map<uint32_t, std::vector<float>> mapPhys_;
85  static const int maxSamplesUsed_;
86  static const int nLinConst_;
87 };
88 
89 //
90 // input stream from a gz file
91 //
92 
93 struct GzInputStream {
94  gzFile gzf;
95  char buffer[256];
96  std::istringstream iss;
97  bool eof;
98  GzInputStream(const char *file) : eof(false) {
99  gzf = gzopen(file, "rb");
100  edm::LogInfo("EcalEBTrigPrimPhase2ESProducer") << " New weight file " << file;
101  if (gzf == Z_NULL) {
102  eof = true;
103  edm::LogWarning("EcalEBTrigPrimPhase2ESProducer") << "Database file " << file << " not found!!!";
104  } else
105  readLine();
106  }
107  void readLine() {
108  char *res = gzgets(gzf, buffer, 256);
109  eof = (res == Z_NULL);
110  if (!eof) {
111  iss.clear();
112  iss.str(buffer);
113  }
114  }
115  ~GzInputStream() { gzclose(gzf); }
116  explicit operator bool() const { return ((eof == true) ? false : !iss.fail()); }
117 };
118 
119 template <typename T>
121  while ((bool)gis && !(gis.iss >> var)) {
122  gis.readLine();
123  }
124  return gis;
125 }
126 
127 //
128 // constructors and destructor
129 //
130 
133 
135  : dbFilename_(iConfig.getUntrackedParameter<std::string>("DatabaseFile", "")),
136  configFilename_(iConfig.getParameter<edm::FileInPath>("WeightTextFile")),
137  flagPrint_(iConfig.getParameter<bool>("WriteInFile")) {
139 
140  // the following lines are needed to tell the framework what
141  // data is being produced
148  // the following commented lines as a reminder for items which might need to be implemented for Phase2
149  //setWhatProduced(this, &EcalEBTrigPrimPhase2ESProducer::producePhysicsConst);
150  //setWhatProduced(this, &EcalEBTrigPrimPhase2ESProducer::produceBadStrip);
151  //setWhatProduced(this, &EcalEBTrigPrimPhase2ESProducer::produceBadTT);
152  //setWhatProduced(this, &EcalEBTrigPrimPhase2ESProducer::produceSpike);
153 }
154 
156 
157 //
158 // member functions
159 //
160 
161 // ------------ method called to produce the data ------------
162 
163 std::unique_ptr<EcalEBPhase2TPGPedestalsMap> EcalEBTrigPrimPhase2ESProducer::producePedestals(
164  const EcalEBPhase2TPGPedestalsRcd &iRecord) {
165  auto prod = std::make_unique<EcalEBPhase2TPGPedestalsMap>();
166 
167  std::map<int, std::vector<unsigned int>>::const_iterator it;
168  for (it = mapXtalToLin_.begin(); it != mapXtalToLin_.end(); it++) {
169  EBDetId myEBDetId = EBDetId(it->first);
171 
172  ped.mean_x10 = (it->second)[0];
173  ped.mean_x1 = (it->second)[3];
174  prod->insert(std::make_pair(myEBDetId, ped));
175  }
176 
177  return prod;
178 }
179 
180 std::unique_ptr<EcalEBPhase2TPGLinearizationConst> EcalEBTrigPrimPhase2ESProducer::produceLinearizationConst(
181  const EcalEBPhase2TPGLinearizationConstRcd &iRecord) {
182  auto prod = std::make_unique<EcalEBPhase2TPGLinearizationConst>();
183 
184  std::map<int, std::vector<unsigned int>>::const_iterator it;
185  for (it = mapXtalToLin_.begin(); it != mapXtalToLin_.end(); it++) {
187 
188  param.mult_x10 = (it->second)[1];
189  param.mult_x1 = (it->second)[5];
190  param.shift_x10 = (it->second)[2];
191  param.shift_x1 = (it->second)[6];
192  param.i2cSub_x10 = (it->second)[3];
193  param.i2cSub_x1 = (it->second)[7];
194  prod->setValue(it->first, param);
195  }
196 
197  return prod;
198 }
199 
200 std::unique_ptr<EcalEBPhase2TPGAmplWeightIdMap> EcalEBTrigPrimPhase2ESProducer::produceAmpWeight(
201  const EcalEBPhase2TPGAmplWeightIdMapRcd &iRecord) {
202  auto prod = std::make_unique<EcalEBPhase2TPGAmplWeightIdMap>();
203 
205  std::map<uint32_t, std::vector<uint32_t>>::const_iterator it;
206  for (it = mapWeight_.begin(); it != mapWeight_.end(); it++) {
207  weights.setValues((it->second)[0],
208  (it->second)[1],
209  (it->second)[2],
210  (it->second)[3],
211  (it->second)[4],
212  (it->second)[5],
213  (it->second)[6],
214  (it->second)[7],
215  (it->second)[8],
216  (it->second)[9],
217  (it->second)[10],
218  (it->second)[11]);
219  prod->setValue(it->first, weights);
220  }
221 
222  return prod;
223 }
224 
225 std::unique_ptr<EcalEBPhase2TPGTimeWeightIdMap> EcalEBTrigPrimPhase2ESProducer::produceTimeWeight(
226  const EcalEBPhase2TPGTimeWeightIdMapRcd &iRecord) {
227  auto prod = std::make_unique<EcalEBPhase2TPGTimeWeightIdMap>();
228 
229  EcalEBPhase2TPGTimeWeights weights_time;
230  std::map<uint32_t, std::vector<uint32_t>>::const_iterator it;
231  for (it = mapTimeWeight_.begin(); it != mapTimeWeight_.end(); it++) {
232  weights_time.setValues((it->second)[0],
233  (it->second)[1],
234  (it->second)[2],
235  (it->second)[3],
236  (it->second)[4],
237  (it->second)[5],
238  (it->second)[6],
239  (it->second)[7],
240  (it->second)[8],
241  (it->second)[9],
242  (it->second)[10],
243  (it->second)[11]);
244  prod->setValue(it->first, weights_time);
245  }
246 
247  return prod;
248 }
249 
250 std::unique_ptr<EcalTPGWeightGroup> EcalEBTrigPrimPhase2ESProducer::produceWeightGroup(
251  const EcalTPGWeightGroupRcd &iRecord) {
252  auto prod = std::make_unique<EcalTPGWeightGroup>();
253 
254  const int NGROUPS = 61200;
255 
256  for (int iGroup = 0; iGroup < NGROUPS; iGroup++) {
257  std::map<int, std::vector<unsigned int>>::const_iterator it;
258  for (it = mapXtalToGroup_.begin(); it != mapXtalToGroup_.end(); it++) {
259  prod->setValue(it->first, it->second[0]);
260  }
261  }
262 
263  return prod;
264 }
265 
266 std::unique_ptr<EcalTPGPhysicsConst> EcalEBTrigPrimPhase2ESProducer::producePhysicsConst(
267  const EcalTPGPhysicsConstRcd &iRecord) {
268  auto prod = std::make_unique<EcalTPGPhysicsConst>();
269  // EcalEBTrigPrimPhase2ESProducer::producePhysicsConst Needs updating if we want to keep it
270 
271  parseTextFile();
272  std::map<uint32_t, std::vector<float>>::const_iterator it;
273  for (it = mapPhys_.begin(); it != mapPhys_.end(); it++) {
275  item.EtSat = (it->second)[0];
276  item.ttf_threshold_Low = (it->second)[1];
277  item.ttf_threshold_High = (it->second)[2];
278  item.FG_lowThreshold = (it->second)[3];
279  item.FG_highThreshold = (it->second)[4];
280  item.FG_lowRatio = (it->second)[5];
281  item.FG_highRatio = (it->second)[6];
282  prod->setValue(it->first, item);
283  }
284 
285  return prod;
286 }
287 
288 std::unique_ptr<EcalTPGCrystalStatus> EcalEBTrigPrimPhase2ESProducer::produceBadX(
289  const EcalTPGCrystalStatusRcd &iRecord) {
290  auto prod = std::make_unique<EcalTPGCrystalStatus>();
291 
292  parseTextFile();
293  std::map<uint32_t, std::vector<uint32_t>>::const_iterator it;
294  for (it = mapXtal_.begin(); it != mapXtal_.end(); it++) {
295  EcalTPGCrystalStatusCode badXValue;
296  badXValue.setStatusCode(0);
297  prod->setValue(it->first, badXValue);
298  }
299  return prod;
300 }
301 
303  uint32_t id;
304  std::string dataCard;
305  std::vector<unsigned int> param;
306 
307  int data;
309  ;
310  std::string finalFileName;
311  size_t slash = filename.find('/');
312  if (slash != 0) {
313  edm::FileInPath fileInPath(filename);
314  finalFileName = fileInPath.fullPath();
315  } else {
316  finalFileName = filename;
317  edm::LogWarning("EcalEBTPGESProducer")
318  << "Couldnt find database file via fileinpath trying with pathname directly!!";
319  }
320 
321  GzInputStream gis(finalFileName.c_str());
322  while (gis >> dataCard) {
323  if (dataCard == "WEIGHTAMP") {
324  gis >> std::dec >> id;
325 
326  if (flagPrint_) {
327  std::cout << dataCard << " " << std::dec << id << std::endl;
328  }
329 
330  param.clear();
331 
332  std::string st6;
333  for (int i = 0; i < maxSamplesUsed_; i++) {
334  gis >> std::hex >> data;
335  param.push_back(data);
337 
338  if (flagPrint_) {
339  std::ostringstream oss;
340  oss << std::hex << data;
341  std::string result4 = oss.str();
342 
343  st6.append("0x");
344  st6.append(result4);
345  st6.append(" ");
346  }
347  }
348 
349  // debug
350  if (flagPrint_) {
351  std::cout << st6 << std::endl;
352  std::cout << std::endl;
353  }
354 
355  // std::cout << " WEIGHTAMP id " << id << std::endl;
356  mapWeight_[id] = param;
357  }
358 
359  if (dataCard == "WEIGHTTIME") {
360  gis >> std::dec >> id;
361 
362  if (flagPrint_) {
363  std::cout << dataCard << " " << std::dec << id << std::endl;
364  }
365 
366  param.clear();
367 
368  std::string st6;
369  for (int i = 0; i < maxSamplesUsed_; i++) {
370  gis >> std::hex >> data;
371  //std::cout << " Parse time weight filling data " << data;
372  param.push_back(data);
374 
375  if (flagPrint_) {
376  std::ostringstream oss;
377  oss << std::hex << data;
378  std::string result4 = oss.str();
379 
380  st6.append("0x");
381  st6.append(result4);
382  st6.append(" ");
383  }
384  }
385 
386  // debug
387  if (flagPrint_) {
388  std::cout << st6 << std::endl;
389  std::cout << std::endl;
390  }
391  mapTimeWeight_[id] = param;
392  }
393 
394  if (dataCard == "CRYSTAL") {
395  gis >> std::dec >> id;
396 
397  if (flagPrint_) {
398  std::cout << dataCard << " " << std::dec << id << std::endl;
399  }
400 
401  param.clear();
402  std::string st6;
403  gis >> std::dec >> data;
404  param.push_back(data);
405 
406  if (flagPrint_) {
407  std::ostringstream oss;
408  oss << std::dec << data;
409  std::string result4 = oss.str();
410  st6.append(result4);
411  st6.append(" ");
412  std::cout << st6 << std::endl;
413  std::cout << std::endl;
414  }
415  mapXtalToGroup_[id] = param;
416  }
417 
418  if (dataCard == "LINCONST") {
419  gis >> std::dec >> id;
420 
421  if (flagPrint_) {
422  std::cout << dataCard << " " << std::dec << id << std::endl;
423  }
424 
425  param.clear();
426  std::string st6;
427  std::string st7;
428 
429  for (int i = 0; i < nLinConst_; i++) {
430  gis >> std::hex >> data;
431  param.push_back(data);
432 
433  if (flagPrint_) {
434  if (i < 4) {
435  std::ostringstream oss;
436  oss << std::hex << data;
437  std::string result6 = oss.str();
438  st6.append("0x");
439  st6.append(result6);
440  if (i != 3)
441  st6.append(" ");
442  } else if (i < 8) {
443  std::ostringstream oss;
444  oss << std::hex << data;
445  std::string result7 = oss.str();
446  st7.append("0x");
447  st7.append(result7);
448  if (i != 7)
449  st7.append(" ");
450  }
451  }
452  }
453  if (flagPrint_) {
454  std::cout << st6 << std::endl;
455  std::cout << st7 << std::endl;
456  }
457  mapXtalToLin_[id] = param;
458  }
459  }
460 }
461 
463  if (!mapXtal_.empty())
464  return; // just parse the file once!
465 
466  uint32_t id;
467  std::string dataCard;
469  std::ifstream infile;
470  std::vector<unsigned int> param;
471  std::vector<float> paramF;
472  int NBstripparams[2] = {4, 4};
473  unsigned int data;
474 
475  std::string bufString;
476  std::string iString;
477  std::string fString;
478  std::string filename = "SimCalorimetry/EcalTrigPrimProducers/data/" + dbFilename_;
479  std::string finalFileName;
480  size_t slash = dbFilename_.find('/');
481  if (slash != 0) {
482  edm::FileInPath fileInPath(filename);
483  finalFileName = fileInPath.fullPath();
484  } else {
485  finalFileName = dbFilename_;
486  edm::LogWarning("EcalTPG") << "Couldnt find database file via fileinpath, "
487  "trying with pathname directly!!";
488  }
489 
490  int k = 0;
491 
492  GzInputStream gis(finalFileName.c_str());
493  while (gis >> dataCard) {
494  if (dataCard == "CRYSTAL") {
495  gis >> std::dec >> id;
496 
497  std::string st3;
498  std::string st4;
499  std::string st5;
500 
501  if (flagPrint_) {
502  // Print this comment only one time
503  if (k == 0)
504  std::cout << "COMMENT ====== barrel crystals ====== " << std::endl;
505 
506  if (k == 61200)
507  std::cout << "COMMENT ====== endcap crystals ====== " << std::endl;
508 
509  k = k + 1;
510 
511  std::cout << dataCard << " " << std::dec << id << std::endl;
512  }
513 
514  param.clear();
515  for (int i = 0; i < 9; i++) {
516  gis >> std::hex >> data;
517  param.push_back(data);
518 
519  if (flagPrint_) {
520  if (i < 3) {
521  std::ostringstream oss;
522  oss << std::hex << data;
523  std::string result1 = oss.str();
524 
525  st3.append("0x");
526  st3.append(result1);
527  if (i != 2)
528  st3.append(" ");
529 
530  } else if (i > 2 && i < 6) {
531  std::ostringstream oss;
532  oss << std::hex << data;
533  std::string result2 = oss.str();
534 
535  st4.append("0x");
536  st4.append(result2);
537  if (i != 5)
538  st4.append(" ");
539  } else if (i > 5 && i < 9) {
540  std::ostringstream oss;
541  oss << std::hex << data;
542  std::string result3 = oss.str();
543 
544  st5.append("0x");
545  st5.append(result3);
546  if (i != 8)
547  st5.append(" ");
548  }
549  }
550 
551  } // end for
552 
553  if (flagPrint_) {
554  std::cout << " " << st3 << std::endl;
555  std::cout << " " << st4 << std::endl;
556  std::cout << " " << st5 << std::endl;
557  }
558 
559  mapXtal_[id] = param;
560  }
561 
562  if (dataCard == "STRIP_EB") {
563  gis >> std::dec >> id;
564 
565  std::string st1;
566 
567  if (flagPrint_)
568  std::cout << dataCard << " " << std::dec << id << std::endl;
569 
570  param.clear();
571  for (int i = 0; i < NBstripparams[0]; i++) {
572  gis >> std::hex >> data;
573  param.push_back(data);
574 
575  if (flagPrint_) {
576  if (i == 0) {
577  std::cout << "0x" << std::hex << data << std::endl;
578  } else if (i == 1) {
579  std::cout << "" << std::hex << data << std::endl;
580  } else if (i > 1) {
581  std::ostringstream oss;
582  if (i == 2) {
583  oss << "0x" << std::hex << data;
584  std::string result4 = oss.str();
585  st1.append(result4);
586  } else if (i == 3) {
587  std::ostringstream oss;
588  oss << " 0x" << std::hex << data;
589  std::string result5 = oss.str();
590 
591  st1.append(result5);
592  std::cout << "" << st1 << std::endl;
593  }
594  }
595  }
596  }
597 
598  mapStrip_[0][id] = param;
599  }
600 
601  if (dataCard == "STRIP_EE") {
602  gis >> std::dec >> id;
603 
604  std::string st6;
605 
606  if (flagPrint_) {
607  std::cout << dataCard << " " << std::dec << id << std::endl;
608  }
609 
610  param.clear();
611  for (int i = 0; i < NBstripparams[1]; i++) {
612  gis >> std::hex >> data;
613  param.push_back(data);
614 
615  if (flagPrint_) {
616  if (i == 0) {
617  std::cout << "0x" << std::hex << data << std::endl;
618  } else if (i == 1) {
619  std::cout << " " << std::hex << data << std::endl;
620  } else if (i > 1) {
621  std::ostringstream oss;
622  if (i == 2) {
623  oss << "0x" << std::hex << data;
624  std::string result4 = oss.str();
625  st6.append(result4);
626  } else if (i == 3) {
627  std::ostringstream oss;
628  oss << " 0x" << std::hex << data;
629  std::string result5 = oss.str();
630 
631  st6.append(result5);
632  std::cout << "" << st6 << std::endl;
633  }
634  }
635  }
636  }
637 
638  mapStrip_[1][id] = param;
639  }
640 
641  if (dataCard == "TOWER_EE") {
642  gis >> std::dec >> id;
643 
644  if (flagPrint_)
645  std::cout << dataCard << " " << std::dec << id << std::endl;
646 
647  param.clear();
648  for (int i = 0; i < 2; i++) {
649  gis >> std::hex >> data;
650  param.push_back(data);
651 
652  if (flagPrint_) {
653  if (i == 1) {
654  std::cout << "0x" << std::dec << data << std::endl;
655  } else {
656  std::cout << " " << std::dec << data << std::endl;
657  }
658  }
659  }
660 
661  mapTower_[1][id] = param;
662  }
663 
664  if (dataCard == "TOWER_EB") {
665  gis >> std::dec >> id;
666 
667  if (flagPrint_)
668  std::cout << dataCard << " " << std::dec << id << std::endl;
669 
670  param.clear();
671  for (int i = 0; i < 3; i++) {
672  gis >> std::dec >> data;
673 
674  if (flagPrint_) {
675  std::cout << " " << std::dec << data << std::endl;
676  }
677 
678  param.push_back(data);
679  }
680 
681  mapTower_[0][id] = param;
682  }
683  }
684 }
685 
688  int subdet, int tccNb, int towerNbInTcc, int stripNbInTower, int xtalNbInStrip) {
689  std::vector<int> range;
690  if (subdet == 0) {
691  // Barrel
692  range.push_back(37); // stccNbMin
693  range.push_back(73); // tccNbMax
694  range.push_back(1); // towerNbMin
695  range.push_back(69); // towerNbMax
696  range.push_back(1); // stripNbMin
697  range.push_back(6); // stripNbMax
698  range.push_back(1); // xtalNbMin
699  range.push_back(6); // xtalNbMax
700  }
701 
702  if (tccNb > 0) {
703  range[0] = tccNb;
704  range[1] = tccNb + 1;
705  }
706  if (towerNbInTcc > 0) {
707  range[2] = towerNbInTcc;
708  range[3] = towerNbInTcc + 1;
709  }
710  if (stripNbInTower > 0) {
711  range[4] = stripNbInTower;
712  range[5] = stripNbInTower + 1;
713  }
714  if (xtalNbInStrip > 0) {
715  range[6] = xtalNbInStrip;
716  range[7] = xtalNbInStrip + 1;
717  }
718 
719  return range;
720 }
721 
std::map< uint32_t, std::vector< uint32_t > > mapTimeWeight_
auto setWhatProduced(T *iThis, const es::Label &iLabel={})
Definition: ESProducer.h:166
std::string fullPath() const
Definition: FileInPath.cc:161
std::vector< int > getRange(int subdet, int smNb, int towerNbInSm, int stripNbInTower=0, int xtalNbInStrip=0)
This method is not used at all, however is a reminder that something alike will probably be needed on...
std::map< uint32_t, std::vector< uint32_t > > mapXtal_
Definition: Electron.h:6
std::map< uint32_t, std::vector< uint32_t > > mapTower_[2]
void setStatusCode(const uint16_t &val)
std::unique_ptr< EcalEBPhase2TPGAmplWeightIdMap > produceAmpWeight(const EcalEBPhase2TPGAmplWeightIdMapRcd &)
std::unique_ptr< EcalTPGWeightGroup > produceWeightGroup(const EcalTPGWeightGroupRcd &)
std::unique_ptr< EcalEBPhase2TPGTimeWeightIdMap > produceTimeWeight(const EcalEBPhase2TPGTimeWeightIdMapRcd &)
#define DEFINE_FWK_EVENTSETUP_MODULE(type)
Definition: ModuleFactory.h:61
std::unique_ptr< EcalTPGCrystalStatus > produceBadX(const EcalTPGCrystalStatusRcd &)
Log< level::Info, false > LogInfo
std::unique_ptr< EcalEBPhase2TPGLinearizationConst > produceLinearizationConst(const EcalEBPhase2TPGLinearizationConstRcd &)
std::unique_ptr< EcalTPGPhysicsConst > producePhysicsConst(const EcalTPGPhysicsConstRcd &)
std::map< uint32_t, std::vector< uint32_t > > mapWeight_
std::map< int, std::vector< unsigned int > > mapXtalToGroup_
std::map< uint32_t, std::vector< float > > mapPhys_
std::unique_ptr< EcalEBPhase2TPGPedestalsMap > producePedestals(const EcalEBPhase2TPGPedestalsRcd &)
GzInputStream(const char *file)
HLT enums.
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:80
GzInputStream & operator>>(GzInputStream &gis, T &var)
Log< level::Warning, false > LogWarning
long double T
std::map< int, std::vector< unsigned int > > mapXtalToLin_
EcalEBTrigPrimPhase2ESProducer(const edm::ParameterSet &)
std::map< uint32_t, std::vector< uint32_t > > mapStrip_[2]