BOSS 7.0.1
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtDiracSpinor.cc File Reference
#include "EvtGenBase/EvtPatches.hh"
#include <math.h>
#include <assert.h>
#include "EvtGenBase/EvtDiracSpinor.hh"
#include "EvtGenBase/EvtGammaMatrix.hh"
#include "EvtGenBase/EvtComplex.hh"
#include "EvtGenBase/EvtReport.hh"
#include "EvtGenBase/EvtVector4C.hh"
#include "EvtGenBase/EvtTensor4C.hh"

Go to the source code of this file.

Functions

ostream & operator<< (ostream &s, const EvtDiracSpinor &sp)
 
EvtDiracSpinor rotateEuler (const EvtDiracSpinor &sp, double alpha, double beta, double gamma)
 
EvtDiracSpinor boostTo (const EvtDiracSpinor &sp, const EvtVector4R p4)
 
EvtDiracSpinor boostTo (const EvtDiracSpinor &sp, const EvtVector3R boost)
 
EvtVector4C EvtLeptonVACurrent (const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
 
EvtVector4C EvtLeptonVCurrent (const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
 
EvtVector4C EvtLeptonACurrent (const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
 
EvtComplex EvtLeptonSCurrent (const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
 
EvtComplex EvtLeptonPCurrent (const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
 
EvtTensor4C EvtLeptonTCurrent (const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
 
EvtTensor4C EvtLeptonTg5Current (const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
 
EvtDiracSpinor operator* (const EvtComplex &c, const EvtDiracSpinor &d)
 

Function Documentation

◆ boostTo() [1/2]

EvtDiracSpinor boostTo ( const EvtDiracSpinor sp,
const EvtVector3R  boost 
)

Definition at line 84 of file EvtDiracSpinor.cc.

85 {
86
87 EvtDiracSpinor tmp(sp);
88 tmp.applyBoostTo(boost);
89 return tmp;
90
91}

◆ boostTo() [2/2]

◆ EvtLeptonACurrent()

EvtVector4C EvtLeptonACurrent ( const EvtDiracSpinor d,
const EvtDiracSpinor dp 
)

Definition at line 236 of file EvtDiracSpinor.cc.

236 {
237
238 EvtVector4C temp;
239
240 EvtGammaMatrix mat;
241
242 // no conjugate here; done in the multiplication
243 // yes this is stupid and fooled me to for a long time (ryd)
244
246 temp.set(0,d*(mat*dp));
247
249 temp.set(1,d*(mat*dp));
250
252 temp.set(2,d*(mat*dp));
253
255 temp.set(3,d*(mat*dp));
256
257 return temp;
258}
static const EvtGammaMatrix & va1()
static const EvtGammaMatrix & v0()
static const EvtGammaMatrix & va3()
static const EvtGammaMatrix & v2()
static const EvtGammaMatrix & va0()
static const EvtGammaMatrix & va2()
static const EvtGammaMatrix & v1()
static const EvtGammaMatrix & v3()
void set(int, const EvtComplex &)
Definition: EvtVector4C.hh:109

Referenced by EvtbTosllScalarAmp::CalcAmp(), and EvtbTosllVectorAmp::CalcAmp().

◆ EvtLeptonPCurrent()

EvtComplex EvtLeptonPCurrent ( const EvtDiracSpinor d,
const EvtDiracSpinor dp 
)

Definition at line 272 of file EvtDiracSpinor.cc.

272 {
273
274 EvtComplex temp;
275
276 // no conjugate here; done in the multiplication
277 // yes this is stupid and fooled me to for a long time (ryd)
279 temp=d*(m*dp);
280
281 return temp;
282}
static const EvtGammaMatrix & g0()
static const EvtGammaMatrix & g5()

Referenced by EvtHypNonLepton::calcAmp().

◆ EvtLeptonSCurrent()

EvtComplex EvtLeptonSCurrent ( const EvtDiracSpinor d,
const EvtDiracSpinor dp 
)

Definition at line 260 of file EvtDiracSpinor.cc.

260 {
261
262 EvtComplex temp;
263
264 // no conjugate here; done in the multiplication
265 // yes this is stupid and fooled me to for a long time (ryd)
266
267 temp=d*(EvtGammaMatrix::g0()*dp);
268
269 return temp;
270}

Referenced by EvtHypNonLepton::calcAmp().

◆ EvtLeptonTCurrent()

EvtTensor4C EvtLeptonTCurrent ( const EvtDiracSpinor d,
const EvtDiracSpinor dp 
)

Definition at line 284 of file EvtDiracSpinor.cc.

284 {
285
286 EvtTensor4C temp;
287 temp.zero();
288 EvtComplex i2(0,0.5);
289
290 static EvtGammaMatrix mat01=EvtGammaMatrix::g0()*
293 static EvtGammaMatrix mat02=EvtGammaMatrix::g0()*
296 static EvtGammaMatrix mat03=EvtGammaMatrix::g0()*
299 static EvtGammaMatrix mat12=EvtGammaMatrix::g0()*
302 static EvtGammaMatrix mat13=EvtGammaMatrix::g0()*
305 static EvtGammaMatrix mat23=EvtGammaMatrix::g0()*
308
309
310 temp.set(0,1,i2*(d*(mat01*dp)));
311 temp.set(1,0,-temp.get(0,1));
312
313 temp.set(0,2,i2*(d*(mat02*dp)));
314 temp.set(2,0,-temp.get(0,2));
315
316 temp.set(0,3,i2*(d*(mat03*dp)));
317 temp.set(3,0,-temp.get(0,3));
318
319 temp.set(1,2,i2*(d*(mat12*dp)));
320 temp.set(2,1,-temp.get(1,2));
321
322 temp.set(1,3,i2*(d*(mat13*dp)));
323 temp.set(3,1,-temp.get(1,3));
324
325 temp.set(2,3,i2*(d*(mat23*dp)));
326 temp.set(3,2,-temp.get(2,3));
327
328 return temp;
329}
static const EvtGammaMatrix & g2()
static const EvtGammaMatrix & g1()
static const EvtGammaMatrix & g3()
void set(int i, int j, const EvtComplex &c)
Definition: EvtTensor4C.hh:122
const EvtComplex & get(int i, int j) const
Definition: EvtTensor4C.hh:126

◆ EvtLeptonTg5Current()

EvtTensor4C EvtLeptonTg5Current ( const EvtDiracSpinor d,
const EvtDiracSpinor dp 
)

Definition at line 331 of file EvtDiracSpinor.cc.

331 {//sigma^{mu,nu} gamma_5
332
333 EvtTensor4C temp;
334 temp.zero();
335 EvtComplex i2(0,0.5);
336
337 static EvtGammaMatrix mat01=EvtGammaMatrix::g0()*
340 static EvtGammaMatrix mat02=EvtGammaMatrix::g0()*
343 static EvtGammaMatrix mat03=EvtGammaMatrix::g0()*
346 static EvtGammaMatrix mat12=EvtGammaMatrix::g0()*
349 static EvtGammaMatrix mat13=EvtGammaMatrix::g0()*
352 static EvtGammaMatrix mat23=EvtGammaMatrix::g0()*
355
356
357 temp.set(0,1,i2*(d*(mat01*dp)));
358 temp.set(1,0,-temp.get(0,1));
359
360 temp.set(0,2,i2*(d*(mat02*dp)));
361 temp.set(2,0,-temp.get(0,2));
362
363 temp.set(0,3,i2*(d*(mat03*dp)));
364 temp.set(3,0,-temp.get(0,3));
365
366 temp.set(1,2,i2*(d*(mat12*dp)));
367 temp.set(2,1,-temp.get(1,2));
368
369 temp.set(1,3,i2*(d*(mat13*dp)));
370 temp.set(3,1,-temp.get(1,3));
371
372 temp.set(2,3,i2*(d*(mat23*dp)));
373 temp.set(3,2,-temp.get(2,3));
374
375 return temp;
376}

Referenced by EvtEDM::decay().

◆ EvtLeptonVACurrent()

EvtVector4C EvtLeptonVACurrent ( const EvtDiracSpinor d,
const EvtDiracSpinor dp 
)

Definition at line 187 of file EvtDiracSpinor.cc.

187 {
188
189 //Old code; below is a new specialized code that does it more efficiently.
190 //EvtGammaMatrix mat;
191 //EvtVector4C temp;
192 //mat.va0();
193 //temp.set(0,d*(mat*dp));
194 //mat.va1();
195 //temp.set(1,d*(mat*dp));
196 //mat.va2();
197 //temp.set(2,d*(mat*dp));
198 //mat.va3();
199 //temp.set(3,d*(mat*dp));
200 //return temp;
201
202
203 EvtComplex u02=::conj(d.spinor[0]-d.spinor[2]);
204 EvtComplex u13=::conj(d.spinor[1]-d.spinor[3]);
205
206 EvtComplex v02=dp.spinor[0]-dp.spinor[2];
207 EvtComplex v13=dp.spinor[1]-dp.spinor[3];
208
209 EvtComplex a=u02*v02;
210 EvtComplex b=u13*v13;
211
212 EvtComplex c=u02*v13;
213 EvtComplex e=u13*v02;
214
215 return EvtVector4C(a+b,-(c+e),EvtComplex(0,1)*(c-e),b-a);
216
217
218}
Evt3Rank3C conj(const Evt3Rank3C &t2)
Definition: Evt3Rank3C.cc:175

Referenced by EvtSemiLeptonicBaryonAmp::CalcAmp(), EvtSemiLeptonicTensorAmp::CalcAmp(), EvtSemiLeptonicVectorAmp::CalcAmp(), EvtKstarnunu::decay(), EvtLNuGamma::decay(), EvtSll::decay(), EvtSLN::decay(), EvtTauHadnu::decay(), EvtTaulnunu::decay(), EvtTauScalarnu::decay(), and EvtTauVectornu::decay().

◆ EvtLeptonVCurrent()

EvtVector4C EvtLeptonVCurrent ( const EvtDiracSpinor d,
const EvtDiracSpinor dp 
)

Definition at line 220 of file EvtDiracSpinor.cc.

220 {
221
222 EvtVector4C temp;
223
224 // no conjugate here; done in the multiplication
225 // yes this is stupid and fooled me to for a long time (ryd)
226
227 temp.set(0,d*(EvtGammaMatrix::v0()*dp));
228 temp.set(1,d*(EvtGammaMatrix::v1()*dp));
229 temp.set(2,d*(EvtGammaMatrix::v2()*dp));
230 temp.set(3,d*(EvtGammaMatrix::v3()*dp));
231
232 return temp;
233}

Referenced by EvtbTosllScalarAmp::CalcAmp(), EvtbTosllVectorAmp::CalcAmp(), EvtEDM::decay(), and EvtVll::decay().

◆ operator*()

EvtDiracSpinor operator* ( const EvtComplex c,
const EvtDiracSpinor d 
)

Definition at line 378 of file EvtDiracSpinor.cc.

378 {
379 EvtDiracSpinor result;
380 result.spinor[0] = c*d.spinor[0];
381 result.spinor[1] = c*d.spinor[1];
382 result.spinor[2] = c*d.spinor[2];
383 result.spinor[3] = c*d.spinor[3];
384 return result;
385 }

◆ operator<<()

ostream & operator<< ( ostream &  s,
const EvtDiracSpinor sp 
)

Definition at line 51 of file EvtDiracSpinor.cc.

51 {
52
53 s <<"["<<sp.spinor[0]<<","<<sp.spinor[1]<<","
54 <<sp.spinor[2]<<","<<sp.spinor[3]<<"]";
55 return s;
56
57}
XmlRpcServer s
Definition: HelloServer.cpp:11

◆ rotateEuler()

EvtDiracSpinor rotateEuler ( const EvtDiracSpinor sp,
double  alpha,
double  beta,
double  gamma 
)

Definition at line 66 of file EvtDiracSpinor.cc.

67 {
68
69 EvtDiracSpinor tmp(sp);
70 tmp.applyRotateEuler(alpha,beta,gamma);
71 return tmp;
72
73}
const double alpha

Referenced by EvtJTO3P::decay().