36 set( sp0, sp1, sp2, sp3 );
52 s <<
"[" << sp.spinor[0] <<
"," << sp.spinor[1] <<
"," << sp.spinor[2] <<
"," << sp.spinor[3]
63 tmp.applyRotateEuler(
alpha, beta, gamma );
83 double e = p4.
get( 0 );
94 double bx, by, bz, gamma, b2,
f1, f2;
100 b2 = bx * bx + by * by + bz * bz;
102 if ( b2 == 0.0 ) {
return; }
106 gamma = 1.0 / sqrt( 1 - b2 );
108 f1 = sqrt( ( gamma + 1.0 ) / 2.0 );
109 f2 =
f1 * gamma / ( gamma + 1.0 );
111 spinorp[0] =
f1 * spinor[0] + f2 * bz * spinor[2] + f2 *
EvtComplex( bx, -by ) * spinor[3];
112 spinorp[1] =
f1 * spinor[1] + f2 *
EvtComplex( bx, by ) * spinor[2] - f2 * bz * spinor[3];
113 spinorp[2] = f2 * bz * spinor[0] + f2 *
EvtComplex( bx, -by ) * spinor[1] +
f1 * spinor[2];
114 spinorp[3] = f2 *
EvtComplex( bx, by ) * spinor[0] - f2 * bz * spinor[1] +
f1 * spinor[3];
116 spinor[0] = spinorp[0];
117 spinor[1] = spinorp[1];
118 spinor[2] = spinorp[2];
119 spinor[3] = spinorp[3];
128 double cb2 =
cos( 0.5 * beta );
129 double sb2 =
sin( 0.5 * beta );
130 double capg2 =
cos( 0.5 * (
alpha + gamma ) );
131 double camg2 =
cos( 0.5 * (
alpha - gamma ) );
132 double sapg2 =
sin( 0.5 * (
alpha + gamma ) );
133 double samg2 =
sin( 0.5 * (
alpha - gamma ) );
140 retVal[0] = m11 * spinor[0] + m12 * spinor[1];
141 retVal[1] = m21 * spinor[0] + m22 * spinor[1];
142 retVal[2] = m11 * spinor[2] + m12 * spinor[3];
143 retVal[3] = m21 * spinor[2] + m22 * spinor[3];
145 spinor[0] = retVal[0];
146 spinor[1] = retVal[1];
147 spinor[2] = retVal[2];
148 spinor[3] = retVal[3];
217 temp.
set( 0, d * ( mat * dp ) );
220 temp.
set( 1, d * ( mat * dp ) );
223 temp.
set( 2, d * ( mat * dp ) );
226 temp.
set( 3, d * ( mat * dp ) );
250 temp = d * ( m * dp );
280 temp.
set( 0, 1, i2 * ( d * ( mat01 * dp ) ) );
281 temp.
set( 1, 0, -temp.
get( 0, 1 ) );
283 temp.
set( 0, 2, i2 * ( d * ( mat02 * dp ) ) );
284 temp.
set( 2, 0, -temp.
get( 0, 2 ) );
286 temp.
set( 0, 3, i2 * ( d * ( mat03 * dp ) ) );
287 temp.
set( 3, 0, -temp.
get( 0, 3 ) );
289 temp.
set( 1, 2, i2 * ( d * ( mat12 * dp ) ) );
290 temp.
set( 2, 1, -temp.
get( 1, 2 ) );
292 temp.
set( 1, 3, i2 * ( d * ( mat13 * dp ) ) );
293 temp.
set( 3, 1, -temp.
get( 1, 3 ) );
295 temp.
set( 2, 3, i2 * ( d * ( mat23 * dp ) ) );
296 temp.
set( 3, 2, -temp.
get( 2, 3 ) );
333 temp.
set( 0, 1, i2 * ( d * ( mat01 * dp ) ) );
334 temp.
set( 1, 0, -temp.
get( 0, 1 ) );
336 temp.
set( 0, 2, i2 * ( d * ( mat02 * dp ) ) );
337 temp.
set( 2, 0, -temp.
get( 0, 2 ) );
339 temp.
set( 0, 3, i2 * ( d * ( mat03 * dp ) ) );
340 temp.
set( 3, 0, -temp.
get( 0, 3 ) );
342 temp.
set( 1, 2, i2 * ( d * ( mat12 * dp ) ) );
343 temp.
set( 2, 1, -temp.
get( 1, 2 ) );
345 temp.
set( 1, 3, i2 * ( d * ( mat13 * dp ) ) );
346 temp.
set( 3, 1, -temp.
get( 1, 3 ) );
348 temp.
set( 2, 3, i2 * ( d * ( mat23 * dp ) ) );
349 temp.
set( 3, 2, -temp.
get( 2, 3 ) );
356 result.spinor[0] = c * d.spinor[0];
357 result.spinor[1] = c * d.spinor[1];
358 result.spinor[2] = c * d.spinor[2];
359 result.spinor[3] = c * d.spinor[3];
368 for (
int i = 0; i < 4; ++i )
369 for (
int j = 0; j < 4; ++j ) result.spinor[i] += d.spinor[j] * g0.gamma[i][j];
Evt3Rank3C conj(const Evt3Rank3C &t2)
EvtDiracSpinor operator*(const EvtComplex &c, const EvtDiracSpinor &d)
EvtVector4C EvtLeptonVACurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
EvtTensor4C EvtLeptonTCurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
EvtVector4C EvtLeptonACurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
EvtTensor4C EvtLeptonTg5Current(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
EvtDiracSpinor rotateEuler(const EvtDiracSpinor &sp, double alpha, double beta, double gamma)
EvtComplex EvtLeptonSCurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
EvtVector4C EvtLeptonVCurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
ostream & operator<<(ostream &s, const EvtDiracSpinor &sp)
EvtComplex EvtLeptonPCurrent(const EvtDiracSpinor &d, const EvtDiracSpinor &dp)
EvtDiracSpinor boostTo(const EvtDiracSpinor &sp, const EvtVector4R p4)
double sin(const BesAngle a)
double cos(const BesAngle a)
EvtDiracSpinor conj() const
const EvtComplex & get_spinor(int i) const
void set(const EvtComplex &sp0, const EvtComplex &sp1, const EvtComplex &sp2, const EvtComplex &sp3)
EvtDiracSpinor adjoint() const
void applyRotateEuler(double alpha, double beta, double gamma)
void applyBoostTo(const EvtVector4R &p4)
virtual ~EvtDiracSpinor()
void set_spinor(int i, const EvtComplex &sp)
static const EvtGammaMatrix & va1()
static const EvtGammaMatrix & v0()
static const EvtGammaMatrix & g0()
static const EvtGammaMatrix & g2()
static const EvtGammaMatrix & g1()
static const EvtGammaMatrix & va3()
static const EvtGammaMatrix & g3()
static const EvtGammaMatrix & v2()
static const EvtGammaMatrix & va0()
static const EvtGammaMatrix & va2()
static const EvtGammaMatrix & g5()
static const EvtGammaMatrix & v1()
static const EvtGammaMatrix & v3()
void set(int i, int j, const EvtComplex &c)
const EvtComplex & get(int i, int j) const
void set(int, const EvtComplex &)