ATLAS Offline Software
Loading...
Searching...
No Matches
PhysicsAnalysis
JetTagging
FlavorTagInference
FlavorTagInference
SaltModelEDMLoaderBase.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#pragma once
6
#include "
xAODBase/IParticle.h
"
7
#include "
FlavorTagInference/SaltModelGraphConfig.h
"
8
#include "
FlavorTagInference/ISaltModel.h
"
//Inputs, InputMap typedef
9
10
#include "
FlavorTagInference/TracksLoader.h
"
11
#include "
FlavorTagInference/FlowElementsLoader.h
"
12
#include "
FlavorTagInference/HitsLoader.h
"
13
#include "
FlavorTagInference/ElectronsLoader.h
"
14
#include "
FlavorTagInference/MuonsLoader.h
"
15
#include "
FlavorTagInference/CaloClusterLoader.h
"
16
#include "
FlavorTagInference/TowerLoader.h
"
17
18
#include <map>
19
#include <vector>
20
#include <utility>
21
#include <functional>
22
#include <iostream>
23
24
namespace
FlavorTagInference
{
25
26
using
SaltModelInputs
=
InputMap
;
//FlavorTagInference::InputMap defined in ISaltModel.h
27
28
struct
SaltModelData
{
29
SaltModelInputs
gnn_inputs
;
30
size_t
num_inputs
= 0;
31
};
32
33
class
SaltModelEDMLoaderBase
{
34
public
:
35
SaltModelEDMLoaderBase
(
ISaltModelPtr
salt_model) :
36
graph_config
(salt_model->getGraphConfig()) {};
37
SaltModelGraphConfig::GraphConfig
graph_config
;
38
std::string
scalarInputName
;
39
std::vector<std::pair<std::string
/* varName */
, std::function<float(
const
xAOD::IParticle
*
/* parent */
)>>>
scalarVarLoaders
;
40
std::map<std::string
/* vecInputName */
, std::shared_ptr<IConstituentsLoader>>
vectorVarLoaders
;
41
42
43
void
addScalarLoader
(
const
std::string& varName, std::function<
float
(
const
xAOD::IParticle
*)> loader) {
44
scalarVarLoaders
.emplace_back(varName, loader);
45
}
46
47
void
addVectorLoader
(
const
std::string& vecName, std::shared_ptr<IConstituentsLoader> loader) {
48
vectorVarLoaders
.try_emplace(vecName, std::move(loader));
49
}
50
51
virtual
SaltModelData
loadInputs
(
const
xAOD::IParticle
* p)
const
final
{
52
SaltModelData
salt_model_data;
53
// loading scalar inputs.
54
std::vector<float> scalar_feat;
55
for
(
const
auto
& varLoader :
scalarVarLoaders
) {
56
std::string varName = varLoader.first;
57
scalar_feat.push_back(varLoader.second(p));
58
}
59
std::vector<int64_t> scalar_feat_dim = {1,
static_cast<
int64_t
>
(scalar_feat.size())};
60
Inputs scalar_inputs(scalar_feat, scalar_feat_dim);
61
salt_model_data.
gnn_inputs
.insert({
scalarInputName
, scalar_inputs});
62
63
//load vector inputs.
64
for
(
auto
loader :
vectorVarLoaders
) {
65
std::string input_name = loader.first;
66
Inputs input_data = loader.second->getData(*p);
67
68
salt_model_data.
gnn_inputs
.insert({input_name, input_data});
69
salt_model_data.
num_inputs
+= input_data.first.size();
70
}
71
return
salt_model_data;
72
}
73
74
void
DumpGnnInputs
(
const
SaltModelInputs
& gnn_inputs)
const
{
75
// Implementation for dumping GNN input data
76
std::cout <<
"-------- Dumping GNN Input Data --------"
<< std::endl;
77
78
for
(
const
auto
& [name, inputs] : gnn_inputs) {
79
std::cout <<
"Input Name: "
<< name << std::endl;
80
std::cout <<
" vec floats: "
;
81
for
(
const
auto
& feature : inputs.first) {
82
std::cout << feature <<
" "
;
83
}
84
std::cout << std::endl;
85
std::cout <<
" vec ints : "
;
86
for
(
const
auto
&
id
: inputs.second) {
87
std::cout <<
id
<<
" "
;
88
}
89
std::cout << std::endl;
90
}
91
std::cout <<
"---------- END GNN Input Data ----------"
<< std::endl;
92
}
93
};
// class SaltModelEDMLoaderBase
94
}
// namespace FlavorTagInference
CaloClusterLoader.h
IParticle.h
FlowElementsLoader.h
HitsLoader.h
ISaltModel.h
ElectronsLoader.h
MuonsLoader.h
TracksLoader.h
SaltModelGraphConfig.h
TowerLoader.h
FlavorTagInference::SaltModelEDMLoaderBase::loadInputs
virtual SaltModelData loadInputs(const xAOD::IParticle *p) const final
Definition
SaltModelEDMLoaderBase.h:51
FlavorTagInference::SaltModelEDMLoaderBase::addVectorLoader
void addVectorLoader(const std::string &vecName, std::shared_ptr< IConstituentsLoader > loader)
Definition
SaltModelEDMLoaderBase.h:47
FlavorTagInference::SaltModelEDMLoaderBase::addScalarLoader
void addScalarLoader(const std::string &varName, std::function< float(const xAOD::IParticle *)> loader)
Definition
SaltModelEDMLoaderBase.h:43
FlavorTagInference::SaltModelEDMLoaderBase::DumpGnnInputs
void DumpGnnInputs(const SaltModelInputs &gnn_inputs) const
Definition
SaltModelEDMLoaderBase.h:74
FlavorTagInference::SaltModelEDMLoaderBase::graph_config
SaltModelGraphConfig::GraphConfig graph_config
Definition
SaltModelEDMLoaderBase.h:37
FlavorTagInference::SaltModelEDMLoaderBase::SaltModelEDMLoaderBase
SaltModelEDMLoaderBase(ISaltModelPtr salt_model)
Definition
SaltModelEDMLoaderBase.h:35
FlavorTagInference::SaltModelEDMLoaderBase::scalarInputName
std::string scalarInputName
Definition
SaltModelEDMLoaderBase.h:38
FlavorTagInference::SaltModelEDMLoaderBase::scalarVarLoaders
std::vector< std::pair< std::string, std::function< float(const xAOD::IParticle *)> > > scalarVarLoaders
Definition
SaltModelEDMLoaderBase.h:39
FlavorTagInference::SaltModelEDMLoaderBase::vectorVarLoaders
std::map< std::string, std::shared_ptr< IConstituentsLoader > > vectorVarLoaders
Definition
SaltModelEDMLoaderBase.h:40
xAOD::IParticle
Class providing the definition of the 4-vector interface.
Definition
Event/xAOD/xAODBase/xAODBase/IParticle.h:41
FlavorTagInference
This file contains "getter" functions used for accessing tagger inputs from the EDM.
Definition
CaloClusterLoader.h:27
FlavorTagInference::SaltModelInputs
InputMap SaltModelInputs
Definition
SaltModelEDMLoaderBase.h:26
FlavorTagInference::InputMap
std::map< std::string, Inputs, std::less<> > InputMap
Definition
ISaltModel.h:37
FlavorTagInference::ISaltModelPtr
std::shared_ptr< const ISaltModel > ISaltModelPtr
Definition
ISaltModel.h:56
FlavorTagInference::SaltModelData
Definition
SaltModelEDMLoaderBase.h:28
FlavorTagInference::SaltModelData::gnn_inputs
SaltModelInputs gnn_inputs
Definition
SaltModelEDMLoaderBase.h:29
FlavorTagInference::SaltModelData::num_inputs
size_t num_inputs
Definition
SaltModelEDMLoaderBase.h:30
FlavorTagInference::SaltModelGraphConfig::GraphConfig
Definition
SaltModelGraphConfig.h:36
Generated on
for ATLAS Offline Software by
1.16.1