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
EvtPropFlatte.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
23#include <iostream>
24#include <math.h>
25using std::cout;
26using std::endl;
27
28EvtPropFlatte::EvtPropFlatte( double m0, double g0, double m0a, double m0b,
29 double g1, double m1a, double m1b ) :
31 m_m0a( m0a ),
32 m_m0b( m0b ),
33 m_g1( g1 ),
34 m_m1a( m1a ),
35 m_m1b( m1b )
36{
37}
38
40{
41 return new EvtPropFlatte( *this );
42}
43
45{
46 /*
47
48 Use BES parameterization:
49
50 1.
51 -----------------------------------------
52 m0^2 - m^2 - i*m0*( g1*rho1 + g2*rho2 )
53
54
55 Resonance mass: m0
56 Channel1: m0a, m0b, g0
57 Channel2: m1a, m1b, g1
58
59 where breakup momenta q's are:
60
61 E0a = (m^2 + m0a^2 - m0b^2) / 2m
62 q0 = sqrt( E0a^2 - m0a^2 )
63
64 E1a = (m^2 + m1a^2 - m1b^2) / 2m
65 q1 = sqrt( E1a^2 - m1a^2 )
66
67
68 */
69
70 double s = x.value() * x.value();
71 double m = x.value();
72
73 double E0a = 0.5 * ( s + m_m0a * m_m0a - m_m0b * m_m0b ) / m;
74 double qSq0 = E0a * E0a - m_m0a * m_m0a;
75
76 double E1a = 0.5 * ( s + m_m1a * m_m1a - m_m1b * m_m1b ) / m;
77 double qSq1 = E1a * E1a - m_m1a * m_m1a;
78
79 EvtComplex gamma0 = qSq0 >= 0 ? EvtComplex( m_g0 * sqrt( qSq0 ), 0 )
80 : EvtComplex( 0, m_g0 * sqrt( -qSq0 ) );
81 EvtComplex gamma1 = qSq1 >= 0 ? EvtComplex( m_g1 * sqrt( qSq1 ), 0 )
82 : EvtComplex( 0, m_g1 * sqrt( -qSq1 ) );
83
84 EvtComplex gamma = gamma0 + gamma1;
85
86 EvtComplex a = 1.0 /
87 ( m_m0 * m_m0 - s - EvtComplex( 0.0, 2 * m_m0 / m ) * gamma );
88
89 return a;
90}
double value() const
Definition EvtPoint1D.hh:35
EvtAmplitude< EvtPoint1D > * clone() const override
EvtPropFlatte(double m0, double g0, double m0a, double m0b, double g1, double m1a, double m1b)
EvtComplex amplitude(const EvtPoint1D &x) const override
double g0() const
double m0() const
EvtPropagator(double m0, double g0)