Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enable DNN supercluster in Phase2 HLT #46010

Merged
merged 10 commits into from
Oct 18, 2024
Original file line number Diff line number Diff line change
Expand Up @@ -717,6 +717,8 @@ def condition(self, fragment, stepList, key, hasHarvest):

class UpgradeWorkflow_ticl_v5_superclustering(UpgradeWorkflow):
def setup_(self, step, stepName, stepDict, k, properties):
if ('Digi' in step and 'NoHLT' not in step) or ('HLTOnly' in step):
stepDict[stepName][k] = merge([self.step2, stepDict[step][k]])
if 'RecoGlobal' in step:
stepDict[stepName][k] = merge([self.step3, stepDict[step][k]])
if 'HARVESTGlobal' in step:
Expand All @@ -725,16 +727,21 @@ def condition(self, fragment, stepList, key, hasHarvest):
return (fragment=="ZEE_14" or 'Eta1p7_2p7' in fragment) and '2026' in key
upgradeWFs['ticl_v5_superclustering_mustache_ticl'] = UpgradeWorkflow_ticl_v5_superclustering(
steps = [
'HLTOnly',
'DigiTrigger',
'RecoGlobal',
'HARVESTGlobal'
],
PU = [
'HLTOnly',
'DigiTrigger',
'RecoGlobal',
'HARVESTGlobal'
],
suffix = '_ticl_v5_mustache',
offset = 0.204,
)
upgradeWFs['ticl_v5_superclustering_mustache_ticl'].step2 = {'--procModifiers': 'ticl_v5,ticl_superclustering_mustache_ticl'}
upgradeWFs['ticl_v5_superclustering_mustache_ticl'].step3 = {'--procModifiers': 'ticl_v5,ticl_superclustering_mustache_ticl'}
upgradeWFs['ticl_v5_superclustering_mustache_ticl'].step4 = {'--procModifiers': 'ticl_v5,ticl_superclustering_mustache_ticl'}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,6 @@
scHybridBarrelProducer = cms.InputTag("hltParticleFlowSuperClusterECALL1Seeded","particleFlowSuperClusterECALBarrel"),
scIslandEndcapProducer = cms.InputTag("hltParticleFlowSuperClusterHGCalFromTICLL1Seeded")
)

from Configuration.ProcessModifiers.ticl_v5_cff import ticl_v5
ticl_v5.toModify(hltEgammaCandidatesL1Seeded, scIslandEndcapProducer = cms.InputTag("hltTiclEGammaSuperClusterProducerL1Seeded"))
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,6 @@
scHybridBarrelProducer = cms.InputTag("hltParticleFlowSuperClusterECALUnseeded","particleFlowSuperClusterECALBarrel"),
scIslandEndcapProducer = cms.InputTag("hltParticleFlowSuperClusterHGCalFromTICLUnseeded")
)

from Configuration.ProcessModifiers.ticl_v5_cff import ticl_v5
ticl_v5.toModify(hltEgammaCandidatesUnseeded, scIslandEndcapProducer = cms.InputTag("hltTiclEGammaSuperClusterProducerUnseeded"))
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import FWCore.ParameterSet.Config as cms

hltTiclTracksterLinksL1Seeded = cms.EDProducer("TracksterLinksProducer",
detector = cms.string('HGCAL'),
layer_clusters = cms.InputTag("hltHgcalMergeLayerClustersL1Seeded"),
layer_clustersTime = cms.InputTag("hltHgcalMergeLayerClustersL1Seeded","timeLayerCluster"),
inferenceAlgo = cms.string('TracksterInferenceByDNN'),
linkingPSet = cms.PSet(
algo_verbosity = cms.int32(0),
cylinder_radius_sqr = cms.vdouble(9, 9),
dot_prod_th = cms.double(0.97),
max_distance_projective_sqr = cms.vdouble(60, 60),
max_distance_projective_sqr_closest_points = cms.vdouble(60, 60),
max_z_distance_closest_points = cms.vdouble(35, 35),
min_distance_z = cms.vdouble(30, 30),
min_num_lcs = cms.uint32(7),
min_trackster_energy = cms.double(10),
pca_quality_th = cms.double(0.85),
track_time_quality_threshold = cms.double(0.5),
type = cms.string('Skeletons'),
wind = cms.double(0.036)
),
pluginInferenceAlgoTracksterInferenceByDNN = cms.PSet(
algo_verbosity = cms.int32(0),
onnxPIDModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/linking/id_v0.onnx'),
onnxEnergyModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/linking/energy_v0.onnx'),
inputNames = cms.vstring('input'),
output_en = cms.vstring('enreg_output'),
output_id = cms.vstring('pid_output'),
eid_min_cluster_energy = cms.double(1),
eid_n_layers = cms.int32(50),
eid_n_clusters = cms.int32(10),
doPID = cms.int32(1),
doRegression = cms.int32(1),
type = cms.string('TracksterInferenceByDNN')
),
mightGet = cms.optional.untracked.vstring,
original_masks = cms.VInputTag("hltHgcalMergeLayerClustersL1Seeded:InitialLayerClustersMask"),
propagator = cms.string('PropagatorWithMaterial'),
regressionAndPid = cms.bool(True),
tracksters_collections = cms.VInputTag("hltTiclTrackstersCLUE3DHighL1Seeded", "hltTiclTrackstersPassthrough")
)


Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import FWCore.ParameterSet.Config as cms

hltTiclTracksterLinksUnseeded = cms.EDProducer("TracksterLinksProducer",
detector = cms.string('HGCAL'),
layer_clusters = cms.InputTag("hltHgcalMergeLayerClusters"),
layer_clustersTime = cms.InputTag("hltHgcalMergeLayerClusters","timeLayerCluster"),
inferenceAlgo = cms.string('TracksterInferenceByDNN'),
linkingPSet = cms.PSet(
algo_verbosity = cms.int32(0),
cylinder_radius_sqr = cms.vdouble(9, 9),
dot_prod_th = cms.double(0.97),
max_distance_projective_sqr = cms.vdouble(60, 60),
max_distance_projective_sqr_closest_points = cms.vdouble(60, 60),
max_z_distance_closest_points = cms.vdouble(35, 35),
min_distance_z = cms.vdouble(30, 30),
min_num_lcs = cms.uint32(7),
min_trackster_energy = cms.double(10),
pca_quality_th = cms.double(0.85),
track_time_quality_threshold = cms.double(0.5),
type = cms.string('Skeletons'),
wind = cms.double(0.036)
),
pluginInferenceAlgoTracksterInferenceByDNN = cms.PSet(
algo_verbosity = cms.int32(0),
onnxPIDModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/linking/id_v0.onnx'),
onnxEnergyModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/linking/energy_v0.onnx'),
inputNames = cms.vstring('input'),
output_en = cms.vstring('enreg_output'),
output_id = cms.vstring('pid_output'),
eid_min_cluster_energy = cms.double(1),
eid_n_layers = cms.int32(50),
eid_n_clusters = cms.int32(10),
doPID = cms.int32(1),
doRegression = cms.int32(1),
type = cms.string('TracksterInferenceByDNN')
),
mightGet = cms.optional.untracked.vstring,
original_masks = cms.VInputTag("hltHgcalMergeLayerClusters:InitialLayerClustersMask"),
propagator = cms.string('PropagatorWithMaterial'),
regressionAndPid = cms.bool(True),
tracksters_collections = cms.VInputTag("hltTiclTrackstersCLUE3DHigh", "hltTiclTrackstersPassthrough")
)


Original file line number Diff line number Diff line change
Expand Up @@ -141,5 +141,6 @@
)

from Configuration.ProcessModifiers.ticl_v5_cff import ticl_v5
ticl_v5.toModify(hltTiclTrackstersCLUE3DHighL1Seeded.pluginPatternRecognitionByCLUE3D, computeLocalTime = cms.bool(True), doPidCut = cms.bool(False))
ticl_v5.toModify(hltTiclTrackstersCLUE3DHighL1Seeded.pluginPatternRecognitionByCLUE3D, computeLocalTime = cms.bool(True))
ticl_v5.toModify(hltTiclTrackstersCLUE3DHighL1Seeded.inferenceAlgo, type = cms.string('TracksterInferenceByDNN'))

Original file line number Diff line number Diff line change
Expand Up @@ -142,5 +142,5 @@
)

from Configuration.ProcessModifiers.ticl_v5_cff import ticl_v5
ticl_v5.toModify(hltTiclTrackstersCLUE3DHigh.pluginPatternRecognitionByCLUE3D, computeLocalTime = cms.bool(True), doPidCut = cms.bool(False))
ticl_v5.toModify(hltTiclTrackstersCLUE3DHigh.pluginPatternRecognitionByCLUE3D, computeLocalTime = cms.bool(True))
ticl_v5.toModify(hltTiclTrackstersCLUE3DHigh.inferenceAlgo, type = cms.string('TracksterInferenceByDNN'))
Original file line number Diff line number Diff line change
Expand Up @@ -43,4 +43,45 @@
from ..sequences.HLTPFHcalClusteringForEgammaSequence_cfi import *
from ..sequences.HLTTrackingV61Sequence_cfi import *

HLTEle5OpenUnseededSequence = cms.Sequence(HLTL1Sequence+HLTDoFullUnpackingEgammaEcalSequence+HLTEGammaDoLocalHcalSequence+HLTPFClusteringForEgammaUnseededSequence+HLTHgcalTiclPFClusteringForEgammaUnseededSequence+HLTFastJetForEgammaSequence+HLTPFHcalClusteringForEgammaSequence+HLTElePixelMatchUnseededSequence+HLTTrackingV61Sequence+HLTGsfElectronUnseededSequence+(hltEgammaCandidatesUnseeded+hltEgammaClusterShapeUnseeded+hltEgammaR9Unseeded+hltEgammaHGCALIDVarsUnseeded+hltEgammaHoverEUnseeded+hltEgammaEcalPFClusterIsoUnseeded+hltEgammaHGCalLayerClusterIsoUnseeded+hltEgammaHcalPFClusterIsoUnseeded+hltEgammaEleGsfTrackIsoUnseeded+hltEgammaEleGsfTrackIsoV6Unseeded+hltEgammaEleL1TrkIsoUnseeded+hltEgammaHollowTrackIsoUnseeded)+hltEgammaCandidatesWrapperUnseeded+hltEG5EtUnseededFilter+hltEle5DphiUnseededFilter+cms.ignore(hltEle5WPTightClusterShapeUnseededFilter)+cms.ignore(hltEle5WPTightClusterShapeSigmavvUnseededFilter)+cms.ignore(hltEle5WPTightClusterShapeSigmawwUnseededFilter)+cms.ignore(hltEle5WPTightHgcalHEUnseededFilter)+cms.ignore(hltEle5WPTightHEUnseededFilter)+cms.ignore(hltEle5WPTightEcalIsoUnseededFilter)+cms.ignore(hltEle5WPTightHgcalIsoUnseededFilter)+cms.ignore(hltEle5WPTightHcalIsoUnseededFilter)+cms.ignore(hltEle5WPTightPixelMatchUnseededFilter)+cms.ignore(hltEle5WPTightPMS2UnseededFilter)+cms.ignore(hltEle5WPTightGsfOneOEMinusOneOPUnseededFilter)+cms.ignore(hltEle5WPTightGsfDetaUnseededFilter)+cms.ignore(hltEle5WPTightGsfDphiUnseededFilter)+cms.ignore(hltEle5WPTightBestGsfNLayerITUnseededFilter)+cms.ignore(hltEle5WPTightBestGsfChi2UnseededFilter)+cms.ignore(hltEle5WPTightGsfTrackIsoFromL1TracksUnseededFilter)+cms.ignore(hltEle5WPTightGsfTrackIsoUnseededFilter))
HLTEle5OpenUnseededSequence = cms.Sequence(HLTL1Sequence
+HLTDoFullUnpackingEgammaEcalSequence
+HLTEGammaDoLocalHcalSequence
+HLTPFClusteringForEgammaUnseededSequence
+HLTHgcalTiclPFClusteringForEgammaUnseededSequence
+HLTFastJetForEgammaSequence
+HLTPFHcalClusteringForEgammaSequence
+HLTElePixelMatchUnseededSequence
+HLTTrackingV61Sequence
+HLTGsfElectronUnseededSequence
+hltEgammaCandidatesUnseeded
+hltEgammaClusterShapeUnseeded
+hltEgammaR9Unseeded
+hltEgammaHGCALIDVarsUnseeded
+hltEgammaHoverEUnseeded
+hltEgammaEcalPFClusterIsoUnseeded
+hltEgammaHGCalLayerClusterIsoUnseeded
+hltEgammaHcalPFClusterIsoUnseeded
+hltEgammaEleGsfTrackIsoUnseeded
+hltEgammaEleGsfTrackIsoV6Unseeded
+hltEgammaEleL1TrkIsoUnseeded
+hltEgammaHollowTrackIsoUnseeded
+hltEgammaCandidatesWrapperUnseeded
+hltEG5EtUnseededFilter
+hltEle5DphiUnseededFilter
+cms.ignore(hltEle5WPTightClusterShapeUnseededFilter)
+cms.ignore(hltEle5WPTightClusterShapeSigmavvUnseededFilter)
+cms.ignore(hltEle5WPTightClusterShapeSigmawwUnseededFilter)
+cms.ignore(hltEle5WPTightHgcalHEUnseededFilter)
+cms.ignore(hltEle5WPTightHEUnseededFilter)
+cms.ignore(hltEle5WPTightEcalIsoUnseededFilter)
+cms.ignore(hltEle5WPTightHgcalIsoUnseededFilter)
+cms.ignore(hltEle5WPTightHcalIsoUnseededFilter)
+cms.ignore(hltEle5WPTightPixelMatchUnseededFilter)
+cms.ignore(hltEle5WPTightPMS2UnseededFilter)
+cms.ignore(hltEle5WPTightGsfOneOEMinusOneOPUnseededFilter)
+cms.ignore(hltEle5WPTightGsfDetaUnseededFilter)
+cms.ignore(hltEle5WPTightGsfDphiUnseededFilter)
+cms.ignore(hltEle5WPTightBestGsfNLayerITUnseededFilter)
+cms.ignore(hltEle5WPTightBestGsfChi2UnseededFilter)
+cms.ignore(hltEle5WPTightGsfTrackIsoFromL1TracksUnseededFilter)
+cms.ignore(hltEle5WPTightGsfTrackIsoUnseededFilter))
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,62 @@
from ..modules.hltTiclLayerTileProducerL1Seeded_cfi import *
from ..modules.hltTiclSeedingL1_cfi import *
from ..modules.hltTiclTrackstersCLUE3DHighL1Seeded_cfi import *
from ..modules.hltTiclTracksterLinksL1Seeded_cfi import *

HLTHgcalTiclPFClusteringForEgammaL1SeededSequence = cms.Sequence(hltHgcalDigis+hltL1TEGammaHGCFilteredCollectionProducer+hltHgcalDigisL1Seeded+hltHGCalUncalibRecHitL1Seeded+hltHGCalRecHitL1Seeded+hltParticleFlowRecHitHGCL1Seeded+hltRechitInRegionsHGCAL+hltHgcalLayerClustersEEL1Seeded+hltHgcalLayerClustersHSciL1Seeded+hltHgcalLayerClustersHSiL1Seeded+hltHgcalMergeLayerClustersL1Seeded+hltFilteredLayerClustersCLUE3DHighL1Seeded+hltTiclSeedingL1+hltTiclLayerTileProducerL1Seeded+hltTiclTrackstersCLUE3DHighL1Seeded+hltParticleFlowClusterHGCalFromTICLL1Seeded+hltParticleFlowSuperClusterHGCalFromTICLL1Seeded)
_HgcalLocalRecoL1SeededSequence = cms.Sequence(hltHgcalDigis+hltL1TEGammaHGCFilteredCollectionProducer+hltHgcalDigisL1Seeded+hltHGCalUncalibRecHitL1Seeded+hltHGCalRecHitL1Seeded+hltParticleFlowRecHitHGCL1Seeded+hltRechitInRegionsHGCAL+hltHgcalLayerClustersEEL1Seeded+hltHgcalLayerClustersHSciL1Seeded+hltHgcalLayerClustersHSiL1Seeded+hltHgcalMergeLayerClustersL1Seeded)
_HgcalTICLPatternRecognitionL1SeededSequence = cms.Sequence(hltFilteredLayerClustersCLUE3DHighL1Seeded+hltTiclSeedingL1+hltTiclLayerTileProducerL1Seeded+hltTiclTrackstersCLUE3DHighL1Seeded)
_SuperclusteringL1SeededSequence = cms.Sequence(hltParticleFlowClusterHGCalFromTICLL1Seeded+hltParticleFlowSuperClusterHGCalFromTICLL1Seeded)

# The baseline sequence
HLTHgcalTiclPFClusteringForEgammaL1SeededSequence = cms.Sequence(_HgcalLocalRecoL1SeededSequence + _HgcalTICLPatternRecognitionL1SeededSequence + _SuperclusteringL1SeededSequence)

# Enable EGammaSuperClusterProducer at HLT in ticl v5
hltTiclTracksterLinksSuperclusteringDNNL1Seeded = hltTiclTracksterLinksL1Seeded.clone(
linkingPSet = cms.PSet(
type=cms.string("SuperClusteringDNN"),
algo_verbosity=cms.int32(0),
onnxModelPath = cms.FileInPath("RecoHGCal/TICL/data/superclustering/supercls_v2p1.onnx"),
nnWorkingPoint=cms.double(0.3),
),
tracksters_collections = [cms.InputTag("hltTiclTrackstersCLUE3DHighL1Seeded")], # to be changed to ticlTrackstersCLUE3DEM once separate CLUE3D iterations are introduced
)

hltTiclTracksterLinksSuperclusteringMustacheL1Seeded = hltTiclTracksterLinksL1Seeded.clone(
linkingPSet = cms.PSet(
type=cms.string("SuperClusteringMustache"),
algo_verbosity=cms.int32(0)
),
tracksters_collections = [cms.InputTag("hltTiclTrackstersCLUE3DHighL1Seeded")], # to be changed to ticlTrackstersCLUE3DEM once separate CLUE3D iterations are introduced
)

from RecoHGCal.TICL.ticlEGammaSuperClusterProducer_cfi import ticlEGammaSuperClusterProducer
hltTiclEGammaSuperClusterProducerL1Seeded = ticlEGammaSuperClusterProducer.clone()

# DNN
from Configuration.ProcessModifiers.ticl_superclustering_dnn_cff import ticl_superclustering_dnn
ticl_superclustering_dnn.toReplaceWith(_SuperclusteringL1SeededSequence,
cms.Sequence(
hltTiclTracksterLinksSuperclusteringDNNL1Seeded
+ hltTiclEGammaSuperClusterProducerL1Seeded
)
)
ticl_superclustering_dnn.toModify(hltTiclEGammaSuperClusterProducerL1Seeded,
ticlSuperClusters=cms.InputTag("hltTiclTracksterLinksSuperclusteringDNNL1Seeded"),
ticlTrackstersEM=cms.InputTag("hltTiclTrackstersCLUE3DHighL1Seeded"),
layerClusters=cms.InputTag("hltHgcalMergeLayerClustersL1Seeded")
)

# Mustache
from Configuration.ProcessModifiers.ticl_superclustering_mustache_ticl_cff import ticl_superclustering_mustache_ticl
ticl_superclustering_mustache_ticl.toReplaceWith(_SuperclusteringL1SeededSequence,
cms.Sequence(
hltTiclTracksterLinksSuperclusteringMustacheL1Seeded
+ hltTiclEGammaSuperClusterProducerL1Seeded
)
)
ticl_superclustering_mustache_ticl.toModify(hltTiclEGammaSuperClusterProducerL1Seeded,
ticlSuperClusters=cms.InputTag("hltTiclTracksterLinksSuperclusteringMustacheL1Seeded"),
ticlTrackstersEM=cms.InputTag("hltTiclTrackstersCLUE3DHighL1Seeded"),
layerClusters=cms.InputTag("hltHgcalMergeLayerClustersL1Seeded"),
enableRegression=cms.bool(False)
)
Loading