evtgen is hosted by Hepforge, IPPP Durham
EvtGen  2.0.0
Monte Carlo generator of particle decays, in particular the weak decays of heavy flavour particles such as B mesons.
EvtBToVlnuBallFF.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 
23 #include "EvtGenBase/EvtId.hh"
24 #include "EvtGenBase/EvtPDL.hh"
25 #include "EvtGenBase/EvtPatches.hh"
26 #include "EvtGenBase/EvtReport.hh"
27 
28 #include <math.h>
29 #include <stdlib.h>
30 #include <string>
31 
32 EvtBToVlnuBallFF::EvtBToVlnuBallFF( double r2_A1, double mfit2_A1, double r1_A2,
33  double r2_A2, double mfit2_A2, double r1_V,
34  double r2_V, double mfit2_V )
35 {
36  _r2_A1 = r2_A1;
37  _mfit2_A1 = mfit2_A1;
38  _r1_A2 = r1_A2;
39  _r2_A2 = r2_A2;
40  _mfit2_A2 = mfit2_A2;
41  _r1_V = r1_V;
42  _r2_V = r2_V;
43  _mfit2_V = mfit2_V;
44 
45  return;
46 }
47 
48 void EvtBToVlnuBallFF::getvectorff( EvtId parent, EvtId /*daught*/, double t,
49  double /*mass*/, double* a1f, double* a2f,
50  double* vf, double* a0f )
51 {
52  // FF calculations taken from the LCSR calculation of
53  // P. Ball, R. Zwicky, Phys.~Rev.~{\bf D71} 014029 (2005), hep-ph/0412079.
54 
55  //Define mBstar
56  EvtId Bplus = EvtPDL::getId( "B+" );
57  EvtId Bminus = EvtPDL::getId( "B-" );
58  double mBstar = EvtPDL::getMeanMass( EvtPDL::getId( "B*0" ) );
59  if ( parent == Bplus || parent == Bminus )
60  mBstar = EvtPDL::getMeanMass( EvtPDL::getId( "B*+" ) );
61 
62  double q2 = t;
63  *a1f = _r2_A1 / ( 1. - q2 / _mfit2_A1 );
64  *a2f = _r1_A2 / ( 1. - q2 / _mfit2_A2 ) +
65  _r2_A2 / pow( 1. - q2 / _mfit2_A2, 2. );
66  *vf = _r1_V / ( 1. - q2 / mBstar / mBstar ) + _r2_V / ( 1. - q2 / _mfit2_V );
67  *a0f = 0.0;
68 
69  return;
70 
71  // OLD STUFF from HQETFF
72 
73  // double mb=EvtPDL::getMeanMass(parent);
74  // double w = ((mb*mb)+(mass*mass)-t)/(2.0*mb*mass);
75 
76  // Form factors have a general form, with parameters passed in
77  // from the arguements.
78 
79  // double rstar = ( 2.0*sqrt(mb*mass))/(mb+mass);
80  // double ha1 = 1-rho2*(w-1);
81 
82  // *a1f = (1.0 - (t/((mb+mass)*(mb+mass))))*ha1;
83  // *a1f = (*a1f)/rstar;
84  // *a2f = (r2/rstar)*ha1;
85  // *vf = (r1/rstar)*ha1;
86 }
87 
88 void EvtBToVlnuBallFF::getscalarff( EvtId, EvtId, double, double, double*,
89  double* )
90 {
91  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
92  << "Not implemented :getvectorff in EvtBToVlnuBallFF.\n";
93  ::abort();
94 }
95 
96 void EvtBToVlnuBallFF::gettensorff( EvtId, EvtId, double, double, double*,
97  double*, double*, double* )
98 {
99  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
100  << "Not implemented :gettensorff in EvtBToVlnuBallFF.\n";
101  ::abort();
102 }
103 
104 void EvtBToVlnuBallFF::getbaryonff( EvtId, EvtId, double, double, double*,
105  double*, double*, double* )
106 {
107  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
108  << "Not implemented :getbaryonff in EvtBToVlnuBallFF.\n";
109  ::abort();
110 }
111 
112 void EvtBToVlnuBallFF::getdiracff( EvtId, EvtId, double, double, double*,
113  double*, double*, double*, double*, double* )
114 {
115  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
116  << "Not implemented :getdiracff in EvtBToVlnuBallFF.\n";
117  ::abort();
118 }
119 
120 void EvtBToVlnuBallFF::getraritaff( EvtId, EvtId, double, double, double*,
121  double*, double*, double*, double*, double*,
122  double*, double* )
123 {
124  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
125  << "Not implemented :getraritaff in EvtBToVlnuBallFF.\n";
126  ::abort();
127 }
void getdiracff(EvtId, EvtId, double, double, double *, double *, double *, double *, double *, double *) override
void getvectorff(EvtId parent, EvtId daught, double t, double mass, double *a1f, double *a2f, double *vf, double *a0f) override
std::ostream & EvtGenReport(EvtGenSeverity severity, const char *facility=0)
Definition: EvtReport.cpp:33
static double getMeanMass(EvtId i)
Definition: EvtPDL.cpp:314
void getscalarff(EvtId, EvtId, double, double, double *, double *) override
Definition: EvtId.hh:27
EvtBToVlnuBallFF(double r2_A1, double mfit2_A1, double r1_A2, double r2_A2, double mfit2_A2, double r1_V, double r2_V, double mfit2_V)
static EvtId getId(const std::string &name)
Definition: EvtPDL.cpp:287
void getbaryonff(EvtId, EvtId, double, double, double *, double *, double *, double *) override
void gettensorff(EvtId, EvtId, double, double, double *, double *, double *, double *) override
void getraritaff(EvtId, EvtId, double, double, double *, double *, double *, double *, double *, double *, double *, double *) override