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
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
22
27
28#include <assert.h>
29#include <iostream>
30#include <math.h>
33using std::endl;
34
36 double g0, double a, double r, double cutoff,
37 std::string subtype ) :
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
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}
double m(EvtCyclic3::Index i) const
double p(EvtCyclic3::Index i, EvtCyclic3::Pair j) const
double q(EvtCyclic3::Pair) const
std::string m_subtype
Definition EvtLASSAmp.hh:56
EvtComplex amplitude(const EvtDalitzPoint &p) const override
EvtLASSAmp(EvtDalitzPlot *dp, EvtCyclic3::Pair pair, double m0, double g0, double a, double r, double cutoff, std::string subtype="LASS")
EvtDalitzPlot * m_dalitzSpace
Definition EvtLASSAmp.hh:46
double m_g0
Definition EvtLASSAmp.hh:51
double m_m0
Definition EvtLASSAmp.hh:50
double m_q0
Definition EvtLASSAmp.hh:52
double m_r
Definition EvtLASSAmp.hh:53
double m_cutoff
Definition EvtLASSAmp.hh:55
EvtCyclic3::Pair m_pair
Definition EvtLASSAmp.hh:48
double m_a
Definition EvtLASSAmp.hh:54