ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
InnerDetector
InDetRecTools
InDetGNNHardScatterSelection
Root
IParticlesLoader.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
InDetGNNHardScatterSelection/IParticlesLoader.h
"
6
7
#include "
xAODBase/IParticle.h
"
8
9
namespace
InDetGNNHardScatterSelection
{
10
11
// factory for functions which return the sort variable we
12
// use to order iparticles
13
IParticlesLoader::IParticleSortVar
IParticlesLoader::iparticleSortVar
(
14
ConstituentsSortOrder
config)
15
{
16
using
Ip =
xAOD::IParticle
;
17
using
Vertex
=
xAOD::Vertex
;
18
switch
(config) {
19
case
ConstituentsSortOrder::PT_DESCENDING
:
20
return
[](
const
Ip* tp,
const
Vertex
&) {
return
tp->pt();};
21
default
: {
22
throw
std::logic_error(
"Unknown sort function"
);
23
}
24
}
25
}
// end of iparticle sort getter
26
27
IParticlesLoader::IParticlesLoader
(
28
const
ConstituentsInputConfig
& cfg
29
):
30
IConstituentsLoader
(cfg),
31
m_iparticleSortVar
(
IParticlesLoader
::
iparticleSortVar
(cfg.order)),
32
m_customSequenceGetter
(
getter_utils
::CustomSequenceGetter<
xAOD
::
IParticle
>(
33
cfg.inputs))
34
{
35
const
SG::AuxElement::ConstAccessor<PartLinks> acc(
"particleLinks"
);
36
m_associator
= [acc](
const
xAOD::Vertex
& vertex) ->
IPV
{
37
IPV
particles;
38
for
(
const
ElementLink<IPC>
& link : acc(vertex)){
39
if
(!link.isValid()) {
40
throw
std::logic_error(
"invalid particle link"
);
41
}
42
particles.push_back(*link);
43
}
44
return
particles;
45
};
46
m_name
= cfg.name;
47
}
48
49
std::vector<const xAOD::IParticle*>
IParticlesLoader::getIParticlesFromVertex
(
50
const
xAOD::Vertex
& vertex
51
)
const
52
{
53
std::vector<std::pair<double, const xAOD::IParticle*>> particles;
54
for
(
const
xAOD::IParticle
*tp :
m_associator
(vertex)) {
55
particles.emplace_back(
m_iparticleSortVar
(tp, vertex), tp);
56
}
57
std::sort
(particles.begin(), particles.end(), std::greater<>());
58
std::vector<const xAOD::IParticle*> only_particles;
59
only_particles.reserve(particles.size());
60
for
(
const
auto
& particle: particles) {
61
only_particles.push_back(particle.second);
62
}
63
return
only_particles;
64
}
65
66
std::tuple<std::string, FlavorTagInference::Inputs, std::vector<const xAOD::IParticle*>>
IParticlesLoader::getData
(
67
const
xAOD::Vertex
& vertex)
const
{
68
IParticles
sorted_particles =
getIParticlesFromVertex
(vertex);
69
return
std::make_tuple(
m_config
.output_name,
m_customSequenceGetter
.getFeats(vertex, sorted_particles), sorted_particles);
70
}
71
72
std::string
IParticlesLoader::getName
()
const
{
73
return
m_name
;
74
}
75
ConstituentsType
IParticlesLoader::getType
()
const
{
76
return
m_config
.type;
77
}
78
79
}
IParticle.h
IParticlesLoader.h
ElementLink
ElementLink implementation for ROOT usage.
Definition
A/AthLinks/ElementLink.h:40
IParticle
Definition
Event/EventKernel/EventKernel/IParticle.h:43
InDetGNNHardScatterSelection::IConstituentsLoader::m_name
std::string m_name
Definition
InnerDetector/InDetRecTools/InDetGNNHardScatterSelection/InDetGNNHardScatterSelection/ConstituentsLoader.h:72
InDetGNNHardScatterSelection::IConstituentsLoader::IConstituentsLoader
IConstituentsLoader(const ConstituentsInputConfig &cfg)
Definition
InnerDetector/InDetRecTools/InDetGNNHardScatterSelection/InDetGNNHardScatterSelection/ConstituentsLoader.h:63
InDetGNNHardScatterSelection::IConstituentsLoader::m_config
ConstituentsInputConfig m_config
Definition
InnerDetector/InDetRecTools/InDetGNNHardScatterSelection/InDetGNNHardScatterSelection/ConstituentsLoader.h:71
InDetGNNHardScatterSelection::IParticlesLoader::IParticles
std::vector< const xAOD::IParticle * > IParticles
Definition
IParticlesLoader.h:42
InDetGNNHardScatterSelection::IParticlesLoader::getType
ConstituentsType getType() const override
Definition
IParticlesLoader.cxx:75
InDetGNNHardScatterSelection::IParticlesLoader::getIParticlesFromVertex
std::vector< const xAOD::IParticle * > getIParticlesFromVertex(const xAOD::Vertex &vertex) const
Definition
IParticlesLoader.cxx:49
InDetGNNHardScatterSelection::IParticlesLoader::getName
std::string getName() const override
Definition
IParticlesLoader.cxx:72
InDetGNNHardScatterSelection::IParticlesLoader::m_customSequenceGetter
getter_utils::CustomSequenceGetter< xAOD::IParticle > m_customSequenceGetter
Definition
IParticlesLoader.h:60
InDetGNNHardScatterSelection::IParticlesLoader::IPV
std::vector< const xAOD::IParticle * > IPV
Definition
IParticlesLoader.h:53
InDetGNNHardScatterSelection::IParticlesLoader::IParticlesLoader
IParticlesLoader(const ConstituentsInputConfig &)
Definition
IParticlesLoader.cxx:27
InDetGNNHardScatterSelection::IParticlesLoader::iparticleSortVar
static IParticleSortVar iparticleSortVar(ConstituentsSortOrder)
Definition
IParticlesLoader.cxx:13
InDetGNNHardScatterSelection::IParticlesLoader::m_associator
std::function< IPV(const Vertex &)> m_associator
Definition
IParticlesLoader.h:61
InDetGNNHardScatterSelection::IParticlesLoader::m_iparticleSortVar
IParticleSortVar m_iparticleSortVar
Definition
IParticlesLoader.h:59
InDetGNNHardScatterSelection::IParticlesLoader::IParticleSortVar
std::function< double(const xAOD::IParticle *, const Vertex &)> IParticleSortVar
Definition
IParticlesLoader.h:44
InDetGNNHardScatterSelection::IParticlesLoader::Vertex
xAOD::Vertex Vertex
Definition
IParticlesLoader.h:38
InDetGNNHardScatterSelection::IParticlesLoader::getData
std::tuple< std::string, FlavorTagInference::Inputs, std::vector< const xAOD::IParticle * > > getData(const xAOD::Vertex &vertex) const override
Definition
IParticlesLoader.cxx:66
xAOD::IParticle
Class providing the definition of the 4-vector interface.
Definition
Event/xAOD/xAODBase/xAODBase/IParticle.h:41
InDetGNNHardScatterSelection::getter_utils
Utils to produce Constituent -> vector<double> functions.
Definition
InnerDetector/InDetRecTools/InDetGNNHardScatterSelection/InDetGNNHardScatterSelection/CustomGetterUtils.h:46
InDetGNNHardScatterSelection
Definition
InnerDetector/InDetRecTools/InDetGNNHardScatterSelection/InDetGNNHardScatterSelection/ConstituentsLoader.h:22
InDetGNNHardScatterSelection::ConstituentsType
ConstituentsType
Definition
InnerDetector/InDetRecTools/InDetGNNHardScatterSelection/InDetGNNHardScatterSelection/ConstituentsLoader.h:31
InDetGNNHardScatterSelection::ConstituentsSortOrder
ConstituentsSortOrder
Definition
InnerDetector/InDetRecTools/InDetGNNHardScatterSelection/InDetGNNHardScatterSelection/ConstituentsLoader.h:25
InDetGNNHardScatterSelection::ConstituentsSortOrder::PT_DESCENDING
@ PT_DESCENDING
Definition
InnerDetector/InDetRecTools/InDetGNNHardScatterSelection/InDetGNNHardScatterSelection/ConstituentsLoader.h:26
std::sort
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.
Definition
DVL_algorithms.h:554
xAOD
ICaloAffectedTool is abstract interface for tools checking if 4 mom is in calo affected region.
Definition
ICaloAffectedTool.h:24
xAOD::Vertex
Vertex_v1 Vertex
Define the latest version of the vertex class.
Definition
Event/xAOD/xAODTracking/xAODTracking/Vertex.h:16
InDetGNNHardScatterSelection::ConstituentsInputConfig
Definition
InnerDetector/InDetRecTools/InDetGNNHardScatterSelection/InDetGNNHardScatterSelection/ConstituentsLoader.h:45
Generated on
for ATLAS Offline Software by
1.17.0