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: EvtTauScalarnu.cc
13 // Description: The leptonic decay of the tau meson.
14 // E.g., tau- -> e- nueb nut
16 // Modification history:
18 // RYD January 17, 1997 Module created
20 //------------------------------------------------------------------------
22 #include "EvtGenBase/EvtPatches.hh"
23 #include "EvtGenBase/EvtPatches.hh"
26 #include "EvtGenBase/EvtParticle.hh"
27 #include "EvtGenBase/EvtDiracParticle.hh"
28 #include "EvtGenBase/EvtPDL.hh"
29 #include "EvtGenBase/EvtIdSet.hh"
30 #include "EvtGenBase/EvtGenKine.hh"
31 #include "EvtGenModels/EvtBsquark.hh"
32 #include "EvtGenBase/EvtDiracSpinor.hh"
33 #include "EvtGenBase/EvtGammaMatrix.hh"
34 #include "EvtGenBase/EvtReport.hh"
36 EvtBsquark::~EvtBsquark() {}
38 std::string EvtBsquark::getName(){
45 EvtDecayBase* EvtBsquark::clone(){
47 return new EvtBsquark;
51 void EvtBsquark::init(){
53 // check that there are 5 arguments
57 void EvtBsquark::initProbMax(){
59 //For now do not set a maximum.
61 //SetProbMax(0.000000000005);
65 void EvtBsquark::decay(EvtParticle *p){
67 static EvtId cquark=EvtPDL::getId("c");
68 static EvtId anticquark=EvtPDL::getId("anti-c");
70 static EvtIdSet leptons("e-","mu-","tau-");
72 p->initializePhaseSpace(getNDaug(),getDaugs());
78 lepton = p->getDaug(1);
79 if (leptons.contains(lepton->getId())){
84 EvtDiracParticle charmquark;
86 //this is a very crude approximation...
88 charmquark.init(cquark,p->getDaug(0)->getP4());
91 charmquark.init(anticquark,p->getDaug(0)->getP4());
94 EvtVector4R p4c = p->getDaug(0)->getP4();
96 EvtVector4R p4sn = p->getDaug(2)->getP4();
98 EvtVector4R p4b(p->mass(),0.0,0.0,0.0);
104 //project out the right handed current
105 EvtGammaMatrix PR=0.5*(EvtGammaMatrix::id()+EvtGammaMatrix::g5());
107 double tanbeta=getArg(1);
108 double cosbeta=cos(atan(tanbeta));
109 double sinbeta=sin(atan(tanbeta));
115 double Mass=getArg(2);
117 double mchargino=getArg(4);
120 double tan2phim=2*sqrt(2.0)*mw*(mu*cosbeta+Mass*sinbeta)/
121 (Mass*Mass-mu*mu+2*mw*mw*cos(2*atan(tanbeta)));
123 double phim=0.5*atan(tan2phim);
125 EvtComplex U11=cos(phim);
126 EvtComplex U12=sin(phim);
127 EvtComplex U21=-sin(phim);
128 EvtComplex U22=cos(phim);
130 double tan2phip=2*sqrt(2.0)*mw*(mu*cosbeta+Mass*sinbeta)/
131 (Mass*Mass-mu*mu-2*mw*mw*cos(2*atan(tanbeta)));
133 double phip=0.5*atan(tan2phip);
135 EvtComplex V11=cos(phip);
136 EvtComplex V12=sin(phip);
137 EvtComplex V21=-sin(phip);
138 EvtComplex V22=cos(phip);
141 double theta=getArg(0);
142 double ctheta=cos(theta);
143 double stheta=sin(theta);
146 double mchi1=mchargino;
147 double mchi2=mchargino;
149 //overall scale factor
152 EvtComplex a1=mchi1*(U11*ctheta-mb*U12*stheta/(sqrt(2.0)*mw*cosbeta));
153 EvtComplex a2=mchi2*(U21*ctheta-mb*U22*stheta/(sqrt(2.0)*mw*cosbeta));
155 EvtComplex b1=mc*conj(V12)*ctheta/(sqrt(2.0)*mw*sinbeta);
156 EvtComplex b2=mc*conj(V22)*ctheta/(sqrt(2.0)*mw*sinbeta);
158 EvtComplex f1=-(g*g*V11*vcsb)/((p4b-p4c).mass2()-mchi1*mchi1);
159 EvtComplex f2=-(g*g*V21*vcsb)/((p4b-p4c).mass2()-mchi1*mchi2);
161 //report(INFO,"EvtGen") <<g<<" "<<V11<<" "<<FL<<" "<<vcsb<<" "<<mchi1<<endl;
162 //report(INFO,"EvtGen") << "f1:"<<f1<<" "<<(p4b-p4c).mass2()<<endl;
163 //report(INFO,"EvtGen") << "f2:"<<f2<<" "<<(p4b-p4c).mass2()<<endl;
165 //report(INFO,"EvtGen") << "p4sn:"<<p4sn<<endl;
167 EvtGammaMatrix pslash=p4sn.get(0)*EvtGammaMatrix::g0()
168 -p4sn.get(1)*EvtGammaMatrix::g1()
169 -p4sn.get(2)*EvtGammaMatrix::g2()
170 -p4sn.get(3)*EvtGammaMatrix::g3();
172 //report(INFO,"EvtGen") << "pslash:"<<pslash<<endl;
183 a=charmquark.spParent(ic)*(PR*lepton->spParent(il));
184 b=charmquark.spParent(ic)*((pslash*PR)*lepton->spParent(il));
187 a=lepton->spParent(il)*(PR*charmquark.spParent(ic));
188 b=lepton->spParent(il)*((pslash*PR)*charmquark.spParent(ic));
191 //report(INFO,"EvtGen") <<"pslash*PR:"<<pslash*PR<<endl;
192 //report(INFO,"EvtGen") <<"sp charm:"<<charmquark.spParent(ic)<<endl;
193 //report(INFO,"EvtGen") <<"sp lepton:"<<lepton->spParent(il)<<endl;
195 M[ic][il]=f1*(a1*a+b1*b)+f2*(a2*a+b2*b);
197 //report(INFO,"EvtGen") << "Contr1:"<<a1<<" "<<a<<" "<<b1<<" "<<b<<endl;
198 //report(INFO,"EvtGen") << "Contr2:"<<a2<<" "<<a<<" "<<b2<<" "<<b<<endl;
200 //report(INFO,"EvtGen") <<"case1:"<<f1<<" "<<a1<<" "<<b1<<" "<<a<<" "<<b<<endl;
201 //report(INFO,"EvtGen") <<"case2:"<<f2<<" "<<a2<<" "<<b2<<" "<<a<<" "<<b<<endl;
206 double prob=real(M[0][0]*conj(M[0][0])+
207 M[1][0]*conj(M[1][0])+
208 M[0][1]*conj(M[0][1])+
209 M[1][1]*conj(M[1][1]));
211 //report(INFO,"EvtGen") <<"prob:"<<prob<<endl;