30 static std::unique_ptr<ONNXRuntime> initializeGlobalCache(
const edm::ParameterSet&);
51 kChargedCandidates = 1,
52 kNeutralCandidates = 2,
78 n_cpf_* n_features_cpf_,
79 n_npf_* n_features_npf_,
80 n_sv_* n_features_sv_,
82 n_seed_* n_features_seed_,
83 n_neighbor_* n_features_neighbor_,
84 n_neighbor_* n_features_neighbor_,
85 n_neighbor_* n_features_neighbor_,
86 n_neighbor_* n_features_neighbor_,
87 n_neighbor_* n_features_neighbor_,
88 n_neighbor_* n_features_neighbor_,
89 n_neighbor_* n_features_neighbor_,
90 n_neighbor_* n_features_neighbor_,
91 n_neighbor_* n_features_neighbor_,
92 n_neighbor_* n_features_neighbor_};
97 flav_names_(iConfig.getParameter<
std::vector<
std::
string>>(
"flav_names")),
98 input_names_(iConfig.getParameter<
std::vector<
std::
string>>(
"input_names")),
99 output_names_(iConfig.getParameter<
std::vector<
std::
string>>(
"output_names")),
100 min_jet_pt_(iConfig.getParameter<double>(
"min_jet_pt")),
101 max_jet_eta_(iConfig.getParameter<double>(
"max_jet_eta")) {
104 produces<JetTagCollection>(flav_name);
116 desc.
add<std::vector<std::string>>(
"input_names",
134 edm::FileInPath(
"RecoBTag/Combined/data/DeepVertex/phase1_deepvertexcombined.onnx"));
135 desc.
add<std::vector<std::string>>(
"output_names", {
"dense_13"});
136 desc.
add<std::vector<std::string>>(
"flav_names", std::vector<std::string>{
"probb",
"probc",
"probuds",
"probg"});
137 desc.
add<
double>(
"min_jet_pt", 15.0);
138 desc.
add<
double>(
"max_jet_eta", 2.5);
140 descriptions.
add(
"pfDeepCombinedJetTags", desc);
155 std::vector<std::unique_ptr<JetTagCollection>> output_tags;
156 if (!tag_infos->empty()) {
157 unsigned good_taginfo_count = 0;
158 std::vector<bool> good_taginfo_jets(tag_infos->size(),
false);
159 for (
unsigned jet_n = 0; jet_n < tag_infos->size(); ++jet_n) {
160 const auto& jet_ref = (*tag_infos)[jet_n].jet();
162 good_taginfo_count++;
163 good_taginfo_jets[jet_n] =
true;
169 data_.emplace_back(good_taginfo_count * len, 0);
173 auto jet_ref = tag_infos->begin()->jet();
176 output_tags.emplace_back(std::make_unique<JetTagCollection>(ref2prod));
180 unsigned inputs_done_count = 0;
181 for (
unsigned jet_n = 0; jet_n < tag_infos->size(); ++jet_n) {
182 if (good_taginfo_jets[jet_n]) {
183 const auto&
taginfo = (*tag_infos)[jet_n];
190 assert(inputs_done_count == good_taginfo_count);
195 unsigned i_output = 0;
196 for (
unsigned jet_n = 0; jet_n < tag_infos->size(); ++jet_n) {
197 const auto& jet_ref = (*tag_infos)[jet_n].jet();
198 for (std::size_t flav_n = 0; flav_n <
flav_names_.size(); flav_n++) {
199 if (good_taginfo_jets[jet_n]) {
200 (*(output_tags[flav_n]))[jet_ref] =
outputs[i_output];
203 (*(output_tags[flav_n]))[jet_ref] = -2;
210 output_tags.emplace_back(std::make_unique<JetTagCollection>());
215 for (std::size_t flav_n = 0; flav_n <
flav_names_.size(); ++flav_n) {
222 float* ptr =
nullptr;
223 const float*
start =
nullptr;
236 for (std::size_t c_pf_n = 0; c_pf_n < max_c_pf_n; c_pf_n++) {
237 const auto& c_pf_features =
features.c_pf_features[c_pf_n];
247 for (std::size_t n_pf_n = 0; n_pf_n < max_n_pf_n; n_pf_n++) {
248 const auto& n_pf_features =
features.n_pf_features[n_pf_n];
257 offset = i_jet * input_sizes_[
kVertices];
258 for (std::size_t sv_n = 0; sv_n < max_sv_n; sv_n++) {
259 const auto& sv_features =
features.sv_features[sv_n];
267 offset = i_jet * input_sizes_[
kGlobal1];
268 const auto& jet_features =
features.jet_features;
277 for (std::size_t seed_n = 0; seed_n < max_seed_n; seed_n++) {
278 const auto& seed_features =
features.seed_features[seed_n];
287 for (std::size_t seed_n = 0; seed_n < max_seed_n; seed_n++) {
288 const auto& neighbourTracks_features =
features.seed_features[seed_n].nearTracks;
289 auto max_neighbour_n =
std::min(neighbourTracks_features.size(), (std::size_t)
n_neighbor_);
290 for (std::size_t neighbour_n = 0; neighbour_n < max_neighbour_n; neighbour_n++) {
const Features & features() const
void npf_tensor_filler(float *&ptr, const btagbtvdeep::NeutralCandidateFeatures &n_pf_features)
T getParameter(std::string const &) const
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
void cpf_tensor_filler(float *&ptr, const btagbtvdeep::ChargedCandidateFeatures &c_pf_features)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
constexpr unsigned n_features_cpf
std::vector< std::vector< float > > FloatArrays
constexpr unsigned n_neighbor
constexpr unsigned n_features_global
#define DEFINE_FWK_MODULE(type)
constexpr unsigned n_features_sv
void sv_tensor_filler(float *&ptr, const btagbtvdeep::SecondaryVertexFeatures &sv_features)
constexpr unsigned n_features_npf
void neighbourTrack_tensor_filler(float *&ptr, const btagbtvdeep::TrackPairFeatures &neighbourTrack_features)
ParameterDescriptionBase * add(U const &iLabel, T const &value)
constexpr unsigned n_features_neighbor
void jet_tensor_filler(float *&ptr, const btagbtvdeep::DeepFlavourFeatures &features)
constexpr unsigned n_features_global
constexpr unsigned n_features_seed
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
RefToBaseProd< T > makeRefToBaseProdFrom(RefToBase< T > const &iRef, Event const &iEvent)
void seedTrack_tensor_filler(float *&ptr, const btagbtvdeep::SeedingTrackFeatures &seed_features)
constexpr unsigned n_seed
void jet4vec_tensor_filler(float *&ptr, const btagbtvdeep::JetFeatures &jet_features)