Line data Source code
1 : //--------------------------------------------------------------------------
2 : //
3 : // Environment:
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.
7 : //
8 : // Copyright Information: See EvtGen/COPYRIGHT
9 : // Copyright (C) 2003 Caltech, UCSB
10 : //
11 : // Module: EvtbTosllAli.cc
12 : //
13 : // Description: Routine to implement b->sll decays according to Ali '02 et al.
14 : //
15 : // Modification history:
16 : //
17 : // Ryd March 30, 2003 Module created
18 : //
19 : //------------------------------------------------------------------------
20 : //
21 : #include "EvtGenBase/EvtPatches.hh"
22 : #include <stdlib.h>
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"
32 :
33 : #include <string>
34 : using std::endl;
35 :
36 0 : EvtbTosllAli::~EvtbTosllAli() {}
37 :
38 : std::string EvtbTosllAli::getName(){
39 :
40 0 : return "BTOSLLALI";
41 : }
42 :
43 :
44 : EvtDecayBase* EvtbTosllAli::clone(){
45 :
46 0 : return new EvtbTosllAli;
47 :
48 0 : }
49 :
50 : void EvtbTosllAli::decay( EvtParticle *p ){
51 :
52 0 : setWeight(p->initializePhaseSpace(getNDaug(),getDaugs(),false,
53 0 : _poleSize,1,2));
54 :
55 0 : _calcamp->CalcAmp(p,_amp2,_aliffmodel);
56 :
57 0 : }
58 :
59 :
60 : void EvtbTosllAli::initProbMax(){
61 :
62 0 : EvtId parnum,mesnum,l1num,l2num;
63 :
64 0 : parnum = getParentId();
65 0 : mesnum = getDaug(0);
66 0 : l1num = getDaug(1);
67 0 : l2num = getDaug(2);
68 :
69 : //This routine sets the _poleSize.
70 0 : double mymaxprob = _calcamp->CalcMaxProb(parnum,mesnum,
71 0 : l1num,l2num,
72 0 : _aliffmodel,_poleSize);
73 :
74 0 : setProbMax(mymaxprob);
75 :
76 0 : }
77 :
78 :
79 : void EvtbTosllAli::init(){
80 :
81 0 : checkNArg(0);
82 0 : checkNDaug(3);
83 :
84 : //We expect the parent to be a scalar
85 : //and the daughters to be X lepton+ lepton-
86 :
87 0 : checkSpinParent(EvtSpinType::SCALAR);
88 :
89 0 : EvtSpinType::spintype mesontype=EvtPDL::getSpinType(getDaug(0));
90 :
91 0 : if ( !(mesontype == EvtSpinType::VECTOR||
92 0 : mesontype == EvtSpinType::SCALAR)) {
93 0 : report(Severity::Error,"EvtGen") << "EvtbTosllAli generator expected "
94 0 : << " a SCALAR or VECTOR 1st daughter, found:"<<
95 0 : EvtPDL::name(getDaug(0)).c_str()<<endl;
96 0 : report(Severity::Error,"EvtGen") << "Will terminate execution!"<<endl;
97 0 : ::abort();
98 : }
99 :
100 0 : checkSpinDaughter(1,EvtSpinType::DIRAC);
101 0 : checkSpinDaughter(2,EvtSpinType::DIRAC);
102 :
103 0 : _aliffmodel = new EvtbTosllAliFF();
104 0 : if (mesontype == EvtSpinType::SCALAR){
105 0 : _calcamp = new EvtbTosllScalarAmp(-0.313,4.344,-4.669);
106 0 : }
107 0 : if (mesontype == EvtSpinType::VECTOR){
108 0 : _calcamp = new EvtbTosllVectorAmp(-0.313,4.344,-4.669);
109 0 : }
110 :
111 0 : }
112 :
113 :
114 :
115 :
116 :
|