Page Menu
Home
HEPForge
Search
Configure Global Search
Log In
Files
F19251246
EvtbTosllMSFF.cpp
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Award Token
Flag For Later
Size
29 KB
Referenced Files
None
Subscribers
None
EvtbTosllMSFF.cpp
View Options
/***********************************************************************
* Copyright 1998-2020 CERN for the benefit of the EvtGen authors *
* *
* This file is part of EvtGen. *
* *
* EvtGen is free software: you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation, either version 3 of the License, or *
* (at your option) any later version. *
* *
* EvtGen is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with EvtGen. If not, see <https://www.gnu.org/licenses/>. *
***********************************************************************/
#include
"EvtGenModels/EvtbTosllMSFF.hh"
#include
"EvtGenBase/EvtComplex.hh"
#include
"EvtGenBase/EvtPDL.hh"
#include
"EvtGenBase/EvtPatches.hh"
#include
"EvtGenBase/EvtReport.hh"
#include
<cmath>
#include
<cstdlib>
EvtbTosllMSFF
::
EvtbTosllMSFF
()
{
}
double
EvtbTosllMSFF
::
equation9_10
(
double
ff0
,
double
M2
,
double
q2
,
double
sigma1
,
double
sigma2
,
int
eq_num
)
{
double
ff
=
1.0
;
switch
(
eq_num
)
{
case
9
:
ff
=
1.
/
(
1.
-
q2
/
M2
);
[[
fallthrough
]];
case
10
:
ff
=
ff
*
ff0
/
(
1.
-
sigma1
*
q2
/
M2
+
sigma2
*
pow
(
q2
,
2
)
/
pow
(
M2
,
2
)
);
break
;
default
:
EvtGenReport
(
EVTGEN_ERROR
,
"EvtGen"
)
<<
"In the function EvtbTosllMSFF::equation9_10
\n
"
<<
"the parameter eq_num non equal to the 9 or 10!
\n
"
<<
"eq_num ="
<<
eq_num
<<
std
::
endl
;
::
abort
();
}
return
ff
;
}
void
EvtbTosllMSFF
::
getScalarFF
(
EvtId
parent
,
EvtId
daught
,
double
t
,
double
&
fp
,
double
&
f0
,
double
&
ft
)
{
int
models_counter
=
0
;
// counter of the accepted models
// B -> K transition form factors
if
(
(
parent
==
EvtPDL
::
getId
(
std
::
string
(
"B+"
)
)
&&
daught
==
EvtPDL
::
getId
(
std
::
string
(
"K+"
)
)
)
||
(
parent
==
EvtPDL
::
getId
(
std
::
string
(
"B-"
)
)
&&
daught
==
EvtPDL
::
getId
(
std
::
string
(
"K-"
)
)
)
||
(
parent
==
EvtPDL
::
getId
(
std
::
string
(
"B0"
)
)
&&
daught
==
EvtPDL
::
getId
(
std
::
string
(
"K0"
)
)
)
||
(
parent
==
EvtPDL
::
getId
(
std
::
string
(
"anti-B0"
)
)
&&
daught
==
EvtPDL
::
getId
(
std
::
string
(
"anti-K0"
)
)
)
||
(
parent
==
EvtPDL
::
getId
(
std
::
string
(
"B0"
)
)
&&
daught
==
EvtPDL
::
getId
(
std
::
string
(
"K_S0"
)
)
)
||
(
parent
==
EvtPDL
::
getId
(
std
::
string
(
"anti-B0"
)
)
&&
daught
==
EvtPDL
::
getId
(
std
::
string
(
"K_S0"
)
)
)
||
(
parent
==
EvtPDL
::
getId
(
std
::
string
(
"B0"
)
)
&&
daught
==
EvtPDL
::
getId
(
std
::
string
(
"K_L0"
)
)
)
||
(
parent
==
EvtPDL
::
getId
(
std
::
string
(
"anti-B0"
)
)
&&
daught
==
EvtPDL
::
getId
(
std
::
string
(
"K_L0"
)
)
)
)
{
double
ff0
[]
=
{
0.36
,
0.36
,
0.35
};
double
sigma1
[]
=
{
0.43
,
0.70
,
0.43
};
double
sigma2
[]
=
{
0.00
,
0.27
,
0.00
};
int
eq_num
[]
=
{
9
,
10
,
9
};
double
M_P2
=
5.37
*
5.37
;
// GeV^2 for B^0_s - meson
double
M_V2
=
5.42
*
5.42
;
// GeV^2 for B^*_s - meson
fp
=
equation9_10
(
ff0
[
0
],
M_P2
,
t
,
sigma1
[
0
],
sigma2
[
0
],
eq_num
[
0
]
);
f0
=
equation9_10
(
ff0
[
1
],
M_V2
,
t
,
sigma1
[
1
],
sigma2
[
1
],
eq_num
[
1
]
);
ft
=
equation9_10
(
ff0
[
2
],
M_P2
,
t
,
sigma1
[
2
],
sigma2
[
2
],
eq_num
[
2
]
);
models_counter
=
models_counter
+
1
;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") <<"\n The function EvtbTosllMSFF::getVectorFF(...) passed."
// << "\n B -> K transition form factors"
// << std::endl;
}
// B -> \pi transition form factors
if
(
(
parent
==
EvtPDL
::
getId
(
std
::
string
(
"B+"
)
)
&&
daught
==
EvtPDL
::
getId
(
std
::
string
(
"pi+"
)
)
)
||
(
parent
==
EvtPDL
::
getId
(
std
::
string
(
"B-"
)
)
&&
daught
==
EvtPDL
::
getId
(
std
::
string
(
"pi-"
)
)
)
||
(
parent
==
EvtPDL
::
getId
(
std
::
string
(
"B0"
)
)
&&
daught
==
EvtPDL
::
getId
(
std
::
string
(
"pi0"
)
)
)
||
(
parent
==
EvtPDL
::
getId
(
std
::
string
(
"anti-B0"
)
)
&&
daught
==
EvtPDL
::
getId
(
std
::
string
(
"pi0"
)
)
)
)
{
double
ff0
[]
=
{
0.29
,
0.29
,
0.28
};
double
sigma1
[]
=
{
0.48
,
0.76
,
0.48
};
double
sigma2
[]
=
{
0.00
,
0.28
,
0.00
};
int
eq_num
[]
=
{
9
,
10
,
9
};
double
M_P2
=
5.27
*
5.27
;
// GeV^2 for B^0 - meson
double
M_V2
=
5.32
*
5.32
;
// GeV^2 for B^* - meson
fp
=
equation9_10
(
ff0
[
0
],
M_P2
,
t
,
sigma1
[
0
],
sigma2
[
0
],
eq_num
[
0
]
);
f0
=
equation9_10
(
ff0
[
1
],
M_V2
,
t
,
sigma1
[
1
],
sigma2
[
1
],
eq_num
[
1
]
);
ft
=
equation9_10
(
ff0
[
2
],
M_P2
,
t
,
sigma1
[
2
],
sigma2
[
2
],
eq_num
[
2
]
);
models_counter
=
models_counter
+
1
;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") <<"\n The function EvtbTosllMSFF::getVectorFF(...) passed."
// << "\n B -> pi transition form factors"
// << std::endl;
}
// B_d -> \eta transition form factors
if
(
(
parent
==
EvtPDL
::
getId
(
std
::
string
(
"B0"
)
)
&&
daught
==
EvtPDL
::
getId
(
std
::
string
(
"eta"
)
)
)
||
(
parent
==
EvtPDL
::
getId
(
std
::
string
(
"anti-B0"
)
)
&&
daught
==
EvtPDL
::
getId
(
std
::
string
(
"eta"
)
)
)
)
{
double
ff0
[]
=
{
0.36
,
0.36
,
0.36
};
double
sigma1
[]
=
{
0.60
,
0.80
,
0.58
};
double
sigma2
[]
=
{
0.20
,
0.40
,
0.18
};
int
eq_num
[]
=
{
9
,
10
,
9
};
double
M_P2
=
5.27
*
5.27
;
// GeV^2 for B_d^0 - meson
double
M_V2
=
5.32
*
5.32
;
// GeV^2 for B_d^* - meson
fp
=
equation9_10
(
ff0
[
0
],
M_P2
,
t
,
sigma1
[
0
],
sigma2
[
0
],
eq_num
[
0
]
);
fp
=
-
0.5
*
fp
;
f0
=
equation9_10
(
ff0
[
1
],
M_V2
,
t
,
sigma1
[
1
],
sigma2
[
1
],
eq_num
[
1
]
);
f0
=
-
0.5
*
f0
;
ft
=
equation9_10
(
ff0
[
2
],
M_P2
,
t
,
sigma1
[
2
],
sigma2
[
2
],
eq_num
[
2
]
);
ft
=
-
0.5
*
ft
;
models_counter
=
models_counter
+
1
;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") <<"\n The function EvtbTosllMSFF::getVectorFF(...) passed."
// << "\n Bd -> eta transition form factors"
// << std::endl;
}
// B_d -> \eta' transition form factors
if
(
(
parent
==
EvtPDL
::
getId
(
std
::
string
(
"B0"
)
)
&&
daught
==
EvtPDL
::
getId
(
std
::
string
(
"eta'"
)
)
)
||
(
parent
==
EvtPDL
::
getId
(
std
::
string
(
"anti-B0"
)
)
&&
daught
==
EvtPDL
::
getId
(
std
::
string
(
"eta'"
)
)
)
)
{
double
ff0
[]
=
{
0.36
,
0.36
,
0.39
};
double
sigma1
[]
=
{
0.60
,
0.80
,
0.58
};
double
sigma2
[]
=
{
0.20
,
0.45
,
0.18
};
int
eq_num
[]
=
{
9
,
10
,
9
};
double
M_P2
=
5.27
*
5.27
;
// GeV^2 for B_d^0 - meson
double
M_V2
=
5.32
*
5.32
;
// GeV^2 for B_d^* - meson
fp
=
equation9_10
(
ff0
[
0
],
M_P2
,
t
,
sigma1
[
0
],
sigma2
[
0
],
eq_num
[
0
]
);
f0
=
equation9_10
(
ff0
[
1
],
M_V2
,
t
,
sigma1
[
1
],
sigma2
[
1
],
eq_num
[
1
]
);
ft
=
equation9_10
(
ff0
[
2
],
M_P2
,
t
,
sigma1
[
2
],
sigma2
[
2
],
eq_num
[
2
]
);
models_counter
=
models_counter
+
1
;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") <<"\n The function EvtbTosllMSFF::getVectorFF(...) passed."
// << "\n Bd -> eta transition form factors"
// << std::endl;
}
// B_s -> \eta transition form factors
if
(
(
parent
==
EvtPDL
::
getId
(
std
::
string
(
"B_s0"
)
)
&&
daught
==
EvtPDL
::
getId
(
std
::
string
(
"eta"
)
)
)
||
(
parent
==
EvtPDL
::
getId
(
std
::
string
(
"anti-B_s0"
)
)
&&
daught
==
EvtPDL
::
getId
(
std
::
string
(
"eta"
)
)
)
)
{
double
ff0
[]
=
{
0.36
,
0.36
,
0.36
};
double
sigma1
[]
=
{
0.60
,
0.80
,
0.58
};
double
sigma2
[]
=
{
0.20
,
0.40
,
0.18
};
int
eq_num
[]
=
{
9
,
10
,
9
};
double
M_P2
=
5.37
*
5.37
;
// GeV^2 for B_s^0 - meson
double
M_V2
=
5.42
*
5.42
;
// GeV^2 for B_s^* - meson
fp
=
equation9_10
(
ff0
[
0
],
M_P2
,
t
,
sigma1
[
0
],
sigma2
[
0
],
eq_num
[
0
]
);
f0
=
equation9_10
(
ff0
[
1
],
M_V2
,
t
,
sigma1
[
1
],
sigma2
[
1
],
eq_num
[
1
]
);
ft
=
equation9_10
(
ff0
[
2
],
M_P2
,
t
,
sigma1
[
2
],
sigma2
[
2
],
eq_num
[
2
]
);
models_counter
=
models_counter
+
1
;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") <<"\n The function EvtbTosllMSFF::getVectorFF(...) passed."
// << "\n Bs -> eta transition form factors"
// << std::endl;
}
// B_s -> \eta' transition form factors
if
(
(
parent
==
EvtPDL
::
getId
(
std
::
string
(
"B_s0"
)
)
&&
daught
==
EvtPDL
::
getId
(
std
::
string
(
"eta'"
)
)
)
||
(
parent
==
EvtPDL
::
getId
(
std
::
string
(
"anti-B_s0"
)
)
&&
daught
==
EvtPDL
::
getId
(
std
::
string
(
"eta'"
)
)
)
)
{
double
ff0
[]
=
{
0.36
,
0.36
,
0.39
};
double
sigma1
[]
=
{
0.60
,
0.80
,
0.58
};
double
sigma2
[]
=
{
0.20
,
0.45
,
0.18
};
int
eq_num
[]
=
{
9
,
10
,
9
};
double
M_P2
=
5.37
*
5.37
;
// GeV^2 for B_s^0 - meson
double
M_V2
=
5.42
*
5.42
;
// GeV^2 for B_s^* - meson
fp
=
equation9_10
(
ff0
[
0
],
M_P2
,
t
,
sigma1
[
0
],
sigma2
[
0
],
eq_num
[
0
]
);
f0
=
equation9_10
(
ff0
[
1
],
M_V2
,
t
,
sigma1
[
1
],
sigma2
[
1
],
eq_num
[
1
]
);
ft
=
equation9_10
(
ff0
[
2
],
M_P2
,
t
,
sigma1
[
2
],
sigma2
[
2
],
eq_num
[
2
]
);
models_counter
=
models_counter
+
1
;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") <<"\n The function EvtbTosllMSFF::getVectorFF(...) passed."
// << "\n Bs -> eta transition form factors"
// << std::endl;
}
// B_s -> f_0(980) transition form factors
if
(
(
parent
==
EvtPDL
::
getId
(
std
::
string
(
"B_s0"
)
)
&&
daught
==
EvtPDL
::
getId
(
std
::
string
(
"f_0"
)
)
)
||
(
parent
==
EvtPDL
::
getId
(
std
::
string
(
"anti-B_s0"
)
)
&&
daught
==
EvtPDL
::
getId
(
std
::
string
(
"f_0"
)
)
)
)
{
double
ff0
[]
=
{
0.238
,
0.238
,
0.308
};
double
sigma1
[]
=
{
1.50
,
0.53
,
1.46
};
double
sigma2
[]
=
{
0.58
,
-
0.36
,
0.58
};
int
eq_num
[]
=
{
10
,
10
,
10
};
double
M_P2
=
5.366
*
5.366
;
// GeV^2 for B_s^0 - meson
fp
=
0.0
-
equation9_10
(
ff0
[
0
],
M_P2
,
t
,
sigma1
[
0
],
sigma2
[
0
],
eq_num
[
0
]
);
f0
=
0.0
-
equation9_10
(
ff0
[
1
],
M_P2
,
t
,
sigma1
[
1
],
sigma2
[
1
],
eq_num
[
1
]
);
ft
=
equation9_10
(
ff0
[
2
],
M_P2
,
t
,
sigma1
[
2
],
sigma2
[
2
],
eq_num
[
2
]
);
models_counter
=
models_counter
+
1
;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") <<"\n The function EvtbTosllMSFF::getVectorFF(...) passed."
// << "\n Bs -> eta transition form factors"
// << std::endl;
}
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") << "\n models_counter = " << models_counter
// << "\n Scalar form-factors at q^2 = " << t
// << " for B -> P transition:"
// << "\n fp = " << fp
// << "\n f0 = " << f0
// << "\n ft = " << ft << std::endl;
if
(
models_counter
!=
1
)
{
EvtGenReport
(
EVTGEN_ERROR
,
"EvtGen"
)
<<
"
\n
In the function EvtbTosllMSFF::getScalarFF(...)
\n
"
<<
"the parameter models_counter not equal 1!
\n
"
<<
"models_counter = "
<<
models_counter
<<
std
::
endl
;
::
abort
();
}
}
void
EvtbTosllMSFF
::
getVectorFF
(
EvtId
parent
,
EvtId
daught
,
double
t
,
double
&
a1
,
double
&
a2
,
double
&
a0
,
double
&
v
,
double
&
t1
,
double
&
t2
,
double
&
t3
)
{
int
models_counter
=
0
;
// counter of the accepted models
double
thetaK
=
-
34.0
*
3.14159
/
180
;
// K_1(1270) - K_1(1400) mixing angle
// \bar B -> \bar K* transition form factors
if
(
(
parent
==
EvtPDL
::
getId
(
std
::
string
(
"B+"
)
)
&&
daught
==
EvtPDL
::
getId
(
std
::
string
(
"K*+"
)
)
)
||
(
parent
==
EvtPDL
::
getId
(
std
::
string
(
"B-"
)
)
&&
daught
==
EvtPDL
::
getId
(
std
::
string
(
"K*-"
)
)
)
||
(
parent
==
EvtPDL
::
getId
(
std
::
string
(
"B0"
)
)
&&
daught
==
EvtPDL
::
getId
(
std
::
string
(
"K*0"
)
)
)
||
(
parent
==
EvtPDL
::
getId
(
std
::
string
(
"anti-B0"
)
)
&&
daught
==
EvtPDL
::
getId
(
std
::
string
(
"anti-K*0"
)
)
)
)
{
double
ff0
[]
=
{
0.44
,
0.45
,
0.36
,
0.32
,
0.39
,
0.39
,
0.27
};
double
sigma1
[]
=
{
0.45
,
0.46
,
0.64
,
1.23
,
0.45
,
0.72
,
1.31
};
double
sigma2
[]
=
{
0.00
,
0.00
,
0.36
,
0.38
,
0.00
,
0.62
,
0.41
};
int
eq_num
[]
=
{
9
,
9
,
10
,
10
,
9
,
10
,
10
};
double
M_P2
=
5.37
*
5.37
;
// GeV^2 for B^0_s - meson
double
M_V2
=
5.42
*
5.42
;
// GeV^2 for B^*_s - meson
v
=
equation9_10
(
ff0
[
0
],
M_P2
,
t
,
sigma1
[
0
],
sigma2
[
0
],
eq_num
[
0
]
);
a0
=
equation9_10
(
ff0
[
1
],
M_P2
,
t
,
sigma1
[
1
],
sigma2
[
1
],
eq_num
[
1
]
);
a1
=
equation9_10
(
ff0
[
2
],
M_V2
,
t
,
sigma1
[
2
],
sigma2
[
2
],
eq_num
[
2
]
);
a2
=
equation9_10
(
ff0
[
3
],
M_V2
,
t
,
sigma1
[
3
],
sigma2
[
3
],
eq_num
[
3
]
);
t1
=
equation9_10
(
ff0
[
4
],
M_P2
,
t
,
sigma1
[
4
],
sigma2
[
4
],
eq_num
[
4
]
);
t2
=
equation9_10
(
ff0
[
5
],
M_V2
,
t
,
sigma1
[
5
],
sigma2
[
5
],
eq_num
[
5
]
);
t3
=
equation9_10
(
ff0
[
6
],
M_V2
,
t
,
sigma1
[
6
],
sigma2
[
6
],
eq_num
[
6
]
);
models_counter
=
models_counter
+
1
;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") <<"\n The function EvtbTosllMSFF::getVectorFF(...) passed."
// << "\n barB -> barK* transition form factors"
// << std::endl;
}
// \bar B -> \bar\rho transition form factors
if
(
(
parent
==
EvtPDL
::
getId
(
std
::
string
(
"B+"
)
)
&&
daught
==
EvtPDL
::
getId
(
std
::
string
(
"rho+"
)
)
)
||
(
parent
==
EvtPDL
::
getId
(
std
::
string
(
"B-"
)
)
&&
daught
==
EvtPDL
::
getId
(
std
::
string
(
"rho-"
)
)
)
||
(
parent
==
EvtPDL
::
getId
(
std
::
string
(
"B0"
)
)
&&
daught
==
EvtPDL
::
getId
(
std
::
string
(
"rho0"
)
)
)
||
(
parent
==
EvtPDL
::
getId
(
std
::
string
(
"anti-B0"
)
)
&&
daught
==
EvtPDL
::
getId
(
std
::
string
(
"rho0"
)
)
)
)
{
double
ff0
[]
=
{
0.31
,
0.30
,
0.26
,
0.24
,
0.27
,
0.27
,
0.19
};
double
sigma1
[]
=
{
0.59
,
0.54
,
0.73
,
1.40
,
0.60
,
0.74
,
1.42
};
double
sigma2
[]
=
{
0.00
,
0.00
,
0.10
,
0.50
,
0.00
,
0.19
,
0.51
};
int
eq_num
[]
=
{
9
,
9
,
10
,
10
,
9
,
10
,
10
};
double
M_P2
=
5.27
*
5.27
;
// GeV^2 for B - meson
double
M_V2
=
5.32
*
5.32
;
// GeV^2 for B^* - meson
v
=
equation9_10
(
ff0
[
0
],
M_P2
,
t
,
sigma1
[
0
],
sigma2
[
0
],
eq_num
[
0
]
);
a0
=
equation9_10
(
ff0
[
1
],
M_P2
,
t
,
sigma1
[
1
],
sigma2
[
1
],
eq_num
[
1
]
);
a1
=
equation9_10
(
ff0
[
2
],
M_V2
,
t
,
sigma1
[
2
],
sigma2
[
2
],
eq_num
[
2
]
);
a2
=
equation9_10
(
ff0
[
3
],
M_V2
,
t
,
sigma1
[
3
],
sigma2
[
3
],
eq_num
[
3
]
);
t1
=
equation9_10
(
ff0
[
4
],
M_P2
,
t
,
sigma1
[
4
],
sigma2
[
4
],
eq_num
[
4
]
);
t2
=
equation9_10
(
ff0
[
5
],
M_V2
,
t
,
sigma1
[
5
],
sigma2
[
5
],
eq_num
[
5
]
);
t3
=
equation9_10
(
ff0
[
6
],
M_V2
,
t
,
sigma1
[
6
],
sigma2
[
6
],
eq_num
[
6
]
);
models_counter
=
models_counter
+
1
;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") <<"\n The function EvtbTosllMSFF::getVectorFF(...) passed."
// << "\n barB -> bar rho transition form factors"
// << std::endl;
}
// \bar B -> \omega transition form factors (exactly as for \bar B -> \rho^0 ff!)
if
(
(
parent
==
EvtPDL
::
getId
(
std
::
string
(
"B0"
)
)
&&
daught
==
EvtPDL
::
getId
(
std
::
string
(
"omega"
)
)
)
||
(
parent
==
EvtPDL
::
getId
(
std
::
string
(
"anti-B0"
)
)
&&
daught
==
EvtPDL
::
getId
(
std
::
string
(
"omega"
)
)
)
)
{
double
ff0
[]
=
{
0.31
,
0.30
,
0.26
,
0.24
,
0.27
,
0.27
,
0.19
};
double
sigma1
[]
=
{
0.59
,
0.54
,
0.73
,
1.40
,
0.60
,
0.74
,
1.42
};
double
sigma2
[]
=
{
0.00
,
0.00
,
0.10
,
0.50
,
0.00
,
0.19
,
0.51
};
int
eq_num
[]
=
{
9
,
9
,
10
,
10
,
9
,
10
,
10
};
double
M_P2
=
5.27
*
5.27
;
// GeV^2 for B - meson
double
M_V2
=
5.32
*
5.32
;
// GeV^2 for B^* - meson
v
=
equation9_10
(
ff0
[
0
],
M_P2
,
t
,
sigma1
[
0
],
sigma2
[
0
],
eq_num
[
0
]
);
a0
=
equation9_10
(
ff0
[
1
],
M_P2
,
t
,
sigma1
[
1
],
sigma2
[
1
],
eq_num
[
1
]
);
a1
=
equation9_10
(
ff0
[
2
],
M_V2
,
t
,
sigma1
[
2
],
sigma2
[
2
],
eq_num
[
2
]
);
a2
=
equation9_10
(
ff0
[
3
],
M_V2
,
t
,
sigma1
[
3
],
sigma2
[
3
],
eq_num
[
3
]
);
t1
=
equation9_10
(
ff0
[
4
],
M_P2
,
t
,
sigma1
[
4
],
sigma2
[
4
],
eq_num
[
4
]
);
t2
=
equation9_10
(
ff0
[
5
],
M_V2
,
t
,
sigma1
[
5
],
sigma2
[
5
],
eq_num
[
5
]
);
t3
=
equation9_10
(
ff0
[
6
],
M_V2
,
t
,
sigma1
[
6
],
sigma2
[
6
],
eq_num
[
6
]
);
models_counter
=
models_counter
+
1
;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") <<"\n The function EvtbTosllMSFF::getVectorFF(...) passed."
// << "\n barB -> omega transition form factors"
// << std::endl;
}
// \bar Bs -> phi transition form factors
if
(
(
parent
==
EvtPDL
::
getId
(
std
::
string
(
"B_s0"
)
)
&&
daught
==
EvtPDL
::
getId
(
std
::
string
(
"phi"
)
)
)
||
(
parent
==
EvtPDL
::
getId
(
std
::
string
(
"anti-B_s0"
)
)
&&
daught
==
EvtPDL
::
getId
(
std
::
string
(
"phi"
)
)
)
)
{
double
ff0
[]
=
{
0.44
,
0.42
,
0.34
,
0.31
,
0.38
,
0.38
,
0.26
};
double
sigma1
[]
=
{
0.62
,
0.55
,
0.73
,
1.30
,
0.62
,
0.83
,
1.41
};
double
sigma2
[]
=
{
0.20
,
0.12
,
0.42
,
0.52
,
0.20
,
0.71
,
0.57
};
int
eq_num
[]
=
{
9
,
9
,
10
,
10
,
9
,
10
,
10
};
double
M_P2
=
5.37
*
5.37
;
// GeV^2 for B^0_s - meson
double
M_V2
=
5.42
*
5.42
;
// GeV^2 for B^*_s - meson
v
=
equation9_10
(
ff0
[
0
],
M_P2
,
t
,
sigma1
[
0
],
sigma2
[
0
],
eq_num
[
0
]
);
a0
=
equation9_10
(
ff0
[
1
],
M_P2
,
t
,
sigma1
[
1
],
sigma2
[
1
],
eq_num
[
1
]
);
a1
=
equation9_10
(
ff0
[
2
],
M_V2
,
t
,
sigma1
[
2
],
sigma2
[
2
],
eq_num
[
2
]
);
a2
=
equation9_10
(
ff0
[
3
],
M_V2
,
t
,
sigma1
[
3
],
sigma2
[
3
],
eq_num
[
3
]
);
t1
=
equation9_10
(
ff0
[
4
],
M_P2
,
t
,
sigma1
[
4
],
sigma2
[
4
],
eq_num
[
4
]
);
t2
=
equation9_10
(
ff0
[
5
],
M_V2
,
t
,
sigma1
[
5
],
sigma2
[
5
],
eq_num
[
5
]
);
t3
=
equation9_10
(
ff0
[
6
],
M_V2
,
t
,
sigma1
[
6
],
sigma2
[
6
],
eq_num
[
6
]
);
models_counter
=
models_counter
+
1
;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") <<"\n The function EvtbTosllMSFF::getVectorFF(...) passed."
// << "\n barBs -> phi transition form factors"
// << std::endl;
}
// \bar Bs -> K* (without \bar !) transition form factors
if
(
(
parent
==
EvtPDL
::
getId
(
std
::
string
(
"B_s0"
)
)
&&
daught
==
EvtPDL
::
getId
(
std
::
string
(
"anti-K*0"
)
)
)
||
(
parent
==
EvtPDL
::
getId
(
std
::
string
(
"anti-B_s0"
)
)
&&
daught
==
EvtPDL
::
getId
(
std
::
string
(
"K*0"
)
)
)
)
{
double
ff0
[]
=
{
0.38
,
0.37
,
0.29
,
0.26
,
0.32
,
0.32
,
0.23
};
double
sigma1
[]
=
{
0.66
,
0.60
,
0.86
,
1.32
,
0.66
,
0.98
,
1.42
};
double
sigma2
[]
=
{
0.30
,
0.16
,
0.60
,
0.54
,
0.31
,
0.90
,
0.62
};
int
eq_num
[]
=
{
9
,
9
,
10
,
10
,
9
,
10
,
10
};
double
M_P2
=
5.27
*
5.27
;
// GeV^2 for B - meson
double
M_V2
=
5.32
*
5.32
;
// GeV^2 for B^* - meson
v
=
equation9_10
(
ff0
[
0
],
M_P2
,
t
,
sigma1
[
0
],
sigma2
[
0
],
eq_num
[
0
]
);
a0
=
equation9_10
(
ff0
[
1
],
M_P2
,
t
,
sigma1
[
1
],
sigma2
[
1
],
eq_num
[
1
]
);
a1
=
equation9_10
(
ff0
[
2
],
M_V2
,
t
,
sigma1
[
2
],
sigma2
[
2
],
eq_num
[
2
]
);
a2
=
equation9_10
(
ff0
[
3
],
M_V2
,
t
,
sigma1
[
3
],
sigma2
[
3
],
eq_num
[
3
]
);
t1
=
equation9_10
(
ff0
[
4
],
M_P2
,
t
,
sigma1
[
4
],
sigma2
[
4
],
eq_num
[
4
]
);
t2
=
equation9_10
(
ff0
[
5
],
M_V2
,
t
,
sigma1
[
5
],
sigma2
[
5
],
eq_num
[
5
]
);
t3
=
equation9_10
(
ff0
[
6
],
M_V2
,
t
,
sigma1
[
6
],
sigma2
[
6
],
eq_num
[
6
]
);
models_counter
=
models_counter
+
1
;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") <<"\n The function EvtbTosllMSFF::getVectorFF(...) passed."
// << "\n barBs -> K* transition form factors"
// << std::endl;
}
// \bar B -> \bar K_1(1270) transition form factors
// See the paper: H.Hatanaka and Kwei-Chou Yang, PRD78, 074007 (2008)
if
(
(
parent
==
EvtPDL
::
getId
(
std
::
string
(
"B+"
)
)
&&
daught
==
EvtPDL
::
getId
(
std
::
string
(
"K_1+"
)
)
)
||
(
parent
==
EvtPDL
::
getId
(
std
::
string
(
"B-"
)
)
&&
daught
==
EvtPDL
::
getId
(
std
::
string
(
"K_1-"
)
)
)
||
(
parent
==
EvtPDL
::
getId
(
std
::
string
(
"B0"
)
)
&&
daught
==
EvtPDL
::
getId
(
std
::
string
(
"K_10"
)
)
)
||
(
parent
==
EvtPDL
::
getId
(
std
::
string
(
"anti-B0"
)
)
&&
daught
==
EvtPDL
::
getId
(
std
::
string
(
"anti-K_10"
)
)
)
)
{
double
ff0A
[]
=
{
0.450
,
0.340
,
0.41
,
0.22
,
0.31
,
0.310
,
0.28
};
double
sigma1A
[]
=
{
1.600
,
0.635
,
1.51
,
2.40
,
2.01
,
0.629
,
1.36
};
double
sigma2A
[]
=
{
0.974
,
0.211
,
1.18
,
1.78
,
1.50
,
0.387
,
0.72
};
double
ff0B
[]
=
{
-
0.37
,
-
0.29
,
-
0.17
,
-
0.45
,
-
0.25
,
-
0.250
,
-
0.11
};
double
sigma1B
[]
=
{
1.72
,
0.729
,
0.919
,
1.34
,
1.59
,
0.378
,
-
1.61
};
double
sigma2B
[]
=
{
0.912
,
0.074
,
0.855
,
0.69
,
0.79
,
-
0.755
,
10.2
};
int
eq_num
[]
=
{
10
,
10
,
10
,
10
,
10
,
10
,
10
};
double
MM2
=
5.279
*
5.279
;
// GeV^2
double
MB
=
5.279
;
// GeV
double
MK1
=
1.272
;
// GeV
double
MK1A
=
1.31
;
// GeV
double
MK1B
=
1.34
;
// GeV
double
sinK
=
sin
(
thetaK
);
// sin(-34^o)
double
cosK
=
cos
(
thetaK
);
// cos(-34^o)
double
a
,
v0
,
v1
,
v2
;
a
=
sinK
*
equation9_10
(
ff0A
[
0
],
MM2
,
t
,
sigma1A
[
0
],
sigma2A
[
0
],
eq_num
[
0
]
)
*
(
MB
+
MK1
)
/
(
MB
+
MK1A
);
a
=
a
+
cosK
*
equation9_10
(
ff0B
[
0
],
MM2
,
t
,
sigma1B
[
0
],
sigma2B
[
0
],
eq_num
[
0
]
)
*
(
MB
+
MK1
)
/
(
MB
+
MK1B
);
v0
=
sinK
*
equation9_10
(
ff0A
[
1
],
MM2
,
t
,
sigma1A
[
1
],
sigma2A
[
1
],
eq_num
[
1
]
)
*
MK1A
/
MK1
;
v0
=
v0
+
cosK
*
equation9_10
(
ff0B
[
1
],
MM2
,
t
,
sigma1B
[
1
],
sigma2B
[
1
],
eq_num
[
1
]
)
*
MK1B
/
MK1
;
v1
=
sinK
*
equation9_10
(
ff0A
[
2
],
MM2
,
t
,
sigma1A
[
2
],
sigma2A
[
2
],
eq_num
[
2
]
)
*
(
MB
+
MK1A
)
/
(
MB
+
MK1
);
v1
=
v1
+
cosK
*
equation9_10
(
ff0B
[
2
],
MM2
,
t
,
sigma1B
[
2
],
sigma2B
[
2
],
eq_num
[
2
]
)
*
(
MB
+
MK1B
)
/
(
MB
+
MK1
);
v2
=
sinK
*
equation9_10
(
ff0A
[
3
],
MM2
,
t
,
sigma1A
[
3
],
sigma2A
[
3
],
eq_num
[
3
]
)
*
(
MB
+
MK1
)
/
(
MB
+
MK1A
);
v2
=
v2
+
cosK
*
equation9_10
(
ff0B
[
3
],
MM2
,
t
,
sigma1B
[
3
],
sigma2B
[
3
],
eq_num
[
3
]
)
*
(
MB
+
MK1
)
/
(
MB
+
MK1B
);
v
=
a
;
a0
=
v0
;
a1
=
v1
;
a2
=
v2
;
t1
=
sinK
*
equation9_10
(
ff0A
[
4
],
MM2
,
t
,
sigma1A
[
4
],
sigma2A
[
4
],
eq_num
[
4
]
);
t1
=
t1
+
cosK
*
equation9_10
(
ff0B
[
4
],
MM2
,
t
,
sigma1B
[
4
],
sigma2B
[
4
],
eq_num
[
4
]
);
t2
=
sinK
*
equation9_10
(
ff0A
[
5
],
MM2
,
t
,
sigma1A
[
5
],
sigma2A
[
5
],
eq_num
[
5
]
)
*
(
MB
*
MB
-
MK1A
*
MK1A
)
/
(
MB
*
MB
-
MK1
*
MK1
);
t2
=
t2
+
cosK
*
equation9_10
(
ff0B
[
5
],
MM2
,
t
,
sigma1B
[
5
],
sigma2B
[
5
],
eq_num
[
5
]
)
*
(
MB
*
MB
-
MK1B
*
MK1B
)
/
(
MB
*
MB
-
MK1
*
MK1
);
t3
=
sinK
*
equation9_10
(
ff0A
[
6
],
MM2
,
t
,
sigma1A
[
6
],
sigma2A
[
6
],
eq_num
[
6
]
);
t3
=
t3
+
cosK
*
equation9_10
(
ff0B
[
6
],
MM2
,
t
,
sigma1B
[
6
],
sigma2B
[
6
],
eq_num
[
6
]
);
models_counter
=
models_counter
+
1
;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") <<"\n The function EvtbTosllMSFF::getVectorFF(...) passed."
// << "\n barB -> bar K_1(1270) transition form factors"
// << std::endl;
}
// \bar B -> \bar K_1(1400) transition form factors
// See the paper: H.Hatanaka and Kwei-Chou Yang, PRD78, 074007 (2008)
if
(
(
parent
==
EvtPDL
::
getId
(
std
::
string
(
"B+"
)
)
&&
daught
==
EvtPDL
::
getId
(
std
::
string
(
"K'_1+"
)
)
)
||
(
parent
==
EvtPDL
::
getId
(
std
::
string
(
"B-"
)
)
&&
daught
==
EvtPDL
::
getId
(
std
::
string
(
"K'_1-"
)
)
)
||
(
parent
==
EvtPDL
::
getId
(
std
::
string
(
"B0"
)
)
&&
daught
==
EvtPDL
::
getId
(
std
::
string
(
"K'_10"
)
)
)
||
(
parent
==
EvtPDL
::
getId
(
std
::
string
(
"anti-B0"
)
)
&&
daught
==
EvtPDL
::
getId
(
std
::
string
(
"anti-K'_10"
)
)
)
)
{
double
ff0A
[]
=
{
0.450
,
0.340
,
0.41
,
0.22
,
0.31
,
0.310
,
0.28
};
double
sigma1A
[]
=
{
1.600
,
0.635
,
1.51
,
2.40
,
2.01
,
0.629
,
1.36
};
double
sigma2A
[]
=
{
0.974
,
0.211
,
1.18
,
1.78
,
1.50
,
0.387
,
0.72
};
double
ff0B
[]
=
{
-
0.37
,
-
0.29
,
-
0.17
,
-
0.45
,
-
0.25
,
-
0.250
,
-
0.11
};
double
sigma1B
[]
=
{
1.72
,
0.729
,
0.919
,
1.34
,
1.59
,
0.378
,
-
1.61
};
double
sigma2B
[]
=
{
0.912
,
0.074
,
0.855
,
0.69
,
0.79
,
-
0.755
,
10.2
};
int
eq_num
[]
=
{
10
,
10
,
10
,
10
,
10
,
10
,
10
};
double
MM2
=
5.279
*
5.279
;
// GeV^2
double
MB
=
5.279
;
// GeV
double
MK1
=
1.403
;
// GeV
double
MK1A
=
1.31
;
// GeV
double
MK1B
=
1.34
;
// GeV
double
sinK
=
sin
(
thetaK
);
// sin(-34^o)
double
cosK
=
cos
(
thetaK
);
// cos(-34^o)
double
a
,
v0
,
v1
,
v2
;
a
=
cosK
*
equation9_10
(
ff0A
[
0
],
MM2
,
t
,
sigma1A
[
0
],
sigma2A
[
0
],
eq_num
[
0
]
)
*
(
MB
+
MK1
)
/
(
MB
+
MK1A
);
a
=
a
-
sinK
*
equation9_10
(
ff0B
[
0
],
MM2
,
t
,
sigma1B
[
0
],
sigma2B
[
0
],
eq_num
[
0
]
)
*
(
MB
+
MK1
)
/
(
MB
+
MK1B
);
v0
=
cosK
*
equation9_10
(
ff0A
[
1
],
MM2
,
t
,
sigma1A
[
1
],
sigma2A
[
1
],
eq_num
[
1
]
)
*
MK1A
/
MK1
;
v0
=
v0
-
sinK
*
equation9_10
(
ff0B
[
1
],
MM2
,
t
,
sigma1B
[
1
],
sigma2B
[
1
],
eq_num
[
1
]
)
*
MK1B
/
MK1
;
v1
=
cosK
*
equation9_10
(
ff0A
[
2
],
MM2
,
t
,
sigma1A
[
2
],
sigma2A
[
2
],
eq_num
[
2
]
)
*
(
MB
+
MK1A
)
/
(
MB
+
MK1
);
v1
=
v1
-
sinK
*
equation9_10
(
ff0B
[
2
],
MM2
,
t
,
sigma1B
[
2
],
sigma2B
[
2
],
eq_num
[
2
]
)
*
(
MB
+
MK1B
)
/
(
MB
+
MK1
);
v2
=
cosK
*
equation9_10
(
ff0A
[
3
],
MM2
,
t
,
sigma1A
[
3
],
sigma2A
[
3
],
eq_num
[
3
]
)
*
(
MB
+
MK1
)
/
(
MB
+
MK1A
);
v2
=
v2
-
sinK
*
equation9_10
(
ff0B
[
3
],
MM2
,
t
,
sigma1B
[
3
],
sigma2B
[
3
],
eq_num
[
3
]
)
*
(
MB
+
MK1
)
/
(
MB
+
MK1B
);
v
=
a
;
a0
=
v0
;
a1
=
v1
;
a2
=
v2
;
t1
=
cosK
*
equation9_10
(
ff0A
[
4
],
MM2
,
t
,
sigma1A
[
4
],
sigma2A
[
4
],
eq_num
[
4
]
);
t1
=
t1
-
sinK
*
equation9_10
(
ff0B
[
4
],
MM2
,
t
,
sigma1B
[
4
],
sigma2B
[
4
],
eq_num
[
4
]
);
t2
=
cosK
*
equation9_10
(
ff0A
[
5
],
MM2
,
t
,
sigma1A
[
5
],
sigma2A
[
5
],
eq_num
[
5
]
)
*
(
MB
*
MB
-
MK1A
*
MK1A
)
/
(
MB
*
MB
-
MK1
*
MK1
);
t2
=
t2
-
sinK
*
equation9_10
(
ff0B
[
5
],
MM2
,
t
,
sigma1B
[
5
],
sigma2B
[
5
],
eq_num
[
5
]
)
*
(
MB
*
MB
-
MK1B
*
MK1B
)
/
(
MB
*
MB
-
MK1
*
MK1
);
t3
=
cosK
*
equation9_10
(
ff0A
[
6
],
MM2
,
t
,
sigma1A
[
6
],
sigma2A
[
6
],
eq_num
[
6
]
);
t3
=
t3
-
sinK
*
equation9_10
(
ff0B
[
6
],
MM2
,
t
,
sigma1B
[
6
],
sigma2B
[
6
],
eq_num
[
6
]
);
models_counter
=
models_counter
+
1
;
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") <<"\n The function EvtbTosllMSFF::getVectorFF(...) passed."
// << "\n barB -> bar K_1(1270) transition form factors"
// << std::endl;
}
// EvtGenReport(EVTGEN_NOTICE,"EvtGen") << "\n models_counter = " << models_counter
// << "\n Vector form-factors at q^2 = " << t
// << " for B -> V transition:"
// << "\n v = " << v
// << "\n a0 = " << a0
// << "\n a1 = " << a1
// << "\n a2 = " << a2
// << "\n t1 = " << t1
// << "\n t2 = " << t2
// << "\n t3 = " << t3 << std::endl;
if
(
models_counter
!=
1
)
{
EvtGenReport
(
EVTGEN_ERROR
,
"EvtGen"
)
<<
"
\n
In the function EvtbTosllMSFF::getVectorFF(...)
\n
"
<<
"the parameter models_counter not equal 1!
\n
"
<<
"models_counter = "
<<
models_counter
<<
std
::
endl
;
::
abort
();
}
}
// Getting the quark mass (in GeV) using to the dispersion quark model
// of D.Melikhov, B.Stech, PRD62, 014006 (2000).
//
// i=1 => return m_u;
// i=2 => return m_d;
// i=3 => return m_s;
// i=4 => return m_c;
// i=5 => return m_b;
double
EvtbTosllMSFF
::
getQuarkMass
(
int
i
)
{
double
qm
=
0.0
;
switch
(
i
)
{
case
1
:
qm
=
0.23
;
// m_u
break
;
case
2
:
qm
=
0.23
;
// m_d = m_u
break
;
case
3
:
qm
=
0.35
;
// m_s
break
;
case
4
:
qm
=
1.45
;
// m_c
break
;
case
5
:
qm
=
4.85
;
// m_b
break
;
default
:
EvtGenReport
(
EVTGEN_ERROR
,
"EvtGen"
)
<<
"In the function EvtbTosllMSFF::getQuarkMass
\n
"
<<
"the parameter i not equal 1, 2, 3, 4 or 5!
\n
"
<<
"i ="
<<
i
<<
std
::
endl
;
::
abort
();
}
return
qm
;
}
File Metadata
Details
Attached
Mime Type
text/x-c
Expires
Tue, Sep 30, 5:48 AM (1 d, 12 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
6548572
Default Alt Text
EvtbTosllMSFF.cpp (29 KB)
Attached To
Mode
rEVTGEN evtgen
Attached
Detach File
Event Timeline
Log In to Comment