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
EvtBlattWeisskopf.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/EvtBlattWeisskopf.hh
"
22
23
#include "
EvtGenBase/EvtReport.hh
"
24
25
#include <assert.h>
26
#include <iostream>
27
#include <math.h>
28
using
std::endl;
29
30
EvtBlattWeisskopf::EvtBlattWeisskopf
(
int
LL,
double
R,
double
p0 ) :
31
m_LL
( LL ),
m_radial
( R ),
m_p0
( p0 )
32
{
33
if
( R < 0 ) {
34
EvtGenReport
(
EVTGEN_INFO
,
"EvtGen"
)
35
<<
"Radius "
<< R <<
" negative"
<< endl;
36
assert( 0 );
37
}
38
39
m_radial
= R;
40
41
// compute formula for nominal momentum
42
43
m_F0
=
compute
(
m_p0
);
44
if
(
m_F0
<= 0 ) {
45
EvtGenReport
(
EVTGEN_INFO
,
"EvtGen"
)
46
<<
"Invalid nominal form factor computed "
<<
m_F0
<< endl;
47
assert( 0 );
48
}
49
}
50
51
EvtBlattWeisskopf::EvtBlattWeisskopf
(
const
EvtBlattWeisskopf
& other ) :
52
m_LL
( other.
m_LL
),
53
m_radial
( other.
m_radial
),
54
m_p0
( other.
m_p0
),
55
m_F0
( other.
m_F0
)
56
{
57
}
58
59
double
EvtBlattWeisskopf::operator()
(
double
p )
const
60
{
61
double
ret =
compute
( p ) /
m_F0
;
62
// EvtGenReport(EVTGEN_INFO,"EvtGen") << p << " " << m_p0 << " " << m_F0 << " " << m_LL << " " << m_radial << " " << ret << endl;
63
return
ret;
64
}
65
66
// Blatt-Weisskopf form factors
67
// see e.g. hep-ex/0011065
68
// Dalitz Analysis of the Decay D0->K-pi+pi0 (CLEO)
69
//
70
// p - momentum of either daugher in the meson rest frame,
71
// the mass of the meson is used
72
// pAB - momentum of either daughter in the candidate rest frame
73
// the mass of the candidate is used
74
// R - meson radial parameter
75
//
76
// In the CLEO paper R=5 GeV-1 for D0, R=1.5 for intermediate resonances
77
78
double
EvtBlattWeisskopf::compute
(
double
p )
const
79
{
80
double
value( 1.0 );
81
82
double
z = p *
m_radial
;
83
double
zSq = z * z;
84
85
if
(
m_LL
== 0 ) {
86
value = 1.0;
87
}
else
if
(
m_LL
== 1 ) {
88
value = sqrt( 1.0 / ( 1.0 + zSq ) );
89
}
else
if
(
m_LL
== 2 ) {
90
value = sqrt( 1.0 / ( zSq * ( zSq + 3.0 ) + 9.0 ) );
91
}
else
if
(
m_LL
== 3 ) {
92
double
denom = zSq * ( zSq * ( zSq + 6.0 ) + 45.0 ) + 225.0;
93
value = sqrt( 1.0 / denom );
94
}
else
if
(
m_LL
== 4 ) {
95
double
denom = zSq * ( zSq * ( zSq * ( zSq + 10.0 ) + 135.0 ) + 1575.0 ) +
96
11025.0;
97
value = sqrt( 1.0 / denom );
98
}
else
if
(
m_LL
== 5 ) {
99
double
denom =
100
zSq * ( zSq * ( zSq * ( zSq * ( zSq + 15.0 ) + 315.0 ) + 6300.0 ) +
101
99225.0 ) +
102
893025.0;
103
value = sqrt( 1.0 / denom );
104
}
105
106
return
value;
107
}
EvtBlattWeisskopf.hh
EvtReport.hh
EvtGenReport
std::ostream & EvtGenReport(EvtGenSeverity severity, const char *facility=nullptr)
Definition
EvtReport.cpp:32
EVTGEN_INFO
@ EVTGEN_INFO
Definition
EvtReport.hh:52
EvtBlattWeisskopf::m_F0
double m_F0
Definition
EvtBlattWeisskopf.hh:39
EvtBlattWeisskopf::compute
double compute(double p) const
Definition
EvtBlattWeisskopf.cpp:78
EvtBlattWeisskopf::m_LL
int m_LL
Definition
EvtBlattWeisskopf.hh:35
EvtBlattWeisskopf::operator()
double operator()(double p) const
Definition
EvtBlattWeisskopf.cpp:59
EvtBlattWeisskopf::m_p0
double m_p0
Definition
EvtBlattWeisskopf.hh:37
EvtBlattWeisskopf::EvtBlattWeisskopf
EvtBlattWeisskopf(int LL, double R, double p0)
Definition
EvtBlattWeisskopf.cpp:30
EvtBlattWeisskopf::m_radial
double m_radial
Definition
EvtBlattWeisskopf.hh:36
Generated by
1.17.0