BOSS 8.0.0
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//
21#include "EvtbTosllBall.hh"
27#include "EvtbTosllAmp.hh"
28#include "EvtbTosllBallFF.hh"
29#include "EvtbTosllScalarAmp.hh"
30#include "EvtbTosllVectorAmp.hh"
31#include <stdlib.h>
32
33#include <string>
34using std::endl;
35
37
38void EvtbTosllBall::getName( std::string& model_name ) { model_name = "BTOSLLBALL"; }
39
41
43
44 setWeight( p->initializePhaseSpace( getNDaug(), getDaugs(), _poleSize, 1, 2 ) );
45
46 _calcamp->CalcAmp( p, _amp2, _ballffmodel );
47}
48
50
51 EvtId parnum, mesnum, l1num, l2num;
52
53 parnum = getParentId();
54 mesnum = getDaug( 0 );
55 l1num = getDaug( 1 );
56 l2num = getDaug( 2 );
57
58 // This routine sets the _poleSize.
59 double mymaxprob =
60 _calcamp->CalcMaxProb( parnum, mesnum, l1num, l2num, _ballffmodel, _poleSize );
61 // cout << EvtPDL::getStdHep(mesnum) << "\t" << mymaxprob << endl;
62 setProbMax( mymaxprob );
63}
64
66
67 checkNArg( 0 );
68 checkNDaug( 3 );
69
70 // We expect the parent to be a scalar
71 // and the daughters to be X lepton+ lepton-
72
74
76
77 if ( !( mesontype == EvtSpinType::VECTOR || mesontype == EvtSpinType::SCALAR ) )
78 {
79 report( ERROR, "EvtGen" ) << "EvtbTosllBall generator expected "
80 << " a SCALAR or VECTOR 1st daughter, found:"
81 << EvtPDL::name( getDaug( 0 ) ).c_str() << endl;
82 report( ERROR, "EvtGen" ) << "Will terminate execution!" << endl;
83 ::abort();
84 }
85
88
89 _ballffmodel = new EvtbTosllBallFF();
90 if ( mesontype == EvtSpinType::SCALAR )
91 { _calcamp = new EvtbTosllScalarAmp( -0.313, 4.344, -4.669 ); }
92 if ( mesontype == EvtSpinType::VECTOR )
93 { _calcamp = new EvtbTosllVectorAmp( -0.313, 4.344, -4.669 ); }
94}
ostream & report(Severity severity, const char *facility)
Definition EvtReport.cc:34
@ ERROR
Definition EvtReport.hh:49
void setWeight(double weight)
void checkSpinDaughter(int d1, EvtSpinType::spintype sp)
void checkSpinParent(EvtSpinType::spintype sp)
void setProbMax(double prbmx)
EvtId getParentId()
void checkNDaug(int d1, int d2=-1)
EvtId * getDaugs()
void checkNArg(int a1, int a2=-1, int a3=-1, int a4=-1)
EvtId getDaug(int i)
Definition EvtId.hh:27
static std::string name(EvtId i)
Definition EvtPDL.hh:70
static EvtSpinType::spintype getSpinType(EvtId i)
Definition EvtPDL.hh:66
double initializePhaseSpace(int numdaughter, EvtId *daughters, double poleSize=-1., int whichTwo1=0, int whichTwo2=1)
virtual ~EvtbTosllBall()
void decay(EvtParticle *p)
void getName(std::string &name)
EvtDecayBase * clone()