]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TEvtGen/EvtGenModels/EvtbTosllBall.cpp
fine tuning of TOF tail (developing task)
[u/mrichter/AliRoot.git] / TEvtGen / EvtGenModels / EvtbTosllBall.cpp
CommitLineData
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>
35using std::endl;
36
37EvtbTosllBall::~EvtbTosllBall() {
38 delete _calcamp;
39 delete _ballffmodel;
40}
41
42std::string EvtbTosllBall::getName(){
43
44 return "BTOSLLBALL";
45}
46
47
48EvtDecayBase* EvtbTosllBall::clone(){
49
50 return new EvtbTosllBall;
51
52}
53
54void 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
64void 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
83void 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