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
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
23using namespace std;
24
25EvtBCVFF2::EvtBCVFF2( int idV, int fit )
26{
27 m_idVector = idV;
28 m_whichfit = fit;
29 return;
30}
31
32void EvtBCVFF2::getvectorff( EvtId, EvtId, double t, double, double* a1f,
33 double* a2f, double* vf, double* a0f )
34{
35 double q2 = t;
36
37 if ( m_whichfit == 0 ) {
38 *vf = 0;
39 *a0f = 0;
40 *a1f = 1;
41 *a2f = 0;
42
43 return;
44 };
45
46 if ( m_idVector == EvtPDL::getId( "J/psi" ).getId() ) { // Bc -> J/psi
47 if ( m_whichfit ==
48 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 ( m_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 ( m_idVector ==
74 EvtPDL::getId( "psi(2S)" ).getId() ) { // Bc -> psi((2S)
75 if ( m_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 ( m_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
110void 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
117void 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
125void 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
133void 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
141void 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}
std::ostream & EvtGenReport(EvtGenSeverity severity, const char *facility=nullptr)
Definition EvtReport.cpp:32
@ EVTGEN_ERROR
Definition EvtReport.hh:49
void getvectorff(EvtId parent, EvtId daught, double t, double mass, double *a1f, double *a2f, double *vf, double *a0f) override
Definition EvtBCVFF2.cpp:32
int m_idVector
Definition EvtBCVFF2.hh:60
void getscalarff(EvtId, EvtId, double, double, double *, double *) override
void getbaryonff(EvtId, EvtId, double, double, double *, double *, double *, double *) override
void getdiracff(EvtId, EvtId, double, double, double *, double *, double *, double *, double *, double *) override
int m_whichfit
Definition EvtBCVFF2.hh:60
void gettensorff(EvtId, EvtId, double, double, double *, double *, double *, double *) override
EvtBCVFF2(int idV, int fit)
Definition EvtBCVFF2.cpp:25
void getraritaff(EvtId, EvtId, double, double, double *, double *, double *, double *, double *, double *, double *, double *) override
Definition EvtId.hh:27
static EvtId getId(const std::string &name)
Definition EvtPDL.cpp:283