35 for ( i = 0; i < 4; i++ )
37 for ( j = 0; j < 4; j++ ) { t[i][j] = t1.t[i][j]; }
45 static EvtTensor4C g_metric( 1.0, -1.0, -1.0, -1.0 );
53 for ( i = 0; i < 4; i++ )
55 for ( j = 0; j < 4; j++ ) {
t[i][j] = t1.t[i][j]; }
65 for ( i = 0; i < 4; i++ )
67 for ( j = 0; j < 4; j++ ) { temp.
set( j, i,
::conj(
t[i][j] ) ); }
95 double e = p4.
get( 0 );
106 double bx, by, bz, gamma, b2;
114 double bxx = bx * bx;
115 double byy = by * by;
116 double bzz = bz * bz;
118 b2 = bxx + byy + bzz;
120 if ( b2 == 0.0 ) {
return; }
124 gamma = 1.0 / sqrt( 1 - b2 );
128 if ( b2 == 0.0 ) {
return; }
130 lambda[0][0] = gamma;
131 lambda[0][1] = gamma * bx;
132 lambda[1][0] = gamma * bx;
133 lambda[0][2] = gamma * by;
134 lambda[2][0] = gamma * by;
135 lambda[0][3] = gamma * bz;
136 lambda[3][0] = gamma * bz;
138 lambda[1][1] = 1.0 + ( gamma - 1.0 ) * bx * bx / b2;
139 lambda[2][2] = 1.0 + ( gamma - 1.0 ) * by * by / b2;
140 lambda[3][3] = 1.0 + ( gamma - 1.0 ) * bz * bz / b2;
142 lambda[1][2] = ( gamma - 1.0 ) * bx * by / b2;
143 lambda[2][1] = ( gamma - 1.0 ) * bx * by / b2;
145 lambda[1][3] = ( gamma - 1.0 ) * bx * bz / b2;
146 lambda[3][1] = ( gamma - 1.0 ) * bx * bz / b2;
148 lambda[3][2] = ( gamma - 1.0 ) * bz * by / b2;
149 lambda[2][3] = ( gamma - 1.0 ) * bz * by / b2;
151 for ( i = 0; i < 4; i++ )
153 for ( j = 0; j < 4; j++ )
156 for ( k = 0; k < 4; k++ ) { tt[i][j] = tt[i][j] + lambda[j][k] * t[i][k]; }
160 for ( i = 0; i < 4; i++ )
162 for ( j = 0; j < 4; j++ )
165 for ( k = 0; k < 4; k++ ) { t[i][j] = t[i][j] + lambda[i][k] * tt[k][j]; }
172 for ( i = 0; i < 4; i++ )
174 for ( j = 0; j < 4; j++ ) { t[i][j] =
EvtComplex( 0.0, 0.0 ); }
182 for ( i = 0; i < 4; i++ )
184 for ( j = 0; j < 4; j++ ) {
s <<
t.t[i][j]; }
213 for ( i = 0; i < 4; i++ )
215 for ( j = 0; j < 4; j++ ) { t[i][j] += t2.
get( i, j ); }
224 for ( i = 0; i < 4; i++ )
226 for ( j = 0; j < 4; j++ ) { t[i][j] -= t2.
get( i, j ); }
234 for ( i = 0; i < 4; i++ )
236 for ( j = 0; j < 4; j++ ) { t[i][j] *= c; }
254 for ( i = 0; i < 4; i++ )
256 for ( j = 0; j < 4; j++ ) { t[i][j] *=
EvtComplex( d, 0.0 ); }
276 for ( i = 0; i < 4; i++ )
278 for ( j = 0; j < 4; j++ ) { sum += t1.t[i][j] * t2.t[i][j]; }
288 for ( i = 0; i < 4; i++ )
290 for ( j = 0; j < 4; j++ ) { temp.
set( i, j, c1.
get( i ) * c2.
get( j ) ); }
299 for ( i = 0; i < 4; i++ )
301 for ( j = 0; j < 4; j++ ) { temp.
set( i, j, c1.
get( i ) * c2.
get( j ) ); }
311 for ( i = 0; i < 4; i++ )
313 for ( j = 0; j < 4; j++ ) { temp.t[i][j] =
EvtComplex( c1.
get( i ) * c2.
get( j ), 0.0 ); }
322 for ( i = 0; i < 4; i++ )
324 for ( j = 0; j < 4; j++ ) { t[i][j] +=
p1.get( i ) *
p2.get( j ); }
338 temp.
set( 0, 1, t2.
get( 3, 2 ) - t2.
get( 2, 3 ) );
339 temp.
set( 0, 2, -t2.
get( 3, 1 ) + t2.
get( 1, 3 ) );
340 temp.
set( 0, 3, t2.
get( 2, 1 ) - t2.
get( 1, 2 ) );
342 temp.
set( 1, 2, -t2.
get( 3, 0 ) + t2.
get( 0, 3 ) );
343 temp.
set( 1, 3, t2.
get( 2, 0 ) - t2.
get( 0, 2 ) );
345 temp.
set( 2, 3, -t2.
get( 1, 0 ) + t2.
get( 0, 1 ) );
347 temp.
set( 1, 0, -temp.
get( 0, 1 ) );
348 temp.
set( 2, 0, -temp.
get( 0, 2 ) );
349 temp.
set( 3, 0, -temp.
get( 0, 3 ) );
351 temp.
set( 2, 1, -temp.
get( 1, 2 ) );
352 temp.
set( 3, 1, -temp.
get( 1, 3 ) );
354 temp.
set( 3, 2, -temp.
get( 2, 3 ) );
364 for ( i = 0; i < 4; i++ )
366 for ( j = 0; j < 4; j++ ) { temp.
set( i, j,
::conj( ( t2.
get( i, j ) ) ) ); }
378 for ( i = 0; i < 4; i++ )
380 for ( j = 0; j < 4; j++ )
382 c = t1.
get( i, 0 ) * t2.
get( j, 0 ) - t1.
get( i, 1 ) * t2.
get( j, 1 ) -
383 t1.
get( i, 2 ) * t2.
get( j, 2 ) - t1.
get( i, 3 ) * t2.
get( j, 3 );
397 for ( i = 0; i < 4; i++ )
399 for ( j = 0; j < 4; j++ )
401 c = t1.
get( 0, i ) * t2.
get( 0, j ) - t1.
get( 1, i ) * t2.
get( 1, j ) -
402 t1.
get( 2, i ) * t2.
get( 2, j ) - t1.
get( 3, i ) * t2.
get( 3, j );
415 for ( i = 0; i < 4; i++ )
417 temp.
set( i, t[0][i] * v4.
get( 0 ) - t[1][i] * v4.
get( 1 ) - t[2][i] * v4.
get( 2 ) -
418 t[3][i] * v4.
get( 3 ) );
429 for ( i = 0; i < 4; i++ )
431 temp.
set( i, t[i][0] * v4.
get( 0 ) - t[i][1] * v4.
get( 1 ) - t[i][2] * v4.
get( 2 ) -
432 t[i][3] * v4.
get( 3 ) );
443 for ( i = 0; i < 4; i++ )
445 temp.
set( i, t[0][i] * v4.
get( 0 ) - t[1][i] * v4.
get( 1 ) - t[2][i] * v4.
get( 2 ) -
446 t[3][i] * v4.
get( 3 ) );
457 for ( i = 0; i < 4; i++ )
459 temp.
set( i, t[i][0] * v4.
get( 0 ) - t[i][1] * v4.
get( 1 ) - t[i][2] * v4.
get( 2 ) -
460 t[i][3] * v4.
get( 3 ) );
469 double sp, st, sk, cp, ct, ck;
487 lambda[1][1] = ck * ct * cp - sk * sp;
488 lambda[1][2] = -sk * ct * cp - ck * sp;
489 lambda[1][3] = st * cp;
491 lambda[2][1] = ck * ct * sp + sk * cp;
492 lambda[2][2] = -sk * ct * sp + ck * cp;
493 lambda[2][3] = st * sp;
495 lambda[3][1] = -ck * st;
496 lambda[3][2] = sk * st;
501 for ( i = 0; i < 4; i++ )
503 for ( j = 0; j < 4; j++ )
506 for ( k = 0; k < 4; k++ ) { tt[i][j] += lambda[j][k] * t[i][k]; }
510 for ( i = 0; i < 4; i++ )
512 for ( j = 0; j < 4; j++ )
515 for ( k = 0; k < 4; k++ ) { t[i][j] += lambda[i][k] * tt[k][j]; }
Evt3Rank3C conj(const Evt3Rank3C &t2)
EvtTensor4C dual(const EvtTensor4C &t2)
ostream & operator<<(ostream &s, const EvtTensor4C &t)
EvtComplex cont(const EvtTensor4C &t1, const EvtTensor4C &t2)
EvtTensor4C rotateEuler(const EvtTensor4C &rs, double alpha, double beta, double gamma)
EvtTensor4C cont22(const EvtTensor4C &t1, const EvtTensor4C &t2)
EvtTensor4C cont11(const EvtTensor4C &t1, const EvtTensor4C &t2)
EvtTensor4C boostTo(const EvtTensor4C &rs, const EvtVector4R p4)
EvtTensor4C operator*(const EvtTensor4C &t1, const EvtComplex &c)
EvtTensor4C conj(const EvtTensor4C &t2)
EvtTensor4C directProd(const EvtVector4C &c1, const EvtVector4C &c2)
double sin(const BesAngle a)
double cos(const BesAngle a)
void setdiag(double t00, double t11, double t22, double t33)
void set(int i, int j, const EvtComplex &c)
const EvtComplex & get(int i, int j) const
EvtTensor4C & operator=(const EvtTensor4C &t1)
EvtTensor4C & operator-=(const EvtTensor4C &t2)
EvtVector4C cont1(const EvtVector4C &v4) const
static const EvtTensor4C & g()
void applyBoostTo(const EvtVector4R &p4)
EvtTensor4C & addDirProd(const EvtVector4R &p1, const EvtVector4R &p2)
EvtTensor4C & operator*=(const EvtComplex &c)
EvtVector4C cont2(const EvtVector4C &v4) const
EvtTensor4C & operator+=(const EvtTensor4C &t2)
void applyRotateEuler(double alpha, double beta, double gamma)
friend EvtTensor4C conj(const EvtTensor4C &t2)
void set(int, const EvtComplex &)
const EvtComplex & get(int) const