ATLAS Offline Software
Loading...
Searching...
No Matches
Nav4MomWrapper.h
Go to the documentation of this file.
1
2
3/*
4 Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
5*/
6
7// Nav4MomWrapper.h
8// Header file for class Nav4MomWrapper
9// Author: S.Binet<binet@cern.ch>
11#ifndef NAVFOURMOM_NAV4MOMWRAPPER_H
12#define NAVFOURMOM_NAV4MOMWRAPPER_H
13
14// STL includes
15
16// CLHEP includes
17#include "CLHEP/Vector/LorentzVector.h"
18
19// Gaudi includes
20
21// EventKernel includes
23
24// Navigation includes
26
27// Forward declaration
28
29template<class Navigable_t,
30 class P4Momentum_t>
31class Nav4MomWrapper : virtual public INavigable4Momentum,
32 public NavWrapper<Navigable_t>,
33 public P4Momentum_t
34{
35
37 // Public typedefs:
39 public:
40
44
48
50 // Public methods:
52 public:
53
57
60 Nav4MomWrapper( const Nav4MomWrapper& rhs );
61
65
68 Nav4MomWrapper( const double p1, const double p2,
69 const double p3, const double p4 );
70 explicit Nav4MomWrapper( const CLHEP::HepLorentzVector& hlv );
71 explicit Nav4MomWrapper( const P4Momentum_t& rhs );
72 explicit Nav4MomWrapper( const I4Momentum & rhs );
73 explicit Nav4MomWrapper( const I4Momentum * const rhs );
74
75
78 virtual ~Nav4MomWrapper();
79
81 // Const methods:
83
87
91
94
95 void fillToken( INavigationToken & thisToken ) const;
96 void fillToken( INavigationToken & thisToken,
97 const std::any& weight ) const;
98
101
104
106 double px() const;
107
109 double py() const;
110
112 double pz() const;
113
115 double m() const;
116
118 double m2() const;
119
121 double p() const;
122
124 double p2() const;
125
127 double eta() const;
128
130 double rapidity() const;
131
133 double phi() const;
134
136 double e() const;
137
139 double et() const;
140
142 double pt() const;
143
145 double iPt() const;
146
148 double cosPhi() const;
149
151 double sinPhi() const;
152
154 double cosTh() const;
155
157 double sinTh() const;
158
160 double cotTh() const;
161
163 double tanTh() const;
164
166 CLHEP::HepLorentzVector hlv() const;
167
168 virtual const I4MomentumError* errors() const;
169
172
173
175 virtual void set4Mom (const I4Momentum * const theI4Mom ) ;
176
178 virtual void set4Mom (const I4Momentum & theI4Mom) ;
179
181 virtual void set4Mom (const CLHEP::HepLorentzVector & theHlv ) ;
182
183
185 std::ostream& dump( std::ostream& out ) const;
186
189
191 // Non-const methods:
193
197
201
203 // Protected data:
205 protected:
206
207};
208
210// Inline methods:
212
213template<class Navigable_t, class P4Momentum_t>
214inline
215Nav4MomWrapper<Navigable_t,
218 NavWrapper<Navigable_t>( ),
219 P4Momentum_t( )
220{}
221
222template<class Navigable_t, class P4Momentum_t>
223inline
224Nav4MomWrapper<Navigable_t,
226 IAthenaBarCode(rhs),
227 INavigable(rhs),
228 I4Momentum(rhs),
230 NavWrapper<Navigable_t>( rhs ),
232{}
233
234template<class Navigable_t, class P4Momentum_t>
235inline
236Nav4MomWrapper<Navigable_t,
237 P4Momentum_t>::Nav4MomWrapper( const CLHEP::HepLorentzVector& hlv ) :
239 NavWrapper<Navigable_t>( ),
240 P4Momentum_t( )
241{
243}
244
245template<class Navigable_t, class P4Momentum_t>
246inline
247Nav4MomWrapper<Navigable_t,
250 NavWrapper<Navigable_t>( ),
251 P4Momentum_t( i4mom )
252{}
253
254template<class Navigable_t, class P4Momentum_t>
255inline
256Nav4MomWrapper<Navigable_t,
258Nav4MomWrapper<Navigable_t,
259 P4Momentum_t>::operator=( const Nav4MomWrapper& rhs )
260{
261 if ( this != &rhs ) {
262 INavigable4Momentum::operator=( rhs );
264 P4Momentum_t::operator=( rhs );
265 }
266 return *this;
267}
268
269template<class Navigable_t, class P4Momentum_t>
270inline
271Nav4MomWrapper<Navigable_t,
273 const double p2,
274 const double p3,
275 const double p4 ) :
277 NavWrapper<Navigable_t>( ),
278 P4Momentum_t( p1, p2, p3, p4 )
279{}
280
281template<class Navigable_t, class P4Momentum_t>
282inline
283Nav4MomWrapper<Navigable_t,
286 NavWrapper<Navigable_t>( ),
287 P4Momentum_t( i4mom )
288{}
289
290template<class Navigable_t, class P4Momentum_t>
291inline
292Nav4MomWrapper<Navigable_t,
295 NavWrapper<Navigable_t>( ),
296 P4Momentum_t( rhs )
297{}
298
299template<class Navigable_t, class P4Momentum_t>
300inline
301Nav4MomWrapper<Navigable_t,
304
305// getters
306
307template<class Navigable_t, class P4Momentum_t>
308inline
310Nav4MomWrapper<Navigable_t,
312{
313 return *this;
314}
315
316template<class Navigable_t, class P4Momentum_t>
317inline
318const P4Momentum_t&
319Nav4MomWrapper<Navigable_t,
321{
322 return *this;
323}
324
325template<class Navigable_t, class P4Momentum_t>
326inline
327void
328Nav4MomWrapper<Navigable_t,
330{
331 return NavWrapper<Navigable_t>::fillToken(thisToken);
332}
333
334template<class Navigable_t, class P4Momentum_t>
335inline
336void
337Nav4MomWrapper<Navigable_t,
339 const std::any& weight ) const
340{
341 return NavWrapper<Navigable_t>::fillToken(thisToken, weight);
342}
343
344template<class Navigable_t, class P4Momentum_t>
345inline
346double
351
352template<class Navigable_t, class P4Momentum_t>
353inline
354double
359
360template<class Navigable_t, class P4Momentum_t>
361inline
362double
367
368template<class Navigable_t, class P4Momentum_t>
369inline
370double
375
376template<class Navigable_t, class P4Momentum_t>
377inline
378double
383
384template<class Navigable_t, class P4Momentum_t>
385inline
386double
391
392template<class Navigable_t, class P4Momentum_t>
393inline
394double
399
400template<class Navigable_t, class P4Momentum_t>
401inline
402double
407
408template<class Navigable_t, class P4Momentum_t>
409inline
410double
415
416template<class Navigable_t, class P4Momentum_t>
417inline
418double
423
424template<class Navigable_t, class P4Momentum_t>
425inline
426double
431
432template<class Navigable_t, class P4Momentum_t>
433inline
434double
439
440template<class Navigable_t, class P4Momentum_t>
441inline
442double
447
448template<class Navigable_t, class P4Momentum_t>
449inline
450double
455
456template<class Navigable_t, class P4Momentum_t>
457inline
458double
463
464template<class Navigable_t, class P4Momentum_t>
465inline
466double
471
472template<class Navigable_t, class P4Momentum_t>
473inline
474double
479
480template<class Navigable_t, class P4Momentum_t>
481inline
482double
487
488template<class Navigable_t, class P4Momentum_t>
489inline
490double
495
496template<class Navigable_t, class P4Momentum_t>
497inline
498double
503
504template<class Navigable_t, class P4Momentum_t>
505inline
506const I4MomentumError*
511
512template<class Navigable_t, class P4Momentum_t>
513inline
514CLHEP::HepLorentzVector
519
520template<class Navigable_t, class P4Momentum_t>
521inline
527
528
529
530template<class Navigable_t, class P4Momentum_t>
531inline
532void
534{
535 return P4Momentum_t::set4Mom(theI4Mom);
536}
537
538template<class Navigable_t, class P4Momentum_t>
539inline void
544
545template<class Navigable_t, class P4Momentum_t>
546inline
547void
548Nav4MomWrapper<Navigable_t,P4Momentum_t>::set4Mom (const CLHEP::HepLorentzVector & theHlv )
549{
550 return P4Momentum_t::set4Mom(theHlv);
551}
552
553
554
555template<class Navigable_t, class P4Momentum_t>
556inline
557std::ostream&
559{
560 return P4Momentum_t::dump( out );
561}
562
563// --------------------
564// non-const interface
565// --------------------
566
567template<class Navigable_t, class P4Momentum_t>
568inline
570Nav4MomWrapper<Navigable_t,
572{
573 return *this;
574}
575
576template<class Navigable_t, class P4Momentum_t>
577inline
579Nav4MomWrapper<Navigable_t,
581{
582 return *this;
583}
584
585#endif //> NAVFOURMOM_NAV4MOMWRAPPER_H
P4PxPyPzE P4Momentum_t
I4Momentum is an abstract base class providing 4-momentum behavior.
Definition I4Momentum.h:31
virtual CLHEP::HepLorentzVector hlv() const =0
CLHEP HepLorentzVector.
virtual double rapidity() const =0
rapidity
virtual double cotTh() const =0
cottan theta
virtual double m() const =0
mass
virtual double phi() const =0
phi in [-pi,pi[
virtual std::ostream & dump(std::ostream &out) const =0
Print I4Momentum content.
virtual double pt() const =0
transverse momentum
virtual double p() const =0
momentum magnitude
virtual double eta() const =0
pseudo rapidity
virtual double et() const =0
transverse energy defined to be e*sin(theta)
virtual double iPt() const =0
inverse of transverse momentum
virtual Kind kind() const =0
tells what kind of P4XYZT this is
virtual double cosPhi() const =0
cosinus phi
virtual double p2() const =0
square of momentum magnitude
virtual double cosTh() const =0
cosinus theta
virtual double sinPhi() const =0
sinus phi
virtual double tanTh() const =0
tan theta
virtual double m2() const =0
mass squared
virtual double sinTh() const =0
sinus theta
std::ostream & dump(std::ostream &out) const
Print I4Momentum content.
double cosPhi() const
cosine phi
double eta() const
pseudo rapidity
void fillToken(INavigationToken &thisToken) const
double pt() const
transverse momentum
P4Momentum_t momentum_type
publish the type of the base class (ie: 'traits-itize' it)
double m() const
mass
NavWrapper< Navigable_t > navigable_type
publish the type of the base class (ie: 'traits-itize' it)
Nav4MomWrapper & operator=(const Nav4MomWrapper &rhs)
Assignment operator:
double sinTh() const
sinus theta
double py() const
y component of momentum
double m2() const
mass squared
double px() const
x component of momentum
double phi() const
phi in [-pi,pi[
I4Momentum::Kind kind() const
makes the underlying type of the implementation available (P4XYZ)
double et() const
transverse energy defined to be e*sin(theta)
const navigable_type & navigableBase() const
access to underlying base type (INavigable-like)
double sinPhi() const
sine phi
virtual void set4Mom(const I4Momentum *const theI4Mom)
set 4Momentum (will throw exception if cannot be implemented)
const momentum_type & momentumBase() const
access to underlying base type (I4Momentum-like)
double p() const
momentum magnitude
virtual ~Nav4MomWrapper()
Destructor:
Nav4MomWrapper()
Default constructor:
double iPt() const
inverse of transverse momentum
double e() const
energy
virtual const I4MomentumError * errors() const
Access to errors, if available; returns 0 if no errors.
double cosTh() const
cosinus theta
double pz() const
z component of momentum
double rapidity() const
rapidity
double cotTh() const
cottan theta
double tanTh() const
tan theta
Wrapper for Navigable implementation.
Definition NavWrapper.h:15
virtual void fillToken(INavigationToken &navToken) const
Visitor handler without relational parameter.
Definition NavWrapper.h:50
virtual double e() const
get energy data member
Definition P4PxPyPzE.h:132
virtual void set4Mom(const I4Momentum &theI4Mom)
set all 4-mom from another I4Momentum reference
Definition P4PxPyPzE.h:147
virtual double px() const
get px data member
Definition P4PxPyPzE.h:122
virtual double py() const
get py data member
Definition P4PxPyPzE.h:126
virtual double pz() const
get pz data member
Definition P4PxPyPzE.h:129
virtual const I4MomentumError * errors() const
Access to errors, if available; returns 0 if no errors.
Definition P4PxPyPzE.cxx:7