/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Generator/BesEvtGen/BesEvtGen-00-03-58/src/EvtGen/EvtGenModels/EvtSVVCP.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: EvtSVVCP.cc
00012 //
00013 // Description: The decay of a scalar to two vector particles are 
00014 //              performed with CP violation. E.g. B->J/psi K*.
00015 //
00016 // Modification history:
00017 //
00018 //    RYD       January 19, 1997       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/EvtCPUtil.hh"
00027 #include "EvtGenBase/EvtPDL.hh"
00028 #include "EvtGenModels/EvtSVVHelAmp.hh"
00029 #include "EvtGenBase/EvtReport.hh"
00030 #include "EvtGenModels/EvtSVVCP.hh"
00031 #include "EvtGenBase/EvtId.hh"
00032 #include <string>
00033 #include "EvtGenBase/EvtConst.hh"
00034 
00035 EvtSVVCP::~EvtSVVCP() {}
00036 
00037 void EvtSVVCP::getName(std::string& model_name){
00038 
00039   model_name="SVV_CP";     
00040 
00041 }
00042 
00043 
00044 EvtDecayBase* EvtSVVCP::clone(){
00045 
00046   return new EvtSVVCP;
00047 
00048 }
00049 
00050 void EvtSVVCP::init(){
00051 
00052   // check that there are 9 arguments
00053   checkNArg(9);
00054   checkNDaug(2);
00055 
00056   checkSpinParent(EvtSpinType::SCALAR);
00057 
00058   checkSpinDaughter(0,EvtSpinType::VECTOR);
00059   checkSpinDaughter(1,EvtSpinType::VECTOR);
00060 
00061 }
00062 
00063 void EvtSVVCP::initProbMax(){
00064 
00065   //This is probably not quite right, but it should do as a start...
00066   //Anders
00067 
00068   setProbMax(2*(getArg(3)*getArg(3)+getArg(5)*getArg(5)+getArg(7)*getArg(7)));
00069 
00070 }
00071 
00072 void EvtSVVCP::decay( EvtParticle *p){
00073 
00074   //added by Lange Jan4,2000
00075   static EvtId B0=EvtPDL::getId("B0");
00076   static EvtId B0B=EvtPDL::getId("anti-B0");
00077 
00078   double t;
00079   EvtId other_b;
00080 
00081   EvtCPUtil::OtherB(p,t,other_b);
00082 
00083    EvtComplex G0P,G1P,G1M;
00084 
00085    G1P=EvtComplex(getArg(3)*cos(getArg(4)),getArg(3)*sin(getArg(4)));
00086    G0P=EvtComplex(getArg(5)*cos(getArg(6)),getArg(5)*sin(getArg(6)));
00087    G1M=EvtComplex(getArg(7)*cos(getArg(8)),getArg(7)*sin(getArg(8)));
00088 
00089    EvtComplex lambda_km=EvtComplex(cos(-2*getArg(0)),sin(-2*getArg(0)));
00090 
00091    double cdmt=cos(getArg(1)*t/(2*EvtConst::c));
00092    double sdmt=sin(getArg(1)*t/(2*EvtConst::c));
00093 
00094    EvtComplex cG0P,cG1P,cG1M;
00095 
00096    if (other_b==B0B){
00097      cG0P=G0P*(cdmt+lambda_km*EvtComplex(0.0,getArg(2)*sdmt));
00098      cG1P=G1P*(cdmt+lambda_km*EvtComplex(0.0,getArg(2)*sdmt));
00099      cG1M=G1M*(cdmt-lambda_km*EvtComplex(0.0,getArg(2)*sdmt));
00100    }
00101    if (other_b==B0){
00102      cG0P=G0P*(cdmt+(1.0/lambda_km)*EvtComplex(0.0,getArg(2)*sdmt));
00103      cG1P=G1P*(cdmt+(1.0/lambda_km)*EvtComplex(0.0,getArg(2)*sdmt));
00104      cG1M=-G1M*(cdmt-(1.0/lambda_km)*EvtComplex(0.0,getArg(2)*sdmt));
00105 
00106    }
00107  
00108    EvtComplex A0,AP,AM;
00109 
00110    A0=cG0P/sqrt(2.0);
00111    AP=(cG1P+cG1M)/sqrt(2.0); 
00112    AM=(cG1P-cG1M)/sqrt(2.0); 
00113 
00114    EvtSVVHelAmp::SVVHel(p,_amp2,getDaug(0),getDaug(1),AP,A0,AM);
00115 
00116   return ;
00117 }
00118 

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