ATLAS Offline Software
JetAccessors.h
Go to the documentation of this file.
1 // Dear emacs, this is -*- c++ -*-
2 
3 /*
4  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
5 */
6 
7 #ifndef XAODJET_JETACCESSORS_H
8 #define XAODJET_JETACCESSORS_H
9 
28 #include <string>
29 #include <type_traits>
31 #include "AthLinks/ElementLink.h"
32 #include "xAODBase/IParticle.h"
33 #include "xAODJet/JetTypes.h"
34 
35 namespace xAOD {
36 
37 
38  namespace JetAttributeAccessor {
39 
40 
41  struct Named {
42  Named(const std::string & n) : m_name(n){}
43  std::string name() const {return m_name;}
44  protected:
45  std::string m_name;
46  };
47 
48  template<class TYPE>
49  class AccessorWrapper : public Named {
50  public:
52  AccessorWrapper(const std::string & n) : Named(n), m_a(n) {}
53 
54  void setAttribute(SG::AuxElement& p, const TYPE& v) const {
55  m_a(p) = v;
56  }
57 
58  void getAttribute(const SG::AuxElement& p, TYPE& v) const {
59  v = m_a(p);
60  }
61 
62  const TYPE & getAttribute(const SG::AuxElement& p) const {
63  return m_a(p);
64  }
65 
66  bool isAvailable(const SG::AuxElement& p) const { return m_a.isAvailable(p);}
67 
68  // forward calls to internal accessor. useful for performance critical code.
69  const TYPE& operator()(const SG::AuxElement& p) const { return m_a(p);}
70  TYPE& operator()(SG::AuxElement& p) const { return m_a(p);}
71 
72  protected:
74  };
75 
77  template<>
78  class AccessorWrapper<double> : public Named {
79  public:
81  AccessorWrapper(const std::string & n) : Named(n) , m_a(n) {}
82 
83  void setAttribute(SG::AuxElement& p, const double& v) const {
84  m_a(p) = v;
85  }
86 
87  void getAttribute(const SG::AuxElement& p, double& v) const {
88  v = m_a(p);
89  }
90 
91  // can't return a reference, since the internal is a float.
92  double getAttribute(const SG::AuxElement& p) const {
93  return m_a(p);
94  }
95 
96 
97  bool isAvailable(const SG::AuxElement& p) const { return m_a.isAvailable(p);}
98 
99  protected:
101  };
102 
103 
105  template<>
106  class AccessorWrapper< std::vector<double> > : public Named{
107  public:
109  AccessorWrapper(const std::string & n) : Named(n), m_a(n) {}
110 
111  void setAttribute(SG::AuxElement& p, const std::vector<double>& v) const {
112  m_a(p).assign( v.begin() , v.end() );
113  }
114 
115  void getAttribute(const SG::AuxElement& p, std::vector<double>& v) const {
116  const std::vector<float> & vecF = m_a(p);
117  v.assign( vecF.begin() , vecF.end() );
118  }
119 
120  // can't return a reference, since the internal is a float.
121  std::vector<double> getAttribute(const SG::AuxElement& p) const {
122  std::vector<double> v; getAttribute(p,v);
123  return v;
124  }
125 
126 
127  bool isAvailable(const SG::AuxElement& p) const { return m_a.isAvailable(p);}
128 
129  protected:
131  };
132 
133 
134 
135 
138  class FourMomAccessor : public Named {
139  public:
140  FourMomAccessor(const std::string& name, const std::string& n0, const std::string& n1,
141  const std::string& n2, const std::string& n3) :Named(name) , m_p0(n0), m_p1(n1), m_p2(n2), m_p3(n3) {}
142 
143  bool isAvailable(const SG::AuxElement& e) const {return m_p0.isAvailable(e);}
144 
145  protected:
150  };
151 
152 
155  template<>
157  public:
158  AccessorWrapper() : FourMomAccessor("_unnamed_","pt", "eta","phi", "m") {}
159  AccessorWrapper(const std::string &name) : FourMomAccessor(name, name+"_pt", name+"_eta",name+"_phi", name+"_m") {}
160 
161  const float & pt(const SG::AuxElement& p) const { return m_p0(p);}
162  const float & eta(const SG::AuxElement& p) const { return m_p1(p);}
163  const float & phi(const SG::AuxElement& p) const { return m_p2(p);}
164  const float & m(const SG::AuxElement& p) const { return m_p3(p);}
165 
166  void setAttribute(SG::AuxElement& p, const JetFourMom_t& v) const {
167  m_p0(p) = v.Pt();
168  m_p1(p) = v.Eta();
169  m_p2(p) = v.Phi();
170  m_p3(p) = v.M();
171  }
172 
173  void getAttribute(const SG::AuxElement& p, JetFourMom_t& v) const {
174  v.SetPt( m_p0(p) );
175  v.SetEta( m_p1(p) );
176  v.SetPhi( m_p2(p) );
177  v.SetM( m_p3(p) );
178  }
179 
182  return v;
183  }
184 
185  // other convenience function
186  void setPtEtaPhiM(SG::AuxElement& p, float pt, float eta, float phi, float m ){
187  m_p0(p) = pt ;
188  m_p1(p) = eta ;
189  m_p2(p) = phi ;
190  m_p3(p) = m ;
191  }
192 
193 
194  };
196 
197 
200  template<>
202  public:
203  AccessorWrapper(const std::string &name) : FourMomAccessor(name, name+"_px", name+"_py",name+"_pz", name+"_e") {}
205  m_p0(p) = v.Px();
206  m_p1(p) = v.Py();
207  m_p2(p) = v.Pz();
208  m_p3(p) = v.E();
209  }
210 
212  v.SetPx( m_p0(p) );
213  v.SetPy( m_p1(p) );
214  v.SetPz( m_p2(p) );
215  v.SetE( m_p3(p) );
216  }
217 
220  return v;
221  }
222 
223  };
225 
226 
227 
229  namespace {
231 
233  template<typename Obj, bool IsIP>
234  struct InternalTypes {
235  typedef DataVector<Obj> ContainerType;
236  typedef ElementLink< ContainerType > LinkType;
237  typedef SG::AuxElement::Accessor< LinkType > AccessorType;
238  static const Obj* fromEL(const LinkType&el){if(el.isValid())return *el; return NULL;}
239  };
240 
241  template<typename Obj>
242  struct InternalTypes<Obj,true> {
243  typedef IParticleContainer ContainerType;
244  typedef ElementLink< ContainerType > LinkType;
245  typedef SG::AuxElement::Accessor< LinkType > AccessorType;
246  static const Obj* fromEL(const LinkType&el){if(el.isValid()) return dynamic_cast<const Obj*>(*el); return NULL;}
247  };
248 
249  template<typename Obj, bool IsIP>
250  struct InternalVectorTypes : public InternalTypes<Obj,IsIP> {
251  typedef typename InternalTypes<Obj,IsIP>::LinkType LinkType;
253  };
254  }
255 
256 
257  template<class TYPE>
258  class ObjectAccessorWrapper: public Named {
259  public:
264 
265  ObjectAccessorWrapper(const std::string & n) : Named(n), m_a(n) {}
266 
267  void setAttribute(SG::AuxElement& p, const TYPE* o) const {
268  LinkType &el = m_a(p);
269  el.toIndexedElement( *( dynamic_cast< const ContainerType* >( o->container() ) ), o->index() );
270  el.toPersistent();
271  }
272 
273 
274  const TYPE * getAttribute(const SG::AuxElement& p) const {
275  return InternalType::fromEL( m_a(p) );
276  }
277 
278  void getAttribute(const SG::AuxElement& p, const TYPE *& att) const {
279  att= InternalType::fromEL( m_a(p) );
280  }
281 
282  bool isAvailable(const SG::AuxElement& p) const { return m_a.isAvailable(p);}
283 
284  // // forward calls to internal accessor. useful for performance critical code.
285  // cppcheck-suppress CastIntegerToAddressAtReturn // false positive
286  const TYPE* operator() (const SG::AuxElement& p) const { return getAttribute(p); }
287  // TYPE& operator()(SG::AuxElement& p) { LinkType &el=m_a(p); return *el;}
288 
289  protected:
291  };
292 
302  template<class TYPE>
303  class ObjectAccessorWrapper<std::vector<const TYPE*> > : public Named {
304  public:
306  typedef typename InternalType::ContainerType ContainerType;
309 
310  ObjectAccessorWrapper(const std::string & n) : Named(n), m_a(n) {}
311 
312 
313  void vector2vectorEL(const std::vector<const TYPE*> & vec, std::vector< LinkType > & elv) const {
314 
315  for(size_t i=0; i< vec.size() ; i++) {
316  LinkType el;
317  el.toIndexedElement( *( dynamic_cast< const ContainerType* >( vec[i]->container() ) ), vec[i]->index() );
318  elv.push_back(el);
319  elv.back().toPersistent(); // The EL will not change anymore since it is purely internal. We can call toPersistent() to be sure it will be saved as expected.
320  }
321  }
322 
323  void setAttribute(SG::AuxElement& p, const std::vector<const TYPE*> &vec) const {
324  std::vector<LinkType> &elv = m_a(p); elv.clear();elv.reserve(vec.size());
325  this->vector2vectorEL(vec, elv);
326  }
327 
328  void getAttribute(const SG::AuxElement& p, std::vector<const TYPE*>& v) const {
329  const std::vector<LinkType> &elv = m_a(p);
330  v.resize(elv.size());
331  for(size_t i=0;i<elv.size(); i++) {v[i] = InternalType::fromEL(elv[i]) ; }
332  }
333 
334  std::vector<const TYPE *> getAttribute(const SG::AuxElement& p) const {
335  const std::vector<LinkType> &elv = m_a(p);
336  std::vector<const TYPE*> ipvec(elv.size() );
337  for(size_t i=0;i<elv.size(); i++) ipvec[i] = InternalType::fromEL(elv[i]) ;
338  return ipvec;
339  }
340 
341  bool isAvailable(const SG::AuxElement& p) const { return m_a.isAvailable(p);}
342 
343  // // forward calls to internal accessor. useful for performance critical code.
344  // const TYPE* operator()(const AuxElement& p) { const LinkType &el = m_a(p) ;return *el;}
345  // TYPE& operator()(AuxElement& p) { LinkType &el=m_a(p); return *el;}
346 
347  protected:
349  };
350 
351 
352 
353 
354  }// namespace JetAttributeAccessor
355 }
356 #endif
xAOD::JetAttributeAccessor::AccessorWrapper::operator()
TYPE & operator()(SG::AuxElement &p) const
Definition: JetAccessors.h:70
xAOD::JetAttributeAccessor::ObjectAccessorWrapper::AccessorType
InternalType::AccessorType AccessorType
Definition: JetAccessors.h:263
xAOD::JetAttributeAccessor::Named::m_name
std::string m_name
Definition: JetAccessors.h:45
xAOD::JetAttributeAccessor::AccessorWrapper< std::vector< double > >::getAttribute
std::vector< double > getAttribute(const SG::AuxElement &p) const
Definition: JetAccessors.h:121
xAOD::JetAttributeAccessor::AccessorWrapper::AccessorType
SG::AuxElement::Accessor< TYPE > AccessorType
Definition: JetAccessors.h:51
python.SystemOfUnits.m
int m
Definition: SystemOfUnits.py:91
python.PerfMonSerializer.p
def p
Definition: PerfMonSerializer.py:743
xAOD::JetAttributeAccessor::ObjectAccessorWrapper
Definition: JetAccessors.h:258
IParticle.h
xAOD::JetAttributeAccessor::FourMomAccessor::m_p0
SG::AuxElement::Accessor< float > m_p0
Definition: JetAccessors.h:146
xAOD::JetAttributeAccessor::ObjectAccessorWrapper::m_a
AccessorType m_a
Definition: JetAccessors.h:290
SG::Accessor
Helper class to provide type-safe access to aux data.
Definition: Control/AthContainers/AthContainers/Accessor.h:66
xAOD::JetAttributeAccessor::ObjectAccessorWrapper< std::vector< const TYPE * > >::ContainerType
InternalType::ContainerType ContainerType
Definition: JetAccessors.h:306
xAOD::JetAttributeAccessor::AccessorWrapper< double >::AccessorWrapper
AccessorWrapper(const std::string &n)
Definition: JetAccessors.h:81
xAOD::JetAttributeAccessor::ObjectAccessorWrapper< std::vector< const TYPE * > >::vector2vectorEL
void vector2vectorEL(const std::vector< const TYPE * > &vec, std::vector< LinkType > &elv) const
Definition: JetAccessors.h:313
xAOD::JetAttributeAccessor::AccessorWrapper< JetFourMom_t >::setPtEtaPhiM
void setPtEtaPhiM(SG::AuxElement &p, float pt, float eta, float phi, float m)
Definition: JetAccessors.h:186
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
SG::AuxElement
Base class for elements of a container that can have aux data.
Definition: AuxElement.h:446
xAOD::JetAttributeAccessor::AccessorWrapper::setAttribute
void setAttribute(SG::AuxElement &p, const TYPE &v) const
Definition: JetAccessors.h:54
xAOD::JetAttributeAccessor::AccessorWrapper::operator()
const TYPE & operator()(const SG::AuxElement &p) const
Definition: JetAccessors.h:69
xAOD::JetAttributeAccessor::AccessorWrapper< IParticle::FourMom_t >::getAttribute
IParticle::FourMom_t getAttribute(const SG::AuxElement &p) const
Definition: JetAccessors.h:218
xAOD::JetAttributeAccessor::AccessorWrapper< IParticle::FourMom_t >::setAttribute
void setAttribute(SG::AuxElement &p, const IParticle::FourMom_t &v) const
Definition: JetAccessors.h:204
xAOD::JetAttributeAccessor::AccessorWrapper< JetFourMom_t >::m
const float & m(const SG::AuxElement &p) const
Definition: JetAccessors.h:164
xAOD::JetAttributeAccessor::AccessorWrapper::getAttribute
void getAttribute(const SG::AuxElement &p, TYPE &v) const
Definition: JetAccessors.h:58
athena.value
value
Definition: athena.py:122
xAOD::JetAttributeAccessor::AccessorWrapper< std::vector< double > >::m_a
AccessorType m_a
Definition: JetAccessors.h:130
xAOD
ICaloAffectedTool is abstract interface for tools checking if 4 mom is in calo affected region.
Definition: ICaloAffectedTool.h:24
vec
std::vector< size_t > vec
Definition: CombinationsGeneratorTest.cxx:12
xAOD::pt
setRcore setEtHad setFside pt
Definition: TrigPhoton_v1.cxx:106
xAOD::JetAttributeAccessor::ObjectAccessorWrapper::ContainerType
InternalType::ContainerType ContainerType
Definition: JetAccessors.h:261
xAOD::JetAttributeAccessor::Named::name
std::string name() const
Definition: JetAccessors.h:43
xAOD::IParticle
Class providing the definition of the 4-vector interface.
Definition: Event/xAOD/xAODBase/xAODBase/IParticle.h:40
xAOD::JetAttributeAccessor::AccessorWrapper< double >::isAvailable
bool isAvailable(const SG::AuxElement &p) const
Definition: JetAccessors.h:97
jet::JetIsolation::FourMom_t
TLorentzVector FourMom_t
Definition: JetIsolationTool.cxx:19
xAOD::JetAttributeAccessor::AccessorWrapper< JetFourMom_t >::phi
const float & phi(const SG::AuxElement &p) const
Definition: JetAccessors.h:163
xAOD::JetAttributeAccessor::AccessorWrapper< std::vector< double > >::setAttribute
void setAttribute(SG::AuxElement &p, const std::vector< double > &v) const
Definition: JetAccessors.h:111
xAOD::JetAttributeAccessor::AccessorWrapper::m_a
AccessorType m_a
Definition: JetAccessors.h:73
xAOD::JetAttributeAccessor::ObjectAccessorWrapper< std::vector< const TYPE * > >::m_a
AccessorType m_a
Definition: JetAccessors.h:348
xAOD::JetAttributeAccessor::ObjectAccessorWrapper::LinkType
InternalType::LinkType LinkType
Definition: JetAccessors.h:262
xAOD::IParticle::FourMom_t
TLorentzVector FourMom_t
Definition of the 4-momentum type.
Definition: Event/xAOD/xAODBase/xAODBase/IParticle.h:68
xAOD::phi
setEt phi
Definition: TrigEMCluster_v1.cxx:29
xAOD::JetAttributeAccessor::AccessorWrapper< double >::setAttribute
void setAttribute(SG::AuxElement &p, const double &v) const
Definition: JetAccessors.h:83
xAOD::JetAttributeAccessor::AccessorWrapper< double >::AccessorType
SG::AuxElement::Accessor< float > AccessorType
Definition: JetAccessors.h:80
xAOD::JetAttributeAccessor::Named
Definition: JetAccessors.h:41
xAOD::JetAttributeAccessor::ObjectAccessorWrapper< std::vector< const TYPE * > >::getAttribute
void getAttribute(const SG::AuxElement &p, std::vector< const TYPE * > &v) const
Definition: JetAccessors.h:328
xAOD::JetAttributeAccessor::ObjectAccessorWrapper::getAttribute
const TYPE * getAttribute(const SG::AuxElement &p) const
Definition: JetAccessors.h:274
lumiFormat.i
int i
Definition: lumiFormat.py:92
xAOD::JetAttributeAccessor::AccessorWrapper::getAttribute
const TYPE & getAttribute(const SG::AuxElement &p) const
Definition: JetAccessors.h:62
xAOD::JetAttributeAccessor::FourMomAccessor::isAvailable
bool isAvailable(const SG::AuxElement &e) const
Definition: JetAccessors.h:143
beamspotman.n
n
Definition: beamspotman.py:731
xAOD::e
setPy e
Definition: CompositeParticle_v1.cxx:166
vector
Definition: MultiHisto.h:13
plotIsoValidation.el
el
Definition: plotIsoValidation.py:197
xAOD::JetAttributeAccessor::ObjectAccessorWrapper< std::vector< const TYPE * > >::setAttribute
void setAttribute(SG::AuxElement &p, const std::vector< const TYPE * > &vec) const
Definition: JetAccessors.h:323
xAOD::JetAttributeAccessor::AccessorWrapper< double >::getAttribute
double getAttribute(const SG::AuxElement &p) const
Definition: JetAccessors.h:92
xAOD::double
double
Definition: CompositeParticle_v1.cxx:159
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
xAOD::JetAttributeAccessor::AccessorWrapper< IParticle::FourMom_t >::AccessorWrapper
AccessorWrapper(const std::string &name)
Definition: JetAccessors.h:203
xAOD::JetAttributeAccessor::FourMomAccessor::m_p3
SG::AuxElement::Accessor< float > m_p3
Definition: JetAccessors.h:149
xAOD::JetAttributeAccessor::ObjectAccessorWrapper::getAttribute
void getAttribute(const SG::AuxElement &p, const TYPE *&att) const
Definition: JetAccessors.h:278
TYPE
#define TYPE(CODE, TYP, IOTYP)
xAOD::JetFourMom_t
ROOT::Math::LorentzVector< ROOT::Math::PtEtaPhiM4D< double > > JetFourMom_t
Base 4 Momentum type for Jet.
Definition: JetTypes.h:17
xAOD::JetAttributeAccessor::FourMomAccessor
A base class holding accessors for 4 floats of a 4-vector.
Definition: JetAccessors.h:138
xAOD::JetAttributeAccessor::ObjectAccessorWrapper< std::vector< const TYPE * > >::getAttribute
std::vector< const TYPE * > getAttribute(const SG::AuxElement &p) const
Definition: JetAccessors.h:334
xAOD::JetAttributeAccessor::AccessorWrapper< JetFourMom_t >::AccessorWrapper
AccessorWrapper(const std::string &name)
Definition: JetAccessors.h:159
xAOD::JetAttributeAccessor::AccessorWrapper< JetFourMom_t >::getAttribute
void getAttribute(const SG::AuxElement &p, JetFourMom_t &v) const
Definition: JetAccessors.h:173
xAOD::JetAttributeAccessor::AccessorWrapper::isAvailable
bool isAvailable(const SG::AuxElement &p) const
Definition: JetAccessors.h:66
xAOD::JetAttributeAccessor::ObjectAccessorWrapper< std::vector< const TYPE * > >::LinkType
InternalType::LinkType LinkType
Definition: JetAccessors.h:307
xAOD::JetAttributeAccessor::ObjectAccessorWrapper::operator()
const TYPE * operator()(const SG::AuxElement &p) const
Definition: JetAccessors.h:286
Rtt_histogram.n1
n1
Definition: Rtt_histogram.py:21
python.PyAthena.v
v
Definition: PyAthena.py:157
DeMoScan.index
string index
Definition: DeMoScan.py:362
xAOD::JetAttributeAccessor::ObjectAccessorWrapper< std::vector< const TYPE * > >::isAvailable
bool isAvailable(const SG::AuxElement &p) const
Definition: JetAccessors.h:341
xAOD::JetAttributeAccessor::ObjectAccessorWrapper< std::vector< const TYPE * > >::ObjectAccessorWrapper
ObjectAccessorWrapper(const std::string &n)
Definition: JetAccessors.h:310
xAOD::JetAttributeAccessor::AccessorWrapper< JetFourMom_t >::eta
const float & eta(const SG::AuxElement &p) const
Definition: JetAccessors.h:162
xAOD::JetAttributeAccessor::ObjectAccessorWrapper< std::vector< const TYPE * > >::InternalType
InternalVectorTypes< TYPE, std::is_base_of< IParticle, TYPE >::value > InternalType
Definition: JetAccessors.h:305
xAOD::JetAttributeAccessor::FourMomAccessor::m_p1
SG::AuxElement::Accessor< float > m_p1
Definition: JetAccessors.h:147
xAOD::JetAttributeAccessor::AccessorWrapper< std::vector< double > >::isAvailable
bool isAvailable(const SG::AuxElement &p) const
Definition: JetAccessors.h:127
xAOD::JetAttributeAccessor::AccessorWrapper< std::vector< double > >::AccessorType
SG::AuxElement::Accessor< std::vector< float > > AccessorType
Definition: JetAccessors.h:108
xAOD::JetAttributeAccessor::AccessorWrapper
Definition: JetAccessors.h:49
xAOD::JetAttributeAccessor::AccessorWrapper< JetFourMom_t >::AccessorWrapper
AccessorWrapper()
Definition: JetAccessors.h:158
xAOD::JetAttributeAccessor::AccessorWrapper< JetFourMom_t >::getAttribute
JetFourMom_t getAttribute(const SG::AuxElement &p) const
Definition: JetAccessors.h:180
xAOD::JetAttributeAccessor::FourMomAccessor::m_p2
SG::AuxElement::Accessor< float > m_p2
Definition: JetAccessors.h:148
xAOD::JetAttributeAccessor::ObjectAccessorWrapper::ObjectAccessorWrapper
ObjectAccessorWrapper(const std::string &n)
Definition: JetAccessors.h:265
xAOD::JetAttributeAccessor::ObjectAccessorWrapper::isAvailable
bool isAvailable(const SG::AuxElement &p) const
Definition: JetAccessors.h:282
xAOD::JetAttributeAccessor::AccessorWrapper< JetFourMom_t >::setAttribute
void setAttribute(SG::AuxElement &p, const JetFourMom_t &v) const
Definition: JetAccessors.h:166
SG::ConstAccessor::isAvailable
bool isAvailable(const ELT &e) const
Test to see if this variable exists in the store.
xAOD::JetAttributeAccessor::AccessorWrapper< std::vector< double > >::AccessorWrapper
AccessorWrapper(const std::string &n)
Definition: JetAccessors.h:109
xAOD::JetAttributeAccessor::AccessorWrapper< JetFourMom_t >::pt
const float & pt(const SG::AuxElement &p) const
Definition: JetAccessors.h:161
JetTypes.h
xAOD::JetAttributeAccessor::FourMomAccessor::FourMomAccessor
FourMomAccessor(const std::string &name, const std::string &n0, const std::string &n1, const std::string &n2, const std::string &n3)
Definition: JetAccessors.h:140
xAOD::JetAttributeAccessor::AccessorWrapper< std::vector< double > >::getAttribute
void getAttribute(const SG::AuxElement &p, std::vector< double > &v) const
Definition: JetAccessors.h:115
xAOD::JetAttributeAccessor::ObjectAccessorWrapper< std::vector< const TYPE * > >::AccessorType
InternalType::AccessorType AccessorType
Definition: JetAccessors.h:308
xAOD::JetAttributeAccessor::ObjectAccessorWrapper::setAttribute
void setAttribute(SG::AuxElement &p, const TYPE *o) const
Definition: JetAccessors.h:267
xAOD::JetAttributeAccessor::AccessorWrapper< IParticle::FourMom_t >::getAttribute
void getAttribute(const SG::AuxElement &p, IParticle::FourMom_t &v) const
Definition: JetAccessors.h:211
xAOD::JetAttributeAccessor::AccessorWrapper< double >::getAttribute
void getAttribute(const SG::AuxElement &p, double &v) const
Definition: JetAccessors.h:87
xAOD::JetAttributeAccessor::ObjectAccessorWrapper::InternalType
InternalTypes< TYPE, std::is_base_of< IParticle, TYPE >::value > InternalType
Definition: JetAccessors.h:260
xAOD::JetAttributeAccessor::Named::Named
Named(const std::string &n)
Definition: JetAccessors.h:42
AuxElement.h
Base class for elements of a container that can have aux data.
xAOD::JetAttributeAccessor::AccessorWrapper< double >::m_a
AccessorType m_a
Definition: JetAccessors.h:100
xAOD::JetAttributeAccessor::AccessorWrapper::AccessorWrapper
AccessorWrapper(const std::string &n)
Definition: JetAccessors.h:52