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
EvtGenModels
EvtBLLNuLAmp.hh
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
#ifndef EVTBLLNUL_AMP_HH
22
#define EVTBLLNUL_AMP_HH
23
24
#include "
EvtGenBase/EvtAmp.hh
"
25
#include "
EvtGenBase/EvtComplex.hh
"
26
#include "
EvtGenBase/EvtId.hh
"
27
#include "
EvtGenBase/EvtTensor4C.hh
"
28
#include "
EvtGenBase/EvtVector4R.hh
"
29
30
#include <vector>
31
32
class
EvtParticle
;
33
34
// Description: Header file for the amplitude calculation for the "BLLNUL"
35
// model which generates rare four-leptonic B-decays
36
// B^-(p) -> ell^+(k_1) ell^-(k_2) neu (k_3) ell^-(k_4)
37
38
class
EvtBLLNuLAmp
{
39
public
:
40
EvtBLLNuLAmp
(
double
Vub = 4.09e-3 );
41
EvtBLLNuLAmp
(
double
qSqMin,
double
kSqMin,
bool
symmetry,
42
double
Vub = 4.09e-3 );
43
44
void
CalcAmp
(
EvtParticle
* parent,
EvtAmp
& amp )
const
;
45
void
setParameters
(
double
qSqMin,
double
kSqMin,
bool
symmetry );
46
47
// Resonance poles
48
class
ResPole
final {
49
public
:
50
ResPole
(
double
mass,
double
width,
double
coupling );
51
52
EvtComplex
propagator
(
double
qSq,
int
numForm = 0 )
const
;
53
54
double
getMass
()
const
{
return
m_m0
; }
55
double
getMassSq
()
const
{
return
m_m0Sq
; }
56
double
getWidth
()
const
{
return
m_w0
; }
57
double
getCoupling
()
const
{
return
m_c
; }
58
59
private
:
60
double
m_m0
;
// pole mass
61
double
m_m0Sq
;
62
double
m_w0
;
// width
63
double
m_c
;
// coupling constant
64
EvtComplex
m_I
;
65
EvtComplex
m_Imw
;
66
};
67
68
protected
:
69
EvtTensor4C
getHadronTensor
(
const
EvtVector4R
& q,
const
EvtVector4R
& k,
70
const
double
qSq,
const
double
kSq,
71
const
double
MB,
const
int
sign )
const
;
72
73
std::vector<EvtComplex>
getVMDTerms
(
double
qSq,
double
kSq,
double
MB )
const
;
74
75
EvtComplex
getBStarTerm
(
double
qSq,
double
kSq,
double
MB )
const
;
76
77
double
FF_B2Bstar
(
double
qSq )
const
;
78
79
double
FF_V
(
double
kSq )
const
;
80
81
double
FF_A1
(
double
kSq )
const
;
82
83
double
FF_A2
(
double
kSq )
const
;
84
85
private
:
86
// Kinematic cut-offs
87
double
m_qSqMin
;
88
double
m_kSqMin
;
89
90
// If we have identical charged lepton flavours
91
bool
m_symmetry
;
92
93
// B+, B- Ids
94
EvtId
m_BpId
,
m_BnId
;
95
96
// Form factor constants
97
double
m_coupling
,
m_sqrt2
;
98
double
m_fBu
;
99
100
// Resonance poles
101
EvtBLLNuLAmp::ResPole
m_Bstar
,
m_Upsilon
;
102
103
std::vector<EvtBLLNuLAmp::ResPole>
m_resPoles
;
104
int
m_nPoles
;
105
106
// Complex number constants
107
EvtComplex
m_zero
,
m_unitI
;
108
};
109
110
inline
void
EvtBLLNuLAmp::setParameters
(
double
qSqMin,
double
kSqMin,
111
bool
symmetry )
112
{
113
m_qSqMin
= qSqMin;
114
m_kSqMin
= kSqMin;
115
m_symmetry
= symmetry;
116
}
117
118
#endif
EvtAmp.hh
EvtComplex.hh
EvtId.hh
EvtTensor4C.hh
EvtVector4R.hh
EvtAmp
Definition
EvtAmp.hh:29
EvtBLLNuLAmp::ResPole
Definition
EvtBLLNuLAmp.hh:48
EvtBLLNuLAmp::ResPole::ResPole
ResPole(double mass, double width, double coupling)
Definition
EvtBLLNuLAmp.cpp:108
EvtBLLNuLAmp::ResPole::m_m0Sq
double m_m0Sq
Definition
EvtBLLNuLAmp.hh:61
EvtBLLNuLAmp::ResPole::getMassSq
double getMassSq() const
Definition
EvtBLLNuLAmp.hh:55
EvtBLLNuLAmp::ResPole::m_w0
double m_w0
Definition
EvtBLLNuLAmp.hh:62
EvtBLLNuLAmp::ResPole::getWidth
double getWidth() const
Definition
EvtBLLNuLAmp.hh:56
EvtBLLNuLAmp::ResPole::m_c
double m_c
Definition
EvtBLLNuLAmp.hh:63
EvtBLLNuLAmp::ResPole::m_m0
double m_m0
Definition
EvtBLLNuLAmp.hh:60
EvtBLLNuLAmp::ResPole::getMass
double getMass() const
Definition
EvtBLLNuLAmp.hh:54
EvtBLLNuLAmp::ResPole::propagator
EvtComplex propagator(double qSq, int numForm=0) const
Definition
EvtBLLNuLAmp.cpp:118
EvtBLLNuLAmp::ResPole::getCoupling
double getCoupling() const
Definition
EvtBLLNuLAmp.hh:57
EvtBLLNuLAmp::ResPole::m_Imw
EvtComplex m_Imw
Definition
EvtBLLNuLAmp.hh:65
EvtBLLNuLAmp::ResPole::m_I
EvtComplex m_I
Definition
EvtBLLNuLAmp.hh:64
EvtBLLNuLAmp::m_BpId
EvtId m_BpId
Definition
EvtBLLNuLAmp.hh:94
EvtBLLNuLAmp::m_fBu
double m_fBu
Definition
EvtBLLNuLAmp.hh:98
EvtBLLNuLAmp::FF_V
double FF_V(double kSq) const
Definition
EvtBLLNuLAmp.cpp:396
EvtBLLNuLAmp::m_kSqMin
double m_kSqMin
Definition
EvtBLLNuLAmp.hh:88
EvtBLLNuLAmp::getVMDTerms
std::vector< EvtComplex > getVMDTerms(double qSq, double kSq, double MB) const
Definition
EvtBLLNuLAmp.cpp:338
EvtBLLNuLAmp::m_Bstar
EvtBLLNuLAmp::ResPole m_Bstar
Definition
EvtBLLNuLAmp.hh:101
EvtBLLNuLAmp::m_zero
EvtComplex m_zero
Definition
EvtBLLNuLAmp.hh:107
EvtBLLNuLAmp::m_coupling
double m_coupling
Definition
EvtBLLNuLAmp.hh:97
EvtBLLNuLAmp::m_BnId
EvtId m_BnId
Definition
EvtBLLNuLAmp.hh:94
EvtBLLNuLAmp::m_qSqMin
double m_qSqMin
Definition
EvtBLLNuLAmp.hh:87
EvtBLLNuLAmp::m_sqrt2
double m_sqrt2
Definition
EvtBLLNuLAmp.hh:97
EvtBLLNuLAmp::m_Upsilon
EvtBLLNuLAmp::ResPole m_Upsilon
Definition
EvtBLLNuLAmp.hh:101
EvtBLLNuLAmp::m_symmetry
bool m_symmetry
Definition
EvtBLLNuLAmp.hh:91
EvtBLLNuLAmp::getHadronTensor
EvtTensor4C getHadronTensor(const EvtVector4R &q, const EvtVector4R &k, const double qSq, const double kSq, const double MB, const int sign) const
Definition
EvtBLLNuLAmp.cpp:304
EvtBLLNuLAmp::FF_A1
double FF_A1(double kSq) const
Definition
EvtBLLNuLAmp.cpp:410
EvtBLLNuLAmp::FF_A2
double FF_A2(double kSq) const
Definition
EvtBLLNuLAmp.cpp:424
EvtBLLNuLAmp::m_resPoles
std::vector< EvtBLLNuLAmp::ResPole > m_resPoles
Definition
EvtBLLNuLAmp.hh:103
EvtBLLNuLAmp::CalcAmp
void CalcAmp(EvtParticle *parent, EvtAmp &) const
Definition
EvtBLLNuLAmp.cpp:131
EvtBLLNuLAmp::EvtBLLNuLAmp
EvtBLLNuLAmp(double Vub=4.09e-3)
Definition
EvtBLLNuLAmp.cpp:32
EvtBLLNuLAmp::FF_B2Bstar
double FF_B2Bstar(double qSq) const
Definition
EvtBLLNuLAmp.cpp:381
EvtBLLNuLAmp::m_unitI
EvtComplex m_unitI
Definition
EvtBLLNuLAmp.hh:107
EvtBLLNuLAmp::setParameters
void setParameters(double qSqMin, double kSqMin, bool symmetry)
Definition
EvtBLLNuLAmp.hh:110
EvtBLLNuLAmp::getBStarTerm
EvtComplex getBStarTerm(double qSq, double kSq, double MB) const
Definition
EvtBLLNuLAmp.cpp:374
EvtBLLNuLAmp::m_nPoles
int m_nPoles
Definition
EvtBLLNuLAmp.hh:104
EvtComplex
Definition
EvtComplex.hh:29
EvtId
Definition
EvtId.hh:27
EvtParticle
Definition
EvtParticle.hh:45
EvtTensor4C
Definition
EvtTensor4C.hh:38
EvtVector4R
Definition
EvtVector4R.hh:29
Generated by
1.17.0