BOSS 7.0.4
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtbTosllBall.cc
Go to the documentation of this file.
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//------------------------------------------------------------------------
20//
22#include <stdlib.h>
25#include "EvtGenBase/EvtPDL.hh"
32
33#include <string>
34using std::endl;
35
37
38void EvtbTosllBall::getName(std::string& model_name){
39
40 model_name="BTOSLLBALL";
41}
42
43
45
46 return new EvtbTosllBall;
47
48}
49
51
52 setWeight(p->initializePhaseSpace(getNDaug(),getDaugs(),_poleSize,1,2));
53
54 _calcamp->CalcAmp(p,_amp2,_ballffmodel);
55
56}
57
58
60
61 EvtId parnum,mesnum,l1num,l2num;
62
63 parnum = getParentId();
64 mesnum = getDaug(0);
65 l1num = getDaug(1);
66 l2num = getDaug(2);
67
68 //This routine sets the _poleSize.
69 double mymaxprob = _calcamp->CalcMaxProb(parnum,mesnum,
70 l1num,l2num,
71 _ballffmodel,_poleSize);
72 // cout << EvtPDL::getStdHep(mesnum) << "\t" << mymaxprob << endl;
73 setProbMax(mymaxprob);
74
75}
76
77
79
80 checkNArg(0);
81 checkNDaug(3);
82
83 //We expect the parent to be a scalar
84 //and the daughters to be X lepton+ lepton-
85
87
89
90 if ( !(mesontype == EvtSpinType::VECTOR||
91 mesontype == EvtSpinType::SCALAR)) {
92 report(ERROR,"EvtGen") << "EvtbTosllBall 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;
96 ::abort();
97 }
98
101
102 _ballffmodel = new EvtbTosllBallFF();
103 if (mesontype == EvtSpinType::SCALAR){
104 _calcamp = new EvtbTosllScalarAmp(-0.313,4.344,-4.669);
105 }
106 if (mesontype == EvtSpinType::VECTOR){
107 _calcamp = new EvtbTosllVectorAmp(-0.313,4.344,-4.669);
108 }
109
110}
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
ostream & report(Severity severity, const char *facility)
Definition: EvtReport.cc:36
@ ERROR
Definition: EvtReport.hh:49
void setWeight(double weight)
Definition: EvtDecayAmp.hh:32
EvtAmp _amp2
Definition: EvtDecayAmp.hh:66
void checkSpinDaughter(int d1, EvtSpinType::spintype sp)
void checkSpinParent(EvtSpinType::spintype sp)
void setProbMax(double prbmx)
EvtId getParentId()
Definition: EvtDecayBase.hh:60
void checkNDaug(int d1, int d2=-1)
EvtId * getDaugs()
Definition: EvtDecayBase.hh:65
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
EvtId getDaug(int i)
Definition: EvtDecayBase.hh:66
Definition: EvtId.hh:27
static std::string name(EvtId i)
Definition: EvtPDL.hh:64
static EvtSpinType::spintype getSpinType(EvtId i)
Definition: EvtPDL.hh:61
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
virtual void CalcAmp(EvtParticle *parent, EvtAmp &amp, EvtbTosllFF *formFactors)=0
double CalcMaxProb(EvtId parent, EvtId meson, EvtId lepton, EvtId nudaug, EvtbTosllFF *formFactors, double &poleSize)
Definition: EvtbTosllAmp.cc:37
void initProbMax()
virtual ~EvtbTosllBall()
void decay(EvtParticle *p)
void getName(std::string &name)
EvtDecayBase * clone()