16 const double px=this->
px();
17 const double py=this->
py();
18 const double pz=this->
pz();
19 const double e =this->
e();
27 const double m2 = this->
m2();
29 return m2 < 0.0 ? -std::sqrt(-
m2) : std::sqrt (
m2);
34 const double e=this->
e();
36 const double px=this->
px();
37 const double py=this->
py();
38 const double pz=this->
pz();
43 if (
p==0.0)
return 0.0;
44 if (
p==+
pz)
return +std::numeric_limits<double>::infinity();
45 if (
p==-
pz)
return -std::numeric_limits<double>::infinity();
47 return (
e>0 ? 1. : -1.)* 0.5*log((
p+
pz)/(
p-
pz));
52 const double e=this->
e();
53 const double px= (
e>0 ? 1. : -1.)*this->
px();
54 const double py= (
e>0 ? 1. : -1.)*this->
py();
55 return px == 0.0 &&
py == 0.0 ? 0.0 : atan2(
py,
px);
61 const double px=this->
px();
62 const double py=this->
py();
63 const double pz=this->
pz();
71 const double e=this->
e();
73 return (e>0 ? 1. : -1.)*std::sqrt(this->
p2());
79 return this->
px()/this->
pt();
84 return this->
py()/this->
pt();
89 return this->
pt()/this->
pz();
94 return this->
pz()/this->
pt();
101 return this->
pz()/this->
p();
109 return this->
pt()/this->
p();
116 const double e=this->
e();
117 const double px=this->
px();
118 const double py=this->
py();
120 return (e>0 ? 1. : -1.)*std::sqrt(
px*
px+
py*
py);
128 return this->
e()*this->
sinTh();
132 {
return 1./this->
pt();
138 const double e =this->
e();
139 const double pz=this->
pz();
140 if (e==0.0)
return 0.0;
141 if (
e==+
pz)
return +std::numeric_limits<double>::infinity();
142 if (
e==-
pz)
return -std::numeric_limits<double>::infinity();
144 return 0.5*std::log((
e+
pz)/(
e-
pz));
148{
return CLHEP::HepLorentzVector(this->
px(),this->
py(),this->
pz(),this->
e());
155 std::stringstream outx;
156 outx <<
"[px,py,pz,e] ="
157 << std::right << std::scientific << std::setprecision(8)
158 << std::setw(16) << this->
px()
159 << std::setw(16) << this->
py()
160 << std::setw(16) << this->
pz()
161 << std::setw(16) << this->
e();
177 std::cout <<
"FATAL ERROR dummy P4PxPyPzEBase::set4Mom called " << std::endl ;
183 std::cout <<
"FATAL ERROR dummy P4PxPyPzEBase::set4Mom called " << std::endl ;
190 std::cout <<
"FATAL ERROR dummy P4PxPyPzEBase::set4Mom called " << std::endl ;
I4Momentum is an abstract base class providing 4-momentum behavior.
virtual double pz() const =0
z component of momentum
virtual double px() const =0
x component of momentum
virtual double e() const =0
energy
virtual double py() const =0
y component of momentum
virtual double et() const
transverse energy defined to be e*sin(theta)
virtual double cosPhi() const
cosinus phi
virtual double sinPhi() const
sinus phi
virtual double tanTh() const
tan theta
virtual double m() const
mass
virtual double p2() const
square of momentum magnitude
virtual double m2() const
mass squared
virtual double sinTh() const
sinus theta
virtual double phi() const
phi in [-pi,pi[
virtual std::ostream & dump(std::ostream &out) const
Print I4Momentum content.
virtual void set4Mom(const I4Momentum &theI4Mom)
set all 4-mom from another I4Momentum reference DUMMY IMPLEMENTATION
virtual double p() const
momentum magnitude
virtual double cotTh() const
cottan theta
virtual double pt() const
transverse momentum
virtual CLHEP::HepLorentzVector hlv() const
CLHEP HepLorentzVector.
virtual double eta() const
pseudo rapidity
virtual ~P4PxPyPzEBase()
virtual destructor needed by pool
virtual double iPt() const
inverse of transverse momentum
virtual const I4MomentumError * errors() const
Access to errors, if available; returns 0 if no errors.
virtual double cosTh() const
cosinus theta
virtual double rapidity() const
rapidity