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.
EvtBCVFF2.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 using namespace std;
24 
25 EvtBCVFF2::EvtBCVFF2( int idV, int fit )
26 {
27  idVector = idV;
28  whichfit = fit;
29  //cout<<"==== EvtBCVFF2:: idVector="<<idVector<<" whichfit="<<whichfit<<endl;
30  return;
31 }
32 
33 void EvtBCVFF2::getvectorff( EvtId, EvtId, double t, double, double* a1f,
34  double* a2f, double* vf, double* a0f )
35 {
36  double q2 = t;
37 
38  if ( whichfit == 0 ) {
39  *vf = 0;
40  *a0f = 0;
41  *a1f = 1;
42  *a2f = 0;
43 
44  return;
45  };
46 
47  if ( idVector == EvtPDL::getId( "J/psi" ).getId() ) { // Bc -> J/psi
48  if ( whichfit == 1 ) { // SR form factor set from [Kiselev, hep-ph/0211021]
49  double Mbc = 6.277, Mpsi = 3.0967; // Experimental values
50  double Mpole2 = 4.5 * 4.5, den = 1. / ( 1. - q2 / Mpole2 );
51  double FV = 0.11 * den, FAp = -0.071 * den, FA0 = 5.9 * den,
52  FAm = 0.12 * den;
53  *vf = ( Mbc + Mpsi ) * FV;
54  *a2f = -( Mbc + Mpsi ) * FAp;
55  *a1f = FA0 / ( Mbc + Mpsi );
56  *a0f = ( q2 * FAm + ( Mbc + Mpsi ) * ( *a1f ) -
57  ( Mbc - Mpsi ) * ( *a2f ) ) /
58  ( 2 * Mpsi );
59  return;
60  } else if ( whichfit ==
61  2 ) { // form factor set from [Ebert, hep-ph/0306306]
62  *vf = ( 0.49077824756158533 - 0.0012925655191347828 * q2 ) /
63  ( 1 - 0.06292520325875656 * q2 );
64  *a0f = ( 0.4160345034630221 - 0.0024720095310225023 * q2 ) /
65  ( 1 - 0.061603451915567785 * q2 );
66  *a1f = ( 0.4970212860605933 - 0.0067519730024654745 * q2 ) /
67  ( 1 - 0.050487026667172176 * q2 );
68  *a2f = ( 0.7315284919705497 + 0.0014263826220727142 * q2 -
69  0.0006946090066269195 * q2 * q2 ) /
70  ( 1 - 0.04885587273651653 * q2 );
71  return;
72  };
73  } else if ( idVector ==
74  EvtPDL::getId( "psi(2S)" ).getId() ) { // Bc -> psi((2S)
75  if ( whichfit == 1 ) {
77  double Mbc = 6.277, Mpsi = 3.0967, Mpsi2S = 3.686,
78  kappa = Mpsi / Mpsi2S; // Experimental values
79  double Mpole2 = 4.5 * 4.5, den = 1. / ( 1. - q2 / Mpole2 );
80  double FV = 0.11 * den * kappa / 3.1,
81  FAp = -0.071 * den * kappa / 4.9,
82  FA0 = 5.9 * den * kappa / 3.5, FAm = 0.12 * den * kappa / 2.3;
83  *vf = ( Mbc + Mpsi2S ) * FV;
84  *a2f = -( Mbc + Mpsi2S ) * FAp;
85  *a1f = FA0 / ( Mbc + Mpsi2S );
86  *a0f = ( q2 * FAm + ( Mbc + Mpsi2S ) * ( *a1f ) -
87  ( Mbc - Mpsi2S ) * ( *a2f ) ) /
88  ( 2 * Mpsi2S );
89  return;
90  } else if ( whichfit == 2 ) {
92  *vf = ( 0.24177223968739653 - 0.053589051007278135 * q2 ) /
93  ( 1 - 0.0977848994260899 * q2 );
94  *a0f = ( 0.23996026570086615 - 0.03530198514007337 * q2 ) /
95  ( 1 - 0.09371162519983989 * q2 );
96  *a1f = ( 0.17418379258849329 - 0.004129699022085851 * q2 * q2 ) /
97  ( 1 + 0.06607665248402918 * q2 );
98  *a2f = ( 0.1352376939112041 - 0.040361722565209444 * q2 +
99  0.003343515369431853 * q2 * q2 ) /
100  ( 1 - 0.1463698128333418 * q2 );
101  return;
102  };
103  } else {
104  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
105  << "Not implemented :getbaryonff in EvtBCVFF2.\n";
106  ::abort();
107  };
108 }
109 
110 void EvtBCVFF2::getscalarff( EvtId, EvtId, double, double, double*, double* )
111 {
112  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
113  << "Not implemented :getbaryonff in EvtBCVFF2.\n";
114  ::abort();
115 }
116 
117 void EvtBCVFF2::gettensorff( EvtId, EvtId, double, double, double*, double*,
118  double*, double* )
119 {
120  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
121  << "Not implemented :getbaryonff in EvtBCVFF2.\n";
122  ::abort();
123 }
124 
125 void EvtBCVFF2::getbaryonff( EvtId, EvtId, double, double, double*, double*,
126  double*, double* )
127 {
128  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
129  << "Not implemented :getbaryonff in EvtBCVFF2.\n";
130  ::abort();
131 }
132 
133 void EvtBCVFF2::getdiracff( EvtId, EvtId, double, double, double*, double*,
134  double*, double*, double*, double* )
135 {
136  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
137  << "Not implemented :getdiracff in EvtBCVFF2.\n";
138  ::abort();
139 }
140 
141 void EvtBCVFF2::getraritaff( EvtId, EvtId, double, double, double*, double*,
142  double*, double*, double*, double*, double*, double* )
143 {
144  EvtGenReport( EVTGEN_ERROR, "EvtGen" )
145  << "Not implemented :getraritaff in EvtBCVFF2.\n";
146  ::abort();
147 }
void getbaryonff(EvtId, EvtId, double, double, double *, double *, double *, double *) override
Definition: EvtBCVFF2.cpp:125
std::ostream & EvtGenReport(EvtGenSeverity severity, const char *facility=0)
Definition: EvtReport.cpp:33
EvtBCVFF2(int idV, int fit)
Definition: EvtBCVFF2.cpp:25
Definition: EvtId.hh:27
void getvectorff(EvtId parent, EvtId daught, double t, double mass, double *a1f, double *a2f, double *vf, double *a0f) override
Definition: EvtBCVFF2.cpp:33
static EvtId getId(const std::string &name)
Definition: EvtPDL.cpp:287
int getId() const
Definition: EvtId.hh:42
void getdiracff(EvtId, EvtId, double, double, double *, double *, double *, double *, double *, double *) override
Definition: EvtBCVFF2.cpp:133
void getraritaff(EvtId, EvtId, double, double, double *, double *, double *, double *, double *, double *, double *, double *) override
Definition: EvtBCVFF2.cpp:141
void getscalarff(EvtId, EvtId, double, double, double *, double *) override
Definition: EvtBCVFF2.cpp:110
void gettensorff(EvtId, EvtId, double, double, double *, double *, double *, double *) override
Definition: EvtBCVFF2.cpp:117