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
EvtMelikhovFF.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/EvtMelikhovFF.hh
"
22
23
#include "
EvtGenBase/EvtId.hh
"
24
#include "
EvtGenBase/EvtPDL.hh
"
25
#include "
EvtGenBase/EvtReport.hh
"
26
27
#include <cmath>
28
#include <cstdlib>
29
#include <string>
30
31
EvtMelikhovFF::EvtMelikhovFF
(
double
arg1 )
32
{
33
m_whichfit
= int( arg1 + 0.1 );
34
}
35
36
void
EvtMelikhovFF::getvectorff
(
EvtId
parent,
EvtId
,
double
t,
double
mass,
37
double
* a1f,
double
* a2f,
double
* vf,
38
double
* a0f )
39
{
40
double
ma1( 0.0 ), ra1( 0.0 ), na1( 0.0 );
41
double
ma2( 0.0 ), ra2( 0.0 ), na2( 0.0 );
42
double
mv( 0.0 ), rv( 0.0 ), nv( 0.0 );
43
44
if
(
m_whichfit
== 1 ) {
45
ma1 = 7.07;
46
ra1 = 0.27;
47
na1 = 2.65;
48
ma2 = 6.13;
49
ra2 = 0.25;
50
na2 = 2.17;
51
mv = 6.28;
52
rv = 0.30;
53
nv = 2.36;
54
}
55
if
(
m_whichfit
== 2 ) {
56
ma1 = 6.78;
57
ra1 = 0.20;
58
na1 = 2.65;
59
ma2 = 6.00;
60
ra2 = 0.19;
61
na2 = 2.34;
62
mv = 6.22;
63
rv = 0.20;
64
nv = 2.46;
65
}
66
if
(
m_whichfit
== 3 ) {
67
ma1 = 6.50;
68
ra1 = 0.21;
69
na1 = 2.70;
70
ma2 = 5.90;
71
ra2 = 0.20;
72
na2 = 2.45;
73
mv = 5.90;
74
rv = 0.21;
75
nv = 2.35;
76
}
77
if
(
m_whichfit
== 4 ) {
78
ma1 = 5.68;
79
ra1 = 0.29;
80
na1 = 1.67;
81
ma2 = 5.36;
82
ra2 = 0.28;
83
na2 = 1.67;
84
mv = 5.46;
85
rv = 0.29;
86
nv = 1.73;
87
}
88
89
double
mb =
EvtPDL::getMeanMass
( parent );
90
//double w = ((mb*mb)+(mass*mass)-t)/(2.0*mb*mass);
91
92
double
melr = mass / mb;
93
double
mely = t / ( mb * mb );
94
95
*a1f = ( ( 1.0 + melr * melr - mely ) / ( 1 + melr ) ) * ra1 /
96
pow( 1.0 - ( t / ( ma1 * ma1 ) ), na1 );
97
*a2f = ( 1 + melr ) *
98
( ( 1.0 - melr * melr - mely ) /
99
( ( 1 + melr ) * ( 1 + melr ) - mely ) ) *
100
ra2 / pow( 1.0 - ( t / ( ma2 * ma2 ) ), na2 );
101
*vf = ( 1 + melr ) * rv / pow( 1.0 - ( t / ( mv * mv ) ), nv );
102
*a0f = 0.0;
103
104
return
;
105
}
106
107
void
EvtMelikhovFF::getscalarff
(
EvtId
,
EvtId
,
double
,
double
,
double
*,
double
* )
108
{
109
EvtGenReport
(
EVTGEN_ERROR
,
"EvtGen"
)
110
<<
"Not implemented :getvectorff in EvtMelikhovFF.\n"
;
111
::abort();
112
}
113
114
void
EvtMelikhovFF::gettensorff
(
EvtId
,
EvtId
,
double
,
double
,
double
*,
double
*,
115
double
*,
double
* )
116
{
117
EvtGenReport
(
EVTGEN_ERROR
,
"EvtGen"
)
118
<<
"Not implemented :gettensorff in EvtMelikhovFF.\n"
;
119
::abort();
120
}
121
122
void
EvtMelikhovFF::getbaryonff
(
EvtId
,
EvtId
,
double
,
double
,
double
*,
double
*,
123
double
*,
double
* )
124
{
125
EvtGenReport
(
EVTGEN_ERROR
,
"EvtGen"
)
126
<<
"Not implemented :getbaryonff in EvtMelikhovFF.\n"
;
127
::abort();
128
}
129
130
void
EvtMelikhovFF::getdiracff
(
EvtId
,
EvtId
,
double
,
double
,
double
*,
double
*,
131
double
*,
double
*,
double
*,
double
* )
132
{
133
EvtGenReport
(
EVTGEN_ERROR
,
"EvtGen"
)
134
<<
"Not implemented :getdiracff in EvtMelikhovFF.\n"
;
135
::abort();
136
}
137
138
void
EvtMelikhovFF::getraritaff
(
EvtId
,
EvtId
,
double
,
double
,
double
*,
double
*,
139
double
*,
double
*,
double
*,
double
*,
double
*,
140
double
* )
141
{
142
EvtGenReport
(
EVTGEN_ERROR
,
"EvtGen"
)
143
<<
"Not implemented :getraritaff in EvtMelikhovFF.\n"
;
144
::abort();
145
}
EvtId.hh
EvtMelikhovFF.hh
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
EvtId
Definition
EvtId.hh:27
EvtMelikhovFF::gettensorff
void gettensorff(EvtId, EvtId, double, double, double *, double *, double *, double *) override
Definition
EvtMelikhovFF.cpp:114
EvtMelikhovFF::getdiracff
void getdiracff(EvtId, EvtId, double, double, double *, double *, double *, double *, double *, double *) override
Definition
EvtMelikhovFF.cpp:130
EvtMelikhovFF::getbaryonff
void getbaryonff(EvtId, EvtId, double, double, double *, double *, double *, double *) override
Definition
EvtMelikhovFF.cpp:122
EvtMelikhovFF::getscalarff
void getscalarff(EvtId, EvtId, double, double, double *, double *) override
Definition
EvtMelikhovFF.cpp:107
EvtMelikhovFF::getraritaff
void getraritaff(EvtId, EvtId, double, double, double *, double *, double *, double *, double *, double *, double *, double *) override
Definition
EvtMelikhovFF.cpp:138
EvtMelikhovFF::getvectorff
void getvectorff(EvtId parent, EvtId daught, double t, double mass, double *a1f, double *a2f, double *vf, double *a0f) override
Definition
EvtMelikhovFF.cpp:36
EvtMelikhovFF::EvtMelikhovFF
EvtMelikhovFF(double par1)
Definition
EvtMelikhovFF.cpp:31
EvtMelikhovFF::m_whichfit
int m_whichfit
Definition
EvtMelikhovFF.hh:52
EvtPDL::getMeanMass
static double getMeanMass(EvtId i)
Definition
EvtPDL.cpp:306
Generated by
1.17.0