BOSS 7.1.2
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}
double p1[4]
double p2[4]
double double * p3
Definition qcdloop1.h:76

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

◆ 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}
void applyBoostTo(const EvtVector4R &p4)
double double double * p4
Definition qcdloop1.h:77

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 sin(const BesAngle a)
Definition BesAngle.h:210
double cos(const BesAngle a)
Definition BesAngle.h:213
Double_t x[10]
**********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()
double theta()
double y[1000]

Referenced by EvtPto3P::initDaughters().

◆ 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(), EvtDecayAngleChi(), EvtmyEulerAngles::EvtmyEulerAngles(), EvtmyEulerAngles::EvtmyEulerAngles(), EvtmyEulerAngles::getphi(), and EvtmyEulerAngles::getpsi().

◆ 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(), EvtDecayAngleChi(), EvtmyEulerAngles::getphi(), EvtmyEulerAngles::getpsi(), and EvtmyEulerAngles::gettheta().

◆ 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

Referenced by EvtDecayAnglePhi().

◆ get()

double EvtVector4R::get ( int i) const
inline

Definition at line 179 of file EvtVector4R.hh.

179 {
180 return v[i];
181}

Referenced by EvtMHelAmp::amplitude(), AngularSam::amps(), EvtHelSys::Angles(), EvtTensor4C::cont1(), EvtTensor4C::cont2(), EvtAngH2::decay(), EvtAngSam3::decay(), EvtBody3::decay(), EvtBsquark::decay(), EvtBtoXsll::decay(), EvtConExc::decay(), EvtD0ToKKpipi::decay(), EvtD0ToKpiEtap::decay(), EvtD0ToKpipi0::decay(), EvtD0ToKpipi0pi0::decay(), EvtD0ToKpipipi::decay(), EvtD0ToKSKppimpi0::decay(), EvtD0ToKSLKK::decay(), EvtD0ToKSpi0eta::decay(), EvtD0ToKSpi0pi0::decay(), EvtD0ToKSpi0pi0pi0::decay(), EvtD0ToKSpipipi0pi0::decay(), EvtD0TopipiEta::decay(), EvtDsToEta3pi::decay(), EvtDsToEtapi2pi0::decay(), EvtDsToEtapipi0::decay(), EvtDsToEtappipi0::decay(), EvtDsToKKpi::decay(), EvtDsToKKpipi0::decay(), EvtDsToKKpipipi::decay(), EvtDsToKpipi::decay(), EvtDsToKpPipPimPi0::decay(), EvtDsToKSKmPipPip::decay(), EvtDsToKSKpi0::decay(), EvtDsToKSKpPipPim::decay(), EvtDsToKSKSpi::decay(), EvtDsToKSpipi0::decay(), EvtDsTopipi0pi0::decay(), EvtDsTopipipipi0pi0::decay(), EvtDsToPipPipPimPi0::decay(), EvtDToKKpi::decay(), EvtDToKmPipPipPi0::decay(), EvtDToKppipi::decay(), EvtDToKppipipi0::decay(), EvtDToKSKmpippip::decay(), EvtDToKSKSK::decay(), EvtDToKSKSpi::decay(), EvtDToKSpieta::decay(), EvtDToKSpipi0pi0::decay(), EvtDToKSpipipi::decay(), EvtDTopiEtaEta::decay(), EvtDTopipi0Eta::decay(), EvtDToPiPi0Etap::decay(), EvtDTopipi0pi0::decay(), EvtEtaDalitz::decay(), EvtFDC::decay(), EvtFlatQ2::decay(), EvtHAngSam3::decay(), EvtHelPPJ::decay(), EvtJ2BB1::decay(), EvtJetSet::decay(), EvtJTO3P::decay(), EvtKstarstargamma::decay(), EvtLambdaP_BarGamma::decay(), EvtLNuGamma::decay(), EvtLunda::decay(), EvtLundCharm::decay(), EvtMBody3::decay(), EvtOmegaDalitz::decay(), EvtOpenCharm::decay(), EvtSingleParticle2::decay(), EvtSingleParticle::decay(), EvtTauola::decay(), EvtTVSPwave::decay(), EvtVectorIsr::decay(), EvtVVSPwave::decay(), EvtConExc::difgamXs(), EvtPHOTOS::doRadCorr(), EvtPhotonParticle::epsParentPhoton(), EvtAmpA1(), EvtAmpA2(), EvtEulerAngles::EvtEulerAngles(), EvtmyEulerAngles::EvtmyEulerAngles(), EvtVector4C::EvtVector4C(), EvtConExc::findMaxXS(), EvtConExc::gamHXSection(), EvtGen::generateEvent(), EvtConExc::hadron_angle_sampling(), EvtRexc::hadron_angle_sampling(), EvtPto3P::initDaughters(), operator<<(), EvtFDC::setEvtMomentum(), and EvtSVVHelAmp::SVVHel().

◆ 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

◆ 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)
EvtVector4C cont2(const EvtVector4C &v4) const
const EvtComplex & get(int) const
double mass() const

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]

◆ 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 EvtConExc::angularSampling(), EvtRexc::angularSampling(), applyRotateEuler(), EvtAngSamLab::decay(), and EvtConExc::photonSampling().

Friends And Related Symbol 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: