Changeset View
Changeset View
Standalone View
Standalone View
src/EvtGenBase/EvtVectorParticle.cpp
Show First 20 Lines • Show All 50 Lines • ▼ Show 20 Lines | void EvtVectorParticle::init( EvtId part_n, const EvtVector4R& p4 ) | ||||
setpart_num( part_n ); | setpart_num( part_n ); | ||||
_eps[0].set( 0.0, 1.0, 0.0, 0.0 ); | _eps[0].set( 0.0, 1.0, 0.0, 0.0 ); | ||||
_eps[1].set( 0.0, 0.0, 1.0, 0.0 ); | _eps[1].set( 0.0, 0.0, 1.0, 0.0 ); | ||||
_eps[2].set( 0.0, 0.0, 0.0, 1.0 ); | _eps[2].set( 0.0, 0.0, 0.0, 1.0 ); | ||||
setLifetime(); | setLifetime(); | ||||
} | } | ||||
void EvtVectorParticle::init( EvtId part_n, const EvtVector4R& p4, | // void EvtVectorParticle::init( EvtId part_n, const EvtVector4R& p4, | ||||
const EvtVector4C& epsin1, | // const EvtVector4C& epsin1, | ||||
const EvtVector4C& epsin2, | // const EvtVector4C& epsin2, | ||||
const EvtVector4C& epsin3 ) | // const EvtVector4C& epsin3 ) | ||||
{ | // { | ||||
_validP4 = true; | // _validP4 = true; | ||||
setp( p4 ); | // setp( p4 ); | ||||
setpart_num( part_n ); | // setpart_num( part_n ); | ||||
_eps[0] = epsin1; | // _eps[0] = epsin1; | ||||
_eps[1] = epsin2; | // _eps[1] = epsin2; | ||||
_eps[2] = epsin3; | // _eps[2] = epsin3; | ||||
setLifetime(); | // setLifetime(); | ||||
} | // } | ||||
EvtSpinDensity EvtVectorParticle::rotateToHelicityBasis() const | EvtSpinDensity EvtVectorParticle::rotateToHelicityBasis() const | ||||
{ | { | ||||
static EvtVector4C eplus( 0.0, -1.0 / sqrt( 2.0 ), | static EvtVector4C eplus( 0.0, -1.0 / sqrt( 2.0 ), | ||||
EvtComplex( 0.0, -1.0 / sqrt( 2.0 ) ), 0.0 ); | EvtComplex( 0.0, -1.0 / sqrt( 2.0 ) ), 0.0 ); | ||||
static EvtVector4C ezero( 0.0, 0.0, 0.0, 1.0 ); | static EvtVector4C ezero( 0.0, 0.0, 0.0, 1.0 ); | ||||
static EvtVector4C eminus( 0.0, 1.0 / sqrt( 2.0 ), | static EvtVector4C eminus( 0.0, 1.0 / sqrt( 2.0 ), | ||||
EvtComplex( 0.0, -1.0 / sqrt( 2.0 ) ), 0.0 ); | EvtComplex( 0.0, -1.0 / sqrt( 2.0 ) ), 0.0 ); | ||||
Show All 34 Lines | EvtSpinDensity EvtVectorParticle::rotateToHelicityBasis( double alpha, | ||||
for ( int i = 0; i < 3; i++ ) { | for ( int i = 0; i < 3; i++ ) { | ||||
R.set( 0, i, ( eplus.conj() ) * _eps[i] ); | R.set( 0, i, ( eplus.conj() ) * _eps[i] ); | ||||
R.set( 1, i, ( ezero.conj() ) * _eps[i] ); | R.set( 1, i, ( ezero.conj() ) * _eps[i] ); | ||||
R.set( 2, i, ( eminus.conj() ) * _eps[i] ); | R.set( 2, i, ( eminus.conj() ) * _eps[i] ); | ||||
} | } | ||||
return R; | return R; | ||||
} | } | ||||
EvtVector4C EvtVectorParticle::epsParent( int i ) const | |||||
{ | |||||
/* | |||||
assuming that polarization vectors have this structure: | |||||
_eps[0] = ( 0.0, 1.0, 0.0, 0.0 ); | |||||
_eps[1] = ( 0.0, 0.0, 1.0, 0.0 ); | |||||
_eps[2] = ( 0.0, 0.0, 0.0, 1.0 ); | |||||
boost them into the parent frame | |||||
*/ | |||||
const EvtVector4R& p = getP4(); | |||||
int j = i + 1; | |||||
double e = p.get( 0 ), px = p.get( 1 ), py = p.get( 2 ), pz = p.get( 3 ); | |||||
double m2 = ( e * e - px * px ) - ( py * py + pz * pz ), m = sqrt( m2 ); | |||||
double pj = p.get( j ), c = pj / ( m * e + m2 ); | |||||
double v0 = c * ( e + m ); | |||||
double v1 = c * px; | |||||
double v2 = c * py; | |||||
double v3 = c * pz; | |||||
EvtVector4C t; | |||||
t.set( v0, v1, v2, v3 ); | |||||
t.set( j, t.get( j ) + 1 ); | |||||
return t; | |||||
// EvtVector4C o = boostTo( _eps[i], p ); | |||||
// std::cout<<"epsParent "<<t-o<<std::endl; | |||||
// return o; | |||||
} |