EvtGen
2.2.0
Monte Carlo generator of particle decays, in particular the weak decays of heavy flavour particles such as B mesons.
Toggle main menu visibility
Loading...
Searching...
No Matches
src
EvtGenModels
EvtSLPoleFF.cpp
Go to the documentation of this file.
1
2
/***********************************************************************
3
* Copyright 1998-2020 CERN for the benefit of the EvtGen authors *
4
* *
5
* This file is part of EvtGen. *
6
* *
7
* EvtGen is free software: you can redistribute it and/or modify *
8
* it under the terms of the GNU General Public License as published by *
9
* the Free Software Foundation, either version 3 of the License, or *
10
* (at your option) any later version. *
11
* *
12
* EvtGen is distributed in the hope that it will be useful, *
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
15
* GNU General Public License for more details. *
16
* *
17
* You should have received a copy of the GNU General Public License *
18
* along with EvtGen. If not, see <https://www.gnu.org/licenses/>. *
19
***********************************************************************/
20
21
#include "
EvtGenModels/EvtSLPoleFF.hh
"
22
23
#include "
EvtGenBase/EvtPDL.hh
"
24
#include "
EvtGenBase/EvtReport.hh
"
25
26
#include <math.h>
27
#include <stdlib.h>
28
#include <string>
29
30
EvtSLPoleFF::EvtSLPoleFF
(
int
numarg,
double
* arglist )
31
{
32
//arg - maybe ignore the last argument - if odd ... Sigh
33
m_numSLPoleargs
= numarg - ( numarg % 2 );
34
for
(
int
i = 0; i <
m_numSLPoleargs
; i++ ) {
35
m_SLPoleargs
[i] = arglist[i];
36
}
37
38
return
;
39
}
40
41
void
EvtSLPoleFF::getscalarff
(
EvtId
parent,
EvtId
,
double
t,
double
,
42
double
* fpf,
double
* f0f )
43
{
44
// Form factors have a general form, with parameters passed in
45
// from the arguements.
46
47
if
(
m_numSLPoleargs
!= 8 ) {
48
EvtGenReport
(
EVTGEN_ERROR
,
"EvtGen"
)
49
<<
"Problem in EvtSLPoleFF::getscalarff\n"
;
50
EvtGenReport
(
EVTGEN_ERROR
,
"EvtGen"
)
51
<<
"wrong number of arguements!!!\n"
;
52
}
53
54
double
mb =
EvtPDL::getMeanMass
( parent );
55
double
mb2 = mb * mb;
56
57
double
f0, af, bf, powf;
58
59
f0 =
m_SLPoleargs
[0];
60
af =
m_SLPoleargs
[1];
61
bf =
m_SLPoleargs
[2];
62
powf =
m_SLPoleargs
[3];
63
*fpf = f0 /
64
( pow( 1.0 + ( af * t / mb2 ) + ( bf * ( ( t / mb2 ) * ( t / mb2 ) ) ),
65
powf ) );
66
67
f0 =
m_SLPoleargs
[4];
68
af =
m_SLPoleargs
[5];
69
bf =
m_SLPoleargs
[6];
70
powf =
m_SLPoleargs
[7];
71
72
*f0f = f0 /
73
( pow( 1.0 + ( af * t / mb2 ) + ( bf * ( ( t / mb2 ) * ( t / mb2 ) ) ),
74
powf ) );
75
76
return
;
77
}
78
79
void
EvtSLPoleFF::getvectorff
(
EvtId
parent,
EvtId
,
double
t,
double
,
80
double
* a1f,
double
* a2f,
double
* vf,
double
* a0f )
81
{
82
if
(
m_numSLPoleargs
!= 16 ) {
83
EvtGenReport
(
EVTGEN_ERROR
,
"EvtGen"
)
84
<<
"Problem in EvtSLPoleFF::getvectorff\n"
;
85
EvtGenReport
(
EVTGEN_ERROR
,
"EvtGen"
)
86
<<
"wrong number of arguements!!!\n"
;
87
EvtGenReport
(
EVTGEN_ERROR
,
"EvtGen"
) <<
m_numSLPoleargs
<<
"\n"
;
88
}
89
90
double
mb =
EvtPDL::getMeanMass
( parent );
91
double
mb2 = mb * mb;
92
93
double
f0, af, bf, powf;
94
95
f0 =
m_SLPoleargs
[0];
96
af =
m_SLPoleargs
[1];
97
bf =
m_SLPoleargs
[2];
98
powf =
m_SLPoleargs
[3];
99
*a1f = f0 /
100
( pow( 1.0 + ( af * t / mb2 ) + ( bf * ( ( t / mb2 ) * ( t / mb2 ) ) ),
101
powf ) );
102
103
f0 =
m_SLPoleargs
[4];
104
af =
m_SLPoleargs
[5];
105
bf =
m_SLPoleargs
[6];
106
powf =
m_SLPoleargs
[7];
107
108
*a2f = f0 /
109
( pow( 1.0 + ( af * t / mb2 ) + ( bf * ( ( t / mb2 ) * ( t / mb2 ) ) ),
110
powf ) );
111
112
f0 =
m_SLPoleargs
[8];
113
af =
m_SLPoleargs
[9];
114
bf =
m_SLPoleargs
[10];
115
powf =
m_SLPoleargs
[11];
116
117
*vf = f0 /
118
( pow( 1.0 + ( af * t / mb2 ) + ( bf * ( ( t / mb2 ) * ( t / mb2 ) ) ),
119
powf ) );
120
121
f0 =
m_SLPoleargs
[12];
122
af =
m_SLPoleargs
[13];
123
bf =
m_SLPoleargs
[14];
124
powf =
m_SLPoleargs
[15];
125
126
*a0f = f0 /
127
( pow( 1.0 + ( af * t / mb2 ) + ( bf * ( ( t / mb2 ) * ( t / mb2 ) ) ),
128
powf ) );
129
return
;
130
}
131
132
void
EvtSLPoleFF::gettensorff
(
EvtId
parent,
EvtId
,
double
t,
double
,
133
double
* hf,
double
* kf,
double
* bpf,
double
* bmf )
134
{
135
if
(
m_numSLPoleargs
!= 16 ) {
136
EvtGenReport
(
EVTGEN_ERROR
,
"EvtGen"
)
137
<<
"Problem in EvtSLPoleFF::gettensorff\n"
;
138
EvtGenReport
(
EVTGEN_ERROR
,
"EvtGen"
)
139
<<
"wrong number of arguements!!!\n"
;
140
}
141
142
double
mb =
EvtPDL::getMeanMass
( parent );
143
double
mb2 = mb * mb;
144
145
double
f0, af, bf, powf;
146
147
f0 =
m_SLPoleargs
[0];
148
af =
m_SLPoleargs
[1];
149
bf =
m_SLPoleargs
[2];
150
powf =
m_SLPoleargs
[3];
151
*hf = f0 /
152
( pow( 1.0 + ( af * t / mb2 ) + ( bf * ( ( t / mb2 ) * ( t / mb2 ) ) ),
153
powf ) );
154
155
f0 =
m_SLPoleargs
[4];
156
af =
m_SLPoleargs
[5];
157
bf =
m_SLPoleargs
[6];
158
powf =
m_SLPoleargs
[7];
159
160
*kf = f0 /
161
( pow( 1.0 + ( af * t / mb2 ) + ( bf * ( ( t / mb2 ) * ( t / mb2 ) ) ),
162
powf ) );
163
164
f0 =
m_SLPoleargs
[8];
165
af =
m_SLPoleargs
[9];
166
bf =
m_SLPoleargs
[10];
167
powf =
m_SLPoleargs
[11];
168
169
*bpf = f0 /
170
( pow( 1.0 + ( af * t / mb2 ) + ( bf * ( ( t / mb2 ) * ( t / mb2 ) ) ),
171
powf ) );
172
173
f0 =
m_SLPoleargs
[12];
174
af =
m_SLPoleargs
[13];
175
bf =
m_SLPoleargs
[14];
176
powf =
m_SLPoleargs
[15];
177
178
*bmf = f0 /
179
( pow( 1.0 + ( af * t / mb2 ) + ( bf * ( ( t / mb2 ) * ( t / mb2 ) ) ),
180
powf ) );
181
return
;
182
}
183
184
void
EvtSLPoleFF::getbaryonff
(
EvtId
,
EvtId
,
double
,
double
,
double
*,
double
*,
185
double
*,
double
* )
186
{
187
EvtGenReport
(
EVTGEN_ERROR
,
"EvtGen"
)
188
<<
"Not implemented :getbaryonff in EvtSLPoleFF.\n"
;
189
::abort();
190
}
191
192
void
EvtSLPoleFF::getdiracff
(
EvtId
,
EvtId
,
double
,
double
,
double
*,
double
*,
193
double
*,
double
*,
double
*,
double
* )
194
{
195
EvtGenReport
(
EVTGEN_ERROR
,
"EvtGen"
)
196
<<
"Not implemented :getdiracff in EvtSLPoleFF.\n"
;
197
::abort();
198
}
199
200
void
EvtSLPoleFF::getraritaff
(
EvtId
,
EvtId
,
double
,
double
,
double
*,
double
*,
201
double
*,
double
*,
double
*,
double
*,
double
*,
202
double
* )
203
{
204
EvtGenReport
(
EVTGEN_ERROR
,
"EvtGen"
)
205
<<
"Not implemented :getraritaff in EvtSLPoleFF.\n"
;
206
::abort();
207
}
EvtPDL.hh
EvtReport.hh
EvtGenReport
std::ostream & EvtGenReport(EvtGenSeverity severity, const char *facility=nullptr)
Definition
EvtReport.cpp:32
EVTGEN_ERROR
@ EVTGEN_ERROR
Definition
EvtReport.hh:49
EvtSLPoleFF.hh
EvtId
Definition
EvtId.hh:27
EvtPDL::getMeanMass
static double getMeanMass(EvtId i)
Definition
EvtPDL.cpp:306
EvtSLPoleFF::m_numSLPoleargs
int m_numSLPoleargs
Definition
EvtSLPoleFF.hh:50
EvtSLPoleFF::getraritaff
void getraritaff(EvtId, EvtId, double, double, double *, double *, double *, double *, double *, double *, double *, double *) override
Definition
EvtSLPoleFF.cpp:200
EvtSLPoleFF::gettensorff
void gettensorff(EvtId parent, EvtId daught, double t, double mass, double *hf, double *kf, double *bp, double *bm) override
Definition
EvtSLPoleFF.cpp:132
EvtSLPoleFF::m_SLPoleargs
double m_SLPoleargs[16]
Definition
EvtSLPoleFF.hh:51
EvtSLPoleFF::getvectorff
void getvectorff(EvtId parent, EvtId daught, double t, double mass, double *a1f, double *a2f, double *vf, double *a0f) override
Definition
EvtSLPoleFF.cpp:79
EvtSLPoleFF::getdiracff
void getdiracff(EvtId, EvtId, double, double, double *, double *, double *, double *, double *, double *) override
Definition
EvtSLPoleFF.cpp:192
EvtSLPoleFF::getbaryonff
void getbaryonff(EvtId, EvtId, double, double, double *, double *, double *, double *) override
Definition
EvtSLPoleFF.cpp:184
EvtSLPoleFF::getscalarff
void getscalarff(EvtId parent, EvtId daught, double t, double mass, double *fpf, double *f0f) override
Definition
EvtSLPoleFF.cpp:41
EvtSLPoleFF::EvtSLPoleFF
EvtSLPoleFF(int numarg, double *arglist)
Definition
EvtSLPoleFF.cpp:30
Generated by
1.17.0