1 //--------------------------------------------------------------------------
4 // This software is part of the EvtGen package developed jointly
5 // for the BaBar and CLEO collaborations. If you use all or part
6 // of it, please give an appropriate acknowledgement.
8 // Copyright Information: See EvtGen/COPYRIGHT
9 // Copyright (C) 1998 Caltech, UCSB
11 // Module: EvtNeutrinoParticle.cc
13 // Description: Class to describe neutrinos
15 // Modification history:
17 // DJL/RYD September 25, 1996 Module created
19 //------------------------------------------------------------------------
21 #include "EvtGenBase/EvtPatches.hh"
25 #include "EvtGenBase/EvtComplex.hh"
26 #include "EvtGenBase/EvtNeutrinoParticle.hh"
27 #include "EvtGenBase/EvtVector4R.hh"
28 #include "EvtGenBase/EvtPDL.hh"
29 #include "EvtGenBase/EvtReport.hh"
33 EvtNeutrinoParticle::~EvtNeutrinoParticle(){}
35 EvtNeutrinoParticle::EvtNeutrinoParticle(){
40 void EvtNeutrinoParticle::init(EvtId part_n,const EvtVector4R& p4){
52 if (EvtPDL::getStdHep(part_n)==0){
53 report(ERROR,"EvtGen") << "Error in EvtNeutrinoParticle::init, part_n="
54 << part_n.getId()<<endl;
57 if (EvtPDL::getStdHep(part_n)>0){
59 double beta,alpha,p2,norm;
61 // See Sakurai p. 167-169
66 beta=acos(pz/sqrt(p2));
71 double cosb,sinb,cosa,sina;
79 spinor_parent.set(-norm*sinb*EvtComplex(cosa,-sina),
80 norm*cosb*EvtComplex(cosa,sina),
81 norm*sinb*EvtComplex(cosa,-sina),
82 -norm*cosb*EvtComplex(cosa,sina));
96 spinor_parent.set((1.0/sqrpn)*EvtComplex(px,-py),
97 EvtComplex(sqrpn,0.0),
98 (-1.0/sqrpn)*EvtComplex(px,-py),
99 -EvtComplex(sqrpn,0.0));
109 EvtDiracSpinor EvtNeutrinoParticle::spParentNeutrino() const {
111 return spinor_parent;
114 EvtDiracSpinor EvtNeutrinoParticle::spNeutrino() const {
116 report(ERROR,"EvtGen") << "Tried to get neutrino spinor in restframe";
117 report(ERROR,"EvtGen") << "Will terminate execution.";
125 EvtSpinDensity EvtNeutrinoParticle::rotateToHelicityBasis() const{
127 report(ERROR,"EvtGen") << "rotateToHelicityBasis not implemented for neutrino.";
128 report(ERROR,"EvtGen") << "Will terminate execution.";
137 EvtSpinDensity EvtNeutrinoParticle::rotateToHelicityBasis(double,
141 report(ERROR,"EvtGen") << "rotateToHelicityBasis(alpha,beta,gama) not implemented for neutrino.";
142 report(ERROR,"EvtGen") << "Will terminate execution.";