/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Generator/BesEvtGen/BesEvtGen-00-03-58/src/EvtGen/EvtGenModels/EvtbTosllAli.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) 2003      Caltech, UCSB
00010 //
00011 // Module: EvtbTosllAli.cc
00012 //
00013 // Description: Routine to implement b->sll decays according to Ali '02 et al. 
00014 //
00015 // Modification history:
00016 //
00017 //    Ryd     March 30, 2003        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/EvtbTosllAli.hh"
00028 #include "EvtGenModels/EvtbTosllAliFF.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 EvtbTosllAli::~EvtbTosllAli() {}
00037 
00038 void EvtbTosllAli::getName(std::string& model_name){
00039 
00040   model_name="BTOSLLALI";     
00041 }
00042 
00043 
00044 EvtDecayBase* EvtbTosllAli::clone(){
00045 
00046   return new EvtbTosllAli;
00047 
00048 }
00049 
00050 void EvtbTosllAli::decay( EvtParticle *p ){
00051 
00052   setWeight(p->initializePhaseSpace(getNDaug(),getDaugs(),_poleSize,1,2));
00053 
00054   _calcamp->CalcAmp(p,_amp2,_aliffmodel);
00055   
00056 }
00057 
00058 
00059 void EvtbTosllAli::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                                            _aliffmodel,_poleSize);
00072 
00073   setProbMax(mymaxprob);
00074 
00075 }
00076 
00077 
00078 void EvtbTosllAli::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") << "EvtbTosllAli 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   _aliffmodel = new EvtbTosllAliFF();
00103   if (mesontype == EvtSpinType::SCALAR){
00104     _calcamp = new EvtbTosllScalarAmp(-0313,4.344,-4.669); 
00105   }
00106   if (mesontype == EvtSpinType::VECTOR){
00107     _calcamp = new EvtbTosllVectorAmp(-0313,4.344,-4.669); 
00108   }
00109 
00110 }
00111 
00112 
00113 
00114 
00115 

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