BOSS 7.0.4
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtVector4R Class Reference

#include <EvtVector4R.hh>

Public Member Functions

 EvtVector4R ()
 
 EvtVector4R (double e, double px, double py, double pz)
 
void set (int i, double d)
 
void set (double e, double px, double py, double pz)
 
EvtVector4Roperator*= (double c)
 
EvtVector4Roperator/= (double c)
 
EvtVector4Roperator= (const EvtVector4R &v2)
 
EvtVector4Roperator+= (const EvtVector4R &v2)
 
EvtVector4Roperator-= (const EvtVector4R &v2)
 
double get (int i) const
 
double cont (const EvtVector4R &v4) const
 
double mass2 () const
 
double mass () const
 
void applyRotateEuler (double alpha, double beta, double gamma)
 
void applyBoostTo (const EvtVector4R &p4)
 
void applyBoostTo (const EvtVector3R &boost)
 
EvtVector4R cross (const EvtVector4R &v2)
 
double dot (const EvtVector4R &v2) const
 
double d3mag () const
 
double scalartripler3 (const EvtVector4R &p1, const EvtVector4R &p2, const EvtVector4R &p3) const
 
double dotr3 (const EvtVector4R &p1, const EvtVector4R &p2) const
 
double mag2r3 (const EvtVector4R &p1) const
 
double magr3 (const EvtVector4R &p1) const
 
double theta ()
 
double phi ()
 

Friends

EvtVector4R rotateEuler (const EvtVector4R &rs, double alpha, double beta, double gamma)
 
EvtVector4R boostTo (const EvtVector4R &rs, const EvtVector4R &p4)
 
EvtVector4R boostTo (const EvtVector4R &rs, const EvtVector3R &boost)
 
EvtVector4R operator* (double d, const EvtVector4R &v2)
 
EvtVector4R operator* (const EvtVector4R &v2, double d)
 
EvtVector4R operator/ (const EvtVector4R &v2, double d)
 
double operator* (const EvtVector4R &v1, const EvtVector4R &v2)
 
EvtVector4R operator+ (const EvtVector4R &v1, const EvtVector4R &v2)
 
EvtVector4R operator- (const EvtVector4R &v1, const EvtVector4R &v2)
 
std::ostream & operator<< (std::ostream &s, const EvtVector4R &v)
 

Detailed Description

Definition at line 29 of file EvtVector4R.hh.

Constructor & Destructor Documentation

◆ EvtVector4R() [1/2]

EvtVector4R::EvtVector4R ( )
inline

Definition at line 47 of file EvtVector4R.hh.

47{}

◆ EvtVector4R() [2/2]

EvtVector4R::EvtVector4R ( double  e,
double  px,
double  py,
double  pz 
)

Definition at line 34 of file EvtVector4R.cc.

34 {
35
36 v[0]=e; v[1]=p1; v[2]=p2; v[3]=p3;
37}

Member Function Documentation

◆ applyBoostTo() [1/2]

void EvtVector4R::applyBoostTo ( const EvtVector3R boost)

Definition at line 120 of file EvtVector4R.cc.

120 {
121
122 double bx,by,bz,gamma,b2;
123
124 bx=boost.get(0);
125 by=boost.get(1);
126 bz=boost.get(2);
127
128 double bxx=bx*bx;
129 double byy=by*by;
130 double bzz=bz*bz;
131
132 b2=bxx+byy+bzz;
133
134
135 if (b2==0.0){
136 return;
137 }
138
139 assert(b2<1.0);
140
141 gamma=1.0/sqrt(1-b2);
142
143
144 double gb2=(gamma-1.0)/b2;
145
146 double gb2xy=gb2*bx*by;
147 double gb2xz=gb2*bx*bz;
148 double gb2yz=gb2*by*bz;
149
150 double gbx=gamma*bx;
151 double gby=gamma*by;
152 double gbz=gamma*bz;
153
154 double e2=v[0];
155 double px2=v[1];
156 double py2=v[2];
157 double pz2=v[3];
158
159 v[0]=gamma*e2+gbx*px2+gby*py2+gbz*pz2;
160
161 v[1]=gbx*e2+gb2*bxx*px2+px2+gb2xy*py2+gb2xz*pz2;
162
163 v[2]=gby*e2+gb2*byy*py2+py2+gb2xy*px2+gb2yz*pz2;
164
165 v[3]=gbz*e2+gb2*bzz*pz2+pz2+gb2yz*py2+gb2xz*px2;
166
167 return;
168
169}
Double_t e2
double get(int i) const
Definition: EvtVector3R.hh:126

◆ applyBoostTo() [2/2]

void EvtVector4R::applyBoostTo ( const EvtVector4R p4)

Definition at line 108 of file EvtVector4R.cc.

108 {
109
110 double e=p4.get(0);
111
112 EvtVector3R boost(p4.get(1)/e,p4.get(2)/e,p4.get(3)/e);
113
114 applyBoostTo(boost);
115
116 return;
117
118}
double get(int i) const
Definition: EvtVector4R.hh:179
void applyBoostTo(const EvtVector4R &p4)
Definition: EvtVector4R.cc:108

Referenced by applyBoostTo(), and EvtPto3P::initDaughters().

◆ applyRotateEuler()

void EvtVector4R::applyRotateEuler ( double  alpha,
double  beta,
double  gamma 
)

Definition at line 81 of file EvtVector4R.cc.

81 {
82
83 double sp=sin(phi);
84 double st=sin(theta);
85 double sk=sin(ksi);
86 double cp=cos(phi);
87 double ct=cos(theta);
88 double ck=cos(ksi);
89
90 double x=( ck*ct*cp-sk*sp)*v[1]+( -sk*ct*cp-ck*sp)*v[2]+st*cp*v[3];
91 double y=( ck*ct*sp+sk*cp)*v[1]+(-sk*ct*sp+ck*cp)*v[2]+st*sp*v[3];
92 double z=-ck*st*v[1]+sk*st*v[2]+ct*v[3];
93
94 v[1]=x;
95 v[2]=y;
96 v[3]=z;
97
98}
Double_t x[10]
double sin(const BesAngle a)
double cos(const BesAngle a)
**********Class see also m_nmax DOUBLE PRECISION m_amel DOUBLE PRECISION m_x2 DOUBLE PRECISION m_alfinv DOUBLE PRECISION m_Xenph INTEGER m_KeyWtm INTEGER m_idyfs DOUBLE PRECISION m_zini DOUBLE PRECISION m_q2 DOUBLE PRECISION m_Wt_KF DOUBLE PRECISION m_WtCut INTEGER m_KFfin *COMMON c_KarLud $ !Input CMS energy[GeV] $ !CMS energy after beam spread beam strahlung[GeV] $ !Beam energy spread[GeV] $ !z boost due to beam spread $ !electron beam mass *ff pair spectrum $ !minimum v
Definition: KarLud.h:35
double phi()
Definition: EvtVector4R.cc:254
double theta()
Definition: EvtVector4R.cc:249

Referenced by EvtPto3P::initDaughters(), EvtGenKine::PhaseSpace(), and EvtGenKine::PhaseSpacePole().

◆ cont()

double EvtVector4R::cont ( const EvtVector4R v4) const
inline

Definition at line 163 of file EvtVector4R.hh.

163 {
164
165 return v[0]*v4.v[0]-v[1]*v4.v[1]-
166 v[2]*v4.v[2]-v[3]*v4.v[3];
167}

◆ cross()

EvtVector4R EvtVector4R::cross ( const EvtVector4R v2)

Definition at line 171 of file EvtVector4R.cc.

171 {
172
173 //Calcs the cross product. Added by djl on July 27, 1995.
174 //Modified for real vectros by ryd Aug 28-96
175
176 EvtVector4R temp;
177
178 temp.v[0] = 0.0;
179 temp.v[1] = v[2]*p2.v[3] - v[3]*p2.v[2];
180 temp.v[2] = v[3]*p2.v[1] - v[1]*p2.v[3];
181 temp.v[3] = v[1]*p2.v[2] - v[2]*p2.v[1];
182
183 return temp;
184}

Referenced by EvtAngSam3::decay(), EvtHAngSam3::decay(), EvtJTO3P::decay(), and EvtDecayAngleChi().

◆ d3mag()

◆ dot()

double EvtVector4R::dot ( const EvtVector4R v2) const

Definition at line 199 of file EvtVector4R.cc.

199 {
200
201 //Returns the dot product of the 3 momentum. Added by
202 //djl on July 27, 1995. for real!!!
203
204 double temp;
205
206 temp = v[1]*p2.v[1];
207 temp += v[2]*p2.v[2];
208 temp += v[3]*p2.v[3];
209
210 return temp;
211
212} //dot

Referenced by EvtHAngSam3::decay(), and EvtDecayAngleChi().

◆ dotr3()

double EvtVector4R::dotr3 ( const EvtVector4R p1,
const EvtVector4R p2 
) const

Definition at line 229 of file EvtVector4R.cc.

230{
231 return 1/mass2() * ((*this) * p1) * ((*this) * p2) - p1 * p2;
232}
double mass2() const
Definition: EvtVector4R.hh:116

Referenced by EvtDecayAnglePhi().

◆ get()

double EvtVector4R::get ( int  i) const
inline

◆ mag2r3()

double EvtVector4R::mag2r3 ( const EvtVector4R p1) const

Definition at line 236 of file EvtVector4R.cc.

237{
238 return Square((*this) * p1)/mass2() - p1.mass2();
239}

Referenced by EvtDecayAnglePhi(), and magr3().

◆ magr3()

double EvtVector4R::magr3 ( const EvtVector4R p1) const

Definition at line 242 of file EvtVector4R.cc.

243{
244 return sqrt(mag2r3(p1));
245}
double mag2r3(const EvtVector4R &p1) const
Definition: EvtVector4R.cc:236

◆ mass()

◆ mass2()

◆ operator*=()

EvtVector4R & EvtVector4R::operator*= ( double  c)
inline

Definition at line 136 of file EvtVector4R.hh.

136 {
137
138 v[0]*=c;
139 v[1]*=c;
140 v[2]*=c;
141 v[3]*=c;
142
143 return *this;
144}

◆ operator+=()

EvtVector4R & EvtVector4R::operator+= ( const EvtVector4R v2)
inline

Definition at line 96 of file EvtVector4R.hh.

96 {
97
98 v[0]+=v2.v[0];
99 v[1]+=v2.v[1];
100 v[2]+=v2.v[2];
101 v[3]+=v2.v[3];
102
103 return *this;
104}

◆ operator-=()

EvtVector4R & EvtVector4R::operator-= ( const EvtVector4R v2)
inline

Definition at line 106 of file EvtVector4R.hh.

106 {
107
108 v[0]-=v2.v[0];
109 v[1]-=v2.v[1];
110 v[2]-=v2.v[2];
111 v[3]-=v2.v[3];
112
113 return *this;
114}

◆ operator/=()

EvtVector4R & EvtVector4R::operator/= ( double  c)
inline

Definition at line 146 of file EvtVector4R.hh.

146 {
147
148 double cinv=1.0/c;
149 v[0]*=cinv;
150 v[1]*=cinv;
151 v[2]*=cinv;
152 v[3]*=cinv;
153
154 return *this;
155}

◆ operator=()

EvtVector4R & EvtVector4R::operator= ( const EvtVector4R v2)
inline

Definition at line 86 of file EvtVector4R.hh.

86 {
87
88 v[0]=v2.v[0];
89 v[1]=v2.v[1];
90 v[2]=v2.v[2];
91 v[3]=v2.v[3];
92
93 return *this;
94}

◆ phi()

double EvtVector4R::phi ( )

Definition at line 254 of file EvtVector4R.cc.

254 {
255 return (v[1]==0 && v[2]==0)?0: atan2(v[2],v[1]);
256}

Referenced by applyRotateEuler().

◆ scalartripler3()

double EvtVector4R::scalartripler3 ( const EvtVector4R p1,
const EvtVector4R p2,
const EvtVector4R p3 
) const

Definition at line 217 of file EvtVector4R.cc.

219{
220 EvtVector4C lc=dual(directProd(*this, p1)).cont2(p2);
221 EvtVector4R l(real(lc.get(0)), real(lc.get(1)), real(lc.get(2)),
222 real(lc.get(3)));
223
224 return -1.0/mass() * (l * p3);
225}
Evt3Rank3C directProd(const EvtVector3C &c1, const EvtVector3C &c2, const EvtVector3C &c3)
EvtTensor4C dual(const EvtTensor4C &t2)
Definition: EvtTensor4C.cc:379
EvtVector4C cont2(const EvtVector4C &v4) const
Definition: EvtTensor4C.cc:474
const EvtComplex & get(int) const
Definition: EvtVector4C.hh:131
double mass() const
Definition: EvtVector4R.cc:39

Referenced by EvtDecayAnglePhi().

◆ set() [1/2]

void EvtVector4R::set ( double  e,
double  px,
double  py,
double  pz 
)
inline

Definition at line 188 of file EvtVector4R.hh.

188 {
189
190 v[0]=e;
191 v[1]=p1;
192 v[2]=p2;
193 v[3]=p3;
194}

◆ set() [2/2]

void EvtVector4R::set ( int  i,
double  d 
)
inline

Definition at line 183 of file EvtVector4R.hh.

183 {
184
185 v[i]=d;
186}

Referenced by EvtbTosllScalarAmp::CalcAmp(), EvtbTosllVectorAmp::CalcAmp(), EvtSemiLeptonicBaryonAmp::CalcAmp(), EvtSemiLeptonicTensorAmp::CalcAmp(), EvtSemiLeptonicVectorAmp::CalcAmp(), EvtbTosllAmp::CalcMaxProb(), EvtSemiLeptonicAmp::CalcMaxProb(), EvtBHadronic::decay(), EvtBTo3piCP::decay(), EvtBToKpipiCP::decay(), EvtCBTo3piMPP::decay(), EvtCBTo3piP00::decay(), EvtDDalitz::decay(), EvtHelPPJ::decay(), EvtJetSet::decay(), EvtJscont::decay(), EvtKstarnunu::decay(), EvtLunda::decay(), EvtLundCharm::decay(), EvtPhokhara::decay(), EvtPhokhara_4pi::decay(), EvtPhokhara_K0K0::decay(), EvtPhokhara_KK::decay(), EvtPhokhara_LLB::decay(), EvtPhokhara_nnbar::decay(), EvtPhokhara_pi0pi0pipi::decay(), EvtPhokhara_pipi::decay(), EvtPhokhara_pipieta::decay(), EvtPhokhara_pipipi0::decay(), EvtPhokhara_ppbar::decay(), EvtPycont::decay(), EvtPyGaGa::decay(), EvtPythia::decay(), EvtSingleParticle::decay(), EvtSingleParticle2::decay(), EvtSinglePoint::decay(), EvtSll::decay(), EvtSLN::decay(), EvtTauola::decay(), EvtTVSPwave::decay(), EvtVSPPwave::decay(), EvtVub::decay(), EvtVubHybrid::decay(), EvtVubNLO::decay(), EvtPHOTOS::doRadCorr(), EvtGen::generateEvent(), EvtParticle::get4Pos(), EvtConExc::hadron_angle_sampling(), EvtRexc::hadron_angle_sampling(), EvtHelSys::Helrotate(), EvtLambdac2pKpi::init(), EvtTrackGen::init(), EvtPto3P::initDaughters(), EvtGenKine::PhaseSpace(), EvtGenKine::PhaseSpacePole(), EvtParticle::setp(), EvtConExc::SetP4(), and EvtConExc::SetP4Rvalue().

◆ theta()

double EvtVector4R::theta ( )

Definition at line 249 of file EvtVector4R.cc.

249 {
250 return (v[1]==0 && v[2]==0 && v[3]==0 )?0: atan2(sqrt(v[1]*v[1]+v[2]*v[2]),v[3]);
251}

Referenced by EvtRexc::angularSampling(), EvtConExc::angularSampling(), applyRotateEuler(), EvtAngSamLab::decay(), and EvtConExc::photonSampling().

Friends And Related Function Documentation

◆ boostTo [1/2]

EvtVector4R boostTo ( const EvtVector4R rs,
const EvtVector3R boost 
)
friend

Definition at line 70 of file EvtVector4R.cc.

71 {
72
73 EvtVector4R tmp(rs);
74 tmp.applyBoostTo(boost);
75 return tmp;
76
77}

◆ boostTo [2/2]

EvtVector4R boostTo ( const EvtVector4R rs,
const EvtVector4R p4 
)
friend

Definition at line 61 of file EvtVector4R.cc.

62 {
63
64 EvtVector4R tmp(rs);
65 tmp.applyBoostTo(p4);
66 return tmp;
67
68}

◆ operator* [1/3]

double operator* ( const EvtVector4R v1,
const EvtVector4R v2 
)
friend

Definition at line 157 of file EvtVector4R.hh.

157 {
158
159 return v1.v[0]*v2.v[0]-v1.v[1]*v2.v[1]-
160 v1.v[2]*v2.v[2]-v1.v[3]*v2.v[3];
161}

◆ operator* [2/3]

EvtVector4R operator* ( const EvtVector4R v2,
double  d 
)
friend

Definition at line 126 of file EvtVector4R.hh.

126 {
127
128 return EvtVector4R(v2)*=c;
129}

◆ operator* [3/3]

EvtVector4R operator* ( double  d,
const EvtVector4R v2 
)
friend

Definition at line 121 of file EvtVector4R.hh.

121 {
122
123 return EvtVector4R(v2)*=c;
124}

◆ operator+

EvtVector4R operator+ ( const EvtVector4R v1,
const EvtVector4R v2 
)
friend

Definition at line 174 of file EvtVector4R.hh.

174 {
175
176 return EvtVector4R(v1)+=v2;
177}

◆ operator-

EvtVector4R operator- ( const EvtVector4R v1,
const EvtVector4R v2 
)
friend

Definition at line 169 of file EvtVector4R.hh.

169 {
170
171 return EvtVector4R(v1)-=v2;
172}

◆ operator/

EvtVector4R operator/ ( const EvtVector4R v2,
double  d 
)
friend

Definition at line 131 of file EvtVector4R.hh.

131 {
132
133 return EvtVector4R(v2)/=c;
134}

◆ operator<<

std::ostream & operator<< ( std::ostream &  s,
const EvtVector4R v 
)
friend

◆ rotateEuler

EvtVector4R rotateEuler ( const EvtVector4R rs,
double  alpha,
double  beta,
double  gamma 
)
friend

Definition at line 52 of file EvtVector4R.cc.

53 {
54
55 EvtVector4R tmp(rs);
56 tmp.applyRotateEuler(alpha,beta,gamma);
57 return tmp;
58
59}
const double alpha

The documentation for this class was generated from the following files: