EvtGen
2.2.0
Monte Carlo generator of particle decays, in particular the weak decays of heavy flavour particles such as B mesons.
Loading...
Searching...
No Matches
src
EvtGenBase
EvtPropGounarisSakurai.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 "
EvtGenBase/EvtPropGounarisSakurai.hh
"
22
23
#include <math.h>
24
25
EvtPropGounarisSakurai::EvtPropGounarisSakurai
(
EvtDalitzPlot
* dp,
26
EvtCyclic3::Pair
pair,
27
double
m0
,
double
g0
) :
28
EvtPropagator
(
m0
,
g0
),
m_pair
( pair ),
m_gbase
(
g0
)
29
{
30
m_dalitzSpace
= dp;
31
m_m1
= dp->
m
(
EvtCyclic3::first
(
m_pair
) );
32
m_m2
= dp->
m
(
EvtCyclic3::second
(
m_pair
) );
33
}
34
35
EvtAmplitude<EvtPoint1D>
*
EvtPropGounarisSakurai::clone
()
const
36
{
37
return
new
EvtPropGounarisSakurai
( *
this
);
38
}
39
40
EvtComplex
EvtPropGounarisSakurai::amplitude
(
const
EvtPoint1D
& x )
const
41
{
42
double
m = x.
value
();
43
double
s = m * m;
44
double
m2 =
m_m0
*
m_m0
;
45
double
f_width =
m_gbase
;
46
double
f_mass =
m_m0
;
47
48
double
A = ( 1 +
dFun
( m2 ) * f_width / f_mass );
49
double
B = s - m2 -
fsFun
( s );
50
// double C = sqrt(s)*_g0;//wrong!
51
double
C = sqrt( m2 ) *
m_g0
;
//correct!
52
double
D = B * B + C * C;
53
54
EvtComplex
rpt( A * B / D, -A * C / D );
55
return
rpt;
56
}
57
58
// adapted from RhoPiTools
59
double
EvtPropGounarisSakurai::fsFun
(
double
s )
const
60
{
61
double
m2 =
m_m0
*
m_m0
;
62
63
EvtTwoBodyKine
vd(
m_m1
,
m_m2
, sqrt( s ) );
64
EvtTwoBodyKine
vR(
m_m1
,
m_m2
,
m_m0
);
65
double
k_s = vd.
p
();
66
double
k_Am2 = vR.
p
();
67
//
68
double
f =
m_gbase
* m2 / pow( k_Am2, 3 ) *
69
( pow( k_s, 2 ) * (
hFun
( s ) -
hFun
( m2 ) ) +
70
( m2 - s ) * pow( k_Am2, 2 ) *
dh_dsFun
( m2 ) );
71
72
return
f;
73
}
74
75
double
EvtPropGounarisSakurai::hFun
(
double
s )
const
76
{
77
double
sm =
m_m1
+
m_m2
;
78
double
SQRTs = sqrt( s );
79
EvtTwoBodyKine
vd(
m_m1
,
m_m2
, sqrt( s ) );
80
double
k_s = vd.
p
();
81
82
return
2 /
EvtConst::pi
* ( k_s / SQRTs ) *
83
log( ( SQRTs + 2 * k_s ) / ( sm ) );
84
}
85
86
double
EvtPropGounarisSakurai::dh_dsFun
(
double
s )
const
87
{
88
EvtTwoBodyKine
vd(
m_m1
,
m_m2
, sqrt( s ) );
89
double
k_s = vd.
p
();
90
91
return
hFun
( s ) * ( 1 / ( 8 * pow( k_s, 2 ) ) - 1 / ( 2 * s ) ) +
92
1 / ( 2 *
EvtConst::pi
* s );
93
}
94
95
double
EvtPropGounarisSakurai::dFun
(
double
s )
const
96
{
97
double
sm =
m_m1
+
m_m2
;
98
double
sm24 = sm * sm / 4;
99
double
m = sqrt( s );
100
EvtTwoBodyKine
vd(
m_m1
,
m_m2
, sqrt( s ) );
101
double
k_m2 = vd.
p
();
102
double
pi
=
EvtConst::pi
;
103
104
return
3.0 /
pi
* sm24 / pow( k_m2, 2 ) * log( ( m + 2 * k_m2 ) / sm ) +
105
m / ( 2 *
pi
* k_m2 ) - sm24 * m / (
pi
* pow( k_m2, 3 ) );
106
}
pi
const float pi
Definition
EvtBBScalar.cpp:32
EvtPropGounarisSakurai.hh
EvtAmplitude< EvtPoint1D >::EvtAmplitude
EvtAmplitude()=default
EvtComplex
Definition
EvtComplex.hh:29
EvtConst::pi
static const double pi
Definition
EvtConst.hh:26
EvtDalitzPlot
Definition
EvtDalitzPlot.hh:30
EvtDalitzPlot::m
double m(EvtCyclic3::Index i) const
Definition
EvtDalitzPlot.cpp:84
EvtPoint1D
Definition
EvtPoint1D.hh:27
EvtPoint1D::value
double value() const
Definition
EvtPoint1D.hh:35
EvtPropGounarisSakurai::m_m1
double m_m1
Definition
EvtPropGounarisSakurai.hh:45
EvtPropGounarisSakurai::hFun
double hFun(double s) const
Definition
EvtPropGounarisSakurai.cpp:75
EvtPropGounarisSakurai::dh_dsFun
double dh_dsFun(double s) const
Definition
EvtPropGounarisSakurai.cpp:86
EvtPropGounarisSakurai::dFun
double dFun(double s) const
Definition
EvtPropGounarisSakurai.cpp:95
EvtPropGounarisSakurai::m_gbase
double m_gbase
Definition
EvtPropGounarisSakurai.hh:44
EvtPropGounarisSakurai::m_dalitzSpace
EvtDalitzPlot * m_dalitzSpace
Definition
EvtPropGounarisSakurai.hh:41
EvtPropGounarisSakurai::clone
EvtAmplitude< EvtPoint1D > * clone() const override
Definition
EvtPropGounarisSakurai.cpp:35
EvtPropGounarisSakurai::EvtPropGounarisSakurai
EvtPropGounarisSakurai(EvtDalitzPlot *dp, EvtCyclic3::Pair pair, double m0, double g0)
Definition
EvtPropGounarisSakurai.cpp:25
EvtPropGounarisSakurai::fsFun
double fsFun(double s) const
Definition
EvtPropGounarisSakurai.cpp:59
EvtPropGounarisSakurai::amplitude
EvtComplex amplitude(const EvtPoint1D &x) const override
Definition
EvtPropGounarisSakurai.cpp:40
EvtPropGounarisSakurai::m_pair
EvtCyclic3::Pair m_pair
Definition
EvtPropGounarisSakurai.hh:43
EvtPropGounarisSakurai::m_m2
double m_m2
Definition
EvtPropGounarisSakurai.hh:46
EvtPropagator::g0
double g0() const
Definition
EvtPropagator.hh:43
EvtPropagator::m0
double m0() const
Definition
EvtPropagator.hh:42
EvtPropagator::m_g0
double m_g0
Definition
EvtPropagator.hh:60
EvtPropagator::EvtPropagator
EvtPropagator(double m0, double g0)
Definition
EvtPropagator.hh:34
EvtPropagator::m_m0
double m_m0
Definition
EvtPropagator.hh:59
EvtTwoBodyKine
Definition
EvtTwoBodyKine.hh:28
EvtTwoBodyKine::p
double p(Index i=AB) const
Definition
EvtTwoBodyKine.cpp:57
EvtCyclic3::Pair
Pair
Definition
EvtCyclic3.hh:37
EvtCyclic3::second
Index second(Pair i)
Definition
EvtCyclic3.cpp:263
EvtCyclic3::first
Index first(Pair i)
Definition
EvtCyclic3.cpp:249
Generated by
1.16.1