Skip to content

Commit 6ffd83e

Browse files
authored
Merge pull request #47702 from y19y19/CMSSW_15_1_X_testUParT
Add UParT_V01 model Sonic producer and fix a bug in miniAOD_tools.py
2 parents a9d8db3 + 4cfc222 commit 6ffd83e

File tree

10 files changed

+490
-203
lines changed

10 files changed

+490
-203
lines changed

Configuration/ProcessModifiers/python/allSonicTriton_cff.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@
66
from Configuration.ProcessModifiers.deepMETSonicTriton_cff import deepMETSonicTriton
77
from Configuration.ProcessModifiers.deepTauSonicTriton_cff import deepTauSonicTriton
88
from Configuration.ProcessModifiers.particleTransformerAK4SonicTriton_cff import particleTransformerAK4SonicTriton
9+
from Configuration.ProcessModifiers.unifiedparticleTransformerAK4SonicTriton_cff import unifiedparticleTransformerAK4SonicTriton
10+
911

1012
# collect all SonicTriton-related process modifiers here
11-
allSonicTriton = cms.ModifierChain(enableSonicTriton,deepMETSonicTriton,particleNetSonicTriton,particleNetPTSonicTriton,deepTauSonicTriton,particleTransformerAK4SonicTriton)
13+
allSonicTriton = cms.ModifierChain(enableSonicTriton,deepMETSonicTriton,particleNetSonicTriton,particleNetPTSonicTriton,deepTauSonicTriton,particleTransformerAK4SonicTriton,unifiedparticleTransformerAK4SonicTriton)
1214

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import FWCore.ParameterSet.Config as cms
2+
3+
unifiedparticleTransformerAK4SonicTriton = cms.Modifier()

PhysicsTools/PatAlgos/python/slimming/miniAOD_tools.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -583,7 +583,7 @@ def _addUTagToTaus(process, task,
583583
pp_on_AA.toModify(_uTagToTaus_switches, storePNetCHSjets=False, storeUParTPUPPIjets=False)
584584
_addUTagToTaus(process, task,
585585
storePNetCHSjets = _uTagToTaus_switches.storePNetCHSjets.value(),
586-
storeUParTPUPPIjets = _uTagToTaus_switches.storePNetCHSjets.value(),
586+
storeUParTPUPPIjets = _uTagToTaus_switches.storeUParTPUPPIjets.value(),
587587
addGenJet = _uTagToTaus_switches.addGenJet.value()
588588
)
589589

RecoBTag/ONNXRuntime/interface/tensor_configs.h

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,4 +66,47 @@ namespace parT {
6666

6767
} // namespace parT
6868

69+
namespace UparT {
70+
71+
enum InputFeatures {
72+
kBegin = 0,
73+
kChargedCandidates = kBegin,
74+
kLostTracks = 1,
75+
kNeutralCandidates = 2,
76+
kVertices = 3,
77+
kChargedCandidates4Vec = 4,
78+
kLostTracks4Vec = 5,
79+
kNeutralCandidates4Vec = 6,
80+
kVertices4Vec = 7,
81+
kEnd = 8
82+
};
83+
84+
inline constexpr unsigned n_cpf_accept = 29;
85+
inline constexpr unsigned n_lt_accept = 5;
86+
inline constexpr unsigned n_npf_accept = 25;
87+
inline constexpr unsigned n_sv_accept = 5;
88+
89+
constexpr std::array<unsigned int, kEnd> N_InputFeatures{{
90+
25, // kChargedCandidates
91+
18, // kLostTracks
92+
8, // kNeutralCandidates
93+
14, // kVertices
94+
4, // kChargedCandidates4Vec
95+
4, // kLostTracks4Vec
96+
4, // kNeutralCandidates4Vec
97+
4, // kVertices4Vec
98+
}};
99+
100+
constexpr std::array<unsigned int, kEnd> N_AcceptedFeatures{{
101+
n_cpf_accept, // kChargedCandidates
102+
n_lt_accept, // kLostTracks
103+
n_npf_accept, // kNeutralCandidates
104+
n_sv_accept, // kVertices
105+
n_cpf_accept, // kChargedCandidates4Vec
106+
n_lt_accept, // kLostTracks4Vec
107+
n_npf_accept, // kNeutralCandidates4Vec
108+
n_sv_accept, // kVertices4Vec
109+
}};
110+
111+
} // namespace UparT
69112
#endif

RecoBTag/ONNXRuntime/interface/tensor_fillers.h

Lines changed: 51 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
#include "DataFormats/BTauReco/interface/DeepFlavourTagInfo.h"
55
#include "DataFormats/BTauReco/interface/ParticleTransformerAK4Features.h"
6+
#include "DataFormats/BTauReco/interface/UnifiedParticleTransformerAK4Features.h"
67
#include "PhysicsTools/ONNXRuntime/interface/ONNXRuntime.h"
78
#include "RecoBTag/ONNXRuntime/interface/tensor_configs.h"
89

@@ -30,6 +31,17 @@ namespace btagbtvdeep {
3031

3132
std::vector<float> inputs_parT(const btagbtvdeep::SecondaryVertexFeatures& sv_features, parT::InputFeatures ifeature);
3233

34+
std::vector<float> inputs_UparT(const btagbtvdeep::ChargedCandidateFeatures& c_pf_features,
35+
UparT::InputFeatures ifeature);
36+
37+
std::vector<float> inputs_UparT(const btagbtvdeep::LostTracksFeatures& lt_features, UparT::InputFeatures ifeature);
38+
39+
std::vector<float> inputs_UparT(const btagbtvdeep::NeutralCandidateFeatures& n_pf_features,
40+
UparT::InputFeatures ifeature);
41+
42+
std::vector<float> inputs_UparT(const btagbtvdeep::SecondaryVertexFeatures& sv_features,
43+
UparT::InputFeatures ifeature);
44+
3345
template <class parT_features>
3446
void parT_tensor_filler(cms::Ort::FloatArrays& data,
3547
const parT::InputFeatures ifeature,
@@ -47,7 +59,7 @@ namespace btagbtvdeep {
4759
*ptr = inputs[i];
4860
++ptr;
4961
}
50-
if (inputs.size() > 0)
62+
if (!inputs.empty())
5163
--ptr;
5264
assert(start + parT::N_InputFeatures.at(ifeature) - 1 == ptr);
5365
}
@@ -69,6 +81,44 @@ namespace btagbtvdeep {
6981
vdata.insert(vdata.end(), (target_n - n) * n_features, 0); // Add 0 to unfilled part as padding value
7082
}
7183

84+
template <class UparT_features>
85+
void UparT_tensor_filler(cms::Ort::FloatArrays& data,
86+
const UparT::InputFeatures ifeature,
87+
const std::vector<UparT_features>& features,
88+
const unsigned int max_n,
89+
const float*& start,
90+
unsigned offset) {
91+
float* ptr = nullptr;
92+
for (std::size_t n = 0; n < max_n; n++) {
93+
const auto& f = features.at(n);
94+
ptr = &data[ifeature][offset + n * UparT::N_InputFeatures.at(ifeature)];
95+
start = ptr;
96+
const std::vector<float>& inputs = inputs_UparT(f, ifeature);
97+
for (unsigned int i = 0; i < inputs.size(); i++) {
98+
*ptr = inputs[i];
99+
++ptr;
100+
}
101+
if (!inputs.empty())
102+
--ptr;
103+
assert(start + UparT::N_InputFeatures.at(ifeature) - 1 == ptr);
104+
}
105+
}
106+
107+
template <class UparT_features>
108+
void UparT_tensor_filler(std::vector<float>& vdata,
109+
const UparT::InputFeatures ifeature,
110+
const std::vector<UparT_features>& features,
111+
const unsigned int target_n) {
112+
unsigned int n = std::clamp(
113+
(unsigned int)features.size(), (unsigned int)0, (unsigned int)UparT::N_AcceptedFeatures.at(ifeature));
114+
for (unsigned int count = 0; count < n; count++) {
115+
const std::vector<float>& inputs = inputs_UparT(features.at(count), ifeature);
116+
vdata.insert(vdata.end(), inputs.begin(), inputs.end());
117+
}
118+
unsigned int n_features = UparT::N_InputFeatures.at(ifeature);
119+
if (n < target_n)
120+
vdata.insert(vdata.end(), (target_n - n) * n_features, 0); // Add 0 to unfilled part as padding value
121+
}
72122
} // namespace btagbtvdeep
73123

74124
#endif

0 commit comments

Comments
 (0)