CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
HcalHardcodeCalibrations.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 // Original Author: Fedor Ratnikov
3 //
4 //
5 
6 #include <memory>
7 #include <iostream>
8 #include <string>
9 #include <vector>
10 
18 
21 
25 
27 
28 //#define DebugLog
29 
30 // class decleration
31 //
32 
33 using namespace cms;
34 
35 namespace {
36 
37  const std::vector<HcalGenericDetId>& allCells(const HcalTopology& hcaltopology, bool killHE = false) {
38  static std::vector<HcalGenericDetId> result;
39  int maxDepth = hcaltopology.maxDepth();
40 
41 #ifdef DebugLog
42  std::cout << std::endl << "HcalHardcodeCalibrations: maxDepth = " << maxDepth << std::endl;
43 #endif
44 
45  if (result.empty()) {
46  for (int eta = -HcalDetId::kHcalEtaMask2; eta <= (int)(HcalDetId::kHcalEtaMask2); eta++) {
47  for (unsigned int phi = 0; phi <= HcalDetId::kHcalPhiMask2; phi++) {
48  for (int depth = 1; depth <= maxDepth; depth++) {
49  for (int det = 1; det <= HcalForward; det++) {
50  HcalDetId cell((HcalSubdetector)det, eta, phi, depth);
51  if (killHE && HcalEndcap == cell.subdetId())
52  continue;
53  if (hcaltopology.valid(cell)) {
54  result.push_back(cell);
55 #ifdef DebugLog
56  std::cout << " HcalHardcodedCalibrations: det|eta|phi|depth = " << det << "|" << eta << "|" << phi
57  << "|" << depth << std::endl;
58 #endif
59  }
60  }
61  }
62  }
63  }
64  ZdcTopology zdctopology;
65  HcalZDCDetId zcell;
67  for (int depth = 1; depth < 6; depth++) {
68  zcell = HcalZDCDetId(section, true, depth);
69  if (zdctopology.valid(zcell))
70  result.push_back(zcell);
71  zcell = HcalZDCDetId(section, false, depth);
72  if (zdctopology.valid(zcell))
73  result.push_back(zcell);
74  }
75  section = HcalZDCDetId::HAD;
76  for (int depth = 1; depth < 5; depth++) {
77  zcell = HcalZDCDetId(section, true, depth);
78  if (zdctopology.valid(zcell))
79  result.push_back(zcell);
80  zcell = HcalZDCDetId(section, false, depth);
81  if (zdctopology.valid(zcell))
82  result.push_back(zcell);
83  }
84  section = HcalZDCDetId::LUM;
85  for (int depth = 1; depth < 3; depth++) {
86  zcell = HcalZDCDetId(section, true, depth);
87  if (zdctopology.valid(zcell))
88  result.push_back(zcell);
89  zcell = HcalZDCDetId(section, false, depth);
90  if (zdctopology.valid(zcell))
91  result.push_back(zcell);
92  }
93  section = HcalZDCDetId::RPD;
94  for (int depth = 1; depth < 17; depth++) {
95  zcell = HcalZDCDetId(section, true, depth);
96  if (zdctopology.valid(zcell))
97  result.push_back(zcell);
98  zcell = HcalZDCDetId(section, false, depth);
99  if (zdctopology.valid(zcell))
100  result.push_back(zcell);
101  }
102 
103  // HcalGenTriggerTower (HcalGenericSubdetector = 5)
104  // NASTY HACK !!!
105  // - As no valid(cell) check found for HcalTrigTowerDetId
106  // to create HT cells (ieta=1-28, iphi=1-72)&(ieta=29-32, iphi=1,5,... 69)
107 
108  for (int vers = 0; vers <= HcalTrigTowerDetId::kHcalVersMask; ++vers) {
109  for (int depth = 0; depth <= HcalTrigTowerDetId::kHcalDepthMask; ++depth) {
111  for (int phi = 1; phi <= HcalTrigTowerDetId::kHcalPhiMask; phi++) {
112  HcalTrigTowerDetId cell(eta, phi, depth, vers);
113  if (hcaltopology.validHT(cell)) {
114  result.push_back(cell);
115 #ifdef DebugLog
116  std::cout << " HcalHardcodedCalibrations: eta|phi|depth|vers = " << eta << "|" << phi << "|" << depth
117  << "|" << vers << std::endl;
118 #endif
119  }
120  }
121  }
122  }
123  }
124  }
125  return result;
126  }
127 
128 } // namespace
129 
131  : hb_recalibration(nullptr),
132  he_recalibration(nullptr),
133  hf_recalibration(nullptr),
134  setHEdsegm(false),
135  setHBdsegm(false) {
136  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::HcalHardcodeCalibrations->...";
137 
138  if (iConfig.exists("GainWidthsForTrigPrims"))
139  switchGainWidthsForTrigPrims = iConfig.getParameter<bool>("GainWidthsForTrigPrims");
140  else
142 
143  //DB helper preparation
151  dbHardcode.useHBUpgrade(iConfig.getParameter<bool>("useHBUpgrade"));
152  dbHardcode.useHEUpgrade(iConfig.getParameter<bool>("useHEUpgrade"));
153  dbHardcode.useHFUpgrade(iConfig.getParameter<bool>("useHFUpgrade"));
154  dbHardcode.useHOUpgrade(iConfig.getParameter<bool>("useHOUpgrade"));
155  dbHardcode.testHFQIE10(iConfig.getParameter<bool>("testHFQIE10"));
156  dbHardcode.testHEPlan1(iConfig.getParameter<bool>("testHEPlan1"));
157  dbHardcode.setKillHE(iConfig.getParameter<bool>("killHE"));
158  dbHardcode.setSiPMCharacteristics(iConfig.getParameter<std::vector<edm::ParameterSet>>("SiPMCharacteristics"));
159 
160  useLayer0Weight = iConfig.getParameter<bool>("useLayer0Weight");
161  useIeta18depth1 = iConfig.getParameter<bool>("useIeta18depth1");
162  testHEPlan1 = iConfig.getParameter<bool>("testHEPlan1");
163  // HB, HE, HF recalibration preparation
164  iLumi = iConfig.getParameter<double>("iLumi");
165 
166  if (iLumi > 0.0) {
167  bool hb_recalib = iConfig.getParameter<bool>("HBRecalibration");
168  bool he_recalib = iConfig.getParameter<bool>("HERecalibration");
169  bool hf_recalib = iConfig.getParameter<bool>("HFRecalibration");
170  if (hb_recalib) {
172  std::make_unique<HBHERecalibration>(iLumi,
173  iConfig.getParameter<double>("HBreCalibCutoff"),
174  iConfig.getParameter<edm::FileInPath>("HBmeanenergies").fullPath());
175  }
176  if (he_recalib) {
178  std::make_unique<HBHERecalibration>(iLumi,
179  iConfig.getParameter<double>("HEreCalibCutoff"),
180  iConfig.getParameter<edm::FileInPath>("HEmeanenergies").fullPath());
181  }
182  if (hf_recalib && !iConfig.getParameter<edm::ParameterSet>("HFRecalParameterBlock").empty())
184  std::make_unique<HFRecalibration>(iConfig.getParameter<edm::ParameterSet>("HFRecalParameterBlock"));
185 
186 #ifdef DebugLog
187  std::cout << " HcalHardcodeCalibrations: iLumi = " << iLumi << std::endl;
188 #endif
189  }
190 
191  std::vector<std::string> toGet = iConfig.getUntrackedParameter<std::vector<std::string>>("toGet");
192  for (auto& objectName : toGet) {
193  bool all = objectName == "all";
194 #ifdef DebugLog
195  std::cout << "Load parameters for " << objectName << std::endl;
196 #endif
197  if ((objectName == "Pedestals") || all) {
199  findingRecord<HcalPedestalsRcd>();
200  }
201  if ((objectName == "PedestalWidths") || all) {
203  findingRecord<HcalPedestalWidthsRcd>();
204  }
205  if ((objectName == "EffectivePedestals") || all) {
208  .consumes();
209  findingRecord<HcalPedestalsRcd>();
210  }
211  if ((objectName == "EffectivePedestalWidths") || all) {
214  .consumes();
215  findingRecord<HcalPedestalWidthsRcd>();
216  }
217  if ((objectName == "Gains") || all) {
219  findingRecord<HcalGainsRcd>();
220  }
221  if ((objectName == "GainWidths") || all) {
223  findingRecord<HcalGainWidthsRcd>();
224  }
225  if ((objectName == "QIEData") || all) {
227  findingRecord<HcalQIEDataRcd>();
228  }
229  if ((objectName == "QIETypes") || all) {
231  findingRecord<HcalQIETypesRcd>();
232  }
233  if ((objectName == "ChannelQuality") || (objectName == "channelQuality") || all) {
235  findingRecord<HcalChannelQualityRcd>();
236  }
237  if ((objectName == "ElectronicsMap") || (objectName == "electronicsMap") || all) {
239  findingRecord<HcalElectronicsMapRcd>();
240  }
241  if ((objectName == "ZSThresholds") || (objectName == "zsThresholds") || all) {
243  findingRecord<HcalZSThresholdsRcd>();
244  }
245  if ((objectName == "RespCorrs") || (objectName == "ResponseCorrection") || all) {
247  topoTokens_[kRespCorrs] = c.consumes();
248  if (he_recalibration) {
249  heDarkeningToken_ = c.consumes(edm::ESInputTag("", "HE"));
250  }
251  if (hb_recalibration) {
252  hbDarkeningToken_ = c.consumes(edm::ESInputTag("", "HB"));
253  }
254  findingRecord<HcalRespCorrsRcd>();
255  }
256  if ((objectName == "LUTCorrs") || (objectName == "LUTCorrection") || all) {
258  findingRecord<HcalLUTCorrsRcd>();
259  }
260  if ((objectName == "PFCorrs") || (objectName == "PFCorrection") || all) {
262  findingRecord<HcalPFCorrsRcd>();
263  }
264  if ((objectName == "TimeCorrs") || (objectName == "TimeCorrection") || all) {
266  findingRecord<HcalTimeCorrsRcd>();
267  }
268  if ((objectName == "L1TriggerObjects") || (objectName == "L1Trigger") || all) {
271  findingRecord<HcalL1TriggerObjectsRcd>();
272  }
273  if ((objectName == "ValidationCorrs") || (objectName == "ValidationCorrection") || all) {
276  findingRecord<HcalValidationCorrsRcd>();
277  }
278  if ((objectName == "LutMetadata") || (objectName == "lutMetadata") || all) {
280  findingRecord<HcalLutMetadataRcd>();
281  }
282  if ((objectName == "DcsValues") || all) {
284  findingRecord<HcalDcsRcd>();
285  }
286  if ((objectName == "DcsMap") || (objectName == "dcsMap") || all) {
288  findingRecord<HcalDcsMapRcd>();
289  }
290  if ((objectName == "RecoParams") || all) {
292  findingRecord<HcalRecoParamsRcd>();
293  }
294  if ((objectName == "LongRecoParams") || all) {
296  findingRecord<HcalLongRecoParamsRcd>();
297  }
298  if ((objectName == "ZDCLowGainFractions") || all) {
301  findingRecord<HcalZDCLowGainFractionsRcd>();
302  }
303  if ((objectName == "MCParams") || all) {
305  findingRecord<HcalMCParamsRcd>();
306  }
307  if ((objectName == "FlagHFDigiTimeParams") || all) {
310  findingRecord<HcalFlagHFDigiTimeParamsRcd>();
311  }
312  if ((objectName == "FrontEndMap") || (objectName == "frontEndMap") || all) {
314  findingRecord<HcalFrontEndMapRcd>();
315  }
316  if ((objectName == "SiPMParameters") || all) {
318  findingRecord<HcalSiPMParametersRcd>();
319  }
320  if ((objectName == "SiPMCharacteristics") || all) {
322  findingRecord<HcalSiPMCharacteristicsRcd>();
323  }
324  if ((objectName == "TPChannelParameters") || all) {
327  findingRecord<HcalTPChannelParametersRcd>();
328  }
329  if ((objectName == "TPParameters") || all) {
331  findingRecord<HcalTPParametersRcd>();
332  }
333  }
334 }
335 
337 
338 //
339 // member functions
340 //
342  const edm::IOVSyncValue& iTime,
343  edm::ValidityInterval& oInterval) {
344  std::string record = iKey.name();
345  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::setIntervalFor-> key: " << record << " time: " << iTime.eventID()
346  << '/' << iTime.time().value();
348 }
349 
350 std::unique_ptr<HcalPedestals> HcalHardcodeCalibrations::producePedestals_(
352  std::string seff = eff ? "Effective" : "";
353  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produce" << seff << "Pedestals-> ...";
354 
355  auto const& topo = rec.get(token);
356  auto result = std::make_unique<HcalPedestals>(&topo, false);
357  const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
358  for (auto cell : cells) {
359  HcalPedestal item = dbHardcode.makePedestal(cell, false, eff, &topo, iLumi);
360  result->addValues(item);
361  }
362  return result;
363 }
364 
365 std::unique_ptr<HcalPedestalWidths> HcalHardcodeCalibrations::producePedestalWidths_(
367  std::string seff = eff ? "Effective" : "";
368  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produce" << seff << "PedestalWidths-> ...";
369  auto const& topo = rec.get(token);
370  auto result = std::make_unique<HcalPedestalWidths>(&topo, false);
371  const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
372  for (auto cell : cells) {
374  result->addValues(item);
375  }
376  return result;
377 }
378 
379 std::unique_ptr<HcalPedestals> HcalHardcodeCalibrations::producePedestals(const HcalPedestalsRcd& rec) {
380  return producePedestals_(rec, topoTokens_[kPedestals], false);
381 }
382 
383 std::unique_ptr<HcalPedestals> HcalHardcodeCalibrations::produceEffectivePedestals(const HcalPedestalsRcd& rec) {
385 }
386 
387 std::unique_ptr<HcalPedestalWidths> HcalHardcodeCalibrations::producePedestalWidths(const HcalPedestalWidthsRcd& rec) {
389 }
390 
392  const HcalPedestalWidthsRcd& rec) {
394 }
395 
396 std::unique_ptr<HcalGains> HcalHardcodeCalibrations::produceGains(const HcalGainsRcd& rec) {
397  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceGains-> ...";
398 
399  auto const& topo = rec.get(topoTokens_[kGains]);
400  auto result = std::make_unique<HcalGains>(&topo);
401  const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
402  for (auto cell : cells) {
404  result->addValues(item);
405  }
406  return result;
407 }
408 
409 std::unique_ptr<HcalGainWidths> HcalHardcodeCalibrations::produceGainWidths(const HcalGainWidthsRcd& rec) {
410  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceGainWidths-> ...";
411 
412  auto const& topo = rec.get(topoTokens_[kGainWidths]);
413  auto result = std::make_unique<HcalGainWidths>(&topo);
414  const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
415  for (auto cell : cells) {
416  // for Upgrade - include TrigPrims, for regular case - only HcalDetId
419  result->addValues(item);
420  } else if (!cell.isHcalTrigTowerDetId()) {
422  result->addValues(item);
423  }
424  }
425  return result;
426 }
427 
428 std::unique_ptr<HcalQIEData> HcalHardcodeCalibrations::produceQIEData(const HcalQIEDataRcd& rcd) {
429  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceQIEData-> ...";
430 
431  /*
432  std::cout << std::endl << ">>> HcalHardcodeCalibrations::produceQIEData"
433  << std::endl;
434  */
435 
436  auto const& topo = rcd.get(topoTokens_[kQIEData]);
437  auto result = std::make_unique<HcalQIEData>(&topo);
438  const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
439  for (auto cell : cells) {
440  HcalQIECoder coder = dbHardcode.makeQIECoder(cell);
441  result->addCoder(coder);
442  }
443  return result;
444 }
445 
446 std::unique_ptr<HcalQIETypes> HcalHardcodeCalibrations::produceQIETypes(const HcalQIETypesRcd& rcd) {
447  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceQIETypes-> ...";
448  auto const& topo = rcd.get(topoTokens_[kQIETypes]);
449 
450  auto result = std::make_unique<HcalQIETypes>(&topo);
451  const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
452  for (auto cell : cells) {
454  result->addValues(item);
455  }
456  return result;
457 }
458 
459 std::unique_ptr<HcalChannelQuality> HcalHardcodeCalibrations::produceChannelQuality(const HcalChannelQualityRcd& rcd) {
460  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceChannelQuality-> ...";
461  auto const& topo = rcd.get(topoTokens_[kChannelQuality]);
462 
463  auto result = std::make_unique<HcalChannelQuality>(&topo);
464  const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
465  for (auto cell : cells) {
466  // Special: removal of (non-instrumented) layer "-1"("nose") = depth 1
467  // from Upgrade HE, either from
468  // (i) HEP17 sector in 2017 or
469  // (ii) the entire HE rin=18 from 2018 through Run 3.
470  // May require a revision by 2021.
471 
472  uint32_t status = 0;
473 
474  if (!(cell.isHcalZDCDetId())) {
475  HcalDetId hid = HcalDetId(cell);
476  int iphi = hid.iphi();
477  int ieta = hid.ieta();
478  int absieta = hid.ietaAbs();
479  int depth = hid.depth();
480 
481  // specific HEP17 sector (2017 only)
482  bool isHEP17 = (iphi >= 63) && (iphi <= 66) && (ieta > 0);
483  // |ieta|=18, depth=1
484  bool is18d1 = (absieta == 18) && (depth == 1);
485 
486  if ((!useIeta18depth1 && is18d1) && ((testHEPlan1 && isHEP17) || (!testHEPlan1))) {
487  status = 0x8002; // dead cell
488  }
489  }
490 
491  HcalChannelStatus item(cell.rawId(), status);
492  result->addValues(item);
493  }
494 
495  return result;
496 }
497 
498 std::unique_ptr<HcalRespCorrs> HcalHardcodeCalibrations::produceRespCorrs(const HcalRespCorrsRcd& rcd) {
499  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceRespCorrs-> ...";
500  auto const& topo = rcd.get(topoTokens_[kRespCorrs]);
501 
502  //set depth segmentation for HB/HE recalib - only happens once
504  std::vector<std::vector<int>> m_segmentation;
505  int maxEta = topo.lastHBHERing();
506  m_segmentation.resize(maxEta);
507  for (int i = 0; i < maxEta; i++) {
508  topo.getDepthSegmentation(i + 1, m_segmentation[i]);
509  }
510  if (he_recalibration && !setHEdsegm) {
511  he_recalibration->setup(m_segmentation, &rcd.get(heDarkeningToken_));
512  setHEdsegm = true;
513  }
514  if (hb_recalibration && !setHBdsegm) {
515  hb_recalibration->setup(m_segmentation, &rcd.get(hbDarkeningToken_));
516  setHBdsegm = true;
517  }
518  }
519 
520  auto result = std::make_unique<HcalRespCorrs>(&topo);
521  const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
522  for (const auto& cell : cells) {
523  double corr = 1.0;
524 
525  //check for layer 0 reweighting: when depth 1 has only one layer, it is layer 0
526  if (useLayer0Weight &&
527  ((cell.genericSubdet() == HcalGenericDetId::HcalGenEndcap) ||
528  (cell.genericSubdet() == HcalGenericDetId::HcalGenBarrel)) &&
529  (HcalDetId(cell).depth() == 1 &&
530  dbHardcode.getLayersInDepth(HcalDetId(cell).ietaAbs(), HcalDetId(cell).depth(), &topo) == 1)) {
531  //layer 0 is thicker than other layers (9mm vs 3.7mm) and brighter (Bicron vs SCSN81)
532  //in Run1/Run2 (pre-2017 for HE), ODU for layer 0 had neutral density filter attached
533  //NDF was simulated as weight of 0.5 applied to Geant energy deposits
534  //for Phase1, NDF is removed - simulated as weight of 1.2 applied to Geant energy deposits
535  //to maintain RECO calibrations, move the layer 0 energy scale back to its previous state using respcorrs
536  corr = 0.5 / 1.2;
537  }
538 
539  if ((hb_recalibration != nullptr) && (cell.genericSubdet() == HcalGenericDetId::HcalGenBarrel)) {
540  int depth_ = HcalDetId(cell).depth();
541  int ieta_ = HcalDetId(cell).ieta();
542  corr *= hb_recalibration->getCorr(ieta_, depth_);
543 #ifdef DebugLog
544  std::cout << "HB ieta, depth = " << ieta_ << ", " << depth_ << " corr = " << corr << std::endl;
545 #endif
546  } else if ((he_recalibration != nullptr) && (cell.genericSubdet() == HcalGenericDetId::HcalGenEndcap)) {
547  int depth_ = HcalDetId(cell).depth();
548  int ieta_ = HcalDetId(cell).ieta();
549  corr *= he_recalibration->getCorr(ieta_, depth_);
550 #ifdef DebugLog
551  std::cout << "HE ieta, depth = " << ieta_ << ", " << depth_ << " corr = " << corr << std::endl;
552 #endif
553  } else if ((hf_recalibration != nullptr) && (cell.genericSubdet() == HcalGenericDetId::HcalGenForward)) {
554  int depth_ = HcalDetId(cell).depth();
555  int ieta_ = HcalDetId(cell).ieta();
556  corr = hf_recalibration->getCorr(ieta_, depth_, iLumi);
557 #ifdef DebugLog
558  std::cout << "HF ieta, depth = " << ieta_ << ", " << depth_ << " corr = " << corr << std::endl;
559 #endif
560  }
561 
562  HcalRespCorr item(cell.rawId(), corr);
563  result->addValues(item);
564  }
565  return result;
566 }
567 
568 std::unique_ptr<HcalLUTCorrs> HcalHardcodeCalibrations::produceLUTCorrs(const HcalLUTCorrsRcd& rcd) {
569  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceLUTCorrs-> ...";
570  auto const& topo = rcd.get(topoTokens_[kLUTCorrs]);
571 
572  auto result = std::make_unique<HcalLUTCorrs>(&topo);
573  const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
574  for (auto cell : cells) {
575  HcalLUTCorr item(cell.rawId(), 1.0);
576  result->addValues(item);
577  }
578  return result;
579 }
580 
581 std::unique_ptr<HcalPFCorrs> HcalHardcodeCalibrations::producePFCorrs(const HcalPFCorrsRcd& rcd) {
582  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::producePFCorrs-> ...";
583  auto const& topo = rcd.get(topoTokens_[kPFCorrs]);
584 
585  auto result = std::make_unique<HcalPFCorrs>(&topo);
586  const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
587  for (auto cell : cells) {
588  HcalPFCorr item(cell.rawId(), 1.0);
589  result->addValues(item);
590  }
591  return result;
592 }
593 
594 std::unique_ptr<HcalTimeCorrs> HcalHardcodeCalibrations::produceTimeCorrs(const HcalTimeCorrsRcd& rcd) {
595  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceTimeCorrs-> ...";
596  auto const& topo = rcd.get(topoTokens_[kTimeCorrs]);
597 
598  auto result = std::make_unique<HcalTimeCorrs>(&topo);
599  const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
600  for (auto cell : cells) {
601  HcalTimeCorr item(cell.rawId(), 0.0);
602  result->addValues(item);
603  }
604  return result;
605 }
606 
607 std::unique_ptr<HcalZSThresholds> HcalHardcodeCalibrations::produceZSThresholds(const HcalZSThresholdsRcd& rcd) {
608  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceZSThresholds-> ...";
609  auto const& topo = rcd.get(topoTokens_[kZSThresholds]);
610 
611  auto result = std::make_unique<HcalZSThresholds>(&topo);
612  const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
613  for (auto cell : cells) {
615  result->addValues(item);
616  }
617  return result;
618 }
619 
620 std::unique_ptr<HcalL1TriggerObjects> HcalHardcodeCalibrations::produceL1TriggerObjects(
621  const HcalL1TriggerObjectsRcd& rcd) {
622  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceL1TriggerObjects-> ...";
623  auto const& topo = rcd.get(topoTokens_[kL1TriggerObjects]);
624 
625  auto result = std::make_unique<HcalL1TriggerObjects>(&topo);
626  const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
627  for (auto cell : cells) {
628  HcalL1TriggerObject item(cell.rawId(), 0., 1., 0);
629  result->addValues(item);
630  }
631  // add tag and algo values
632  result->setTagString("hardcoded");
633  result->setAlgoString("hardcoded");
634  return result;
635 }
636 
637 std::unique_ptr<HcalElectronicsMap> HcalHardcodeCalibrations::produceElectronicsMap(const HcalElectronicsMapRcd& rcd) {
638  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceElectronicsMap-> ...";
639  auto const& topo = rcd.get(topoTokens_[kElectronicsMap]);
640 
641  const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
642  return dbHardcode.makeHardcodeMap(cells);
643 }
644 
645 std::unique_ptr<HcalValidationCorrs> HcalHardcodeCalibrations::produceValidationCorrs(
646  const HcalValidationCorrsRcd& rcd) {
647  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceValidationCorrs-> ...";
648  auto const& topo = rcd.get(topoTokens_[kValidationCorrs]);
649 
650  auto result = std::make_unique<HcalValidationCorrs>(&topo);
651  const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
652  for (auto cell : cells) {
653  HcalValidationCorr item(cell.rawId(), 1.0);
654  result->addValues(item);
655  }
656  return result;
657 }
658 
659 std::unique_ptr<HcalLutMetadata> HcalHardcodeCalibrations::produceLutMetadata(const HcalLutMetadataRcd& rcd) {
660  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceLutMetadata-> ...";
661  auto const& topo = rcd.get(topoTokens_[kLutMetadata]);
662 
663  auto result = std::make_unique<HcalLutMetadata>(&topo);
664 
665  result->setRctLsb(0.5);
666  result->setNominalGain(0.177); // for HBHE SiPMs
667 
668  const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
669  for (const auto& cell : cells) {
670  float rcalib = 1.;
671  int granularity = 1;
672  int threshold = 0;
673 
674  if (cell.isHcalTrigTowerDetId()) {
675  rcalib = 0.;
676  }
677 
678  HcalLutMetadatum item(cell.rawId(), rcalib, granularity, threshold);
679  result->addValues(item);
680  }
681 
682  return result;
683 }
684 
685 std::unique_ptr<HcalDcsValues> HcalHardcodeCalibrations::produceDcsValues(const HcalDcsRcd& rcd) {
686  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceDcsValues-> ...";
687  auto result = std::make_unique<HcalDcsValues>();
688  return result;
689 }
690 
691 std::unique_ptr<HcalDcsMap> HcalHardcodeCalibrations::produceDcsMap(const HcalDcsMapRcd& rcd) {
692  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceDcsMap-> ...";
693 
695 }
696 
697 std::unique_ptr<HcalRecoParams> HcalHardcodeCalibrations::produceRecoParams(const HcalRecoParamsRcd& rec) {
698  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceRecoParams-> ...";
699  auto const& topo = rec.get(topoTokens_[kRecoParams]);
700 
701  auto result = std::make_unique<HcalRecoParams>(&topo);
702  const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
703  for (auto cell : cells) {
705  result->addValues(item);
706  }
707  return result;
708 }
709 
710 std::unique_ptr<HcalTimingParams> HcalHardcodeCalibrations::produceTimingParams(const HcalTimingParamsRcd& rec) {
711  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceTimingParams-> ...";
712  auto const& topo = rec.get(topoTokens_[kTimingParams]);
713 
714  auto result = std::make_unique<HcalTimingParams>(&topo);
715  const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
716  for (auto cell : cells) {
718  result->addValues(item);
719  }
720  return result;
721 }
722 
723 std::unique_ptr<HcalLongRecoParams> HcalHardcodeCalibrations::produceLongRecoParams(const HcalLongRecoParamsRcd& rec) {
724  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceLongRecoParams-> ...";
725  auto const& topo = rec.get(topoTokens_[kLongRecoParams]);
726 
727  auto result = std::make_unique<HcalLongRecoParams>(&topo);
728  const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
729  std::vector<unsigned int> mSignal;
730  mSignal.push_back(4);
731  mSignal.push_back(5);
732  mSignal.push_back(6);
733  std::vector<unsigned int> mNoise;
734  mNoise.push_back(1);
735  mNoise.push_back(2);
736  mNoise.push_back(3);
737  for (auto cell : cells) {
738  if (cell.isHcalZDCDetId()) {
739  HcalLongRecoParam item(cell.rawId(), mSignal, mNoise);
740  result->addValues(item);
741  }
742  }
743  return result;
744 }
745 
746 std::unique_ptr<HcalZDCLowGainFractions> HcalHardcodeCalibrations::produceZDCLowGainFractions(
747  const HcalZDCLowGainFractionsRcd& rec) {
748  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceZDCLowGainFractions-> ...";
749  auto const& topo = rec.get(topoTokens_[kZDCLowGainFractions]);
750 
751  auto result = std::make_unique<HcalZDCLowGainFractions>(&topo);
752  const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
753  for (auto cell : cells) {
754  HcalZDCLowGainFraction item(cell.rawId(), 0.0);
755  result->addValues(item);
756  }
757  return result;
758 }
759 
760 std::unique_ptr<HcalMCParams> HcalHardcodeCalibrations::produceMCParams(const HcalMCParamsRcd& rec) {
761  // std::cout << std::endl << " .... HcalHardcodeCalibrations::produceMCParams ->"<< std::endl;
762 
763  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceMCParams-> ...";
764  auto const& topo = rec.get(topoTokens_[kMCParams]);
765  auto result = std::make_unique<HcalMCParams>(&topo);
766  const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
767  for (auto cell : cells) {
769  result->addValues(item);
770  }
771  return result;
772 }
773 
774 std::unique_ptr<HcalFlagHFDigiTimeParams> HcalHardcodeCalibrations::produceFlagHFDigiTimeParams(
775  const HcalFlagHFDigiTimeParamsRcd& rec) {
776  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceFlagHFDigiTimeParams-> ...";
777  auto const& topo = rec.get(topoTokens_[kFlagHFDigiTimeParams]);
778 
779  auto result = std::make_unique<HcalFlagHFDigiTimeParams>(&topo);
780  const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
781 
782  std::vector<double> coef;
783  coef.push_back(0.93);
784  coef.push_back(-0.38275);
785  coef.push_back(-0.012667);
786 
787  for (auto cell : cells) {
788  HcalFlagHFDigiTimeParam item(cell.rawId(),
789  1, //firstsample
790  3, // samplestoadd
791  2, //expectedpeak
792  40., // min energy threshold
793  coef // coefficients
794  );
795  result->addValues(item);
796  }
797  return result;
798 }
799 
800 std::unique_ptr<HcalFrontEndMap> HcalHardcodeCalibrations::produceFrontEndMap(const HcalFrontEndMapRcd& rec) {
801  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceFrontEndMap-> ...";
802  auto const& topo = rec.get(topoTokens_[kFrontEndMap]);
803 
804  const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
805 
806  return dbHardcode.makeHardcodeFrontEndMap(cells);
807 }
808 
809 std::unique_ptr<HcalSiPMParameters> HcalHardcodeCalibrations::produceSiPMParameters(const HcalSiPMParametersRcd& rec) {
810  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceSiPMParameters-> ...";
811  auto const& topo = rec.get(topoTokens_[kSiPMParameters]);
812 
813  auto result = std::make_unique<HcalSiPMParameters>(&topo);
814  const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
815  for (auto cell : cells) {
817  result->addValues(item);
818  }
819  return result;
820 }
821 
822 std::unique_ptr<HcalSiPMCharacteristics> HcalHardcodeCalibrations::produceSiPMCharacteristics(
823  const HcalSiPMCharacteristicsRcd& rcd) {
824  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceSiPMCharacteristics-> ...";
825 
827 }
828 
829 std::unique_ptr<HcalTPChannelParameters> HcalHardcodeCalibrations::produceTPChannelParameters(
830  const HcalTPChannelParametersRcd& rec) {
831  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceTPChannelParameters-> ...";
832  auto const& topo = rec.get(topoTokens_[kTPChannelParameters]);
833 
834  auto result = std::make_unique<HcalTPChannelParameters>(&topo);
835  const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
836  for (auto cell : cells) {
837  // Thinking about Phase2 and the new FIR filter,
838  // for now, don't put TT in TPChannelParams
839  if (cell.subdetId() == HcalTriggerTower)
840  continue;
842  result->addValues(item);
843  }
844  return result;
845 }
846 
847 std::unique_ptr<HcalTPParameters> HcalHardcodeCalibrations::produceTPParameters(const HcalTPParametersRcd& rcd) {
848  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceTPParameters-> ...";
849 
850  auto result = std::make_unique<HcalTPParameters>();
852  return result;
853 }
854 
857  desc.add<double>("iLumi", -1.);
858  desc.add<bool>("HBRecalibration", false);
859  desc.add<double>("HBreCalibCutoff", 20.);
860  desc.add<edm::FileInPath>("HBmeanenergies", edm::FileInPath("CalibCalorimetry/HcalPlugins/data/meanenergiesHB.txt"));
861  desc.add<bool>("HERecalibration", false);
862  desc.add<double>("HEreCalibCutoff", 20.);
863  desc.add<edm::FileInPath>("HEmeanenergies", edm::FileInPath("CalibCalorimetry/HcalPlugins/data/meanenergiesHE.txt"));
864  desc.add<bool>("HFRecalibration", false);
865  desc.add<bool>("GainWidthsForTrigPrims", false);
866  desc.add<bool>("useHBUpgrade", false);
867  desc.add<bool>("useHEUpgrade", false);
868  desc.add<bool>("useHFUpgrade", false);
869  desc.add<bool>("useHOUpgrade", true);
870  desc.add<bool>("testHFQIE10", false);
871  desc.add<bool>("testHEPlan1", false);
872  desc.add<bool>("killHE", false);
873  desc.add<bool>("useLayer0Weight", false);
874  desc.add<bool>("useIeta18depth1", true);
875  desc.addUntracked<std::vector<std::string>>("toGet", std::vector<std::string>());
876  desc.addUntracked<bool>("fromDDD", false);
877 
879  desc_hb.add<std::vector<double>>("gain", std::vector<double>({0.19}));
880  desc_hb.add<std::vector<double>>("gainWidth", std::vector<double>({0.0}));
881  desc_hb.add<double>("pedestal", 3.0);
882  desc_hb.add<double>("pedestalWidth", 0.55);
883  desc_hb.add<int>("zsThreshold", 8);
884  desc_hb.add<std::vector<double>>("qieOffset", std::vector<double>({-0.49, 1.8, 7.2, 37.9}));
885  desc_hb.add<std::vector<double>>("qieSlope", std::vector<double>({0.912, 0.917, 0.922, 0.923}));
886  desc_hb.add<int>("qieType", 0);
887  desc_hb.add<int>("mcShape", 125);
888  desc_hb.add<int>("recoShape", 105);
889  desc_hb.add<double>("photoelectronsToAnalog", 0.0);
890  desc_hb.add<std::vector<double>>("darkCurrent", std::vector<double>({0.0}));
891  desc_hb.add<std::vector<double>>("noiseCorrelation", std::vector<double>({0.0}));
892  desc_hb.add<bool>("doRadiationDamage", false);
893  desc.add<edm::ParameterSetDescription>("hb", desc_hb);
894 
895  edm::ParameterSetDescription desc_hbRaddam;
896  desc_hbRaddam.add<double>("temperatureBase", 20.0);
897  desc_hbRaddam.add<double>("temperatureNew", -5.0);
898  desc_hbRaddam.add<double>("intlumiOffset", 150);
899  desc_hbRaddam.add<double>("depVsTemp", 0.0631);
900  desc_hbRaddam.add<double>("intlumiToNeutrons", 3.67e8);
901  desc_hbRaddam.add<std::vector<double>>("depVsNeutrons", {5.69e-11, 7.90e-11});
902 
903  edm::ParameterSetDescription desc_hbUpgrade;
904  desc_hbUpgrade.add<std::vector<double>>("gain", std::vector<double>({0.00111111111111}));
905  desc_hbUpgrade.add<std::vector<double>>("gainWidth", std::vector<double>({0}));
906  desc_hbUpgrade.add<double>("pedestal", 18.0);
907  desc_hbUpgrade.add<double>("pedestalWidth", 5.0);
908  desc_hbUpgrade.add<int>("zsThreshold", 3);
909  desc_hbUpgrade.add<std::vector<double>>("qieOffset", std::vector<double>({0.0, 0.0, 0.0, 0.0}));
910  desc_hbUpgrade.add<std::vector<double>>("qieSlope", std::vector<double>({0.333, 0.333, 0.333, 0.333}));
911  desc_hbUpgrade.add<int>("qieType", 2);
912  desc_hbUpgrade.add<int>("mcShape", 206);
913  desc_hbUpgrade.add<int>("recoShape", 206);
914  desc_hbUpgrade.add<double>("photoelectronsToAnalog", 57.5);
915  desc_hbUpgrade.add<std::vector<double>>("darkCurrent", std::vector<double>({0.055}));
916  desc_hbUpgrade.add<std::vector<double>>("noiseCorrelation", std::vector<double>({0.26}));
917  desc_hbUpgrade.add<bool>("doRadiationDamage", true);
918  desc_hbUpgrade.add<edm::ParameterSetDescription>("radiationDamage", desc_hbRaddam);
919  desc.add<edm::ParameterSetDescription>("hbUpgrade", desc_hbUpgrade);
920 
922  desc_he.add<std::vector<double>>("gain", std::vector<double>({0.23}));
923  desc_he.add<std::vector<double>>("gainWidth", std::vector<double>({0}));
924  desc_he.add<double>("pedestal", 3.0);
925  desc_he.add<double>("pedestalWidth", 0.79);
926  desc_he.add<int>("zsThreshold", 9);
927  desc_he.add<std::vector<double>>("qieOffset", std::vector<double>({-0.38, 2.0, 7.6, 39.6}));
928  desc_he.add<std::vector<double>>("qieSlope", std::vector<double>({0.912, 0.916, 0.92, 0.922}));
929  desc_he.add<int>("qieType", 0);
930  desc_he.add<int>("mcShape", 125);
931  desc_he.add<int>("recoShape", 105);
932  desc_he.add<double>("photoelectronsToAnalog", 0.0);
933  desc_he.add<std::vector<double>>("darkCurrent", std::vector<double>({0.0}));
934  desc_he.add<std::vector<double>>("noiseCorrelation", std::vector<double>({0.0}));
935  desc_he.add<bool>("doRadiationDamage", false);
936  desc.add<edm::ParameterSetDescription>("he", desc_he);
937 
938  edm::ParameterSetDescription desc_heRaddam;
939  desc_heRaddam.add<double>("temperatureBase", 20.0);
940  desc_heRaddam.add<double>("temperatureNew", 5.0);
941  desc_heRaddam.add<double>("intlumiOffset", 75);
942  desc_heRaddam.add<double>("depVsTemp", 0.0631);
943  desc_heRaddam.add<double>("intlumiToNeutrons", 2.92e8);
944  desc_heRaddam.add<std::vector<double>>("depVsNeutrons", {5.69e-11, 7.90e-11});
945 
946  edm::ParameterSetDescription desc_heUpgrade;
947  desc_heUpgrade.add<std::vector<double>>("gain", std::vector<double>({0.00111111111111}));
948  desc_heUpgrade.add<std::vector<double>>("gainWidth", std::vector<double>({0}));
949  desc_heUpgrade.add<double>("pedestal", 18.0);
950  desc_heUpgrade.add<double>("pedestalWidth", 5.0);
951  desc_heUpgrade.add<int>("zsThreshold", 3);
952  desc_heUpgrade.add<std::vector<double>>("qieOffset", std::vector<double>({0.0, 0.0, 0.0, 0.0}));
953  desc_heUpgrade.add<std::vector<double>>("qieSlope", std::vector<double>({0.333, 0.333, 0.333, 0.333}));
954  desc_heUpgrade.add<int>("qieType", 2);
955  desc_heUpgrade.add<int>("mcShape", 206);
956  desc_heUpgrade.add<int>("recoShape", 206);
957  desc_heUpgrade.add<double>("photoelectronsToAnalog", 57.5);
958  desc_heUpgrade.add<std::vector<double>>("darkCurrent", std::vector<double>({0.055}));
959  desc_heUpgrade.add<std::vector<double>>("noiseCorrelation", std::vector<double>({0.26}));
960  desc_heUpgrade.add<bool>("doRadiationDamage", true);
961  desc_heUpgrade.add<edm::ParameterSetDescription>("radiationDamage", desc_heRaddam);
962  desc.add<edm::ParameterSetDescription>("heUpgrade", desc_heUpgrade);
963 
965  desc_hf.add<std::vector<double>>("gain", std::vector<double>({0.14, 0.135}));
966  desc_hf.add<std::vector<double>>("gainWidth", std::vector<double>({0.0, 0.0}));
967  desc_hf.add<double>("pedestal", 3.0);
968  desc_hf.add<double>("pedestalWidth", 0.84);
969  desc_hf.add<int>("zsThreshold", -9999);
970  desc_hf.add<std::vector<double>>("qieOffset", std::vector<double>({-0.87, 1.4, 7.8, -29.6}));
971  desc_hf.add<std::vector<double>>("qieSlope", std::vector<double>({0.359, 0.358, 0.36, 0.367}));
972  desc_hf.add<int>("qieType", 0);
973  desc_hf.add<int>("mcShape", 301);
974  desc_hf.add<int>("recoShape", 301);
975  desc_hf.add<double>("photoelectronsToAnalog", 0.0);
976  desc_hf.add<std::vector<double>>("darkCurrent", std::vector<double>({0.0}));
977  desc_hf.add<std::vector<double>>("noiseCorrelation", std::vector<double>({0.0}));
978  desc_hf.add<bool>("doRadiationDamage", false);
979  desc.add<edm::ParameterSetDescription>("hf", desc_hf);
980 
981  edm::ParameterSetDescription desc_hfUpgrade;
982  desc_hfUpgrade.add<std::vector<double>>("gain", std::vector<double>({0.14, 0.135}));
983  desc_hfUpgrade.add<std::vector<double>>("gainWidth", std::vector<double>({0.0, 0.0}));
984  desc_hfUpgrade.add<double>("pedestal", 13.33);
985  desc_hfUpgrade.add<double>("pedestalWidth", 3.33);
986  desc_hfUpgrade.add<int>("zsThreshold", -9999);
987  desc_hfUpgrade.add<std::vector<double>>("qieOffset", std::vector<double>({0.0697, -0.7405, 12.38, -671.9}));
988  desc_hfUpgrade.add<std::vector<double>>("qieSlope", std::vector<double>({0.297, 0.298, 0.298, 0.313}));
989  desc_hfUpgrade.add<int>("qieType", 1);
990  desc_hfUpgrade.add<int>("mcShape", 301);
991  desc_hfUpgrade.add<int>("recoShape", 301);
992  desc_hfUpgrade.add<double>("photoelectronsToAnalog", 0.0);
993  desc_hfUpgrade.add<std::vector<double>>("darkCurrent", std::vector<double>({0.0}));
994  desc_hfUpgrade.add<std::vector<double>>("noiseCorrelation", std::vector<double>({0.0}));
995  desc_hfUpgrade.add<bool>("doRadiationDamage", false);
996  desc.add<edm::ParameterSetDescription>("hfUpgrade", desc_hfUpgrade);
997 
998  edm::ParameterSetDescription desc_hfrecal;
999  desc_hfrecal.add<std::vector<double>>("HFdepthOneParameterA", std::vector<double>());
1000  desc_hfrecal.add<std::vector<double>>("HFdepthOneParameterB", std::vector<double>());
1001  desc_hfrecal.add<std::vector<double>>("HFdepthTwoParameterA", std::vector<double>());
1002  desc_hfrecal.add<std::vector<double>>("HFdepthTwoParameterB", std::vector<double>());
1003  desc.add<edm::ParameterSetDescription>("HFRecalParameterBlock", desc_hfrecal);
1004 
1006  desc_ho.add<std::vector<double>>("gain", std::vector<double>({0.006, 0.0087}));
1007  desc_ho.add<std::vector<double>>("gainWidth", std::vector<double>({0.0, 0.0}));
1008  desc_ho.add<double>("pedestal", 11.0);
1009  desc_ho.add<double>("pedestalWidth", 0.57);
1010  desc_ho.add<int>("zsThreshold", 24);
1011  desc_ho.add<std::vector<double>>("qieOffset", std::vector<double>({-0.44, 1.4, 7.1, 38.5}));
1012  desc_ho.add<std::vector<double>>("qieSlope", std::vector<double>({0.907, 0.915, 0.92, 0.921}));
1013  desc_ho.add<int>("qieType", 0);
1014  desc_ho.add<int>("mcShape", 201);
1015  desc_ho.add<int>("recoShape", 201);
1016  desc_ho.add<double>("photoelectronsToAnalog", 4.0);
1017  desc_ho.add<std::vector<double>>("darkCurrent", std::vector<double>({0.0}));
1018  desc_ho.add<std::vector<double>>("noiseCorrelation", std::vector<double>({0.0}));
1019  desc_ho.add<bool>("doRadiationDamage", false);
1020  desc.add<edm::ParameterSetDescription>("ho", desc_ho);
1021 
1022  edm::ParameterSetDescription validator_sipm;
1023  validator_sipm.add<int>("pixels", 1);
1024  validator_sipm.add<double>("crosstalk", 0);
1025  validator_sipm.add<double>("nonlin1", 1);
1026  validator_sipm.add<double>("nonlin2", 0);
1027  validator_sipm.add<double>("nonlin3", 0);
1028  std::vector<edm::ParameterSet> default_sipm(1);
1029  desc.addVPSet("SiPMCharacteristics", validator_sipm, default_sipm);
1030 
1031  descriptions.addDefault(desc);
1032 }
std::unique_ptr< HcalPedestals > producePedestals(const HcalPedestalsRcd &rcd)
int maxDepth(void) const
static const int kHcalVersMask
auto setWhatProduced(T *iThis, const es::Label &iLabel={})
Definition: ESProducer.h:163
HcalMCParam makeMCParam(HcalGenericDetId fId) const
bool empty() const
Definition: ParameterSet.h:201
T getUntrackedParameter(std::string const &, T const &) const
static constexpr uint32_t kHcalPhiMask2
Definition: HcalDetId.h:15
std::unique_ptr< HcalGains > produceGains(const HcalGainsRcd &rcd)
void useHBUpgrade(bool b)
HcalHardcodeCalibrations(const edm::ParameterSet &)
const edm::EventSetup & c
constexpr int ietaAbs() const
get the absolute value of the cell ieta
Definition: HcalDetId.h:148
const bool killHE() const
std::unique_ptr< HcalPedestalWidths > produceEffectivePedestalWidths(const HcalPedestalWidthsRcd &rcd)
ParameterDescriptionBase * addVPSet(U const &iLabel, ParameterSetDescription const &validator, std::vector< ParameterSet > const &defaults)
std::unique_ptr< HcalPFCorrs > producePFCorrs(const HcalPFCorrsRcd &rcd)
std::unique_ptr< HcalQIEData > produceQIEData(const HcalQIEDataRcd &rcd)
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
void setHBUpgrade(HcalHardcodeParameters p)
const EventID & eventID() const
Definition: IOVSyncValue.h:40
void testHEPlan1(bool b)
std::unique_ptr< HcalTimeCorrs > produceTimeCorrs(const HcalTimeCorrsRcd &rcd)
void useHFUpgrade(bool b)
std::unique_ptr< HcalLongRecoParams > produceLongRecoParams(const HcalLongRecoParamsRcd &rcd)
std::unique_ptr< HcalPedestals > produceEffectivePedestals(const HcalPedestalsRcd &rcd)
std::unique_ptr< HcalSiPMCharacteristics > produceSiPMCharacteristics(const HcalSiPMCharacteristicsRcd &rcd)
bool valid(const DetId &id) const override
edm::ESGetToken< HBHEDarkening, HBHEDarkeningRecord > hbDarkeningToken_
std::unique_ptr< HcalElectronicsMap > produceElectronicsMap(const HcalElectronicsMapRcd &rcd)
void setHF(HcalHardcodeParameters p)
static const IOVSyncValue & endOfTime()
Definition: IOVSyncValue.cc:82
list status
Definition: mps_update.py:107
bool exists(std::string const &parameterName) const
checks if a parameter exists
std::pair< Time_t, Time_t > ValidityInterval
Definition: Time.h:17
double maxEta
std::unique_ptr< HcalDcsValues > produceDcsValues(const HcalDcsRcd &rcd)
static const int kHcalEtaMask
void setIntervalFor(const edm::eventsetup::EventSetupRecordKey &, const edm::IOVSyncValue &, edm::ValidityInterval &) override
std::unique_ptr< HcalPedestalWidths > producePedestalWidths_(const HcalPedestalWidthsRcd &rcd, const edm::ESGetToken< HcalTopology, HcalRecNumberingRecord > &, bool eff)
tuple result
Definition: mps_fire.py:311
std::unique_ptr< HcalPedestalWidths > producePedestalWidths(const HcalPedestalWidthsRcd &rcd)
HcalTimingParam makeTimingParam(HcalGenericDetId fId) const
HcalRecoParam makeRecoParam(HcalGenericDetId fId) const
std::unique_ptr< HcalPedestals > producePedestals_(const HcalPedestalsRcd &rcd, const edm::ESGetToken< HcalTopology, HcalRecNumberingRecord > &, bool eff)
void makeHardcodeFrontEndMap(HcalFrontEndMap &emap, const std::vector< HcalGenericDetId > &cells) const
virtual bool valid(const HcalZDCDetId &id) const
Definition: ZdcTopology.cc:27
void addDefault(ParameterSetDescription const &psetDescription)
ProductT const & get(ESGetToken< ProductT, DepRecordT > const &iToken) const
std::unique_ptr< HFRecalibration > hf_recalibration
std::unique_ptr< HcalRespCorrs > produceRespCorrs(const HcalRespCorrsRcd &rcd)
HcalQIECoder makeQIECoder(HcalGenericDetId fId) const
std::unique_ptr< HcalDcsMap > makeHardcodeDcsMap() const
std::unique_ptr< HcalLutMetadata > produceLutMetadata(const HcalLutMetadataRcd &rcd)
void setHO(HcalHardcodeParameters p)
constexpr int iphi() const
get the cell iphi
Definition: HcalDetId.h:157
static const IOVSyncValue & beginOfTime()
Definition: IOVSyncValue.cc:88
void setHFUpgrade(HcalHardcodeParameters p)
void setHE(HcalHardcodeParameters p)
void setKillHE(bool b)
std::unique_ptr< HcalFlagHFDigiTimeParams > produceFlagHFDigiTimeParams(const HcalFlagHFDigiTimeParamsRcd &rcd)
std::unique_ptr< HcalFrontEndMap > produceFrontEndMap(const HcalFrontEndMapRcd &rcd)
HcalSubdetector
Definition: HcalAssistant.h:31
void makeHardcodeTPParameters(HcalTPParameters &tppar) const
constexpr int ieta() const
get the cell ieta
Definition: HcalDetId.h:155
std::unique_ptr< HBHERecalibration > hb_recalibration
static const int kHcalDepthMask
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void useHOUpgrade(bool b)
std::unique_ptr< HcalSiPMParameters > produceSiPMParameters(const HcalSiPMParametersRcd &rcd)
std::unique_ptr< HBHERecalibration > he_recalibration
static constexpr uint32_t kHcalEtaMask2
Definition: HcalDetId.h:19
def all
workaround iterator generators for ROOT classes
Definition: cmstools.py:25
static const int kHcalPhiMask
std::unique_ptr< HcalSiPMCharacteristics > makeHardcodeSiPMCharacteristics() const
HcalTPChannelParameter makeHardcodeTPChannelParameter(HcalGenericDetId fId) const
std::unique_ptr< HcalRecoParams > produceRecoParams(const HcalRecoParamsRcd &rcd)
void setHB(HcalHardcodeParameters p)
Log< level::Info, false > LogInfo
caConstants::TupleMultiplicity const CAHitNtupletGeneratorKernelsGPU::HitToTuple const cms::cuda::AtomicPairCounter GPUCACell const *__restrict__ cells
std::unique_ptr< HcalTPParameters > produceTPParameters(const HcalTPParametersRcd &rcd)
HcalGainWidth makeGainWidth(HcalGenericDetId fId) const
HcalGain makeGain(HcalGenericDetId fId, bool fSmear=false) const
std::unique_ptr< HcalElectronicsMap > makeHardcodeMap(const std::vector< HcalGenericDetId > &cells) const
std::unique_ptr< HcalGainWidths > produceGainWidths(const HcalGainWidthsRcd &rcd)
std::unique_ptr< HcalTPChannelParameters > produceTPChannelParameters(const HcalTPChannelParametersRcd &rcd)
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
std::unique_ptr< HcalL1TriggerObjects > produceL1TriggerObjects(const HcalL1TriggerObjectsRcd &rcd)
std::unique_ptr< HcalZSThresholds > produceZSThresholds(const HcalZSThresholdsRcd &rcd)
string section
Definition: vertexPlots.py:496
HcalQIEType makeQIEType(HcalGenericDetId fId) const
std::unique_ptr< HcalZDCLowGainFractions > produceZDCLowGainFractions(const HcalZDCLowGainFractionsRcd &rcd)
void setSiPMCharacteristics(std::vector< edm::ParameterSet > vps)
std::unique_ptr< HcalMCParams > produceMCParams(const HcalMCParamsRcd &rcd)
void useHEUpgrade(bool b)
std::unique_ptr< HcalTimingParams > produceTimingParams(const HcalTimingParamsRcd &rcd)
std::unique_ptr< HcalQIETypes > produceQIETypes(const HcalQIETypesRcd &rcd)
int getLayersInDepth(int ieta, int depth, const HcalTopology *topo)
std::unique_ptr< HcalChannelQuality > produceChannelQuality(const HcalChannelQualityRcd &rcd)
HcalPedestal makePedestal(HcalGenericDetId fId, bool fSmear, bool eff, const HcalTopology *topo, double intlumi)
std::string fullPath() const
Definition: FileInPath.cc:161
const Timestamp & time() const
Definition: IOVSyncValue.h:42
tuple cout
Definition: gather_cfg.py:144
edm::ESGetToken< HBHEDarkening, HBHEDarkeningRecord > heDarkeningToken_
HcalSiPMParameter makeHardcodeSiPMParameter(HcalGenericDetId fId, const HcalTopology *topo, double intlumi)
constexpr int depth() const
get the tower depth
Definition: HcalDetId.h:164
void setHEUpgrade(HcalHardcodeParameters p)
std::unique_ptr< HcalDcsMap > produceDcsMap(const HcalDcsMapRcd &rcd)
TimeValue_t value() const
Definition: Timestamp.h:45
HcalZSThreshold makeZSThreshold(HcalGenericDetId fId) const
std::unique_ptr< HcalLUTCorrs > produceLUTCorrs(const HcalLUTCorrsRcd &rcd)
std::unordered_map< int, edm::ESGetToken< HcalTopology, HcalRecNumberingRecord > > topoTokens_
void testHFQIE10(bool b)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
HcalPedestalWidth makePedestalWidth(HcalGenericDetId fId, bool eff, const HcalTopology *topo, double intlumi)
std::unique_ptr< HcalValidationCorrs > produceValidationCorrs(const HcalValidationCorrsRcd &rcd)
bool validHT(const HcalTrigTowerDetId &id) const