ATLAS Offline Software
Loading...
Searching...
No Matches
InDetGNNHardScatterSelection::TracksLoader Class Reference

#include <TracksLoader.h>

Inheritance diagram for InDetGNNHardScatterSelection::TracksLoader:
Collaboration diagram for InDetGNNHardScatterSelection::TracksLoader:

Public Member Functions

 TracksLoader (const ConstituentsInputConfig &cfg)
std::tuple< std::string, FlavorTagInference::Inputs, std::vector< const xAOD::IParticle * > > getData (const xAOD::Vertex &vertex) const override
std::string getName () const override
ConstituentsType getType () const override

Protected Types

typedef xAOD::Vertex Vertex
typedef std::pair< std::string, double > NamedVar
typedef std::pair< std::string, std::vector< double > > NamedSeq
typedef std::vector< const xAOD::TrackParticle * > TrackParticles
typedef std::vector< const xAOD::IParticle * > Particles
typedef std::function< double(const xAOD::TrackParticle *, const Vertex &)> TrackParticleSortVar
using AE = SG::AuxElement
using IPC = xAOD::TrackParticleContainer
using PartLinks = std::vector<ElementLink<IPC>>
using IPV = std::vector<const xAOD::TrackParticle*>

Protected Member Functions

std::vector< const xAOD::TrackParticle * > getTrackParticlesFromVertex (const xAOD::Vertex &vertex) const

Static Protected Member Functions

static TrackParticleSortVar iparticleSortVar (ConstituentsSortOrder)

Protected Attributes

TrackParticleSortVar m_iparticleSortVar
getter_utils::CustomSequenceGetter< xAOD::TrackParticlem_customSequenceGetter
std::function< IPV(const Vertex &)> m_associator
ConstituentsInputConfig m_config
std::string m_name

Detailed Description

Member Typedef Documentation

◆ AE

◆ IPC

◆ IPV

◆ NamedSeq

◆ NamedVar

◆ Particles

◆ PartLinks

◆ TrackParticles

◆ TrackParticleSortVar

◆ Vertex

Constructor & Destructor Documentation

◆ TracksLoader()

InDetGNNHardScatterSelection::TracksLoader::TracksLoader ( const ConstituentsInputConfig & cfg)

Definition at line 28 of file InnerDetector/InDetRecTools/InDetGNNHardScatterSelection/Root/TracksLoader.cxx.

30 :
33 m_customSequenceGetter(getter_utils::CustomSequenceGetter<xAOD::TrackParticle>(
34 cfg.inputs))
35 {
36 const SG::AuxElement::ConstAccessor<PartLinks> acc("trackParticleLinks");
37 m_associator = [acc](const xAOD::Vertex& vertex) -> IPV {
39 for (const ElementLink<IPC>& link : acc(vertex)){
40 if (!link.isValid()) {
41 throw std::logic_error("invalid particle link");
42 }
43 particles.push_back(*link);
44 }
45 return particles;
46 };
47 m_name = cfg.name;
48 }
SG::ConstAccessor< T, ALLOC > ConstAccessor
Definition AuxElement.h:569
Vertex_v1 Vertex
Define the latest version of the vertex class.

Member Function Documentation

◆ getData()

std::tuple< std::string, FlavorTagInference::Inputs, std::vector< const xAOD::IParticle * > > InDetGNNHardScatterSelection::TracksLoader::getData ( const xAOD::Vertex & vertex) const
overridevirtual

Implements InDetGNNHardScatterSelection::IConstituentsLoader.

Definition at line 67 of file InnerDetector/InDetRecTools/InDetGNNHardScatterSelection/Root/TracksLoader.cxx.

68 {
69 TrackParticles sorted_particles = getTrackParticlesFromVertex(vertex);
70 std::vector<const xAOD::IParticle*> sorted_particles_ip;
71 for (const auto& p: sorted_particles) {
72 sorted_particles_ip.push_back(p);
73 }
74 return std::make_tuple(m_config.output_name, m_customSequenceGetter.getFeats(vertex, sorted_particles), sorted_particles_ip);
75 }
std::vector< const xAOD::TrackParticle * > getTrackParticlesFromVertex(const xAOD::Vertex &vertex) const

◆ getName()

std::string InDetGNNHardScatterSelection::TracksLoader::getName ( ) const
overridevirtual

◆ getTrackParticlesFromVertex()

std::vector< const xAOD::TrackParticle * > InDetGNNHardScatterSelection::TracksLoader::getTrackParticlesFromVertex ( const xAOD::Vertex & vertex) const
protected

Definition at line 50 of file InnerDetector/InDetRecTools/InDetGNNHardScatterSelection/Root/TracksLoader.cxx.

53 {
54 std::vector<std::pair<double, const xAOD::TrackParticle*>> particles;
55 for (const xAOD::TrackParticle *tp : m_associator(vertex)) {
56 particles.emplace_back(m_iparticleSortVar(tp, vertex), tp);
57 }
58 std::sort(particles.begin(), particles.end(), std::greater<>());
59 std::vector<const xAOD::TrackParticle*> only_particles;
60 only_particles.reserve(particles.size());
61for (const auto& particle: particles) {
62 only_particles.push_back(particle.second);
63 }
64 return only_particles;
65 }
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.
TrackParticle_v1 TrackParticle
Reference the current persistent version:

◆ getType()

ConstituentsType InDetGNNHardScatterSelection::TracksLoader::getType ( ) const
overridevirtual

◆ iparticleSortVar()

TracksLoader::TrackParticleSortVar InDetGNNHardScatterSelection::TracksLoader::iparticleSortVar ( ConstituentsSortOrder config)
staticprotected

Member Data Documentation

◆ m_associator

std::function<IPV(const Vertex&)> InDetGNNHardScatterSelection::TracksLoader::m_associator
protected

◆ m_config

ConstituentsInputConfig InDetGNNHardScatterSelection::IConstituentsLoader::m_config
protectedinherited

◆ m_customSequenceGetter

getter_utils::CustomSequenceGetter<xAOD::TrackParticle> InDetGNNHardScatterSelection::TracksLoader::m_customSequenceGetter
protected

◆ m_iparticleSortVar

TrackParticleSortVar InDetGNNHardScatterSelection::TracksLoader::m_iparticleSortVar
protected

◆ m_name

std::string InDetGNNHardScatterSelection::IConstituentsLoader::m_name
protectedinherited

The documentation for this class was generated from the following files: