File indexing completed on 2024-04-06 11:58:09
0001
0002
0003
0004
0005
0006 #include <memory>
0007 #include <iostream>
0008 #include <string>
0009 #include <vector>
0010
0011 #include "FWCore/Framework/interface/ValidityInterval.h"
0012 #include "DataFormats/HcalDetId/interface/HcalZDCDetId.h"
0013 #include "DataFormats/HcalDetId/interface/HcalDetId.h"
0014 #include "DataFormats/HcalDetId/interface/HcalGenericDetId.h"
0015 #include "DataFormats/HcalDetId/interface/HcalSubdetector.h"
0016 #include "DataFormats/HcalDetId/interface/HcalTrigTowerDetId.h"
0017 #include "FWCore/ParameterSet/interface/FileInPath.h"
0018
0019 #include "CondFormats/DataRecord/interface/HcalAllRcds.h"
0020 #include "Geometry/Records/interface/HcalRecNumberingRecord.h"
0021
0022 #include "Geometry/ForwardGeometry/interface/ZdcTopology.h"
0023 #include "Geometry/CaloTopology/interface/HcalTopology.h"
0024 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0025
0026 #include "HcalHardcodeCalibrations.h"
0027
0028
0029
0030
0031
0032
0033 using namespace cms;
0034
0035 namespace {
0036
0037 const std::vector<HcalGenericDetId>& allCells(const HcalTopology& hcaltopology, bool killHE = false) {
0038 static std::vector<HcalGenericDetId> result;
0039 int maxDepth = hcaltopology.maxDepth();
0040
0041 #ifdef DebugLog
0042 std::cout << std::endl << "HcalHardcodeCalibrations: maxDepth = " << maxDepth << std::endl;
0043 #endif
0044
0045 if (result.empty()) {
0046 for (int eta = -HcalDetId::kHcalEtaMask2; eta <= (int)(HcalDetId::kHcalEtaMask2); eta++) {
0047 for (unsigned int phi = 0; phi <= HcalDetId::kHcalPhiMask2; phi++) {
0048 for (int depth = 1; depth <= maxDepth; depth++) {
0049 for (int det = 1; det <= HcalForward; det++) {
0050 HcalDetId cell((HcalSubdetector)det, eta, phi, depth);
0051 if (killHE && HcalEndcap == cell.subdetId())
0052 continue;
0053 if (hcaltopology.valid(cell)) {
0054 result.push_back(cell);
0055 #ifdef DebugLog
0056 std::cout << " HcalHardcodedCalibrations: det|eta|phi|depth = " << det << "|" << eta << "|" << phi
0057 << "|" << depth << std::endl;
0058 #endif
0059 }
0060 }
0061 }
0062 }
0063 }
0064 ZdcTopology zdctopology;
0065 HcalZDCDetId zcell;
0066 HcalZDCDetId::Section section = HcalZDCDetId::EM;
0067 for (int depth = 1; depth < 6; depth++) {
0068 zcell = HcalZDCDetId(section, true, depth);
0069 if (zdctopology.valid(zcell))
0070 result.push_back(zcell);
0071 zcell = HcalZDCDetId(section, false, depth);
0072 if (zdctopology.valid(zcell))
0073 result.push_back(zcell);
0074 }
0075 section = HcalZDCDetId::HAD;
0076 for (int depth = 1; depth < 5; depth++) {
0077 zcell = HcalZDCDetId(section, true, depth);
0078 if (zdctopology.valid(zcell))
0079 result.push_back(zcell);
0080 zcell = HcalZDCDetId(section, false, depth);
0081 if (zdctopology.valid(zcell))
0082 result.push_back(zcell);
0083 }
0084 section = HcalZDCDetId::LUM;
0085 for (int depth = 1; depth < 3; depth++) {
0086 zcell = HcalZDCDetId(section, true, depth);
0087 if (zdctopology.valid(zcell))
0088 result.push_back(zcell);
0089 zcell = HcalZDCDetId(section, false, depth);
0090 if (zdctopology.valid(zcell))
0091 result.push_back(zcell);
0092 }
0093 section = HcalZDCDetId::RPD;
0094 for (int depth = 1; depth < 17; depth++) {
0095 zcell = HcalZDCDetId(section, true, depth);
0096 if (zdctopology.valid(zcell))
0097 result.push_back(zcell);
0098 zcell = HcalZDCDetId(section, false, depth);
0099 if (zdctopology.valid(zcell))
0100 result.push_back(zcell);
0101 }
0102
0103
0104
0105
0106
0107
0108 for (int vers = 0; vers <= HcalTrigTowerDetId::kHcalVersMask; ++vers) {
0109 for (int depth = 0; depth <= HcalTrigTowerDetId::kHcalDepthMask; ++depth) {
0110 for (int eta = -HcalTrigTowerDetId::kHcalEtaMask; eta <= HcalTrigTowerDetId::kHcalEtaMask; eta++) {
0111 for (int phi = 1; phi <= HcalTrigTowerDetId::kHcalPhiMask; phi++) {
0112 HcalTrigTowerDetId cell(eta, phi, depth, vers);
0113 if (hcaltopology.validHT(cell)) {
0114 result.push_back(cell);
0115 #ifdef DebugLog
0116 std::cout << " HcalHardcodedCalibrations: eta|phi|depth|vers = " << eta << "|" << phi << "|" << depth
0117 << "|" << vers << std::endl;
0118 #endif
0119 }
0120 }
0121 }
0122 }
0123 }
0124 }
0125 return result;
0126 }
0127
0128 }
0129
0130 HcalHardcodeCalibrations::HcalHardcodeCalibrations(const edm::ParameterSet& iConfig)
0131 : hb_recalibration(nullptr),
0132 he_recalibration(nullptr),
0133 hf_recalibration(nullptr),
0134 setHEdsegm(false),
0135 setHBdsegm(false) {
0136 edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::HcalHardcodeCalibrations->...";
0137
0138 if (iConfig.exists("GainWidthsForTrigPrims"))
0139 switchGainWidthsForTrigPrims = iConfig.getParameter<bool>("GainWidthsForTrigPrims");
0140 else
0141 switchGainWidthsForTrigPrims = false;
0142
0143
0144 dbHardcode.setHB(HcalHardcodeParameters(iConfig.getParameter<edm::ParameterSet>("hb")));
0145 dbHardcode.setHE(HcalHardcodeParameters(iConfig.getParameter<edm::ParameterSet>("he")));
0146 dbHardcode.setHF(HcalHardcodeParameters(iConfig.getParameter<edm::ParameterSet>("hf")));
0147 dbHardcode.setHO(HcalHardcodeParameters(iConfig.getParameter<edm::ParameterSet>("ho")));
0148 dbHardcode.setHBUpgrade(HcalHardcodeParameters(iConfig.getParameter<edm::ParameterSet>("hbUpgrade")));
0149 dbHardcode.setHEUpgrade(HcalHardcodeParameters(iConfig.getParameter<edm::ParameterSet>("heUpgrade")));
0150 dbHardcode.setHFUpgrade(HcalHardcodeParameters(iConfig.getParameter<edm::ParameterSet>("hfUpgrade")));
0151 dbHardcode.useHBUpgrade(iConfig.getParameter<bool>("useHBUpgrade"));
0152 dbHardcode.useHEUpgrade(iConfig.getParameter<bool>("useHEUpgrade"));
0153 dbHardcode.useHFUpgrade(iConfig.getParameter<bool>("useHFUpgrade"));
0154 dbHardcode.useHOUpgrade(iConfig.getParameter<bool>("useHOUpgrade"));
0155 dbHardcode.testHFQIE10(iConfig.getParameter<bool>("testHFQIE10"));
0156 dbHardcode.testHEPlan1(iConfig.getParameter<bool>("testHEPlan1"));
0157 dbHardcode.setKillHE(iConfig.getParameter<bool>("killHE"));
0158 dbHardcode.setSiPMCharacteristics(iConfig.getParameter<std::vector<edm::ParameterSet>>("SiPMCharacteristics"));
0159
0160 useLayer0Weight = iConfig.getParameter<bool>("useLayer0Weight");
0161 useIeta18depth1 = iConfig.getParameter<bool>("useIeta18depth1");
0162 testHEPlan1 = iConfig.getParameter<bool>("testHEPlan1");
0163
0164 iLumi = iConfig.getParameter<double>("iLumi");
0165
0166 if (iLumi > 0.0) {
0167 bool hb_recalib = iConfig.getParameter<bool>("HBRecalibration");
0168 bool he_recalib = iConfig.getParameter<bool>("HERecalibration");
0169 bool hf_recalib = iConfig.getParameter<bool>("HFRecalibration");
0170 if (hb_recalib) {
0171 hb_recalibration =
0172 std::make_unique<HBHERecalibration>(iLumi,
0173 iConfig.getParameter<double>("HBreCalibCutoff"),
0174 iConfig.getParameter<edm::FileInPath>("HBmeanenergies").fullPath());
0175 }
0176 if (he_recalib) {
0177 he_recalibration =
0178 std::make_unique<HBHERecalibration>(iLumi,
0179 iConfig.getParameter<double>("HEreCalibCutoff"),
0180 iConfig.getParameter<edm::FileInPath>("HEmeanenergies").fullPath());
0181 }
0182 if (hf_recalib && !iConfig.getParameter<edm::ParameterSet>("HFRecalParameterBlock").empty())
0183 hf_recalibration =
0184 std::make_unique<HFRecalibration>(iConfig.getParameter<edm::ParameterSet>("HFRecalParameterBlock"));
0185
0186 #ifdef DebugLog
0187 std::cout << " HcalHardcodeCalibrations: iLumi = " << iLumi << std::endl;
0188 #endif
0189 }
0190
0191 std::vector<std::string> toGet = iConfig.getUntrackedParameter<std::vector<std::string>>("toGet");
0192 for (auto& objectName : toGet) {
0193 bool all = objectName == "all";
0194 #ifdef DebugLog
0195 std::cout << "Load parameters for " << objectName << std::endl;
0196 #endif
0197 if ((objectName == "Pedestals") || all) {
0198 topoTokens_[kPedestals] = setWhatProduced(this, &HcalHardcodeCalibrations::producePedestals).consumes();
0199 findingRecord<HcalPedestalsRcd>();
0200 }
0201 if ((objectName == "PedestalWidths") || all) {
0202 topoTokens_[kPedestalWidths] = setWhatProduced(this, &HcalHardcodeCalibrations::producePedestalWidths).consumes();
0203 findingRecord<HcalPedestalWidthsRcd>();
0204 }
0205 if ((objectName == "EffectivePedestals") || all) {
0206 topoTokens_[kEffectivePedestals] =
0207 setWhatProduced(this, &HcalHardcodeCalibrations::produceEffectivePedestals, edm::es::Label("effective"))
0208 .consumes();
0209 findingRecord<HcalPedestalsRcd>();
0210 }
0211 if ((objectName == "EffectivePedestalWidths") || all) {
0212 topoTokens_[kEffectivePedestalWidths] =
0213 setWhatProduced(this, &HcalHardcodeCalibrations::produceEffectivePedestalWidths, edm::es::Label("effective"))
0214 .consumes();
0215 findingRecord<HcalPedestalWidthsRcd>();
0216 }
0217 if ((objectName == "Gains") || all) {
0218 topoTokens_[kGains] = setWhatProduced(this, &HcalHardcodeCalibrations::produceGains).consumes();
0219 findingRecord<HcalGainsRcd>();
0220 }
0221 if ((objectName == "GainWidths") || all) {
0222 topoTokens_[kGainWidths] = setWhatProduced(this, &HcalHardcodeCalibrations::produceGainWidths).consumes();
0223 findingRecord<HcalGainWidthsRcd>();
0224 }
0225 if ((objectName == "PFCuts") || all) {
0226 topoTokens_[kPFCuts] = setWhatProduced(this, &HcalHardcodeCalibrations::producePFCuts).consumes();
0227 findingRecord<HcalPFCutsRcd>();
0228 }
0229 if ((objectName == "QIEData") || all) {
0230 topoTokens_[kQIEData] = setWhatProduced(this, &HcalHardcodeCalibrations::produceQIEData).consumes();
0231 findingRecord<HcalQIEDataRcd>();
0232 }
0233 if ((objectName == "QIETypes") || all) {
0234 topoTokens_[kQIETypes] = setWhatProduced(this, &HcalHardcodeCalibrations::produceQIETypes).consumes();
0235 findingRecord<HcalQIETypesRcd>();
0236 }
0237 if ((objectName == "ChannelQuality") || (objectName == "channelQuality") || all) {
0238 topoTokens_[kChannelQuality] = setWhatProduced(this, &HcalHardcodeCalibrations::produceChannelQuality).consumes();
0239 findingRecord<HcalChannelQualityRcd>();
0240 }
0241 if ((objectName == "ElectronicsMap") || (objectName == "electronicsMap") || all) {
0242 topoTokens_[kElectronicsMap] = setWhatProduced(this, &HcalHardcodeCalibrations::produceElectronicsMap).consumes();
0243 findingRecord<HcalElectronicsMapRcd>();
0244 }
0245 if ((objectName == "ZSThresholds") || (objectName == "zsThresholds") || all) {
0246 topoTokens_[kZSThresholds] = setWhatProduced(this, &HcalHardcodeCalibrations::produceZSThresholds).consumes();
0247 findingRecord<HcalZSThresholdsRcd>();
0248 }
0249 if ((objectName == "RespCorrs") || (objectName == "ResponseCorrection") || all) {
0250 auto c = setWhatProduced(this, &HcalHardcodeCalibrations::produceRespCorrs);
0251 topoTokens_[kRespCorrs] = c.consumes();
0252 if (he_recalibration) {
0253 heDarkeningToken_ = c.consumes(edm::ESInputTag("", "HE"));
0254 }
0255 if (hb_recalibration) {
0256 hbDarkeningToken_ = c.consumes(edm::ESInputTag("", "HB"));
0257 }
0258 findingRecord<HcalRespCorrsRcd>();
0259 }
0260 if ((objectName == "LUTCorrs") || (objectName == "LUTCorrection") || all) {
0261 topoTokens_[kLUTCorrs] = setWhatProduced(this, &HcalHardcodeCalibrations::produceLUTCorrs).consumes();
0262 findingRecord<HcalLUTCorrsRcd>();
0263 }
0264 if ((objectName == "PFCorrs") || (objectName == "PFCorrection") || all) {
0265 topoTokens_[kPFCorrs] = setWhatProduced(this, &HcalHardcodeCalibrations::producePFCorrs).consumes();
0266 findingRecord<HcalPFCorrsRcd>();
0267 }
0268 if ((objectName == "TimeCorrs") || (objectName == "TimeCorrection") || all) {
0269 topoTokens_[kTimeCorrs] = setWhatProduced(this, &HcalHardcodeCalibrations::produceTimeCorrs).consumes();
0270 findingRecord<HcalTimeCorrsRcd>();
0271 }
0272 if ((objectName == "L1TriggerObjects") || (objectName == "L1Trigger") || all) {
0273 topoTokens_[kL1TriggerObjects] =
0274 setWhatProduced(this, &HcalHardcodeCalibrations::produceL1TriggerObjects).consumes();
0275 findingRecord<HcalL1TriggerObjectsRcd>();
0276 }
0277 if ((objectName == "ValidationCorrs") || (objectName == "ValidationCorrection") || all) {
0278 topoTokens_[kValidationCorrs] =
0279 setWhatProduced(this, &HcalHardcodeCalibrations::produceValidationCorrs).consumes();
0280 findingRecord<HcalValidationCorrsRcd>();
0281 }
0282 if ((objectName == "LutMetadata") || (objectName == "lutMetadata") || all) {
0283 topoTokens_[kLutMetadata] = setWhatProduced(this, &HcalHardcodeCalibrations::produceLutMetadata).consumes();
0284 findingRecord<HcalLutMetadataRcd>();
0285 }
0286 if ((objectName == "DcsValues") || all) {
0287 setWhatProduced(this, &HcalHardcodeCalibrations::produceDcsValues);
0288 findingRecord<HcalDcsRcd>();
0289 }
0290 if ((objectName == "DcsMap") || (objectName == "dcsMap") || all) {
0291 setWhatProduced(this, &HcalHardcodeCalibrations::produceDcsMap);
0292 findingRecord<HcalDcsMapRcd>();
0293 }
0294 if ((objectName == "RecoParams") || all) {
0295 topoTokens_[kRecoParams] = setWhatProduced(this, &HcalHardcodeCalibrations::produceRecoParams).consumes();
0296 findingRecord<HcalRecoParamsRcd>();
0297 }
0298 if ((objectName == "LongRecoParams") || all) {
0299 topoTokens_[kLongRecoParams] = setWhatProduced(this, &HcalHardcodeCalibrations::produceLongRecoParams).consumes();
0300 findingRecord<HcalLongRecoParamsRcd>();
0301 }
0302 if ((objectName == "ZDCLowGainFractions") || all) {
0303 topoTokens_[kZDCLowGainFractions] =
0304 setWhatProduced(this, &HcalHardcodeCalibrations::produceZDCLowGainFractions).consumes();
0305 findingRecord<HcalZDCLowGainFractionsRcd>();
0306 }
0307 if ((objectName == "MCParams") || all) {
0308 topoTokens_[kMCParams] = setWhatProduced(this, &HcalHardcodeCalibrations::produceMCParams).consumes();
0309 findingRecord<HcalMCParamsRcd>();
0310 }
0311 if ((objectName == "FlagHFDigiTimeParams") || all) {
0312 topoTokens_[kFlagHFDigiTimeParams] =
0313 setWhatProduced(this, &HcalHardcodeCalibrations::produceFlagHFDigiTimeParams).consumes();
0314 findingRecord<HcalFlagHFDigiTimeParamsRcd>();
0315 }
0316 if ((objectName == "FrontEndMap") || (objectName == "frontEndMap") || all) {
0317 topoTokens_[kFrontEndMap] = setWhatProduced(this, &HcalHardcodeCalibrations::produceFrontEndMap).consumes();
0318 findingRecord<HcalFrontEndMapRcd>();
0319 }
0320 if ((objectName == "SiPMParameters") || all) {
0321 topoTokens_[kSiPMParameters] = setWhatProduced(this, &HcalHardcodeCalibrations::produceSiPMParameters).consumes();
0322 findingRecord<HcalSiPMParametersRcd>();
0323 }
0324 if ((objectName == "SiPMCharacteristics") || all) {
0325 setWhatProduced(this, &HcalHardcodeCalibrations::produceSiPMCharacteristics);
0326 findingRecord<HcalSiPMCharacteristicsRcd>();
0327 }
0328 if ((objectName == "TPChannelParameters") || all) {
0329 topoTokens_[kTPChannelParameters] =
0330 setWhatProduced(this, &HcalHardcodeCalibrations::produceTPChannelParameters).consumes();
0331 findingRecord<HcalTPChannelParametersRcd>();
0332 }
0333 if ((objectName == "TPParameters") || all) {
0334 setWhatProduced(this, &HcalHardcodeCalibrations::produceTPParameters);
0335 findingRecord<HcalTPParametersRcd>();
0336 }
0337 }
0338 }
0339
0340 HcalHardcodeCalibrations::~HcalHardcodeCalibrations() {}
0341
0342
0343
0344
0345 void HcalHardcodeCalibrations::setIntervalFor(const edm::eventsetup::EventSetupRecordKey& iKey,
0346 const edm::IOVSyncValue& iTime,
0347 edm::ValidityInterval& oInterval) {
0348 std::string record = iKey.name();
0349 edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::setIntervalFor-> key: " << record << " time: " << iTime.eventID()
0350 << '/' << iTime.time().value();
0351 oInterval = edm::ValidityInterval(edm::IOVSyncValue::beginOfTime(), edm::IOVSyncValue::endOfTime());
0352 }
0353
0354 std::unique_ptr<HcalPedestals> HcalHardcodeCalibrations::producePedestals_(
0355 const HcalPedestalsRcd& rec, const edm::ESGetToken<HcalTopology, HcalRecNumberingRecord>& token, bool eff) {
0356 std::string seff = eff ? "Effective" : "";
0357 edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produce" << seff << "Pedestals-> ...";
0358
0359 auto const& topo = rec.get(token);
0360 auto result = std::make_unique<HcalPedestals>(&topo, false);
0361 const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
0362 for (auto cell : cells) {
0363 HcalPedestal item = dbHardcode.makePedestal(cell, false, eff, &topo, iLumi);
0364 result->addValues(item);
0365 }
0366 return result;
0367 }
0368
0369 std::unique_ptr<HcalPedestalWidths> HcalHardcodeCalibrations::producePedestalWidths_(
0370 const HcalPedestalWidthsRcd& rec, const edm::ESGetToken<HcalTopology, HcalRecNumberingRecord>& token, bool eff) {
0371 std::string seff = eff ? "Effective" : "";
0372 edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produce" << seff << "PedestalWidths-> ...";
0373 auto const& topo = rec.get(token);
0374 auto result = std::make_unique<HcalPedestalWidths>(&topo, false);
0375 const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
0376 for (auto cell : cells) {
0377 HcalPedestalWidth item = dbHardcode.makePedestalWidth(cell, eff, &topo, iLumi);
0378 result->addValues(item);
0379 }
0380 return result;
0381 }
0382
0383 std::unique_ptr<HcalPedestals> HcalHardcodeCalibrations::producePedestals(const HcalPedestalsRcd& rec) {
0384 return producePedestals_(rec, topoTokens_[kPedestals], false);
0385 }
0386
0387 std::unique_ptr<HcalPedestals> HcalHardcodeCalibrations::produceEffectivePedestals(const HcalPedestalsRcd& rec) {
0388 return producePedestals_(rec, topoTokens_[kEffectivePedestals], true);
0389 }
0390
0391 std::unique_ptr<HcalPedestalWidths> HcalHardcodeCalibrations::producePedestalWidths(const HcalPedestalWidthsRcd& rec) {
0392 return producePedestalWidths_(rec, topoTokens_[kPedestalWidths], false);
0393 }
0394
0395 std::unique_ptr<HcalPedestalWidths> HcalHardcodeCalibrations::produceEffectivePedestalWidths(
0396 const HcalPedestalWidthsRcd& rec) {
0397 return producePedestalWidths_(rec, topoTokens_[kEffectivePedestalWidths], true);
0398 }
0399
0400 std::unique_ptr<HcalGains> HcalHardcodeCalibrations::produceGains(const HcalGainsRcd& rec) {
0401 edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceGains-> ...";
0402
0403 auto const& topo = rec.get(topoTokens_[kGains]);
0404 auto result = std::make_unique<HcalGains>(&topo);
0405 const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
0406 for (auto cell : cells) {
0407 HcalGain item = dbHardcode.makeGain(cell);
0408 result->addValues(item);
0409 }
0410 return result;
0411 }
0412
0413 std::unique_ptr<HcalGainWidths> HcalHardcodeCalibrations::produceGainWidths(const HcalGainWidthsRcd& rec) {
0414 edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceGainWidths-> ...";
0415
0416 auto const& topo = rec.get(topoTokens_[kGainWidths]);
0417 auto result = std::make_unique<HcalGainWidths>(&topo);
0418 const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
0419 for (auto cell : cells) {
0420
0421 if (switchGainWidthsForTrigPrims) {
0422 HcalGainWidth item = dbHardcode.makeGainWidth(cell);
0423 result->addValues(item);
0424 } else if (!cell.isHcalTrigTowerDetId()) {
0425 HcalGainWidth item = dbHardcode.makeGainWidth(cell);
0426 result->addValues(item);
0427 }
0428 }
0429 return result;
0430 }
0431
0432 std::unique_ptr<HcalPFCuts> HcalHardcodeCalibrations::producePFCuts(const HcalPFCutsRcd& rec) {
0433 edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::producePFCuts-> ...";
0434
0435 auto const& topo = rec.get(topoTokens_[kPFCuts]);
0436 auto result = std::make_unique<HcalPFCuts>(&topo);
0437 const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
0438 for (auto cell : cells) {
0439
0440 if (!cell.isHcalTrigTowerDetId()) {
0441 HcalPFCut item = dbHardcode.makePFCut(cell, iLumi, dbHardcode.killHE());
0442 result->addValues(item);
0443 }
0444 }
0445 return result;
0446 }
0447
0448 std::unique_ptr<HcalQIEData> HcalHardcodeCalibrations::produceQIEData(const HcalQIEDataRcd& rcd) {
0449 edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceQIEData-> ...";
0450
0451
0452
0453
0454
0455
0456 auto const& topo = rcd.get(topoTokens_[kQIEData]);
0457 auto result = std::make_unique<HcalQIEData>(&topo);
0458 const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
0459 for (auto cell : cells) {
0460 HcalQIECoder coder = dbHardcode.makeQIECoder(cell);
0461 result->addCoder(coder);
0462 }
0463 return result;
0464 }
0465
0466 std::unique_ptr<HcalQIETypes> HcalHardcodeCalibrations::produceQIETypes(const HcalQIETypesRcd& rcd) {
0467 edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceQIETypes-> ...";
0468 auto const& topo = rcd.get(topoTokens_[kQIETypes]);
0469
0470 auto result = std::make_unique<HcalQIETypes>(&topo);
0471 const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
0472 for (auto cell : cells) {
0473 HcalQIEType item = dbHardcode.makeQIEType(cell);
0474 result->addValues(item);
0475 }
0476 return result;
0477 }
0478
0479 std::unique_ptr<HcalChannelQuality> HcalHardcodeCalibrations::produceChannelQuality(const HcalChannelQualityRcd& rcd) {
0480 edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceChannelQuality-> ...";
0481 auto const& topo = rcd.get(topoTokens_[kChannelQuality]);
0482
0483 auto result = std::make_unique<HcalChannelQuality>(&topo);
0484 const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
0485 for (auto cell : cells) {
0486
0487
0488
0489
0490
0491
0492 uint32_t status = 0;
0493
0494 if (!(cell.isHcalZDCDetId())) {
0495 HcalDetId hid = HcalDetId(cell);
0496 int iphi = hid.iphi();
0497 int ieta = hid.ieta();
0498 int absieta = hid.ietaAbs();
0499 int depth = hid.depth();
0500
0501
0502 bool isHEP17 = (iphi >= 63) && (iphi <= 66) && (ieta > 0);
0503
0504 bool is18d1 = (absieta == 18) && (depth == 1);
0505
0506 if ((!useIeta18depth1 && is18d1) && ((testHEPlan1 && isHEP17) || (!testHEPlan1))) {
0507 status = 0x8002;
0508 }
0509 }
0510
0511 HcalChannelStatus item(cell.rawId(), status);
0512 result->addValues(item);
0513 }
0514
0515 return result;
0516 }
0517
0518 std::unique_ptr<HcalRespCorrs> HcalHardcodeCalibrations::produceRespCorrs(const HcalRespCorrsRcd& rcd) {
0519 edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceRespCorrs-> ...";
0520 auto const& topo = rcd.get(topoTokens_[kRespCorrs]);
0521
0522
0523 if ((he_recalibration && !setHEdsegm) || (hb_recalibration && !setHBdsegm)) {
0524 std::vector<std::vector<int>> m_segmentation;
0525 int maxEta = topo.lastHBHERing();
0526 m_segmentation.resize(maxEta);
0527 for (int i = 0; i < maxEta; i++) {
0528 topo.getDepthSegmentation(i + 1, m_segmentation[i]);
0529 }
0530 if (he_recalibration && !setHEdsegm) {
0531 he_recalibration->setup(m_segmentation, &rcd.get(heDarkeningToken_));
0532 setHEdsegm = true;
0533 }
0534 if (hb_recalibration && !setHBdsegm) {
0535 hb_recalibration->setup(m_segmentation, &rcd.get(hbDarkeningToken_));
0536 setHBdsegm = true;
0537 }
0538 }
0539
0540 auto result = std::make_unique<HcalRespCorrs>(&topo);
0541 const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
0542 for (const auto& cell : cells) {
0543 double corr = 1.0;
0544
0545
0546 if (useLayer0Weight &&
0547 ((cell.genericSubdet() == HcalGenericDetId::HcalGenEndcap) ||
0548 (cell.genericSubdet() == HcalGenericDetId::HcalGenBarrel)) &&
0549 (HcalDetId(cell).depth() == 1 &&
0550 dbHardcode.getLayersInDepth(HcalDetId(cell).ietaAbs(), HcalDetId(cell).depth(), &topo) == 1)) {
0551
0552
0553
0554
0555
0556 corr = 0.5 / 1.2;
0557 }
0558
0559 if ((hb_recalibration != nullptr) && (cell.genericSubdet() == HcalGenericDetId::HcalGenBarrel)) {
0560 int depth_ = HcalDetId(cell).depth();
0561 int ieta_ = HcalDetId(cell).ieta();
0562 corr *= hb_recalibration->getCorr(ieta_, depth_);
0563 #ifdef DebugLog
0564 std::cout << "HB ieta, depth = " << ieta_ << ", " << depth_ << " corr = " << corr << std::endl;
0565 #endif
0566 } else if ((he_recalibration != nullptr) && (cell.genericSubdet() == HcalGenericDetId::HcalGenEndcap)) {
0567 int depth_ = HcalDetId(cell).depth();
0568 int ieta_ = HcalDetId(cell).ieta();
0569 corr *= he_recalibration->getCorr(ieta_, depth_);
0570 #ifdef DebugLog
0571 std::cout << "HE ieta, depth = " << ieta_ << ", " << depth_ << " corr = " << corr << std::endl;
0572 #endif
0573 } else if ((hf_recalibration != nullptr) && (cell.genericSubdet() == HcalGenericDetId::HcalGenForward)) {
0574 int depth_ = HcalDetId(cell).depth();
0575 int ieta_ = HcalDetId(cell).ieta();
0576 corr = hf_recalibration->getCorr(ieta_, depth_, iLumi);
0577 #ifdef DebugLog
0578 std::cout << "HF ieta, depth = " << ieta_ << ", " << depth_ << " corr = " << corr << std::endl;
0579 #endif
0580 }
0581
0582 HcalRespCorr item(cell.rawId(), corr);
0583 result->addValues(item);
0584 }
0585 return result;
0586 }
0587
0588 std::unique_ptr<HcalLUTCorrs> HcalHardcodeCalibrations::produceLUTCorrs(const HcalLUTCorrsRcd& rcd) {
0589 edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceLUTCorrs-> ...";
0590 auto const& topo = rcd.get(topoTokens_[kLUTCorrs]);
0591
0592 auto result = std::make_unique<HcalLUTCorrs>(&topo);
0593 const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
0594 for (auto cell : cells) {
0595 HcalLUTCorr item(cell.rawId(), 1.0);
0596 result->addValues(item);
0597 }
0598 return result;
0599 }
0600
0601 std::unique_ptr<HcalPFCorrs> HcalHardcodeCalibrations::producePFCorrs(const HcalPFCorrsRcd& rcd) {
0602 edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::producePFCorrs-> ...";
0603 auto const& topo = rcd.get(topoTokens_[kPFCorrs]);
0604
0605 auto result = std::make_unique<HcalPFCorrs>(&topo);
0606 const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
0607 for (auto cell : cells) {
0608 HcalPFCorr item(cell.rawId(), 1.0);
0609 result->addValues(item);
0610 }
0611 return result;
0612 }
0613
0614 std::unique_ptr<HcalTimeCorrs> HcalHardcodeCalibrations::produceTimeCorrs(const HcalTimeCorrsRcd& rcd) {
0615 edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceTimeCorrs-> ...";
0616 auto const& topo = rcd.get(topoTokens_[kTimeCorrs]);
0617
0618 auto result = std::make_unique<HcalTimeCorrs>(&topo);
0619 const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
0620 for (auto cell : cells) {
0621 HcalTimeCorr item(cell.rawId(), 0.0);
0622 result->addValues(item);
0623 }
0624 return result;
0625 }
0626
0627 std::unique_ptr<HcalZSThresholds> HcalHardcodeCalibrations::produceZSThresholds(const HcalZSThresholdsRcd& rcd) {
0628 edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceZSThresholds-> ...";
0629 auto const& topo = rcd.get(topoTokens_[kZSThresholds]);
0630
0631 auto result = std::make_unique<HcalZSThresholds>(&topo);
0632 const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
0633 for (auto cell : cells) {
0634 HcalZSThreshold item = dbHardcode.makeZSThreshold(cell);
0635 result->addValues(item);
0636 }
0637 return result;
0638 }
0639
0640 std::unique_ptr<HcalL1TriggerObjects> HcalHardcodeCalibrations::produceL1TriggerObjects(
0641 const HcalL1TriggerObjectsRcd& rcd) {
0642 edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceL1TriggerObjects-> ...";
0643 auto const& topo = rcd.get(topoTokens_[kL1TriggerObjects]);
0644
0645 auto result = std::make_unique<HcalL1TriggerObjects>(&topo);
0646 const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
0647 for (auto cell : cells) {
0648 HcalL1TriggerObject item(cell.rawId(), 0., 1., 0);
0649 result->addValues(item);
0650 }
0651
0652 result->setTagString("hardcoded");
0653 result->setAlgoString("hardcoded");
0654 return result;
0655 }
0656
0657 std::unique_ptr<HcalElectronicsMap> HcalHardcodeCalibrations::produceElectronicsMap(const HcalElectronicsMapRcd& rcd) {
0658 edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceElectronicsMap-> ...";
0659 auto const& topo = rcd.get(topoTokens_[kElectronicsMap]);
0660
0661 const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
0662 return dbHardcode.makeHardcodeMap(cells);
0663 }
0664
0665 std::unique_ptr<HcalValidationCorrs> HcalHardcodeCalibrations::produceValidationCorrs(
0666 const HcalValidationCorrsRcd& rcd) {
0667 edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceValidationCorrs-> ...";
0668 auto const& topo = rcd.get(topoTokens_[kValidationCorrs]);
0669
0670 auto result = std::make_unique<HcalValidationCorrs>(&topo);
0671 const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
0672 for (auto cell : cells) {
0673 HcalValidationCorr item(cell.rawId(), 1.0);
0674 result->addValues(item);
0675 }
0676 return result;
0677 }
0678
0679 std::unique_ptr<HcalLutMetadata> HcalHardcodeCalibrations::produceLutMetadata(const HcalLutMetadataRcd& rcd) {
0680 edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceLutMetadata-> ...";
0681 auto const& topo = rcd.get(topoTokens_[kLutMetadata]);
0682
0683 auto result = std::make_unique<HcalLutMetadata>(&topo);
0684
0685 result->setRctLsb(0.5);
0686 result->setNominalGain(0.177);
0687
0688 const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
0689 for (const auto& cell : cells) {
0690 float rcalib = 1.;
0691 int granularity = 1;
0692 int threshold = 0;
0693
0694 if (cell.isHcalTrigTowerDetId()) {
0695 rcalib = 0.;
0696 }
0697
0698 HcalLutMetadatum item(cell.rawId(), rcalib, granularity, threshold);
0699 result->addValues(item);
0700 }
0701
0702 return result;
0703 }
0704
0705 std::unique_ptr<HcalDcsValues> HcalHardcodeCalibrations::produceDcsValues(const HcalDcsRcd& rcd) {
0706 edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceDcsValues-> ...";
0707 auto result = std::make_unique<HcalDcsValues>();
0708 return result;
0709 }
0710
0711 std::unique_ptr<HcalDcsMap> HcalHardcodeCalibrations::produceDcsMap(const HcalDcsMapRcd& rcd) {
0712 edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceDcsMap-> ...";
0713
0714 return dbHardcode.makeHardcodeDcsMap();
0715 }
0716
0717 std::unique_ptr<HcalRecoParams> HcalHardcodeCalibrations::produceRecoParams(const HcalRecoParamsRcd& rec) {
0718 edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceRecoParams-> ...";
0719 auto const& topo = rec.get(topoTokens_[kRecoParams]);
0720
0721 auto result = std::make_unique<HcalRecoParams>(&topo);
0722 const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
0723 for (auto cell : cells) {
0724 HcalRecoParam item = dbHardcode.makeRecoParam(cell);
0725 result->addValues(item);
0726 }
0727 return result;
0728 }
0729
0730 std::unique_ptr<HcalTimingParams> HcalHardcodeCalibrations::produceTimingParams(const HcalTimingParamsRcd& rec) {
0731 edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceTimingParams-> ...";
0732 auto const& topo = rec.get(topoTokens_[kTimingParams]);
0733
0734 auto result = std::make_unique<HcalTimingParams>(&topo);
0735 const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
0736 for (auto cell : cells) {
0737 HcalTimingParam item = dbHardcode.makeTimingParam(cell);
0738 result->addValues(item);
0739 }
0740 return result;
0741 }
0742
0743 std::unique_ptr<HcalLongRecoParams> HcalHardcodeCalibrations::produceLongRecoParams(const HcalLongRecoParamsRcd& rec) {
0744 edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceLongRecoParams-> ...";
0745 auto const& topo = rec.get(topoTokens_[kLongRecoParams]);
0746
0747 auto result = std::make_unique<HcalLongRecoParams>(&topo);
0748 const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
0749 std::vector<unsigned int> mSignal;
0750 mSignal.push_back(4);
0751 mSignal.push_back(5);
0752 mSignal.push_back(6);
0753 std::vector<unsigned int> mNoise;
0754 mNoise.push_back(1);
0755 mNoise.push_back(2);
0756 mNoise.push_back(3);
0757 for (auto cell : cells) {
0758 if (cell.isHcalZDCDetId()) {
0759 HcalLongRecoParam item(cell.rawId(), mSignal, mNoise);
0760 result->addValues(item);
0761 }
0762 }
0763 return result;
0764 }
0765
0766 std::unique_ptr<HcalZDCLowGainFractions> HcalHardcodeCalibrations::produceZDCLowGainFractions(
0767 const HcalZDCLowGainFractionsRcd& rec) {
0768 edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceZDCLowGainFractions-> ...";
0769 auto const& topo = rec.get(topoTokens_[kZDCLowGainFractions]);
0770
0771 auto result = std::make_unique<HcalZDCLowGainFractions>(&topo);
0772 const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
0773 for (auto cell : cells) {
0774 HcalZDCLowGainFraction item(cell.rawId(), 0.0);
0775 result->addValues(item);
0776 }
0777 return result;
0778 }
0779
0780 std::unique_ptr<HcalMCParams> HcalHardcodeCalibrations::produceMCParams(const HcalMCParamsRcd& rec) {
0781
0782
0783 edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceMCParams-> ...";
0784 auto const& topo = rec.get(topoTokens_[kMCParams]);
0785 auto result = std::make_unique<HcalMCParams>(&topo);
0786 const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
0787 for (auto cell : cells) {
0788 HcalMCParam item = dbHardcode.makeMCParam(cell);
0789 result->addValues(item);
0790 }
0791 return result;
0792 }
0793
0794 std::unique_ptr<HcalFlagHFDigiTimeParams> HcalHardcodeCalibrations::produceFlagHFDigiTimeParams(
0795 const HcalFlagHFDigiTimeParamsRcd& rec) {
0796 edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceFlagHFDigiTimeParams-> ...";
0797 auto const& topo = rec.get(topoTokens_[kFlagHFDigiTimeParams]);
0798
0799 auto result = std::make_unique<HcalFlagHFDigiTimeParams>(&topo);
0800 const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
0801
0802 std::vector<double> coef;
0803 coef.push_back(0.93);
0804 coef.push_back(-0.38275);
0805 coef.push_back(-0.012667);
0806
0807 for (auto cell : cells) {
0808 HcalFlagHFDigiTimeParam item(cell.rawId(),
0809 1,
0810 3,
0811 2,
0812 40.,
0813 coef
0814 );
0815 result->addValues(item);
0816 }
0817 return result;
0818 }
0819
0820 std::unique_ptr<HcalFrontEndMap> HcalHardcodeCalibrations::produceFrontEndMap(const HcalFrontEndMapRcd& rec) {
0821 edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceFrontEndMap-> ...";
0822 auto const& topo = rec.get(topoTokens_[kFrontEndMap]);
0823
0824 const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
0825
0826 return dbHardcode.makeHardcodeFrontEndMap(cells);
0827 }
0828
0829 std::unique_ptr<HcalSiPMParameters> HcalHardcodeCalibrations::produceSiPMParameters(const HcalSiPMParametersRcd& rec) {
0830 edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceSiPMParameters-> ...";
0831 auto const& topo = rec.get(topoTokens_[kSiPMParameters]);
0832
0833 auto result = std::make_unique<HcalSiPMParameters>(&topo);
0834 const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
0835 for (auto cell : cells) {
0836 HcalSiPMParameter item = dbHardcode.makeHardcodeSiPMParameter(cell, &topo, iLumi);
0837 result->addValues(item);
0838 }
0839 return result;
0840 }
0841
0842 std::unique_ptr<HcalSiPMCharacteristics> HcalHardcodeCalibrations::produceSiPMCharacteristics(
0843 const HcalSiPMCharacteristicsRcd& rcd) {
0844 edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceSiPMCharacteristics-> ...";
0845
0846 return dbHardcode.makeHardcodeSiPMCharacteristics();
0847 }
0848
0849 std::unique_ptr<HcalTPChannelParameters> HcalHardcodeCalibrations::produceTPChannelParameters(
0850 const HcalTPChannelParametersRcd& rec) {
0851 edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceTPChannelParameters-> ...";
0852 auto const& topo = rec.get(topoTokens_[kTPChannelParameters]);
0853
0854 auto result = std::make_unique<HcalTPChannelParameters>(&topo);
0855 const std::vector<HcalGenericDetId>& cells = allCells(topo, dbHardcode.killHE());
0856 for (auto cell : cells) {
0857
0858
0859 if (cell.subdetId() == HcalTriggerTower)
0860 continue;
0861 HcalTPChannelParameter item = dbHardcode.makeHardcodeTPChannelParameter(cell);
0862 result->addValues(item);
0863 }
0864 return result;
0865 }
0866
0867 std::unique_ptr<HcalTPParameters> HcalHardcodeCalibrations::produceTPParameters(const HcalTPParametersRcd& rcd) {
0868 edm::LogInfo("HCAL") << "HcalHardcodeCalibrations::produceTPParameters-> ...";
0869
0870 auto result = std::make_unique<HcalTPParameters>();
0871 dbHardcode.makeHardcodeTPParameters(*result);
0872 return result;
0873 }
0874
0875 void HcalHardcodeCalibrations::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
0876 edm::ParameterSetDescription desc;
0877 desc.add<double>("iLumi", -1.);
0878 desc.add<bool>("HBRecalibration", false);
0879 desc.add<double>("HBreCalibCutoff", 20.);
0880 desc.add<edm::FileInPath>("HBmeanenergies", edm::FileInPath("CalibCalorimetry/HcalPlugins/data/meanenergiesHB.txt"));
0881 desc.add<bool>("HERecalibration", false);
0882 desc.add<double>("HEreCalibCutoff", 20.);
0883 desc.add<edm::FileInPath>("HEmeanenergies", edm::FileInPath("CalibCalorimetry/HcalPlugins/data/meanenergiesHE.txt"));
0884 desc.add<bool>("HFRecalibration", false);
0885 desc.add<bool>("GainWidthsForTrigPrims", false);
0886 desc.add<bool>("useHBUpgrade", false);
0887 desc.add<bool>("useHEUpgrade", false);
0888 desc.add<bool>("useHFUpgrade", false);
0889 desc.add<bool>("useHOUpgrade", true);
0890 desc.add<bool>("testHFQIE10", false);
0891 desc.add<bool>("testHEPlan1", false);
0892 desc.add<bool>("killHE", false);
0893 desc.add<bool>("useLayer0Weight", false);
0894 desc.add<bool>("useIeta18depth1", true);
0895 desc.addUntracked<std::vector<std::string>>("toGet", std::vector<std::string>());
0896 desc.addUntracked<bool>("fromDDD", false);
0897
0898 edm::ParameterSetDescription desc_hb;
0899 desc_hb.add<std::vector<double>>("gain", std::vector<double>({0.19}));
0900 desc_hb.add<std::vector<double>>("gainWidth", std::vector<double>({0.0}));
0901 desc_hb.add<double>("pedestal", 3.0);
0902 desc_hb.add<double>("pedestalWidth", 0.55);
0903 desc_hb.add<int>("zsThreshold", 8);
0904 desc_hb.add<std::vector<double>>("qieOffset", std::vector<double>({-0.49, 1.8, 7.2, 37.9}));
0905 desc_hb.add<std::vector<double>>("qieSlope", std::vector<double>({0.912, 0.917, 0.922, 0.923}));
0906 desc_hb.add<int>("qieType", 0);
0907 desc_hb.add<int>("mcShape", 125);
0908 desc_hb.add<int>("recoShape", 105);
0909 desc_hb.add<double>("photoelectronsToAnalog", 0.0);
0910 desc_hb.add<std::vector<double>>("darkCurrent", std::vector<double>({0.0}));
0911 desc_hb.add<std::vector<double>>("noiseCorrelation", std::vector<double>({0.0}));
0912 desc_hb.add<bool>("doRadiationDamage", false);
0913 desc_hb.add<double>("noiseThreshold", 0.0);
0914 desc_hb.add<double>("seedThreshold", 0.1);
0915 desc.add<edm::ParameterSetDescription>("hb", desc_hb);
0916
0917 edm::ParameterSetDescription desc_hbRaddam;
0918 desc_hbRaddam.add<double>("temperatureBase", 20.0);
0919 desc_hbRaddam.add<double>("temperatureNew", -5.0);
0920 desc_hbRaddam.add<double>("intlumiOffset", 150);
0921 desc_hbRaddam.add<double>("depVsTemp", 0.0631);
0922 desc_hbRaddam.add<double>("intlumiToNeutrons", 3.67e8);
0923 desc_hbRaddam.add<std::vector<double>>("depVsNeutrons", {5.69e-11, 7.90e-11});
0924
0925 edm::ParameterSetDescription desc_hbUpgrade;
0926 desc_hbUpgrade.add<std::vector<double>>("gain", std::vector<double>({0.00111111111111}));
0927 desc_hbUpgrade.add<std::vector<double>>("gainWidth", std::vector<double>({0}));
0928 desc_hbUpgrade.add<double>("pedestal", 18.0);
0929 desc_hbUpgrade.add<double>("pedestalWidth", 5.0);
0930 desc_hbUpgrade.add<int>("zsThreshold", 3);
0931 desc_hbUpgrade.add<std::vector<double>>("qieOffset", std::vector<double>({0.0, 0.0, 0.0, 0.0}));
0932 desc_hbUpgrade.add<std::vector<double>>("qieSlope", std::vector<double>({0.333, 0.333, 0.333, 0.333}));
0933 desc_hbUpgrade.add<int>("qieType", 2);
0934 desc_hbUpgrade.add<int>("mcShape", 206);
0935 desc_hbUpgrade.add<int>("recoShape", 206);
0936 desc_hbUpgrade.add<double>("photoelectronsToAnalog", 57.5);
0937 desc_hbUpgrade.add<std::vector<double>>("darkCurrent", std::vector<double>({0.055}));
0938 desc_hbUpgrade.add<std::vector<double>>("noiseCorrelation", std::vector<double>({0.26}));
0939 desc_hbUpgrade.add<bool>("doRadiationDamage", true);
0940 desc_hbUpgrade.add<edm::ParameterSetDescription>("radiationDamage", desc_hbRaddam);
0941 desc_hbUpgrade.add<double>("noiseThreshold", 0.0);
0942 desc_hbUpgrade.add<double>("seedThreshold", 0.1);
0943 desc.add<edm::ParameterSetDescription>("hbUpgrade", desc_hbUpgrade);
0944
0945 edm::ParameterSetDescription desc_he;
0946 desc_he.add<std::vector<double>>("gain", std::vector<double>({0.23}));
0947 desc_he.add<std::vector<double>>("gainWidth", std::vector<double>({0}));
0948 desc_he.add<double>("pedestal", 3.0);
0949 desc_he.add<double>("pedestalWidth", 0.79);
0950 desc_he.add<int>("zsThreshold", 9);
0951 desc_he.add<std::vector<double>>("qieOffset", std::vector<double>({-0.38, 2.0, 7.6, 39.6}));
0952 desc_he.add<std::vector<double>>("qieSlope", std::vector<double>({0.912, 0.916, 0.92, 0.922}));
0953 desc_he.add<int>("qieType", 0);
0954 desc_he.add<int>("mcShape", 125);
0955 desc_he.add<int>("recoShape", 105);
0956 desc_he.add<double>("photoelectronsToAnalog", 0.0);
0957 desc_he.add<std::vector<double>>("darkCurrent", std::vector<double>({0.0}));
0958 desc_he.add<std::vector<double>>("noiseCorrelation", std::vector<double>({0.0}));
0959 desc_he.add<bool>("doRadiationDamage", false);
0960 desc_he.add<double>("noiseThreshold", 0.0);
0961 desc_he.add<double>("seedThreshold", 0.1);
0962 desc.add<edm::ParameterSetDescription>("he", desc_he);
0963
0964 edm::ParameterSetDescription desc_heRaddam;
0965 desc_heRaddam.add<double>("temperatureBase", 20.0);
0966 desc_heRaddam.add<double>("temperatureNew", 5.0);
0967 desc_heRaddam.add<double>("intlumiOffset", 75);
0968 desc_heRaddam.add<double>("depVsTemp", 0.0631);
0969 desc_heRaddam.add<double>("intlumiToNeutrons", 2.92e8);
0970 desc_heRaddam.add<std::vector<double>>("depVsNeutrons", {5.69e-11, 7.90e-11});
0971
0972 edm::ParameterSetDescription desc_heUpgrade;
0973 desc_heUpgrade.add<std::vector<double>>("gain", std::vector<double>({0.00111111111111}));
0974 desc_heUpgrade.add<std::vector<double>>("gainWidth", std::vector<double>({0}));
0975 desc_heUpgrade.add<double>("pedestal", 18.0);
0976 desc_heUpgrade.add<double>("pedestalWidth", 5.0);
0977 desc_heUpgrade.add<int>("zsThreshold", 3);
0978 desc_heUpgrade.add<std::vector<double>>("qieOffset", std::vector<double>({0.0, 0.0, 0.0, 0.0}));
0979 desc_heUpgrade.add<std::vector<double>>("qieSlope", std::vector<double>({0.333, 0.333, 0.333, 0.333}));
0980 desc_heUpgrade.add<int>("qieType", 2);
0981 desc_heUpgrade.add<int>("mcShape", 206);
0982 desc_heUpgrade.add<int>("recoShape", 206);
0983 desc_heUpgrade.add<double>("photoelectronsToAnalog", 57.5);
0984 desc_heUpgrade.add<std::vector<double>>("darkCurrent", std::vector<double>({0.055}));
0985 desc_heUpgrade.add<std::vector<double>>("noiseCorrelation", std::vector<double>({0.26}));
0986 desc_heUpgrade.add<bool>("doRadiationDamage", true);
0987 desc_heUpgrade.add<edm::ParameterSetDescription>("radiationDamage", desc_heRaddam);
0988 desc_heUpgrade.add<double>("noiseThreshold", 0.0);
0989 desc_heUpgrade.add<double>("seedThreshold", 0.1);
0990 desc.add<edm::ParameterSetDescription>("heUpgrade", desc_heUpgrade);
0991
0992 edm::ParameterSetDescription desc_hf;
0993 desc_hf.add<std::vector<double>>("gain", std::vector<double>({0.14, 0.135}));
0994 desc_hf.add<std::vector<double>>("gainWidth", std::vector<double>({0.0, 0.0}));
0995 desc_hf.add<double>("pedestal", 3.0);
0996 desc_hf.add<double>("pedestalWidth", 0.84);
0997 desc_hf.add<int>("zsThreshold", -9999);
0998 desc_hf.add<std::vector<double>>("qieOffset", std::vector<double>({-0.87, 1.4, 7.8, -29.6}));
0999 desc_hf.add<std::vector<double>>("qieSlope", std::vector<double>({0.359, 0.358, 0.36, 0.367}));
1000 desc_hf.add<int>("qieType", 0);
1001 desc_hf.add<int>("mcShape", 301);
1002 desc_hf.add<int>("recoShape", 301);
1003 desc_hf.add<double>("photoelectronsToAnalog", 0.0);
1004 desc_hf.add<std::vector<double>>("darkCurrent", std::vector<double>({0.0}));
1005 desc_hf.add<std::vector<double>>("noiseCorrelation", std::vector<double>({0.0}));
1006 desc_hf.add<bool>("doRadiationDamage", false);
1007 desc_hf.add<double>("noiseThreshold", 0.0);
1008 desc_hf.add<double>("seedThreshold", 0.1);
1009 desc.add<edm::ParameterSetDescription>("hf", desc_hf);
1010
1011 edm::ParameterSetDescription desc_hfUpgrade;
1012 desc_hfUpgrade.add<std::vector<double>>("gain", std::vector<double>({0.14, 0.135}));
1013 desc_hfUpgrade.add<std::vector<double>>("gainWidth", std::vector<double>({0.0, 0.0}));
1014 desc_hfUpgrade.add<double>("pedestal", 13.33);
1015 desc_hfUpgrade.add<double>("pedestalWidth", 3.33);
1016 desc_hfUpgrade.add<int>("zsThreshold", -9999);
1017 desc_hfUpgrade.add<std::vector<double>>("qieOffset", std::vector<double>({0.0697, -0.7405, 12.38, -671.9}));
1018 desc_hfUpgrade.add<std::vector<double>>("qieSlope", std::vector<double>({0.297, 0.298, 0.298, 0.313}));
1019 desc_hfUpgrade.add<int>("qieType", 1);
1020 desc_hfUpgrade.add<int>("mcShape", 301);
1021 desc_hfUpgrade.add<int>("recoShape", 301);
1022 desc_hfUpgrade.add<double>("photoelectronsToAnalog", 0.0);
1023 desc_hfUpgrade.add<std::vector<double>>("darkCurrent", std::vector<double>({0.0}));
1024 desc_hfUpgrade.add<std::vector<double>>("noiseCorrelation", std::vector<double>({0.0}));
1025 desc_hfUpgrade.add<bool>("doRadiationDamage", false);
1026 desc_hfUpgrade.add<double>("noiseThreshold", 0.0);
1027 desc_hfUpgrade.add<double>("seedThreshold", 0.1);
1028 desc.add<edm::ParameterSetDescription>("hfUpgrade", desc_hfUpgrade);
1029
1030 edm::ParameterSetDescription desc_hfrecal;
1031 desc_hfrecal.add<std::vector<double>>("HFdepthOneParameterA", std::vector<double>());
1032 desc_hfrecal.add<std::vector<double>>("HFdepthOneParameterB", std::vector<double>());
1033 desc_hfrecal.add<std::vector<double>>("HFdepthTwoParameterA", std::vector<double>());
1034 desc_hfrecal.add<std::vector<double>>("HFdepthTwoParameterB", std::vector<double>());
1035 desc.add<edm::ParameterSetDescription>("HFRecalParameterBlock", desc_hfrecal);
1036
1037 edm::ParameterSetDescription desc_ho;
1038 desc_ho.add<std::vector<double>>("gain", std::vector<double>({0.006, 0.0087}));
1039 desc_ho.add<std::vector<double>>("gainWidth", std::vector<double>({0.0, 0.0}));
1040 desc_ho.add<double>("pedestal", 11.0);
1041 desc_ho.add<double>("pedestalWidth", 0.57);
1042 desc_ho.add<int>("zsThreshold", 24);
1043 desc_ho.add<std::vector<double>>("qieOffset", std::vector<double>({-0.44, 1.4, 7.1, 38.5}));
1044 desc_ho.add<std::vector<double>>("qieSlope", std::vector<double>({0.907, 0.915, 0.92, 0.921}));
1045 desc_ho.add<int>("qieType", 0);
1046 desc_ho.add<int>("mcShape", 201);
1047 desc_ho.add<int>("recoShape", 201);
1048 desc_ho.add<double>("photoelectronsToAnalog", 4.0);
1049 desc_ho.add<std::vector<double>>("darkCurrent", std::vector<double>({0.0}));
1050 desc_ho.add<std::vector<double>>("noiseCorrelation", std::vector<double>({0.0}));
1051 desc_ho.add<bool>("doRadiationDamage", false);
1052 desc_ho.add<double>("noiseThreshold", 0.0);
1053 desc_ho.add<double>("seedThreshold", 0.1);
1054 desc.add<edm::ParameterSetDescription>("ho", desc_ho);
1055
1056 edm::ParameterSetDescription validator_sipm;
1057 validator_sipm.add<int>("pixels", 1);
1058 validator_sipm.add<double>("crosstalk", 0);
1059 validator_sipm.add<double>("nonlin1", 1);
1060 validator_sipm.add<double>("nonlin2", 0);
1061 validator_sipm.add<double>("nonlin3", 0);
1062 std::vector<edm::ParameterSet> default_sipm(1);
1063 desc.addVPSet("SiPMCharacteristics", validator_sipm, default_sipm);
1064
1065 descriptions.addDefault(desc);
1066 }