15 const double theM = this->
m();
23 const double theM=this->
m();
24 const double theE=this->
e();
33 double eSign = (theE >= 0) ? +1 : -1;
34 return eSign*std::sqrt(theE*theE-theM*theM);
48 const double theM=this->
m();
49 const double theE=this->
e();
51 return theE*theE-theM*theM;
56 return std::cos(this->
phi());
61 return std::sin(this->
phi());
68 double theEta=this->
eta();
69 if ( std::abs(theEta)>710) {
70 theEta=theEta>0 ? 710 : -710;
71 return 1./std::sinh(theEta);
74 return 1./this->
cotTh();
79 return std::sinh(this->
eta());
84 return std::tanh(this->
eta());
91 double aEta=std::abs(this->
eta());
96 return 1./std::cosh(aEta);
103 return this->
p()*this->
sinTh();
108 return this->
e()*this->
sinTh();
112 {
return 1./this->
pt();
117 const double theE=this->
e();
118 const double thePz=this->
pz();
119 return 0.5*std::log((theE+thePz)/(theE-thePz));
131 {
return this->
p()*this->
cosTh();
137 const double theCosTh=this->
cosTh();
144 const double theP=this->
p();
146 const double theSinTh=std::sqrt(1.-theCosTh*theCosTh);
147 const double thePt=theP*theSinTh;
148 const double thePx=thePt*this->
cosPhi();
149 const double thePy=thePt*this->
sinPhi();
150 const double thePz=theP*theCosTh;
153 return CLHEP::HepLorentzVector(thePx,thePy,thePz,this->
e());
162 std::stringstream outx;
163 outx <<
"[e,eta,phi,m] ="
164 << std::right << std::scientific << std::setprecision(8)
165 << std::setw(16) << this->
e()
166 << std::setw(16) << this->
eta()
167 << std::setw(16) << this->
phi()
168 << std::setw(16) << this->
m();
183 std::cout <<
"FATAL ERROR dummy P4EEtaPhiMBase::set4Mom called " << std::endl; ;
189 std::cout <<
"FATAL ERROR dummy P4EEtaPhiMBase::set4Mom called " << std::endl ;
196 std::cout <<
"FATAL ERROR dummy P4EEtaPhiMBase::set4Mom called " << std::endl ;
I4Momentum is an abstract base class providing 4-momentum behavior.
virtual double m() const =0
mass
virtual double phi() const =0
phi in [-pi,pi[
virtual double eta() const =0
pseudo rapidity
virtual double e() const =0
energy
virtual CLHEP::HepLorentzVector hlv() const
HepLorentzVector Special implementation from Frank Paige : if negative energy, points in opposite dir...
virtual double m2() const
mass squared
virtual double cotTh() const
cottan theta
virtual const I4MomentumError * errors() const
Access to errors, if available; returns 0 if no errors.
virtual double rapidity() const
rapidity
virtual double p2() const
square of momentum magnitude
virtual std::ostream & dump(std::ostream &out=std::cout) const
Print I4Momentum content.
virtual double iPt() const
inverse of transverse momentum
virtual double pz() const
z component of momentum
virtual void set4Mom(const I4Momentum &theI4Mom)
set all 4-mom from another I4Momentum reference DUMMY IMPLEMENTATION
virtual double py() const
y component of momentum
virtual double px() const
x component of momentum
virtual double cosPhi() const
cosinus phi
virtual double p() const
magnitude of 3-momentum.
virtual double sinTh() const
sinus theta
virtual double pt() const
transverse momentum
virtual double sinPhi() const
sinus phi
virtual ~P4EEtaPhiMBase()
virtual destructor needed by pool
virtual double et() const
transverse energy defined to be e*sin(theta)
virtual double cosTh() const
cosinus theta
virtual double tanTh() const
tan theta