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

#include <EvtNeutrinoParticle.hh>

Inheritance diagram for EvtNeutrinoParticle:

Public Member Functions

 EvtNeutrinoParticle ()
virtual ~EvtNeutrinoParticle ()
void init (EvtId part_n, const EvtVector4R &p4)
EvtDiracSpinor spParentNeutrino () const
EvtDiracSpinor spNeutrino () 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 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 EvtNeutrinoParticle.hh.

Constructor & Destructor Documentation

◆ EvtNeutrinoParticle()

EvtNeutrinoParticle::EvtNeutrinoParticle ( )

Definition at line 35 of file EvtNeutrinoParticle.cc.

35{ return; }

◆ ~EvtNeutrinoParticle()

EvtNeutrinoParticle::~EvtNeutrinoParticle ( )
virtual

Definition at line 33 of file EvtNeutrinoParticle.cc.

33{}

Member Function Documentation

◆ init()

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

Initialiaze particle with id and 4momentum.

Implements EvtParticle.

Definition at line 37 of file EvtNeutrinoParticle.cc.

37 {
38
39 _validP4 = true;
40 setp( p4 );
41 setpart_num( part_n );
42
43 double e, px, py, pz;
44 e = p4.get( 0 );
45 px = p4.get( 1 );
46 py = p4.get( 2 );
47 pz = p4.get( 3 );
48
49 if ( EvtPDL::getStdHep( part_n ) == 0 )
50 {
51 report( ERROR, "EvtGen" ) << "Error in EvtNeutrinoParticle::init, part_n="
52 << part_n.getId() << endl;
53 }
54
55 if ( EvtPDL::getStdHep( part_n ) > 0 )
56 {
57
58 double beta, alpha, p2, norm;
59
60 // See Sakurai p. 167-169
61 // and Renton p. 126
62
63 p2 = px * px + py * py + pz * pz;
64
65 beta = acos( pz / sqrt( p2 ) );
66 alpha = atan2( py, px );
67
68 norm = sqrt( 2 * e );
69
70 double cosb, sinb, cosa, sina;
71
72 cosb = cos( 0.5 * beta );
73 sinb = sin( 0.5 * beta );
74
75 cosa = cos( 0.5 * alpha );
76 sina = sin( 0.5 * alpha );
77
78 spinor_parent.set(
79 -norm * sinb * EvtComplex( cosa, -sina ), norm * cosb * EvtComplex( cosa, sina ),
80 norm * sinb * EvtComplex( cosa, -sina ), -norm * cosb * EvtComplex( cosa, sina ) );
81 }
82 else
83 {
84
85 px = -p4.get( 1 );
86 py = -p4.get( 2 );
87 pz = -p4.get( 3 );
88
89 double pn, sqrpn;
90
91 pn = e;
92 sqrpn = sqrt( pn - pz );
93
94 spinor_parent.set( ( 1.0 / sqrpn ) * EvtComplex( px, -py ), EvtComplex( sqrpn, 0.0 ),
95 ( -1.0 / sqrpn ) * EvtComplex( px, -py ), -EvtComplex( sqrpn, 0.0 ) );
96 }
97
99}
double p2[4]
double alpha
ostream & report(Severity severity, const char *facility)
Definition EvtReport.cc:34
@ ERROR
Definition EvtReport.hh:49
int getId() const
Definition EvtId.hh:40
static int getStdHep(EvtId id)
Definition EvtPDL.hh:61
void setLifetime()
void setp(double e, double px, double py, double pz)
void setpart_num(EvtId particle_number)
double get(int i) const

Referenced by EvtParticleFactory::particleFactory().

◆ rotateToHelicityBasis() [1/2]

EvtSpinDensity EvtNeutrinoParticle::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 113 of file EvtNeutrinoParticle.cc.

113 {
114
115 report( ERROR, "EvtGen" ) << "rotateToHelicityBasis not implemented for neutrino.";
116 report( ERROR, "EvtGen" ) << "Will terminate execution.";
117
118 ::abort();
119
120 EvtSpinDensity rho;
121 return rho;
122}

◆ rotateToHelicityBasis() [2/2]

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

Implements EvtParticle.

Definition at line 124 of file EvtNeutrinoParticle.cc.

125 {
126
127 report( ERROR, "EvtGen" )
128 << "rotateToHelicityBasis(alpha,beta,gamma) not implemented for neutrino.";
129 report( ERROR, "EvtGen" ) << "Will terminate execution.";
130
131 ::abort();
132
133 EvtSpinDensity rho;
134 return rho;
135}

◆ spNeutrino()

EvtDiracSpinor EvtNeutrinoParticle::spNeutrino ( ) const
virtual

Returns Dirac spinor in the particles own restframe for a Neutrino particle.

Reimplemented from EvtParticle.

Definition at line 103 of file EvtNeutrinoParticle.cc.

103 {
104
105 report( ERROR, "EvtGen" ) << "Tried to get neutrino spinor in restframe";
106 report( ERROR, "EvtGen" ) << "Will terminate execution.";
107
108 ::abort();
109
110 return spinor_rest;
111}

◆ spParentNeutrino()

EvtDiracSpinor EvtNeutrinoParticle::spParentNeutrino ( ) const
virtual

Returns Dirac spinor in the parents restframe for a Neutrino particle.

Reimplemented from EvtParticle.

Definition at line 101 of file EvtNeutrinoParticle.cc.

101{ return spinor_parent; }

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