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
EvtNonresonantAmp.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/EvtNonresonantAmp.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
EvtNonresonantAmp::EvtNonresonantAmp
(
EvtDalitzPlot
* dp,
36
EvtPto3PAmp::NumType
type,
37
EvtCyclic3::Pair
pair1,
double
par1,
38
EvtCyclic3::Pair
pair2,
double
par2,
39
EvtSpinType::spintype
spin ) :
40
EvtAmplitude
<
EvtDalitzPoint
>(),
41
m_dalitzSpace
{ dp },
42
m_type
( type ),
43
m_pair1
( pair1 ),
44
m_pair2
( pair2 ),
45
m_par1
( par1 ),
46
m_par2
( par2 ),
47
m_spin
( spin )
48
{
49
}
50
51
EvtComplex
EvtNonresonantAmp::amplitude
(
const
EvtDalitzPoint
& dalitzPoint )
const
52
{
53
// flat model
54
if
(
m_type
==
EvtPto3PAmp::NONRES
) {
55
return
1;
56
}
57
58
// "linear model" (prop. to m^2)
59
else
if
(
m_type
==
EvtPto3PAmp::NONRES_LIN
) {
60
return
dalitzPoint.
q
(
m_pair1
);
61
}
62
63
// Chen-Chua-Soni
64
else
if
(
m_type
==
EvtPto3PAmp::NONRES_CCS
) {
65
double
s = dalitzPoint.
q
(
m_pair1
);
66
double
smin =
m_dalitzSpace
->qAbsMin(
m_pair1
);
67
return
sqrt( s - smin ) / ( s * log( s *
m_par1
) );
68
}
69
70
// exp{par*m^2) (Belle model, Garmash et al, PRD71)
71
else
if
(
m_type
==
EvtPto3PAmp::NONRES_EXP
) {
72
return
exp
(
m_par1
* dalitzPoint.
q
(
m_pair1
) );
73
}
74
75
// exp(par1*m12^2 + par2*m13^2) (Belle model, Garmash et al, PRD71)
76
else
if
(
m_type
==
EvtPto3PAmp::NONRES_EXP_ADD
) {
77
return
exp
(
m_par1
* dalitzPoint.
q
(
m_pair1
) +
78
m_par2
* dalitzPoint.
q
(
m_pair2
) );
79
}
80
81
// Laura model (P.Harrison et al, BAD806)
82
else
if
(
m_type
==
EvtPto3PAmp::NONRES_LAURA
) {
83
double
m = sqrt( dalitzPoint.
q
(
m_pair1
) );
84
double
mmin = sqrt(
m_dalitzSpace
->qAbsMin(
m_pair1
) );
85
double
dm = m - mmin;
86
assert( dm > 0 );
87
double
cosTh = 1;
88
int
ispin =
EvtSpinType::getSpin2
(
m_spin
);
89
if
( ispin > 0 ) {
90
cosTh = dalitzPoint.
cosTh
(
EvtCyclic3::next
(
m_pair1
),
m_pair1
);
91
if
( ispin > 2 )
92
cosTh *= cosTh;
93
}
94
return
pow( dm,
m_par1
) *
exp
( dm *
m_par2
) * cosTh;
95
}
96
97
return
0;
98
}
EvtComplex.hh
exp
EvtComplex exp(const EvtComplex &c)
Definition
EvtComplex.hh:242
EvtCyclic3.hh
EvtDalitzCoord.hh
EvtNonresonantAmp.hh
EvtdFunction.hh
EvtAmplitude< EvtDalitzPoint >::EvtAmplitude
EvtAmplitude()=default
EvtComplex
Definition
EvtComplex.hh:29
EvtDalitzPlot
Definition
EvtDalitzPlot.hh:30
EvtDalitzPoint
Definition
EvtDalitzPoint.hh:38
EvtDalitzPoint::q
double q(EvtCyclic3::Pair) const
Definition
EvtDalitzPoint.cpp:91
EvtDalitzPoint::cosTh
double cosTh(EvtCyclic3::Pair pairAng, EvtCyclic3::Pair pairRes) const
Definition
EvtDalitzPoint.cpp:164
EvtNonresonantAmp::m_par2
double m_par2
Definition
EvtNonresonantAmp.hh:54
EvtNonresonantAmp::m_pair2
EvtCyclic3::Pair m_pair2
Definition
EvtNonresonantAmp.hh:52
EvtNonresonantAmp::m_dalitzSpace
EvtDalitzPlot * m_dalitzSpace
Definition
EvtNonresonantAmp.hh:48
EvtNonresonantAmp::amplitude
EvtComplex amplitude(const EvtDalitzPoint &p) const override
Definition
EvtNonresonantAmp.cpp:51
EvtNonresonantAmp::EvtNonresonantAmp
EvtNonresonantAmp(EvtDalitzPlot *dp, EvtPto3PAmp::NumType type, EvtCyclic3::Pair pair1, double par1=0, EvtCyclic3::Pair pair2=EvtCyclic3::AB, double par2=0, EvtSpinType::spintype spin=EvtSpinType::SCALAR)
Definition
EvtNonresonantAmp.cpp:35
EvtNonresonantAmp::m_spin
EvtSpinType::spintype m_spin
Definition
EvtNonresonantAmp.hh:56
EvtNonresonantAmp::m_pair1
EvtCyclic3::Pair m_pair1
Definition
EvtNonresonantAmp.hh:52
EvtNonresonantAmp::m_type
EvtPto3PAmp::NumType m_type
Definition
EvtNonresonantAmp.hh:50
EvtNonresonantAmp::m_par1
double m_par1
Definition
EvtNonresonantAmp.hh:54
EvtPto3PAmp::NumType
NumType
Definition
EvtPto3PAmp.hh:41
EvtPto3PAmp::NONRES_CCS
@ NONRES_CCS
Definition
EvtPto3PAmp.hh:53
EvtPto3PAmp::NONRES
@ NONRES
Definition
EvtPto3PAmp.hh:49
EvtPto3PAmp::NONRES_LIN
@ NONRES_LIN
Definition
EvtPto3PAmp.hh:50
EvtPto3PAmp::NONRES_EXP_ADD
@ NONRES_EXP_ADD
Definition
EvtPto3PAmp.hh:52
EvtPto3PAmp::NONRES_EXP
@ NONRES_EXP
Definition
EvtPto3PAmp.hh:51
EvtPto3PAmp::NONRES_LAURA
@ NONRES_LAURA
Definition
EvtPto3PAmp.hh:54
EvtSpinType::getSpin2
static int getSpin2(spintype stype)
Definition
EvtSpinType.cpp:25
EvtSpinType::spintype
spintype
Definition
EvtSpinType.hh:29
EvtCyclic3::next
Index next(Index i)
Definition
EvtCyclic3.cpp:141
EvtCyclic3::Pair
Pair
Definition
EvtCyclic3.hh:37
EvtCyclic3::Index
Index
Definition
EvtCyclic3.hh:31
Generated by
1.16.1