BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtRaritaSchwingerParticle Class Reference

#include <EvtRaritaSchwingerParticle.hh>

Inheritance diagram for EvtRaritaSchwingerParticle:

Public Member Functions

 EvtRaritaSchwingerParticle ()
virtual ~EvtRaritaSchwingerParticle ()
void init (EvtId id, const EvtVector4R &p4)
EvtRaritaSchwinger spRSParent (int) const
EvtRaritaSchwinger spRS (int) const
EvtSpinDensity rotateToHelicityBasis () const
EvtSpinDensity rotateToHelicityBasis (double alpha, double beta, double gamma) const
Public Member Functions inherited from EvtParticle
 EvtParticle ()
virtual ~EvtParticle ()
virtual EvtVector4C epsParent (int i) const
virtual EvtVector4C eps (int i) const
virtual EvtVector4C epsParentPhoton (int i)
virtual EvtVector4C epsPhoton (int i)
virtual EvtDiracSpinor spParent (int) const
virtual EvtDiracSpinor sp (int) const
virtual EvtDiracSpinor spParentNeutrino () const
virtual EvtDiracSpinor spNeutrino () const
virtual EvtTensor4C epsTensorParent (int i) const
virtual EvtTensor4C epsTensor (int i) const
void addDaug (EvtParticle *node)
void decay ()
void deleteTree ()
void deleteDaughters (bool keepChannel=false)
void setChannel (int i)
void setGeneratorFlag (int flag)
int getGeneratorFlag ()
void setIntFlag (std::vector< int > vi)
std::vector< int > getIntFlag ()
void makeDaughters (int ndaug, EvtId *id)
double initializePhaseSpace (int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
EvtParticlegetDaug (int i)
EvtParticlenextIter (EvtParticle *rootOfTree=0)
void makeStdHep (EvtStdHep &stdhep, EvtSecondary &secondary, EvtId *stable_parent_ihep)
void makeStdHep (EvtStdHep &stdhep)
EvtVector4R getP4Lab ()
EvtVector4R getP4Restframe ()
EvtVector4R get4Pos ()
EvtParticlegetParent ()
void insertDaugPtr (int idaug, EvtParticle *partptr)
double mass () const
int firstornot () const
void setFirstOrNot ()
void resetFirstOrNot ()
EvtId getId () const
EvtSpinType::spintype getSpinType () const
int getSpinStates () const
const EvtVector4RgetP4 () const
void setP4 (const EvtVector4R &p4)
int getChannel () const
int getNDaug () const
void resetNDaug ()
void printTree () const
void printTreeRec (int level) const
std::string writeTreeRec (std::string) const
void dumpTree () const
void dumpTreeRec (int level, int dj) const
std::string treeStr () const
std::string treeStrRec (int level) const
void printParticle () const
void setLifetime (double tau)
void setLifetime ()
double getLifetime ()
void setDiagonalSpinDensity ()
void setVectorSpinDensity ()
void setPolarizedSpinDensity (double r00, double r11, double r22)
void setSpinDensityForward (const EvtSpinDensity &rho)
void setSpinDensityForwardHelicityBasis (const EvtSpinDensity &rho)
void setSpinDensityForwardHelicityBasis (const EvtSpinDensity &rho, double alpha, double beta, double gamma)
EvtSpinDensity getSpinDensityForward ()
void setSpinDensityBackward (const EvtSpinDensity &rho)
EvtSpinDensity getSpinDensityBackward ()
void noLifeTime ()
void setId (EvtId id)
void initDecay (bool useMinMass=false)
void generateMassTree ()
double compMassProb ()
void setMass (double m)
bool isInitialized ()
bool hasValidP4 ()
bool isDecayed ()
double * decayProb ()
void setDecayProb (double p)
void setInclusiveMode (int im)
int getInclusiveMode ()

Additional Inherited Members

Static Public Attributes inherited from EvtParticle
static int _NextLevelDauNum = 0
static EvtId _NextLevelId [20]
static EvtVector4R _NextLevelP4 [20]
Protected Member Functions inherited from EvtParticle
void setp (double e, double px, double py, double pz)
void setp (const EvtVector4R &p4)
void setpart_num (EvtId particle_number)
Protected Attributes inherited from EvtParticle
bool _validP4

Detailed Description

Definition at line 30 of file EvtRaritaSchwingerParticle.hh.

Constructor & Destructor Documentation

◆ EvtRaritaSchwingerParticle()

EvtRaritaSchwingerParticle::EvtRaritaSchwingerParticle ( )

Definition at line 36 of file EvtRaritaSchwingerParticle.cc.

36{ return; }

◆ ~EvtRaritaSchwingerParticle()

EvtRaritaSchwingerParticle::~EvtRaritaSchwingerParticle ( )
virtual

Definition at line 34 of file EvtRaritaSchwingerParticle.cc.

34{}

Member Function Documentation

◆ init()

void EvtRaritaSchwingerParticle::init ( EvtId part_n,
const EvtVector4R & p4 )
virtual

Initialiaze particle with id and 4momentum.

Implements EvtParticle.

Definition at line 38 of file EvtRaritaSchwingerParticle.cc.

38 {
39
40 _validP4 = true;
41 setp( p4 );
42 setpart_num( id );
43
44 if ( EvtPDL::getStdHep( id ) == 0 )
45 {
46 report( ERROR, "EvtGen" ) << "Error in EvtRaritaSchwingerParticle::init, part_n="
47 << id.getId() << endl;
48 ::abort();
49 }
50
51 static EvtVector4R e1( 0.0, 1.0, 0.0, 0.0 );
52 static EvtVector4R e2( 0.0, 0.0, 1.0, 0.0 );
53 static EvtVector4R e3( 0.0, 0.0, 0.0, 1.0 );
54
55 if ( EvtPDL::getStdHep( id ) > 0 )
56 {
57
58 EvtDiracSpinor u1, u2;
59
60 u1.set( EvtComplex( sqrt( 2.0 * mass() ), 0.0 ), EvtComplex( 0.0, 0.0 ),
61 EvtComplex( 0.0, 0.0 ), EvtComplex( 0.0, 0.0 ) );
62 u2.set( EvtComplex( 0.0, 0.0 ), EvtComplex( sqrt( 2.0 * mass() ), 0.0 ),
63 EvtComplex( 0.0, 0.0 ), EvtComplex( 0.0, 0.0 ) );
64
65 _spinorRest[0] = dirProd( e3, u1 + u2 );
66 _spinorRest[1] = dirProd( e1 + EvtComplex( 0.0, 1.0 ) * e2, u1 );
67 _spinorRest[2] = dirProd( e1 - EvtComplex( 0.0, 1.0 ) * e2, u2 );
68 _spinorRest[3] =
69 dirProd( e1, ( u1 + u2 ) ) + dirProd( EvtComplex( 0.0, 1.0 ) * e2, ( u1 - u2 ) );
70
71 _spinor[0] = boostTo( _spinorRest[0], p4 );
72 _spinor[1] = boostTo( _spinorRest[1], p4 );
73 _spinor[2] = boostTo( _spinorRest[2], p4 );
74 _spinor[3] = boostTo( _spinorRest[3], p4 );
75 }
76 else
77 {
78
79 EvtDiracSpinor u1, u2;
80
81 u1.set( EvtComplex( 0.0, 0.0 ), EvtComplex( 0.0, 0.0 ),
82 EvtComplex( sqrt( 2.0 * mass() ), 0.0 ), EvtComplex( 0.0, 0.0 ) );
83 u2.set( EvtComplex( 0.0, 0.0 ), EvtComplex( 0.0, 0.0 ), EvtComplex( 0.0, 0.0 ),
84 EvtComplex( sqrt( 2.0 * mass() ), 0.0 ) );
85
86 _spinorRest[0] = dirProd( e3, ( u1 + u2 ) );
87 _spinorRest[1] = dirProd( e1 + EvtComplex( 0.0, 1.0 ) * e2, u1 );
88 _spinorRest[2] = dirProd( e1 - EvtComplex( 0.0, 1.0 ) * e2, u2 );
89 _spinorRest[3] =
90 dirProd( e1, ( u1 + u2 ) ) + dirProd( EvtComplex( 0.0, 1.0 ) * e2, ( u1 - u2 ) );
91
92 _spinor[0] = boostTo( _spinorRest[0], p4 );
93 _spinor[1] = boostTo( _spinorRest[1], p4 );
94 _spinor[2] = boostTo( _spinorRest[2], p4 );
95 _spinor[3] = boostTo( _spinorRest[3], p4 );
96 }
97
99}
Double_t e1
Double_t e2
EvtDiracSpinor boostTo(const EvtDiracSpinor &sp, const EvtVector4R p4)
EvtRaritaSchwinger dirProd(EvtVector4R v, EvtDiracSpinor u)
ostream & report(Severity severity, const char *facility)
Definition EvtReport.cc:34
@ ERROR
Definition EvtReport.hh:49
void set(const EvtComplex &sp0, const EvtComplex &sp1, const EvtComplex &sp2, const EvtComplex &sp3)
static int getStdHep(EvtId id)
Definition EvtPDL.hh:61
void setLifetime()
void setp(double e, double px, double py, double pz)
double mass() const
void setpart_num(EvtId particle_number)

Referenced by EvtParticleFactory::particleFactory().

◆ rotateToHelicityBasis() [1/2]

EvtSpinDensity EvtRaritaSchwingerParticle::rotateToHelicityBasis ( ) const
virtual

Returns a rotation matrix need to rotate the basis state to the helicity basis. The EvtSpinDensity matrix is just use as a matrix here. This function is to be implemented in each derived class.

Implements EvtParticle.

Definition at line 105 of file EvtRaritaSchwingerParticle.cc.

105 {
106
107 double sqmt2 = sqrt( 2.0 * ( this->getP4().mass() ) );
108
109 EvtDiracSpinor spplus;
110 EvtDiracSpinor spminus;
111
112 if ( EvtPDL::getStdHep( getId() ) > 0 )
113 {
114 spplus.set( 1.0, 0.0, 0.0, 0.0 );
115 spminus.set( 0.0, 1.0, 0.0, 0.0 );
116 }
117 else
118 {
119 spplus.set( 0.0, 0.0, 1.0, 0.0 );
120 spminus.set( 0.0, 0.0, 0.0, 1.0 );
121 }
122
123 EvtVector4C eplus( 0.0, -1.0 / sqrt( 2.0 ), EvtComplex( 0.0, -1.0 / sqrt( 2.0 ) ), 0.0 );
124 EvtVector4C ezero( 0.0, 0.0, 0.0, 1.0 );
125 EvtVector4C eminus( 0.0, 1.0 / sqrt( 2.0 ), EvtComplex( 0.0, -1.0 / sqrt( 2.0 ) ), 0.0 );
126
127 EvtRaritaSchwinger sppp = dirProd( eplus, spplus );
128 EvtRaritaSchwinger spp = dirProd( sqrt( 2.0 / 3.0 ) * ezero, spplus ) +
129 dirProd( sqrt( 1.0 / 3.0 ) * eplus, spminus );
130 EvtRaritaSchwinger spm = dirProd( sqrt( 2.0 / 3.0 ) * ezero, spminus ) +
131 dirProd( sqrt( 1.0 / 3.0 ) * eminus, spplus );
132 EvtRaritaSchwinger spmm = dirProd( eminus, spminus );
133
134 //
135
136 EvtSpinDensity R;
137 R.SetDim( 4 );
138
139 for ( int i = 0; i < 4; i++ )
140 {
141 R.Set( 0, i, ( sppp * _spinorRest[i] ) / sqmt2 );
142 R.Set( 1, i, ( spp * _spinorRest[i] ) / sqmt2 );
143 R.Set( 2, i, ( spm * _spinorRest[i] ) / sqmt2 );
144 R.Set( 3, i, ( spmm * _spinorRest[i] ) / sqmt2 );
145 }
146
147 return R;
148}
EvtId getId() const
const EvtVector4R & getP4() const
complex_t R(double Q2, double M2, double G, double Mp2, double Mm2)
Definition TUtil.h:22

◆ rotateToHelicityBasis() [2/2]

EvtSpinDensity EvtRaritaSchwingerParticle::rotateToHelicityBasis ( double alpha,
double beta,
double gamma ) const
virtual

Implements EvtParticle.

Definition at line 150 of file EvtRaritaSchwingerParticle.cc.

151 {
152
153 EvtDiracSpinor spplus;
154 EvtDiracSpinor spminus;
155
156 if ( EvtPDL::getStdHep( getId() ) > 0 )
157 {
158 spplus.set( 1.0, 0.0, 0.0, 0.0 );
159 spminus.set( 0.0, 1.0, 0.0, 0.0 );
160 }
161 else
162 {
163 spplus.set( 0.0, 0.0, 1.0, 0.0 );
164 spminus.set( 0.0, 0.0, 0.0, 1.0 );
165 }
166
167 EvtVector4C eplus( 0.0, -1.0 / sqrt( 2.0 ), EvtComplex( 0.0, -1.0 / sqrt( 2.0 ) ), 0.0 );
168 EvtVector4C ezero( 0.0, 0.0, 0.0, 1.0 );
169 EvtVector4C eminus( 0.0, 1.0 / sqrt( 2.0 ), EvtComplex( 0.0, -1.0 / sqrt( 2.0 ) ), 0.0 );
170
171 EvtRaritaSchwinger sppp = dirProd( eplus, spplus );
172 EvtRaritaSchwinger spp = dirProd( sqrt( 2.0 / 3.0 ) * ezero, spplus ) +
173 dirProd( sqrt( 1.0 / 3.0 ) * eplus, spminus );
174 EvtRaritaSchwinger spm = dirProd( sqrt( 2.0 / 3.0 ) * ezero, spminus ) +
175 dirProd( sqrt( 1.0 / 3.0 ) * eminus, spplus );
176 EvtRaritaSchwinger spmm = dirProd( eminus, spminus );
177 //
178
179 sppp.applyRotateEuler( alpha, beta, gamma );
180 spp.applyRotateEuler( alpha, beta, gamma );
181 spm.applyRotateEuler( alpha, beta, gamma );
182 spmm.applyRotateEuler( alpha, beta, gamma );
183
184 EvtSpinDensity R;
185 R.SetDim( 4 );
186
187 double sqmt2 = sqrt( 2.0 * ( this->getP4().mass() ) );
188
189 for ( int i = 0; i < 4; i++ )
190 {
191 R.Set( 0, i, ( sppp * _spinorRest[i] ) / sqmt2 );
192 R.Set( 1, i, ( spp * _spinorRest[i] ) / sqmt2 );
193 R.Set( 2, i, ( spm * _spinorRest[i] ) / sqmt2 );
194 R.Set( 3, i, ( spmm * _spinorRest[i] ) / sqmt2 );
195 }
196
197 return R;
198}
double alpha
void applyRotateEuler(double alpha, double beta, double gamma)

◆ spRS()

EvtRaritaSchwinger EvtRaritaSchwingerParticle::spRS ( int i) const

Definition at line 103 of file EvtRaritaSchwingerParticle.cc.

103{ return _spinorRest[i]; }

◆ spRSParent()

EvtRaritaSchwinger EvtRaritaSchwingerParticle::spRSParent ( int i) const

Definition at line 101 of file EvtRaritaSchwingerParticle.cc.

101{ return _spinor[i]; }

The documentation for this class was generated from the following files: