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
EvtGenModels
EvtLb2plnuLQCDFF.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 "
EvtGenModels/EvtLb2plnuLQCDFF.hh
"
22
23
#include "
EvtGenBase/EvtConst.hh
"
24
#include "
EvtGenBase/EvtId.hh
"
25
#include "
EvtGenBase/EvtIdSet.hh
"
26
#include "
EvtGenBase/EvtPDL.hh
"
27
#include "
EvtGenBase/EvtReport.hh
"
28
29
#include <math.h>
30
#include <stdlib.h>
31
#include <string>
32
using
std::endl;
33
34
void
EvtLb2plnuLQCDFF::getdiracff
(
EvtId
parent,
EvtId
daught,
double
q2,
35
double
/* mass */
,
double
* f1,
double
* f2,
36
double
* f3,
double
* g1,
double
* g2,
double
* g3 )
37
{
38
// Define Event IDs for Lb and p
39
static
const
EvtId
LAMB =
EvtPDL::getId
(
"Lambda_b0"
);
40
static
const
EvtId
LAMBB =
EvtPDL::getId
(
"anti-Lambda_b0"
);
41
static
const
EvtId
PRO =
EvtPDL::getId
(
"p+"
);
42
static
const
EvtId
PROB =
EvtPDL::getId
(
"anti-p-"
);
43
44
if
( ( parent == LAMB && daught == PRO ) ||
45
( parent == LAMBB && daught == PROB ) ) {
46
// Calculate Lb->p form factors based on LQCD predictions
47
// Predictions taken from W. Detmold, C-J. Lin, S. Meinel and M.Wingate, arXiv:1306.0446 (2013)
48
49
double
MLamB =
EvtPDL::getMass
( parent );
50
double
MPro =
EvtPDL::getMass
( daught );
51
double
Y1 = 2.97;
52
double
X1 = 1.36;
53
double
Y2 = -0.28;
54
double
X2 = 0.81;
55
double
EnMn = ( MLamB * MLamB + MPro * MPro - q2 ) / ( 2.0 * MLamB ) -
56
MPro;
57
double
F1 = Y1 / ( ( X1 + EnMn ) * ( X1 + EnMn ) );
58
double
F2 = Y2 / ( ( X2 + EnMn ) * ( X2 + EnMn ) );
59
double
pi
= atan( 1.0 ) * 4.0;
60
double
alphas = 0.214;
61
double
cv = 2.0 / 3.0 * alphas /
pi
;
62
double
cgam = 1.0 - ( alphas /
pi
) * ( 4.0 / 3.0 );
63
64
*f1 = cgam * ( F1 - F2 );
65
*f2 = cv * F1 + ( 2.0 * cgam + cv ) * F2;
66
*f3 = 0.0;
67
*g1 = cgam * ( F1 + F2 );
68
*g2 = -cv * F1 + ( 2.0 * cgam + cv ) * F2;
69
*g3 = 0.0;
70
71
}
else
{
72
EvtGenReport
(
EVTGEN_ERROR
,
"EvtGen"
)
73
<<
"Only Lb -> p transitions allowed in EvtLb2plnuLQCDFF.\n"
;
74
::abort();
75
}
76
77
return
;
78
}
79
80
void
EvtLb2plnuLQCDFF::getraritaff
(
EvtId
,
EvtId
,
double
,
double
,
double
*,
81
double
*,
double
*,
double
*,
double
*,
double
*,
82
double
*,
double
* )
83
{
84
EvtGenReport
(
EVTGEN_ERROR
,
"EvtGen"
)
85
<<
"Not implemented :getraritaff in EvtLb2plnuLQCDFF.\n"
;
86
::abort();
87
}
88
89
void
EvtLb2plnuLQCDFF::getscalarff
(
EvtId
,
EvtId
,
double
,
double
,
double
*,
90
double
* )
91
{
92
EvtGenReport
(
EVTGEN_ERROR
,
"EvtGen"
)
93
<<
"Not implemented :getscalarff in EvtLb2plnuLQCDFF.\n"
;
94
::abort();
95
}
96
97
void
EvtLb2plnuLQCDFF::getvectorff
(
EvtId
,
EvtId
,
double
,
double
,
double
*,
98
double
*,
double
*,
double
* )
99
{
100
EvtGenReport
(
EVTGEN_ERROR
,
"EvtGen"
)
101
<<
"Not implemented :getvectorff in EvtLb2plnuLQCDFF.\n"
;
102
::abort();
103
}
104
105
void
EvtLb2plnuLQCDFF::gettensorff
(
EvtId
,
EvtId
,
double
,
double
,
double
*,
106
double
*,
double
*,
double
* )
107
{
108
EvtGenReport
(
EVTGEN_ERROR
,
"EvtGen"
)
109
<<
"Not implemented :gettensorff in EvtLb2plnuLQCDFF.\n"
;
110
::abort();
111
}
112
113
void
EvtLb2plnuLQCDFF::getbaryonff
(
EvtId
,
EvtId
,
double
,
double
,
double
*,
114
double
*,
double
*,
double
* )
115
{
116
EvtGenReport
(
EVTGEN_ERROR
,
"EvtGen"
)
117
<<
"Not implemented :getbaryonff in EvtLb2plnuLQCDFF.\n"
;
118
::abort();
119
}
pi
const float pi
Definition
EvtBBScalar.cpp:32
EvtConst.hh
EvtIdSet.hh
EvtId.hh
EvtLb2plnuLQCDFF.hh
EvtPDL.hh
EvtReport.hh
EvtGenReport
std::ostream & EvtGenReport(EvtGenSeverity severity, const char *facility=nullptr)
Definition
EvtReport.cpp:32
EVTGEN_ERROR
@ EVTGEN_ERROR
Definition
EvtReport.hh:49
EvtId
Definition
EvtId.hh:27
EvtLb2plnuLQCDFF::getraritaff
void getraritaff(EvtId parent, EvtId daught, double q2, double mass, double *f1, double *f2, double *f3, double *f4, double *g1, double *g2, double *g3, double *g4) override
Definition
EvtLb2plnuLQCDFF.cpp:80
EvtLb2plnuLQCDFF::getbaryonff
void getbaryonff(EvtId, EvtId, double, double, double *, double *, double *, double *) override
Definition
EvtLb2plnuLQCDFF.cpp:113
EvtLb2plnuLQCDFF::getscalarff
void getscalarff(EvtId parent, EvtId daught, double t, double mass, double *fpf, double *f0f) override
Definition
EvtLb2plnuLQCDFF.cpp:89
EvtLb2plnuLQCDFF::gettensorff
void gettensorff(EvtId parent, EvtId daught, double t, double mass, double *hf, double *kf, double *bpf, double *bmf) override
Definition
EvtLb2plnuLQCDFF.cpp:105
EvtLb2plnuLQCDFF::getvectorff
void getvectorff(EvtId parent, EvtId daught, double t, double mass, double *a1f, double *a2f, double *vf, double *a0f) override
Definition
EvtLb2plnuLQCDFF.cpp:97
EvtLb2plnuLQCDFF::getdiracff
void getdiracff(EvtId parent, EvtId daught, double q2, double mass, double *f1, double *f2, double *f3, double *g1, double *g2, double *g3) override
Definition
EvtLb2plnuLQCDFF.cpp:34
EvtPDL::getMass
static double getMass(EvtId i)
Definition
EvtPDL.cpp:311
EvtPDL::getId
static EvtId getId(const std::string &name)
Definition
EvtPDL.cpp:283
Generated by
1.17.0