File indexing completed on 2025-07-09 05:00:38
0001 #include <memory>
0002
0003 #include "Validation/HGCalValidation/interface/BarrelValidator.h"
0004
0005 #include "SimCalorimetry/HGCalAssociatorProducers/interface/AssociatorTools.h"
0006
0007 #include "FWCore/Framework/interface/MakerMacros.h"
0008 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0009
0010 #include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h"
0011 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0012
0013 using namespace std;
0014 using namespace edm;
0015 using namespace ticl;
0016
0017 bool assignTracksterMaps(const edm::Handle<std::vector<ticl::Trackster>>& tracksterHandle,
0018 const edm::Handle<std::vector<ticl::Trackster>>& simTracksterHandle,
0019 const edm::Handle<std::vector<ticl::Trackster>>& simTracksterFromCPHandle,
0020 const std::vector<edm::Handle<TracksterToTracksterMap>>& tracksterToTracksterMapsHandles,
0021 edm::Handle<TracksterToTracksterMap>& trackstersToSimTrackstersMap,
0022 edm::Handle<TracksterToTracksterMap>& simTrackstersToTrackstersMap,
0023 edm::Handle<TracksterToTracksterMap>& trackstersToSimTrackstersFromCPsMap,
0024 edm::Handle<TracksterToTracksterMap>& simTrackstersFromCPsToTrackstersMap) {
0025 const auto recoTrackstersProductId = tracksterHandle.id();
0026 const auto simTrackstersProductId = simTracksterHandle.id();
0027 const auto simTrackstersFromCPsProductId = simTracksterFromCPHandle.id();
0028 if (recoTrackstersProductId == simTrackstersProductId or recoTrackstersProductId == simTrackstersFromCPsProductId) {
0029 edm::LogInfo("MissingProduct") << "no SimTrackster to Simtrackster map available.";
0030 return false;
0031 }
0032 for (const auto& handle : tracksterToTracksterMapsHandles) {
0033 const auto& firstID = handle->getCollectionIDs().first.id();
0034 const auto& secondID = handle->getCollectionIDs().second.id();
0035
0036 if (firstID == recoTrackstersProductId && secondID == simTrackstersProductId) {
0037 trackstersToSimTrackstersMap = handle;
0038 } else if (firstID == simTrackstersProductId && secondID == recoTrackstersProductId) {
0039 simTrackstersToTrackstersMap = handle;
0040 } else if (firstID == recoTrackstersProductId && secondID == simTrackstersFromCPsProductId) {
0041 trackstersToSimTrackstersFromCPsMap = handle;
0042 } else if (firstID == simTrackstersFromCPsProductId && secondID == recoTrackstersProductId) {
0043 simTrackstersFromCPsToTrackstersMap = handle;
0044 }
0045 }
0046 if (not trackstersToSimTrackstersMap.isValid()) {
0047 edm::LogError("MissingProduct") << "trackstersToSimTrackstersMap is not valid";
0048 return false;
0049 }
0050 if (not simTrackstersToTrackstersMap.isValid()) {
0051 edm::LogError("MissingProduct") << "simTrackstersToTrackstersMap is not valid";
0052 return false;
0053 }
0054 if (not trackstersToSimTrackstersFromCPsMap.isValid()) {
0055 edm::LogError("MissingProduct") << "trackstersToSimTrackstersFromCPsMap is not valid";
0056 return false;
0057 }
0058 if (not simTrackstersFromCPsToTrackstersMap.isValid()) {
0059 edm::LogError("MissingProduct") << "simTrackstersFromCPsToTrackstersMap is not valid";
0060 return false;
0061 }
0062 return true;
0063 }
0064
0065 BarrelValidator::BarrelValidator(const edm::ParameterSet& pset)
0066 : caloGeomToken_(esConsumes<CaloGeometry, CaloGeometryRecord>()),
0067 label_lcl(pset.getParameter<edm::InputTag>("label_lcl")),
0068 associator_(pset.getUntrackedParameter<std::vector<edm::InputTag>>("associator")),
0069 associatorSim_(pset.getUntrackedParameter<std::vector<edm::InputTag>>("associatorSim")),
0070 SaveGeneralInfo_(pset.getUntrackedParameter<bool>("SaveGeneralInfo")),
0071 doCaloParticlePlots_(pset.getUntrackedParameter<bool>("doCaloParticlePlots")),
0072 doCaloParticleSelection_(pset.getUntrackedParameter<bool>("doCaloParticleSelection")),
0073 doSimClustersPlots_(pset.getUntrackedParameter<bool>("doSimClustersPlots")),
0074 label_SimClustersPlots_(pset.getParameter<edm::InputTag>("label_SimClusters")),
0075 label_SimClustersLevel_(pset.getParameter<edm::InputTag>("label_SimClustersLevel")),
0076 doLayerClustersPlots_(pset.getUntrackedParameter<bool>("doLayerClustersPlots")),
0077 label_layerClustersPlots_(pset.getParameter<edm::InputTag>("label_layerClusterPlots")),
0078 label_LCToCPLinking_(pset.getParameter<edm::InputTag>("label_LCToCPLinking")),
0079 barrel_hits_label_(pset.getParameter<std::vector<edm::InputTag>>("barrel_hits")),
0080 scToCpMapToken_(
0081 consumes<SimClusterToCaloParticleMap>(pset.getParameter<edm::InputTag>("simClustersToCaloParticlesMap"))) {
0082
0083 const edm::InputTag& label_cp_effic_tag = pset.getParameter<edm::InputTag>("label_cp_effic");
0084 const edm::InputTag& label_cp_fake_tag = pset.getParameter<edm::InputTag>("label_cp_fake");
0085
0086 for (auto& label : barrel_hits_label_) {
0087 barrel_hits_tokens_.push_back(consumes<std::vector<reco::PFRecHit>>(label));
0088 }
0089
0090 label_cp_effic = consumes<std::vector<CaloParticle>>(label_cp_effic_tag);
0091 label_cp_fake = consumes<std::vector<CaloParticle>>(label_cp_fake_tag);
0092
0093 simVertices_ = consumes<std::vector<SimVertex>>(pset.getParameter<edm::InputTag>("simVertices"));
0094
0095 for (auto& itag : label_clustersmask) {
0096 clustersMaskTokens_.push_back(consumes<std::vector<float>>(itag));
0097 }
0098
0099 for (auto& itag : associatorSim_) {
0100 associatorMapRtSim.push_back(consumes<ticl::RecoToSimCollectionWithSimClusters>(itag));
0101 }
0102 for (auto& itag : associatorSim_) {
0103 associatorMapSimtR.push_back(consumes<ticl::SimToRecoCollectionWithSimClusters>(itag));
0104 }
0105
0106 barrelHitMap_ =
0107 consumes<std::unordered_map<DetId, const unsigned int>>(edm::InputTag("recHitMapProducer", "barrelRecHitMap"));
0108
0109 simClusters_ = consumes<std::vector<SimCluster>>(pset.getParameter<edm::InputTag>("label_scl"));
0110
0111 layerclusters_ = consumes<reco::CaloClusterCollection>(label_lcl);
0112
0113 for (auto& itag : associator_) {
0114 associatorMapRtS.push_back(consumes<ticl::RecoToSimCollection>(itag));
0115 }
0116 for (auto& itag : associator_) {
0117 associatorMapStR.push_back(consumes<ticl::SimToRecoCollection>(itag));
0118 }
0119
0120 cpSelector = CaloParticleSelector(pset.getParameter<double>("ptMinCP"),
0121 pset.getParameter<double>("ptMaxCP"),
0122 pset.getParameter<double>("minRapidityCP"),
0123 pset.getParameter<double>("maxRapidityCP"),
0124 pset.getParameter<double>("lipCP"),
0125 pset.getParameter<double>("tipCP"),
0126 pset.getParameter<int>("minHitCP"),
0127 pset.getParameter<int>("maxSimClustersCP"),
0128 pset.getParameter<bool>("signalOnlyCP"),
0129 pset.getParameter<bool>("intimeOnlyCP"),
0130 pset.getParameter<bool>("chargedOnlyCP"),
0131 pset.getParameter<bool>("stableOnlyCP"),
0132 pset.getParameter<bool>("notConvertedOnlyCP"),
0133 pset.getParameter<std::vector<int>>("pdgIdCP"));
0134
0135 tools_ = std::make_shared<hgcal::RecHitTools>();
0136
0137 particles_to_monitor_ = pset.getParameter<std::vector<int>>("pdgIdCP");
0138 totallayers_to_monitor_ = pset.getParameter<int>("totallayers_to_monitor");
0139
0140 ParameterSet psetForHistoProducerAlgo = pset.getParameter<ParameterSet>("histoProducerAlgoBlock");
0141 histoProducerAlgo_ = std::make_unique<BarrelVHistoProducerAlgo>(psetForHistoProducerAlgo);
0142
0143 dirName_ = pset.getParameter<std::string>("dirName");
0144 }
0145
0146 BarrelValidator::~BarrelValidator() {}
0147
0148 void BarrelValidator::bookHistograms(DQMStore::IBooker& ibook,
0149 edm::Run const&,
0150 edm::EventSetup const& setup,
0151 Histograms& histograms) const {
0152 if (SaveGeneralInfo_) {
0153 ibook.cd();
0154 ibook.setCurrentFolder(dirName_ + "GeneralInfo");
0155 histoProducerAlgo_->bookInfo(ibook, histograms.histoProducerAlgo);
0156 }
0157
0158 if (doCaloParticlePlots_) {
0159 ibook.cd();
0160
0161 for (auto const particle : particles_to_monitor_) {
0162 ibook.setCurrentFolder(dirName_ + "SelectedCaloParticles/" + std::to_string(particle));
0163 histoProducerAlgo_->bookCaloParticleHistos(
0164 ibook, histograms.histoProducerAlgo, particle, totallayers_to_monitor_);
0165 }
0166 ibook.cd();
0167 ibook.setCurrentFolder(dirName_);
0168 }
0169
0170
0171 if (doSimClustersPlots_) {
0172 ibook.cd();
0173 ibook.setCurrentFolder(dirName_ + label_SimClustersPlots_.label() + "/" + label_SimClustersLevel_.label());
0174 histoProducerAlgo_->bookSimClusterHistos(ibook, histograms.histoProducerAlgo, totallayers_to_monitor_);
0175
0176 for (unsigned int ws = 0; ws < label_clustersmask.size(); ws++) {
0177 ibook.cd();
0178 InputTag algo = label_clustersmask[ws];
0179 string dirName = dirName_ + label_SimClustersPlots_.label() + "/";
0180 if (!algo.process().empty())
0181 dirName += algo.process() + "_";
0182 LogDebug("BarrelValidator") << dirName << "\n";
0183 if (!algo.label().empty())
0184 dirName += algo.label() + "_";
0185 LogDebug("BarrelValidator") << dirName << "\n";
0186 if (!algo.instance().empty())
0187 dirName += algo.instance() + "_";
0188 LogDebug("BarrelValidator") << dirName << "\n";
0189
0190 if (!dirName.empty()) {
0191 dirName.resize(dirName.size() - 1);
0192 }
0193
0194 LogDebug("BarrelValidator") << dirName << "\n";
0195
0196 ibook.setCurrentFolder(dirName);
0197
0198 histoProducerAlgo_->bookSimClusterAssociationHistos(ibook, histograms.histoProducerAlgo, totallayers_to_monitor_);
0199 }
0200 }
0201
0202
0203 if (doLayerClustersPlots_) {
0204 ibook.cd();
0205 ibook.setCurrentFolder(dirName_ + label_layerClustersPlots_.label() + "/ClusterLevel");
0206 histoProducerAlgo_->bookClusterHistos_ClusterLevel(ibook, histograms.histoProducerAlgo, totallayers_to_monitor_);
0207 ibook.cd();
0208 ibook.setCurrentFolder(dirName_ + label_layerClustersPlots_.label() + "/" + label_LCToCPLinking_.label());
0209 histoProducerAlgo_->bookClusterHistos_LCtoCP_association(
0210 ibook, histograms.histoProducerAlgo, totallayers_to_monitor_);
0211
0212 ibook.cd();
0213 ibook.setCurrentFolder(dirName_ + label_layerClustersPlots_.label() + "/CellLevel");
0214 histoProducerAlgo_->bookClusterHistos_CellLevel(ibook, histograms.histoProducerAlgo, totallayers_to_monitor_);
0215 }
0216 }
0217
0218 void BarrelValidator::cpParametersAndSelection(const Histograms& histograms,
0219 std::vector<CaloParticle> const& cPeff,
0220 std::vector<SimVertex> const& simVertices,
0221 std::vector<size_t>& selected_cPeff,
0222 unsigned int layers,
0223 std::unordered_map<DetId, const unsigned int> const& barrelHitMap,
0224 MultiVectorManager<reco::PFRecHit> const& barrelHits) const {
0225 selected_cPeff.reserve(cPeff.size());
0226
0227 size_t j = 0;
0228 for (auto const& caloParticle : cPeff) {
0229 int id = caloParticle.pdgId();
0230
0231 if (!doCaloParticleSelection_ || (doCaloParticleSelection_ && cpSelector(caloParticle, simVertices))) {
0232 selected_cPeff.push_back(j);
0233 if (doCaloParticlePlots_) {
0234 histoProducerAlgo_->fill_caloparticle_histos(
0235 histograms.histoProducerAlgo, id, caloParticle, simVertices, layers, barrelHitMap, barrelHits);
0236 }
0237 }
0238 ++j;
0239 }
0240 }
0241
0242 void BarrelValidator::dqmAnalyze(const edm::Event& event,
0243 const edm::EventSetup& setup,
0244 const Histograms& histograms) const {
0245 using namespace reco;
0246
0247 LogDebug("BarrelValidator") << "\n===================================================="
0248 << "\n"
0249 << "Analyzing new event"
0250 << "\n"
0251 << "====================================================\n"
0252 << "\n";
0253
0254 edm::Handle<std::vector<SimVertex>> simVerticesHandle;
0255 event.getByToken(simVertices_, simVerticesHandle);
0256 std::vector<SimVertex> const& simVertices = *simVerticesHandle;
0257
0258 edm::Handle<std::vector<CaloParticle>> caloParticleHandle;
0259 event.getByToken(label_cp_effic, caloParticleHandle);
0260 std::vector<CaloParticle> const& caloParticles = *caloParticleHandle;
0261
0262 edm::ESHandle<CaloGeometry> geom = setup.getHandle(caloGeomToken_);
0263 tools_->setGeometry(*geom);
0264 histoProducerAlgo_->setRecHitTools(tools_);
0265
0266 std::vector<ticl::RecoToSimCollection> recSimColl;
0267 std::vector<ticl::SimToRecoCollection> simRecColl;
0268 for (unsigned int i = 0; i < associatorMapRtS.size(); ++i) {
0269 edm::Handle<ticl::SimToRecoCollection> simToRecoCollectionH;
0270 event.getByToken(associatorMapStR[i], simToRecoCollectionH);
0271 simRecColl.push_back(*simToRecoCollectionH);
0272 edm::Handle<ticl::RecoToSimCollection> recoToSimCollectionH;
0273 event.getByToken(associatorMapRtS[i], recoToSimCollectionH);
0274 recSimColl.push_back(*recoToSimCollectionH);
0275 }
0276
0277 edm::Handle<std::unordered_map<DetId, const unsigned int>> barrelHitMapHandle;
0278 event.getByToken(barrelHitMap_, barrelHitMapHandle);
0279 const std::unordered_map<DetId, const unsigned int>& barrelHitMap = *barrelHitMapHandle;
0280
0281 MultiVectorManager<reco::PFRecHit> barrelRechitManager;
0282 for (const auto& token : barrel_hits_tokens_) {
0283 Handle<std::vector<reco::PFRecHit>> hitsHandle;
0284 event.getByToken(token, hitsHandle);
0285 barrelRechitManager.addVector(*hitsHandle);
0286 }
0287
0288
0289 if (SaveGeneralInfo_) {
0290 histoProducerAlgo_->fill_info_histos(histograms.histoProducerAlgo, totallayers_to_monitor_);
0291 }
0292
0293 std::vector<size_t> cPIndices;
0294
0295
0296 removeCPFromPU(caloParticles, cPIndices);
0297
0298
0299
0300
0301
0302 LogTrace("BarrelValidator") << "\n# of CaloParticles: " << caloParticles.size() << "\n" << std::endl;
0303 std::vector<size_t> selected_cPeff;
0304 cpParametersAndSelection(histograms,
0305 caloParticles,
0306 simVertices,
0307 selected_cPeff,
0308 totallayers_to_monitor_,
0309 barrelHitMap,
0310 barrelRechitManager);
0311
0312
0313
0314 edm::Handle<std::vector<SimCluster>> simClustersHandle;
0315 event.getByToken(simClusters_, simClustersHandle);
0316 std::vector<SimCluster> const& simClusters = *simClustersHandle;
0317
0318
0319 edm::Handle<reco::CaloClusterCollection> clusterHandle;
0320 event.getByToken(layerclusters_, clusterHandle);
0321 const reco::CaloClusterCollection& clusters = *clusterHandle;
0322
0323 auto nSimClusters = simClusters.size();
0324 std::vector<size_t> sCIndices;
0325
0326
0327 for (unsigned int scId = 0; scId < nSimClusters; ++scId) {
0328 if (simClusters[scId].g4Tracks()[0].eventId().event() != 0 or
0329 simClusters[scId].g4Tracks()[0].eventId().bunchCrossing() != 0) {
0330 LogDebug("BarrelValidator") << "Excluding SimClusters from event: "
0331 << simClusters[scId].g4Tracks()[0].eventId().event()
0332 << " with BX: " << simClusters[scId].g4Tracks()[0].eventId().bunchCrossing()
0333 << std::endl;
0334 continue;
0335 }
0336 sCIndices.emplace_back(scId);
0337 }
0338
0339
0340
0341
0342 if (doSimClustersPlots_) {
0343 histoProducerAlgo_->fill_simCluster_histos(histograms.histoProducerAlgo, simClusters, totallayers_to_monitor_);
0344
0345 for (unsigned int ws = 0; ws < label_clustersmask.size(); ws++) {
0346 const auto& inputClusterMask = event.get(clustersMaskTokens_[ws]);
0347
0348 std::vector<ticl::RecoToSimCollectionWithSimClusters> recSimColl;
0349 std::vector<ticl::SimToRecoCollectionWithSimClusters> simRecColl;
0350 for (unsigned int i = 0; i < associatorMapRtSim.size(); ++i) {
0351 edm::Handle<ticl::SimToRecoCollectionWithSimClusters> simtorecoCollectionH;
0352 event.getByToken(associatorMapSimtR[i], simtorecoCollectionH);
0353 simRecColl.push_back(*simtorecoCollectionH);
0354 edm::Handle<ticl::RecoToSimCollectionWithSimClusters> recotosimCollectionH;
0355 event.getByToken(associatorMapRtSim[i], recotosimCollectionH);
0356 recSimColl.push_back(*recotosimCollectionH);
0357 }
0358
0359 histoProducerAlgo_->fill_simClusterAssociation_histos(histograms.histoProducerAlgo,
0360 ws,
0361 clusterHandle,
0362 clusters,
0363 simClustersHandle,
0364 simClusters,
0365 sCIndices,
0366 inputClusterMask,
0367 barrelHitMap,
0368 totallayers_to_monitor_,
0369 recSimColl[0],
0370 simRecColl[0],
0371 barrelRechitManager);
0372
0373
0374 LogTrace("BarrelValidator") << "\n# of SimClusters: " << nSimClusters
0375 << ", layerClusters mask label: " << label_clustersmask[ws].label() << "\n";
0376 }
0377 }
0378
0379
0380
0381
0382 int w = 0;
0383 if (doLayerClustersPlots_) {
0384 histoProducerAlgo_->fill_generic_cluster_histos(histograms.histoProducerAlgo,
0385 w,
0386 clusterHandle,
0387 clusters,
0388 caloParticleHandle,
0389 caloParticles,
0390 cPIndices,
0391 selected_cPeff,
0392 barrelHitMap,
0393 totallayers_to_monitor_,
0394 recSimColl[0],
0395 simRecColl[0],
0396 barrelRechitManager);
0397
0398 for (unsigned int layerclusterIndex = 0; layerclusterIndex < clusters.size(); layerclusterIndex++) {
0399 histoProducerAlgo_->fill_cluster_histos(histograms.histoProducerAlgo, w, clusters[layerclusterIndex]);
0400 }
0401
0402
0403 LogTrace("BarrelValidator") << "\n# of layer clusters with " << label_lcl.process() << ":" << label_lcl.label()
0404 << ":" << label_lcl.instance() << ": " << clusters.size() << "\n";
0405 }
0406 }
0407
0408 void BarrelValidator::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
0409
0410 edm::ParameterSetDescription desc;
0411 desc.add<double>("ptMinCP", 0.5);
0412 desc.add<double>("ptMaxCP", 300.0);
0413 desc.add<double>("minRapidityCP", -3.1);
0414 desc.add<double>("maxRapidityCP", 3.1);
0415 desc.add<double>("lipCP", 30.0);
0416 desc.add<double>("tipCP", 60);
0417 desc.add<bool>("chargedOnlyCP", false);
0418 desc.add<bool>("stableOnlyCP", false);
0419 desc.add<bool>("notConvertedOnlyCP", true);
0420 desc.add<std::vector<int>>("pdgIdCP",
0421 {
0422 11,
0423 -11,
0424 13,
0425 -13,
0426 22,
0427 111,
0428 211,
0429 -211,
0430 321,
0431 -321,
0432 311,
0433 130,
0434 310,
0435 });
0436 desc.add<bool>("signalOnlyCP", true);
0437 desc.add<bool>("intimeOnlyCP", true);
0438 desc.add<int>("minHitCP", 0);
0439 desc.add<int>("maxSimClustersCP", -1);
0440 {
0441 edm::ParameterSetDescription psd1;
0442 psd1.add<double>("minEta", -4.5);
0443 psd1.add<double>("maxEta", 4.5);
0444 psd1.add<int>("nintEta", 100);
0445 psd1.add<bool>("useFabsEta", false);
0446 psd1.add<double>("minEne", 0.0);
0447 psd1.add<double>("maxEne", 500.0);
0448 psd1.add<int>("nintEne", 250);
0449 psd1.add<double>("minPt", 0.0);
0450 psd1.add<double>("maxPt", 100.0);
0451 psd1.add<int>("nintPt", 100);
0452 psd1.add<double>("minPhi", -3.2);
0453 psd1.add<double>("maxPhi", 3.2);
0454 psd1.add<int>("nintPhi", 80);
0455 psd1.add<double>("minMixedHitsSimCluster", 0.0);
0456 psd1.add<double>("maxMixedHitsSimCluster", 800.0);
0457 psd1.add<int>("nintMixedHitsSimCluster", 100);
0458 psd1.add<double>("minMixedHitsCluster", 0.0);
0459 psd1.add<double>("maxMixedHitsCluster", 800.0);
0460 psd1.add<int>("nintMixedHitsCluster", 100);
0461 psd1.add<double>("minEneCl", 0.0);
0462 psd1.add<double>("maxEneCl", 110.0);
0463 psd1.add<int>("nintEneCl", 110);
0464 psd1.add<double>("minLongDepBary", 0.0);
0465 psd1.add<double>("maxLongDepBary", 110.0);
0466 psd1.add<int>("nintLongDepBary", 110);
0467 psd1.add<double>("minZpos", -550.0);
0468 psd1.add<double>("maxZpos", 550.0);
0469 psd1.add<int>("nintZpos", 1100);
0470 psd1.add<double>("minTotNsimClsperlay", 0.0);
0471 psd1.add<double>("maxTotNsimClsperlay", 50.0);
0472 psd1.add<int>("nintTotNsimClsperlay", 50);
0473 psd1.add<double>("minTotNClsperlay", 0.0);
0474 psd1.add<double>("maxTotNClsperlay", 1000.0);
0475 psd1.add<int>("nintTotNClsperlay", 50);
0476 psd1.add<double>("minEneClperlay", 0.0);
0477 psd1.add<double>("maxEneClperlay", 1000.0);
0478 psd1.add<int>("nintEneClperlay", 110);
0479 psd1.add<double>("minScore", 0.0);
0480 psd1.add<double>("maxScore", 1.02);
0481 psd1.add<int>("nintScore", 51);
0482 psd1.add<double>("minSharedEneFrac", 0.0);
0483 psd1.add<double>("maxSharedEneFrac", 1.02);
0484 psd1.add<int>("nintSharedEneFrac", 51);
0485 psd1.add<double>("minTSTSharedEneFracEfficiency", 0.5);
0486 psd1.add<double>("minTSTSharedEneFrac", 0.0);
0487 psd1.add<double>("maxTSTSharedEneFrac", 1.01);
0488 psd1.add<int>("nintTSTSharedEneFrac", 101);
0489 psd1.add<double>("minTotNTSTs", 0.0);
0490 psd1.add<double>("maxTotNTSTs", 50.0);
0491 psd1.add<int>("nintTotNTSTs", 50);
0492 psd1.add<double>("minTotNClsinTSTs", 0.0);
0493 psd1.add<double>("maxTotNClsinTSTs", 400.0);
0494 psd1.add<int>("nintTotNClsinTSTs", 100);
0495
0496 psd1.add<double>("minTotNClsinTSTsperlayer", 0.0);
0497 psd1.add<double>("maxTotNClsinTSTsperlayer", 50.0);
0498 psd1.add<int>("nintTotNClsinTSTsperlayer", 50);
0499 psd1.add<double>("minMplofLCs", 0.0);
0500 psd1.add<double>("maxMplofLCs", 20.0);
0501 psd1.add<int>("nintMplofLCs", 20);
0502 psd1.add<double>("minSizeCLsinTSTs", 0.0);
0503 psd1.add<double>("maxSizeCLsinTSTs", 50.0);
0504 psd1.add<int>("nintSizeCLsinTSTs", 50);
0505 psd1.add<double>("minClEnepermultiplicity", 0.0);
0506 psd1.add<double>("maxClEnepermultiplicity", 10.0);
0507 psd1.add<int>("nintClEnepermultiplicity", 10);
0508 psd1.add<double>("minX", -300.0);
0509 psd1.add<double>("maxX", 300.0);
0510 psd1.add<int>("nintX", 100);
0511 psd1.add<double>("minY", -300.0);
0512 psd1.add<double>("maxY", 300.0);
0513 psd1.add<int>("nintY", 100);
0514 psd1.add<double>("minZ", -550.0);
0515 psd1.add<double>("maxZ", 550.0);
0516 psd1.add<int>("nintZ", 1100);
0517 desc.add<edm::ParameterSetDescription>("histoProducerAlgoBlock", psd1);
0518 }
0519 desc.add<std::vector<edm::InputTag>>("hgcal_hits",
0520 {
0521 edm::InputTag("HGCalRecHit", "HGCEERecHits"),
0522 edm::InputTag("HGCalRecHit", "HGCHEFRecHits"),
0523 edm::InputTag("HGCalRecHit", "HGCHEBRecHits"),
0524 });
0525 desc.add<std::vector<edm::InputTag>>("barrel_hits",
0526 {
0527 edm::InputTag("particleFlowRecHitECAL"),
0528 edm::InputTag("particleFlowRecHitHBHE"),
0529 });
0530
0531 desc.add<edm::InputTag>("label_lcl", edm::InputTag("hgcalMergeLayerClusters"));
0532 desc.add<std::vector<edm::InputTag>>("label_tst",
0533 {
0534 edm::InputTag("ticlTrackstersCLUE3DHigh"),
0535 edm::InputTag("ticlTrackstersMerge"),
0536 edm::InputTag("ticlSimTracksters", "fromCPs"),
0537 edm::InputTag("ticlSimTracksters"),
0538 });
0539 desc.add<edm::InputTag>("label_simTS", edm::InputTag("ticlSimTracksters"));
0540 desc.add<edm::InputTag>("label_simTSFromCP", edm::InputTag("ticlSimTracksters", "fromCPs"));
0541 desc.addUntracked<std::vector<edm::InputTag>>("associator",
0542 {edm::InputTag("barrelLayerClusterCaloParticleAssociation")});
0543 desc.addUntracked<std::vector<edm::InputTag>>("associatorSim",
0544 {edm::InputTag("barrelLayerClusterSimClusterAssociation")});
0545 desc.addUntracked<bool>("SaveGeneralInfo", true);
0546 desc.addUntracked<bool>("doCaloParticlePlots", true);
0547 desc.addUntracked<bool>("doCaloParticleSelection", true);
0548 desc.addUntracked<bool>("doSimClustersPlots", true);
0549 desc.add<edm::InputTag>("label_SimClusters", edm::InputTag("SimClusters"));
0550 desc.add<edm::InputTag>("label_SimClustersLevel", edm::InputTag("ClusterLevel"));
0551 desc.addUntracked<bool>("doLayerClustersPlots", true);
0552 desc.add<edm::InputTag>("label_layerClusterPlots", edm::InputTag("hgcalMergeLayerClusters"));
0553 desc.add<edm::InputTag>("label_LCToCPLinking", edm::InputTag("LCToCP_association"));
0554 desc.add<edm::InputTag>("simClustersToCaloParticlesMap",
0555 edm::InputTag("SimClusterToCaloParticleAssociation", "simClusterToCaloParticleMap"));
0556 desc.add<edm::InputTag>("label_cp_effic", edm::InputTag("mix", "MergedCaloTruth"));
0557 desc.add<edm::InputTag>("label_cp_fake", edm::InputTag("mix", "MergedCaloTruth"));
0558 desc.add<edm::InputTag>("label_scl", edm::InputTag("mix", "MergedCaloTruth"));
0559 desc.add<edm::InputTag>("simVertices", edm::InputTag("g4SimHits"));
0560 desc.add<int>("totallayers_to_monitor", 5);
0561 desc.add<std::string>("dirName", "BarrelCalorimeters/BarrelValidator/");
0562 descriptions.add("barrelValidator", desc);
0563 }