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.size () <= 0) {
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 != 0 ) && (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 != 0 ) && (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 != 0 ) && (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  auto result = std::make_unique<HcalElectronicsMap>();
606  dbHardcode.makeHardcodeMap(*result,cells);
607  return result;
608 }
609 
610 std::unique_ptr<HcalValidationCorrs> HcalHardcodeCalibrations::produceValidationCorrs (const HcalValidationCorrsRcd& rcd) {
611  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceValidationCorrs-> ...";
613  rcd.getRecord<HcalRecNumberingRecord>().get(htopo);
614  const HcalTopology* topo=&(*htopo);
615 
616  auto result = std::make_unique<HcalValidationCorrs>(topo);
617  std::vector <HcalGenericDetId> cells = allCells(*topo, dbHardcode.killHE());
618  for (std::vector <HcalGenericDetId>::const_iterator cell = cells.begin (); cell != cells.end (); ++cell) {
619  HcalValidationCorr item(cell->rawId(),1.0);
620  result->addValues(item);
621  }
622  return result;
623 }
624 
625 std::unique_ptr<HcalLutMetadata> HcalHardcodeCalibrations::produceLutMetadata (const HcalLutMetadataRcd& rcd) {
626  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceLutMetadata-> ...";
628  rcd.getRecord<HcalRecNumberingRecord>().get(htopo);
629  const HcalTopology* topo=&(*htopo);
630 
631  auto result = std::make_unique<HcalLutMetadata>(topo);
632 
633  result->setRctLsb( 0.5 );
634  result->setNominalGain(0.177); // for HBHE SiPMs
635 
636  std::vector <HcalGenericDetId> cells = allCells(*topo,dbHardcode.killHE());
637  for (const auto& cell: cells) {
638  float rcalib = 1.;
639  int granularity = 1;
640  int threshold = 1;
641 
643  // Use values from 2016 as starting conditions for 2017+. These are
644  // averaged over the subdetectors, with the last two HE towers split
645  // off due to diverging correction values.
646  switch (cell.genericSubdet()) {
648  rcalib = 1.128;
649  break;
651  {
652  HcalDetId id(cell);
653  if (id.ietaAbs() >= 28)
654  rcalib = 1.188;
655  else
656  rcalib = 1.117;
657  // granularity is equal to 1 only for |ieta| == 17
658  if(id.ietaAbs() >= 18 && id.ietaAbs() <= 26) granularity = 2;
659  else if(id.ietaAbs() >=27 && id.ietaAbs() <= 29) granularity = 5;
660  }
661  break;
663  rcalib = 1.02;
664  break;
665  default:
666  break;
667  }
668 
669  if (cell.isHcalTrigTowerDetId()) {
670  rcalib = 0.;
671  HcalTrigTowerDetId id(cell);
672  if(id.ietaAbs() <= 17) {
673  granularity = 1;
674  threshold = 4;
675  }
676  else if(id.ietaAbs() >= 18 && id.ietaAbs() <= 26) {
677  granularity = 2;
678  threshold = 2;
679  }
680  else if(id.ietaAbs() >= 27 && id.ietaAbs() <= 28) {
681  granularity = 5;
682  threshold = 1;
683  }
684  else {
685  granularity = 0;
686  threshold = 0;
687  }
688  }
689  }
690 
691  HcalLutMetadatum item(cell.rawId(), rcalib, granularity, threshold);
692  result->addValues(item);
693  }
694 
695  return result;
696 }
697 
698 std::unique_ptr<HcalDcsValues> HcalHardcodeCalibrations::produceDcsValues (const HcalDcsRcd& rcd) {
699  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceDcsValues-> ...";
700  auto result = std::make_unique<HcalDcsValues>();
701  return result;
702 }
703 
704 std::unique_ptr<HcalDcsMap> HcalHardcodeCalibrations::produceDcsMap (const HcalDcsMapRcd& rcd) {
705  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceDcsMap-> ...";
706 
707  auto result = std::make_unique<HcalDcsMap>();
709  return result;
710 }
711 
712 std::unique_ptr<HcalRecoParams> HcalHardcodeCalibrations::produceRecoParams (const HcalRecoParamsRcd& rec) {
713  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceRecoParams-> ...";
715  rec.getRecord<HcalRecNumberingRecord>().get(htopo);
716  const HcalTopology* topo=&(*htopo);
717 
718  auto result = std::make_unique<HcalRecoParams>(topo);
719  std::vector <HcalGenericDetId> cells = allCells(*topo, dbHardcode.killHE());
720  for (std::vector <HcalGenericDetId>::const_iterator cell = cells.begin (); cell != cells.end (); ++cell) {
721  HcalRecoParam item = dbHardcode.makeRecoParam (*cell);
722  result->addValues(item);
723  }
724  return result;
725 }
726 
727 std::unique_ptr<HcalTimingParams> HcalHardcodeCalibrations::produceTimingParams (const HcalTimingParamsRcd& rec) {
728  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceTimingParams-> ...";
730  rec.getRecord<HcalRecNumberingRecord>().get(htopo);
731  const HcalTopology* topo=&(*htopo);
732 
733  auto result = std::make_unique<HcalTimingParams>(topo);
734  std::vector <HcalGenericDetId> cells = allCells(*topo, dbHardcode.killHE());
735  for (std::vector <HcalGenericDetId>::const_iterator cell = cells.begin (); cell != cells.end (); ++cell) {
737  result->addValues(item);
738  }
739  return result;
740 }
741 
742 std::unique_ptr<HcalLongRecoParams> HcalHardcodeCalibrations::produceLongRecoParams (const HcalLongRecoParamsRcd& rec) {
743  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceLongRecoParams-> ...";
745  rec.getRecord<HcalRecNumberingRecord>().get(htopo);
746  const HcalTopology* topo=&(*htopo);
747 
748  auto result = std::make_unique<HcalLongRecoParams>(topo);
749  std::vector <HcalGenericDetId> cells = allCells(*topo, dbHardcode.killHE());
750  std::vector <unsigned int> mSignal;
751  mSignal.push_back(4);
752  mSignal.push_back(5);
753  mSignal.push_back(6);
754  std::vector <unsigned int> mNoise;
755  mNoise.push_back(1);
756  mNoise.push_back(2);
757  mNoise.push_back(3);
758  for (std::vector <HcalGenericDetId>::const_iterator cell = cells.begin (); cell != cells.end (); ++cell) {
759  if (cell->isHcalZDCDetId())
760  {
761  HcalLongRecoParam item(cell->rawId(),mSignal,mNoise);
762  result->addValues(item);
763  }
764  }
765  return result;
766 }
767 
768 std::unique_ptr<HcalZDCLowGainFractions> HcalHardcodeCalibrations::produceZDCLowGainFractions (const HcalZDCLowGainFractionsRcd& rec) {
769  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceZDCLowGainFractions-> ...";
771  rec.getRecord<HcalRecNumberingRecord>().get(htopo);
772  const HcalTopology* topo=&(*htopo);
773 
774  auto result = std::make_unique<HcalZDCLowGainFractions>(topo);
775  std::vector <HcalGenericDetId> cells = allCells(*topo, dbHardcode.killHE());
776  for (std::vector <HcalGenericDetId>::const_iterator cell = cells.begin (); cell != cells.end (); ++cell) {
777  HcalZDCLowGainFraction item(cell->rawId(),0.0);
778  result->addValues(item);
779  }
780  return result;
781 }
782 
783 std::unique_ptr<HcalMCParams> HcalHardcodeCalibrations::produceMCParams (const HcalMCParamsRcd& rec) {
784 
785 
786  // std::cout << std::endl << " .... HcalHardcodeCalibrations::produceMCParams ->"<< std::endl;
787 
788  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceMCParams-> ...";
790  rec.getRecord<HcalRecNumberingRecord>().get(htopo);
791  const HcalTopology* topo=&(*htopo);
792  auto result = std::make_unique<HcalMCParams>(topo);
793  std::vector <HcalGenericDetId> cells = allCells(*topo, dbHardcode.killHE());
794  for (std::vector <HcalGenericDetId>::const_iterator cell = cells.begin (); cell != cells.end (); ++cell) {
795 
796  // HcalMCParam item(cell->rawId(),0);
797  HcalMCParam item = dbHardcode.makeMCParam (*cell);
798  result->addValues(item);
799  }
800  return result;
801 }
802 
803 
804 std::unique_ptr<HcalFlagHFDigiTimeParams> HcalHardcodeCalibrations::produceFlagHFDigiTimeParams (const HcalFlagHFDigiTimeParamsRcd& rec) {
805  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceFlagHFDigiTimeParams-> ...";
807  rec.getRecord<HcalRecNumberingRecord>().get(htopo);
808  const HcalTopology* topo=&(*htopo);
809 
810  auto result = std::make_unique<HcalFlagHFDigiTimeParams>(topo);
811  std::vector <HcalGenericDetId> cells = allCells(*topo, dbHardcode.killHE());
812 
813  std::vector<double> coef;
814  coef.push_back(0.93);
815  coef.push_back(-0.38275);
816  coef.push_back(-0.012667);
817 
818  for (std::vector <HcalGenericDetId>::const_iterator cell = cells.begin (); cell != cells.end (); ++cell) {
819  HcalFlagHFDigiTimeParam item(cell->rawId(),
820  1, //firstsample
821  3, // samplestoadd
822  2, //expectedpeak
823  40., // min energy threshold
824  coef // coefficients
825  );
826  result->addValues(item);
827  }
828  return result;
829 }
830 
831 
832 std::unique_ptr<HcalFrontEndMap> HcalHardcodeCalibrations::produceFrontEndMap (const HcalFrontEndMapRcd& rec) {
833  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceFrontEndMap-> ...";
835  rec.getRecord<HcalRecNumberingRecord>().get(htopo);
836  const HcalTopology* topo=&(*htopo);
837  std::vector <HcalGenericDetId> cells = allCells(*topo, dbHardcode.killHE());
838 
839  auto result = std::make_unique<HcalFrontEndMap>();
840  dbHardcode.makeHardcodeFrontEndMap(*result, cells);
841  return result;
842 }
843 
844 
845 std::unique_ptr<HcalSiPMParameters> HcalHardcodeCalibrations::produceSiPMParameters (const HcalSiPMParametersRcd& rec) {
846  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceSiPMParameters-> ...";
848  rec.getRecord<HcalRecNumberingRecord>().get(htopo);
849  const HcalTopology* topo=&(*htopo);
850 
851  auto result = std::make_unique<HcalSiPMParameters>(topo);
852  std::vector <HcalGenericDetId> cells = allCells(*htopo, dbHardcode.killHE());
853  for (std::vector <HcalGenericDetId>::const_iterator cell = cells.begin (); cell != cells.end (); ++cell) {
855  result->addValues(item);
856  }
857  return result;
858 }
859 
860 std::unique_ptr<HcalSiPMCharacteristics> HcalHardcodeCalibrations::produceSiPMCharacteristics (const HcalSiPMCharacteristicsRcd& rcd) {
861  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceSiPMCharacteristics-> ...";
862 
863  auto result = std::make_unique<HcalSiPMCharacteristics>();
865  return result;
866 }
867 
868 
869 std::unique_ptr<HcalTPChannelParameters> HcalHardcodeCalibrations::produceTPChannelParameters (const HcalTPChannelParametersRcd& rec) {
870  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceTPChannelParameters-> ...";
872  rec.getRecord<HcalRecNumberingRecord>().get(htopo);
873  const HcalTopology* topo=&(*htopo);
874 
875  auto result = std::make_unique<HcalTPChannelParameters>(topo);
876  std::vector <HcalGenericDetId> cells = allCells(*htopo, dbHardcode.killHE());
877  for (std::vector <HcalGenericDetId>::const_iterator cell = cells.begin (); cell != cells.end (); ++cell) {
879  result->addValues(item);
880  }
881  return result;
882 }
883 
884 std::unique_ptr<HcalTPParameters> HcalHardcodeCalibrations::produceTPParameters (const HcalTPParametersRcd& rcd) {
885  edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceTPParameters-> ...";
886 
887  auto result = std::make_unique<HcalTPParameters>();
889  return result;
890 }
891 
894  desc.add<double>("iLumi",-1.);
895  desc.add<bool>("HBRecalibration",false);
896  desc.add<double>("HBreCalibCutoff",20.);
897  desc.add<edm::FileInPath>("HBmeanenergies",edm::FileInPath("CalibCalorimetry/HcalPlugins/data/meanenergiesHB.txt"));
898  desc.add<bool>("HERecalibration",false);
899  desc.add<double>("HEreCalibCutoff",20.);
900  desc.add<edm::FileInPath>("HEmeanenergies",edm::FileInPath("CalibCalorimetry/HcalPlugins/data/meanenergiesHE.txt"));
901  desc.add<bool>("HFRecalibration",false);
902  desc.add<bool>("GainWidthsForTrigPrims",false);
903  desc.add<bool>("useHBUpgrade",false);
904  desc.add<bool>("useHEUpgrade",false);
905  desc.add<bool>("useHFUpgrade",false);
906  desc.add<bool>("useHOUpgrade",true);
907  desc.add<bool>("testHFQIE10",false);
908  desc.add<bool>("testHEPlan1",false);
909  desc.add<bool>("killHE",false);
910  desc.add<bool>("useLayer0Weight",false);
911  desc.addUntracked<std::vector<std::string> >("toGet",std::vector<std::string>());
912  desc.addUntracked<bool>("fromDDD",false);
913 
915  desc_hb.add<std::vector<double>>("gain", std::vector<double>({0.19}));
916  desc_hb.add<std::vector<double>>("gainWidth", std::vector<double>({0.0}));
917  desc_hb.add<double>("pedestal", 3.0);
918  desc_hb.add<double>("pedestalWidth", 0.55);
919  desc_hb.add<std::vector<double>>("qieOffset", std::vector<double>({-0.49, 1.8, 7.2, 37.9}));
920  desc_hb.add<std::vector<double>>("qieSlope", std::vector<double>({0.912, 0.917, 0.922, 0.923}));
921  desc_hb.add<int>("qieType", 0);
922  desc_hb.add<int>("mcShape",125);
923  desc_hb.add<int>("recoShape",105);
924  desc_hb.add<double>("photoelectronsToAnalog",0.0);
925  desc_hb.add<std::vector<double>>("darkCurrent",std::vector<double>({0.0}));
926  desc_hb.add<bool>("doRadiationDamage", false);
927  desc.add<edm::ParameterSetDescription>("hb", desc_hb);
928 
929  edm::ParameterSetDescription desc_hbRaddam;
930  desc_hbRaddam.add<double>("temperatureBase",20.0);
931  desc_hbRaddam.add<double>("temperatureNew",-5.0);
932  desc_hbRaddam.add<double>("intlumiOffset",150);
933  desc_hbRaddam.add<double>("depVsTemp",0.0631);
934  desc_hbRaddam.add<double>("intlumiToNeutrons",3.67e8);
935  desc_hbRaddam.add<std::vector<double>>("depVsNeutrons",{5.69e-11,7.90e-11});
936 
937  edm::ParameterSetDescription desc_hbUpgrade;
938  desc_hbUpgrade.add<std::vector<double>>("gain", std::vector<double>({0.00111111111111}));
939  desc_hbUpgrade.add<std::vector<double>>("gainWidth", std::vector<double>({0}));
940  desc_hbUpgrade.add<double>("pedestal", 18.0);
941  desc_hbUpgrade.add<double>("pedestalWidth", 5.0);
942  desc_hbUpgrade.add<std::vector<double>>("qieOffset", std::vector<double>({0.0, 0.0, 0.0, 0.0}));
943  desc_hbUpgrade.add<std::vector<double>>("qieSlope", std::vector<double>({0.333, 0.333, 0.333, 0.333}));
944  desc_hbUpgrade.add<int>("qieType", 2);
945  desc_hbUpgrade.add<int>("mcShape",203);
946  desc_hbUpgrade.add<int>("recoShape",203);
947  desc_hbUpgrade.add<double>("photoelectronsToAnalog",57.5);
948  desc_hbUpgrade.add<std::vector<double>>("darkCurrent", std::vector<double>({0.055}));
949  desc_hbUpgrade.add<bool>("doRadiationDamage", true);
950  desc_hbUpgrade.add<edm::ParameterSetDescription>("radiationDamage", desc_hbRaddam);
951  desc.add<edm::ParameterSetDescription>("hbUpgrade", desc_hbUpgrade);
952 
954  desc_he.add<std::vector<double>>("gain", std::vector<double>({0.23}));
955  desc_he.add<std::vector<double>>("gainWidth", std::vector<double>({0}));
956  desc_he.add<double>("pedestal", 3.0);
957  desc_he.add<double>("pedestalWidth", 0.79);
958  desc_he.add<std::vector<double>>("qieOffset", std::vector<double>({-0.38, 2.0, 7.6, 39.6}));
959  desc_he.add<std::vector<double>>("qieSlope", std::vector<double>({0.912, 0.916, 0.92, 0.922}));
960  desc_he.add<int>("qieType", 0);
961  desc_he.add<int>("mcShape",125);
962  desc_he.add<int>("recoShape",105);
963  desc_he.add<double>("photoelectronsToAnalog",0.0);
964  desc_he.add<std::vector<double>>("darkCurrent",std::vector<double>({0.0}));
965  desc_he.add<bool>("doRadiationDamage", false);
966  desc.add<edm::ParameterSetDescription>("he", desc_he);
967 
968  edm::ParameterSetDescription desc_heRaddam;
969  desc_heRaddam.add<double>("temperatureBase",20.0);
970  desc_heRaddam.add<double>("temperatureNew",5.0);
971  desc_heRaddam.add<double>("intlumiOffset",75);
972  desc_heRaddam.add<double>("depVsTemp",0.0631);
973  desc_heRaddam.add<double>("intlumiToNeutrons",2.92e8);
974  desc_heRaddam.add<std::vector<double>>("depVsNeutrons",{5.69e-11,7.90e-11});
975 
976  edm::ParameterSetDescription desc_heUpgrade;
977  desc_heUpgrade.add<std::vector<double>>("gain", std::vector<double>({0.00111111111111}));
978  desc_heUpgrade.add<std::vector<double>>("gainWidth", std::vector<double>({0}));
979  desc_heUpgrade.add<double>("pedestal", 18.0);
980  desc_heUpgrade.add<double>("pedestalWidth", 5.0);
981  desc_heUpgrade.add<std::vector<double>>("qieOffset", std::vector<double>({0.0, 0.0, 0.0, 0.0}));
982  desc_heUpgrade.add<std::vector<double>>("qieSlope", std::vector<double>({0.333, 0.333, 0.333, 0.333}));
983  desc_heUpgrade.add<int>("qieType", 2);
984  desc_heUpgrade.add<int>("mcShape",203);
985  desc_heUpgrade.add<int>("recoShape",203);
986  desc_heUpgrade.add<double>("photoelectronsToAnalog",57.5);
987  desc_heUpgrade.add<std::vector<double>>("darkCurrent", std::vector<double>({0.055}));
988  desc_heUpgrade.add<bool>("doRadiationDamage", true);
989  desc_heUpgrade.add<edm::ParameterSetDescription>("radiationDamage", desc_heRaddam);
990  desc.add<edm::ParameterSetDescription>("heUpgrade", desc_heUpgrade);
991 
993  desc_hf.add<std::vector<double>>("gain", std::vector<double>({0.14, 0.135}));
994  desc_hf.add<std::vector<double>>("gainWidth", std::vector<double>({0.0, 0.0}));
995  desc_hf.add<double>("pedestal", 3.0);
996  desc_hf.add<double>("pedestalWidth", 0.84);
997  desc_hf.add<std::vector<double>>("qieOffset", std::vector<double>({-0.87, 1.4, 7.8, -29.6}));
998  desc_hf.add<std::vector<double>>("qieSlope", std::vector<double>({0.359, 0.358, 0.36, 0.367}));
999  desc_hf.add<int>("qieType", 0);
1000  desc_hf.add<int>("mcShape",301);
1001  desc_hf.add<int>("recoShape",301);
1002  desc_hf.add<double>("photoelectronsToAnalog",0.0);
1003  desc_hf.add<std::vector<double>>("darkCurrent",std::vector<double>({0.0}));
1004  desc_hf.add<bool>("doRadiationDamage", false);
1005  desc.add<edm::ParameterSetDescription>("hf", desc_hf);
1006 
1007  edm::ParameterSetDescription desc_hfUpgrade;
1008  desc_hfUpgrade.add<std::vector<double>>("gain", std::vector<double>({0.14, 0.135}));
1009  desc_hfUpgrade.add<std::vector<double>>("gainWidth", std::vector<double>({0.0, 0.0}));
1010  desc_hfUpgrade.add<double>("pedestal", 13.33);
1011  desc_hfUpgrade.add<double>("pedestalWidth", 3.33);
1012  desc_hfUpgrade.add<std::vector<double>>("qieOffset", std::vector<double>({0.0697, -0.7405, 12.38, -671.9}));
1013  desc_hfUpgrade.add<std::vector<double>>("qieSlope", std::vector<double>({0.297, 0.298, 0.298, 0.313}));
1014  desc_hfUpgrade.add<int>("qieType", 1);
1015  desc_hfUpgrade.add<int>("mcShape",301);
1016  desc_hfUpgrade.add<int>("recoShape",301);
1017  desc_hfUpgrade.add<double>("photoelectronsToAnalog",0.0);
1018  desc_hfUpgrade.add<std::vector<double>>("darkCurrent",std::vector<double>({0.0}));
1019  desc_hfUpgrade.add<bool>("doRadiationDamage", false);
1020  desc.add<edm::ParameterSetDescription>("hfUpgrade", desc_hfUpgrade);
1021 
1022  edm::ParameterSetDescription desc_hfrecal;
1023  desc_hfrecal.add<std::vector<double>>("HFdepthOneParameterA", std::vector<double>());
1024  desc_hfrecal.add<std::vector<double>>("HFdepthOneParameterB", std::vector<double>());
1025  desc_hfrecal.add<std::vector<double>>("HFdepthTwoParameterA", std::vector<double>());
1026  desc_hfrecal.add<std::vector<double>>("HFdepthTwoParameterB", std::vector<double>());
1027  desc.add<edm::ParameterSetDescription>("HFRecalParameterBlock", desc_hfrecal);
1028 
1030  desc_ho.add<std::vector<double>>("gain", std::vector<double>({0.006, 0.0087}));
1031  desc_ho.add<std::vector<double>>("gainWidth", std::vector<double>({0.0, 0.0}));
1032  desc_ho.add<double>("pedestal", 11.0);
1033  desc_ho.add<double>("pedestalWidth", 0.57);
1034  desc_ho.add<std::vector<double>>("qieOffset", std::vector<double>({-0.44, 1.4, 7.1, 38.5}));
1035  desc_ho.add<std::vector<double>>("qieSlope", std::vector<double>({0.907, 0.915, 0.92, 0.921}));
1036  desc_ho.add<int>("qieType", 0);
1037  desc_ho.add<int>("mcShape",201);
1038  desc_ho.add<int>("recoShape",201);
1039  desc_ho.add<double>("photoelectronsToAnalog",4.0);
1040  desc_ho.add<std::vector<double>>("darkCurrent",std::vector<double>({0.0}));
1041  desc_ho.add<bool>("doRadiationDamage", false);
1042  desc.add<edm::ParameterSetDescription>("ho", desc_ho);
1043 
1044  edm::ParameterSetDescription validator_sipm;
1045  validator_sipm.add<int>("pixels",1);
1046  validator_sipm.add<double>("crosstalk",0);
1047  validator_sipm.add<double>("nonlin1",1);
1048  validator_sipm.add<double>("nonlin2",0);
1049  validator_sipm.add<double>("nonlin3",0);
1050  std::vector<edm::ParameterSet> default_sipm(1);
1051  desc.addVPSet("SiPMCharacteristics",validator_sipm,default_sipm);
1052 
1053  descriptions.addDefault(desc);
1054 }
std::unique_ptr< HcalPedestals > producePedestals(const HcalPedestalsRcd &rcd)
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
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 makeHardcodeSiPMCharacteristics(HcalSiPMCharacteristics &sipm)
void setWhatProduced(T *iThis, const es::Label &iLabel=es::Label())
Definition: ESProducer.h:115
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:108
void makeHardcodeMap(HcalElectronicsMap &emap, const std::vector< HcalGenericDetId > &cells)
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
void makeHardcodeDcsMap(HcalDcsMap &dcs_map)
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< 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)
virtual bool valid(const DetId &id) const
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
virtual void setIntervalFor(const edm::eventsetup::EventSetupRecordKey &, const edm::IOVSyncValue &, edm::ValidityInterval &)
const Timestamp & time() const
Definition: IOVSyncValue.h:44
HcalSiPMParameter makeHardcodeSiPMParameter(HcalGenericDetId fId, const HcalTopology *topo, double intlumi)
std::string fullPath() const
Definition: FileInPath.cc:184
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