From 4e7cb2cb9ac5cbc97abffdf8a026a989b2946541 Mon Sep 17 00:00:00 2001 From: Bruno Alves Date: Tue, 15 Jul 2025 11:02:28 +0200 Subject: [PATCH 1/4] TICL-barrel validation @ HLT --- .../ParticleFlowReco/src/classes_def_2.xml | 5 +- .../hltBarrelLayerClustersEBL1Seeded_cfi.py | 2 +- .../modules/hltBarrelLayerClustersHB_cfi.py | 6 +- .../Common/python/HLTValidationHarvest_cff.py | 6 ++ .../Common/python/HLTValidation_cff.py | 39 +++++++- .../Common/test/hltHarvesting_cfg.py | 1 - .../LCToSCAssociatorByEnergyScoreImpl.cc | 3 +- .../python/hltLCToCPAssociation_cfi.py | 25 +++++ .../python/hltLCToSCAssociation_cfi.py | 24 +++++ .../Configuration/python/autoValidation.py | 3 +- .../python/hltBarrelSimValid_cff.py | 20 ++++ .../python/hltHGCalSimValid_cff.py | 71 +++++++++----- .../interface/BarrelValidator.h | 14 +-- .../plugins/BarrelValidator.cc | 94 +++++++++++++------ .../HGCalValidation/plugins/HGCalValidator.cc | 16 ++-- .../python/HLTBarrelValidator_cff.py | 15 +++ .../python/HLTHGCalValidator_cff.py | 36 +++---- .../src/BarrelVHistoProducerAlgo.cc | 2 +- 18 files changed, 287 insertions(+), 95 deletions(-) create mode 100644 SimCalorimetry/HGCalAssociatorProducers/python/hltLCToCPAssociation_cfi.py create mode 100644 SimCalorimetry/HGCalAssociatorProducers/python/hltLCToSCAssociation_cfi.py create mode 100644 Validation/Configuration/python/hltBarrelSimValid_cff.py create mode 100644 Validation/HGCalValidation/python/HLTBarrelValidator_cff.py diff --git a/DataFormats/ParticleFlowReco/src/classes_def_2.xml b/DataFormats/ParticleFlowReco/src/classes_def_2.xml index d3d03e85d4c43..8951eddabfb17 100644 --- a/DataFormats/ParticleFlowReco/src/classes_def_2.xml +++ b/DataFormats/ParticleFlowReco/src/classes_def_2.xml @@ -69,10 +69,11 @@ + - - + + diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltBarrelLayerClustersEBL1Seeded_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltBarrelLayerClustersEBL1Seeded_cfi.py index 473586b8c260e..9ffafd289589f 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/modules/hltBarrelLayerClustersEBL1Seeded_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltBarrelLayerClustersEBL1Seeded_cfi.py @@ -4,7 +4,7 @@ recHits = cms.InputTag("hltParticleFlowRecHitECALL1Seeded"), plugin = cms.PSet( outlierDeltaFactor = cms.double(2.7 * 0.0175), - kappa = cms.double(3.5), + kappa = cms.double(1), maxLayerIndex = cms.int32(0), deltac = cms.double(1.8 * 0.0175), fractionCutoff = cms.double(0.0), diff --git a/HLTrigger/Configuration/python/HLT_75e33/modules/hltBarrelLayerClustersHB_cfi.py b/HLTrigger/Configuration/python/HLT_75e33/modules/hltBarrelLayerClustersHB_cfi.py index 6cf50da979b74..ed12567e9d4c6 100644 --- a/HLTrigger/Configuration/python/HLT_75e33/modules/hltBarrelLayerClustersHB_cfi.py +++ b/HLTrigger/Configuration/python/HLT_75e33/modules/hltBarrelLayerClustersHB_cfi.py @@ -3,10 +3,10 @@ hltBarrelLayerClustersHB = cms.EDProducer('BarrelLayerClusterProducer', recHits = cms.InputTag("hltParticleFlowRecHitHBHE"), plugin = cms.PSet( - outlierDeltaFactor = cms.double(2.7 * 0.0175), - kappa = cms.double(3.5), + outlierDeltaFactor = cms.double(5 * 0.087), + kappa = cms.double(0), maxLayerIndex = cms.int32(4), - deltac = cms.double(1.8 * 0.0175), + deltac = cms.double(3 * 0.087), fractionCutoff = cms.double(0.0), doSharing = cms.bool(False), type = cms.string('HBCLUE') diff --git a/HLTriggerOffline/Common/python/HLTValidationHarvest_cff.py b/HLTriggerOffline/Common/python/HLTValidationHarvest_cff.py index 2f39d7ea7bb36..3adbd44b5ae6f 100644 --- a/HLTriggerOffline/Common/python/HLTValidationHarvest_cff.py +++ b/HLTriggerOffline/Common/python/HLTValidationHarvest_cff.py @@ -17,6 +17,7 @@ from HLTriggerOffline.Egamma.HLTpostProcessorGsfTracker_cfi import * from Validation.HGCalValidation.HLTHGCalPostProcessor_cff import * from Validation.HLTrigger.HLTGenValidationHarvesting_cff import * +from Validation.HGCalValidation.BarrelPostProcessor_cff import * hltpostvalidation = cms.Sequence( postProcessorHLTtrackingSequence @@ -64,6 +65,11 @@ from Configuration.Eras.Modifier_phase2_common_cff import phase2_common phase2_common.toReplaceWith(hltpostvalidation, _phase2_hltpostvalidation) +_phase2_hltpostvalidation_WithBarrel = _phase2_hltpostvalidation.copy() +_phase2_hltpostvalidation_WithBarrel += barrelValidatorPostProcessor +from Configuration.ProcessModifiers.ticl_barrel_cff import ticl_barrel +ticl_barrel.toReplaceWith(hltpostvalidation, _phase2_hltpostvalidation_WithBarrel) + # fastsim customs from Configuration.Eras.Modifier_fastSim_cff import fastSim fastSim.toReplaceWith(hltpostvalidation, hltpostvalidation.copyAndExclude([ diff --git a/HLTriggerOffline/Common/python/HLTValidation_cff.py b/HLTriggerOffline/Common/python/HLTValidation_cff.py index 9a2eecd1e6e49..15fb0977cf7a9 100644 --- a/HLTriggerOffline/Common/python/HLTValidation_cff.py +++ b/HLTriggerOffline/Common/python/HLTValidation_cff.py @@ -20,6 +20,7 @@ from Validation.SiTrackerPhase2V.HLTPhase2TrackerValidationFirstStep_cff import * # Gen-level Validation from Validation.HLTrigger.HLTGenValidation_cff import * +from Validation.Configuration.globalValidation_cff import * # HGCAL Rechit Calibration from Validation.HGCalValidation.hgcalHitCalibrationDefault_cfi import hgcalHitCalibrationDefault as _hgcalHitCalibrationDefault @@ -60,6 +61,7 @@ # Temporary Phase-2 config from Configuration.Eras.Modifier_phase2_common_cff import phase2_common +from Configuration.ProcessModifiers.ticl_barrel_cff import ticl_barrel # Create the modified sequence for phase 2 _phase2_hltassociation = hltassociation.copyAndExclude([ @@ -98,9 +100,7 @@ +hltHCALdigisAnalyzer+hltHCALRecoAnalyzer+hltHCALNoiseRates # HCAL ) -# Temporary Phase-2 config # Exclude everything except Muon and JetMET for now. Add HGCAL Hit Calibration -from Configuration.Eras.Modifier_phase2_common_cff import phase2_common _hltvalidationWithMC_Phase2 = hltvalidationWithMC.copyAndExclude([#HLTMuonVal, HLTTauVal, egammaValidationSequence, @@ -129,6 +129,41 @@ hltvalidationWithData ) +# from Configuration.StandardSequences.Validation_cff import prevalidation +# ImportError: cannot import name 'prevalidation' from partially initialized module 'Configuration.StandardSequences.Validation_cff' (most likely due to a circular import) (/shared/CMSSW_15_1_X_2025-07-16-2300/src/Configuration/StandardSequences/python/Validation_cff.py) +hltprevalidation = cms.Sequence( cms.SequencePlaceholder("mix") * globalPrevalidation * hltassociation * metPreValidSeq * jetPreValidSeq ) +phase2_common.toReplaceWith(hltprevalidation, hltprevalidation.copyAndExclude([cms.SequencePlaceholder("mix"),globalPrevalidation,metPreValidSeq,jetPreValidSeq])) + +from Validation.Configuration.hltHGCalSimValid_cff import hltRecHitMapProducer as _hltRecHitMapProducer +hltprevalidation.insert(-1, _hltRecHitMapProducer) + +from Validation.Configuration import hltHGCalSimValid_cff as _hltHGCalSimValid +_hltprevalidation_Phase2 = hltprevalidation.copy() +_hltprevalidation_Phase2.insert(-1, _hltHGCalSimValid.hltHgcalPrevalidation) +phase2_common.toReplaceWith(hltprevalidation, _hltprevalidation_Phase2) + +from Validation.Configuration.hltBarrelSimValid_cff import * +_hltprevalidation_Phase2_WithBarrel = _hltprevalidation_Phase2.copy() +_hltprevalidation_Phase2_WithBarrel.insert(-1, hltBarrelPrevalidation) +ticl_barrel.toReplaceWith(hltprevalidation, _hltprevalidation_Phase2_WithBarrel) + +hltvalidationCommon = hltvalidationCommon.copy() +hltvalidationWithMC = hltvalidationWithMC.copy() +hltvalidationWithData = hltvalidationWithData.copy() +_hltvalidationWithMC_Phase2 = _hltvalidationWithMC_Phase2.copy() +phase2_common.toReplaceWith(hltvalidationWithMC, _hltvalidationWithMC_Phase2) + +from Validation.HGCalValidation.HLTBarrelValidator_cff import hltBarrelValidator +_hltvalidationWithMC_Phase2_WithBarrel = _hltvalidationWithMC_Phase2.copy() +_hltvalidationWithMC_Phase2_WithBarrel.insert(-1, hltBarrelValidator) +ticl_barrel.toReplaceWith(hltvalidationWithMC, _hltvalidationWithMC_Phase2_WithBarrel) + +hltvalidation = cms.Sequence( + hltvalidationCommon * # HCAL RecHit analyzer + hltvalidationWithMC * + hltvalidationWithData +) + # some hlt collections have no direct fastsim equivalent # remove the dependent modules for now # probably it would be rather easy to add or fake these collections diff --git a/HLTriggerOffline/Common/test/hltHarvesting_cfg.py b/HLTriggerOffline/Common/test/hltHarvesting_cfg.py index 3657697fcab8c..d9aa46ad3453b 100644 --- a/HLTriggerOffline/Common/test/hltHarvesting_cfg.py +++ b/HLTriggerOffline/Common/test/hltHarvesting_cfg.py @@ -47,7 +47,6 @@ '/store/relval/CMSSW_3_0_0_pre7/RelValTTbar/GEN-SIM-RECO/STARTUP_30X_v1/0002/0AB7BC40-87E9-DD11-8CCF-003048767D51.root' ) - process.load("HLTriggerOffline.Common.HLTValidation_cff") #extra config needed in standalone diff --git a/SimCalorimetry/HGCalAssociatorProducers/plugins/LCToSCAssociatorByEnergyScoreImpl.cc b/SimCalorimetry/HGCalAssociatorProducers/plugins/LCToSCAssociatorByEnergyScoreImpl.cc index 5f4f97034059f..e8ac95d8cc7fc 100644 --- a/SimCalorimetry/HGCalAssociatorProducers/plugins/LCToSCAssociatorByEnergyScoreImpl.cc +++ b/SimCalorimetry/HGCalAssociatorProducers/plugins/LCToSCAssociatorByEnergyScoreImpl.cc @@ -78,9 +78,10 @@ ticl::association LCToSCAssociatorByEnergyScoreImplT::makeConnecti if constexpr (std::is_same_v) hits_and_fractions = simClusters[scId].filtered_hits_and_fractions( [this](const DetId& detid) { return !recHitTools_->isBarrel(detid); }); - else + else { hits_and_fractions = simClusters[scId].filtered_hits_and_fractions( [this](const DetId& detid) { return recHitTools_->isBarrel(detid); }); + } for (const auto& it_haf : hits_and_fractions) { const auto hitid = (it_haf.first); unsigned int scLayerId = recHitTools_->getLayer(hitid); diff --git a/SimCalorimetry/HGCalAssociatorProducers/python/hltLCToCPAssociation_cfi.py b/SimCalorimetry/HGCalAssociatorProducers/python/hltLCToCPAssociation_cfi.py new file mode 100644 index 0000000000000..69323f441caa0 --- /dev/null +++ b/SimCalorimetry/HGCalAssociatorProducers/python/hltLCToCPAssociation_cfi.py @@ -0,0 +1,25 @@ +import FWCore.ParameterSet.Config as cms + +from SimCalorimetry.HGCalAssociatorProducers.barrelLCToCPAssociatorByEnergyScoreProducer_cfi import barrelLCToCPAssociatorByEnergyScoreProducer as _barrelLCToCPAssociatorByEnergyScoreProducer +hltBarrelLCToCPAssociatorByEnergyScoreProducer = _barrelLCToCPAssociatorByEnergyScoreProducer.clone( + hitMapTag = 'hltRecHitMapProducer:barrelRecHitMap', + hits = 'hltRecHitMapProducer:RefProdVectorPFRecHitCollection' +) + +from SimCalorimetry.HGCalSimProducers.hgcHitAssociation_cfi import lcAssocByEnergyScoreProducer as _lcAssocByEnergyScoreProducer +hltHGCalLCToCPAssociatorByEnergyScoreProducer = _lcAssocByEnergyScoreProducer.clone( + hitMapTag = 'hltRecHitMapProducer:hgcalRecHitMap', + hits = 'hltRecHitMapProducer:RefProdVectorHGCRecHitCollection' +) + +from SimCalorimetry.HGCalAssociatorProducers.LCToCPAssociation_cfi import barrelLayerClusterCaloParticleAssociation as _barrelLayerClusterCaloParticleAssociation +hltBarrelLayerClusterCaloParticleAssociation = _barrelLayerClusterCaloParticleAssociation.clone( + associator = 'hltBarrelLCToCPAssociatorByEnergyScoreProducer', + label_lc = 'hltMergeLayerClusters' +) + +from SimCalorimetry.HGCalAssociatorProducers.LCToCPAssociation_cfi import layerClusterCaloParticleAssociation as _layerClusterCaloParticleAssociation +hltHGCalLayerClusterCaloParticleAssociation = _layerClusterCaloParticleAssociation.clone( + associator = 'hltHGCalLCToCPAssociatorByEnergyScoreProducer', + label_lc = 'hltMergeLayerClusters' +) diff --git a/SimCalorimetry/HGCalAssociatorProducers/python/hltLCToSCAssociation_cfi.py b/SimCalorimetry/HGCalAssociatorProducers/python/hltLCToSCAssociation_cfi.py new file mode 100644 index 0000000000000..a75513d00d9c3 --- /dev/null +++ b/SimCalorimetry/HGCalAssociatorProducers/python/hltLCToSCAssociation_cfi.py @@ -0,0 +1,24 @@ +import FWCore.ParameterSet.Config as cms + +from SimCalorimetry.HGCalAssociatorProducers.barrelLCToSCAssociatorByEnergyScoreProducer_cfi import * +hltBarrelLCToSCAssociatorByEnergyScoreProducer = barrelLCToSCAssociatorByEnergyScoreProducer.clone( + hitMapTag = 'hltRecHitMapProducer:barrelRecHitMap', + hits = 'hltRecHitMapProducer:RefProdVectorPFRecHitCollection' +) + +from SimCalorimetry.HGCalSimProducers.hgcHitAssociation_cfi import scAssocByEnergyScoreProducer +hltHGCalLCToSCAssociatorByEnergyScoreProducer = scAssocByEnergyScoreProducer.clone( + hitMapTag = 'hltRecHitMapProducer:hgcalRecHitMap', + hits = 'hltRecHitMapProducer:RefProdVectorHGCRecHitCollection' +) + +from SimCalorimetry.HGCalAssociatorProducers.LCToSCAssociation_cfi import barrelLayerClusterSimClusterAssociation as _barrelLayerClusterSimClusterAssociation +hltBarrelLayerClusterSimClusterAssociation = _barrelLayerClusterSimClusterAssociation.clone( + associator = 'hltBarrelLCToSCAssociatorByEnergyScoreProducer', + label_lcl = 'hltMergeLayerClusters' +) +from SimCalorimetry.HGCalAssociatorProducers.LCToSCAssociation_cfi import layerClusterSimClusterAssociation as _layerClusterSimClusterAssociation +hltHGCalLayerClusterSimClusterAssociation = _layerClusterSimClusterAssociation.clone( + associator = 'hltHGCalLCToSCAssociatorByEnergyScoreProducer', + label_lcl = 'hltMergeLayerClusters' +) diff --git a/Validation/Configuration/python/autoValidation.py b/Validation/Configuration/python/autoValidation.py index bf8552ea90513..87656bf796783 100644 --- a/Validation/Configuration/python/autoValidation.py +++ b/Validation/Configuration/python/autoValidation.py @@ -15,7 +15,7 @@ 'miniAODValidation' : ['prevalidationMiniAOD','validationMiniAOD','validationHarvestingMiniAOD'], 'standardValidation' : ['prevalidation','validation','validationHarvesting'], 'standardValidationNoHLT' : ['prevalidationNoHLT','validationNoHLT','validationHarvestingNoHLT'], - 'hltValidation' : ['prevalidation','hltvalidation','validationHarvesting'], + 'hltValidation' : ['hltprevalidation','hltvalidation','validationHarvesting'], 'standardValidationHiMix' : ['prevalidation','validationHiMix','validationHarvesting'], 'standardValidationNoHLTHiMix' : ['prevalidationNoHLT','validationNoHLTHiMix','validationHarvestingNoHLT'], 'HGCalValidation' : ['globalPrevalidationHGCal', 'globalValidationHGCal', 'hgcalValidatorPostProcessor'], @@ -26,6 +26,7 @@ } _phase2_allowed = ['baseValidation','trackingValidation','muonOnlyValidation','JetMETOnlyValidation', 'electronOnlyValidation', 'photonOnlyValidation','bTagOnlyValidation', 'tauOnlyValidation', 'hcalValidation', 'HGCalValidation', 'BarrelValidation', 'MTDValidation', 'ecalValidation_phase2', 'TrackerPhase2Validation', 'hltValidation'] + autoValidation['phase2Validation'] = ['','',''] for i in range(0,3): autoValidation['phase2Validation'][i] = '+'.join([_f for _f in [autoValidation[m][i] for m in _phase2_allowed] if _f]) diff --git a/Validation/Configuration/python/hltBarrelSimValid_cff.py b/Validation/Configuration/python/hltBarrelSimValid_cff.py new file mode 100644 index 0000000000000..0bd7f290ae848 --- /dev/null +++ b/Validation/Configuration/python/hltBarrelSimValid_cff.py @@ -0,0 +1,20 @@ +import FWCore.ParameterSet.Config as cms + +from RecoLocalCalo.HGCalRecProducers.recHitMapProducer_cff import recHitMapProducer as _recHitMapProducer +barrel_hits = ["hltParticleFlowRecHitECALUnseeded", "hltParticleFlowRecHitHBHE"] +hltBarrelRecHitMapProducer = _recHitMapProducer.clone( + hits = barrel_hits, + hgcalOnly = False, +) + +from SimCalorimetry.HGCalAssociatorProducers.hltLCToCPAssociation_cfi import (hltBarrelLCToCPAssociatorByEnergyScoreProducer, + hltBarrelLayerClusterCaloParticleAssociation) +from SimCalorimetry.HGCalAssociatorProducers.hltLCToSCAssociation_cfi import (hltBarrelLCToSCAssociatorByEnergyScoreProducer, + hltBarrelLayerClusterSimClusterAssociation) + +hltBarrelPrevalidation = cms.Sequence( + hltBarrelLCToCPAssociatorByEnergyScoreProducer * + hltBarrelLCToSCAssociatorByEnergyScoreProducer * + hltBarrelLayerClusterCaloParticleAssociation * + hltBarrelLayerClusterSimClusterAssociation +) diff --git a/Validation/Configuration/python/hltHGCalSimValid_cff.py b/Validation/Configuration/python/hltHGCalSimValid_cff.py index 677020c1dd390..33af53fe57b58 100644 --- a/Validation/Configuration/python/hltHGCalSimValid_cff.py +++ b/Validation/Configuration/python/hltHGCalSimValid_cff.py @@ -13,36 +13,47 @@ from RecoLocalCalo.HGCalRecProducers.recHitMapProducer_cff import recHitMapProducer as _recHitMapProducer -hits = ["hltHGCalRecHit:HGCEERecHits", "hltHGCalRecHit:HGCHEFRecHits", "hltHGCalRecHit:HGCHEBRecHits"] -hltRecHitMapProducer = _recHitMapProducer.clone( - hits = hits, +from Validation.Configuration.hltBarrelSimValid_cff import hltBarrelRecHitMapProducer as _hltBarrelRecHitMapProducer +from Validation.Configuration.hltBarrelSimValid_cff import barrel_hits +hgcal_hits = ["hltHGCalRecHit:HGCEERecHits", "hltHGCalRecHit:HGCHEFRecHits", "hltHGCalRecHit:HGCHEBRecHits"] +hltRecHitMapProducer = _hltBarrelRecHitMapProducer.clone() + +hltHGCalRecHitMapProducer = _hltBarrelRecHitMapProducer.clone( + hits = hgcal_hits, hgcalOnly = True, ) +from Configuration.Eras.Modifier_phase2_common_cff import phase2_common +from Configuration.ProcessModifiers.ticl_barrel_cff import ticl_barrel +(phase2_common & ~ticl_barrel).toReplaceWith(hltRecHitMapProducer, hltHGCalRecHitMapProducer) + +(phase2_common & ticl_barrel).toModify(hltRecHitMapProducer, + hits = [*hgcal_hits, *barrel_hits], + ) hltLcAssocByEnergyScoreProducer = _lcAssocByEnergyScoreProducer.clone( - hits = cms.InputTag("hltRecHitMapProducer", "RefProdVectorHGCRecHitCollection"), - hitMapTag = cms.InputTag("hltRecHitMapProducer","hgcalRecHitMap"), + hits = 'hltHGCalRecHitMapProducer:RefProdVectorHGCRecHitCollection', + hitMapTag = 'hltHGCalRecHitMapProducer:hgcalRecHitMap' ) hltScAssocByEnergyScoreProducer = _scAssocByEnergyScoreProducer.clone( - hits = cms.InputTag("hltRecHitMapProducer", "RefProdVectorHGCRecHitCollection"), - hitMapTag = cms.InputTag("hltRecHitMapProducer","hgcalRecHitMap"), + hits = 'hltHGCalRecHitMapProducer:RefProdVectorHGCRecHitCollection', + hitMapTag = 'hltHGCalRecHitMapProducer:hgcalRecHitMap', ) hltLayerClusterCaloParticleAssociationProducer = _layerClusterCaloParticleAssociationProducer.clone( - associator = cms.InputTag("hltLcAssocByEnergyScoreProducer"), - label_lc = cms.InputTag("hltMergeLayerClusters") + associator = 'hltLcAssocByEnergyScoreProducer', + label_lc = 'hltMergeLayerClusters' ) hltLayerClusterSimClusterAssociationProducer = _layerClusterSimClusterAssociationProducer.clone( - associator = cms.InputTag("hltScAssocByEnergyScoreProducer"), - label_lcl = cms.InputTag("hltMergeLayerClusters") + associator = 'hltScAssocByEnergyScoreProducer', + label_lcl = 'hltMergeLayerClusters' ) from SimCalorimetry.HGCalAssociatorProducers.AllLayerClusterToTracksterAssociatorsProducer_cfi import AllLayerClusterToTracksterAssociatorsProducer as _AllLayerClusterToTracksterAssociatorsProducer hltAllLayerClusterToTracksterAssociations = _AllLayerClusterToTracksterAssociatorsProducer.clone( - layer_clusters = cms.InputTag("hltMergeLayerClusters"), + layer_clusters = 'hltMergeLayerClusters', tracksterCollections = cms.VInputTag( *[cms.InputTag(label) for label in _hltTiclIterLabels], cms.InputTag("hltTiclSimTracksters"), @@ -51,8 +62,8 @@ ) hltAllTrackstersToSimTrackstersAssociationsByLCs = _allTrackstersToSimTrackstersAssociationsByLCs.clone( - allLCtoTSAccoc = cms.string("hltAllLayerClusterToTracksterAssociations"), - layerClusters = cms.InputTag("hltMergeLayerClusters"), + allLCtoTSAccoc = 'hltAllLayerClusterToTracksterAssociations', + layerClusters = 'hltMergeLayerClusters', tracksterCollections = cms.VInputTag( *[cms.InputTag(label) for label in _hltTiclIterLabels] ), @@ -65,16 +76,16 @@ from SimCalorimetry.HGCalAssociatorProducers.AllTracksterToSimTracksterAssociatorsByHitsProducer_cfi import AllTracksterToSimTracksterAssociatorsByHitsProducer as _AllTracksterToSimTracksterAssociatorsByHitsProducer hltHitToSimClusterCaloParticleAssociator = _hitToSimClusterCaloParticleAssociator.clone( - hitMap = cms.InputTag("hltRecHitMapProducer","hgcalRecHitMap"), - hits = cms.InputTag("hltRecHitMapProducer", "RefProdVectorHGCRecHitCollection"), + hitMap = 'hltHGCalRecHitMapProducer:hgcalRecHitMap', + hits = 'hltHGCalRecHitMapProducer:RefProdVectorHGCRecHitCollection' ) from SimCalorimetry.HGCalAssociatorProducers.AllHitToTracksterAssociatorsProducer_cfi import AllHitToTracksterAssociatorsProducer as _AllHitToTracksterAssociatorsProducer hltAllHitToTracksterAssociations = _AllHitToTracksterAssociatorsProducer.clone( - hitMapTag = cms.InputTag("hltRecHitMapProducer","hgcalRecHitMap"), - hits = cms.InputTag("hltRecHitMapProducer", "RefProdVectorHGCRecHitCollection"), - layerClusters = cms.InputTag("hltMergeLayerClusters"), + hitMapTag = 'hltHGCalRecHitMapProducer:hgcalRecHitMap', + hits = 'hltHGCalRecHitMapProducer:RefProdVectorHGCRecHitCollection', + layerClusters = 'hltMergeLayerClusters', tracksterCollections = cms.VInputTag( *[cms.InputTag(label) for label in _hltTiclIterLabels], cms.InputTag("hltTiclSimTracksters"), @@ -83,10 +94,10 @@ ) hltAllTrackstersToSimTrackstersAssociationsByHits = _AllTracksterToSimTracksterAssociatorsByHitsProducer.clone( - allHitToTSAccoc = cms.string("hltAllHitToTracksterAssociations"), - hitToCaloParticleMap = cms.InputTag("hltHitToSimClusterCaloParticleAssociator","hitToCaloParticleMap"), - hitToSimClusterMap = cms.InputTag("hltHitToSimClusterCaloParticleAssociator","hitToSimClusterMap"), - hits = cms.InputTag("hltRecHitMapProducer", "RefProdVectorHGCRecHitCollection"), + allHitToTSAccoc = 'hltAllHitToTracksterAssociations', + hitToCaloParticleMap = 'hltHitToSimClusterCaloParticleAssociator:hitToCaloParticleMap', + hitToSimClusterMap = 'hltHitToSimClusterCaloParticleAssociator:hitToSimClusterMap', + hits = 'hltHGCalRecHitMapProducer:RefProdVectorHGCRecHitCollection', tracksterCollections = cms.VInputTag( *[cms.InputTag(label) for label in _hltTiclIterLabels] ), @@ -96,7 +107,7 @@ ), ) -hltHgcalAssociatorsTask = cms.Task(hltRecHitMapProducer, +hltHgcalAssociatorsTask = cms.Task(hltHGCalRecHitMapProducer, hltLcAssocByEnergyScoreProducer, hltScAssocByEnergyScoreProducer, SimClusterToCaloParticleAssociation, @@ -108,3 +119,15 @@ hltHitToSimClusterCaloParticleAssociator, hltAllTrackstersToSimTrackstersAssociationsByHits ) + +from SimCalorimetry.HGCalAssociatorProducers.hltLCToCPAssociation_cfi import (hltHGCalLCToCPAssociatorByEnergyScoreProducer, + hltHGCalLayerClusterCaloParticleAssociation) +from SimCalorimetry.HGCalAssociatorProducers.hltLCToSCAssociation_cfi import (hltHGCalLCToSCAssociatorByEnergyScoreProducer, + hltHGCalLayerClusterSimClusterAssociation) + +hltHgcalPrevalidation = cms.Sequence( + hltHGCalLCToCPAssociatorByEnergyScoreProducer * + hltHGCalLCToSCAssociatorByEnergyScoreProducer * + hltHGCalLayerClusterCaloParticleAssociation * + hltHGCalLayerClusterSimClusterAssociation +) diff --git a/Validation/HGCalValidation/interface/BarrelValidator.h b/Validation/HGCalValidation/interface/BarrelValidator.h index f0d4a4ede3f6a..1ff93d30ecd87 100644 --- a/Validation/HGCalValidation/interface/BarrelValidator.h +++ b/Validation/HGCalValidation/interface/BarrelValidator.h @@ -68,7 +68,9 @@ class BarrelValidator : public DQMGlobalEDAnalyzer { protected: edm::ESGetToken caloGeomToken_; - edm::InputTag label_lcl; + edm::InputTag lclTag_; + edm::InputTag sclTag_; + edm::InputTag rechitmapTag_; std::vector associator_; std::vector associatorSim_; const bool SaveGeneralInfo_; @@ -76,15 +78,14 @@ class BarrelValidator : public DQMGlobalEDAnalyzer { const bool doCaloParticleSelection_; const bool doSimClustersPlots_; std::string label_SimClustersPlots_, label_SimClustersLevel_; + edm::InputTag simVerticesTag_; const bool doLayerClustersPlots_; std::string label_layerClustersPlots_, label_LCToCPLinking_; - std::vector label_clustersmask; + std::vector clustersmaskTags_; - std::vector> labelToken; edm::EDGetTokenT> simClusters_; - edm::EDGetTokenT layerclusters_; - edm::EDGetTokenT> label_cp_effic; - edm::EDGetTokenT> label_cp_fake; + edm::EDGetTokenT layerClusters_; + edm::EDGetTokenT> cpToken_; edm::EDGetTokenT> simVertices_; std::vector>> clustersMaskTokens_; edm::EDGetTokenT> barrelHitMap_; @@ -97,6 +98,7 @@ class BarrelValidator : public DQMGlobalEDAnalyzer { std::unique_ptr histoProducerAlgo_; edm::EDGetTokenT> hitsToken_; edm::EDGetTokenT scToCpMapToken_; + edm::InputTag cpTag_; private: CaloParticleSelector cpSelector; diff --git a/Validation/HGCalValidation/plugins/BarrelValidator.cc b/Validation/HGCalValidation/plugins/BarrelValidator.cc index 2bc263e84cc2e..f330cf50abab8 100644 --- a/Validation/HGCalValidation/plugins/BarrelValidator.cc +++ b/Validation/HGCalValidation/plugins/BarrelValidator.cc @@ -64,7 +64,9 @@ bool assignTracksterMaps(const edm::Handle>& tracks BarrelValidator::BarrelValidator(const edm::ParameterSet& pset) : caloGeomToken_(esConsumes()), - label_lcl(pset.getParameter("label_lcl")), + lclTag_(pset.getParameter("lclTag")), + sclTag_(pset.getParameter("sclTag")), + rechitmapTag_(pset.getParameter("rechitmapTag")), associator_(pset.getUntrackedParameter>("associator")), associatorSim_(pset.getUntrackedParameter>("associatorSim")), SaveGeneralInfo_(pset.getUntrackedParameter("SaveGeneralInfo")), @@ -73,22 +75,19 @@ BarrelValidator::BarrelValidator(const edm::ParameterSet& pset) doSimClustersPlots_(pset.getUntrackedParameter("doSimClustersPlots")), label_SimClustersPlots_(pset.getParameter("label_SimClusters")), label_SimClustersLevel_(pset.getParameter("label_SimClustersLevel")), + simVerticesTag_(pset.getParameter("simVertices")), doLayerClustersPlots_(pset.getUntrackedParameter("doLayerClustersPlots")), label_layerClustersPlots_(pset.getParameter("label_layerClustersPlots")), label_LCToCPLinking_(pset.getParameter("label_LCToCPLinking")), hitsToken_(consumes>(pset.getParameter("hits"))), scToCpMapToken_( - consumes(pset.getParameter("simClustersToCaloParticlesMap"))) { - //In this way we can easily generalize to associations between other objects also. - const edm::InputTag& label_cp_effic_tag = pset.getParameter("label_cp_effic"); - const edm::InputTag& label_cp_fake_tag = pset.getParameter("label_cp_fake"); + consumes(pset.getParameter("simClustersToCaloParticlesMap"))), + cpTag_(pset.getParameter("cpTag_")) { + cpToken_ = consumes>(cpTag_); - label_cp_effic = consumes>(label_cp_effic_tag); - label_cp_fake = consumes>(label_cp_fake_tag); + simVertices_ = consumes>(simVerticesTag_); - simVertices_ = consumes>(pset.getParameter("simVertices")); - - for (auto& itag : label_clustersmask) { + for (auto& itag : clustersmaskTags_) { clustersMaskTokens_.push_back(consumes>(itag)); } @@ -101,12 +100,11 @@ BarrelValidator::BarrelValidator(const edm::ParameterSet& pset) consumes>(itag)); } - barrelHitMap_ = - consumes>(edm::InputTag("recHitMapProducer", "barrelRecHitMap")); + barrelHitMap_ = consumes>(rechitmapTag_); - simClusters_ = consumes>(pset.getParameter("label_scl")); + simClusters_ = consumes>(sclTag_); - layerclusters_ = consumes(label_lcl); + layerClusters_ = consumes(lclTag_); for (auto& itag : associator_) { associatorMapRtS.push_back(consumes>(itag)); @@ -171,9 +169,9 @@ void BarrelValidator::bookHistograms(DQMStore::IBooker& ibook, ibook.setCurrentFolder(dirName_ + label_SimClustersPlots_ + "/" + label_SimClustersLevel_); histoProducerAlgo_->bookSimClusterHistos(ibook, histograms.histoProducerAlgo, totallayers_to_monitor_); - for (unsigned int ws = 0; ws < label_clustersmask.size(); ws++) { + for (unsigned int ws = 0; ws < clustersmaskTags_.size(); ws++) { ibook.cd(); - InputTag algo = label_clustersmask[ws]; + InputTag algo = clustersmaskTags_[ws]; string dirName = dirName_ + label_SimClustersPlots_ + "/"; if (!algo.process().empty()) dirName += algo.process() + "_"; @@ -225,7 +223,6 @@ void BarrelValidator::cpParametersAndSelection(const Histograms& histograms, size_t j = 0; for (auto const& caloParticle : cPeff) { int id = caloParticle.pdgId(); - if (!doCaloParticleSelection_ || (doCaloParticleSelection_ && cpSelector(caloParticle, simVertices))) { selected_cPeff.push_back(j); if (doCaloParticlePlots_) { @@ -251,10 +248,20 @@ void BarrelValidator::dqmAnalyze(const edm::Event& event, edm::Handle> simVerticesHandle; event.getByToken(simVertices_, simVerticesHandle); + if (!simVerticesHandle.isValid()) { + edm::LogWarning("BarrelValidator") << "simVerticesHandle with InputTag " << simVerticesTag_ << " is not valid."; + return; + } + std::vector const& simVertices = *simVerticesHandle; edm::Handle> caloParticleHandle; - event.getByToken(label_cp_effic, caloParticleHandle); + event.getByToken(cpToken_, caloParticleHandle); + if (!caloParticleHandle.isValid()) { + edm::LogWarning("BarrelValidator") << "caloParticleHandle with InputTag " << cpTag_ << " is not valid."; + return; + } + std::vector const& caloParticles = *caloParticleHandle; edm::ESHandle geom = setup.getHandle(caloGeomToken_); @@ -266,14 +273,27 @@ void BarrelValidator::dqmAnalyze(const edm::Event& event, for (unsigned int i = 0; i < associatorMapRtS.size(); ++i) { edm::Handle> simToRecoCollectionH; event.getByToken(associatorMapStR[i], simToRecoCollectionH); + if (!simToRecoCollectionH.isValid()) { + edm::LogWarning("BarrelValidator") << "simToRecoCollectionH with InputTag " << associator_[i] << " is not valid."; + return; + } simRecColl.push_back(*simToRecoCollectionH); + edm::Handle> recoToSimCollectionH; event.getByToken(associatorMapRtS[i], recoToSimCollectionH); + if (!recoToSimCollectionH.isValid()) { + edm::LogWarning("BarrelValidator") << "recoToSimCollectionH with InputTag " << associator_[i] << " is not valid."; + return; + } recSimColl.push_back(*recoToSimCollectionH); } edm::Handle> barrelHitMapHandle; event.getByToken(barrelHitMap_, barrelHitMapHandle); + if (!barrelHitMapHandle.isValid()) { + edm::LogWarning("BarrelValidator") << "barrelHitMapHandle with InputTag " << rechitmapTag_ << " is not valid."; + return; + } const std::unordered_map& barrelHitMap = *barrelHitMapHandle; if (!event.getHandle(hitsToken_).isValid()) { @@ -318,11 +338,20 @@ void BarrelValidator::dqmAnalyze(const edm::Event& event, //simClusters edm::Handle> simClustersHandle; event.getByToken(simClusters_, simClustersHandle); + if (!simClustersHandle.isValid()) { + edm::LogWarning("BarrelValidator") << "simClustersHandle with InputTag " << sclTag_ << " is not valid."; + return; + } + std::vector const& simClusters = *simClustersHandle; //Layer clusters edm::Handle clusterHandle; - event.getByToken(layerclusters_, clusterHandle); + event.getByToken(layerClusters_, clusterHandle); + if (!clusterHandle.isValid()) { + edm::LogWarning("BarrelValidator") << "clusterHandle with InputTag " << lclTag_ << " is not valid."; + return; + } const reco::CaloClusterCollection& clusters = *clusterHandle; auto nSimClusters = simClusters.size(); @@ -347,7 +376,7 @@ void BarrelValidator::dqmAnalyze(const edm::Event& event, if (doSimClustersPlots_) { histoProducerAlgo_->fill_simCluster_histos(histograms.histoProducerAlgo, simClusters, totallayers_to_monitor_); - for (unsigned int ws = 0; ws < label_clustersmask.size(); ws++) { + for (unsigned int ws = 0; ws < clustersmaskTags_.size(); ws++) { const auto& inputClusterMask = event.get(clustersMaskTokens_[ws]); std::vector> recSimColl; @@ -355,9 +384,20 @@ void BarrelValidator::dqmAnalyze(const edm::Event& event, for (unsigned int i = 0; i < associatorMapRtSim.size(); ++i) { edm::Handle> simtorecoCollectionH; event.getByToken(associatorMapSimtR[i], simtorecoCollectionH); + if (!simtorecoCollectionH.isValid()) { + edm::LogWarning("BarrelValidator") + << "simtorecoCollectionH with InputTag " << associatorSim_[i] << " is not valid."; + return; + } simRecColl.push_back(*simtorecoCollectionH); + edm::Handle> recotosimCollectionH; event.getByToken(associatorMapRtSim[i], recotosimCollectionH); + if (!recotosimCollectionH.isValid()) { + edm::LogWarning("BarrelValidator") + << "recotosimCollectionH with InputTag " << associatorSim_[i] << " is not valid."; + return; + } recSimColl.push_back(*recotosimCollectionH); } @@ -377,7 +417,7 @@ void BarrelValidator::dqmAnalyze(const edm::Event& event, //General Info on simClusters LogTrace("BarrelValidator") << "\n# of SimClusters: " << nSimClusters - << ", layerClusters mask label: " << label_clustersmask[ws].label() << "\n"; + << ", layerClusters mask label: " << clustersmaskTags_[ws].label() << "\n"; } //end of loop overs masks } @@ -405,8 +445,8 @@ void BarrelValidator::dqmAnalyze(const edm::Event& event, } //General Info on hgcalLayerClusters - LogTrace("BarrelValidator") << "\n# of layer clusters with " << label_lcl.process() << ":" << label_lcl.label() - << ":" << label_lcl.instance() << ": " << clusters.size() << "\n"; + LogTrace("BarrelValidator") << "\n# of layer clusters with " << lclTag_.process() << ":" << lclTag_.label() << ":" + << lclTag_.instance() << ": " << clusters.size() << "\n"; } } @@ -522,7 +562,8 @@ void BarrelValidator::fillDescriptions(edm::ConfigurationDescriptions& descripti desc.add("histoProducerAlgoBlock", psd1); } desc.add("hits", edm::InputTag("recHitMapProducer", "RefProdVectorPFRecHitCollection")); - desc.add("label_lcl", edm::InputTag("hgcalMergeLayerClusters")); + desc.add("lclTag", edm::InputTag("hgcalMergeLayerClusters")); + desc.add("rechitmapTag", edm::InputTag("recHitMapProducer", "barrelRecHitMap")); desc.add>("label_tst", { edm::InputTag("ticlTrackstersCLUE3DHigh"), @@ -547,9 +588,8 @@ void BarrelValidator::fillDescriptions(edm::ConfigurationDescriptions& descripti desc.add("label_LCToCPLinking", "LCToCP_association"); desc.add("simClustersToCaloParticlesMap", edm::InputTag("SimClusterToCaloParticleAssociation", "simClusterToCaloParticleMap")); - desc.add("label_cp_effic", edm::InputTag("mix", "MergedCaloTruth")); - desc.add("label_cp_fake", edm::InputTag("mix", "MergedCaloTruth")); - desc.add("label_scl", edm::InputTag("mix", "MergedCaloTruth")); + desc.add("cpTag_", edm::InputTag("mix", "MergedCaloTruth")); + desc.add("sclTag", edm::InputTag("mix", "MergedCaloTruth")); desc.add("simVertices", edm::InputTag("g4SimHits")); desc.add("totallayers_to_monitor", 5); desc.add("dirName", "BarrelCalorimeters/BarrelValidator/"); diff --git a/Validation/HGCalValidation/plugins/HGCalValidator.cc b/Validation/HGCalValidation/plugins/HGCalValidator.cc index 4493e34924727..89c8dc3a7a7a5 100644 --- a/Validation/HGCalValidation/plugins/HGCalValidator.cc +++ b/Validation/HGCalValidation/plugins/HGCalValidator.cc @@ -27,7 +27,7 @@ namespace { const auto simTrackstersProductId = simTracksterHandle.id(); const auto simTrackstersFromCPsProductId = simTracksterFromCPHandle.id(); if (recoTrackstersProductId == simTrackstersProductId or recoTrackstersProductId == simTrackstersFromCPsProductId) { - edm::LogInfo("MissingProduct") << "no SimTrackster to Simtrackster map available."; + edm::LogInfo("HGCalValidator") << "no SimTrackster to Simtrackster map available."; return false; } for (const auto& handle : tracksterToTracksterMapsHandles) { @@ -45,19 +45,19 @@ namespace { } } if (not trackstersToSimTrackstersMap.isValid()) { - edm::LogError("MissingProduct") << "trackstersToSimTrackstersMap is not valid"; + edm::LogError("HGCalValidator") << "trackstersToSimTrackstersMap is not valid"; return false; } if (not simTrackstersToTrackstersMap.isValid()) { - edm::LogError("MissingProduct") << "simTrackstersToTrackstersMap is not valid"; + edm::LogError("HGCalValidator") << "simTrackstersToTrackstersMap is not valid"; return false; } if (not trackstersToSimTrackstersFromCPsMap.isValid()) { - edm::LogError("MissingProduct") << "trackstersToSimTrackstersFromCPsMap is not valid"; + edm::LogError("HGCalValidator") << "trackstersToSimTrackstersFromCPsMap is not valid"; return false; } if (not simTrackstersFromCPsToTrackstersMap.isValid()) { - edm::LogError("MissingProduct") << "simTrackstersFromCPsToTrackstersMap is not valid"; + edm::LogError("HGCalValidator") << "simTrackstersFromCPsToTrackstersMap is not valid"; return false; } return true; @@ -382,7 +382,7 @@ void HGCalValidator::dqmAnalyze(const edm::Event& event, edm::Handle simTracksterHandle; event.getByToken(simTracksters_, simTracksterHandle); if (!simTracksterHandle.isValid()) { - edm::LogWarning("MissingInput") << "Missing SimTrackster collection"; + edm::LogWarning("HGCalValidator") << "Missing SimTrackster collection"; return; } ticl::TracksterCollection const& simTracksters = *simTracksterHandle; @@ -390,7 +390,7 @@ void HGCalValidator::dqmAnalyze(const edm::Event& event, edm::Handle simTracksterFromCPHandle; event.getByToken(simTracksters_fromCPs_, simTracksterFromCPHandle); if (!simTracksterFromCPHandle.isValid()) { - edm::LogWarning("MissingInput") << "Missing SimTrackster collection from CP"; + edm::LogWarning("HGCalValidator") << "Missing SimTrackster collection from CP"; return; } ticl::TracksterCollection const& simTrackstersFromCPs = *simTracksterFromCPHandle; @@ -584,7 +584,7 @@ void HGCalValidator::dqmAnalyze(const edm::Event& event, event.getByToken(label_tstTokens[wml], tracksterHandle); if (!tracksterHandle.isValid()) { - edm::LogWarning("MissingInput") << "Failed to retrieve tracksters for wml index: " << wml; + edm::LogWarning("HGCalValidator") << "Failed to retrieve tracksters for wml index: " << wml; continue; // Or handle the error as needed } diff --git a/Validation/HGCalValidation/python/HLTBarrelValidator_cff.py b/Validation/HGCalValidation/python/HLTBarrelValidator_cff.py new file mode 100644 index 0000000000000..c66b5387dce21 --- /dev/null +++ b/Validation/HGCalValidation/python/HLTBarrelValidator_cff.py @@ -0,0 +1,15 @@ +import FWCore.ParameterSet.Config as cms + +from Validation.HGCalValidation.barrelValidator_cfi import barrelValidator as _barrelValidator +from SimCalorimetry.HGCalAssociatorProducers.hltLCToCPAssociation_cfi import hltBarrelLayerClusterCaloParticleAssociation +from SimCalorimetry.HGCalAssociatorProducers.hltLCToSCAssociation_cfi import hltBarrelLayerClusterSimClusterAssociation + +hltBarrelValidator = _barrelValidator.clone( + lclTag = 'hltMergeLayerClusters', + hits = 'hltRecHitMapProducer:RefProdVectorPFRecHitCollection', + rechitmapTag = 'hltRecHitMapProducer:barrelRecHitMap', + associator = ['hltBarrelLayerClusterCaloParticleAssociation',], + associatorSim = ['hltBarrelLayerClusterSimClusterAssociation',], + dirName = 'HLT/BarrelCalorimeters/BarrelValidator/' +) + diff --git a/Validation/HGCalValidation/python/HLTHGCalValidator_cff.py b/Validation/HGCalValidation/python/HLTHGCalValidator_cff.py index 7194a0e86374a..6a8525c067415 100644 --- a/Validation/HGCalValidation/python/HLTHGCalValidator_cff.py +++ b/Validation/HGCalValidation/python/HLTHGCalValidator_cff.py @@ -12,26 +12,26 @@ hltHgcalValidator = _hgcalValidator.clone( LayerClustersInputMask = cms.VInputTag("hltTiclTrackstersCLUE3DHigh", "hltTiclSimTracksters:fromCPs", "hltTiclSimTracksters"), - label_tst = cms.VInputTag(*[cms.InputTag(label) for label in _hltTiclIterLabels] + [cms.InputTag("hltTiclSimTracksters", "fromCPs"), cms.InputTag("hltTiclSimTracksters")]), - allTracksterTracksterAssociatorsLabels = cms.VInputTag( *[cms.InputTag('hltAllTrackstersToSimTrackstersAssociationsByLCs:'+associator) for associator in hltAssociatorInstances] ), - allTracksterTracksterByHitsAssociatorsLabels = cms.VInputTag( *[cms.InputTag('hltAllTrackstersToSimTrackstersAssociationsByHits:'+associator) for associator in hltAssociatorInstances] ), + label_tst = [label for label in _hltTiclIterLabels] + ['hltTiclSimTracksters:fromCPs', 'hltTiclSimTracksters'], + allTracksterTracksterAssociatorsLabels = ['hltAllTrackstersToSimTrackstersAssociationsByLCs:'+associator for associator in hltAssociatorInstances], + allTracksterTracksterByHitsAssociatorsLabels = ['hltAllTrackstersToSimTrackstersAssociationsByHits:'+associator for associator in hltAssociatorInstances], associator = cms.untracked.InputTag("hltLayerClusterCaloParticleAssociationProducer"), associatorSim = cms.untracked.InputTag("hltLayerClusterSimClusterAssociationProducer"), - dirName = cms.string('HLT/HGCAL/HGCalValidator/'), - hits = cms.InputTag("hltRecHitMapProducer", "RefProdVectorHGCRecHitCollection"), - hitMap = cms.InputTag("hltRecHitMapProducer","hgcalRecHitMap"), - simTrackstersMap = cms.InputTag("hltTiclSimTracksters"), - label_layerClustersPlots = cms.string("hltHgcalMergeLayerClusters"), - label_lcl = cms.InputTag("hltMergeLayerClusters"), - label_simTS = cms.InputTag("hltTiclSimTracksters"), - label_simTSFromCP = cms.InputTag("hltTiclSimTracksters","fromCPs"), - recoTracks = cms.InputTag("hltGeneralTracks"), - simClustersToCaloParticlesMap = cms.InputTag("SimClusterToCaloParticleAssociation","simClusterToCaloParticleMap"), - simTiclCandidates = cms.InputTag("hltTiclSimTracksters"), - ticlCandidates = cms.string('hltTiclCandidate'), - ticlTrackstersMerge = cms.InputTag("hltTiclTrackstersMerge"), - mergeRecoToSimAssociator = cms.InputTag("hltAllTrackstersToSimTrackstersAssociationsByLCs","hltTiclTrackstersMergeTohltTiclSimTrackstersfromCPs"), - mergeSimToRecoAssociator = cms.InputTag("hltAllTrackstersToSimTrackstersAssociationsByLCs","hltTiclSimTrackstersfromCPsTohltTiclTrackstersMerge"), + dirName = 'HLT/HGCAL/HGCalValidator/', + hits = 'hltHGCalRecHitMapProducer:RefProdVectorHGCRecHitCollection', + hitMap = 'hltHGCalRecHitMapProducer:hgcalRecHitMap', + simTrackstersMap = 'hltTiclSimTracksters', + label_layerClustersPlots = 'hltHgcalMergeLayerClusters', + label_lcl = 'hltMergeLayerClusters', + label_simTS = 'hltTiclSimTracksters', + label_simTSFromCP = 'hltTiclSimTracksters:fromCPs', + recoTracks = 'hltGeneralTracks', + simClustersToCaloParticlesMap = 'SimClusterToCaloParticleAssociation:simClusterToCaloParticleMap', + simTiclCandidates = 'hltTiclSimTracksters', + ticlCandidates = 'hltTiclCandidate', + ticlTrackstersMerge = 'hltTiclTrackstersMerge', + mergeRecoToSimAssociator = 'hltAllTrackstersToSimTrackstersAssociationsByLCs:hltTiclTrackstersMergeTohltTiclSimTrackstersfromCPs', + mergeSimToRecoAssociator = 'hltAllTrackstersToSimTrackstersAssociationsByLCs:hltTiclSimTrackstersfromCPsTohltTiclTrackstersMerge', ) from Configuration.ProcessModifiers.ticl_v5_cff import ticl_v5 diff --git a/Validation/HGCalValidation/src/BarrelVHistoProducerAlgo.cc b/Validation/HGCalValidation/src/BarrelVHistoProducerAlgo.cc index aae5b284fb4d3..6f525ea26b309 100644 --- a/Validation/HGCalValidation/src/BarrelVHistoProducerAlgo.cc +++ b/Validation/HGCalValidation/src/BarrelVHistoProducerAlgo.cc @@ -995,7 +995,7 @@ void BarrelVHistoProducerAlgo::layerClusters_to_CaloParticles( continue; histograms.h_denom_layercl_eta_perlayer.at(lcLayerId)->Fill(clusters[lcId].eta()); histograms.h_denom_layercl_phi_perlayer.at(lcLayerId)->Fill(clusters[lcId].phi()); - // + const edm::Ref lcRef(clusterHandle, lcId); const auto& cpsIt = cpsInLayerClusterMap.find(lcRef); if (cpsIt == cpsInLayerClusterMap.end()) From e2269e28a1f812efbc748db6a25e2f5535ed2241 Mon Sep 17 00:00:00 2001 From: Bruno Alves Date: Mon, 13 Apr 2026 12:12:48 +0200 Subject: [PATCH 2/4] Remove comment path. --- HLTriggerOffline/Common/python/HLTValidation_cff.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/HLTriggerOffline/Common/python/HLTValidation_cff.py b/HLTriggerOffline/Common/python/HLTValidation_cff.py index 15fb0977cf7a9..179d38848094e 100644 --- a/HLTriggerOffline/Common/python/HLTValidation_cff.py +++ b/HLTriggerOffline/Common/python/HLTValidation_cff.py @@ -130,7 +130,7 @@ ) # from Configuration.StandardSequences.Validation_cff import prevalidation -# ImportError: cannot import name 'prevalidation' from partially initialized module 'Configuration.StandardSequences.Validation_cff' (most likely due to a circular import) (/shared/CMSSW_15_1_X_2025-07-16-2300/src/Configuration/StandardSequences/python/Validation_cff.py) +# ImportError: cannot import name 'prevalidation' from partially initialized module 'Configuration.StandardSequences.Validation_cff' (most likely due to a circular import) hltprevalidation = cms.Sequence( cms.SequencePlaceholder("mix") * globalPrevalidation * hltassociation * metPreValidSeq * jetPreValidSeq ) phase2_common.toReplaceWith(hltprevalidation, hltprevalidation.copyAndExclude([cms.SequencePlaceholder("mix"),globalPrevalidation,metPreValidSeq,jetPreValidSeq])) From 3405277a05e17f994ed6b12a6ae07eda968ef6ba Mon Sep 17 00:00:00 2001 From: Bruno Alves Date: Mon, 13 Apr 2026 14:15:18 +0200 Subject: [PATCH 3/4] Remove HGCAL associator duplication. --- RecoHGCal/TICL/python/HLTSimTracksters_cff.py | 4 +- .../python/hltHGCalSimValid_cff.py | 38 +++++-------------- .../python/HLTHGCalValidator_cff.py | 4 +- 3 files changed, 13 insertions(+), 33 deletions(-) diff --git a/RecoHGCal/TICL/python/HLTSimTracksters_cff.py b/RecoHGCal/TICL/python/HLTSimTracksters_cff.py index afbcbdfe0a0a0..dc2614d9c1a25 100644 --- a/RecoHGCal/TICL/python/HLTSimTracksters_cff.py +++ b/RecoHGCal/TICL/python/HLTSimTracksters_cff.py @@ -20,8 +20,8 @@ ) hltTiclSimTracksters = _simTrackstersProducer.clone( - layerClusterCaloParticleAssociator = cms.InputTag("hltLayerClusterCaloParticleAssociationProducer"), - layerClusterSimClusterAssociator = cms.InputTag("hltLayerClusterSimClusterAssociationProducer"), + layerClusterCaloParticleAssociator = cms.InputTag("hltHGCalLayerClusterCaloParticleAssociation"), + layerClusterSimClusterAssociator = cms.InputTag("hltHGCalLayerClusterSimClusterAssociation"), filtered_mask = cms.InputTag("hltFilteredLayerClustersSimTracksters","hltTiclSimTracksters"), layer_clusters = cms.InputTag("hltMergeLayerClusters"), time_layerclusters = cms.InputTag("hltMergeLayerClusters","timeLayerCluster"), diff --git a/Validation/Configuration/python/hltHGCalSimValid_cff.py b/Validation/Configuration/python/hltHGCalSimValid_cff.py index 33af53fe57b58..21a55271499f3 100644 --- a/Validation/Configuration/python/hltHGCalSimValid_cff.py +++ b/Validation/Configuration/python/hltHGCalSimValid_cff.py @@ -30,26 +30,6 @@ hits = [*hgcal_hits, *barrel_hits], ) -hltLcAssocByEnergyScoreProducer = _lcAssocByEnergyScoreProducer.clone( - hits = 'hltHGCalRecHitMapProducer:RefProdVectorHGCRecHitCollection', - hitMapTag = 'hltHGCalRecHitMapProducer:hgcalRecHitMap' -) - -hltScAssocByEnergyScoreProducer = _scAssocByEnergyScoreProducer.clone( - hits = 'hltHGCalRecHitMapProducer:RefProdVectorHGCRecHitCollection', - hitMapTag = 'hltHGCalRecHitMapProducer:hgcalRecHitMap', -) - -hltLayerClusterCaloParticleAssociationProducer = _layerClusterCaloParticleAssociationProducer.clone( - associator = 'hltLcAssocByEnergyScoreProducer', - label_lc = 'hltMergeLayerClusters' -) - -hltLayerClusterSimClusterAssociationProducer = _layerClusterSimClusterAssociationProducer.clone( - associator = 'hltScAssocByEnergyScoreProducer', - label_lcl = 'hltMergeLayerClusters' -) - from SimCalorimetry.HGCalAssociatorProducers.AllLayerClusterToTracksterAssociatorsProducer_cfi import AllLayerClusterToTracksterAssociatorsProducer as _AllLayerClusterToTracksterAssociatorsProducer hltAllLayerClusterToTracksterAssociations = _AllLayerClusterToTracksterAssociatorsProducer.clone( @@ -107,12 +87,17 @@ ), ) +from SimCalorimetry.HGCalAssociatorProducers.hltLCToCPAssociation_cfi import (hltHGCalLCToCPAssociatorByEnergyScoreProducer, + hltHGCalLayerClusterCaloParticleAssociation) +from SimCalorimetry.HGCalAssociatorProducers.hltLCToSCAssociation_cfi import (hltHGCalLCToSCAssociatorByEnergyScoreProducer, + hltHGCalLayerClusterSimClusterAssociation) + hltHgcalAssociatorsTask = cms.Task(hltHGCalRecHitMapProducer, - hltLcAssocByEnergyScoreProducer, - hltScAssocByEnergyScoreProducer, + hltHGCalLCToCPAssociatorByEnergyScoreProducer, + hltHGCalLCToSCAssociatorByEnergyScoreProducer, SimClusterToCaloParticleAssociation, - hltLayerClusterCaloParticleAssociationProducer, - hltLayerClusterSimClusterAssociationProducer, + hltHGCalLayerClusterCaloParticleAssociation, + hltHGCalLayerClusterSimClusterAssociation, hltAllLayerClusterToTracksterAssociations, hltAllTrackstersToSimTrackstersAssociationsByLCs, hltAllHitToTracksterAssociations, @@ -120,11 +105,6 @@ hltAllTrackstersToSimTrackstersAssociationsByHits ) -from SimCalorimetry.HGCalAssociatorProducers.hltLCToCPAssociation_cfi import (hltHGCalLCToCPAssociatorByEnergyScoreProducer, - hltHGCalLayerClusterCaloParticleAssociation) -from SimCalorimetry.HGCalAssociatorProducers.hltLCToSCAssociation_cfi import (hltHGCalLCToSCAssociatorByEnergyScoreProducer, - hltHGCalLayerClusterSimClusterAssociation) - hltHgcalPrevalidation = cms.Sequence( hltHGCalLCToCPAssociatorByEnergyScoreProducer * hltHGCalLCToSCAssociatorByEnergyScoreProducer * diff --git a/Validation/HGCalValidation/python/HLTHGCalValidator_cff.py b/Validation/HGCalValidation/python/HLTHGCalValidator_cff.py index 6a8525c067415..438a217b6ff9a 100644 --- a/Validation/HGCalValidation/python/HLTHGCalValidator_cff.py +++ b/Validation/HGCalValidation/python/HLTHGCalValidator_cff.py @@ -15,8 +15,8 @@ label_tst = [label for label in _hltTiclIterLabels] + ['hltTiclSimTracksters:fromCPs', 'hltTiclSimTracksters'], allTracksterTracksterAssociatorsLabels = ['hltAllTrackstersToSimTrackstersAssociationsByLCs:'+associator for associator in hltAssociatorInstances], allTracksterTracksterByHitsAssociatorsLabels = ['hltAllTrackstersToSimTrackstersAssociationsByHits:'+associator for associator in hltAssociatorInstances], - associator = cms.untracked.InputTag("hltLayerClusterCaloParticleAssociationProducer"), - associatorSim = cms.untracked.InputTag("hltLayerClusterSimClusterAssociationProducer"), + associator = cms.untracked.InputTag("hltHGCalLayerClusterCaloParticleAssociation"), + associatorSim = cms.untracked.InputTag("hltHGCalLayerClusterSimClusterAssociation"), dirName = 'HLT/HGCAL/HGCalValidator/', hits = 'hltHGCalRecHitMapProducer:RefProdVectorHGCRecHitCollection', hitMap = 'hltHGCalRecHitMapProducer:hgcalRecHitMap', From 87ef4db870f0233f2f6c9c58012825d8a0dab1b2 Mon Sep 17 00:00:00 2001 From: Bruno Alves Date: Mon, 13 Apr 2026 15:32:13 +0200 Subject: [PATCH 4/4] Remove explicit InputTag's when cloning. --- .../python/hltHGCalSimValid_cff.py | 30 ++++--------------- 1 file changed, 6 insertions(+), 24 deletions(-) diff --git a/Validation/Configuration/python/hltHGCalSimValid_cff.py b/Validation/Configuration/python/hltHGCalSimValid_cff.py index 21a55271499f3..634c929d1337e 100644 --- a/Validation/Configuration/python/hltHGCalSimValid_cff.py +++ b/Validation/Configuration/python/hltHGCalSimValid_cff.py @@ -34,23 +34,14 @@ hltAllLayerClusterToTracksterAssociations = _AllLayerClusterToTracksterAssociatorsProducer.clone( layer_clusters = 'hltMergeLayerClusters', - tracksterCollections = cms.VInputTag( - *[cms.InputTag(label) for label in _hltTiclIterLabels], - cms.InputTag("hltTiclSimTracksters"), - cms.InputTag("hltTiclSimTracksters", "fromCPs"), - ) + tracksterCollections = [*[cms.InputTag(label) for label in _hltTiclIterLabels], 'hltTiclSimTracksters', 'hltTiclSimTracksters:fromCPs'] ) hltAllTrackstersToSimTrackstersAssociationsByLCs = _allTrackstersToSimTrackstersAssociationsByLCs.clone( allLCtoTSAccoc = 'hltAllLayerClusterToTracksterAssociations', layerClusters = 'hltMergeLayerClusters', - tracksterCollections = cms.VInputTag( - *[cms.InputTag(label) for label in _hltTiclIterLabels] - ), - simTracksterCollections = cms.VInputTag( - cms.InputTag('hltTiclSimTracksters'), - cms.InputTag('hltTiclSimTracksters','fromCPs') - ), + tracksterCollections = [*[cms.InputTag(label) for label in _hltTiclIterLabels]], + simTracksterCollections = ['hltTiclSimTracksters', 'hltTiclSimTracksters:fromCPs'] ) from SimCalorimetry.HGCalAssociatorProducers.AllTracksterToSimTracksterAssociatorsByHitsProducer_cfi import AllTracksterToSimTracksterAssociatorsByHitsProducer as _AllTracksterToSimTracksterAssociatorsByHitsProducer @@ -66,11 +57,7 @@ hitMapTag = 'hltHGCalRecHitMapProducer:hgcalRecHitMap', hits = 'hltHGCalRecHitMapProducer:RefProdVectorHGCRecHitCollection', layerClusters = 'hltMergeLayerClusters', - tracksterCollections = cms.VInputTag( - *[cms.InputTag(label) for label in _hltTiclIterLabels], - cms.InputTag("hltTiclSimTracksters"), - cms.InputTag("hltTiclSimTracksters", "fromCPs"), - ) + tracksterCollections = [*[cms.InputTag(label) for label in _hltTiclIterLabels], 'hltTiclSimTracksters', 'hltTiclSimTracksters:fromCPs'] ) hltAllTrackstersToSimTrackstersAssociationsByHits = _AllTracksterToSimTracksterAssociatorsByHitsProducer.clone( @@ -78,13 +65,8 @@ hitToCaloParticleMap = 'hltHitToSimClusterCaloParticleAssociator:hitToCaloParticleMap', hitToSimClusterMap = 'hltHitToSimClusterCaloParticleAssociator:hitToSimClusterMap', hits = 'hltHGCalRecHitMapProducer:RefProdVectorHGCRecHitCollection', - tracksterCollections = cms.VInputTag( - *[cms.InputTag(label) for label in _hltTiclIterLabels] - ), - simTracksterCollections = cms.VInputTag( - 'hltTiclSimTracksters', - 'hltTiclSimTracksters:fromCPs' - ), + tracksterCollections = [*[cms.InputTag(label) for label in _hltTiclIterLabels]], + simTracksterCollections = ['hltTiclSimTracksters', 'hltTiclSimTracksters:fromCPs'] ) from SimCalorimetry.HGCalAssociatorProducers.hltLCToCPAssociation_cfi import (hltHGCalLCToCPAssociatorByEnergyScoreProducer,