/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Generator/BesEvtGen/BesEvtGen-00-03-58/src/EvtGen/EvtGenModels/EvtEDM.cc

Go to the documentation of this file.
00001 //--------------------------------------------------------------------------
00002 //
00003 // Environment:
00004 //
00005 // Module: EvtEDM.cc
00006 //
00007 // Description: tau pair production with EDM, see PRD55, 1643
00008 //              L = tau_bar sigma^{mu,nu} gamma_5 tau
00009 //
00010 // Modification history:
00011 //
00012 //    Ping RG       Dec 23, 2013       Module created
00013 //
00014 //------------------------------------------------------------------------
00015 //
00016 #include "EvtGenBase/EvtPatches.hh"
00017 #include <stdlib.h>
00018 #include <iostream>
00019 #include <string>
00020 #include "EvtGenBase/EvtParticle.hh"
00021 #include "EvtGenBase/EvtPDL.hh"
00022 #include "EvtGenBase/EvtGenKine.hh"
00023 #include "EvtGenModels/EvtEDM.hh"
00024 #include "EvtGenBase/EvtDiracSpinor.hh"
00025 #include "EvtGenBase/EvtReport.hh"
00026 #include "EvtGenBase/EvtVector4C.hh"
00027 #include "EvtGenBase/EvtTensor4C.hh"
00028 
00029 EvtEDM::~EvtEDM() {}
00030 
00031 void EvtEDM::getName(std::string& model_name){
00032 
00033   model_name="EDM";     
00034 
00035 }
00036 
00037 
00038 EvtDecayBase* EvtEDM::clone(){
00039 
00040   return new EvtEDM;
00041 
00042 }
00043 
00044 void EvtEDM::init(){
00045 
00046   // check that there are 0 arguments
00047   checkNArg(4);  // mag(d_tau) arg(d_tau) mag(g_e)  arg(g_e)
00048   checkNDaug(2);
00049 
00050   checkSpinParent(EvtSpinType::VECTOR);
00051   
00052   checkSpinDaughter(0,EvtSpinType::DIRAC);
00053   checkSpinDaughter(1,EvtSpinType::DIRAC);
00054 
00055 }
00056 
00057 void EvtEDM::initProbMax(){
00058 
00059   setProbMax(1.0);
00060 
00061 }
00062 
00063 void EvtEDM::decay(EvtParticle *p){
00064 
00065   p->initializePhaseSpace(getNDaug(),getDaugs());
00066 
00067   EvtParticle *l1, *l2;
00068   l1 = p->getDaug(0);
00069   l2 = p->getDaug(1);
00070 
00071   double magtau = getArg(0);
00072   double phstau = getArg(1);
00073   double mage   = getArg(2);
00074   double phse   = getArg(3);
00075   EvtComplex ctau(magtau*cos(phstau),magtau*sin(phstau));
00076   EvtComplex ce(mage*cos(phse),mage*sin(phse));
00077     
00078 
00079   EvtTensor4C l11, l12, l21, l22;
00080   l11=EvtLeptonTg5Current(l1->spParent(0),l2->spParent(0));
00081   l12=EvtLeptonTg5Current(l1->spParent(0),l2->spParent(1));
00082   l21=EvtLeptonTg5Current(l1->spParent(1),l2->spParent(0));
00083   l22=EvtLeptonTg5Current(l1->spParent(1),l2->spParent(1));
00084 
00085   EvtVector4C eps0=p->eps(0);
00086   EvtVector4C eps1=p->eps(1);
00087   EvtVector4C eps2=p->eps(2);
00088   EvtVector4R parp4 = p->getP4();
00089 
00090   EvtTensor4C p4eps0=directProd(eps0,parp4); 
00091   EvtTensor4C p4eps1=directProd(eps1,parp4); 
00092   EvtTensor4C p4eps2=directProd(eps2,parp4); 
00093 
00094   double M2=p->mass();
00095   M2*=M2;
00096   double m2=l1->mass();
00097   m2*=m2;
00098 
00099   double norm=1.0/sqrt(2*M2+4*m2-4*m2*m2/M2);
00100   EvtComplex norm_edm = norm * ctau;
00101   EvtComplex norm_e   = norm * ce;
00102 
00103   // for ee->gamma* ->ll pair without EDM contributions
00104   EvtVector4C L11, L12, L21, L22;
00105   L11=EvtLeptonVCurrent(l1->spParent(0),l2->spParent(0));
00106   L12=EvtLeptonVCurrent(l1->spParent(0),l2->spParent(1));
00107   L21=EvtLeptonVCurrent(l1->spParent(1),l2->spParent(0));
00108   L22=EvtLeptonVCurrent(l1->spParent(1),l2->spParent(1));
00109 
00110   EvtComplex A000,A001,A010,A011,A100,A101,A110,A111,A200,A201,A210,A211;
00111   A000 = norm_e*(eps0*L11);
00112   A001 = norm_e*(eps0*L12);
00113   A010 = norm_e*(eps0*L21);
00114   A011 = norm_e*(eps0*L22);
00115   
00116   A100 = norm_e*(eps1*L11);
00117   A101 = norm_e*(eps1*L12);
00118   A110 = norm_e*(eps1*L21);
00119   A111 = norm_e*(eps1*L22);
00120   
00121   A200 = norm_e*(eps2*L11);
00122   A201 = norm_e*(eps2*L12);
00123   A210 = norm_e*(eps2*L21);
00124   A211 = norm_e*(eps2*L22);
00125 
00126   vertex(0,0,0,norm_edm*cont(p4eps0,l11) + A000);
00127   vertex(0,0,1,norm_edm*cont(p4eps0,l12) + A001);
00128   vertex(0,1,0,norm_edm*cont(p4eps0,l21) + A010);
00129   vertex(0,1,1,norm_edm*cont(p4eps0,l22) + A011);
00130   
00131   vertex(1,0,0,norm_edm*cont(p4eps1,l11) + A100);
00132   vertex(1,0,1,norm_edm*cont(p4eps1,l12) + A101);
00133   vertex(1,1,0,norm_edm*cont(p4eps1,l21) + A110);
00134   vertex(1,1,1,norm_edm*cont(p4eps1,l22) + A111);
00135   
00136   vertex(2,0,0,norm_edm*cont(p4eps2,l11) + A200);   
00137   vertex(2,0,1,norm_edm*cont(p4eps2,l12) + A201);
00138   vertex(2,1,0,norm_edm*cont(p4eps2,l21) + A210);
00139   vertex(2,1,1,norm_edm*cont(p4eps2,l22) + A211);
00140   
00141   return;
00142 
00143 }
00144 
00145 
00146 
00147 
00148 
00149 
00150 
00151 
00152 
00153 
00154 
00155 
00156 

Generated on Tue Nov 29 23:12:18 2016 for BOSS_7.0.2 by  doxygen 1.4.7