1 //--------------------------------------------------------------------------
4 // This software is part of the EvtGen package developed jointly
5 // for the BaBar and CLEO collaborations. If you use all or part
6 // of it, please give an appropriate acknowledgement.
8 // Copyright Information: See EvtGen/COPYRIGHT
9 // Copyright (C) 2003 Caltech, UCSB
11 // Module: EvtbTosllAli.cc
13 // Description: Routine to implement b->sll decays according to Ali '02 et al.
15 // Modification history:
17 // Ryd March 30, 2003 Module created
19 //------------------------------------------------------------------------
21 #include "EvtGenBase/EvtPatches.hh"
23 #include "EvtGenBase/EvtParticle.hh"
24 #include "EvtGenBase/EvtGenKine.hh"
25 #include "EvtGenBase/EvtPDL.hh"
26 #include "EvtGenBase/EvtReport.hh"
27 #include "EvtGenModels/EvtbTosllAli.hh"
28 #include "EvtGenModels/EvtbTosllAliFF.hh"
29 #include "EvtGenModels/EvtbTosllAmp.hh"
30 #include "EvtGenModels/EvtbTosllScalarAmp.hh"
31 #include "EvtGenModels/EvtbTosllVectorAmp.hh"
36 EvtbTosllAli::~EvtbTosllAli() {}
38 std::string EvtbTosllAli::getName(){
44 EvtDecayBase* EvtbTosllAli::clone(){
46 return new EvtbTosllAli;
50 void EvtbTosllAli::decay( EvtParticle *p ){
52 setWeight(p->initializePhaseSpace(getNDaug(),getDaugs(),_poleSize,1,2));
54 _calcamp->CalcAmp(p,_amp2,_aliffmodel);
59 void EvtbTosllAli::initProbMax(){
61 EvtId parnum,mesnum,l1num,l2num;
63 parnum = getParentId();
68 //This routine sets the _poleSize.
69 double mymaxprob = _calcamp->CalcMaxProb(parnum,mesnum,
71 _aliffmodel,_poleSize);
73 setProbMax(mymaxprob);
78 void EvtbTosllAli::init(){
83 //We expect the parent to be a scalar
84 //and the daughters to be X lepton+ lepton-
86 checkSpinParent(EvtSpinType::SCALAR);
88 EvtSpinType::spintype mesontype=EvtPDL::getSpinType(getDaug(0));
90 if ( !(mesontype == EvtSpinType::VECTOR||
91 mesontype == EvtSpinType::SCALAR)) {
92 report(ERROR,"EvtGen") << "EvtbTosllAli generator expected "
93 << " a SCALAR or VECTOR 1st daughter, found:"<<
94 EvtPDL::name(getDaug(0)).c_str()<<endl;
95 report(ERROR,"EvtGen") << "Will terminate execution!"<<endl;
99 checkSpinDaughter(1,EvtSpinType::DIRAC);
100 checkSpinDaughter(2,EvtSpinType::DIRAC);
102 _aliffmodel = new EvtbTosllAliFF();
103 if (mesontype == EvtSpinType::SCALAR){
104 _calcamp = new EvtbTosllScalarAmp(-0.313,4.344,-4.669);
106 if (mesontype == EvtSpinType::VECTOR){
107 _calcamp = new EvtbTosllVectorAmp(-0.313,4.344,-4.669);