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.
EvtBToPlnuBKFF.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 EvtBToPlnuBKFF::EvtBToPlnuBKFF( double alpha, double beta )
33 {
34  _alpha = alpha;
35  _beta = beta;
36 
37  return;
38 }
39 
40 void EvtBToPlnuBKFF::getscalarff( EvtId parent, EvtId /*daught*/, double t,
41  double /*mass*/, double* fp, double* f0 )
42 {
43  //Define mBstar
44  EvtId Bplus = EvtPDL::getId( "B+" );
45  EvtId Bminus = EvtPDL::getId( "B-" );
46  double mBstar = EvtPDL::getMeanMass( EvtPDL::getId( "B*0" ) );
47  if ( parent == Bplus || parent == Bminus )
48  mBstar = EvtPDL::getMeanMass( EvtPDL::getId( "B*+" ) );
49  double mBstar2 = mBstar * mBstar;
50 
51  //Compute BK parametrization (t==q2)
52  double fplus = 1.0 /
53  ( ( 1.0 - t / mBstar2 ) * ( 1.0 - _alpha * t / mBstar2 ) );
54  double fzero = 1.0 / ( 1.0 - t / ( mBstar2 * _beta ) );
55 
56  *fp = fplus;
57  *f0 = fzero;
58 
59  return;
60 }
61 
62 void EvtBToPlnuBKFF::getvectorff( EvtId, EvtId, double, double, double*,
63  double*, double*, double* )
64 {
65  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
66  << "Not implemented :getvectorff in EvtBToPlnuBKFF.\n";
67  ::abort();
68 }
69 
70 void EvtBToPlnuBKFF::gettensorff( EvtId, EvtId, double, double, double*,
71  double*, double*, double* )
72 {
73  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
74  << "Not implemented :gettensorff in EvtBToPlnuBKFf.\n";
75  ::abort();
76 }
77 
78 void EvtBToPlnuBKFF::getbaryonff( EvtId, EvtId, double, double, double*,
79  double*, double*, double* )
80 {
81  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
82  << "Not implemented :getbaryonff in EvtBToPlnuBKFF.\n";
83  ::abort();
84 }
85 
86 void EvtBToPlnuBKFF::getdiracff( EvtId, EvtId, double, double, double*, double*,
87  double*, double*, double*, double* )
88 {
89  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
90  << "Not implemented :getdiracff in EvtBToPlnuBKFF.\n";
91  ::abort();
92 }
93 
94 void EvtBToPlnuBKFF::getraritaff( EvtId, EvtId, double, double, double*,
95  double*, double*, double*, double*, double*,
96  double*, double* )
97 {
98  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
99  << "Not implemented :getraritaff in EvtBToPlnuBKFF.\n";
100  ::abort();
101 }
void getbaryonff(EvtId, EvtId, double, double, double *, double *, double *, double *) override
std::ostream & EvtGenReport(EvtGenSeverity severity, const char *facility=0)
Definition: EvtReport.cpp:33
void getvectorff(EvtId, EvtId, double, double, double *, double *, double *, double *) override
void getscalarff(EvtId parent, EvtId daught, double t, double mass, double *fp, double *f0) override
void getdiracff(EvtId, EvtId, double, double, double *, double *, double *, double *, double *, double *) override
static double getMeanMass(EvtId i)
Definition: EvtPDL.cpp:314
void getraritaff(EvtId, EvtId, double, double, double *, double *, double *, double *, double *, double *, double *, double *) override
Definition: EvtId.hh:27
void gettensorff(EvtId, EvtId, double, double, double *, double *, double *, double *) override
EvtBToPlnuBKFF(double alpha, double beta)
static EvtId getId(const std::string &name)
Definition: EvtPDL.cpp:287