CMS 3D CMS Logo

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 
17 
20 
24 
26 
27 //#define DebugLog
28 
29 // class decleration
30 //
31 
32 using namespace cms;
33 
34 namespace {
35 
36  std::vector<HcalGenericDetId> allCells (const HcalTopology& hcaltopology, bool killHE = false) {
37  static std::vector<HcalGenericDetId> result;
38  int maxDepthHB=hcaltopology.maxDepthHB();
39  int maxDepthHE=hcaltopology.maxDepthHE();
40 
41 #ifdef DebugLog
42  std::cout << std::endl << "HcalHardcodeCalibrations: maxDepthHB, maxDepthHE = "
43  << maxDepthHB << ", " << maxDepthHE << std::endl;
44 #endif
45 
46  if (result.empty()) {
47  for (int eta = -HcalDetId::kHcalEtaMask2;
49  for (int phi = 0; phi <= HcalDetId::kHcalPhiMask2; phi++) {
50  for (int depth = 1; depth < maxDepthHB + maxDepthHE; depth++) {
51  for (int det = 1; det <= HcalForward; det++) {
52  HcalDetId cell ((HcalSubdetector) det, eta, phi, depth);
53  if( killHE && HcalEndcap == cell.subdetId() ) continue;
54  if (hcaltopology.valid(cell)) {
55  result.push_back (cell);
56 #ifdef DebugLog
57  std::cout << " HcalHardcodedCalibrations: det|eta|phi|depth = "
58  << det << "|" << eta << "|" << phi << "|"
59  << depth << std::endl;
60 #endif
61  }
62  }
63  }
64  }
65  }
66  ZdcTopology zdctopology;
67  HcalZDCDetId zcell;
69  for(int depth= 1; depth < 6; depth++){
70  zcell = HcalZDCDetId(section, true, depth);
71  if(zdctopology.valid(zcell)) result.push_back(zcell);
72  zcell = HcalZDCDetId(section, false, depth);
73  if(zdctopology.valid(zcell)) 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)) result.push_back(zcell);
79  zcell = HcalZDCDetId(section, false, depth);
80  if(zdctopology.valid(zcell)) result.push_back(zcell);
81  }
82  section = HcalZDCDetId::LUM;
83  for(int depth= 1; depth < 3; depth++){
84  zcell = HcalZDCDetId(section, true, depth);
85  if(zdctopology.valid(zcell)) result.push_back(zcell);
86  zcell = HcalZDCDetId(section, false, depth);
87  if(zdctopology.valid(zcell)) result.push_back(zcell);
88  }
89  section = HcalZDCDetId::RPD;
90  for(int depth= 1; depth < 17; depth++){
91  zcell = HcalZDCDetId(section, true, depth);
92  if(zdctopology.valid(zcell)) result.push_back(zcell);
93  zcell = HcalZDCDetId(section, false, depth);
94  if(zdctopology.valid(zcell)) result.push_back(zcell);
95  }
96 
97  // HcalGenTriggerTower (HcalGenericSubdetector = 5)
98  // NASTY HACK !!!
99  // - As no valid(cell) check found for HcalTrigTowerDetId
100  // to create HT cells (ieta=1-28, iphi=1-72)&(ieta=29-32, iphi=1,5,... 69)
101 
102  for (int vers=0; vers<=HcalTrigTowerDetId::kHcalVersMask; ++vers) {
106  for (int phi = 1; phi <= HcalTrigTowerDetId::kHcalPhiMask; phi++) {
107  HcalTrigTowerDetId cell(eta, phi,depth,vers);
108  if (hcaltopology.validHT(cell)) {
109  result.push_back (cell);
110 #ifdef DebugLog
111  std::cout << " HcalHardcodedCalibrations: eta|phi|depth|vers = "
112  << eta << "|" << phi << "|" << depth << "|" << vers
113  << std::endl;
114 #endif
115  }
116  }
117  }
118  }
119  }
120  }
121  return result;
122  }
123 
124 }
125 
127  hb_recalibration(nullptr), he_recalibration(nullptr), hf_recalibration(nullptr), setHEdsegm(false), setHBdsegm(false)
128 {
129  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::HcalHardcodeCalibrations->...";
130 
131  if ( iConfig.exists("GainWidthsForTrigPrims") )
132  switchGainWidthsForTrigPrims = iConfig.getParameter<bool>("GainWidthsForTrigPrims");
133  else switchGainWidthsForTrigPrims = false;
134 
135  //DB helper preparation
143  dbHardcode.useHBUpgrade(iConfig.getParameter<bool>("useHBUpgrade"));
144  dbHardcode.useHEUpgrade(iConfig.getParameter<bool>("useHEUpgrade"));
145  dbHardcode.useHFUpgrade(iConfig.getParameter<bool>("useHFUpgrade"));
146  dbHardcode.useHOUpgrade(iConfig.getParameter<bool>("useHOUpgrade"));
147  dbHardcode.testHFQIE10(iConfig.getParameter<bool>("testHFQIE10"));
148  dbHardcode.testHEPlan1(iConfig.getParameter<bool>("testHEPlan1"));
149  dbHardcode.setKillHE(iConfig.getParameter<bool>("killHE"));
150  dbHardcode.setSiPMCharacteristics(iConfig.getParameter<std::vector<edm::ParameterSet>>("SiPMCharacteristics"));
151 
152  useLayer0Weight = iConfig.getParameter<bool>("useLayer0Weight");
153  // HB, HE, HF recalibration preparation
154  iLumi=iConfig.getParameter<double>("iLumi");
155 
156  if( iLumi > 0.0 ) {
157  bool hb_recalib = iConfig.getParameter<bool>("HBRecalibration");
158  bool he_recalib = iConfig.getParameter<bool>("HERecalibration");
159  bool hf_recalib = iConfig.getParameter<bool>("HFRecalibration");
160  if(hb_recalib) {
161  hb_recalibration.reset(
162  new HBHERecalibration(
163  iLumi,
164  iConfig.getParameter<double>("HBreCalibCutoff"),
165  iConfig.getParameter<edm::FileInPath>("HBmeanenergies").fullPath()
166  )
167  );
168  }
169  if(he_recalib) {
170  he_recalibration.reset(
171  new HBHERecalibration(
172  iLumi,
173  iConfig.getParameter<double>("HEreCalibCutoff"),
174  iConfig.getParameter<edm::FileInPath>("HEmeanenergies").fullPath()
175  )
176  );
177  }
178  if(hf_recalib && !iConfig.getParameter<edm::ParameterSet>("HFRecalParameterBlock").empty()) hf_recalibration.reset(new HFRecalibration(iConfig.getParameter<edm::ParameterSet>("HFRecalParameterBlock")));
179 
180 #ifdef DebugLog
181  std::cout << " HcalHardcodeCalibrations: iLumi = " << iLumi << std::endl;
182 #endif
183  }
184 
185  std::vector <std::string> toGet = iConfig.getUntrackedParameter <std::vector <std::string> > ("toGet");
186  for(std::vector <std::string>::iterator objectName = toGet.begin(); objectName != toGet.end(); ++objectName ) {
187  bool all = *objectName == "all";
188 #ifdef DebugLog
189  std::cout << "Load parameters for " << *objectName << std::endl;
190 #endif
191  if ((*objectName == "Pedestals") || all) {
193  findingRecord <HcalPedestalsRcd> ();
194  }
195  if ((*objectName == "PedestalWidths") || all) {
197  findingRecord <HcalPedestalWidthsRcd> ();
198  }
199  if ((*objectName == "Gains") || all) {
201  findingRecord <HcalGainsRcd> ();
202  }
203  if ((*objectName == "GainWidths") || all) {
205  findingRecord <HcalGainWidthsRcd> ();
206  }
207  if ((*objectName == "QIEData") || all) {
209  findingRecord <HcalQIEDataRcd> ();
210  }
211  if ((*objectName == "QIETypes") || all) {
213  findingRecord <HcalQIETypesRcd> ();
214  }
215  if ((*objectName == "ChannelQuality") || (*objectName == "channelQuality") || all) {
217  findingRecord <HcalChannelQualityRcd> ();
218  }
219  if ((*objectName == "ElectronicsMap") || (*objectName == "electronicsMap") || all) {
221  findingRecord <HcalElectronicsMapRcd> ();
222  }
223  if ((*objectName == "ZSThresholds") || (*objectName == "zsThresholds") || all) {
225  findingRecord <HcalZSThresholdsRcd> ();
226  }
227  if ((*objectName == "RespCorrs") || (*objectName == "ResponseCorrection") || all) {
229  findingRecord <HcalRespCorrsRcd> ();
230  }
231  if ((*objectName == "LUTCorrs") || (*objectName == "LUTCorrection") || all) {
233  findingRecord <HcalLUTCorrsRcd> ();
234  }
235  if ((*objectName == "PFCorrs") || (*objectName == "PFCorrection") || all) {
237  findingRecord <HcalPFCorrsRcd> ();
238  }
239  if ((*objectName == "TimeCorrs") || (*objectName == "TimeCorrection") || all) {
241  findingRecord <HcalTimeCorrsRcd> ();
242  }
243  if ((*objectName == "L1TriggerObjects") || (*objectName == "L1Trigger") || all) {
245  findingRecord <HcalL1TriggerObjectsRcd> ();
246  }
247  if ((*objectName == "ValidationCorrs") || (*objectName == "ValidationCorrection") || all) {
249  findingRecord <HcalValidationCorrsRcd> ();
250  }
251  if ((*objectName == "LutMetadata") || (*objectName == "lutMetadata") || all) {
253  findingRecord <HcalLutMetadataRcd> ();
254  }
255  if ((*objectName == "DcsValues") || all) {
257  findingRecord <HcalDcsRcd> ();
258  }
259  if ((*objectName == "DcsMap") || (*objectName == "dcsMap") || all) {
261  findingRecord <HcalDcsMapRcd> ();
262  }
263  if ((*objectName == "RecoParams") || all) {
265  findingRecord <HcalRecoParamsRcd> ();
266  }
267  if ((*objectName == "LongRecoParams") || all) {
269  findingRecord <HcalLongRecoParamsRcd> ();
270  }
271  if ((*objectName == "ZDCLowGainFractions") || all) {
273  findingRecord <HcalZDCLowGainFractionsRcd> ();
274  }
275  if ((*objectName == "MCParams") || all) {
277  findingRecord <HcalMCParamsRcd> ();
278  }
279  if ((*objectName == "FlagHFDigiTimeParams") || all) {
281  findingRecord <HcalFlagHFDigiTimeParamsRcd> ();
282  }
283  if ((*objectName == "FrontEndMap") || (*objectName == "frontEndMap") || all) {
285  findingRecord <HcalFrontEndMapRcd> ();
286  }
287  if ((*objectName == "SiPMParameters") || all) {
289  findingRecord <HcalSiPMParametersRcd> ();
290  }
291  if ((*objectName == "SiPMCharacteristics") || all) {
293  findingRecord <HcalSiPMCharacteristicsRcd> ();
294  }
295  if ((*objectName == "TPChannelParameters") || all) {
297  findingRecord <HcalTPChannelParametersRcd> ();
298  }
299  if ((*objectName == "TPParameters") || all) {
301  findingRecord <HcalTPParametersRcd> ();
302  }
303  }
304 }
305 
306 
308 {
309 }
310 
311 //
312 // member functions
313 //
314 void
316  std::string record = iKey.name ();
317  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::setIntervalFor-> key: " << record << " time: " << iTime.eventID() << '/' << iTime.time ().value ();
319 }
320 
321 std::unique_ptr<HcalPedestals> HcalHardcodeCalibrations::producePedestals (const HcalPedestalsRcd& rec) {
322  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::producePedestals-> ...";
324  rec.getRecord<HcalRecNumberingRecord>().get(htopo);
325  const HcalTopology* topo=&(*htopo);
326 
327  auto result = std::make_unique<HcalPedestals>(topo,false);
328  std::vector <HcalGenericDetId> cells = allCells(*topo, dbHardcode.killHE());
329  for (std::vector <HcalGenericDetId>::const_iterator cell = cells.begin (); cell != cells.end (); ++cell) {
330  HcalPedestal item = dbHardcode.makePedestal (*cell, false);
331  result->addValues(item);
332  }
333  return result;
334 }
335 
336 std::unique_ptr<HcalPedestalWidths> HcalHardcodeCalibrations::producePedestalWidths (const HcalPedestalWidthsRcd& rec) {
337  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::producePedestalWidths-> ...";
339  rec.getRecord<HcalRecNumberingRecord>().get(htopo);
340  const HcalTopology* topo=&(*htopo);
341 
342  auto result = std::make_unique<HcalPedestalWidths>(topo,false);
343  std::vector <HcalGenericDetId> cells = allCells(*htopo, dbHardcode.killHE());
344  for (std::vector <HcalGenericDetId>::const_iterator cell = cells.begin (); cell != cells.end (); ++cell) {
346  result->addValues(item);
347  }
348  return result;
349 }
350 
351 std::unique_ptr<HcalGains> HcalHardcodeCalibrations::produceGains (const HcalGainsRcd& rec) {
352  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceGains-> ...";
354  rec.getRecord<HcalRecNumberingRecord>().get(htopo);
355  const HcalTopology* topo=&(*htopo);
356 
357  auto result = std::make_unique<HcalGains>(topo);
358  std::vector <HcalGenericDetId> cells = allCells(*topo, dbHardcode.killHE());
359  for (std::vector <HcalGenericDetId>::const_iterator cell = cells.begin (); cell != cells.end (); ++cell) {
360  HcalGain item = dbHardcode.makeGain (*cell);
361  result->addValues(item);
362  }
363  return result;
364 }
365 
366 std::unique_ptr<HcalGainWidths> HcalHardcodeCalibrations::produceGainWidths (const HcalGainWidthsRcd& rec) {
367  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceGainWidths-> ...";
369  rec.getRecord<HcalRecNumberingRecord>().get(htopo);
370  const HcalTopology* topo=&(*htopo);
371 
372  auto result = std::make_unique<HcalGainWidths>(topo);
373  std::vector <HcalGenericDetId> cells = allCells(*topo, dbHardcode.killHE());
374  for (std::vector <HcalGenericDetId>::const_iterator cell = cells.begin (); cell != cells.end (); ++cell) {
375 
376  // for Upgrade - include TrigPrims, for regular case - only HcalDetId
378  HcalGainWidth item = dbHardcode.makeGainWidth (*cell);
379  result->addValues(item);
380  } else if (!cell->isHcalTrigTowerDetId()) {
381  HcalGainWidth item = dbHardcode.makeGainWidth (*cell);
382  result->addValues(item);
383  }
384  }
385  return result;
386 }
387 
388 std::unique_ptr<HcalQIEData> HcalHardcodeCalibrations::produceQIEData (const HcalQIEDataRcd& rcd) {
389  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceQIEData-> ...";
390 
391  /*
392  std::cout << std::endl << ">>> HcalHardcodeCalibrations::produceQIEData"
393  << std::endl;
394  */
395 
397  rcd.getRecord<HcalRecNumberingRecord>().get(htopo);
398  const HcalTopology* topo=&(*htopo);
399 
400  auto result = std::make_unique<HcalQIEData>(topo);
401  std::vector <HcalGenericDetId> cells = allCells(*topo, dbHardcode.killHE());
402  for (std::vector <HcalGenericDetId>::const_iterator cell = cells.begin (); cell != cells.end (); ++cell) {
403  HcalQIECoder coder = dbHardcode.makeQIECoder (*cell);
404  result->addCoder (coder);
405  }
406  return result;
407 }
408 
409 std::unique_ptr<HcalQIETypes> HcalHardcodeCalibrations::produceQIETypes (const HcalQIETypesRcd& rcd) {
410  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceQIETypes-> ...";
412  rcd.getRecord<HcalRecNumberingRecord>().get(htopo);
413  const HcalTopology* topo=&(*htopo);
414 
415  auto result = std::make_unique<HcalQIETypes>(topo);
416  std::vector <HcalGenericDetId> cells = allCells(*topo, dbHardcode.killHE());
417  for (std::vector <HcalGenericDetId>::const_iterator cell = cells.begin (); cell != cells.end (); ++cell) {
418  HcalQIEType item = dbHardcode.makeQIEType(*cell);
419  result->addValues(item);
420  }
421  return result;
422 }
423 
424 std::unique_ptr<HcalChannelQuality> HcalHardcodeCalibrations::produceChannelQuality (const HcalChannelQualityRcd& rcd) {
425  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceChannelQuality-> ...";
427  rcd.getRecord<HcalRecNumberingRecord>().get(htopo);
428  const HcalTopology* topo=&(*htopo);
429 
430  auto result = std::make_unique<HcalChannelQuality>(topo);
431  std::vector <HcalGenericDetId> cells = allCells(*topo, dbHardcode.killHE());
432  for (std::vector <HcalGenericDetId>::const_iterator cell = cells.begin (); cell != cells.end (); ++cell) {
433  HcalChannelStatus item(cell->rawId(),0);
434  result->addValues(item);
435  }
436  return result;
437 }
438 
439 
440 std::unique_ptr<HcalRespCorrs> HcalHardcodeCalibrations::produceRespCorrs (const HcalRespCorrsRcd& rcd) {
441  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceRespCorrs-> ...";
443  rcd.getRecord<HcalRecNumberingRecord>().get(htopo);
444  const HcalTopology* topo=&(*htopo);
445 
446  //set depth segmentation for HB/HE recalib - only happens once
448  std::vector<std::vector<int>> m_segmentation;
449  int maxEta = topo->lastHERing();
450  m_segmentation.resize(maxEta);
451  for (int i = 0; i < maxEta; i++) {
452  topo->getDepthSegmentation(i+1,m_segmentation[i]);
453  }
456  rcd.getRecord<HBHEDarkeningRecord>().get("HE",hdark);
457  he_recalibration->setup(m_segmentation,&*hdark);
458  setHEdsegm = true;
459  }
462  rcd.getRecord<HBHEDarkeningRecord>().get("HB",hdark);
463  hb_recalibration->setup(m_segmentation,&*hdark);
464  setHBdsegm = true;
465  }
466  }
467 
468  auto result = std::make_unique<HcalRespCorrs>(topo);
469  std::vector <HcalGenericDetId> cells = allCells(*topo, dbHardcode.killHE());
470  for (const auto& cell : cells) {
471 
472  double corr = 1.0;
473 
474  //check for layer 0 reweighting: when depth 1 has only one layer, it is layer 0
475  if( useLayer0Weight &&
476  ((cell.genericSubdet() == HcalGenericDetId::HcalGenEndcap) || (cell.genericSubdet() == HcalGenericDetId::HcalGenBarrel)) &&
477  (HcalDetId(cell).depth()==1 && dbHardcode.getLayersInDepth(HcalDetId(cell).ietaAbs(),HcalDetId(cell).depth(),topo)==1) )
478  {
479  //layer 0 is thicker than other layers (9mm vs 3.7mm) and brighter (Bicron vs SCSN81)
480  //in Run1/Run2 (pre-2017 for HE), ODU for layer 0 had neutral density filter attached
481  //NDF was simulated as weight of 0.5 applied to Geant energy deposits
482  //for Phase1, NDF is removed - simulated as weight of 1.2 applied to Geant energy deposits
483  //to maintain RECO calibrations, move the layer 0 energy scale back to its previous state using respcorrs
484  corr = 0.5/1.2;
485  }
486 
487  if ((hb_recalibration != nullptr ) && (cell.genericSubdet() == HcalGenericDetId::HcalGenBarrel)) {
488  int depth_ = HcalDetId(cell).depth();
489  int ieta_ = HcalDetId(cell).ieta();
490  corr *= hb_recalibration->getCorr(ieta_, depth_);
491 #ifdef DebugLog
492  std::cout << "HB ieta, depth = " << ieta_ << ", " << depth_ << " corr = " << corr << std::endl;
493 #endif
494  }
495  else if ((he_recalibration != nullptr ) && (cell.genericSubdet() == HcalGenericDetId::HcalGenEndcap)) {
496  int depth_ = HcalDetId(cell).depth();
497  int ieta_ = HcalDetId(cell).ieta();
498  corr *= he_recalibration->getCorr(ieta_, depth_);
499 #ifdef DebugLog
500  std::cout << "HE ieta, depth = " << ieta_ << ", " << depth_ << " corr = " << corr << std::endl;
501 #endif
502  }
503  else if ((hf_recalibration != nullptr ) && (cell.genericSubdet() == HcalGenericDetId::HcalGenForward)) {
504  int depth_ = HcalDetId(cell).depth();
505  int ieta_ = HcalDetId(cell).ieta();
506  corr = hf_recalibration->getCorr(ieta_, depth_, iLumi);
507 #ifdef DebugLog
508  std::cout << "HF ieta, depth = " << ieta_ << ", " << depth_ << " corr = " << corr << std::endl;
509 #endif
510  }
511 
512  HcalRespCorr item(cell.rawId(),corr);
513  result->addValues(item);
514  }
515  return result;
516 }
517 
518 std::unique_ptr<HcalLUTCorrs> HcalHardcodeCalibrations::produceLUTCorrs (const HcalLUTCorrsRcd& rcd) {
519  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceLUTCorrs-> ...";
521  rcd.getRecord<HcalRecNumberingRecord>().get(htopo);
522  const HcalTopology* topo=&(*htopo);
523 
524  auto result = std::make_unique<HcalLUTCorrs>(topo);
525  std::vector <HcalGenericDetId> cells = allCells(*topo, dbHardcode.killHE());
526  for (std::vector <HcalGenericDetId>::const_iterator cell = cells.begin (); cell != cells.end (); ++cell) {
527  HcalLUTCorr item(cell->rawId(),1.0);
528  result->addValues(item);
529  }
530  return result;
531 }
532 
533 std::unique_ptr<HcalPFCorrs> HcalHardcodeCalibrations::producePFCorrs (const HcalPFCorrsRcd& rcd) {
534  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::producePFCorrs-> ...";
536  rcd.getRecord<HcalRecNumberingRecord>().get(htopo);
537  const HcalTopology* topo=&(*htopo);
538 
539  auto result = std::make_unique<HcalPFCorrs>(topo);
540  std::vector <HcalGenericDetId> cells = allCells(*topo, dbHardcode.killHE());
541  for (std::vector <HcalGenericDetId>::const_iterator cell = cells.begin (); cell != cells.end (); ++cell) {
542  HcalPFCorr item(cell->rawId(),1.0);
543  result->addValues(item);
544  }
545  return result;
546 }
547 
548 std::unique_ptr<HcalTimeCorrs> HcalHardcodeCalibrations::produceTimeCorrs (const HcalTimeCorrsRcd& rcd) {
549  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceTimeCorrs-> ...";
551  rcd.getRecord<HcalRecNumberingRecord>().get(htopo);
552  const HcalTopology* topo=&(*htopo);
553 
554  auto result = std::make_unique<HcalTimeCorrs>(topo);
555  std::vector <HcalGenericDetId> cells = allCells(*topo, dbHardcode.killHE());
556  for (std::vector <HcalGenericDetId>::const_iterator cell = cells.begin (); cell != cells.end (); ++cell) {
557  HcalTimeCorr item(cell->rawId(),0.0);
558  result->addValues(item);
559  }
560  return result;
561 }
562 
563 std::unique_ptr<HcalZSThresholds> HcalHardcodeCalibrations::produceZSThresholds (const HcalZSThresholdsRcd& rcd) {
564  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceZSThresholds-> ...";
566  rcd.getRecord<HcalRecNumberingRecord>().get(htopo);
567  const HcalTopology* topo=&(*htopo);
568 
569  auto result = std::make_unique<HcalZSThresholds>(topo);
570  std::vector <HcalGenericDetId> cells = allCells(*topo, dbHardcode.killHE());
571  for (std::vector <HcalGenericDetId>::const_iterator cell = cells.begin (); cell != cells.end (); ++cell) {
572  HcalZSThreshold item(cell->rawId(),0);
573  result->addValues(item);
574  }
575  return result;
576 }
577 
578 
579 std::unique_ptr<HcalL1TriggerObjects> HcalHardcodeCalibrations::produceL1TriggerObjects (const HcalL1TriggerObjectsRcd& rcd) {
580  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceL1TriggerObjects-> ...";
582  rcd.getRecord<HcalRecNumberingRecord>().get(htopo);
583  const HcalTopology* topo=&(*htopo);
584 
585  auto result = std::make_unique<HcalL1TriggerObjects>(topo);
586  std::vector <HcalGenericDetId> cells = allCells(*topo, dbHardcode.killHE());
587  for (std::vector <HcalGenericDetId>::const_iterator cell = cells.begin (); cell != cells.end (); ++cell) {
588  HcalL1TriggerObject item(cell->rawId(),0., 1., 0);
589  result->addValues(item);
590  }
591  // add tag and algo values
592  result->setTagString("hardcoded");
593  result->setAlgoString("hardcoded");
594  return result;
595 }
596 
597 
598 std::unique_ptr<HcalElectronicsMap> HcalHardcodeCalibrations::produceElectronicsMap (const HcalElectronicsMapRcd& rcd) {
599  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceElectronicsMap-> ...";
601  rcd.getRecord<HcalRecNumberingRecord>().get(htopo);
602  const HcalTopology* topo=&(*htopo);
603 
604  std::vector <HcalGenericDetId> cells = allCells(*topo, dbHardcode.killHE());
605  return dbHardcode.makeHardcodeMap(cells);
606 }
607 
608 std::unique_ptr<HcalValidationCorrs> HcalHardcodeCalibrations::produceValidationCorrs (const HcalValidationCorrsRcd& rcd) {
609  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceValidationCorrs-> ...";
611  rcd.getRecord<HcalRecNumberingRecord>().get(htopo);
612  const HcalTopology* topo=&(*htopo);
613 
614  auto result = std::make_unique<HcalValidationCorrs>(topo);
615  std::vector <HcalGenericDetId> cells = allCells(*topo, dbHardcode.killHE());
616  for (std::vector <HcalGenericDetId>::const_iterator cell = cells.begin (); cell != cells.end (); ++cell) {
617  HcalValidationCorr item(cell->rawId(),1.0);
618  result->addValues(item);
619  }
620  return result;
621 }
622 
623 std::unique_ptr<HcalLutMetadata> HcalHardcodeCalibrations::produceLutMetadata (const HcalLutMetadataRcd& rcd) {
624  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceLutMetadata-> ...";
626  rcd.getRecord<HcalRecNumberingRecord>().get(htopo);
627  const HcalTopology* topo=&(*htopo);
628 
629  auto result = std::make_unique<HcalLutMetadata>(topo);
630 
631  result->setRctLsb( 0.5 );
632  result->setNominalGain(0.177); // for HBHE SiPMs
633 
634  std::vector <HcalGenericDetId> cells = allCells(*topo,dbHardcode.killHE());
635  for (const auto& cell: cells) {
636  float rcalib = 1.;
637  int granularity = 1;
638  int threshold = 1;
639 
641  // Use values from 2016 as starting conditions for 2017+. These are
642  // averaged over the subdetectors, with the last two HE towers split
643  // off due to diverging correction values.
644  switch (cell.genericSubdet()) {
646  rcalib = 1.128;
647  break;
649  {
650  HcalDetId id(cell);
651  if (id.ietaAbs() >= 28)
652  rcalib = 1.188;
653  else
654  rcalib = 1.117;
655  // granularity is equal to 1 only for |ieta| == 17
656  if(id.ietaAbs() >= 18 && id.ietaAbs() <= 26) granularity = 2;
657  else if(id.ietaAbs() >=27 && id.ietaAbs() <= 29) granularity = 5;
658  }
659  break;
661  rcalib = 1.02;
662  break;
663  default:
664  break;
665  }
666 
667  if (cell.isHcalTrigTowerDetId()) {
668  rcalib = 0.;
669  HcalTrigTowerDetId id(cell);
670  if(id.ietaAbs() <= 17) {
671  granularity = 1;
672  threshold = 4;
673  }
674  else if(id.ietaAbs() >= 18 && id.ietaAbs() <= 26) {
675  granularity = 2;
676  threshold = 2;
677  }
678  else if(id.ietaAbs() >= 27 && id.ietaAbs() <= 28) {
679  granularity = 5;
680  threshold = 1;
681  }
682  else {
683  granularity = 0;
684  threshold = 0;
685  }
686  }
687  }
688 
689  HcalLutMetadatum item(cell.rawId(), rcalib, granularity, threshold);
690  result->addValues(item);
691  }
692 
693  return result;
694 }
695 
696 std::unique_ptr<HcalDcsValues> HcalHardcodeCalibrations::produceDcsValues (const HcalDcsRcd& rcd) {
697  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceDcsValues-> ...";
698  auto result = std::make_unique<HcalDcsValues>();
699  return result;
700 }
701 
702 std::unique_ptr<HcalDcsMap> HcalHardcodeCalibrations::produceDcsMap (const HcalDcsMapRcd& rcd) {
703  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceDcsMap-> ...";
704 
706 }
707 
708 std::unique_ptr<HcalRecoParams> HcalHardcodeCalibrations::produceRecoParams (const HcalRecoParamsRcd& rec) {
709  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceRecoParams-> ...";
711  rec.getRecord<HcalRecNumberingRecord>().get(htopo);
712  const HcalTopology* topo=&(*htopo);
713 
714  auto result = std::make_unique<HcalRecoParams>(topo);
715  std::vector <HcalGenericDetId> cells = allCells(*topo, dbHardcode.killHE());
716  for (std::vector <HcalGenericDetId>::const_iterator cell = cells.begin (); cell != cells.end (); ++cell) {
717  HcalRecoParam item = dbHardcode.makeRecoParam (*cell);
718  result->addValues(item);
719  }
720  return result;
721 }
722 
723 std::unique_ptr<HcalTimingParams> HcalHardcodeCalibrations::produceTimingParams (const HcalTimingParamsRcd& rec) {
724  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceTimingParams-> ...";
726  rec.getRecord<HcalRecNumberingRecord>().get(htopo);
727  const HcalTopology* topo=&(*htopo);
728 
729  auto result = std::make_unique<HcalTimingParams>(topo);
730  std::vector <HcalGenericDetId> cells = allCells(*topo, dbHardcode.killHE());
731  for (std::vector <HcalGenericDetId>::const_iterator cell = cells.begin (); cell != cells.end (); ++cell) {
733  result->addValues(item);
734  }
735  return result;
736 }
737 
738 std::unique_ptr<HcalLongRecoParams> HcalHardcodeCalibrations::produceLongRecoParams (const HcalLongRecoParamsRcd& rec) {
739  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceLongRecoParams-> ...";
741  rec.getRecord<HcalRecNumberingRecord>().get(htopo);
742  const HcalTopology* topo=&(*htopo);
743 
744  auto result = std::make_unique<HcalLongRecoParams>(topo);
745  std::vector <HcalGenericDetId> cells = allCells(*topo, dbHardcode.killHE());
746  std::vector <unsigned int> mSignal;
747  mSignal.push_back(4);
748  mSignal.push_back(5);
749  mSignal.push_back(6);
750  std::vector <unsigned int> mNoise;
751  mNoise.push_back(1);
752  mNoise.push_back(2);
753  mNoise.push_back(3);
754  for (std::vector <HcalGenericDetId>::const_iterator cell = cells.begin (); cell != cells.end (); ++cell) {
755  if (cell->isHcalZDCDetId())
756  {
757  HcalLongRecoParam item(cell->rawId(),mSignal,mNoise);
758  result->addValues(item);
759  }
760  }
761  return result;
762 }
763 
764 std::unique_ptr<HcalZDCLowGainFractions> HcalHardcodeCalibrations::produceZDCLowGainFractions (const HcalZDCLowGainFractionsRcd& rec) {
765  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceZDCLowGainFractions-> ...";
767  rec.getRecord<HcalRecNumberingRecord>().get(htopo);
768  const HcalTopology* topo=&(*htopo);
769 
770  auto result = std::make_unique<HcalZDCLowGainFractions>(topo);
771  std::vector <HcalGenericDetId> cells = allCells(*topo, dbHardcode.killHE());
772  for (std::vector <HcalGenericDetId>::const_iterator cell = cells.begin (); cell != cells.end (); ++cell) {
773  HcalZDCLowGainFraction item(cell->rawId(),0.0);
774  result->addValues(item);
775  }
776  return result;
777 }
778 
779 std::unique_ptr<HcalMCParams> HcalHardcodeCalibrations::produceMCParams (const HcalMCParamsRcd& rec) {
780 
781 
782  // std::cout << std::endl << " .... HcalHardcodeCalibrations::produceMCParams ->"<< std::endl;
783 
784  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceMCParams-> ...";
786  rec.getRecord<HcalRecNumberingRecord>().get(htopo);
787  const HcalTopology* topo=&(*htopo);
788  auto result = std::make_unique<HcalMCParams>(topo);
789  std::vector <HcalGenericDetId> cells = allCells(*topo, dbHardcode.killHE());
790  for (std::vector <HcalGenericDetId>::const_iterator cell = cells.begin (); cell != cells.end (); ++cell) {
791 
792  // HcalMCParam item(cell->rawId(),0);
793  HcalMCParam item = dbHardcode.makeMCParam (*cell);
794  result->addValues(item);
795  }
796  return result;
797 }
798 
799 
800 std::unique_ptr<HcalFlagHFDigiTimeParams> HcalHardcodeCalibrations::produceFlagHFDigiTimeParams (const HcalFlagHFDigiTimeParamsRcd& rec) {
801  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceFlagHFDigiTimeParams-> ...";
803  rec.getRecord<HcalRecNumberingRecord>().get(htopo);
804  const HcalTopology* topo=&(*htopo);
805 
806  auto result = std::make_unique<HcalFlagHFDigiTimeParams>(topo);
807  std::vector <HcalGenericDetId> cells = allCells(*topo, dbHardcode.killHE());
808 
809  std::vector<double> coef;
810  coef.push_back(0.93);
811  coef.push_back(-0.38275);
812  coef.push_back(-0.012667);
813 
814  for (std::vector <HcalGenericDetId>::const_iterator cell = cells.begin (); cell != cells.end (); ++cell) {
815  HcalFlagHFDigiTimeParam item(cell->rawId(),
816  1, //firstsample
817  3, // samplestoadd
818  2, //expectedpeak
819  40., // min energy threshold
820  coef // coefficients
821  );
822  result->addValues(item);
823  }
824  return result;
825 }
826 
827 
828 std::unique_ptr<HcalFrontEndMap> HcalHardcodeCalibrations::produceFrontEndMap (const HcalFrontEndMapRcd& rec) {
829  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceFrontEndMap-> ...";
831  rec.getRecord<HcalRecNumberingRecord>().get(htopo);
832  const HcalTopology* topo=&(*htopo);
833  std::vector <HcalGenericDetId> cells = allCells(*topo, dbHardcode.killHE());
834 
835  return dbHardcode.makeHardcodeFrontEndMap(cells);
836 }
837 
838 
839 std::unique_ptr<HcalSiPMParameters> HcalHardcodeCalibrations::produceSiPMParameters (const HcalSiPMParametersRcd& rec) {
840  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceSiPMParameters-> ...";
842  rec.getRecord<HcalRecNumberingRecord>().get(htopo);
843  const HcalTopology* topo=&(*htopo);
844 
845  auto result = std::make_unique<HcalSiPMParameters>(topo);
846  std::vector <HcalGenericDetId> cells = allCells(*htopo, dbHardcode.killHE());
847  for (std::vector <HcalGenericDetId>::const_iterator cell = cells.begin (); cell != cells.end (); ++cell) {
849  result->addValues(item);
850  }
851  return result;
852 }
853 
854 std::unique_ptr<HcalSiPMCharacteristics> HcalHardcodeCalibrations::produceSiPMCharacteristics (const HcalSiPMCharacteristicsRcd& rcd) {
855  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceSiPMCharacteristics-> ...";
856 
858 }
859 
860 
861 std::unique_ptr<HcalTPChannelParameters> HcalHardcodeCalibrations::produceTPChannelParameters (const HcalTPChannelParametersRcd& rec) {
862  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceTPChannelParameters-> ...";
864  rec.getRecord<HcalRecNumberingRecord>().get(htopo);
865  const HcalTopology* topo=&(*htopo);
866 
867  auto result = std::make_unique<HcalTPChannelParameters>(topo);
868  std::vector <HcalGenericDetId> cells = allCells(*htopo, dbHardcode.killHE());
869  for (std::vector <HcalGenericDetId>::const_iterator cell = cells.begin (); cell != cells.end (); ++cell) {
871  result->addValues(item);
872  }
873  return result;
874 }
875 
876 std::unique_ptr<HcalTPParameters> HcalHardcodeCalibrations::produceTPParameters (const HcalTPParametersRcd& rcd) {
877  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceTPParameters-> ...";
878 
879  auto result = std::make_unique<HcalTPParameters>();
881  return result;
882 }
883 
886  desc.add<double>("iLumi",-1.);
887  desc.add<bool>("HBRecalibration",false);
888  desc.add<double>("HBreCalibCutoff",20.);
889  desc.add<edm::FileInPath>("HBmeanenergies",edm::FileInPath("CalibCalorimetry/HcalPlugins/data/meanenergiesHB.txt"));
890  desc.add<bool>("HERecalibration",false);
891  desc.add<double>("HEreCalibCutoff",20.);
892  desc.add<edm::FileInPath>("HEmeanenergies",edm::FileInPath("CalibCalorimetry/HcalPlugins/data/meanenergiesHE.txt"));
893  desc.add<bool>("HFRecalibration",false);
894  desc.add<bool>("GainWidthsForTrigPrims",false);
895  desc.add<bool>("useHBUpgrade",false);
896  desc.add<bool>("useHEUpgrade",false);
897  desc.add<bool>("useHFUpgrade",false);
898  desc.add<bool>("useHOUpgrade",true);
899  desc.add<bool>("testHFQIE10",false);
900  desc.add<bool>("testHEPlan1",false);
901  desc.add<bool>("killHE",false);
902  desc.add<bool>("useLayer0Weight",false);
903  desc.addUntracked<std::vector<std::string> >("toGet",std::vector<std::string>());
904  desc.addUntracked<bool>("fromDDD",false);
905 
907  desc_hb.add<std::vector<double>>("gain", std::vector<double>({0.19}));
908  desc_hb.add<std::vector<double>>("gainWidth", std::vector<double>({0.0}));
909  desc_hb.add<double>("pedestal", 3.0);
910  desc_hb.add<double>("pedestalWidth", 0.55);
911  desc_hb.add<std::vector<double>>("qieOffset", std::vector<double>({-0.49, 1.8, 7.2, 37.9}));
912  desc_hb.add<std::vector<double>>("qieSlope", std::vector<double>({0.912, 0.917, 0.922, 0.923}));
913  desc_hb.add<int>("qieType", 0);
914  desc_hb.add<int>("mcShape",125);
915  desc_hb.add<int>("recoShape",105);
916  desc_hb.add<double>("photoelectronsToAnalog",0.0);
917  desc_hb.add<std::vector<double>>("darkCurrent",std::vector<double>({0.0}));
918  desc_hb.add<bool>("doRadiationDamage", false);
919  desc.add<edm::ParameterSetDescription>("hb", desc_hb);
920 
921  edm::ParameterSetDescription desc_hbRaddam;
922  desc_hbRaddam.add<double>("temperatureBase",20.0);
923  desc_hbRaddam.add<double>("temperatureNew",-5.0);
924  desc_hbRaddam.add<double>("intlumiOffset",150);
925  desc_hbRaddam.add<double>("depVsTemp",0.0631);
926  desc_hbRaddam.add<double>("intlumiToNeutrons",3.67e8);
927  desc_hbRaddam.add<std::vector<double>>("depVsNeutrons",{5.69e-11,7.90e-11});
928 
929  edm::ParameterSetDescription desc_hbUpgrade;
930  desc_hbUpgrade.add<std::vector<double>>("gain", std::vector<double>({0.00111111111111}));
931  desc_hbUpgrade.add<std::vector<double>>("gainWidth", std::vector<double>({0}));
932  desc_hbUpgrade.add<double>("pedestal", 18.0);
933  desc_hbUpgrade.add<double>("pedestalWidth", 5.0);
934  desc_hbUpgrade.add<std::vector<double>>("qieOffset", std::vector<double>({0.0, 0.0, 0.0, 0.0}));
935  desc_hbUpgrade.add<std::vector<double>>("qieSlope", std::vector<double>({0.333, 0.333, 0.333, 0.333}));
936  desc_hbUpgrade.add<int>("qieType", 2);
937  desc_hbUpgrade.add<int>("mcShape",203);
938  desc_hbUpgrade.add<int>("recoShape",203);
939  desc_hbUpgrade.add<double>("photoelectronsToAnalog",57.5);
940  desc_hbUpgrade.add<std::vector<double>>("darkCurrent", std::vector<double>({0.055}));
941  desc_hbUpgrade.add<bool>("doRadiationDamage", true);
942  desc_hbUpgrade.add<edm::ParameterSetDescription>("radiationDamage", desc_hbRaddam);
943  desc.add<edm::ParameterSetDescription>("hbUpgrade", desc_hbUpgrade);
944 
946  desc_he.add<std::vector<double>>("gain", std::vector<double>({0.23}));
947  desc_he.add<std::vector<double>>("gainWidth", std::vector<double>({0}));
948  desc_he.add<double>("pedestal", 3.0);
949  desc_he.add<double>("pedestalWidth", 0.79);
950  desc_he.add<std::vector<double>>("qieOffset", std::vector<double>({-0.38, 2.0, 7.6, 39.6}));
951  desc_he.add<std::vector<double>>("qieSlope", std::vector<double>({0.912, 0.916, 0.92, 0.922}));
952  desc_he.add<int>("qieType", 0);
953  desc_he.add<int>("mcShape",125);
954  desc_he.add<int>("recoShape",105);
955  desc_he.add<double>("photoelectronsToAnalog",0.0);
956  desc_he.add<std::vector<double>>("darkCurrent",std::vector<double>({0.0}));
957  desc_he.add<bool>("doRadiationDamage", false);
958  desc.add<edm::ParameterSetDescription>("he", desc_he);
959 
960  edm::ParameterSetDescription desc_heRaddam;
961  desc_heRaddam.add<double>("temperatureBase",20.0);
962  desc_heRaddam.add<double>("temperatureNew",5.0);
963  desc_heRaddam.add<double>("intlumiOffset",75);
964  desc_heRaddam.add<double>("depVsTemp",0.0631);
965  desc_heRaddam.add<double>("intlumiToNeutrons",2.92e8);
966  desc_heRaddam.add<std::vector<double>>("depVsNeutrons",{5.69e-11,7.90e-11});
967 
968  edm::ParameterSetDescription desc_heUpgrade;
969  desc_heUpgrade.add<std::vector<double>>("gain", std::vector<double>({0.00111111111111}));
970  desc_heUpgrade.add<std::vector<double>>("gainWidth", std::vector<double>({0}));
971  desc_heUpgrade.add<double>("pedestal", 18.0);
972  desc_heUpgrade.add<double>("pedestalWidth", 5.0);
973  desc_heUpgrade.add<std::vector<double>>("qieOffset", std::vector<double>({0.0, 0.0, 0.0, 0.0}));
974  desc_heUpgrade.add<std::vector<double>>("qieSlope", std::vector<double>({0.333, 0.333, 0.333, 0.333}));
975  desc_heUpgrade.add<int>("qieType", 2);
976  desc_heUpgrade.add<int>("mcShape",203);
977  desc_heUpgrade.add<int>("recoShape",203);
978  desc_heUpgrade.add<double>("photoelectronsToAnalog",57.5);
979  desc_heUpgrade.add<std::vector<double>>("darkCurrent", std::vector<double>({0.055}));
980  desc_heUpgrade.add<bool>("doRadiationDamage", true);
981  desc_heUpgrade.add<edm::ParameterSetDescription>("radiationDamage", desc_heRaddam);
982  desc.add<edm::ParameterSetDescription>("heUpgrade", desc_heUpgrade);
983 
985  desc_hf.add<std::vector<double>>("gain", std::vector<double>({0.14, 0.135}));
986  desc_hf.add<std::vector<double>>("gainWidth", std::vector<double>({0.0, 0.0}));
987  desc_hf.add<double>("pedestal", 3.0);
988  desc_hf.add<double>("pedestalWidth", 0.84);
989  desc_hf.add<std::vector<double>>("qieOffset", std::vector<double>({-0.87, 1.4, 7.8, -29.6}));
990  desc_hf.add<std::vector<double>>("qieSlope", std::vector<double>({0.359, 0.358, 0.36, 0.367}));
991  desc_hf.add<int>("qieType", 0);
992  desc_hf.add<int>("mcShape",301);
993  desc_hf.add<int>("recoShape",301);
994  desc_hf.add<double>("photoelectronsToAnalog",0.0);
995  desc_hf.add<std::vector<double>>("darkCurrent",std::vector<double>({0.0}));
996  desc_hf.add<bool>("doRadiationDamage", false);
997  desc.add<edm::ParameterSetDescription>("hf", desc_hf);
998 
999  edm::ParameterSetDescription desc_hfUpgrade;
1000  desc_hfUpgrade.add<std::vector<double>>("gain", std::vector<double>({0.14, 0.135}));
1001  desc_hfUpgrade.add<std::vector<double>>("gainWidth", std::vector<double>({0.0, 0.0}));
1002  desc_hfUpgrade.add<double>("pedestal", 13.33);
1003  desc_hfUpgrade.add<double>("pedestalWidth", 3.33);
1004  desc_hfUpgrade.add<std::vector<double>>("qieOffset", std::vector<double>({0.0697, -0.7405, 12.38, -671.9}));
1005  desc_hfUpgrade.add<std::vector<double>>("qieSlope", std::vector<double>({0.297, 0.298, 0.298, 0.313}));
1006  desc_hfUpgrade.add<int>("qieType", 1);
1007  desc_hfUpgrade.add<int>("mcShape",301);
1008  desc_hfUpgrade.add<int>("recoShape",301);
1009  desc_hfUpgrade.add<double>("photoelectronsToAnalog",0.0);
1010  desc_hfUpgrade.add<std::vector<double>>("darkCurrent",std::vector<double>({0.0}));
1011  desc_hfUpgrade.add<bool>("doRadiationDamage", false);
1012  desc.add<edm::ParameterSetDescription>("hfUpgrade", desc_hfUpgrade);
1013 
1014  edm::ParameterSetDescription desc_hfrecal;
1015  desc_hfrecal.add<std::vector<double>>("HFdepthOneParameterA", std::vector<double>());
1016  desc_hfrecal.add<std::vector<double>>("HFdepthOneParameterB", std::vector<double>());
1017  desc_hfrecal.add<std::vector<double>>("HFdepthTwoParameterA", std::vector<double>());
1018  desc_hfrecal.add<std::vector<double>>("HFdepthTwoParameterB", std::vector<double>());
1019  desc.add<edm::ParameterSetDescription>("HFRecalParameterBlock", desc_hfrecal);
1020 
1022  desc_ho.add<std::vector<double>>("gain", std::vector<double>({0.006, 0.0087}));
1023  desc_ho.add<std::vector<double>>("gainWidth", std::vector<double>({0.0, 0.0}));
1024  desc_ho.add<double>("pedestal", 11.0);
1025  desc_ho.add<double>("pedestalWidth", 0.57);
1026  desc_ho.add<std::vector<double>>("qieOffset", std::vector<double>({-0.44, 1.4, 7.1, 38.5}));
1027  desc_ho.add<std::vector<double>>("qieSlope", std::vector<double>({0.907, 0.915, 0.92, 0.921}));
1028  desc_ho.add<int>("qieType", 0);
1029  desc_ho.add<int>("mcShape",201);
1030  desc_ho.add<int>("recoShape",201);
1031  desc_ho.add<double>("photoelectronsToAnalog",4.0);
1032  desc_ho.add<std::vector<double>>("darkCurrent",std::vector<double>({0.0}));
1033  desc_ho.add<bool>("doRadiationDamage", false);
1034  desc.add<edm::ParameterSetDescription>("ho", desc_ho);
1035 
1036  edm::ParameterSetDescription validator_sipm;
1037  validator_sipm.add<int>("pixels",1);
1038  validator_sipm.add<double>("crosstalk",0);
1039  validator_sipm.add<double>("nonlin1",1);
1040  validator_sipm.add<double>("nonlin2",0);
1041  validator_sipm.add<double>("nonlin3",0);
1042  std::vector<edm::ParameterSet> default_sipm(1);
1043  desc.addVPSet("SiPMCharacteristics",validator_sipm,default_sipm);
1044 
1045  descriptions.addDefault(desc);
1046 }
std::unique_ptr< HcalPedestals > producePedestals(const HcalPedestalsRcd &rcd)
std::unique_ptr< HcalDcsMap > makeHardcodeDcsMap()
static const int kHcalVersMask
T getParameter(std::string const &) const
bool empty() const
Definition: ParameterSet.h:218
T getUntrackedParameter(std::string const &, T const &) const
HcalGainWidth makeGainWidth(HcalGenericDetId fId)
std::unique_ptr< HcalGains > produceGains(const HcalGainsRcd &rcd)
void useHBUpgrade(bool b)
void getDepthSegmentation(const unsigned ring, std::vector< int > &readoutDepths, const bool flag=false) const
HcalHardcodeCalibrations(const edm::ParameterSet &)
const bool killHE() const
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:42
bool valid(const DetId &id) const override
void testHEPlan1(bool b)
std::unique_ptr< HcalTimeCorrs > produceTimeCorrs(const HcalTimeCorrsRcd &rcd)
void useHFUpgrade(bool b)
std::unique_ptr< HcalLongRecoParams > produceLongRecoParams(const HcalLongRecoParamsRcd &rcd)
JetCorrectorParameters::Record record
Definition: classes.h:7
int maxDepthHE() const
Definition: HcalTopology.h:140
std::unique_ptr< HcalSiPMCharacteristics > produceSiPMCharacteristics(const HcalSiPMCharacteristicsRcd &rcd)
std::unique_ptr< HcalElectronicsMap > produceElectronicsMap(const HcalElectronicsMapRcd &rcd)
void setHF(HcalHardcodeParameters p)
static const IOVSyncValue & endOfTime()
Definition: IOVSyncValue.cc:97
HcalRecoParam makeRecoParam(HcalGenericDetId fId)
bool exists(std::string const &parameterName) const
checks if a parameter exists
HcalQIECoder makeQIECoder(HcalGenericDetId fId)
std::pair< Time_t, Time_t > ValidityInterval
Definition: Time.h:19
double maxEta
std::unique_ptr< HcalDcsValues > produceDcsValues(const HcalDcsRcd &rcd)
#define nullptr
static const int kHcalEtaMask
HcalMCParam makeMCParam(HcalGenericDetId fId)
void setIntervalFor(const edm::eventsetup::EventSetupRecordKey &, const edm::IOVSyncValue &, edm::ValidityInterval &) override
void setWhatProduced(T *iThis, const es::Label &iLabel=es::Label())
Definition: ESProducer.h:115
std::unique_ptr< HcalSiPMCharacteristics > makeHardcodeSiPMCharacteristics()
HcalPedestalWidth makePedestalWidth(HcalGenericDetId fId)
std::unique_ptr< HcalPedestalWidths > producePedestalWidths(const HcalPedestalWidthsRcd &rcd)
void makeHardcodeFrontEndMap(HcalFrontEndMap &emap, const std::vector< HcalGenericDetId > &cells)
HcalTPChannelParameter makeHardcodeTPChannelParameter(HcalGenericDetId fId)
int depth() const
get the tower depth
Definition: HcalDetId.cc:129
HcalPedestal makePedestal(HcalGenericDetId fId, bool fSmear=false)
virtual bool valid(const HcalZDCDetId &id) const
Definition: ZdcTopology.cc:29
void addDefault(ParameterSetDescription const &psetDescription)
std::unique_ptr< HFRecalibration > hf_recalibration
std::unique_ptr< HcalRespCorrs > produceRespCorrs(const HcalRespCorrsRcd &rcd)
std::unique_ptr< HcalLutMetadata > produceLutMetadata(const HcalLutMetadataRcd &rcd)
void setHO(HcalHardcodeParameters p)
static const IOVSyncValue & beginOfTime()
HcalTimingParam makeTimingParam(HcalGenericDetId fId)
void setHFUpgrade(HcalHardcodeParameters p)
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
void setHE(HcalHardcodeParameters p)
void setKillHE(bool b)
HcalQIEType makeQIEType(HcalGenericDetId fId)
int ieta() const
get the cell ieta
Definition: HcalDetId.h:56
std::unique_ptr< HcalFlagHFDigiTimeParams > produceFlagHFDigiTimeParams(const HcalFlagHFDigiTimeParamsRcd &rcd)
std::unique_ptr< HcalFrontEndMap > produceFrontEndMap(const HcalFrontEndMapRcd &rcd)
HcalSubdetector
Definition: HcalAssistant.h:31
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
JetCorrectorParameters corr
Definition: classes.h:5
static const int kHcalPhiMask
std::unique_ptr< HcalRecoParams > produceRecoParams(const HcalRecoParamsRcd &rcd)
void setHB(HcalHardcodeParameters p)
static const int kHcalPhiMask2
Definition: HcalDetId.h:16
std::unique_ptr< HcalTPParameters > produceTPParameters(const HcalTPParametersRcd &rcd)
std::unique_ptr< HcalElectronicsMap > makeHardcodeMap(const std::vector< HcalGenericDetId > &cells)
std::unique_ptr< HcalGainWidths > produceGainWidths(const HcalGainWidthsRcd &rcd)
std::unique_ptr< HcalTPChannelParameters > produceTPChannelParameters(const HcalTPChannelParametersRcd &rcd)
void makeHardcodeTPParameters(HcalTPParameters &tppar)
std::unique_ptr< HcalL1TriggerObjects > produceL1TriggerObjects(const HcalL1TriggerObjectsRcd &rcd)
std::unique_ptr< HcalZSThresholds > produceZSThresholds(const HcalZSThresholdsRcd &rcd)
std::unique_ptr< HcalZDCLowGainFractions > produceZDCLowGainFractions(const HcalZDCLowGainFractionsRcd &rcd)
void setSiPMCharacteristics(std::vector< edm::ParameterSet > vps)
std::unique_ptr< HcalMCParams > produceMCParams(const HcalMCParamsRcd &rcd)
int maxDepthHB() const
Definition: HcalTopology.h:139
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)
HcalGain makeGain(HcalGenericDetId fId, bool fSmear=false)
static const int kHcalEtaMask2
Definition: HcalDetId.h:20
std::string fullPath() const
Definition: FileInPath.cc:184
const Timestamp & time() const
Definition: IOVSyncValue.h:44
HcalSiPMParameter makeHardcodeSiPMParameter(HcalGenericDetId fId, const HcalTopology *topo, double intlumi)
void setHEUpgrade(HcalHardcodeParameters p)
std::unique_ptr< HcalDcsMap > produceDcsMap(const HcalDcsMapRcd &rcd)
TimeValue_t value() const
Definition: Timestamp.h:56
std::unique_ptr< HcalLUTCorrs > produceLUTCorrs(const HcalLUTCorrsRcd &rcd)
int lastHERing() const
Definition: HcalTopology.h:90
void testHFQIE10(bool b)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
std::unique_ptr< HcalValidationCorrs > produceValidationCorrs(const HcalValidationCorrsRcd &rcd)
bool validHT(const HcalTrigTowerDetId &id) const