BOSS
7.0.3
BESIII Offline Software System
Loading...
Searching...
No Matches
EvtBtoXsgamma.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
// Module: EvtBtoXsgamma.cc
9
//
10
// Description: Routine to perform two-body non-resonant B->Xs,gamma decays.
11
// Set the first input parameter to 1 to use the Ali-Greub model,
12
// or 2 to use the Kagan-Neubert model.
13
#include "
EvtGenBase/EvtPatches.hh
"
14
15
//
16
// Modification history:
17
//
18
// Mark Ian Williams July 20, 2000 Module created
19
// Mark Ian Williams July 21, 2000 Module works
20
// Mark Ian Williams July 25, 2000 Works for all Xs modes
21
// Mark Ian Williams Aug 09, 2000 New values for mass minima
22
// Mark Ian Williams Sept 06, 2000 14 parameter M_Xs function
23
// Mark Ian Williams Sept 07, 2000 18 parameter M_Xs function
24
// Mark Ian Williams Sept 07, 2000 Tidied up the code
25
// Mark Ian Williams Sept 10, 2000 Updated parameters
26
// Mark Ian Williams Sept 11, 2000 Finalised code
27
// Jane Tinslay March 21, 2001 Re-worked so that you can choose
28
// between the Ali-Greub and Kagan-Neubert
29
// Modules.
30
//------------------------------------------------------------------------
31
//
32
33
#include <stdlib.h>
34
#include "
EvtGenBase/EvtParticle.hh
"
35
#include "
EvtGenBase/EvtGenKine.hh
"
36
#include "
EvtGenBase/EvtPDL.hh
"
37
#include "
EvtGenBase/EvtReport.hh
"
38
#include "
EvtGenModels/EvtBtoXsgamma.hh
"
39
#include <string>
40
#include "
EvtGenBase/EvtConst.hh
"
41
#include "
EvtGenModels/EvtBtoXsgammaAliGreub.hh
"
42
#include "
EvtGenModels/EvtBtoXsgammaKagan.hh
"
43
#include "
EvtGenModels/EvtBtoXsgammaFixedMass.hh
"
44
#include "
EvtGenModels/EvtBtoXsgammaFlatEnergy.hh
"
45
using
std::endl;
46
47
EvtBtoXsgamma::~EvtBtoXsgamma
() {
48
49
delete
_model; _model=0;
50
51
}
52
53
void
EvtBtoXsgamma::getName
(std::string& model_name){
54
55
model_name=
"BTOXSGAMMA"
;
56
57
}
58
59
EvtDecayBase
*
EvtBtoXsgamma::clone
(){
60
61
return
new
EvtBtoXsgamma
;
62
63
}
64
65
void
EvtBtoXsgamma::init
(){
66
//Arguments:
67
// 0: Ali-Greub model = 1, Kagan model = 2
68
//No more arguments for Ali-Greub model
69
// 1:
70
// 2:
71
// 3:
72
73
// check that at least one b->sg model has been selected
74
if
(
getNArg
() == 0) {
75
76
report
(
ERROR
,
"EvtGen"
) <<
"EvtBtoXsgamma generator expected "
77
<<
" at least 1 argument but found: "
<<
getNArg
()<<endl;
78
report
(
ERROR
,
"EvtGen"
) <<
"Will terminate execution!"
<<endl;
79
::abort();
80
}
81
}
82
83
void
EvtBtoXsgamma::initProbMax
(){
84
85
noProbMax
();
86
87
}
88
89
void
EvtBtoXsgamma::decay
(
EvtParticle
*p ){
90
91
//initialize here. -- its too damn slow otherwise.
92
93
if
( _model == 0 ) {
94
95
if
(
getArg
(0) == 1) _model =
new
EvtBtoXsgammaAliGreub
();
96
else
if
(
getArg
(0) == 2) _model =
new
EvtBtoXsgammaKagan
();
97
else
if
(
getArg
(0) == 3) _model =
new
EvtBtoXsgammaFixedMass
();
98
else
if
(
getArg
(0) == 4) _model =
new
EvtBtoXsgammaFlatEnergy
();
99
else
{
100
report
(
ERROR
,
"EvtGen"
) <<
"No valid EvtBtoXsgamma generator model selected "
101
<<
"Set arg(0) to 1 for Ali-Greub model or 2 for "
102
<<
" Kagan model or 3 for a fixed mass"
<<endl;
103
report
(
ERROR
,
"EvtGen"
) <<
"Will terminate execution!"
<<endl;
104
::abort();
105
106
}
107
_model->
init
(
getNArg
(),
getArgs
());
108
}
109
110
111
// if ( p->getNDaug() != 0 ) {
112
//Will end up here because maxrate multiplies by 1.2
113
// report(DEBUG,"EvtGen") << "In EvtBtoXsgamma: X_s daughters should not be here!"<<endl;
114
// return;
115
//}
116
117
double
m_b
;
118
int
i;
119
p->
makeDaughters
(
getNDaug
(),
getDaugs
());
120
EvtParticle
*pdaug[
MAX_DAUG
];
121
122
for
(i=0;i<
getNDaug
();i++){
123
pdaug[i]=p->
getDaug
(i);
124
}
125
126
static
EvtVector4R
p4[
MAX_DAUG
];
127
static
double
mass
[
MAX_DAUG
];
128
129
m_b
= p->
mass
();
130
131
mass
[1] =
EvtPDL::getMass
(
getDaug
(1));
132
133
int
Xscode =
EvtPDL::getStdHep
(
getDaug
(0));
134
135
mass
[0] = _model->
GetMass
(Xscode);
136
137
EvtGenKine::PhaseSpace
(
getNDaug
(),
mass
, p4,
m_b
);
138
139
for
(i=0;i<
getNDaug
();i++){
140
pdaug[i]->
init
(
getDaugs
()[i], p4[i] );
141
}
142
143
}
144
mass
double mass
Definition:
CosmicGenerator.cxx:138
EvtBtoXsgammaAliGreub.hh
EvtBtoXsgammaFixedMass.hh
EvtBtoXsgammaFlatEnergy.hh
EvtBtoXsgammaKagan.hh
EvtBtoXsgamma.hh
EvtConst.hh
EvtGenKine.hh
EvtPDL.hh
EvtParticle.hh
MAX_DAUG
const int MAX_DAUG
Definition:
EvtParticle.hh:38
EvtPatches.hh
report
ostream & report(Severity severity, const char *facility)
Definition:
EvtReport.cc:36
EvtReport.hh
ERROR
@ ERROR
Definition:
EvtReport.hh:49
m_b
*********DOUBLE PRECISION m_pi INTEGER m_lenwt !max no of aux weights INTEGER m_phmax !maximum photon multiplicity ISR FSR *DOUBLE COMPLEX m_Pauli4 DOUBLE COMPLEX m_AmpBorn DOUBLE COMPLEX m_AmpBoxy DOUBLE COMPLEX m_AmpBorn1 DOUBLE COMPLEX m_AmpBorn2 DOUBLE COMPLEX m_AmpExpo2p DOUBLE COMPLEX m_Rmat DOUBLE COMPLEX m_BoxGZut !DOUBLE COMPLEX m_F1finPair2 !DOUBLE PRECISION m_Vcut DOUBLE PRECISION m_Alfinv DOUBLE PRECISION m_Lorin1 DOUBLE PRECISION m_Lorin2 DOUBLE PRECISION m_b
Definition:
GPS.h:30
EvtBtoXsgammaAbsModel::init
virtual void init(int, double *)
Definition:
EvtBtoXsgammaAbsModel.cc:28
EvtBtoXsgammaAbsModel::GetMass
virtual double GetMass(int code)=0
EvtBtoXsgammaAliGreub
Definition:
EvtBtoXsgammaAliGreub.hh:28
EvtBtoXsgammaFixedMass
Definition:
EvtBtoXsgammaFixedMass.hh:27
EvtBtoXsgammaFlatEnergy
Definition:
EvtBtoXsgammaFlatEnergy.hh:27
EvtBtoXsgammaKagan
Definition:
EvtBtoXsgammaKagan.hh:29
EvtBtoXsgamma::clone
EvtDecayBase * clone()
Definition:
EvtBtoXsgamma.cc:59
EvtBtoXsgamma::decay
void decay(EvtParticle *p)
Definition:
EvtBtoXsgamma.cc:89
EvtBtoXsgamma::EvtBtoXsgamma
EvtBtoXsgamma()
Definition:
EvtBtoXsgamma.hh:36
EvtBtoXsgamma::init
void init()
Definition:
EvtBtoXsgamma.cc:65
EvtBtoXsgamma::initProbMax
void initProbMax()
Definition:
EvtBtoXsgamma.cc:83
EvtBtoXsgamma::getName
void getName(std::string &name)
Definition:
EvtBtoXsgamma.cc:53
EvtBtoXsgamma::~EvtBtoXsgamma
virtual ~EvtBtoXsgamma()
Definition:
EvtBtoXsgamma.cc:47
EvtDecayBase
Definition:
EvtDecayBase.hh:33
EvtDecayBase::getArg
double getArg(int j)
Definition:
EvtDecayBase.cc:564
EvtDecayBase::noProbMax
void noProbMax()
Definition:
EvtDecayBase.cc:304
EvtDecayBase::getArgs
double * getArgs()
Definition:
EvtDecayBase.cc:547
EvtDecayBase::getNDaug
int getNDaug()
Definition:
EvtDecayBase.hh:64
EvtDecayBase::getNArg
int getNArg()
Definition:
EvtDecayBase.hh:67
EvtDecayBase::getDaugs
EvtId * getDaugs()
Definition:
EvtDecayBase.hh:65
EvtDecayBase::getDaug
EvtId getDaug(int i)
Definition:
EvtDecayBase.hh:66
EvtGenKine::PhaseSpace
static double PhaseSpace(int ndaug, double mass[30], EvtVector4R p4[30], double mp)
Definition:
EvtGenKine.cc:50
EvtPDL::getStdHep
static int getStdHep(EvtId id)
Definition:
EvtPDL.hh:56
EvtPDL::getMass
static double getMass(EvtId i)
Definition:
EvtPDL.hh:46
EvtParticle
Definition:
EvtParticle.hh:42
EvtParticle::makeDaughters
void makeDaughters(int ndaug, EvtId *id)
Definition:
EvtParticle.cc:1177
EvtParticle::init
virtual void init(EvtId part_n, const EvtVector4R &p4)=0
EvtParticle::getDaug
EvtParticle * getDaug(int i)
Definition:
EvtParticle.cc:85
EvtParticle::mass
double mass() const
Definition:
EvtParticle.cc:127
EvtVector4R
Definition:
EvtVector4R.hh:29
source
Generator
BesEvtGen
BesEvtGen-00-03-90
src
EvtGen
EvtGenModels
EvtBtoXsgamma.cc
Generated by
1.9.6