BOSS
8.0.0
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 "
../EvtGenBase/EvtConst.hh
"
34
#include "
../EvtGenBase/EvtGenKine.hh
"
35
#include "
../EvtGenBase/EvtPDL.hh
"
36
#include "
../EvtGenBase/EvtParticle.hh
"
37
#include "
../EvtGenBase/EvtReport.hh
"
38
#include "
EvtBtoXsgamma.hh
"
39
#include "
EvtBtoXsgammaAliGreub.hh
"
40
#include "
EvtBtoXsgammaFixedMass.hh
"
41
#include "
EvtBtoXsgammaFlatEnergy.hh
"
42
#include "
EvtBtoXsgammaKagan.hh
"
43
#include <stdlib.h>
44
#include <string>
45
using
std::endl;
46
47
EvtBtoXsgamma::~EvtBtoXsgamma
() {
48
49
delete
_model;
50
_model = 0;
51
}
52
53
void
EvtBtoXsgamma::getName
( std::string& model_name ) { model_name =
"BTOXSGAMMA"
; }
54
55
EvtDecayBase
*
EvtBtoXsgamma::clone
() {
return
new
EvtBtoXsgamma
; }
56
57
void
EvtBtoXsgamma::init
() {
58
// Arguments:
59
// 0: Ali-Greub model = 1, Kagan model = 2
60
// No more arguments for Ali-Greub model
61
// 1:
62
// 2:
63
// 3:
64
65
// check that at least one b->sg model has been selected
66
if
(
getNArg
() == 0 )
67
{
68
69
report
(
ERROR
,
"EvtGen"
) <<
"EvtBtoXsgamma generator expected "
70
<<
" at least 1 argument but found: "
<<
getNArg
() << endl;
71
report
(
ERROR
,
"EvtGen"
) <<
"Will terminate execution!"
<< endl;
72
::abort();
73
}
74
}
75
76
void
EvtBtoXsgamma::initProbMax
() {
noProbMax
(); }
77
78
void
EvtBtoXsgamma::decay
(
EvtParticle
* p ) {
79
80
// initialize here. -- its too damn slow otherwise.
81
82
if
( _model == 0 )
83
{
84
85
if
(
getArg
( 0 ) == 1 ) _model =
new
EvtBtoXsgammaAliGreub
();
86
else
if
(
getArg
( 0 ) == 2 ) _model =
new
EvtBtoXsgammaKagan
();
87
else
if
(
getArg
( 0 ) == 3 ) _model =
new
EvtBtoXsgammaFixedMass
();
88
else
if
(
getArg
( 0 ) == 4 ) _model =
new
EvtBtoXsgammaFlatEnergy
();
89
else
90
{
91
report
(
ERROR
,
"EvtGen"
) <<
"No valid EvtBtoXsgamma generator model selected "
92
<<
"Set arg(0) to 1 for Ali-Greub model or 2 for "
93
<<
" Kagan model or 3 for a fixed mass"
<< endl;
94
report
(
ERROR
,
"EvtGen"
) <<
"Will terminate execution!"
<< endl;
95
::abort();
96
}
97
_model->init(
getNArg
(),
getArgs
() );
98
}
99
100
// if ( p->getNDaug() != 0 ) {
101
// Will end up here because maxrate multiplies by 1.2
102
// report(DEBUG,"EvtGen") << "In EvtBtoXsgamma: X_s daughters should not be here!"<<endl;
103
// return;
104
//}
105
106
double
m_b
;
107
int
i;
108
p->
makeDaughters
(
getNDaug
(),
getDaugs
() );
109
EvtParticle
* pdaug[
MAX_DAUG
];
110
111
for
( i = 0; i <
getNDaug
(); i++ ) { pdaug[i] = p->
getDaug
( i ); }
112
113
static
EvtVector4R
p4[
MAX_DAUG
];
114
static
double
mass
[
MAX_DAUG
];
115
116
m_b
= p->
mass
();
117
118
mass
[1] =
EvtPDL::getMass
(
getDaug
( 1 ) );
119
120
int
Xscode =
EvtPDL::getStdHep
(
getDaug
( 0 ) );
121
122
mass
[0] = _model->GetMass( Xscode );
123
124
EvtGenKine::PhaseSpace
(
getNDaug
(),
mass
, p4,
m_b
);
125
126
for
( i = 0; i <
getNDaug
(); i++ ) { pdaug[i]->
init
(
getDaugs
()[i], p4[i] ); }
127
}
mass
double mass
Definition
CosmicGenerator.cxx:128
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:34
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
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:55
EvtBtoXsgamma::decay
void decay(EvtParticle *p)
Definition
EvtBtoXsgamma.cc:78
EvtBtoXsgamma::EvtBtoXsgamma
EvtBtoXsgamma()
Definition
EvtBtoXsgamma.hh:35
EvtBtoXsgamma::init
void init()
Definition
EvtBtoXsgamma.cc:57
EvtBtoXsgamma::initProbMax
void initProbMax()
Definition
EvtBtoXsgamma.cc:76
EvtBtoXsgamma::getName
void getName(std::string &name)
Definition
EvtBtoXsgamma.cc:53
EvtBtoXsgamma::~EvtBtoXsgamma
virtual ~EvtBtoXsgamma()
Definition
EvtBtoXsgamma.cc:47
EvtDecayBase::getArg
double getArg(int j)
Definition
EvtDecayBase.cc:520
EvtDecayBase::EvtDecayBase
EvtDecayBase()
Definition
EvtDecayBase.cc:205
EvtDecayBase::noProbMax
void noProbMax()
Definition
EvtDecayBase.cc:267
EvtDecayBase::getArgs
double * getArgs()
Definition
EvtDecayBase.cc:505
EvtDecayBase::getNDaug
int getNDaug()
Definition
EvtDecayBase.hh:67
EvtDecayBase::getNArg
int getNArg()
Definition
EvtDecayBase.hh:70
EvtDecayBase::getDaugs
EvtId * getDaugs()
Definition
EvtDecayBase.hh:68
EvtDecayBase::getDaug
EvtId getDaug(int i)
Definition
EvtDecayBase.hh:69
EvtGenKine::PhaseSpace
static double PhaseSpace(int ndaug, double mass[30], EvtVector4R p4[30], double mp)
Definition
EvtGenKine.cc:47
EvtPDL::getStdHep
static int getStdHep(EvtId id)
Definition
EvtPDL.hh:61
EvtPDL::getMass
static double getMass(EvtId i)
Definition
EvtPDL.hh:44
EvtParticle
Definition
EvtParticle.hh:42
EvtParticle::makeDaughters
void makeDaughters(int ndaug, EvtId *id)
Definition
EvtParticle.cc:1150
EvtParticle::init
virtual void init(EvtId part_n, const EvtVector4R &p4)=0
EvtParticle::getDaug
EvtParticle * getDaug(int i)
Definition
EvtParticle.cc:80
EvtParticle::mass
double mass() const
Definition
EvtParticle.cc:114
EvtVector4R
Definition
EvtVector4R.hh:29
8.0.0
BOSS_Gen
BesEvtGen
src
EvtGen
EvtGenModels
EvtBtoXsgamma.cc
Generated by
1.16.1