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

Go to the documentation of this file.
00001 //--------------------------------------------------------------------------
00002 //
00003 // Environment:
00004 //      This software is part of the EvtGen package developed jointly
00005 //      for the BaBar and CLEO collaborations.  If you use all or part
00006 //      of it, please give an appropriate acknowledgement.
00007 //
00008 // Copyright Information: See EvtGen/COPYRIGHT
00009 //      Copyright (C) 1998      Caltech, UCSB
00010 //
00011 // Module: EvtSVVHelAmp.cc
00012 //
00013 // Description: Routine to decay scalar -> 2 vectors
00014 //              by specifying the helicity amplitudes
00015 //
00016 // Modification history:
00017 //
00018 //    RYD       November 24, 1996       Module created
00019 //
00020 //------------------------------------------------------------------------
00021 // 
00022 #include "EvtGenBase/EvtPatches.hh"
00023 #include <stdlib.h>
00024 #include "EvtGenBase/EvtParticle.hh"
00025 #include "EvtGenBase/EvtGenKine.hh"
00026 #include "EvtGenBase/EvtPDL.hh"
00027 #include "EvtGenBase/EvtVector4C.hh"
00028 #include "EvtGenBase/EvtTensor4C.hh"
00029 #include "EvtGenBase/EvtVector3C.hh"
00030 #include "EvtGenBase/EvtVector3R.hh"
00031 #include "EvtGenBase/EvtTensor3C.hh"
00032 #include "EvtGenBase/EvtReport.hh"
00033 #include "EvtGenModels/EvtSVVHelAmp.hh"
00034 #include "EvtGenBase/EvtId.hh"
00035 #include <string>
00036 
00037 EvtSVVHelAmp::~EvtSVVHelAmp() {}
00038 
00039 void EvtSVVHelAmp::getName(std::string& model_name){
00040 
00041   model_name="SVV_HELAMP";     
00042 
00043 }
00044 
00045 
00046 EvtDecayBase* EvtSVVHelAmp::clone(){
00047 
00048   return new EvtSVVHelAmp;
00049 
00050 }
00051 
00052 void EvtSVVHelAmp::init(){
00053 
00054   // check that there are 6 arguments
00055   checkNArg(6);
00056   checkNDaug(2);
00057 
00058   checkSpinParent(EvtSpinType::SCALAR);
00059 
00060   checkSpinDaughter(0,EvtSpinType::VECTOR);
00061   checkSpinDaughter(1,EvtSpinType::VECTOR);
00062 
00063 }
00064 
00065 
00066 void EvtSVVHelAmp::initProbMax(){
00067 
00068   setProbMax(getArg(0)*getArg(0)+getArg(2)*getArg(2)+getArg(4)*getArg(4));
00069 
00070 }
00071 
00072 
00073 void EvtSVVHelAmp::decay( EvtParticle *p){
00074 
00075   SVVHel(p,_amp2,getDaug(0),getDaug(1),
00076          EvtComplex(getArg(0)*cos(getArg(1)),getArg(0)*sin(getArg(1))),
00077          EvtComplex(getArg(2)*cos(getArg(3)),getArg(2)*sin(getArg(3))),
00078          EvtComplex(getArg(4)*cos(getArg(5)),getArg(4)*sin(getArg(5))));
00079                                  
00080   return ;
00081 
00082 }
00083 
00084 
00085 void EvtSVVHelAmp::SVVHel(EvtParticle *parent,EvtAmp& amp,EvtId n_v1,EvtId n_v2,
00086                const EvtComplex& hp,const EvtComplex& h0,
00087                const EvtComplex& hm){
00088 
00089   //  Routine to decay a scalar into two vectors.  Started
00090   //  by ryd on Oct 17, 1996.
00091     
00092   int tndaug = 2;
00093   EvtId tdaug[2];
00094   tdaug[0] = n_v1;
00095   tdaug[1] = n_v2;
00096 
00097 
00098   parent->initializePhaseSpace(tndaug,tdaug);
00099 
00100   EvtParticle *v1,*v2;
00101   v1 = parent->getDaug(0);
00102   v2 = parent->getDaug(1);
00103 
00104   EvtVector4R momv1 = v1->getP4();
00105   //EvtVector4R momv2 = v2->getP4();
00106 
00107   EvtVector3R v1dir(momv1.get(1),momv1.get(2),momv1.get(3));
00108   v1dir=v1dir/v1dir.d3mag();
00109 
00110   EvtComplex a=-0.5*(hp+hm);
00111   EvtComplex b=EvtComplex(0.0,0.5)*(hp-hm);
00112   EvtComplex c=h0+0.5*(hp+hm);
00113 
00114   EvtTensor3C M=a*EvtTensor3C::id()+
00115                 b*eps(v1dir)+
00116                 c*directProd(v1dir,v1dir);
00117 
00118   EvtVector3C t0=M.cont1(v1->eps(0).vec().conj());
00119   EvtVector3C t1=M.cont1(v1->eps(1).vec().conj());
00120   EvtVector3C t2=M.cont1(v1->eps(2).vec().conj());
00121 
00122   EvtVector3C eps0=v2->eps(0).vec().conj();
00123   EvtVector3C eps1=v2->eps(1).vec().conj();
00124   EvtVector3C eps2=v2->eps(2).vec().conj();
00125 
00126   amp.vertex(0,0,t0*eps0);
00127   amp.vertex(0,1,t0*eps1);
00128   amp.vertex(0,2,t0*eps2);
00129 
00130   amp.vertex(1,0,t1*eps0);
00131   amp.vertex(1,1,t1*eps1);
00132   amp.vertex(1,2,t1*eps2);
00133 
00134   amp.vertex(2,0,t2*eps0);
00135   amp.vertex(2,1,t2*eps1);
00136   amp.vertex(2,2,t2*eps2);
00137 
00138   return ;
00139 
00140 }
00141 
00142 

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