From 9ee3af440a80b5322afe0b22e767f8e15780cbe7 Mon Sep 17 00:00:00 2001 From: Badder Date: Fri, 6 Dec 2019 16:06:42 +0100 Subject: [PATCH 01/11] PR_11_1_X_CaloParticles --- .../CaloAnalysis/interface/SimCluster.h | 22 ++++++++++++ .../CaloAnalysis/src/classes_def.xml | 5 +-- .../plugins/CaloTruthAccumulator.cc | 2 ++ .../python/caloTruthProducer_cfi.py | 34 ++++++++----------- .../MixingModule/python/digitizers_cfi.py | 17 +++++++--- 5 files changed, 53 insertions(+), 27 deletions(-) diff --git a/SimDataFormats/CaloAnalysis/interface/SimCluster.h b/SimDataFormats/CaloAnalysis/interface/SimCluster.h index 09433efb7a06d..32ebd42956457 100644 --- a/SimDataFormats/CaloAnalysis/interface/SimCluster.h +++ b/SimDataFormats/CaloAnalysis/interface/SimCluster.h @@ -177,6 +177,12 @@ class SimCluster { fractions_.emplace_back(fraction); } + /** @brief add rechit with energy */ + void addRecHitAndEnergy(uint32_t hit, float energy) { + hits_.emplace_back(hit); + energies_.emplace_back(energy); + } + /** @brief Returns list of rechit IDs and fractions for this SimCluster */ std::vector> hits_and_fractions() const { std::vector> result; @@ -186,12 +192,27 @@ class SimCluster { return result; } + /** @brief Returns list of rechit IDs and energies for this SimCluster */ + std::vector> hits_and_energies() const { + std::vector> result; + for (size_t i = 0; i < hits_.size(); ++i) { + result.emplace_back(hits_[i], energies_[i]); + } + return result; + } + /** @brief clear the hits and fractions list */ void clearHitsAndFractions() { std::vector().swap(hits_); std::vector().swap(fractions_); } + /** @brief clear the hits and energies list */ + void clearHitsAndEnergies() { + std::vector().swap(hits_); + std::vector().swap(energies_); + } + /** @brief returns the accumulated sim energy in the cluster */ float simEnergy() const { return simhit_energy_; } @@ -206,6 +227,7 @@ class SimCluster { float simhit_energy_; std::vector hits_; std::vector fractions_; + std::vector energies_; math::XYZTLorentzVectorF theMomentum_; diff --git a/SimDataFormats/CaloAnalysis/src/classes_def.xml b/SimDataFormats/CaloAnalysis/src/classes_def.xml index 3d54f8b2be929..89a2b4c9f5aaf 100644 --- a/SimDataFormats/CaloAnalysis/src/classes_def.xml +++ b/SimDataFormats/CaloAnalysis/src/classes_def.xml @@ -8,8 +8,9 @@ - - + + + diff --git a/SimGeneral/CaloAnalysis/plugins/CaloTruthAccumulator.cc b/SimGeneral/CaloAnalysis/plugins/CaloTruthAccumulator.cc index 4dbc4252beef3..75ce350051bae 100644 --- a/SimGeneral/CaloAnalysis/plugins/CaloTruthAccumulator.cc +++ b/SimGeneral/CaloAnalysis/plugins/CaloTruthAccumulator.cc @@ -485,6 +485,8 @@ void CaloTruthAccumulator::finalizeEvent(edm::Event &event, edm::EventSetup cons } else { for (auto &sc : *(output_.pSimClusters)) { auto hitsAndEnergies = sc.hits_and_fractions(); + for (auto& hAndE : hitsAndEnergies) + sc.addRecHitAndEnergy(hAndE.first, hAndE.second); sc.clearHitsAndFractions(); for (auto &hAndE : hitsAndEnergies) { const float totalenergy = m_detIdToTotalSimEnergy[hAndE.first]; diff --git a/SimGeneral/MixingModule/python/caloTruthProducer_cfi.py b/SimGeneral/MixingModule/python/caloTruthProducer_cfi.py index 071fa1cd7dc0f..e5ee2d7ae8721 100644 --- a/SimGeneral/MixingModule/python/caloTruthProducer_cfi.py +++ b/SimGeneral/MixingModule/python/caloTruthProducer_cfi.py @@ -2,27 +2,27 @@ caloParticles = cms.PSet( accumulatorType = cms.string('CaloTruthAccumulator'), -# createUnmergedCollection = cms.bool(True), -# createMergedBremsstrahlung = cms.bool(True), -# createInitialVertexCollection = cms.bool(False), -# alwaysAddAncestors = cms.bool(True), + #createUnmergedCollection = cms.bool(True), + #createMergedBremsstrahlung = cms.bool(True), + #createInitialVertexCollection = cms.bool(False), + #alwaysAddAncestors = cms.bool(True), MinEnergy = cms.double(0.5), MaxPseudoRapidity = cms.double(5.0), premixStage1 = cms.bool(False), maximumPreviousBunchCrossing = cms.uint32(0), maximumSubsequentBunchCrossing = cms.uint32(0), simHitCollections = cms.PSet( - hgc = cms.VInputTag( - cms.InputTag('g4SimHits','HGCHitsEE'), - cms.InputTag('g4SimHits','HGCHitsHEfront'), - cms.InputTag('g4SimHits','HcalHits') - ), +# hgc = cms.VInputTag( +# cms.InputTag('g4SimHits','HGCHitsEE'), +# cms.InputTag('g4SimHits','HGCHitsHEfront'), +# cms.InputTag('g4SimHits','HcalHits') +# ), # hcal = cms.VInputTag(cms.InputTag('g4SimHits','HcalHits')), -# ecal = cms.VInputTag( -# cms.InputTag('g4SimHits','EcalHitsEE'), -# cms.InputTag('g4SimHits','EcalHitsEB'), -# cms.InputTag('g4SimHits','EcalHitsES') -# ) + ecal = cms.VInputTag( + cms.InputTag('g4SimHits','EcalHitsEE'), + cms.InputTag('g4SimHits','EcalHitsEB'), + cms.InputTag('g4SimHits','EcalHitsES') + ) ), simTrackCollection = cms.InputTag('g4SimHits'), simVertexCollection = cms.InputTag('g4SimHits'), @@ -40,12 +40,6 @@ simHitCollections = dict(hgc = {2 : cms.InputTag('g4SimHits','HGCHitsHEback')} ), ) -from Configuration.Eras.Modifier_phase2_hfnose_cff import phase2_hfnose -phase2_hfnose.toModify( - caloParticles, - simHitCollections = dict(hgc = caloParticles.simHitCollections.hgc + [cms.InputTag('g4SimHits','HFNoseHits')]) -) - from Configuration.Eras.Modifier_fastSim_cff import fastSim fastSim.toReplaceWith(caloParticles, cms.PSet()) # don't allow this to run in fastsim diff --git a/SimGeneral/MixingModule/python/digitizers_cfi.py b/SimGeneral/MixingModule/python/digitizers_cfi.py index 12682181c7264..792bc1d325e37 100644 --- a/SimGeneral/MixingModule/python/digitizers_cfi.py +++ b/SimGeneral/MixingModule/python/digitizers_cfi.py @@ -51,7 +51,7 @@ ) -from SimCalorimetry.HGCalSimProducers.hgcalDigitizer_cfi import hgceeDigitizer, hgchebackDigitizer, hgchefrontDigitizer, HGCAL_noise_fC, HGCAL_noise_heback, HGCAL_chargeCollectionEfficiencies, HGCAL_ileakParam_toUse, HGCAL_cceParams_toUse, HGCAL_noises +from SimCalorimetry.HGCalSimProducers.hgcalDigitizer_cfi import hgceeDigitizer, hgchebackDigitizer, hgchefrontDigitizer, HGCAL_noise_fC, HGCAL_noise_MIP, HGCAL_chargeCollectionEfficiencies, HGCAL_noises from Configuration.Eras.Modifier_phase2_hgcal_cff import phase2_hgcal phase2_hgcal.toModify( theDigitizers, @@ -72,13 +72,19 @@ from SimGeneral.MixingModule.ecalTimeDigitizer_cfi import ecalTimeDigitizer from Configuration.Eras.Modifier_phase2_timing_cff import phase2_timing +from Configuration.Eras.Modifier_phase2_timing_layer_cff import phase2_timing_layer phase2_timing.toModify( theDigitizers, ecalTime = ecalTimeDigitizer.clone() ) -from SimFastTiming.Configuration.SimFastTiming_cff import mtdDigitizer -from Configuration.Eras.Modifier_phase2_timing_layer_cff import phase2_timing_layer +from SimFastTiming.Configuration.SimFastTiming_cff import fastTimeDigitizer phase2_timing_layer.toModify( theDigitizers, - fastTimingLayer = mtdDigitizer.clone() ) + fastTimingLayer = fastTimeDigitizer.clone() ) + +from SimFastTiming.Configuration.SimFastTiming_cff import mtdDigitizer +from Configuration.Eras.Modifier_phase2_timing_layer_tile_cff import phase2_timing_layer_tile +from Configuration.Eras.Modifier_phase2_timing_layer_bar_cff import phase2_timing_layer_bar +(phase2_timing_layer_tile | phase2_timing_layer_bar).toModify( theDigitizers, + fastTimingLayer = mtdDigitizer.clone() ) premix_stage2.toModify(theDigitizers, ecal = None, @@ -92,7 +98,7 @@ (premix_stage2 & phase2_hfnose).toModify(theDigitizers, hfnoseDigitizer = dict(premixStage1 = True), ) -(premix_stage2 & phase2_timing_layer).toModify(theDigitizers, +(premix_stage2 & (phase2_timing_layer_tile | phase2_timing_layer_bar)).toModify(theDigitizers, fastTimingLayer = dict( barrelDigitizer = dict(premixStage1 = True), endcapDigitizer = dict(premixStage1 = True) @@ -101,6 +107,7 @@ theDigitizersValid = cms.PSet(theDigitizers) theDigitizers.mergedtruth.select.signalOnlyTP = True +theDigitizersValid.calotruth = cms.PSet( caloParticles ) phase2_hgcal.toModify( theDigitizersValid, calotruth = cms.PSet( caloParticles ) ) # Doesn't HGCal need these also without validation? From 361ea6cc2b922fec351495133f04563f86dd581f Mon Sep 17 00:00:00 2001 From: Badder Date: Sat, 7 Dec 2019 17:55:35 +0100 Subject: [PATCH 02/11] PR_11_1_X_CaloParticles --- .../MixingModule/python/caloTruthProducer_cfi.py | 14 ++++++++++---- SimGeneral/MixingModule/python/digitizers_cfi.py | 16 +++++----------- 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/SimGeneral/MixingModule/python/caloTruthProducer_cfi.py b/SimGeneral/MixingModule/python/caloTruthProducer_cfi.py index e5ee2d7ae8721..c0e6539b1f002 100644 --- a/SimGeneral/MixingModule/python/caloTruthProducer_cfi.py +++ b/SimGeneral/MixingModule/python/caloTruthProducer_cfi.py @@ -2,10 +2,10 @@ caloParticles = cms.PSet( accumulatorType = cms.string('CaloTruthAccumulator'), - #createUnmergedCollection = cms.bool(True), - #createMergedBremsstrahlung = cms.bool(True), - #createInitialVertexCollection = cms.bool(False), - #alwaysAddAncestors = cms.bool(True), +# createUnmergedCollection = cms.bool(True), +# createMergedBremsstrahlung = cms.bool(True), +# createInitialVertexCollection = cms.bool(False), +# alwaysAddAncestors = cms.bool(True), MinEnergy = cms.double(0.5), MaxPseudoRapidity = cms.double(5.0), premixStage1 = cms.bool(False), @@ -40,6 +40,12 @@ simHitCollections = dict(hgc = {2 : cms.InputTag('g4SimHits','HGCHitsHEback')} ), ) +from Configuration.Eras.Modifier_phase2_hfnose_cff import phase2_hfnose +phase2_hfnose.toModify( + caloParticles, + simHitCollections = dict(hgc = caloParticles.simHitCollections.hgc + [cms.InputTag('g4SimHits','HFNoseHits')]) +) + from Configuration.Eras.Modifier_fastSim_cff import fastSim fastSim.toReplaceWith(caloParticles, cms.PSet()) # don't allow this to run in fastsim diff --git a/SimGeneral/MixingModule/python/digitizers_cfi.py b/SimGeneral/MixingModule/python/digitizers_cfi.py index 792bc1d325e37..d0ae4216fc856 100644 --- a/SimGeneral/MixingModule/python/digitizers_cfi.py +++ b/SimGeneral/MixingModule/python/digitizers_cfi.py @@ -51,7 +51,7 @@ ) -from SimCalorimetry.HGCalSimProducers.hgcalDigitizer_cfi import hgceeDigitizer, hgchebackDigitizer, hgchefrontDigitizer, HGCAL_noise_fC, HGCAL_noise_MIP, HGCAL_chargeCollectionEfficiencies, HGCAL_noises +from SimCalorimetry.HGCalSimProducers.hgcalDigitizer_cfi import hgceeDigitizer, hgchebackDigitizer, hgchefrontDigitizer, HGCAL_noise_fC, HGCAL_noise_heback, HGCAL_chargeCollectionEfficiencies, HGCAL_ileakParam_toUse, HGCAL_cceParams_toUse, HGCAL_noises from Configuration.Eras.Modifier_phase2_hgcal_cff import phase2_hgcal phase2_hgcal.toModify( theDigitizers, @@ -72,19 +72,13 @@ from SimGeneral.MixingModule.ecalTimeDigitizer_cfi import ecalTimeDigitizer from Configuration.Eras.Modifier_phase2_timing_cff import phase2_timing -from Configuration.Eras.Modifier_phase2_timing_layer_cff import phase2_timing_layer phase2_timing.toModify( theDigitizers, ecalTime = ecalTimeDigitizer.clone() ) -from SimFastTiming.Configuration.SimFastTiming_cff import fastTimeDigitizer -phase2_timing_layer.toModify( theDigitizers, - fastTimingLayer = fastTimeDigitizer.clone() ) - from SimFastTiming.Configuration.SimFastTiming_cff import mtdDigitizer -from Configuration.Eras.Modifier_phase2_timing_layer_tile_cff import phase2_timing_layer_tile -from Configuration.Eras.Modifier_phase2_timing_layer_bar_cff import phase2_timing_layer_bar -(phase2_timing_layer_tile | phase2_timing_layer_bar).toModify( theDigitizers, - fastTimingLayer = mtdDigitizer.clone() ) +from Configuration.Eras.Modifier_phase2_timing_layer_cff import phase2_timing_layer +phase2_timing_layer.toModify( theDigitizers, + fastTimingLayer = mtdDigitizer.clone() ) premix_stage2.toModify(theDigitizers, ecal = None, @@ -98,7 +92,7 @@ (premix_stage2 & phase2_hfnose).toModify(theDigitizers, hfnoseDigitizer = dict(premixStage1 = True), ) -(premix_stage2 & (phase2_timing_layer_tile | phase2_timing_layer_bar)).toModify(theDigitizers, +(premix_stage2 & phase2_timing_layer).toModify(theDigitizers, fastTimingLayer = dict( barrelDigitizer = dict(premixStage1 = True), endcapDigitizer = dict(premixStage1 = True) From 297289328dd13cbea3a37ac027d718d0799d441f Mon Sep 17 00:00:00 2001 From: Badder Date: Fri, 13 Dec 2019 17:12:08 +0100 Subject: [PATCH 03/11] Era_Run3_ecalClustering --- .../python/Era_Run3_ecalClustering_cff.py | 7 +++ .../Modifier_run3_ecalclustering_cff.py | 4 ++ .../StandardSequences/python/Eras.py | 22 ++++++--- .../python/caloTruthProducer_cfi.py | 49 +++++++++++++------ 4 files changed, 61 insertions(+), 21 deletions(-) create mode 100644 Configuration/Eras/python/Era_Run3_ecalClustering_cff.py create mode 100644 Configuration/Eras/python/Modifier_run3_ecalclustering_cff.py diff --git a/Configuration/Eras/python/Era_Run3_ecalClustering_cff.py b/Configuration/Eras/python/Era_Run3_ecalClustering_cff.py new file mode 100644 index 0000000000000..f34ead5ac15ba --- /dev/null +++ b/Configuration/Eras/python/Era_Run3_ecalClustering_cff.py @@ -0,0 +1,7 @@ +import FWCore.ParameterSet.Config as cms + +from Configuration.Eras.Era_Run3_cff import Run3 +from Configuration.Eras.Modifier_run3_ecalclustering_cff import run3_ecalclustering + +Run3_ecalClustering = cms.ModifierChain(Run3,run3_ecalclustering) + diff --git a/Configuration/Eras/python/Modifier_run3_ecalclustering_cff.py b/Configuration/Eras/python/Modifier_run3_ecalclustering_cff.py new file mode 100644 index 0000000000000..1e4c9f4c2aafd --- /dev/null +++ b/Configuration/Eras/python/Modifier_run3_ecalclustering_cff.py @@ -0,0 +1,4 @@ +import FWCore.ParameterSet.Config as cms + +run3_ecalclustering = cms.Modifier() + diff --git a/Configuration/StandardSequences/python/Eras.py b/Configuration/StandardSequences/python/Eras.py index 3e185236a5553..4a34515757d62 100644 --- a/Configuration/StandardSequences/python/Eras.py +++ b/Configuration/StandardSequences/python/Eras.py @@ -32,12 +32,20 @@ def __init__(self): 'Run2_2018_pp_on_AA_noHCALmitigation', 'Run2_2018_highBetaStar', 'Run3', + 'Run3_ecalClustering', 'Phase2', + 'Phase2_timing', + 'Phase2_timing_layer', + 'Phase2_timing_layer_tile', + 'Phase2_timing_layer_bar', 'Phase2C4', + 'Phase2C4_timing', 'Phase2C6', + 'Phase2C6_timing', + 'Phase2C4_timing_layer_bar', 'Phase2C8', - 'Phase2C9', - 'Phase2C10', + 'Phase2C8_timing', + 'Phase2C8_timing_layer_bar', ] internalUseMods = ['run2_common', 'run2_25ns_specific', @@ -46,16 +54,16 @@ def __init__(self): 'peripheralPbPb', 'pA_2016', 'run2_HE_2017', 'stage2L1Trigger', 'stage2L1Trigger_2017', 'run2_HF_2017', 'run2_HCAL_2017', 'run2_HEPlan1_2017', 'run2_HB_2018','run2_HE_2018', - 'run3_HB', 'run3_common', 'run3_RPC', + 'run3_HB', 'run3_common', 'run3_ecalclustering', 'phase1Pixel', 'run3_GEM', 'run2_GEM_2017', 'run2_CSC_2018', 'phase2_common', 'phase2_tracker', - 'phase2_hgcal', 'phase2_muon', 'phase2_timing', 'phase2_hgcalV9', 'phase2_hfnose', 'phase2_hgcalV10', 'phase2_hgcalV11', - 'phase2_timing_layer', 'phase2_hcal', - 'trackingLowPU', 'trackingPhase1', 'ctpps_2016', 'ctpps_2017', 'ctpps_2018', 'trackingPhase2PU140','highBetaStar_2018', + 'phase2_hgcal', 'phase2_muon', 'phase2_timing', 'phase2_hgcalV9', 'phase2_hfnose', 'phase2_hgcalV10', + 'phase2_timing_layer','phase2_timing_layer_tile','phase2_timing_layer_bar','phase2_hcal', + 'trackingLowPU', 'trackingPhase1', 'ctpps_2016', 'trackingPhase2PU140','highBetaStar_2018', 'tracker_apv_vfp30_2016', 'pf_badHcalMitigation', 'run2_miniAOD_80XLegacy','run2_miniAOD_94XFall17', 'run2_nanoAOD_92X', 'run2_nanoAOD_94XMiniAODv1', 'run2_nanoAOD_94XMiniAODv2', 'run2_nanoAOD_94X2016', - 'run2_miniAOD_devel', 'run2_nanoAOD_102Xv1', 'run2_nanoAOD_106Xv1', + 'run2_miniAOD_devel', 'run2_nanoAOD_102Xv1', 'hcalHardcodeConditions', 'hcalSkipPacker', 'run2_HLTconditions_2016','run2_HLTconditions_2017','run2_HLTconditions_2018', 'bParking'] diff --git a/SimGeneral/MixingModule/python/caloTruthProducer_cfi.py b/SimGeneral/MixingModule/python/caloTruthProducer_cfi.py index c0e6539b1f002..ce2ab8f18940d 100644 --- a/SimGeneral/MixingModule/python/caloTruthProducer_cfi.py +++ b/SimGeneral/MixingModule/python/caloTruthProducer_cfi.py @@ -12,17 +12,17 @@ maximumPreviousBunchCrossing = cms.uint32(0), maximumSubsequentBunchCrossing = cms.uint32(0), simHitCollections = cms.PSet( -# hgc = cms.VInputTag( -# cms.InputTag('g4SimHits','HGCHitsEE'), -# cms.InputTag('g4SimHits','HGCHitsHEfront'), -# cms.InputTag('g4SimHits','HcalHits') -# ), + hgc = cms.VInputTag( + cms.InputTag('g4SimHits','HGCHitsEE'), + cms.InputTag('g4SimHits','HGCHitsHEfront'), + cms.InputTag('g4SimHits','HcalHits') + ), # hcal = cms.VInputTag(cms.InputTag('g4SimHits','HcalHits')), - ecal = cms.VInputTag( - cms.InputTag('g4SimHits','EcalHitsEE'), - cms.InputTag('g4SimHits','EcalHitsEB'), - cms.InputTag('g4SimHits','EcalHitsES') - ) +# ecal = cms.VInputTag( +# cms.InputTag('g4SimHits','EcalHitsEE'), +# cms.InputTag('g4SimHits','EcalHitsEB'), +# cms.InputTag('g4SimHits','EcalHitsES') +# ) ), simTrackCollection = cms.InputTag('g4SimHits'), simVertexCollection = cms.InputTag('g4SimHits'), @@ -40,10 +40,31 @@ simHitCollections = dict(hgc = {2 : cms.InputTag('g4SimHits','HGCHitsHEback')} ), ) -from Configuration.Eras.Modifier_phase2_hfnose_cff import phase2_hfnose -phase2_hfnose.toModify( - caloParticles, - simHitCollections = dict(hgc = caloParticles.simHitCollections.hgc + [cms.InputTag('g4SimHits','HFNoseHits')]) +from Configuration.Eras.Modifier_run3_ecalclustering_cff import run3_ecalclustering +run3_ecalclustering.toReplaceWith(caloParticles, cms.PSet( + accumulatorType = cms.string('CaloTruthAccumulator'), +# createUnmergedCollection = cms.bool(True), +# createMergedBremsstrahlung = cms.bool(True), +# createInitialVertexCollection = cms.bool(False), +# alwaysAddAncestors = cms.bool(True), + MinEnergy = cms.double(0.5), + MaxPseudoRapidity = cms.double(5.0), + premixStage1 = cms.bool(False), + maximumPreviousBunchCrossing = cms.uint32(0), + maximumSubsequentBunchCrossing = cms.uint32(0), + simHitCollections = cms.PSet( + ecal = cms.VInputTag( + cms.InputTag('g4SimHits','EcalHitsEE'), + cms.InputTag('g4SimHits','EcalHitsEB'), + cms.InputTag('g4SimHits','EcalHitsES') + ) + ), + simTrackCollection = cms.InputTag('g4SimHits'), + simVertexCollection = cms.InputTag('g4SimHits'), + genParticleCollection = cms.InputTag('genParticles'), + allowDifferentSimHitProcesses = cms.bool(False), # should be True for FastSim, False for FullSim + HepMCProductLabel = cms.InputTag('generatorSmeared'), + ) ) from Configuration.Eras.Modifier_fastSim_cff import fastSim From ffe3c06e51e56b639d0a1682638a6d575fe32432 Mon Sep 17 00:00:00 2001 From: Badder Date: Fri, 13 Dec 2019 20:25:18 +0100 Subject: [PATCH 04/11] fix unwanted changes --- .../StandardSequences/python/Eras.py | 21 +++++++------------ .../python/caloTruthProducer_cfi.py | 6 ++++++ 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/Configuration/StandardSequences/python/Eras.py b/Configuration/StandardSequences/python/Eras.py index 4a34515757d62..0e1de90996625 100644 --- a/Configuration/StandardSequences/python/Eras.py +++ b/Configuration/StandardSequences/python/Eras.py @@ -34,18 +34,11 @@ def __init__(self): 'Run3', 'Run3_ecalClustering', 'Phase2', - 'Phase2_timing', - 'Phase2_timing_layer', - 'Phase2_timing_layer_tile', - 'Phase2_timing_layer_bar', 'Phase2C4', - 'Phase2C4_timing', 'Phase2C6', - 'Phase2C6_timing', - 'Phase2C4_timing_layer_bar', 'Phase2C8', - 'Phase2C8_timing', - 'Phase2C8_timing_layer_bar', + 'Phase2C9', + 'Phase2C10', ] internalUseMods = ['run2_common', 'run2_25ns_specific', @@ -54,16 +47,16 @@ def __init__(self): 'peripheralPbPb', 'pA_2016', 'run2_HE_2017', 'stage2L1Trigger', 'stage2L1Trigger_2017', 'run2_HF_2017', 'run2_HCAL_2017', 'run2_HEPlan1_2017', 'run2_HB_2018','run2_HE_2018', - 'run3_HB', 'run3_common', 'run3_ecalclustering', + 'run3_HB', 'run3_common', 'run3_ecalclustering', 'run3_RPC', 'phase1Pixel', 'run3_GEM', 'run2_GEM_2017', 'run2_CSC_2018', 'phase2_common', 'phase2_tracker', - 'phase2_hgcal', 'phase2_muon', 'phase2_timing', 'phase2_hgcalV9', 'phase2_hfnose', 'phase2_hgcalV10', - 'phase2_timing_layer','phase2_timing_layer_tile','phase2_timing_layer_bar','phase2_hcal', - 'trackingLowPU', 'trackingPhase1', 'ctpps_2016', 'trackingPhase2PU140','highBetaStar_2018', + 'phase2_hgcal', 'phase2_muon', 'phase2_timing', 'phase2_hgcalV9', 'phase2_hfnose', 'phase2_hgcalV10', 'phase2_hgcalV11', + 'phase2_timing_layer', 'phase2_hcal', + 'trackingLowPU', 'trackingPhase1', 'ctpps_2016', 'ctpps_2017', 'ctpps_2018', 'trackingPhase2PU140','highBetaStar_2018', 'tracker_apv_vfp30_2016', 'pf_badHcalMitigation', 'run2_miniAOD_80XLegacy','run2_miniAOD_94XFall17', 'run2_nanoAOD_92X', 'run2_nanoAOD_94XMiniAODv1', 'run2_nanoAOD_94XMiniAODv2', 'run2_nanoAOD_94X2016', - 'run2_miniAOD_devel', 'run2_nanoAOD_102Xv1', + 'run2_miniAOD_devel', 'run2_nanoAOD_102Xv1', 'run2_nanoAOD_106Xv1', 'hcalHardcodeConditions', 'hcalSkipPacker', 'run2_HLTconditions_2016','run2_HLTconditions_2017','run2_HLTconditions_2018', 'bParking'] diff --git a/SimGeneral/MixingModule/python/caloTruthProducer_cfi.py b/SimGeneral/MixingModule/python/caloTruthProducer_cfi.py index ce2ab8f18940d..f0c82e497092b 100644 --- a/SimGeneral/MixingModule/python/caloTruthProducer_cfi.py +++ b/SimGeneral/MixingModule/python/caloTruthProducer_cfi.py @@ -40,6 +40,12 @@ simHitCollections = dict(hgc = {2 : cms.InputTag('g4SimHits','HGCHitsHEback')} ), ) +from Configuration.Eras.Modifier_phase2_hfnose_cff import phase2_hfnose +phase2_hfnose.toModify( + caloParticles, + simHitCollections = dict(hgc = caloParticles.simHitCollections.hgc + [cms.InputTag('g4SimHits','HFNoseHits')]) +) + from Configuration.Eras.Modifier_run3_ecalclustering_cff import run3_ecalclustering run3_ecalclustering.toReplaceWith(caloParticles, cms.PSet( accumulatorType = cms.string('CaloTruthAccumulator'), From 235c30260cc38e81f98c8e9f400028b031f9fb54 Mon Sep 17 00:00:00 2001 From: Badder Date: Mon, 16 Dec 2019 09:39:11 +0100 Subject: [PATCH 05/11] scram build code-format --- SimGeneral/CaloAnalysis/plugins/CaloTruthAccumulator.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SimGeneral/CaloAnalysis/plugins/CaloTruthAccumulator.cc b/SimGeneral/CaloAnalysis/plugins/CaloTruthAccumulator.cc index 75ce350051bae..b453fec871eb1 100644 --- a/SimGeneral/CaloAnalysis/plugins/CaloTruthAccumulator.cc +++ b/SimGeneral/CaloAnalysis/plugins/CaloTruthAccumulator.cc @@ -485,8 +485,8 @@ void CaloTruthAccumulator::finalizeEvent(edm::Event &event, edm::EventSetup cons } else { for (auto &sc : *(output_.pSimClusters)) { auto hitsAndEnergies = sc.hits_and_fractions(); - for (auto& hAndE : hitsAndEnergies) - sc.addRecHitAndEnergy(hAndE.first, hAndE.second); + for (auto &hAndE : hitsAndEnergies) + sc.addRecHitAndEnergy(hAndE.first, hAndE.second); sc.clearHitsAndFractions(); for (auto &hAndE : hitsAndEnergies) { const float totalenergy = m_detIdToTotalSimEnergy[hAndE.first]; From 7c6e345af4fc0b8983737273aca68c6d4f5d8009 Mon Sep 17 00:00:00 2001 From: Badder Date: Mon, 16 Dec 2019 12:25:13 +0100 Subject: [PATCH 06/11] customize caloTruth --- SimGeneral/MixingModule/python/digitizers_cfi.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/SimGeneral/MixingModule/python/digitizers_cfi.py b/SimGeneral/MixingModule/python/digitizers_cfi.py index d0ae4216fc856..18d7391b58bc9 100644 --- a/SimGeneral/MixingModule/python/digitizers_cfi.py +++ b/SimGeneral/MixingModule/python/digitizers_cfi.py @@ -101,7 +101,9 @@ theDigitizersValid = cms.PSet(theDigitizers) theDigitizers.mergedtruth.select.signalOnlyTP = True -theDigitizersValid.calotruth = cms.PSet( caloParticles ) +from Configuration.Eras.Modifier_run3_ecalclustering_cff import run3_ecalclustering +run3_ecalclustering.toModify( theDigitizersValid, + calotruth = cms.PSet( caloParticles ) ) phase2_hgcal.toModify( theDigitizersValid, calotruth = cms.PSet( caloParticles ) ) # Doesn't HGCal need these also without validation? From 2f78894da63bdcf3c4549e06a7eb8d952a5e7346 Mon Sep 17 00:00:00 2001 From: Badder Date: Wed, 18 Dec 2019 14:36:08 +0100 Subject: [PATCH 07/11] fixes: processModifier + caloParticle recoding --- .../python/Era_Run3_ecalClustering_cff.py | 7 ------ .../python/run3_ecalclustering_cff.py} | 2 ++ .../StandardSequences/python/Eras.py | 3 +-- .../CaloAnalysis/interface/SimCluster.h | 10 ++++---- .../plugins/CaloTruthAccumulator.cc | 4 ++-- .../python/caloTruthProducer_cfi.py | 23 ++++--------------- .../MixingModule/python/digitizers_cfi.py | 6 ++--- 7 files changed, 15 insertions(+), 40 deletions(-) delete mode 100644 Configuration/Eras/python/Era_Run3_ecalClustering_cff.py rename Configuration/{Eras/python/Modifier_run3_ecalclustering_cff.py => ProcessModifiers/python/run3_ecalclustering_cff.py} (60%) diff --git a/Configuration/Eras/python/Era_Run3_ecalClustering_cff.py b/Configuration/Eras/python/Era_Run3_ecalClustering_cff.py deleted file mode 100644 index f34ead5ac15ba..0000000000000 --- a/Configuration/Eras/python/Era_Run3_ecalClustering_cff.py +++ /dev/null @@ -1,7 +0,0 @@ -import FWCore.ParameterSet.Config as cms - -from Configuration.Eras.Era_Run3_cff import Run3 -from Configuration.Eras.Modifier_run3_ecalclustering_cff import run3_ecalclustering - -Run3_ecalClustering = cms.ModifierChain(Run3,run3_ecalclustering) - diff --git a/Configuration/Eras/python/Modifier_run3_ecalclustering_cff.py b/Configuration/ProcessModifiers/python/run3_ecalclustering_cff.py similarity index 60% rename from Configuration/Eras/python/Modifier_run3_ecalclustering_cff.py rename to Configuration/ProcessModifiers/python/run3_ecalclustering_cff.py index 1e4c9f4c2aafd..170677a51d9c4 100644 --- a/Configuration/Eras/python/Modifier_run3_ecalclustering_cff.py +++ b/Configuration/ProcessModifiers/python/run3_ecalclustering_cff.py @@ -1,4 +1,6 @@ import FWCore.ParameterSet.Config as cms +# This modifier is for ECAL Run3 clustering studies + run3_ecalclustering = cms.Modifier() diff --git a/Configuration/StandardSequences/python/Eras.py b/Configuration/StandardSequences/python/Eras.py index 0e1de90996625..3e185236a5553 100644 --- a/Configuration/StandardSequences/python/Eras.py +++ b/Configuration/StandardSequences/python/Eras.py @@ -32,7 +32,6 @@ def __init__(self): 'Run2_2018_pp_on_AA_noHCALmitigation', 'Run2_2018_highBetaStar', 'Run3', - 'Run3_ecalClustering', 'Phase2', 'Phase2C4', 'Phase2C6', @@ -47,7 +46,7 @@ def __init__(self): 'peripheralPbPb', 'pA_2016', 'run2_HE_2017', 'stage2L1Trigger', 'stage2L1Trigger_2017', 'run2_HF_2017', 'run2_HCAL_2017', 'run2_HEPlan1_2017', 'run2_HB_2018','run2_HE_2018', - 'run3_HB', 'run3_common', 'run3_ecalclustering', 'run3_RPC', + 'run3_HB', 'run3_common', 'run3_RPC', 'phase1Pixel', 'run3_GEM', 'run2_GEM_2017', 'run2_CSC_2018', 'phase2_common', 'phase2_tracker', diff --git a/SimDataFormats/CaloAnalysis/interface/SimCluster.h b/SimDataFormats/CaloAnalysis/interface/SimCluster.h index 32ebd42956457..6f3570eb1e7af 100644 --- a/SimDataFormats/CaloAnalysis/interface/SimCluster.h +++ b/SimDataFormats/CaloAnalysis/interface/SimCluster.h @@ -177,9 +177,8 @@ class SimCluster { fractions_.emplace_back(fraction); } - /** @brief add rechit with energy */ - void addRecHitAndEnergy(uint32_t hit, float energy) { - hits_.emplace_back(hit); + /** @brief add rechit energy */ + void addHitEnergy(float energy) { energies_.emplace_back(energy); } @@ -207,9 +206,8 @@ class SimCluster { std::vector().swap(fractions_); } - /** @brief clear the hits and energies list */ - void clearHitsAndEnergies() { - std::vector().swap(hits_); + /** @brief clear the energies list */ + void clearHitsEnergy() { std::vector().swap(energies_); } diff --git a/SimGeneral/CaloAnalysis/plugins/CaloTruthAccumulator.cc b/SimGeneral/CaloAnalysis/plugins/CaloTruthAccumulator.cc index b453fec871eb1..4b7d602d03d17 100644 --- a/SimGeneral/CaloAnalysis/plugins/CaloTruthAccumulator.cc +++ b/SimGeneral/CaloAnalysis/plugins/CaloTruthAccumulator.cc @@ -485,9 +485,8 @@ void CaloTruthAccumulator::finalizeEvent(edm::Event &event, edm::EventSetup cons } else { for (auto &sc : *(output_.pSimClusters)) { auto hitsAndEnergies = sc.hits_and_fractions(); - for (auto &hAndE : hitsAndEnergies) - sc.addRecHitAndEnergy(hAndE.first, hAndE.second); sc.clearHitsAndFractions(); + sc.clearHitsEnergy(); for (auto &hAndE : hitsAndEnergies) { const float totalenergy = m_detIdToTotalSimEnergy[hAndE.first]; float fraction = 0.; @@ -497,6 +496,7 @@ void CaloTruthAccumulator::finalizeEvent(edm::Event &event, edm::EventSetup cons edm::LogWarning(messageCategory_) << "TotalSimEnergy for hit " << hAndE.first << " is 0! The fraction for this hit cannot be computed."; sc.addRecHitAndFraction(hAndE.first, fraction); + sc.addHitEnergy(hAndE.second); } } } diff --git a/SimGeneral/MixingModule/python/caloTruthProducer_cfi.py b/SimGeneral/MixingModule/python/caloTruthProducer_cfi.py index f0c82e497092b..a4bad8726d169 100644 --- a/SimGeneral/MixingModule/python/caloTruthProducer_cfi.py +++ b/SimGeneral/MixingModule/python/caloTruthProducer_cfi.py @@ -46,31 +46,16 @@ simHitCollections = dict(hgc = caloParticles.simHitCollections.hgc + [cms.InputTag('g4SimHits','HFNoseHits')]) ) -from Configuration.Eras.Modifier_run3_ecalclustering_cff import run3_ecalclustering -run3_ecalclustering.toReplaceWith(caloParticles, cms.PSet( - accumulatorType = cms.string('CaloTruthAccumulator'), -# createUnmergedCollection = cms.bool(True), -# createMergedBremsstrahlung = cms.bool(True), -# createInitialVertexCollection = cms.bool(False), -# alwaysAddAncestors = cms.bool(True), - MinEnergy = cms.double(0.5), - MaxPseudoRapidity = cms.double(5.0), - premixStage1 = cms.bool(False), - maximumPreviousBunchCrossing = cms.uint32(0), - maximumSubsequentBunchCrossing = cms.uint32(0), +from Configuration.ProcessModifiers.run3_ecalclustering_cff import run3_ecalclustering +run3_ecalclustering.toModify( + caloParticles, simHitCollections = cms.PSet( ecal = cms.VInputTag( cms.InputTag('g4SimHits','EcalHitsEE'), cms.InputTag('g4SimHits','EcalHitsEB'), cms.InputTag('g4SimHits','EcalHitsES') ) - ), - simTrackCollection = cms.InputTag('g4SimHits'), - simVertexCollection = cms.InputTag('g4SimHits'), - genParticleCollection = cms.InputTag('genParticles'), - allowDifferentSimHitProcesses = cms.bool(False), # should be True for FastSim, False for FullSim - HepMCProductLabel = cms.InputTag('generatorSmeared'), - ) + ) ) from Configuration.Eras.Modifier_fastSim_cff import fastSim diff --git a/SimGeneral/MixingModule/python/digitizers_cfi.py b/SimGeneral/MixingModule/python/digitizers_cfi.py index 18d7391b58bc9..247acfe7a0415 100644 --- a/SimGeneral/MixingModule/python/digitizers_cfi.py +++ b/SimGeneral/MixingModule/python/digitizers_cfi.py @@ -101,11 +101,9 @@ theDigitizersValid = cms.PSet(theDigitizers) theDigitizers.mergedtruth.select.signalOnlyTP = True -from Configuration.Eras.Modifier_run3_ecalclustering_cff import run3_ecalclustering -run3_ecalclustering.toModify( theDigitizersValid, - calotruth = cms.PSet( caloParticles ) ) -phase2_hgcal.toModify( theDigitizersValid, +from Configuration.ProcessModifiers.run3_ecalclustering_cff import run3_ecalclustering +(run3_ecalclustering | phase2_hgcal).toModify( theDigitizersValid, calotruth = cms.PSet( caloParticles ) ) # Doesn't HGCal need these also without validation? (premix_stage2 & phase2_hgcal).toModify(theDigitizersValid, calotruth = dict(premixStage1 = True)) From be0d45fcdeb6385b774c0df8031df810ba8e8f46 Mon Sep 17 00:00:00 2001 From: Badder Date: Wed, 18 Dec 2019 14:51:07 +0100 Subject: [PATCH 08/11] scram build code-format --- SimDataFormats/CaloAnalysis/interface/SimCluster.h | 8 ++------ SimGeneral/CaloAnalysis/plugins/CaloTruthAccumulator.cc | 2 +- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/SimDataFormats/CaloAnalysis/interface/SimCluster.h b/SimDataFormats/CaloAnalysis/interface/SimCluster.h index 6f3570eb1e7af..c6c96c3f20b58 100644 --- a/SimDataFormats/CaloAnalysis/interface/SimCluster.h +++ b/SimDataFormats/CaloAnalysis/interface/SimCluster.h @@ -178,9 +178,7 @@ class SimCluster { } /** @brief add rechit energy */ - void addHitEnergy(float energy) { - energies_.emplace_back(energy); - } + void addHitEnergy(float energy) { energies_.emplace_back(energy); } /** @brief Returns list of rechit IDs and fractions for this SimCluster */ std::vector> hits_and_fractions() const { @@ -207,9 +205,7 @@ class SimCluster { } /** @brief clear the energies list */ - void clearHitsEnergy() { - std::vector().swap(energies_); - } + void clearHitsEnergy() { std::vector().swap(energies_); } /** @brief returns the accumulated sim energy in the cluster */ float simEnergy() const { return simhit_energy_; } diff --git a/SimGeneral/CaloAnalysis/plugins/CaloTruthAccumulator.cc b/SimGeneral/CaloAnalysis/plugins/CaloTruthAccumulator.cc index 4b7d602d03d17..ff7e8a22fd75b 100644 --- a/SimGeneral/CaloAnalysis/plugins/CaloTruthAccumulator.cc +++ b/SimGeneral/CaloAnalysis/plugins/CaloTruthAccumulator.cc @@ -496,7 +496,7 @@ void CaloTruthAccumulator::finalizeEvent(edm::Event &event, edm::EventSetup cons edm::LogWarning(messageCategory_) << "TotalSimEnergy for hit " << hAndE.first << " is 0! The fraction for this hit cannot be computed."; sc.addRecHitAndFraction(hAndE.first, fraction); - sc.addHitEnergy(hAndE.second); + sc.addHitEnergy(hAndE.second); } } } From 11b2394ea99f9cbd82b24b59b890fb9e7bad0271 Mon Sep 17 00:00:00 2001 From: Badder Date: Sat, 11 Jan 2020 11:08:31 +0100 Subject: [PATCH 09/11] add assert in hits_and_energies() --- SimDataFormats/CaloAnalysis/interface/SimCluster.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/SimDataFormats/CaloAnalysis/interface/SimCluster.h b/SimDataFormats/CaloAnalysis/interface/SimCluster.h index c6c96c3f20b58..6a743761a8d6b 100644 --- a/SimDataFormats/CaloAnalysis/interface/SimCluster.h +++ b/SimDataFormats/CaloAnalysis/interface/SimCluster.h @@ -195,6 +195,8 @@ class SimCluster { for (size_t i = 0; i < hits_.size(); ++i) { result.emplace_back(hits_[i], energies_[i]); } + assert(hits_.size() == energies_.size()); + result.reserve(hits_.size()); return result; } From c33cbb4404da01b0eaf96c36313ad6f03a88d9b2 Mon Sep 17 00:00:00 2001 From: Badder Date: Sat, 11 Jan 2020 17:06:17 +0100 Subject: [PATCH 10/11] scram build code-format --- SimDataFormats/CaloAnalysis/interface/SimCluster.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SimDataFormats/CaloAnalysis/interface/SimCluster.h b/SimDataFormats/CaloAnalysis/interface/SimCluster.h index 6a743761a8d6b..57a4d69fe6b2a 100644 --- a/SimDataFormats/CaloAnalysis/interface/SimCluster.h +++ b/SimDataFormats/CaloAnalysis/interface/SimCluster.h @@ -196,7 +196,7 @@ class SimCluster { result.emplace_back(hits_[i], energies_[i]); } assert(hits_.size() == energies_.size()); - result.reserve(hits_.size()); + result.reserve(hits_.size()); return result; } From 510b5def2d58ae01c64d9b86cbe6be7ceaee83c9 Mon Sep 17 00:00:00 2001 From: Badder Date: Sat, 11 Jan 2020 17:53:34 +0100 Subject: [PATCH 11/11] fix --- SimDataFormats/CaloAnalysis/interface/SimCluster.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/SimDataFormats/CaloAnalysis/interface/SimCluster.h b/SimDataFormats/CaloAnalysis/interface/SimCluster.h index 57a4d69fe6b2a..30b75545cc0dd 100644 --- a/SimDataFormats/CaloAnalysis/interface/SimCluster.h +++ b/SimDataFormats/CaloAnalysis/interface/SimCluster.h @@ -191,12 +191,12 @@ class SimCluster { /** @brief Returns list of rechit IDs and energies for this SimCluster */ std::vector> hits_and_energies() const { + assert(hits_.size() == energies_.size()); std::vector> result; + result.reserve(hits_.size()); for (size_t i = 0; i < hits_.size(); ++i) { result.emplace_back(hits_[i], energies_[i]); } - assert(hits_.size() == energies_.size()); - result.reserve(hits_.size()); return result; }