ATLAS Offline Software
Public Types | Public Member Functions | Protected Attributes | List of all members
P4PtEtaPhiM Class Reference

#include <P4PtEtaPhiM.h>

Inheritance diagram for P4PtEtaPhiM:
Collaboration diagram for P4PtEtaPhiM:

Public Types

enum  Kind {
  P4EETAPHIM, P4IPTCOTTHPHIM, P4PTETAPHIM, P4PXPYPZE,
  UNKNOWN
}
 

Public Member Functions

 P4PtEtaPhiM (const double pt, const double eta, const double phi, const double m)
 constructor with all data members More...
 
 P4PtEtaPhiM ()
 default constructor More...
 
 P4PtEtaPhiM (const CLHEP::HepLorentzVector &theHlv)
 constructor from hlv to allow conversion from hlv More...
 
 P4PtEtaPhiM (const I4Momentum &theI4M)
 constructor from any 4Momentum reference More...
 
 P4PtEtaPhiM (const I4Momentum *const pI4M)
 constructor from any 4Momentum pointer More...
 
virtual double pt () const
 get pt data member More...
 
virtual double eta () const
 get eta data member More...
 
virtual double phi () const
 get phi data member More...
 
virtual double m () const
 get mass data member More...
 
virtual void setPt (double thePt)
 set pt data member More...
 
virtual void setEta (double theEta)
 set eta data member More...
 
virtual void setPhi (double thePhi)
 set phi data member More...
 
virtual void setM (double theM)
 set mass data member More...
 
virtual void set4Mom (const I4Momentum &theI4Mom)
 set all 4-mom from another I4Momentum reference
More...
 
virtual void set4Mom (const I4Momentum *const theI4Mom)
 set all 4-mom from another I4Momentum pointer
More...
 
virtual void set4Mom (const CLHEP::HepLorentzVector &theHlv)
 set all 4-mom from a CLHEP HepLorentzVector More...
 
virtual const I4MomentumErrorerrors () const
 Access to errors, if available; returns 0 if no errors. More...
 
virtual double px () const
 x component of momentum More...
 
virtual double py () const
 y component of momentum More...
 
virtual double pz () const
 z component of momentum More...
 
virtual double e () const
 energy More...
 
virtual double p () const
 magnitude of 3-momentum. More...
 
virtual double p2 () const
 square of momentum magnitude More...
 
virtual double m2 () const
 mass squared More...
 
virtual double et () const
 transverse energy defined to be e*sin(theta) More...
 
virtual double iPt () const
 inverse of transverse momentum More...
 
virtual double rapidity () const
 rapidity More...
 
virtual double cosPhi () const
 cosinus phi More...
 
virtual double sinPhi () const
 sinus phi More...
 
virtual double cotTh () const
 cottan theta More...
 
virtual double cosTh () const
 cosinus theta More...
 
virtual double sinTh () const
 sinus theta More...
 
virtual double tanTh () const
 tan theta More...
 
virtual CLHEP::HepLorentzVector hlv () const
 HepLorentzVector Special implementation from Frank Paige : if negative energy, points in opposite direction but eta and phi still the same
More...
 
I4Momentum::Kind kind () const
 tells what kind of P4XYZT this is More...
 
virtual std::ostream & dump (std::ostream &out) const
 Print I4Momentum content. More...
 

Protected Attributes

double m_pt
 
double m_eta
 
double m_phi
 
double m_m
 

Detailed Description

P4PtEtaPhiM is a class with 4-momentum behavior, for which Pt, Eta, Phi and M are data members.

Author
Olga Igonkina olya@.nosp@m.cern.nosp@m..ch

Definition at line 24 of file P4PtEtaPhiM.h.

Member Enumeration Documentation

◆ Kind

enum I4Momentum::Kind
inherited
Enumerator
P4EETAPHIM 
P4IPTCOTTHPHIM 
P4PTETAPHIM 
P4PXPYPZE 
UNKNOWN 

Definition at line 33 of file I4Momentum.h.

Constructor & Destructor Documentation

◆ P4PtEtaPhiM() [1/5]

P4PtEtaPhiM::P4PtEtaPhiM ( const double  pt,
const double  eta,
const double  phi,
const double  m 
)
inline

constructor with all data members

Definition at line 29 of file P4PtEtaPhiM.h.

30  : m_pt(pt), m_eta(eta), m_phi(phi), m_m(m) {};

◆ P4PtEtaPhiM() [2/5]

P4PtEtaPhiM::P4PtEtaPhiM ( )
inline

default constructor

Definition at line 83 of file P4PtEtaPhiM.h.

83  :
84  P4PtEtaPhiMBase( ),
85  m_pt ( 0.*CLHEP::GeV ),
86  m_eta ( 0. ),
87  m_phi ( 0. ),
88  m_m ( 0.*CLHEP::GeV )
89 {}

◆ P4PtEtaPhiM() [3/5]

P4PtEtaPhiM::P4PtEtaPhiM ( const CLHEP::HepLorentzVector &  theHlv)
inline

constructor from hlv to allow conversion from hlv

Definition at line 91 of file P4PtEtaPhiM.h.

92 {
93  this->set4Mom(theHlv);
94 }

◆ P4PtEtaPhiM() [4/5]

P4PtEtaPhiM::P4PtEtaPhiM ( const I4Momentum theI4M)
inline

constructor from any 4Momentum reference

Definition at line 96 of file P4PtEtaPhiM.h.

97 {this->set4Mom(theI4Mom); }

◆ P4PtEtaPhiM() [5/5]

P4PtEtaPhiM::P4PtEtaPhiM ( const I4Momentum *const  pI4M)
inline

constructor from any 4Momentum pointer

Definition at line 99 of file P4PtEtaPhiM.h.

100 {this->set4Mom(*theI4Mom); }

Member Function Documentation

◆ cosPhi()

double P4PtEtaPhiMBase::cosPhi ( ) const
virtualinherited

cosinus phi

Implements I4Momentum.

Definition at line 55 of file P4PtEtaPhiMBase.cxx.

56 {
57  return std::cos(this->phi());
58 }

◆ cosTh()

double P4PtEtaPhiMBase::cosTh ( ) const
virtualinherited

cosinus theta

Implements I4Momentum.

Definition at line 70 of file P4PtEtaPhiMBase.cxx.

71 {
72  return std::tanh(this->eta());
73 }

◆ cotTh()

double P4PtEtaPhiMBase::cotTh ( ) const
virtualinherited

cottan theta

Implements I4Momentum.

Definition at line 65 of file P4PtEtaPhiMBase.cxx.

66 {
67  return std::sinh(this->eta());
68 }

◆ dump()

std::ostream & P4PtEtaPhiMBase::dump ( std::ostream &  out) const
virtualinherited

Print I4Momentum content.

Implements I4Momentum.

Definition at line 147 of file P4PtEtaPhiMBase.cxx.

148 {
149  std::stringstream outx;
150  outx << "[pt,eta,phi,m] ="
151  << std::right << std::scientific << std::setprecision(8)
152  << std::setw(16) << this->pt()
153  << std::setw(16) << this->eta()
154  << std::setw(16) << this->phi()
155  << std::setw(16) << this->m();
156  out<<outx.str();
157 
158  return out;
159 
160 }

◆ e()

double P4PtEtaPhiMBase::e ( ) const
virtualinherited

energy

Implements I4Momentum.

Definition at line 13 of file P4PtEtaPhiMBase.cxx.

14 {
15  const double theMass = this->m();
16  const double thePt = this->pt();
17  const double thePz = this->pz();
18 
19  //DR from Frank Paige
20  // if negative pt point in the opposite direction
21  // BUT eta and phi still the same !!!
22 
23  double eSign = (thePt >= 0.) ? +1. : -1.;
24  return eSign*std::sqrt(thePt*thePt + thePz*thePz + theMass*theMass);
25 }

◆ errors()

const I4MomentumError * P4PtEtaPhiM::errors ( ) const
virtual

Access to errors, if available; returns 0 if no errors.

Reimplemented from P4PtEtaPhiMBase.

Definition at line 7 of file P4PtEtaPhiM.cxx.

8 {
9  return 0;
10 }

◆ et()

double P4PtEtaPhiMBase::et ( ) const
virtualinherited

transverse energy defined to be e*sin(theta)

Implements I4Momentum.

Definition at line 101 of file P4PtEtaPhiMBase.cxx.

102  {
103  return this->e()*this->sinTh();
104  }

◆ eta()

double P4PtEtaPhiM::eta ( ) const
inlinevirtual

get eta data member

Implements I4Momentum.

Definition at line 106 of file P4PtEtaPhiM.h.

107 { return m_eta;}

◆ hlv()

CLHEP::HepLorentzVector P4PtEtaPhiMBase::hlv ( ) const
virtualinherited

HepLorentzVector Special implementation from Frank Paige : if negative energy, points in opposite direction but eta and phi still the same

Implements I4Momentum.

Definition at line 128 of file P4PtEtaPhiMBase.cxx.

129 {
130  //minimize the number of calculation and dereference
131  const double theM = this->m();
132  // note that pt can have negative sign : then it points in opposite direction but eta and phi are still on the same side
133  const double thePt = this->pt();
134 
135 
136  const double thePx = thePt*this->cosPhi();
137  const double thePy = thePt*this->sinPhi();
138 
139  const double thePz = thePt*this->cotTh();
140 
141  const double theE=std::sqrt(thePt*thePt+thePz*thePz+theM*theM);
142 
143 
144  return CLHEP::HepLorentzVector( thePx, thePy, thePz, theE );
145 }

◆ iPt()

double P4PtEtaPhiMBase::iPt ( ) const
virtualinherited

inverse of transverse momentum

Implements I4Momentum.

Definition at line 106 of file P4PtEtaPhiMBase.cxx.

107  { return 1./this->pt();
108  }

◆ kind()

I4Momentum::Kind P4PtEtaPhiMBase::kind ( ) const
inlinevirtualinherited

tells what kind of P4XYZT this is

Implements I4Momentum.

Definition at line 64 of file P4PtEtaPhiMBase.h.

64 { return I4Momentum::P4PTETAPHIM; };

◆ m()

double P4PtEtaPhiM::m ( ) const
inlinevirtual

get mass data member

Implements I4Momentum.

Definition at line 112 of file P4PtEtaPhiM.h.

113 { return m_m;}

◆ m2()

double P4PtEtaPhiMBase::m2 ( ) const
virtualinherited

mass squared

Implements I4Momentum.

Definition at line 50 of file P4PtEtaPhiMBase.cxx.

51 { const double theM=this->m();
52  return theM*theM;
53 }

◆ p()

double P4PtEtaPhiMBase::p ( ) const
virtualinherited

magnitude of 3-momentum.

Special implementation from Frank Paige : if negative energy p is negative but eta and phi still the same.

Implements I4Momentum.

Definition at line 27 of file P4PtEtaPhiMBase.cxx.

28 {
29  const double thePt = this->pt();
30  const double thePz = this->pz();
31 
32  //DR from Frank Paige
33  // if negative pt point in the opposite direction
34  // BUT eta and phi still the same !!!
35 
36  double eSign = (thePt >= 0.) ? +1. : -1.;
37  return eSign*std::sqrt(thePt*thePt + thePz*thePz);
38 }

◆ p2()

double P4PtEtaPhiMBase::p2 ( ) const
virtualinherited

square of momentum magnitude

Implements I4Momentum.

Definition at line 40 of file P4PtEtaPhiMBase.cxx.

41 {
42  /* This method has been implemented so as to give the same as would be obtained from pow((this->p()),2) with this->p() implemented according to Frank Paige's algorithm above. */
43 
44  const double thePt = this->pt();
45  const double thePz = this->pz();
46 
47  return thePt*thePt + thePz*thePz;
48 }

◆ phi()

double P4PtEtaPhiM::phi ( ) const
inlinevirtual

get phi data member

Implements I4Momentum.

Definition at line 109 of file P4PtEtaPhiM.h.

110 { return m_phi;}

◆ pt()

double P4PtEtaPhiM::pt ( ) const
inlinevirtual

get pt data member

Implements I4Momentum.

Definition at line 103 of file P4PtEtaPhiM.h.

104 { return m_pt;}

◆ px()

double P4PtEtaPhiMBase::px ( ) const
virtualinherited

x component of momentum

Implements I4Momentum.

Definition at line 117 of file P4PtEtaPhiMBase.cxx.

118  { return this->pt()*this->cosPhi();
119  }

◆ py()

double P4PtEtaPhiMBase::py ( ) const
virtualinherited

y component of momentum

Implements I4Momentum.

Definition at line 121 of file P4PtEtaPhiMBase.cxx.

122  { return this->pt()*this->sinPhi();
123  }

◆ pz()

double P4PtEtaPhiMBase::pz ( ) const
virtualinherited

z component of momentum

Implements I4Momentum.

Definition at line 125 of file P4PtEtaPhiMBase.cxx.

126 { return this->pt()*this->cotTh(); }

◆ rapidity()

double P4PtEtaPhiMBase::rapidity ( ) const
virtualinherited

rapidity

Implements I4Momentum.

Definition at line 110 of file P4PtEtaPhiMBase.cxx.

111  {
112  const double theE=this->e();
113  const double thePz=this->pz();
114  return 0.5*std::log((theE+thePz)/(theE-thePz));
115  }

◆ set4Mom() [1/3]

void P4PtEtaPhiM::set4Mom ( const CLHEP::HepLorentzVector &  theHlv)
inlinevirtual

set all 4-mom from a CLHEP HepLorentzVector

Reimplemented from P4PtEtaPhiMBase.

Definition at line 140 of file P4PtEtaPhiM.h.

141 {
142  m_pt=theHlv.perp();
143  m_eta=theHlv.eta();
144  //FIXME protect against negative energy
145  //assert(m_e >= 0,"P4PtEtaPhiM::set4Mom cannot have negative energy");
146  //assert(m_e >= 0);
147  // FIXME of the FIXME in fact it is not necessary to prtoect against negative energy
148  // and besides Seal assert does not work
149  // ASSERT( m_e >= 0 );
150  m_phi=theHlv.phi();
151  m_m=theHlv.m();
152 
153 
154 }

◆ set4Mom() [2/3]

void P4PtEtaPhiM::set4Mom ( const I4Momentum theI4Mom)
inlinevirtual

set all 4-mom from another I4Momentum reference

Reimplemented from P4PtEtaPhiMBase.

Definition at line 127 of file P4PtEtaPhiM.h.

128 {
129  m_pt=theI4Mom.pt();
130  m_eta=theI4Mom.eta();
131  m_phi=theI4Mom.phi();
132  m_m=theI4Mom.m();
133 }

◆ set4Mom() [3/3]

void P4PtEtaPhiM::set4Mom ( const I4Momentum *const  theI4Mom)
inlinevirtual

set all 4-mom from another I4Momentum pointer

Reimplemented from P4PtEtaPhiMBase.

Definition at line 135 of file P4PtEtaPhiM.h.

136 {
137  this->set4Mom(*theI4Mom);
138 }

◆ setEta()

void P4PtEtaPhiM::setEta ( double  theEta)
inlinevirtual

set eta data member

Definition at line 118 of file P4PtEtaPhiM.h.

119 { m_eta = theEta;}

◆ setM()

void P4PtEtaPhiM::setM ( double  theM)
inlinevirtual

set mass data member

Definition at line 124 of file P4PtEtaPhiM.h.

125 { m_m = theM;}

◆ setPhi()

void P4PtEtaPhiM::setPhi ( double  thePhi)
inlinevirtual

set phi data member

Definition at line 121 of file P4PtEtaPhiM.h.

122 { m_phi = thePhi;}

◆ setPt()

void P4PtEtaPhiM::setPt ( double  thePt)
inlinevirtual

set pt data member

Definition at line 115 of file P4PtEtaPhiM.h.

116 { m_pt = thePt;}

◆ sinPhi()

double P4PtEtaPhiMBase::sinPhi ( ) const
virtualinherited

sinus phi

Implements I4Momentum.

Definition at line 60 of file P4PtEtaPhiMBase.cxx.

61 {
62  return std::sin(this->phi());
63 }

◆ sinTh()

double P4PtEtaPhiMBase::sinTh ( ) const
virtualinherited

sinus theta

Implements I4Momentum.

Definition at line 75 of file P4PtEtaPhiMBase.cxx.

76 {
77  // avoid numeric overflow if very large eta
78 
79  double aEta=std::abs(this->eta());
80  if ( aEta>710) {
81  aEta=710;
82  }
83 
84  return 1./std::cosh(aEta);
85 }

◆ tanTh()

double P4PtEtaPhiMBase::tanTh ( ) const
virtualinherited

tan theta

Implements I4Momentum.

Definition at line 87 of file P4PtEtaPhiMBase.cxx.

88 {
89  // avoid numeric overflow if very large eta
90 
91  double theEta=this->eta();
92  if ( std::abs(theEta)>710) {
93  theEta=theEta>0 ? 710 : -710;
94  return 1./std::sinh(theEta);
95  }
96 
97  return 1./std::sinh(this->eta());
98 }

Member Data Documentation

◆ m_eta

double P4PtEtaPhiM::m_eta
protected

Definition at line 77 of file P4PtEtaPhiM.h.

◆ m_m

double P4PtEtaPhiM::m_m
protected

Definition at line 79 of file P4PtEtaPhiM.h.

◆ m_phi

double P4PtEtaPhiM::m_phi
protected

Definition at line 78 of file P4PtEtaPhiM.h.

◆ m_pt

double P4PtEtaPhiM::m_pt
protected

Definition at line 76 of file P4PtEtaPhiM.h.


The documentation for this class was generated from the following files:
I4Momentum::P4IPTCOTTHPHIM
@ P4IPTCOTTHPHIM
Definition: I4Momentum.h:33
P4PtEtaPhiMBase::e
virtual double e() const
energy
Definition: P4PtEtaPhiMBase.cxx:13
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:71
P4PtEtaPhiMBase::cotTh
virtual double cotTh() const
cottan theta
Definition: P4PtEtaPhiMBase.cxx:65
drawFromPickle.cos
cos
Definition: drawFromPickle.py:36
P4PtEtaPhiM::m_eta
double m_eta
Definition: P4PtEtaPhiM.h:77
I4Momentum::pt
virtual double pt() const =0
transverse momentum
P4PtEtaPhiM::m_m
double m_m
Definition: P4PtEtaPhiM.h:79
P4PtEtaPhiM::m_phi
double m_phi
Definition: P4PtEtaPhiM.h:78
P4PtEtaPhiMBase::cosPhi
virtual double cosPhi() const
cosinus phi
Definition: P4PtEtaPhiMBase.cxx:55
P4PtEtaPhiM::phi
virtual double phi() const
get phi data member
Definition: P4PtEtaPhiM.h:109
P4PtEtaPhiM::set4Mom
virtual void set4Mom(const I4Momentum &theI4Mom)
set all 4-mom from another I4Momentum reference
Definition: P4PtEtaPhiM.h:127
I4Momentum::eta
virtual double eta() const =0
pseudo rapidity
P4PtEtaPhiM::m
virtual double m() const
get mass data member
Definition: P4PtEtaPhiM.h:112
P4PtEtaPhiM::pt
virtual double pt() const
get pt data member
Definition: P4PtEtaPhiM.h:103
I4Momentum::phi
virtual double phi() const =0
phi in [-pi,pi[
I4Momentum::P4PTETAPHIM
@ P4PTETAPHIM
Definition: I4Momentum.h:33
P4PtEtaPhiMBase::sinPhi
virtual double sinPhi() const
sinus phi
Definition: P4PtEtaPhiMBase.cxx:60
P4PtEtaPhiMBase
Definition: P4PtEtaPhiMBase.h:26
I4Momentum::UNKNOWN
@ UNKNOWN
Definition: I4Momentum.h:33
P4PtEtaPhiM::eta
virtual double eta() const
get eta data member
Definition: P4PtEtaPhiM.h:106
P4PtEtaPhiMBase::pz
virtual double pz() const
z component of momentum
Definition: P4PtEtaPhiMBase.cxx:125
I4Momentum::m
virtual double m() const =0
mass
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
GeV
#define GeV
Definition: CaloTransverseBalanceVecMon.cxx:30
I4Momentum::P4EETAPHIM
@ P4EETAPHIM
Definition: I4Momentum.h:33
P4PtEtaPhiMBase::sinTh
virtual double sinTh() const
sinus theta
Definition: P4PtEtaPhiMBase.cxx:75
P4PtEtaPhiM::m_pt
double m_pt
Definition: P4PtEtaPhiM.h:76
I4Momentum::P4PXPYPZE
@ P4PXPYPZE
Definition: I4Momentum.h:33