Skip to content

Commit d95f5aa

Browse files
authored
Merge pull request #47550 from Moanwar/PFN_model_CMSSW_15_1_X_2025
Integrating Particle Flow Network (PFN) Models into TICLv5
2 parents 690f962 + bafa98a commit d95f5aa

14 files changed

+366
-37
lines changed

HLTrigger/Configuration/python/HLT_75e33/modules/hltTiclTracksterLinksL1Seeded_cfi.py

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@
55
detector = cms.string('HGCAL'),
66
layer_clusters = cms.InputTag("hltHgcalMergeLayerClustersL1Seeded"),
77
layer_clustersTime = cms.InputTag("hltHgcalMergeLayerClustersL1Seeded","timeLayerCluster"),
8-
inferenceAlgo = cms.string('TracksterInferenceByDNN'),
8+
inferenceAlgo = cms.string('TracksterInferenceByPFN'),
99
linkingPSet = hltTiclTracksterLinksPSet,
1010
pluginInferenceAlgoTracksterInferenceByDNN = cms.PSet(
1111
algo_verbosity = cms.int32(0),
12-
onnxPIDModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/linking/id_v0.onnx'),
13-
onnxEnergyModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/linking/energy_v0.onnx'),
12+
onnxPIDModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/DNN/linking/id_v0.onnx'),
13+
onnxEnergyModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/DNN/linking/energy_v0.onnx'),
1414
inputNames = cms.vstring('input'),
1515
output_en = cms.vstring('enreg_output'),
1616
output_id = cms.vstring('pid_output'),
@@ -21,6 +21,20 @@
2121
doRegression = cms.int32(1),
2222
type = cms.string('TracksterInferenceByDNN')
2323
),
24+
pluginInferenceAlgoTracksterInferenceByPFN = cms.PSet(
25+
algo_verbosity = cms.int32(0),
26+
onnxPIDModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/PFN/linking/id_v0.onnx'),
27+
onnxEnergyModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/PFN/linking/energy_v0.onnx'),
28+
inputNames = cms.vstring('input','input_tr_features'),
29+
output_en = cms.vstring('enreg_output'),
30+
output_id = cms.vstring('pid_output'),
31+
eid_min_cluster_energy = cms.double(1),
32+
eid_n_layers = cms.int32(50),
33+
eid_n_clusters = cms.int32(10),
34+
doPID = cms.int32(1),
35+
doRegression = cms.int32(1),
36+
type = cms.string('TracksterInferenceByPFN')
37+
),
2438
mightGet = cms.optional.untracked.vstring,
2539
original_masks = cms.VInputTag("hltHgcalMergeLayerClustersL1Seeded:InitialLayerClustersMask"),
2640
propagator = cms.string('PropagatorWithMaterial'),

HLTrigger/Configuration/python/HLT_75e33/modules/hltTiclTracksterLinks_cfi.py

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@
55
detector = cms.string('HGCAL'),
66
layer_clusters = cms.InputTag("hltHgcalMergeLayerClusters"),
77
layer_clustersTime = cms.InputTag("hltHgcalMergeLayerClusters","timeLayerCluster"),
8-
inferenceAlgo = cms.string('TracksterInferenceByDNN'),
8+
inferenceAlgo = cms.string('TracksterInferenceByPFN'),
99
linkingPSet = hltTiclTracksterLinksPSet,
1010
pluginInferenceAlgoTracksterInferenceByDNN = cms.PSet(
1111
algo_verbosity = cms.int32(0),
12-
onnxPIDModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/linking/id_v0.onnx'),
13-
onnxEnergyModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/linking/energy_v0.onnx'),
12+
onnxPIDModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/DNN/linking/id_v0.onnx'),
13+
onnxEnergyModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/DNN/linking/energy_v0.onnx'),
1414
inputNames = cms.vstring('input'),
1515
output_en = cms.vstring('enreg_output'),
1616
output_id = cms.vstring('pid_output'),
@@ -21,6 +21,20 @@
2121
doRegression = cms.int32(1),
2222
type = cms.string('TracksterInferenceByDNN')
2323
),
24+
pluginInferenceAlgoTracksterInferenceByPFN = cms.PSet(
25+
algo_verbosity = cms.int32(0),
26+
onnxPIDModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/PFN/linking/id_v0.onnx'),
27+
onnxEnergyModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/PFN/linking/energy_v0.onnx'),
28+
inputNames = cms.vstring('input','input_tr_features'),
29+
output_en = cms.vstring('enreg_output'),
30+
output_id = cms.vstring('pid_output'),
31+
eid_min_cluster_energy = cms.double(1),
32+
eid_n_layers = cms.int32(50),
33+
eid_n_clusters = cms.int32(10),
34+
doPID = cms.int32(1),
35+
doRegression = cms.int32(1),
36+
type = cms.string('TracksterInferenceByPFN')
37+
),
2438
mightGet = cms.optional.untracked.vstring,
2539
original_masks = cms.VInputTag("hltHgcalMergeLayerClusters:InitialLayerClustersMask"),
2640
propagator = cms.string('PropagatorWithMaterial'),

HLTrigger/Configuration/python/HLT_75e33/modules/hltTiclTrackstersCLUE3DHighL1Seeded_cfi.py

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,8 @@
120120
),
121121
pluginInferenceAlgoTracksterInferenceByDNN = cms.PSet(
122122
algo_verbosity = cms.int32(0),
123-
onnxPIDModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/patternrecognition/id_v0.onnx'),
124-
onnxEnergyModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/patternrecognition/energy_v0.onnx'),
123+
onnxPIDModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/DNN/patternrecognition/id_v0.onnx'),
124+
onnxEnergyModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/DNN/patternrecognition/energy_v0.onnx'),
125125
inputNames = cms.vstring('input'),
126126
output_en = cms.vstring('enreg_output'),
127127
output_id = cms.vstring('pid_output'),
@@ -131,7 +131,20 @@
131131
doRegression = cms.int32(0),
132132
type = cms.string('TracksterInferenceByDNN')
133133
),
134-
pluginInferenceAlgoTracksterInferenceByANN = cms.PSet(
134+
pluginInferenceAlgoTracksterInferenceByPFN = cms.PSet(
135+
algo_verbosity = cms.int32(0),
136+
onnxPIDModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/PFN/patternrecognition/id_v0.onnx'),
137+
onnxEnergyModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/PFN/patternrecognition/energy_v0.onnx'),
138+
inputNames = cms.vstring('input','input_tr_features'),
139+
output_en = cms.vstring('enreg_output'),
140+
output_id = cms.vstring('pid_output'),
141+
eid_n_layers = cms.int32(50),
142+
eid_n_clusters = cms.int32(10),
143+
doPID = cms.int32(1),
144+
doRegression = cms.int32(0),
145+
type = cms.string('TracksterInferenceByPFN')
146+
),
147+
pluginInferenceAlgoTracksterInferenceByANN = cms.PSet(
135148
algo_verbosity = cms.int32(0),
136149
type = cms.string('TracksterInferenceByANN')
137150

@@ -142,5 +155,5 @@
142155

143156
from Configuration.ProcessModifiers.ticl_v5_cff import ticl_v5
144157
ticl_v5.toModify(hltTiclTrackstersCLUE3DHighL1Seeded.pluginPatternRecognitionByCLUE3D, computeLocalTime = cms.bool(True))
145-
ticl_v5.toModify(hltTiclTrackstersCLUE3DHighL1Seeded.inferenceAlgo, type = cms.string('TracksterInferenceByDNN'))
158+
ticl_v5.toModify(hltTiclTrackstersCLUE3DHighL1Seeded.inferenceAlgo, type = cms.string('TracksterInferenceByPFN'))
146159

HLTrigger/Configuration/python/HLT_75e33/modules/hltTiclTrackstersCLUE3DHigh_cfi.py

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -121,8 +121,8 @@
121121
),
122122
pluginInferenceAlgoTracksterInferenceByDNN = cms.PSet(
123123
algo_verbosity = cms.int32(0),
124-
onnxPIDModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/patternrecognition/id_v0.onnx'),
125-
onnxEnergyModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/patternrecognition/energy_v0.onnx'),
124+
onnxPIDModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/DNN/patternrecognition/id_v0.onnx'),
125+
onnxEnergyModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/DNN/patternrecognition/energy_v0.onnx'),
126126
inputNames = cms.vstring('input'),
127127
output_en = cms.vstring('enreg_output'),
128128
output_id = cms.vstring('pid_output'),
@@ -132,6 +132,19 @@
132132
doRegression = cms.int32(0),
133133
type = cms.string('TracksterInferenceByDNN')
134134
),
135+
pluginInferenceAlgoTracksterInferenceByPFN = cms.PSet(
136+
algo_verbosity = cms.int32(0),
137+
onnxPIDModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/PFN/patternrecognition/id_v0.onnx'),
138+
onnxEnergyModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/PFN/patternrecognition/energy_v0.onnx'),
139+
inputNames = cms.vstring('input','input_tr_features'),
140+
output_en = cms.vstring('enreg_output'),
141+
output_id = cms.vstring('pid_output'),
142+
eid_n_layers = cms.int32(50),
143+
eid_n_clusters = cms.int32(10),
144+
doPID = cms.int32(1),
145+
doRegression = cms.int32(0),
146+
type = cms.string('TracksterInferenceByPFN')
147+
),
135148
pluginInferenceAlgoTracksterInferenceByANN = cms.PSet(
136149
algo_verbosity = cms.int32(0),
137150
type = cms.string('TracksterInferenceByANN')
@@ -143,4 +156,4 @@
143156

144157
from Configuration.ProcessModifiers.ticl_v5_cff import ticl_v5
145158
ticl_v5.toModify(hltTiclTrackstersCLUE3DHigh.pluginPatternRecognitionByCLUE3D, computeLocalTime = cms.bool(True))
146-
ticl_v5.toModify(hltTiclTrackstersCLUE3DHigh.inferenceAlgo, type = cms.string('TracksterInferenceByDNN'))
159+
ticl_v5.toModify(hltTiclTrackstersCLUE3DHigh.inferenceAlgo, type = cms.string('TracksterInferenceByPFN'))

HLTrigger/Configuration/python/HLT_75e33/modules/hltTiclTrackstersRecoveryL1Seeded_cfi.py

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
mightGet = cms.optional.untracked.vstring,
1111
original_mask = cms.InputTag("hltTiclTrackstersCLUE3DHighL1Seeded"),
1212
patternRecognitionBy = cms.string('Recovery'),
13-
inferenceAlgo = cms.string('TracksterInferenceByDNN'),
13+
inferenceAlgo = cms.string('TracksterInferenceByPFN'),
1414
pluginPatternRecognitionByCA = cms.PSet(
1515
algo_verbosity = cms.int32(0),
1616
computeLocalTime = cms.bool(True),
@@ -71,8 +71,8 @@
7171

7272
pluginInferenceAlgoTracksterInferenceByDNN = cms.PSet(
7373
algo_verbosity = cms.int32(0),
74-
onnxPIDModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/patternrecognition/id_v0.onnx'),
75-
onnxEnergyModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/patternrecognition/energy_v0.onnx'),
74+
onnxPIDModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/DNN/patternrecognition/id_v0.onnx'),
75+
onnxEnergyModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/DNN/patternrecognition/energy_v0.onnx'),
7676
inputNames = cms.vstring('input'),
7777
output_en = cms.vstring('enreg_output'),
7878
output_id = cms.vstring('pid_output'),
@@ -83,6 +83,20 @@
8383
doRegression = cms.int32(0),
8484
type = cms.string('TracksterInferenceByDNN')
8585
),
86+
pluginInferenceAlgoTracksterInferenceByPFN = cms.PSet(
87+
algo_verbosity = cms.int32(0),
88+
onnxPIDModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/PFN/patternrecognition/id_v0.onnx'),
89+
onnxEnergyModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/PFN/patternrecognition/energy_v0.onnx'),
90+
inputNames = cms.vstring('input','input_tr_features'),
91+
output_en = cms.vstring('enreg_output'),
92+
output_id = cms.vstring('pid_output'),
93+
eid_min_cluster_energy = cms.double(1),
94+
eid_n_layers = cms.int32(50),
95+
eid_n_clusters = cms.int32(10),
96+
doPID = cms.int32(0),
97+
doRegression = cms.int32(0),
98+
type = cms.string('TracksterInferenceByPFN')
99+
),
86100
pluginInferenceAlgoTracksterInferenceByANN = cms.PSet(
87101
algo_verbosity = cms.int32(0),
88102
type = cms.string('TracksterInferenceByANN')

HLTrigger/Configuration/python/HLT_75e33/modules/hltTiclTrackstersRecovery_cfi.py

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
mightGet = cms.optional.untracked.vstring,
1111
original_mask = cms.InputTag("hltTiclTrackstersCLUE3DHigh"),
1212
patternRecognitionBy = cms.string('Recovery'),
13-
inferenceAlgo = cms.string('TracksterInferenceByDNN'),
13+
inferenceAlgo = cms.string('TracksterInferenceByPFN'),
1414
pluginPatternRecognitionByCA = cms.PSet(
1515
algo_verbosity = cms.int32(0),
1616
computeLocalTime = cms.bool(True),
@@ -71,8 +71,8 @@
7171

7272
pluginInferenceAlgoTracksterInferenceByDNN = cms.PSet(
7373
algo_verbosity = cms.int32(0),
74-
onnxPIDModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/patternrecognition/id_v0.onnx'),
75-
onnxEnergyModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/patternrecognition/energy_v0.onnx'),
74+
onnxPIDModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/DNN/patternrecognition/id_v0.onnx'),
75+
onnxEnergyModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/DNN/patternrecognition/energy_v0.onnx'),
7676
inputNames = cms.vstring('input'),
7777
output_en = cms.vstring('enreg_output'),
7878
output_id = cms.vstring('pid_output'),
@@ -83,6 +83,20 @@
8383
doRegression = cms.int32(0),
8484
type = cms.string('TracksterInferenceByDNN')
8585
),
86+
pluginInferenceAlgoTracksterInferenceByPFN = cms.PSet(
87+
algo_verbosity = cms.int32(0),
88+
onnxPIDModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/PFN/patternrecognition/id_v0.onnx'),
89+
onnxEnergyModelPath = cms.FileInPath('RecoHGCal/TICL/data/ticlv5/onnx_models/PFN/patternrecognition/energy_v0.onnx'),
90+
inputNames = cms.vstring('input','input_tr_features'),
91+
output_en = cms.vstring('enreg_output'),
92+
output_id = cms.vstring('pid_output'),
93+
eid_min_cluster_energy = cms.double(1),
94+
eid_n_layers = cms.int32(50),
95+
eid_n_clusters = cms.int32(10),
96+
doPID = cms.int32(0),
97+
doRegression = cms.int32(0),
98+
type = cms.string('TracksterInferenceByPFN')
99+
),
86100
pluginInferenceAlgoTracksterInferenceByANN = cms.PSet(
87101
algo_verbosity = cms.int32(0),
88102
type = cms.string('TracksterInferenceByANN')
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
#ifndef RecoHGCal_TICL_TracksterInferenceByPFN_H__
2+
#define RecoHGCal_TICL_TracksterInferenceByPFN_H__
3+
4+
#include "RecoHGCal/TICL/interface/TracksterInferenceAlgoBase.h"
5+
#include "RecoLocalCalo/HGCalRecAlgos/interface/RecHitTools.h"
6+
7+
namespace ticl {
8+
9+
class TracksterInferenceByPFN : public TracksterInferenceAlgoBase {
10+
public:
11+
explicit TracksterInferenceByPFN(const edm::ParameterSet& conf);
12+
void inputData(const std::vector<reco::CaloCluster>& layerClusters, std::vector<Trackster>& tracksters) override;
13+
void runInference(std::vector<Trackster>& tracksters) override;
14+
15+
static void fillPSetDescription(edm::ParameterSetDescription& iDesc);
16+
17+
private:
18+
const cms::Ort::ONNXRuntime* onnxPIDSession_;
19+
const cms::Ort::ONNXRuntime* onnxEnergySession_;
20+
21+
const std::string id_modelPath_;
22+
const std::string en_modelPath_;
23+
const std::vector<std::string> inputNames_;
24+
const std::vector<std::string> output_en_;
25+
const std::vector<std::string> output_id_;
26+
const float eidMinClusterEnergy_;
27+
const int eidNLayers_;
28+
const int eidNClusters_;
29+
static constexpr int eidNFeatures_ = 7;
30+
int doPID_;
31+
int doRegression_;
32+
33+
hgcal::RecHitTools rhtools_;
34+
std::vector<std::vector<int64_t>> input_shapes_;
35+
std::vector<int> tracksterIndices_;
36+
std::vector<std::vector<float>> input_Data_;
37+
int batchSize_;
38+
};
39+
} // namespace ticl
40+
41+
#endif // RecoHGCal_TICL_TracksterInferenceByPFN_H__

RecoHGCal/TICL/plugins/TracksterInferenceAlgoFactory.cc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
#include "RecoHGCal/TICL/interface/TracksterInferenceAlgoFactory.h"
2+
#include "RecoHGCal/TICL/interface/TracksterInferenceByPFN.h"
23
#include "RecoHGCal/TICL/interface/TracksterInferenceByDNN.h"
34
#include "RecoHGCal/TICL/interface/TracksterInferenceByANN.h"
45
#include "RecoHGCal/TICL/interface/TracksterInferenceByCNNv4.h"
56
#include "FWCore/ParameterSet/interface/ValidatedPluginFactoryMacros.h"
67
#include "FWCore/ParameterSet/interface/ValidatedPluginMacros.h"
78

89
EDM_REGISTER_VALIDATED_PLUGINFACTORY(TracksterInferenceAlgoFactory, "TracksterInferenceAlgoFactory");
10+
DEFINE_EDM_VALIDATED_PLUGIN(TracksterInferenceAlgoFactory, ticl::TracksterInferenceByPFN, "TracksterInferenceByPFN");
911
DEFINE_EDM_VALIDATED_PLUGIN(TracksterInferenceAlgoFactory, ticl::TracksterInferenceByDNN, "TracksterInferenceByDNN");
1012
DEFINE_EDM_VALIDATED_PLUGIN(TracksterInferenceAlgoFactory, ticl::TracksterInferenceByANN, "TracksterInferenceByANN");
1113
DEFINE_EDM_VALIDATED_PLUGIN(TracksterInferenceAlgoFactory,

RecoHGCal/TICL/plugins/TracksterInferenceByDNN.cc

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -128,13 +128,14 @@ namespace ticl {
128128
void TracksterInferenceByDNN::fillPSetDescription(edm::ParameterSetDescription& iDesc) {
129129
iDesc.add<int>("algo_verbosity", 0);
130130
iDesc
131-
.add<edm::FileInPath>("onnxPIDModelPath",
132-
edm::FileInPath("RecoHGCal/TICL/data/ticlv5/onnx_models/patternrecognition/id_v0.onnx"))
131+
.add<edm::FileInPath>(
132+
"onnxPIDModelPath",
133+
edm::FileInPath("RecoHGCal/TICL/data/ticlv5/onnx_models/DNN/patternrecognition/id_v0.onnx"))
133134
->setComment("Path to ONNX PID model CLU3D");
134135
iDesc
135136
.add<edm::FileInPath>(
136137
"onnxEnergyModelPath",
137-
edm::FileInPath("RecoHGCal/TICL/data/ticlv5/onnx_models/patternrecognition/energy_v0.onnx"))
138+
edm::FileInPath("RecoHGCal/TICL/data/ticlv5/onnx_models/DNN/patternrecognition/energy_v0.onnx"))
138139
->setComment("Path to ONNX Energy model CLU3D");
139140
iDesc.add<std::vector<std::string>>("inputNames", {"input"});
140141
iDesc.add<std::vector<std::string>>("output_en", {"enreg_output"});

0 commit comments

Comments
 (0)