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
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
22
24#include "EvtGenBase/EvtId.hh"
26#include "EvtGenBase/EvtPDL.hh"
28
29#include <math.h>
30#include <stdlib.h>
31#include <string>
32using std::endl;
33
34void 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
80void 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
89void 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
97void 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
105void 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
113void 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}
const float pi
std::ostream & EvtGenReport(EvtGenSeverity severity, const char *facility=nullptr)
Definition EvtReport.cpp:32
@ EVTGEN_ERROR
Definition EvtReport.hh:49
Definition EvtId.hh:27
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
void getbaryonff(EvtId, EvtId, double, double, double *, double *, double *, double *) override
void getscalarff(EvtId parent, EvtId daught, double t, double mass, double *fpf, double *f0f) override
void gettensorff(EvtId parent, EvtId daught, double t, double mass, double *hf, double *kf, double *bpf, double *bmf) override
void getvectorff(EvtId parent, EvtId daught, double t, double mass, double *a1f, double *a2f, double *vf, double *a0f) override
void getdiracff(EvtId parent, EvtId daught, double q2, double mass, double *f1, double *f2, double *f3, double *g1, double *g2, double *g3) override
static double getMass(EvtId i)
Definition EvtPDL.cpp:311
static EvtId getId(const std::string &name)
Definition EvtPDL.cpp:283