ATLAS Offline Software
OfflineObjectDecorHelper.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef INDETTRACKPERFMON_OFFLINEOBJECTDECORHELPER_H
6 #define INDETTRACKPERFMON_OFFLINEOBJECTDECORHELPER_H
7 
18 #include "xAODTracking/Vertex.h"
20 #include "xAODMuon/MuonContainer.h"
23 #include "xAODTruth/TruthVertex.h"
24 #include "xAODJet/JetContainer.h"
25 
26 #include "TrackParametersHelper.h"
27 
28 
30 #include <string>
31 
32 
33 namespace IDTPM {
34 
36  template < typename container_t >
38  const std::string& decoName ) {
39  using elementLink_t = ElementLink< container_t >;
40  const SG::ConstAccessor< elementLink_t > acc( decoName );
41  return ( not acc.isAvailable( track ) );
42  }
43 
45  template < typename container_t >
46  typename container_t::const_value_type getLinkedObject(
48  const std::string& decoName )
49  {
50  using elementLink_t = ElementLink< container_t >;
51 
52  if( isUnlinkedObject< container_t >( track, decoName ) ) return nullptr;
53 
54  const SG::ConstAccessor< elementLink_t > acc( decoName );
55  elementLink_t eleLink = acc( track );
56 
57  if( not eleLink.isValid() ) return nullptr;
58 
59  return *eleLink;
60  }
61 
65  const std::string& quality="All" );
66 
69  const std::string& quality="All" );
70 
73  const int requiredNtracks,
74  const std::string& type="RNN",
75  const std::string& quality="" );
76 
79  const std::string& quality="DRtruthJet" );
80 
82  const std::string& quality="DRtruthJet" );
83 
85  const std::string& ="" ) { return nullptr; }; // dummy - to avoid compilation errors
86 
87  inline float getD0TrackInJet( const xAOD::TruthParticle&,
88  const std::string& ="" ) { return -999.; }; // dummy - to avoid compilation errors
89 
92  inline bool isUnlinkedTruth( const xAOD::TruthParticle& ) { return false; }; // dummy - to avoid compilation errors
93 
95  inline float getTruthMatchProb( const xAOD::TruthParticle& ) { return -1.; }; // dummy - to avoid compilation errors
96 
98  const float truthProbCut=0. );
100  const xAOD::TruthParticle&, const float ) { return nullptr; }; // dummy - to avoid compilation errors
101 
102  template< typename PARTICLE >
103  unsigned int getEtaBin( const PARTICLE& p,
104  const std::vector< float >& etaBins );
105 
106  template< typename PARTICLE >
107  inline bool nHitsSelVec( const PARTICLE& p,
108  const std::vector< unsigned int >& minHits,
109  const std::vector< float >& etaBins) {return nSiHits(p) >= minHits.at( getEtaBin( p, etaBins ) );};
110 
111  template bool nHitsSelVec < xAOD::TruthParticle >( const xAOD::TruthParticle& truth,
112  const std::vector< unsigned int >& minHits,
113  const std::vector< float >& etaBins );
114  template bool nHitsSelVec < xAOD::TrackParticle >( const xAOD::TrackParticle& track,
115  const std::vector< unsigned int >& minHits,
116  const std::vector< float >& etaBins );
117 
118  inline bool minPtSelVec( const xAOD::TrackParticle& track,
119  const std::vector< float >& minPt,
120  const std::vector< float >& etaBins) { return pT(track) >= minPt.at( getEtaBin( track, etaBins ) );};
121  inline bool minPtSelVec( const xAOD::TruthParticle& ,
122  const std::vector< float >& ,
123  const std::vector< float >& ) { return false; }; // dummy - to avoid compilation errors;
124 
125  inline bool maxD0SelVec( const xAOD::TrackParticle& track,
126  const std::vector< float >& maxD0,
127  const std::vector< float >& etaBins) { return std::fabs( d0(track) ) <= maxD0.at( getEtaBin( track, etaBins ) );};
128  inline bool maxD0SelVec( const xAOD::TruthParticle& ,
129  const std::vector< float >& ,
130  const std::vector< float >& ) { return false; }; // dummy - to avoid compilation errors;
131 
132  inline bool maxZ0SelVec( const xAOD::TrackParticle& track,
133  const std::vector< float >& maxZ0,
134  const std::vector< float >& etaBins) { return std::fabs( z0(track) ) <= maxZ0.at( getEtaBin( track, etaBins ) );};
135  inline bool maxZ0SelVec( const xAOD::TruthParticle& ,
136  const std::vector< float >& ,
137  const std::vector< float >& ) { return false; }; // dummy - to avoid compilation errors;
138 
141  bool getVertexTracksAndWeights( const xAOD::Vertex& vtx,
142  std::vector< const xAOD::TrackParticle* >& vtxTracks,
143  std::vector< float >& vtxTrackWeights,
144  const std::vector< const xAOD::TrackParticle* >& selTracks = {},
145  bool useSelected = false );
147  std::vector< const xAOD::TruthParticle* >&,
148  std::vector< float >&,
149  const std::vector< const xAOD::TruthParticle* >& /*selTracks*/ = {},
150  bool /*useSelected*/ = false ) { return true; } // TODO: Change to get (outgoing?) truth particles
151 
152 } // namespace IDTPM
153 
154 #endif // > ! INDETTRACKPERFMON_OFFLINEOBJECTDECORHELPER_H
IDTPM::nHitsSelVec
bool nHitsSelVec(const PARTICLE &p, const std::vector< unsigned int > &minHits, const std::vector< float > &etaBins)
Definition: OfflineObjectDecorHelper.h:107
IDTPM::getTruthMatchProb
float getTruthMatchProb(const xAOD::TrackParticle &track)
getTruthMatchProb
Definition: OfflineObjectDecorHelper.cxx:77
IDTPM::getLinkedTau
const xAOD::TauJet * getLinkedTau(const xAOD::TrackParticle &track, const int requiredNtracks, const std::string &type, const std::string &quality)
getLinkedTau
Definition: OfflineObjectDecorHelper.cxx:34
IDTPM::getEtaBin
unsigned int getEtaBin(const PARTICLE &p, const std::vector< float > &etaBins)
Definition: OfflineObjectDecorHelper.cxx:96
IDTPM::z0
float z0(const U &p)
Definition: TrackParametersHelper.h:72
IDTPM::getLinkedTruth
const xAOD::TruthParticle * getLinkedTruth(const xAOD::TrackParticle &track, const float truthProbCut)
getLinkedTruth
Definition: OfflineObjectDecorHelper.cxx:85
TruthParticleContainer.h
ConvertOldUJHistosToNewHistos.etaBins
list etaBins
Definition: ConvertOldUJHistosToNewHistos.py:145
IDTPM::getLinkedElectron
const xAOD::Electron * getLinkedElectron(const xAOD::TrackParticle &track, const std::string &quality)
getLinkedElectron
Definition: OfflineObjectDecorHelper.cxx:18
SG::ConstAccessor
Helper class to provide constant type-safe access to aux data.
Definition: ConstAccessor.h:55
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
xAOD::Muon_v1
Class describing a Muon.
Definition: Muon_v1.h:38
TrackParametersHelper.h
Utility methods to access track/truth particles parmeters in a consitent way in this package.
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:209
IDTPM::getD0TrackInJet
float getD0TrackInJet(const xAOD::TrackParticle &track, const std::string &quality)
recompute d0 projecting in jet direction w.r.t. origin
Definition: OfflineObjectDecorHelper.cxx:53
ElectronContainer.h
IDTPM::maxZ0SelVec
bool maxZ0SelVec(const xAOD::TrackParticle &track, const std::vector< float > &maxZ0, const std::vector< float > &etaBins)
Definition: OfflineObjectDecorHelper.h:132
xAOD::TruthParticle_v1
Class describing a truth particle in the MC record.
Definition: TruthParticle_v1.h:37
xAOD::TauJet_v3
Class describing a tau jet.
Definition: TauJet_v3.h:41
IDTPM::d0
float d0(const U &p)
Definition: TrackParametersHelper.h:84
IDTPM::getLinkedMuon
const xAOD::Muon * getLinkedMuon(const xAOD::TrackParticle &track, const std::string &quality)
getLinkedMuon
Definition: OfflineObjectDecorHelper.cxx:26
IDTPM::pT
float pT(const U &p)
Accessor utility function for getting the value of pT.
Definition: TrackParametersHelper.h:33
AthenaPoolTestRead.acc
acc
Definition: AthenaPoolTestRead.py:16
IDTPM::maxD0SelVec
bool maxD0SelVec(const xAOD::TrackParticle &track, const std::vector< float > &maxD0, const std::vector< float > &etaBins)
Definition: OfflineObjectDecorHelper.h:125
TauJetContainer.h
Vertex.h
TruthVertex.h
xAOD::TruthVertex_v1
Class describing a truth vertex in the MC record.
Definition: TruthVertex_v1.h:37
xAOD::Electron_v1
Definition: Electron_v1.h:34
MuonContainer.h
TrackParticle.h
IDTPM::minPtSelVec
bool minPtSelVec(const xAOD::TrackParticle &track, const std::vector< float > &minPt, const std::vector< float > &etaBins)
Definition: OfflineObjectDecorHelper.h:118
xAOD::Jet_v1
Class describing a jet.
Definition: Jet_v1.h:57
IDTPM::getVertexTracksAndWeights
bool getVertexTracksAndWeights(const xAOD::Vertex &vtx, std::vector< const xAOD::TrackParticle * > &vtxTracks, std::vector< float > &vtxTrackWeights, const std::vector< const xAOD::TrackParticle * > &selTracks, bool useSelected)
getVertexTracksAndWeights
Definition: OfflineObjectDecorHelper.cxx:108
xAOD::Vertex_v1
Class describing a Vertex.
Definition: Vertex_v1.h:42
JetContainer.h
IDTPM::getLinkedObject
container_t::const_value_type getLinkedObject(const xAOD::TrackParticle &track, const std::string &decoName)
Templated method to retrieve object linked to a track.
Definition: OfflineObjectDecorHelper.h:46
python.TrackLeptonConfig.quality
quality
Definition: TrackLeptonConfig.py:16
IDTPM::getLinkedJet
const xAOD::Jet * getLinkedJet(const xAOD::TrackParticle &track, const std::string &quality)
getLinkedJet
Definition: OfflineObjectDecorHelper.cxx:45
IDTPM::isUnlinkedObject
bool isUnlinkedObject(const xAOD::TrackParticle &track, const std::string &decoName)
Templated method to check if a track is not linked to an object.
Definition: OfflineObjectDecorHelper.h:37
xAOD::track
@ track
Definition: TrackingPrimitives.h:513
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
IDTPM
Athena include(s).
Definition: IPlotsDefinitionSvc.h:25
IDTPM::isUnlinkedTruth
bool isUnlinkedTruth(const xAOD::TrackParticle &track)
isUnlinkedTruth
Definition: OfflineObjectDecorHelper.cxx:69
IDTPM::nSiHits
float nSiHits(const U &p)
Definition: TrackParametersHelper.h:427