/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Generator/BesEvtGen/BesEvtGen-00-03-58/src/EvtGen/EvtGenModels/EvtbTosllBall.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) 2000      Caltech, UCSB
00010 //
00011 // Module: EvtbTosllBall.cc
00012 //
00013 // Description: Routine to implement b->sll decays according to Ball et al. 
00014 //
00015 // Modification history:
00016 //
00017 //    Ryd     January 5, 2000        Module created
00018 //
00019 //------------------------------------------------------------------------
00020 // 
00021 #include "EvtGenBase/EvtPatches.hh"
00022 #include <stdlib.h>
00023 #include "EvtGenBase/EvtParticle.hh"
00024 #include "EvtGenBase/EvtGenKine.hh"
00025 #include "EvtGenBase/EvtPDL.hh"
00026 #include "EvtGenBase/EvtReport.hh"
00027 #include "EvtGenModels/EvtbTosllBall.hh"
00028 #include "EvtGenModels/EvtbTosllBallFF.hh"
00029 #include "EvtGenModels/EvtbTosllAmp.hh"
00030 #include "EvtGenModels/EvtbTosllScalarAmp.hh"
00031 #include "EvtGenModels/EvtbTosllVectorAmp.hh"
00032 
00033 #include <string>
00034 using std::endl;
00035 
00036 EvtbTosllBall::~EvtbTosllBall() {}
00037 
00038 void EvtbTosllBall::getName(std::string& model_name){
00039 
00040   model_name="BTOSLLBALL";     
00041 }
00042 
00043 
00044 EvtDecayBase* EvtbTosllBall::clone(){
00045 
00046   return new EvtbTosllBall;
00047 
00048 }
00049 
00050 void EvtbTosllBall::decay( EvtParticle *p ){
00051 
00052   setWeight(p->initializePhaseSpace(getNDaug(),getDaugs(),_poleSize,1,2));
00053 
00054   _calcamp->CalcAmp(p,_amp2,_ballffmodel);
00055   
00056 }
00057 
00058 
00059 void EvtbTosllBall::initProbMax(){
00060 
00061   EvtId parnum,mesnum,l1num,l2num;
00062   
00063   parnum = getParentId();
00064   mesnum = getDaug(0);
00065   l1num = getDaug(1);
00066   l2num = getDaug(2);
00067   
00068   //This routine sets the _poleSize.
00069   double mymaxprob = _calcamp->CalcMaxProb(parnum,mesnum,
00070                                            l1num,l2num,
00071                                            _ballffmodel,_poleSize);
00072   //  cout << EvtPDL::getStdHep(mesnum) << "\t" << mymaxprob << endl;
00073   setProbMax(mymaxprob);
00074 
00075 }
00076 
00077 
00078 void EvtbTosllBall::init(){
00079 
00080   checkNArg(0);
00081   checkNDaug(3);
00082 
00083   //We expect the parent to be a scalar 
00084   //and the daughters to be X lepton+ lepton-
00085 
00086   checkSpinParent(EvtSpinType::SCALAR);
00087 
00088   EvtSpinType::spintype mesontype=EvtPDL::getSpinType(getDaug(0));
00089 
00090   if ( !(mesontype == EvtSpinType::VECTOR||
00091         mesontype == EvtSpinType::SCALAR)) {
00092     report(ERROR,"EvtGen") << "EvtbTosllBall generator expected "
00093                            << " a SCALAR or VECTOR 1st daughter, found:"<<
00094                            EvtPDL::name(getDaug(0)).c_str()<<endl;
00095     report(ERROR,"EvtGen") << "Will terminate execution!"<<endl;
00096     ::abort();
00097   }
00098 
00099   checkSpinDaughter(1,EvtSpinType::DIRAC);
00100   checkSpinDaughter(2,EvtSpinType::DIRAC);
00101 
00102   _ballffmodel = new EvtbTosllBallFF();
00103   if (mesontype == EvtSpinType::SCALAR){
00104     _calcamp = new EvtbTosllScalarAmp(-0.313,4.344,-4.669); 
00105   }
00106   if (mesontype == EvtSpinType::VECTOR){
00107     _calcamp = new EvtbTosllVectorAmp(-0.313,4.344,-4.669); 
00108   }
00109 
00110 }
00111 
00112 
00113 
00114 
00115 
00116 
00117 
00118 
00119 
00120 
00121 
00122 
00123 
00124 
00125 
00126 

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