]>
Commit | Line | Data |
---|---|---|
da0e9ce3 | 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) 2000 Caltech, UCSB | |
10 | // | |
11 | // Module: EvtbTosllBall.cc | |
12 | // | |
13 | // Description: Routine to implement b->sll decays according to Ball et al. | |
14 | // | |
15 | // Modification history: | |
16 | // | |
17 | // Ryd January 5, 2000 Module created | |
18 | // | |
19 | // jjhollar October 7, 2005 Option to select form factors at runtime | |
20 | //------------------------------------------------------------------------ | |
21 | // | |
22 | #include "EvtGenBase/EvtPatches.hh" | |
23 | #include <stdlib.h> | |
24 | #include "EvtGenBase/EvtParticle.hh" | |
25 | #include "EvtGenBase/EvtGenKine.hh" | |
26 | #include "EvtGenBase/EvtPDL.hh" | |
27 | #include "EvtGenBase/EvtReport.hh" | |
28 | #include "EvtGenModels/EvtbTosllBall.hh" | |
29 | #include "EvtGenModels/EvtbTosllBallFF.hh" | |
30 | #include "EvtGenModels/EvtbTosllAmp.hh" | |
31 | #include "EvtGenModels/EvtbTosllScalarAmp.hh" | |
32 | #include "EvtGenModels/EvtbTosllVectorAmp.hh" | |
33 | ||
34 | #include <string> | |
35 | using std::endl; | |
36 | ||
37 | EvtbTosllBall::~EvtbTosllBall() { | |
38 | delete _calcamp; | |
39 | delete _ballffmodel; | |
40 | } | |
41 | ||
42 | std::string EvtbTosllBall::getName(){ | |
43 | ||
44 | return "BTOSLLBALL"; | |
45 | } | |
46 | ||
47 | ||
48 | EvtDecayBase* EvtbTosllBall::clone(){ | |
49 | ||
50 | return new EvtbTosllBall; | |
51 | ||
52 | } | |
53 | ||
54 | void EvtbTosllBall::decay( EvtParticle *p ){ | |
55 | ||
0ca57c2f | 56 | setWeight(p->initializePhaseSpace(getNDaug(),getDaugs(),false, |
57 | _poleSize,1,2)); | |
da0e9ce3 | 58 | |
59 | _calcamp->CalcAmp(p,_amp2,_ballffmodel); | |
60 | ||
61 | } | |
62 | ||
63 | ||
64 | void EvtbTosllBall::initProbMax(){ | |
65 | ||
66 | EvtId parnum,mesnum,l1num,l2num; | |
67 | ||
68 | parnum = getParentId(); | |
69 | mesnum = getDaug(0); | |
70 | l1num = getDaug(1); | |
71 | l2num = getDaug(2); | |
72 | ||
73 | //This routine sets the _poleSize. | |
74 | double mymaxprob = _calcamp->CalcMaxProb(parnum,mesnum, | |
75 | l1num,l2num, | |
76 | _ballffmodel,_poleSize); | |
77 | ||
78 | setProbMax(mymaxprob); | |
79 | ||
80 | } | |
81 | ||
82 | ||
83 | void EvtbTosllBall::init(){ | |
84 | ||
85 | // First choose form factors from the .DEC file | |
86 | // 1 = Ali-Ball '01 LCSR | |
87 | // 2 = Ali-Ball '99 LCSR | |
88 | // 3 = Colangelo 3pt QCD | |
89 | // 4 = Melikhov Lattice/Quark dispersion | |
90 | // 5 = ??? | |
91 | // 6 = Ball-Zwicky '05 LCSR (mb = 480) | |
92 | // 7 = Ball-Zwicky '05 LCSR (mb = 460 - pseudoscalar modes only) | |
93 | ||
94 | // The default is Ali '01 | |
95 | int theFormFactorModel = 1; | |
96 | ||
97 | if(getNArg() == 1) | |
98 | theFormFactorModel = (int)getArg(0); | |
99 | ||
100 | checkNDaug(3); | |
101 | ||
102 | //We expect the parent to be a scalar | |
103 | //and the daughters to be X lepton+ lepton- | |
104 | ||
105 | checkSpinParent(EvtSpinType::SCALAR); | |
106 | ||
107 | EvtSpinType::spintype mesontype=EvtPDL::getSpinType(getDaug(0)); | |
108 | ||
109 | if ( !(mesontype == EvtSpinType::VECTOR|| | |
110 | mesontype == EvtSpinType::SCALAR)) { | |
111 | report(ERROR,"EvtGen") << "EvtbTosllBall generator expected " | |
112 | << " a SCALAR or VECTOR 1st daughter, found:"<< | |
113 | EvtPDL::name(getDaug(0)).c_str()<<endl; | |
114 | report(ERROR,"EvtGen") << "Will terminate execution!"<<endl; | |
115 | ::abort(); | |
116 | } | |
117 | ||
118 | checkSpinDaughter(1,EvtSpinType::DIRAC); | |
119 | checkSpinDaughter(2,EvtSpinType::DIRAC); | |
120 | ||
121 | _ballffmodel = new EvtbTosllBallFF(theFormFactorModel); | |
122 | if (mesontype == EvtSpinType::SCALAR){ | |
123 | _calcamp = new EvtbTosllScalarAmp(-0.313,4.344,-4.669); | |
124 | } else if (mesontype == EvtSpinType::VECTOR){ | |
125 | _calcamp = new EvtbTosllVectorAmp(-0.313,4.344,-4.669); | |
126 | } | |
127 | ||
128 | } | |
129 | ||
130 | ||
131 | ||
132 | ||
133 | ||
134 | ||
135 | ||
136 | ||
137 | ||
138 | ||
139 | ||
140 | ||
141 | ||
142 | ||
143 | ||
144 |