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
EvtGenBase
EvtLASSAmp.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/EvtLASSAmp.hh
"
22
23
#include "
EvtGenBase/EvtComplex.hh
"
24
#include "
EvtGenBase/EvtCyclic3.hh
"
25
#include "
EvtGenBase/EvtDalitzCoord.hh
"
26
#include "
EvtGenBase/EvtdFunction.hh
"
27
28
#include <assert.h>
29
#include <iostream>
30
#include <math.h>
31
using
EvtCyclic3::Index
;
32
using
EvtCyclic3::Pair
;
33
using
std::endl;
34
35
EvtLASSAmp::EvtLASSAmp
(
EvtDalitzPlot
* dp,
EvtCyclic3::Pair
pair,
double
m0,
36
double
g0,
double
a,
double
r,
double
cutoff,
37
std::string subtype ) :
38
EvtAmplitude
<
EvtDalitzPoint
>(),
39
m_pair
( pair ),
40
m_m0
( m0 ),
41
m_g0
( g0 ),
42
m_r
( r ),
43
m_a
( a ),
44
m_cutoff
( cutoff ),
45
m_subtype
( subtype )
46
{
47
m_dalitzSpace
= dp;
48
double
ma = dp->
m
( first( pair ) );
49
double
mb = dp->
m
( second( pair ) );
50
double
E0a = 0.5 * (
m_m0
*
m_m0
+ ma * ma - mb * mb ) /
m_m0
;
51
m_q0
= E0a * E0a - ma * ma;
52
assert(
m_q0
> 0 );
53
m_q0
= sqrt(
m_q0
);
54
}
55
56
EvtComplex
EvtLASSAmp::amplitude
(
const
EvtDalitzPoint
& dalitzPoint )
const
57
{
58
/*
59
60
Parameterization of Kpi S-wave using LASS scattering data.
61
- Nucl.Phys.B296, 493 (1988)
62
- W.Dunwoodie,http://www.slac.stanford.edu/~wmd/kpi_swave/kpi_swave_fit.note
63
64
m m0^2*Gamma0/q0
65
----------------- + exp(2*i*delta) * --------------------------------
66
q*cot(delta)-i*q m0^2-m^2 - i*m0*Gamma0*q/m*m0/q0
67
68
69
where q = momentum of K or pi in Kpi system
70
71
q*cot(delta) = 1/ a + 1/2 * [ r * q**2 ]
72
73
a = scattering length
74
75
r = effective range
76
77
*/
78
79
double
s = dalitzPoint.
q
(
m_pair
);
80
double
m = sqrt( s );
81
double
q = dalitzPoint.
p
( first(
m_pair
),
m_pair
);
82
83
// elastic scattering
84
double
qcotd = 1. /
m_a
+ 0.5 *
m_r
* q * q;
85
EvtComplex
lass_elastic = m <
m_cutoff
? m / ( qcotd -
EvtComplex
( 0, q ) )
86
: 0;
87
88
// relative phase
89
double
cosd = 1;
90
double
sind = 0;
91
if
( q > 0 ) {
92
cosd = qcotd * qcotd / ( q * q );
93
cosd = sqrt( cosd / ( 1 + cosd ) );
94
sind = sqrt( 1 - cosd * cosd );
95
}
96
EvtComplex
lass_phase( cosd, sind );
97
lass_phase *= lass_phase;
98
99
// K*(1430)
100
double
gamma =
m_g0
* q / m *
m_m0
/
m_q0
;
101
EvtComplex
lass_Kstar = (
m_m0
*
m_m0
) * (
m_g0
/
m_q0
) /
102
(
m_m0
*
m_m0
- m * m -
103
EvtComplex
( 0.,
m_m0
* gamma ) );
104
105
EvtComplex
theAmplitude( 0.0, 0.0 );
106
107
if
(
m_subtype
==
"LASS_ELASTIC"
) {
108
theAmplitude = lass_elastic;
109
110
}
else
if
(
m_subtype
==
"LASS_RESONANT"
) {
111
theAmplitude = lass_phase * lass_Kstar;
112
113
}
else
{
114
theAmplitude = lass_phase * lass_Kstar + lass_elastic;
115
}
116
117
return
theAmplitude;
118
}
EvtComplex.hh
EvtCyclic3.hh
EvtDalitzCoord.hh
EvtLASSAmp.hh
EvtdFunction.hh
EvtAmplitude< EvtDalitzPoint >::EvtAmplitude
EvtAmplitude()=default
EvtComplex
Definition
EvtComplex.hh:29
EvtDalitzPlot
Definition
EvtDalitzPlot.hh:30
EvtDalitzPlot::m
double m(EvtCyclic3::Index i) const
Definition
EvtDalitzPlot.cpp:84
EvtDalitzPoint
Definition
EvtDalitzPoint.hh:38
EvtDalitzPoint::p
double p(EvtCyclic3::Index i, EvtCyclic3::Pair j) const
Definition
EvtDalitzPoint.cpp:158
EvtDalitzPoint::q
double q(EvtCyclic3::Pair) const
Definition
EvtDalitzPoint.cpp:91
EvtLASSAmp::m_subtype
std::string m_subtype
Definition
EvtLASSAmp.hh:56
EvtLASSAmp::amplitude
EvtComplex amplitude(const EvtDalitzPoint &p) const override
Definition
EvtLASSAmp.cpp:56
EvtLASSAmp::EvtLASSAmp
EvtLASSAmp(EvtDalitzPlot *dp, EvtCyclic3::Pair pair, double m0, double g0, double a, double r, double cutoff, std::string subtype="LASS")
Definition
EvtLASSAmp.cpp:35
EvtLASSAmp::m_dalitzSpace
EvtDalitzPlot * m_dalitzSpace
Definition
EvtLASSAmp.hh:46
EvtLASSAmp::m_g0
double m_g0
Definition
EvtLASSAmp.hh:51
EvtLASSAmp::m_m0
double m_m0
Definition
EvtLASSAmp.hh:50
EvtLASSAmp::m_q0
double m_q0
Definition
EvtLASSAmp.hh:52
EvtLASSAmp::m_r
double m_r
Definition
EvtLASSAmp.hh:53
EvtLASSAmp::m_cutoff
double m_cutoff
Definition
EvtLASSAmp.hh:55
EvtLASSAmp::m_pair
EvtCyclic3::Pair m_pair
Definition
EvtLASSAmp.hh:48
EvtLASSAmp::m_a
double m_a
Definition
EvtLASSAmp.hh:54
EvtCyclic3::Pair
Pair
Definition
EvtCyclic3.hh:37
EvtCyclic3::Index
Index
Definition
EvtCyclic3.hh:31
Generated by
1.17.0