ATLAS Offline Software
IParticlesLoader.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 
4  This is a subclass of IConstituentsLoader. It is used to load the general IParticles from the jet
5  and extract their features for the NN evaluation. For now it supports only neutral flow objects.
6  Charged flow objects have experimental support and are not recommended for use.
7 */
8 
9 #ifndef IPARTICLES_LOADER_H
10 #define IPARTICLES_LOADER_H
11 
12 // local includes
15 
16 // EDM includes
17 #include "xAODJet/JetFwd.h"
18 #include "xAODBase/IParticle.h"
19 
20 // STL includes
21 #include <string>
22 #include <vector>
23 #include <functional>
24 #include <exception>
25 #include <type_traits>
26 #include <regex>
27 
28 namespace FlavorTagDiscriminants {
29 
31  std::pair<std::string, std::vector<std::string>> iparticle_names
32  );
33  // Subclass for IParticles loader inherited from abstract IConstituentsLoader class
35  public:
37  std::tuple<std::string, Inputs, std::vector<const xAOD::IParticle*>> getData(
38  const xAOD::Jet& jet,
39  [[maybe_unused]] const SG::AuxElement& btag) const override ;
41  std::set<std::string> getUsedRemap() const override;
42  std::string getName() const override;
43  ConstituentsType getType() const override;
44  protected:
45  // typedefs
46  typedef xAOD::Jet Jet;
47  typedef std::pair<std::string, double> NamedVar;
48  typedef std::pair<std::string, std::vector<double> > NamedSeq;
49  // iparticle typedefs
50  typedef std::vector<const xAOD::IParticle*> IParticles;
51  typedef std::function<double(const xAOD::IParticle*,
53 
54  // getter function
55  typedef std::function<NamedSeq(const Jet&, const IParticles&)> SeqFromIParticles;
56 
57  // usings for IParticle getter
58  using AE = SG::AuxElement;
60  using PartLinks = std::vector<ElementLink<IPC>>;
61  using IPV = std::vector<const xAOD::IParticle*>;
62 
64 
65  std::vector<const xAOD::IParticle*> getIParticlesFromJet(const xAOD::Jet& jet) const;
66 
69  std::function<IPV(const Jet&)> m_associator;
71  };
72 }
73 
74 #endif
FlavorTagDiscriminants::ConstituentsSortOrder
ConstituentsSortOrder
Definition: ConstituentsLoader.h:32
FlavorTagDiscriminants::IParticlesLoader::getIParticlesFromJet
std::vector< const xAOD::IParticle * > getIParticlesFromJet(const xAOD::Jet &jet) const
Definition: IParticlesLoader.cxx:57
FlavorTagDiscriminants::ConstituentsInputConfig
Definition: ConstituentsLoader.h:59
IParticle.h
FlavorTagDiscriminants::IParticlesLoader::IParticleSortVar
std::function< double(const xAOD::IParticle *, const Jet &)> IParticleSortVar
Definition: IParticlesLoader.h:52
FlavorTagDiscriminants
This file contains "getter" functions used for accessing tagger inputs from the EDM.
Definition: AssociationEnums.h:11
FlavorTagDiscriminants::IConstituentsLoader
Definition: ConstituentsLoader.h:75
CustomGetterUtils.h
FlavorTagDiscriminants::IParticlesLoader::Jet
xAOD::Jet Jet
Definition: IParticlesLoader.h:46
SG::AuxElement
Base class for elements of a container that can have aux data.
Definition: AuxElement.h:446
FlavorTagDiscriminants::IParticlesLoader::IParticles
std::vector< const xAOD::IParticle * > IParticles
Definition: IParticlesLoader.h:50
FlavorTagDiscriminants::IParticlesLoader::m_isCharged
bool m_isCharged
Definition: IParticlesLoader.h:70
FlavorTagDiscriminants::getter_utils::SeqGetter< xAOD::IParticle >
xAOD::IParticleContainer
DataVector< IParticle > IParticleContainer
Simple convenience declaration of IParticleContainer.
Definition: xAOD/xAODBase/xAODBase/IParticleContainer.h:32
FlavorTagDiscriminants::IParticlesLoader::getData
std::tuple< std::string, Inputs, std::vector< const xAOD::IParticle * > > getData(const xAOD::Jet &jet, [[maybe_unused]] const SG::AuxElement &btag) const override
Definition: IParticlesLoader.cxx:90
FlavorTagDiscriminants::IParticlesLoader::PartLinks
std::vector< ElementLink< IPC > > PartLinks
Definition: IParticlesLoader.h:60
FlavorTagDiscriminants::IParticlesLoader::getDependencies
FTagDataDependencyNames getDependencies() const override
Definition: IParticlesLoader.cxx:98
xAOD::IParticle
Class providing the definition of the 4-vector interface.
Definition: Event/xAOD/xAODBase/xAODBase/IParticle.h:40
FlavorTagDiscriminants::IParticlesLoader::iparticleSortVar
IParticleSortVar iparticleSortVar(ConstituentsSortOrder)
Definition: IParticlesLoader.cxx:13
FlavorTagDiscriminants::IParticlesLoader::m_iparticleSortVar
IParticleSortVar m_iparticleSortVar
Definition: IParticlesLoader.h:67
FlavorTagDiscriminants::createIParticlesLoaderConfig
ConstituentsInputConfig createIParticlesLoaderConfig(std::pair< std::string, std::vector< std::string >> iparticle_names)
jet
Definition: JetCalibTools_PlotJESFactors.cxx:23
FlavorTagDiscriminants::FTagDataDependencyNames
Definition: FTagDataDependencyNames.h:12
ConstituentsLoader.h
FlavorTagDiscriminants::IParticlesLoader
Definition: IParticlesLoader.h:34
FlavorTagDiscriminants::IParticlesLoader::SeqFromIParticles
std::function< NamedSeq(const Jet &, const IParticles &)> SeqFromIParticles
Definition: IParticlesLoader.h:55
python.AtlRunQueryLib.options
options
Definition: AtlRunQueryLib.py:379
xAOD::double
double
Definition: CompositeParticle_v1.cxx:159
FlavorTagDiscriminants::IParticlesLoader::getUsedRemap
std::set< std::string > getUsedRemap() const override
Definition: IParticlesLoader.cxx:101
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
FlavorTagDiscriminants::IParticlesLoader::m_seqGetter
getter_utils::SeqGetter< xAOD::IParticle > m_seqGetter
Definition: IParticlesLoader.h:68
FlavorTagDiscriminants::IParticlesLoader::getName
std::string getName() const override
Definition: IParticlesLoader.cxx:104
FlavorTagDiscriminants::IParticlesLoader::NamedSeq
std::pair< std::string, std::vector< double > > NamedSeq
Definition: IParticlesLoader.h:48
FlavorTagDiscriminants::IParticlesLoader::IParticlesLoader
IParticlesLoader(ConstituentsInputConfig, const FTagOptions &options)
Definition: IParticlesLoader.cxx:27
JetFwd.h
FlavorTagDiscriminants::FTagOptions
Definition: DataPrepUtilities.h:45
FlavorTagDiscriminants::IParticlesLoader::getType
ConstituentsType getType() const override
Definition: IParticlesLoader.cxx:107
xAOD::Jet_v1
Class describing a jet.
Definition: Jet_v1.h:57
FlavorTagDiscriminants::IParticlesLoader::NamedVar
std::pair< std::string, double > NamedVar
Definition: IParticlesLoader.h:47
FlavorTagDiscriminants::ConstituentsType
ConstituentsType
Definition: ConstituentsLoader.h:48
FlavorTagDiscriminants::IParticlesLoader::IPV
std::vector< const xAOD::IParticle * > IPV
Definition: IParticlesLoader.h:61
FlavorTagDiscriminants::IParticlesLoader::m_associator
std::function< IPV(const Jet &)> m_associator
Definition: IParticlesLoader.h:69