11#ifndef NAVFOURMOM_NAV4MOMWRAPPER_H
12#define NAVFOURMOM_NAV4MOMWRAPPER_H
17#include "CLHEP/Vector/LorentzVector.h"
29template<
class Navigable_t,
69 const double p3,
const double p4 );
97 const std::any& weight )
const;
166 CLHEP::HepLorentzVector
hlv()
const;
181 virtual void set4Mom (
const CLHEP::HepLorentzVector & theHlv ) ;
185 std::ostream&
dump( std::ostream& out )
const;
213template<
class Navigable_t,
class P4Momentum_t>
222template<
class Navigable_t,
class P4Momentum_t>
234template<
class Navigable_t,
class P4Momentum_t>
245template<
class Navigable_t,
class P4Momentum_t>
254template<
class Navigable_t,
class P4Momentum_t>
261 if (
this != &rhs ) {
262 INavigable4Momentum::operator=( rhs );
264 P4Momentum_t::operator=( rhs );
269template<
class Navigable_t,
class P4Momentum_t>
281template<
class Navigable_t,
class P4Momentum_t>
290template<
class Navigable_t,
class P4Momentum_t>
299template<
class Navigable_t,
class P4Momentum_t>
307template<
class Navigable_t,
class P4Momentum_t>
316template<
class Navigable_t,
class P4Momentum_t>
325template<
class Navigable_t,
class P4Momentum_t>
334template<
class Navigable_t,
class P4Momentum_t>
339 const std::any& weight )
const
344template<
class Navigable_t,
class P4Momentum_t>
352template<
class Navigable_t,
class P4Momentum_t>
360template<
class Navigable_t,
class P4Momentum_t>
368template<
class Navigable_t,
class P4Momentum_t>
376template<
class Navigable_t,
class P4Momentum_t>
384template<
class Navigable_t,
class P4Momentum_t>
392template<
class Navigable_t,
class P4Momentum_t>
400template<
class Navigable_t,
class P4Momentum_t>
408template<
class Navigable_t,
class P4Momentum_t>
416template<
class Navigable_t,
class P4Momentum_t>
424template<
class Navigable_t,
class P4Momentum_t>
432template<
class Navigable_t,
class P4Momentum_t>
440template<
class Navigable_t,
class P4Momentum_t>
448template<
class Navigable_t,
class P4Momentum_t>
456template<
class Navigable_t,
class P4Momentum_t>
464template<
class Navigable_t,
class P4Momentum_t>
472template<
class Navigable_t,
class P4Momentum_t>
480template<
class Navigable_t,
class P4Momentum_t>
488template<
class Navigable_t,
class P4Momentum_t>
496template<
class Navigable_t,
class P4Momentum_t>
504template<
class Navigable_t,
class P4Momentum_t>
512template<
class Navigable_t,
class P4Momentum_t>
514CLHEP::HepLorentzVector
520template<
class Navigable_t,
class P4Momentum_t>
530template<
class Navigable_t,
class P4Momentum_t>
538template<
class Navigable_t,
class P4Momentum_t>
545template<
class Navigable_t,
class P4Momentum_t>
555template<
class Navigable_t,
class P4Momentum_t>
567template<
class Navigable_t,
class P4Momentum_t>
576template<
class Navigable_t,
class P4Momentum_t>
I4Momentum is an abstract base class providing 4-momentum behavior.
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)
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
CLHEP::HepLorentzVector hlv() const
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.
virtual void fillToken(INavigationToken &navToken) const
Visitor handler without relational parameter.
virtual double e() const
get energy data member
virtual void set4Mom(const I4Momentum &theI4Mom)
set all 4-mom from another I4Momentum reference
virtual double px() const
get px data member
virtual double py() const
get py data member
virtual double pz() const
get pz data member
virtual const I4MomentumError * errors() const
Access to errors, if available; returns 0 if no errors.