a Code for the Combination of Indirect and Direct Constraints on High Energy Physics Models Logo
Loading...
Searching...
No Matches
MVgamma.cpp
Go to the documentation of this file.
1/*
2 * Copyright (C) 2014 HEPfit Collaboration
3 *
4 *
5 * For the licensing terms see doc/COPYING.
6 */
7
8#include "Flavour.h"
9#include "MVgamma.h"
10#include "StandardModel.h"
11#include "std_make_vector.h"
12#include "gslpp_function_adapter.h"
13#include "F_1.h"
14#include "F_2.h"
15#include "AmpDB2.h"
16#include <boost/bind/bind.hpp>
17#include <limits>
18#include <gsl/gsl_sf_zeta.h>
19#include <gsl/gsl_sf_gegenbauer.h>
20using namespace boost::placeholders;
21
22MVgamma::MVgamma(const StandardModel& SM_i, QCD::meson meson_i, QCD::meson vector_i)
23: SM(SM_i), myF_1(new F_1()), myF_2(new F_2())
24{
25 meson = meson_i;
26 vectorM = vector_i;
27 dispersion = false;
28 zExpansion = false;
29 FixedWCbtos = false;
30 MVll_DM_flag = false;
31 mJpsi = 3.0969;
32 mJ2 = mJpsi * mJpsi;
33 mPsi2S = 3.6861;
34 mPsi2S2 = mPsi2S * mPsi2S;
35 mD2 = 1.8648 * 1.8648;
36 SM.getFlavour().getDB2(0);
37 SM.getFlavour().getDB2(1);
38
39 w_GSL = gsl_integration_cquad_workspace_alloc (100);
40}
41
44
45std::vector<std::string> MVgamma::initializeMVgammaParameters()
46{
47 dispersion = SM.getFlavour().getFlagUseDispersionRelation();
48 zExpansion = SM.getFlavour().getFlagUsezExpansion();
49 FixedWCbtos = SM.getFlavour().getFlagFixedWCbtos();
50 MVll_DM_flag = SM.getFlavour().getFlagMVll_DM();
51
52#if NFPOLARBASIS_MVGAMMA
53 if (vectorM == StandardModel::PHI)
54 if (MVll_DM_flag) mVgammaParameters = make_vector<std::string>() <<
55 "a_0T1phi" << "a_1T1phi" << "a_2T1phi" <<
56 "a_0fphi" << "a_1fphi" << "a_2fphi" <<
57 "a_0gphi" << "a_1gphi" << "a_2gphi" <<
58 "mBsst_1" << "mBsst_2" << "mBs1_1" << "mBs1_2" <<
59 "Chi1minus" << "Chi1plus" << "ChiTT" <<
60 "absh_p" << "absh_m" << "argh_p" << "argh_m" << "SU3_breaking_abs" << "SU3_breaking_arg"
61 << "Delta_C7_U";
62 else mVgammaParameters = make_vector<std::string>() <<
63 "a_0T1phi" << "a_0A1phi" << "a_0Vphi" <<
64 "absh_p" << "absh_m" << "argh_p" << "argh_m" << "SU3_breaking_abs" << "SU3_breaking_arg"
65 << "Delta_C7_U";
66 else if (vectorM == StandardModel::K_star || vectorM == StandardModel::K_star_P)
67 if (MVll_DM_flag) mVgammaParameters = make_vector<std::string>() <<
68 "a_0T1" << "a_1T1" << "a_2T1" <<
69 "a_0f" << "a_1f" << "a_2f" <<
70 "a_0g" << "a_1g" << "a_2g" <<
71 "mBsst_1" << "mBsst_2" << "mBs1_1" << "mBs1_2" <<
72 "Chi1minus" << "Chi1plus" << "ChiTT" <<
73 "absh_p" << "absh_m" << "argh_p" << "argh_m"
74 << "Delta_C7_U";
75 else mVgammaParameters = make_vector<std::string>() << "a_0T1" << "a_0A1" << "a_0V" <<
76 "absh_p" << "absh_m" << "argh_p" << "argh_m"
77 << "Delta_C7_U";
78 else if (vectorM == StandardModel::RHO || vectorM == StandardModel::RHO_P)
79 mVgammaParameters = make_vector<std::string>() << "a_0T1rho" << "a_0A1rho" << "a_0Vrho" <<
80 "absh_p" << "absh_m" << "argh_p" << "argh_m"
81 << "Delta_C7_U";
82 else if (vectorM == StandardModel::OMEGA)
83 mVgammaParameters = make_vector<std::string>() << "a_0T1omega" << "a_0A1omega" << "a_0Vomega" <<
84 "absh_p" << "absh_m" << "argh_p" << "argh_m"
85 << "Delta_C7_U";
86#else
87 if (vectorM == StandardModel::PHI)
88 if (MVll_DM_flag) mVgammaParameters = make_vector<std::string>() <<
89 "a_0T1phi" << "a_1T1phi" << "a_2T1phi" <<
90 "a_0fphi" << "a_1fphi" << "a_2fphi" <<
91 "a_0gphi" << "a_1gphi" << "a_2gphi" <<
92 "mBsst_1" << "mBsst_2" << "mBs1_1" << "mBs1_2" <<
93 "Chi1minus" << "Chi1plus" << "ChiTT" <<
94 "reh_p" << "reh_m" << "imh_p" << "imh_m" << "SU3_breaking_abs" << "SU3_breaking_arg"
95 << "Delta_C7_U";
96 else mVgammaParameters = make_vector<std::string>() <<
97 "a_0T1phi" << "a_0A1phi" << "a_0Vphi" <<
98 "reh_p" << "reh_m" << "imh_p" << "imh_m" << "SU3_breaking_abs" << "SU3_breaking_arg"
99 << "Delta_C7_U";
100 else if (vectorM == StandardModel::K_star || vectorM == StandardModel::K_star_P)
101 if (MVll_DM_flag) mVgammaParameters = make_vector<std::string>() <<
102 "a_0T1" << "a_1T1" << "a_2T1" <<
103 "a_0f" << "a_1f" << "a_2f" <<
104 "a_0g" << "a_1g" << "a_2g" <<
105 "mBsst_1" << "mBsst_2" << "mBs1_1" << "mBs1_2" <<
106 "Chi1minus" << "Chi1plus" << "ChiTT" <<
107 "reh_p" << "reh_m" << "imh_p" << "imh_m"
108 << "Delta_C7_U";
109 else mVgammaParameters = make_vector<std::string>() <<
110 "a_0T1" << "a_0A1" << "a_0V" <<
111 "reh_p" << "reh_m" << "imh_p" << "imh_m"
112 << "Delta_C7_U";
113 else if (vectorM == StandardModel::RHO || vectorM == StandardModel::RHO_P)
114 mVgammaParameters = make_vector<std::string>() << "a_0T1rho" << "a_0A1rho" << "a_0Vrho" <<
115 "reh_p" << "reh_m" << "imh_p" << "imh_m"
116 << "Delta_C7_U";
117 else if (vectorM == StandardModel::OMEGA)
118 mVgammaParameters = make_vector<std::string>() << "a_0T1omega" << "a_0A1omega" << "a_0Vomega" <<
119 "reh_p" << "reh_m" << "imh_p" << "imh_m"
120 << "Delta_C7_U";
121#endif
122 else {
123 std::stringstream out;
124 out << vectorM;
125 throw std::runtime_error("MVgamma: vector " + out.str() + " not implemented");
126 }
127
128 if (dispersion) {
129 mVgammaParameters.clear();
130 if (vectorM == StandardModel::PHI)
131 if (MVll_DM_flag) mVgammaParameters = make_vector<std::string>() <<
132 "a_0T1phi" << "a_1T1phi" << "a_2T1phi" <<
133 "a_0fphi" << "a_1fphi" << "a_2fphi" <<
134 "a_0gphi" << "a_1gphi" << "a_2gphi" <<
135 "mBsst_1" << "mBsst_2" << "mBs1_1" << "mBs1_2" <<
136 "Chi1minus" << "Chi1plus" << "ChiTT" <<
137 "r1_1" << "r2_1" << "deltaC9_1" << "phDC9_1" << "r1_2" << "r2_2" << "deltaC9_2" << "phDC9_2" << "SU3_breaking_abs" << "SU3_breaking_arg";
138 else mVgammaParameters = make_vector<std::string>() <<
139 "a_0T1phi" << "a_0A1phi" << "a_0Vphi" <<
140 "r1_1" << "r2_1" << "deltaC9_1" << "phDC9_1" << "r1_2" << "r2_2" << "deltaC9_2" << "phDC9_2" << "SU3_breaking_abs" << "SU3_breaking_arg";
141 else if (vectorM == StandardModel::K_star || vectorM == StandardModel::K_star_P)
142 if (MVll_DM_flag) mVgammaParameters = make_vector<std::string>() <<
143 "a_0T1" << "a_1T1" << "a_2T1" <<
144 "a_0f" << "a_1f" << "a_2f" <<
145 "a_0g" << "a_1g" << "a_2g" <<
146 "mBsst_1" << "mBsst_2" << "mBs1_1" << "mBs1_2" <<
147 "Chi1minus" << "Chi1plus" << "ChiTT" <<
148 "r1_1" << "r2_1" << "deltaC9_1" << "phDC9_1" << "r1_2" << "r2_2" << "deltaC9_2" << "phDC9_2";
149 else mVgammaParameters = make_vector<std::string>() <<
150 "a_0T1" << "a_0A1" << "a_0V" <<
151 "r1_1" << "r2_1" << "deltaC9_1" << "phDC9_1" << "r1_2" << "r2_2" << "deltaC9_2" << "phDC9_2";
152 else if (vectorM == StandardModel::RHO || vectorM == StandardModel::RHO_P)
153 mVgammaParameters = make_vector<std::string>() << "a_0T1rho" << "a_0A1rho" << "a_0Vrho" <<
154 "r1_1" << "r2_1" << "deltaC9_1" << "phDC9_1" << "r1_2" << "r2_2" << "deltaC9_2" << "phDC9_2";
155 else if (vectorM == StandardModel::OMEGA)
156 mVgammaParameters = make_vector<std::string>() << "a_0T1omega" << "a_0A1omega" << "a_0Vomega" <<
157 "r1_1" << "r2_1" << "deltaC9_1" << "phDC9_1" << "r1_2" << "r2_2" << "deltaC9_2" << "phDC9_2";
158 else {
159 std::stringstream out;
160 out << vectorM;
161 throw std::runtime_error("MVgamma: vector " + out.str() + " not implemented");
162 }
163 }
164
165 if (zExpansion) {
166 mVgammaParameters.clear();
167 if (vectorM == StandardModel::PHI)
168 if (MVll_DM_flag) mVgammaParameters = make_vector<std::string>() <<
169 "a_0T1phi" << "a_1T1phi" << "a_2T1phi"
170 << "a_0fphi" << "a_1fphi" << "a_2fphi"
171 << "a_0gphi" << "a_1gphi" << "a_2gphi"
172 << "mBsst_1" << "mBsst_2" << "mBs1_1" << "mBs1_2"
173 << "Chi1minus" << "Chi1plus" << "ChiTT"
174 << "re_beta_1_0" << "re_beta_1_1" << "re_beta_1_2" << "re_beta_1_3" << "re_beta_1_4" << "re_beta_1_5" << "re_beta_1_6"
175 << "im_beta_1_0" << "im_beta_1_1" << "im_beta_1_2" << "im_beta_1_3" << "im_beta_1_4" << "im_beta_1_5" << "im_beta_1_6"
176 << "re_beta_2_0" << "re_beta_2_1" << "re_beta_2_2" << "re_beta_2_3" << "re_beta_2_4" << "re_beta_2_5" << "re_beta_2_6"
177 << "im_beta_2_0" << "im_beta_2_1" << "im_beta_2_2" << "im_beta_2_3" << "im_beta_2_4" << "im_beta_2_5" << "im_beta_2_6" << "SU3_breaking_abs" << "SU3_breaking_arg";
178 else mVgammaParameters = make_vector<std::string>() <<
179 "a_0T1phi" << "a_0A1phi" << "a_0Vphi"
180 << "re_beta_1_0" << "re_beta_1_1" << "re_beta_1_2" << "re_beta_1_3" << "re_beta_1_4" << "re_beta_1_5" << "re_beta_1_6"
181 << "im_beta_1_0" << "im_beta_1_1" << "im_beta_1_2" << "im_beta_1_3" << "im_beta_1_4" << "im_beta_1_5" << "im_beta_1_6"
182 << "re_beta_2_0" << "re_beta_2_1" << "re_beta_2_2" << "re_beta_2_3" << "re_beta_2_4" << "re_beta_2_5" << "re_beta_2_6"
183 << "im_beta_2_0" << "im_beta_2_1" << "im_beta_2_2" << "im_beta_2_3" << "im_beta_2_4" << "im_beta_2_5" << "im_beta_2_6" << "SU3_breaking_abs" << "SU3_breaking_arg";
184 else if (vectorM == StandardModel::K_star || vectorM == StandardModel::K_star_P)
185 if (MVll_DM_flag) mVgammaParameters = make_vector<std::string>() <<
186 "a_0T1" << "a_1T1" << "a_2T1"
187 << "a_0f" << "a_1f" << "a_2f"
188 << "a_0g" << "a_1g" << "a_2g"
189 << "mBsst_1" << "mBsst_2" << "mBs1_1" << "mBs1_2"
190 << "Chi1minus" << "Chi1plus" << "ChiTT"
191 << "re_beta_1_0" << "re_beta_1_1" << "re_beta_1_2" << "re_beta_1_3" << "re_beta_1_4" << "re_beta_1_5" << "re_beta_1_6"
192 << "im_beta_1_0" << "im_beta_1_1" << "im_beta_1_2" << "im_beta_1_3" << "im_beta_1_4" << "im_beta_1_5" << "im_beta_1_6"
193 << "re_beta_2_0" << "re_beta_2_1" << "re_beta_2_2" << "re_beta_2_3" << "re_beta_2_4" << "re_beta_2_5" << "re_beta_2_6"
194 << "im_beta_2_0" << "im_beta_2_1" << "im_beta_2_2" << "im_beta_2_3" << "im_beta_2_4" << "im_beta_2_5" << "im_beta_2_6";
195 else mVgammaParameters = make_vector<std::string>() <<
196 "a_0T1" << "a_0A1" << "a_0V"
197 << "re_beta_1_0" << "re_beta_1_1" << "re_beta_1_2" << "re_beta_1_3" << "re_beta_1_4" << "re_beta_1_5" << "re_beta_1_6"
198 << "im_beta_1_0" << "im_beta_1_1" << "im_beta_1_2" << "im_beta_1_3" << "im_beta_1_4" << "im_beta_1_5" << "im_beta_1_6"
199 << "re_beta_2_0" << "re_beta_2_1" << "re_beta_2_2" << "re_beta_2_3" << "re_beta_2_4" << "re_beta_2_5" << "re_beta_2_6"
200 << "im_beta_2_0" << "im_beta_2_1" << "im_beta_2_2" << "im_beta_2_3" << "im_beta_2_4" << "im_beta_2_5" << "im_beta_2_6";
201 else if (vectorM == StandardModel::RHO || vectorM == StandardModel::RHO_P)
202 mVgammaParameters = make_vector<std::string>() << "a_0T1rho" << "a_0A1rho" << "a_0Vrho"
203 << "re_beta_1_0" << "re_beta_1_1" << "re_beta_1_2" << "re_beta_1_3" << "re_beta_1_4" << "re_beta_1_5" << "re_beta_1_6"
204 << "im_beta_1_0" << "im_beta_1_1" << "im_beta_1_2" << "im_beta_1_3" << "im_beta_1_4" << "im_beta_1_5" << "im_beta_1_6"
205 << "re_beta_2_0" << "re_beta_2_1" << "re_beta_2_2" << "re_beta_2_3" << "re_beta_2_4" << "re_beta_2_5" << "re_beta_2_6"
206 << "im_beta_2_0" << "im_beta_2_1" << "im_beta_2_2" << "im_beta_2_3" << "im_beta_2_4" << "im_beta_2_5" << "im_beta_2_6";
207 else if (vectorM == StandardModel::OMEGA)
208 mVgammaParameters = make_vector<std::string>() << "a_0T1omega" << "a_0A1omega" << "a_0Vomega"
209 << "re_beta_1_0" << "re_beta_1_1" << "re_beta_1_2" << "re_beta_1_3" << "re_beta_1_4" << "re_beta_1_5" << "re_beta_1_6"
210 << "im_beta_1_0" << "im_beta_1_1" << "im_beta_1_2" << "im_beta_1_3" << "im_beta_1_4" << "im_beta_1_5" << "im_beta_1_6"
211 << "re_beta_2_0" << "re_beta_2_1" << "re_beta_2_2" << "re_beta_2_3" << "re_beta_2_4" << "re_beta_2_5" << "re_beta_2_6"
212 << "im_beta_2_0" << "im_beta_2_1" << "im_beta_2_2" << "im_beta_2_3" << "im_beta_2_4" << "im_beta_2_5" << "im_beta_2_6";
213 else {
214 std::stringstream out;
215 out << vectorM;
216 throw std::runtime_error("MVgamma: vector " + out.str() + " not implemented");
217 }
218 }
219
220 if (FixedWCbtos) mVgammaParameters.push_back("C7_SM" );
221
222 SM.initializeMeson(meson);
223 SM.initializeMeson(vectorM);
224 return mVgammaParameters;
225}
226
228{
229 if (!SM.getFlavour().getUpdateFlag(meson, vectorM, QCD::NOLEPTON)) return;
230
231 GF = SM.getGF();
232 ale = SM.getAle();
233 MM = SM.getMesons(meson).getMass();
234 MM2 = MM * MM;
235 MV = SM.getMesons(vectorM).getMass();
236 Mb = SM.getQuarks(QCD::BOTTOM).getMass(); // add the PS b mass
237 mb_pole = SM.Mbar2Mp(Mb, QCD::BOTTOM); /* Conversion to pole mass*/
238 mc_pole = SM.Mbar2Mp(SM.getQuarks(QCD::CHARM).getMass(), QCD::BOTTOM); /* Conversion to pole mass*/
239 Ms = SM.getQuarks(QCD::STRANGE).getMass();
240 MW = SM.Mw();
241 mu_b = SM.getMub();
242 mu_h = sqrt(mu_b * .5); // From Beneke Neubert
243 fB = SM.getMesons(meson).getDecayconst();
244 width = SM.getMesons(meson).computeWidth();
245 lambda = MM2 - pow(MV, 2.);
246 alpha_s_mub = SM.Als(mu_b, FULLNLO); /* Used for QCDF @ NLO */
247
248 t_p = pow(MM + MV, 2.);
249 t_m = pow(MM - MV, 2.);
250 z_DM = (sqrt(t_p) - sqrt(t_p - t_m)) / (sqrt(t_p) + sqrt(t_p - t_m));
251 rV = MV/MM;
252
253 switch (vectorM) {
255 if (MVll_DM_flag) {
256 a_0T1 = SM.getOptionalParameter("a_0T1");
257 a_1T1 = SM.getOptionalParameter("a_1T1");
258 a_2T1 = SM.getOptionalParameter("a_2T1");
259 MRT1_2 = SM.getOptionalParameter("mBsst_1") * SM.getOptionalParameter("mBsst_1");
260 MRT12_2 = SM.getOptionalParameter("mBsst_2") * SM.getOptionalParameter("mBsst_2");
261 a_0f = SM.getOptionalParameter("a_0f");
262 a_1f = SM.getOptionalParameter("a_1f");
263 a_2f = SM.getOptionalParameter("a_2f");
264 MRf_2 = SM.getOptionalParameter("mBs1_1") * SM.getOptionalParameter("mBs1_1");
265 MRf2_2 = SM.getOptionalParameter("mBs1_2") * SM.getOptionalParameter("mBs1_2");
266 a_0g = SM.getOptionalParameter("a_0g");
267 a_1g = SM.getOptionalParameter("a_1g");
268 a_2g = SM.getOptionalParameter("a_2g");
269 MRg_2 = SM.getOptionalParameter("mBsst_1") * SM.getOptionalParameter("mBsst_1");
270 MRg2_2 = SM.getOptionalParameter("mBsst_2") * SM.getOptionalParameter("mBsst_2");
271 Chi1minus = SM.getOptionalParameter("Chi1minus"); //0.000623174575;
272 Chi1plus = SM.getOptionalParameter("Chi1plus"); //0.000543940610;
273 ChiTT = SM.getOptionalParameter("ChiTT"); //0.0003659;
274 n_I = 2.;
275 }
276 else {
277 a_0T1 = SM.getOptionalParameter("a_0T1");
278 a_0A1 = SM.getOptionalParameter("a_0A1");
279 a_0V = SM.getOptionalParameter("a_0V");
280 }
281 lambda_t = SM.getCKM().computelamt_s();
282 lambda_u = SM.getCKM().computelamu_s();
283 spectator_charge = SM.getQuarks(QCD::DOWN).getCharge();
284 SU3_breaking = 1.;
285 break;
287 if (MVll_DM_flag) {
288 a_0T1 = SM.getOptionalParameter("a_0T1");
289 a_1T1 = SM.getOptionalParameter("a_1T1");
290 a_2T1 = SM.getOptionalParameter("a_2T1");
291 MRT1_2 = SM.getOptionalParameter("mBsst_1") * SM.getOptionalParameter("mBsst_1");
292 MRT12_2 = SM.getOptionalParameter("mBsst_2") * SM.getOptionalParameter("mBsst_2");
293 a_0f = SM.getOptionalParameter("a_0f");
294 a_1f = SM.getOptionalParameter("a_1f");
295 a_2f = SM.getOptionalParameter("a_2f");
296 MRf_2 = SM.getOptionalParameter("mBs1_1") * SM.getOptionalParameter("mBs1_1");
297 MRf2_2 = SM.getOptionalParameter("mBs1_2") * SM.getOptionalParameter("mBs1_2");
298 a_0g = SM.getOptionalParameter("a_0g");
299 a_1g = SM.getOptionalParameter("a_1g");
300 a_2g = SM.getOptionalParameter("a_2g");
301 MRg_2 = SM.getOptionalParameter("mBsst_1") * SM.getOptionalParameter("mBsst_1");
302 MRg2_2 = SM.getOptionalParameter("mBsst_2") * SM.getOptionalParameter("mBsst_2");
303 Chi1minus = SM.getOptionalParameter("Chi1minus"); //0.000623174575;
304 Chi1plus = SM.getOptionalParameter("Chi1plus"); //0.000543940610;
305 ChiTT = SM.getOptionalParameter("ChiTT"); //0.0003659;
306 n_I = 2.;
307 }
308 else {
309 a_0T1 = SM.getOptionalParameter("a_0T1");
310 a_0A1 = SM.getOptionalParameter("a_0A1");
311 a_0V = SM.getOptionalParameter("a_0V");
312 }
313 lambda_t = SM.getCKM().computelamt_s();
314 lambda_u = SM.getCKM().computelamu_s();
315 spectator_charge = SM.getQuarks(QCD::UP).getCharge();
316 SU3_breaking = 1.;
317 break;
319 if (MVll_DM_flag) {
320 a_0T1 = SM.getOptionalParameter("a_0T1phi");
321 a_1T1 = SM.getOptionalParameter("a_1T1phi");
322 a_2T1 = SM.getOptionalParameter("a_2T1phi");
323 MRT1_2 = SM.getOptionalParameter("mBsst_1") * SM.getOptionalParameter("mBsst_1");
324 MRT12_2 = SM.getOptionalParameter("mBsst_2") * SM.getOptionalParameter("mBsst_2");
325 a_0f = SM.getOptionalParameter("a_0fphi");
326 a_1f = SM.getOptionalParameter("a_1fphi");
327 a_2f = SM.getOptionalParameter("a_2fphi");
328 MRf_2 = SM.getOptionalParameter("mBs1_1") * SM.getOptionalParameter("mBs1_1");
329 MRf2_2 = SM.getOptionalParameter("mBs1_2") * SM.getOptionalParameter("mBs1_2");
330 a_0g = SM.getOptionalParameter("a_0gphi");
331 a_1g = SM.getOptionalParameter("a_1gphi");
332 a_2g = SM.getOptionalParameter("a_2gphi");
333 MRg_2 = SM.getOptionalParameter("mBsst_1") * SM.getOptionalParameter("mBsst_1");
334 MRg2_2 = SM.getOptionalParameter("mBsst_2") * SM.getOptionalParameter("mBsst_2");
335 Chi1minus = SM.getOptionalParameter("Chi1minus"); //0.000623174575;
336 Chi1plus = SM.getOptionalParameter("Chi1plus"); //0.000543940610;
337 ChiTT = SM.getOptionalParameter("ChiTT"); //0.0003659;
338 n_I = 1.;
339 }
340 else {
341 a_0T1 = SM.getOptionalParameter("a_0T1phi");
342 a_0A1 = SM.getOptionalParameter("a_0A1phi");
343 a_0V = SM.getOptionalParameter("a_0Vphi");
344 }
345 lambda_t = SM.getCKM().computelamt_s();
346 lambda_u = SM.getCKM().computelamu_s();
347 spectator_charge = SM.getQuarks(QCD::STRANGE).getCharge();
348 SU3_breaking = gslpp::complex(1. + SM.getOptionalParameter("SU3_breaking_abs"),
349 SM.getOptionalParameter("SU3_breaking_arg"), true);
350 break;
352 a_0T1 = SM.getOptionalParameter("a_0T1rho");
353 a_0A1 = SM.getOptionalParameter("a_0A1rho");
354 a_0V = SM.getOptionalParameter("a_0Vrho");
355 lambda_t = SM.getCKM().computelamt_d();
356 lambda_u = SM.getCKM().computelamu_d();
357 spectator_charge = SM.getQuarks(QCD::DOWN).getCharge();
358 SU3_breaking = 1.;
359 break;
361 a_0T1 = SM.getOptionalParameter("a_0T1rho");
362 a_0A1 = SM.getOptionalParameter("a_0A1rho");
363 a_0V = SM.getOptionalParameter("a_0Vrho");
364 lambda_t = SM.getCKM().computelamt_d();
365 lambda_u = SM.getCKM().computelamu_d();
366 spectator_charge = SM.getQuarks(QCD::UP).getCharge();
367 SU3_breaking = 1.;
368 break;
370 a_0T1 = SM.getOptionalParameter("a_0T1omega");
371 a_0A1 = SM.getOptionalParameter("a_0A1omega");
372 a_0V = SM.getOptionalParameter("a_0Vomega");
373 lambda_t = SM.getCKM().computelamt_d();
374 lambda_u = SM.getCKM().computelamu_d();
375 spectator_charge = SM.getQuarks(QCD::DOWN).getCharge();
376 SU3_breaking = 1.;
377 break;
378 default:
379 std::stringstream out;
380 out << vectorM;
381 throw std::runtime_error("MVgamma: vector " + out.str() + " not implemented");
382 }
383
384 fpara = SM.getMesons(vectorM).getDecayconst();
385 fperp = SM.getMesons(vectorM).getDecayconst_p();
386
387 double ms_over_mb = SM.Mrun(mu_b, SM.getQuarks(QCD::STRANGE).getMass_scale(),
388 SM.getQuarks(QCD::STRANGE).getMass(), QCD::STRANGE, FULLNNLO)
389 /SM.Mrun(mu_b, SM.getQuarks(QCD::BOTTOM).getMass_scale(),
390 SM.getQuarks(QCD::BOTTOM).getMass(), QCD::BOTTOM, FULLNNLO);
391
392 if (zExpansion) {
393 beta_1[0] = gslpp::complex(SM.getOptionalParameter("re_beta_1_0"), SM.getOptionalParameter("im_beta_1_0"), false);
394 beta_1[1] = gslpp::complex(SM.getOptionalParameter("re_beta_1_1"), SM.getOptionalParameter("im_beta_1_1"), false);
395 beta_1[2] = gslpp::complex(SM.getOptionalParameter("re_beta_1_2"), SM.getOptionalParameter("im_beta_1_2"), false);
396 beta_1[3] = gslpp::complex(SM.getOptionalParameter("re_beta_1_3"), SM.getOptionalParameter("im_beta_1_3"), false);
397 beta_1[4] = gslpp::complex(SM.getOptionalParameter("re_beta_1_4"), SM.getOptionalParameter("im_beta_1_4"), false);
398 beta_1[5] = gslpp::complex(SM.getOptionalParameter("re_beta_1_5"), SM.getOptionalParameter("im_beta_1_5"), false);
399 beta_1[6] = gslpp::complex(SM.getOptionalParameter("re_beta_1_6"), SM.getOptionalParameter("im_beta_1_6"), false);
400
401 beta_2[0] = gslpp::complex(SM.getOptionalParameter("re_beta_2_0"), SM.getOptionalParameter("im_beta_2_0"), false);
402 beta_2[1] = gslpp::complex(SM.getOptionalParameter("re_beta_2_1"), SM.getOptionalParameter("im_beta_2_1"), false);
403 beta_2[2] = gslpp::complex(SM.getOptionalParameter("re_beta_2_2"), SM.getOptionalParameter("im_beta_2_2"), false);
404 beta_2[3] = gslpp::complex(SM.getOptionalParameter("re_beta_2_3"), SM.getOptionalParameter("im_beta_2_3"), false);
405 beta_2[4] = gslpp::complex(SM.getOptionalParameter("re_beta_2_4"), SM.getOptionalParameter("im_beta_2_4"), false);
406 beta_2[5] = gslpp::complex(SM.getOptionalParameter("re_beta_2_5"), SM.getOptionalParameter("im_beta_2_5"), false);
407 beta_2[6] = gslpp::complex(SM.getOptionalParameter("re_beta_2_6"), SM.getOptionalParameter("im_beta_2_6"), false);
408
409 h[0] = h_lambda(0);
410 h[1] = h_lambda(1);
411 } else if (dispersion) {
412 //gslpp::complex DC7_1 = SM.getOptionalParameter("deltaC7_1")*exp(gslpp::complex::i()*SM.getOptionalParameter("phDC7_1"));
413 //gslpp::complex DC7_2 = SM.getOptionalParameter("deltaC7_2")*exp(gslpp::complex::i()*SM.getOptionalParameter("phDC7_2"));
414 //h[0] = (-(2.*Mb)/(MM*16.*M_PI*M_PI) * lambda/(2.*MM2) * T_1()*(DC7_2 - DC7_1)).abs();
415 //h[1] = (-(2.*Mb)/(MM*16.*M_PI*M_PI) * lambda/(2.*MM2) * T_1()*(DC7_2 + DC7_1)).abs();
416 r1_1 = SM.getOptionalParameter("r1_1");
417 r1_2 = SM.getOptionalParameter("r1_2");
418 r2_1 = SM.getOptionalParameter("r2_1");
419 r2_2 = SM.getOptionalParameter("r2_2");
420 deltaC9_1 = SM.getOptionalParameter("deltaC9_1");
421 deltaC9_2 = SM.getOptionalParameter("deltaC9_2");
422 exp_Phase_1 = exp(gslpp::complex::i()*SM.getOptionalParameter("phDC9_1"));
423 exp_Phase_2 = exp(gslpp::complex::i()*SM.getOptionalParameter("phDC9_2"));
424
425 h[0] = h_lambda(0);
426 h[1] = h_lambda(1);
427 } else {
428#if NFPOLARBASIS_MVGAMMA
429 h[0] = gslpp::complex(SM.getOptionalParameter("absh_p"), SM.getOptionalParameter("argh_p"), true); //h_plus
430 h[1] = gslpp::complex(SM.getOptionalParameter("absh_m"), SM.getOptionalParameter("argh_m"), true); //h_minus
431 h[1] *= 2. * (Mb / MM) / (16. * M_PI * M_PI) * (T_1() * lambda / MM2) ;
432 h[0] += ms_over_mb * h[1] ;
433
434 r1_1 = 0.;
435 r1_2 = 0.;
436 r2_1 = 0.;
437 r2_2 = 0.;
438 deltaC9_1 = 0.;
439 deltaC9_2 = 0.;
440 exp_Phase_1 = 0.;
441 exp_Phase_2 = 0.;
442
443 Delta_C7_U = SM.getOptionalParameter("Delta_C7_U");
444#else
445 h[0] = gslpp::complex(SM.getOptionalParameter("reh_p"), SM.getOptionalParameter("imh_p"), false); //h_plus
446 h[1] = gslpp::complex(SM.getOptionalParameter("reh_m"), SM.getOptionalParameter("imh_m"), false); //h_minus
447 h[1] *= 2. * (Mb / MM) / (16. * M_PI * M_PI) * (T_1() * lambda / MM2) ;
448 h[0] += ms_over_mb * h[1] ;
449
450 r1_1 = 0.;
451 r1_2 = 0.;
452 r2_1 = 0.;
453 r2_2 = 0.;
454 deltaC9_1 = 0.;
455 deltaC9_2 = 0.;
456 exp_Phase_1 = 0.;
457 exp_Phase_2 = 0.;
458
459 Delta_C7_U = SM.getOptionalParameter("Delta_C7_U");
460#endif
461 }
462
463#if UNIFIEDBTOS
464 allcoeff = SM.getFlavour().ComputeCoeffBMll(mu_b, QCD::MU); //check the mass scale, scheme fixed to NDR. QCD::MU does not make any difference to the WC necessary here.
465 allcoeffprime = SM.getFlavour().ComputeCoeffprimeBMll(mu_b, QCD::MU); //check the mass scale, scheme fixed to NDR. QCD::MU does not make any difference to the WC necessary here.
466
467 C_1 = (*(allcoeff[LO]))(0) + (*(allcoeff[NLO]))(0);
468 C_2 = (*(allcoeff[LO]))(1) + (*(allcoeff[NLO]))(1);
469 C_3 = (*(allcoeff[LO]))(2) + (*(allcoeff[NLO]))(2);
470 C_4 = (*(allcoeff[LO]))(3) + (*(allcoeff[NLO]))(3);
471 C_5 = (*(allcoeff[LO]))(4) + (*(allcoeff[NLO]))(4);
472 C_6 = (*(allcoeff[LO]))(5) + (*(allcoeff[NLO]))(5);
473 C_8 = (*(allcoeff[LO]))(7) + (*(allcoeff[NLO]))(7);
474
475 if (FixedWCbtos) {
476 allcoeff_noSM = SM.getFlavour().ComputeCoeffBMll(mu_b, StandardModel::NOLEPTON, true); //check the mass scale, scheme fixed to NDR
477 C_7 = SM.getOptionalParameter("C7_SM") + ((*(allcoeff_noSM[LO]))(6) + (*(allcoeff_noSM[NLO]))(6));
478 }
479 else C_7 = ((*(allcoeff[LO]))(6) + (*(allcoeff[NLO]))(6));
480 C_7p = ms_over_mb * ((*(allcoeffprime[LO]))(6) + (*(allcoeffprime[NLO]))(6));
481// C_7p -= ms_over_mb * C_7;
482 /* Done in the dirty way to remove from the effective basis since the effective C7p does not involve the non-primed C_1 to C_6.*/
483 C_7p += ms_over_mb * (-C_7 - 1. / 3. * C_3 - 4 / 9 * C_4 - 20. / 3. * C_5 - 80. / 9. * C_6);
484
485 if (!zExpansion && !dispersion) {
486 C_7 += Delta_C7_U;
487 }
488
489#else
490 allcoeff = SM.getFlavour().ComputeCoeffsgamma(mu_b);
491 allcoeffprime = SM.getFlavour().ComputeCoeffprimesgamma(mu_b);
492
493 C_1 = (*(allcoeff[LO]))(0) + (*(allcoeff[NLO]))(0);
494 C_2 = (*(allcoeff[LO]))(1) + (*(allcoeff[NLO]))(1);
495 C_3 = (*(allcoeff[LO]))(2) + (*(allcoeff[NLO]))(2);
496 C_4 = (*(allcoeff[LO]))(3) + (*(allcoeff[NLO]))(3);
497 C_5 = (*(allcoeff[LO]))(4) + (*(allcoeff[NLO]))(4);
498 C_6 = (*(allcoeff[LO]))(5) + (*(allcoeff[NLO]))(5);
499 C_8 = (*(allcoeff[LO]))(7) + (*(allcoeff[NLO]))(7);
500
501 if (FixedWCbtos) {
502 allcoeff_noSM = SM.getFlavour().ComputeCoeffsgamma(mu_b, true); //check the mass scale, scheme fixed to NDR
503 C_7 = SM.getOptionalParameter("C7_SM") + ((*(allcoeff_noSM[LO]))(6) + (*(allcoeff_noSM[NLO]))(6));
504 }
505 else C_7 = ((*(allcoeff[LO]))(6) + (*(allcoeff[NLO]))(6)););
506 C_7p = (*(allcoeffprime[LO]))(6) + (*(allcoeffprime[NLO]))(6);
507 /* Done in the dirty way to remove from the effective basis since the effective C7p does not involve the non-primed C_1 to C_6.*/
508 C_7p += -ms_over_mb * C_7 - 1. / 3. * C_3 - 4 / 9 * C_4 - 20. / 3. * C_5 - 80. / 9. * C_6;
509#endif
510 if (zExpansion) {
511 DC7_QCDF = 0.;
512 DC7_QCDF_bar = 0.;
513 T_perp_real = 0.;
514 T_perp_imag = 0.;
515 T_perp_bar_real = 0.;
516 T_perp_bar_imag = 0.;
517 } else {
518 DC7_QCDF = deltaC7_QCDF(false);
519 DC7_QCDF_bar = deltaC7_QCDF(true);
520
521 gsl_error_handler_t * old_handler = gsl_set_error_handler_off();
522
523 f_GSL = convertToGslFunction(bind(&MVgamma::getT_perp_integrand_real, &(*this), _1));
524 if (gsl_integration_cquad(&f_GSL, 0., 1., 1.e-2, 1.e-1, w_GSL, &average, &error, NULL) != 0) T_perp_real = std::numeric_limits<double>::quiet_NaN();
525 T_perp_real = average;
526
527 f_GSL = convertToGslFunction(bind(&MVgamma::getT_perp_integrand_imag, &(*this), _1));
528 if (gsl_integration_cquad(&f_GSL, 0., 1., 1.e-2, 1.e-1, w_GSL, &average, &error, NULL) != 0) T_perp_imag = std::numeric_limits<double>::quiet_NaN();
529 T_perp_imag = average;
530
531 f_GSL = convertToGslFunction(bind(&MVgamma::getT_perp_bar_integrand_real, &(*this), _1));
532 if (gsl_integration_cquad(&f_GSL, 0., 1., 1.e-2, 1.e-1, w_GSL, &average, &error, NULL) != 0) T_perp_bar_real = std::numeric_limits<double>::quiet_NaN();
533 T_perp_bar_real = average;
534
535 f_GSL = convertToGslFunction(bind(&MVgamma::getT_perp_bar_integrand_imag, &(*this), _1));
536 if (gsl_integration_cquad(&f_GSL, 0., 1., 1.e-2, 1.e-1, w_GSL, &average, &error, NULL) != 0) T_perp_bar_imag = std::numeric_limits<double>::quiet_NaN();
537 T_perp_bar_imag = average;
538
539 gsl_set_error_handler(old_handler);
540 }
541
542 s_p = 4. * mD2;
543 // s_0 = 4.;
544 s_0 = s_p - sqrt(s_p * (s_p - mPsi2S2));
545 Q2 = - Mb*Mb;
546 chiOPE = 0.000181;
547
548 SM.getFlavour().setUpdateFlag(meson, vectorM, QCD::NOLEPTON, false);
549
550}
551
552/*******************************************************************************
553 * Form Factor *
554 * ****************************************************************************/
555double MVgamma::phi_f(double MRf_2, double MRf2_2)
556{
557 double z = z_DM;
558 double z_M = (sqrt(t_p - MRf_2) - sqrt(t_p - t_m)) / (sqrt(t_p - MRf_2) + sqrt(t_p - t_m));
559 double z_M2 = (sqrt(t_p - MRf2_2) - sqrt(t_p - t_m)) / (sqrt(t_p - MRf2_2) + sqrt(t_p - t_m));
560
561 if (vectorM == StandardModel::PHI)
562 return 4.*rV/MM2*sqrt(n_I/3./Chi1plus/M_PI) * (1. + z)*pow(1. - z,1.5)/pow((1. + rV)*(1. - z)+2.*sqrt(rV)*(1. + z),4) * (z - z_M)/(1. - z_M*z) * (z - z_M2)/(1. - z_M2*z);
563 else
564 return 4.*rV/MM2*sqrt(n_I/3./Chi1plus/M_PI) * (1. + z)*pow(1. - z,1.5)/pow((1. + rV)*(1. - z)+2.*sqrt(rV)*(1. + z),4) * (z - z_M)/(1. - z_M*z);
565}
566
567double MVgamma::phi_g(double MRg_2, double MRg2_2)
568{
569 double z = z_DM;
570 double z_M = (sqrt(t_p - MRg_2) - sqrt(t_p - t_m)) / (sqrt(t_p - MRg_2) + sqrt(t_p - t_m));
571 double z_M2 = (sqrt(t_p - MRg2_2) - sqrt(t_p - t_m)) / (sqrt(t_p - MRg2_2) + sqrt(t_p - t_m));
572
573 return 16.*rV*rV*sqrt(n_I/3./Chi1minus/M_PI) * (1. + z)*(1. + z)*pow(1. - z,-0.5)/pow((1. + rV)*(1. - z)+2.*sqrt(rV)*(1. + z),4) * (z - z_M)/(1. - z_M*z) * (z - z_M2)/(1. - z_M2*z);
574}
575
576double MVgamma::phi_T1(double MRT1_2, double MRT12_2)
577{
578 double z = z_DM;
579 double z_M = (sqrt(t_p - MRT1_2) - sqrt(t_p - t_m)) / (sqrt(t_p - MRT1_2) + sqrt(t_p - t_m));
580 double z_M2 = (sqrt(t_p - MRT12_2) - sqrt(t_p - t_m)) / (sqrt(t_p - MRT12_2) + sqrt(t_p - t_m));
581
582 return 32.*rV*rV/MM*sqrt(n_I/3./ChiTT/M_PI) * (1. + z)*(1. + z)*pow(1. - z,0.5)/pow((1. + rV)*(1. - z)+2.*sqrt(rV)*(1. + z),5) * (z - z_M)/(1. - z_M*z) * (z - z_M2)/(1. - z_M2*z);
583}
584
585double MVgamma::f_DM(double a_0f, double a_1f, double a_2f, double MRf_2, double MRf2_2)
586{
587 return (a_0f + a_1f*z_DM + a_2f*z_DM*z_DM) / phi_f(MRf_2, MRf2_2);
588}
589
590double MVgamma::g_DM(double a_0g, double a_1g, double a_2g, double MRg_2, double MRg2_2)
591{
592 return (a_0g + a_1g*z_DM + a_2g*z_DM*z_DM) / phi_g(MRg_2, MRg2_2);
593}
594
595double MVgamma::T1_DM(double a_0T1, double a_1T1, double a_2T1, double MRT1_2, double MRT12_2)
596{
597 return (a_0T1 + a_1T1*z_DM + a_2T1*z_DM*z_DM) / phi_T1(MRT1_2, MRT12_2);
598}
599
600double MVgamma::T_1()
601{
602 if (MVll_DM_flag) return T1_DM(a_0T1, a_1T1, a_2T1, MRT1_2, MRT12_2);
603 else return a_0T1;
604}
605
606gslpp::complex MVgamma::deltaC7_QCDF(bool conjugate)
607{
608 double muh = mu_b/mb_pole;
609 double z = mc_pole*mc_pole/mb_pole/mb_pole;
610
611#if FULLNLOQCDF_MVGAMMA
612 gslpp::complex A_Seidel = 1./729. * (833. + 120.*gslpp::complex::i()*M_PI - 312. * log(mb_pole*mb_pole/mu_b/mu_b)); /* hep-ph/0403185v2.*/
613 gslpp::complex Fu_17 = -A_Seidel; /* sign different from hep-ph/0403185v2 but consistent with hep-ph/0412400 */
614 gslpp::complex Fu_27 = 6. * A_Seidel; /* sign different from hep-ph/0403185v2 but consistent with hep-ph/0412400 */
615#endif
616 gslpp::complex F_17 = myF_1->F_17re(muh, z, 0.00001, 20) + gslpp::complex::i() * myF_1->F_17im(muh, z, 0.00001, 20); /*q^2 = 0 gives nan. Independent of how small q^2 is. arXiv:0810.4077*/
617 gslpp::complex F_27 = myF_2->F_27re(muh, z, 0.00001, 20) + gslpp::complex::i() * myF_2->F_27im(muh, z, 0.00001, 20); /*q^2 = 0 gives nan. Independent of how small q^2 is. arXiv:0810.4077*/
618 gslpp::complex F_87 = (-4.*(33. + 24.*log(muh) + 6.*gslpp::complex::i()*M_PI - 2.*M_PI*M_PI))/27.;
619
620 if (!conjugate) {
621 gslpp::complex delta = C_1 * F_17 + C_2 * F_27;
622 gslpp::complex delta_t = C_8 * F_87 + delta;
623#if FULLNLOQCDF_MVGAMMA
624 gslpp::complex delta_u = delta + C_1 * Fu_17 + C_2 * Fu_27;
625 return -alpha_s_mub / (4. * M_PI) * (delta_t - lambda_u / lambda_t * delta_u);
626#else
627 return -alpha_s_mub / (4. * M_PI) * delta_t;
628#endif
629 } else {
630 gslpp::complex delta = C_1.conjugate() * F_17 + C_2.conjugate() * F_27;
631 gslpp::complex delta_t = C_8.conjugate() * F_87 + delta;
632#if FULLNLOQCDF_MVGAMMA
633 gslpp::complex delta_u = delta + C_1.conjugate() * Fu_17 + C_2.conjugate() * Fu_27;
634 return -alpha_s_mub / (4. * M_PI) * (delta_t - (lambda_u / lambda_t).conjugate() * delta_u);
635#else
636 return -alpha_s_mub / (4. * M_PI) * delta_t;
637#endif
638 }
639}
640
641gslpp::complex MVgamma::Cq34(bool conjugate)
642{
643 gslpp::complex T_t = C_3 + 4./3.*(C_4 + 12.*C_5 + 16.*C_6);
644 gslpp::complex T_u = 0.; /* 0 for K*0, phi*/
645 if (meson == QCD::B_P) T_u = -3.*C_2;
646 else if (vectorM == QCD::PHI) T_t = T_t + 6.*(C_3 + 10.*C_5);
647 else if (vectorM == QCD::RHO) T_u = 4./3.*C_1 + C_2;
648 else if (vectorM == QCD::OMEGA) {
649 T_u = -4./3.*C_1 + C_2;
650 T_t = T_t + 6.*2.*(C_3 + 10.*C_5);
651 }
652 if (!conjugate) return T_t + lambda_u / lambda_t * T_u;
653 else return T_t + (lambda_u / lambda_t).conjugate() * T_u;
654}
655
656gslpp::complex MVgamma::T_perp_WA_1()
657{
658 return -spectator_charge * 4./mb_pole * (C_3 + 4./3.*(C_4 + 3.*C_5 + 4.*C_6));
659}
660
661gslpp::complex MVgamma::T_perp_WA_2(bool conjugate)
662{
663 return spectator_charge * 2./mb_pole * Cq34(conjugate);
664}
665
666gslpp::complex MVgamma::L1(gslpp::complex x)
667{
668 if (x == 0.) return -(M_PI*M_PI/6.);
669 if (x == 1.) return 0.;
670 else return log((x-1.)/x)*log(1.-x) - (M_PI*M_PI/6.) + dilog(x/(x-1.));
671}
672
673double MVgamma::phi_V(double u)
674{
675 return 6.* u * (1. - u) * (1. + SM.getMesons(vectorM).getGegenalpha(0) * gsl_sf_gegenpoly_1(3./2., (2.*u - 1.)) + SM.getMesons(vectorM).getGegenalpha(1) * gsl_sf_gegenpoly_2(3./2., (2.*u - 1.)));
676}
677
678gslpp::complex MVgamma::t_perp(double u, double m)
679{
680 double ubar = 1. - u;
681 gslpp::complex x0 = sqrt(0.25 - (m*m - gslpp::complex::i()*1.e-10)/(ubar * MM2));
682 gslpp::complex xp = 0.5 + x0;
683 gslpp::complex xm = 0.5 - x0;
684
685 return 4./ubar * (1. + 2.*(m*m - gslpp::complex::i()*1.e-10)/(ubar*MM2) * (L1(xp) + L1(xm)));
686}
687
688gslpp::complex MVgamma::T_perp_plus_QSS(double u, bool conjugate)
689{
690 gslpp::complex t_perp_mc = t_perp(u, mc_pole);
691 double eu = 2./3.;
692#if FULLNLOQCDF_MVGAMMA
693 gslpp::complex t_perp_0 = t_perp(u, 0.);
694 double ed = -1./3.;
695 gslpp::complex T_t = (alpha_s_mub/(3.*M_PI))*MM/(2.*mb_pole)*(eu * t_perp_mc * (-C_1/6. + C_2 + 6.*C_6)
696 + ed * t_perp(u, mb_pole) * (C_3 - C_4/6. + 16.*C_5 + 10.*C_6/3. + 4.*mb_pole/MM*(-C_3 + C_4/6. - 4.*C_5 + 2.*C_6/3.))
697 + ed * t_perp_0 * (-C_3 + C_4/6. - 16.*C_5 + 8.*C_6/3.));
698
699 gslpp::complex T_u = ((alpha_s_mub/(3.*M_PI))*eu*MM/(2.*mb_pole)*(t_perp_mc - t_perp_0)*(C_2 - C_1/6.));
700 if (!conjugate) return T_t + lambda_u / lambda_t * T_u;
701 else return T_t + (lambda_u / lambda_t).conjugate() * T_u;
702#else
703 return (alpha_s_mub/(3.*M_PI))*MM/(2.*mb_pole)*(eu * t_perp_mc * (-C_1/6. + C_2 + 6.*C_6));
704#endif
705}
706
707gslpp::complex MVgamma::T_perp_plus_O8(double u)
708{
709 return -(alpha_s_mub/(3.*M_PI))*4.*(-1./3.)*C_8/u;
710}
711
712gslpp::complex MVgamma::T_perp(double u, bool conjugate)
713{
714 double N = M_PI*M_PI/3.*fB*fperp/MM;
715 gslpp::complex T_amp = N/SM.getMesons(meson).getLambdaM() * phi_V(u) * (T_perp_plus_O8(u) + T_perp_plus_QSS(u, conjugate));
716#if FULLNLOQCDF_MVGAMMA
717 double ubar = 1. - u;
718 T_amp += N * phi_V(u)/ubar * T_perp_WA_1() + N/SM.getMesons(meson).getLambdaM() * fpara/fperp * MV * T_perp_WA_2(conjugate);
719 /*last term proportional to T_perp_WA_2 is a constant but is included in the integral because u is integrated over the range [0,1]*/
720#endif
721 return T_amp;
722}
723
724gslpp::complex MVgamma::T_QCDF_minus(bool conjugate)
725{
726 if (!conjugate) return (T_perp_real + gslpp::complex::i() * T_perp_imag);
727 else return (T_perp_bar_real + gslpp::complex::i() * T_perp_bar_imag);
728}
729
730/*******************************************************************************
731 * Helicity amplitudes *
732 * ****************************************************************************/
733
734 gslpp::complex MVgamma::zh(double q2)
735{
736 return ( sqrt(s_p - q2) - sqrt(s_p - s_0)) / (sqrt(s_p - q2) + sqrt(s_p - s_0));
737}
738
739gslpp::complex MVgamma::P()
740{
741 gslpp::complex facmj2 = ( zh(0.) - zh(mJ2) ) / ( 1. - zh(0.)*zh(mJ2).conjugate() );
742 if(fabs(0. - mJ2)< 1.e-5) facmj2 = 1/(4.*(mJ2 - s_p));
743 gslpp::complex facmPsi2S2 = ( zh(0.) - zh(mPsi2S2) ) / ( 1. - zh(0.)*zh(mPsi2S2).conjugate() );
744 if(fabs(0. - mPsi2S2)< 1.e-5) facmPsi2S2 = 1/(4.*(mPsi2S2 - s_p));
745 // at the pole it returns directly the residue, i.e. Lim_{q2->mres2} P(q2)/(q2-mres2)
746 return facmj2*facmPsi2S2;
747}
748
749 gslpp::complex MVgamma::phi_1()
750{
751 return - sqrt( 2.*sqrt((4.*mD2-Q2)*(4.*mD2-s_0)) + 8.*mD2 - Q2 - s_0 ) / ( 2.*sqrt((4.*mD2-Q2)*(4.*mD2-s_0)) + 8.*mD2 + Q2*(zh(0.)-1.) - s_0*(zh(0.)+1.) ) ;
752}
753
754gslpp::complex MVgamma::phi_2()
755{
756 gslpp::complex zhm1_2 = (zh(0.)-1.)*(zh(0.)-1.);
757 gslpp::complex zhp1_2 = (zh(0.)+1.)*(zh(0.)+1.);
758
759 return sqrt( MM2*MM2*zhm1_2*zhm1_2 - 2.*MM2*zhm1_2*(-16.*mD2*zh(0.) + MV*MV*zhm1_2 + s_0*zhp1_2) + (16.*mD2*zh(0.) + MV*MV*zhm1_2 - s_0*zhp1_2)*(16.*mD2*zh(0.) + MV*MV*zhm1_2 - s_0*zhp1_2) );
760}
761
762gslpp::complex MVgamma::phi_3()
763{
764 return sqrt( 8.*mD2 + 4.*sqrt(4.*mD2*mD2 - mD2*s_0) - s_0 ) / ( -8.*mD2 - 4.*sqrt(4.*mD2*mD2 - mD2*s_0) + s_0*(zh(0.)+1.) ) ;
765}
766
767 gslpp::complex MVgamma::DeltaC9_zExpansion(int tran)
768{
769 gslpp::complex z = zh(0.);
770
771 gslpp::complex invpref = 4.*M_PI*sqrt(2.*(4.*mD2-s_0)/3./chiOPE)*sqrt(1+zh(0.)) * P();
772
773 if (tran == 1) { // parallel
774 invpref *= MM2*MM * pow(1.-z,3.5) * phi_1()*phi_1()*phi_1() * sqrt(phi_2()) * phi_3()*phi_3()*phi_3();
775
776 return 1./invpref * (beta_1[0] + beta_1[1]*z + beta_1[2]*z*z + beta_1[3]*z*z*z + beta_1[4]*z*z*z*z + beta_1[5]*z*z*z*z*z + beta_1[6]*z*z*z*z*z*z);
777 } else { // perpendicular
778 invpref *= MM2*MM * pow(1.-z,3.5) * phi_1()*phi_1()*phi_1() * sqrt(phi_2()) * phi_3()*phi_3()*phi_3();
779
780 return 1./invpref * (beta_2[0] + beta_2[1]*z + beta_2[2]*z*z + beta_2[3]*z*z*z + beta_2[4]*z*z*z*z + beta_2[5]*z*z*z*z*z + beta_2[6]*z*z*z*z*z*z);
781 }
782}
783
784gslpp::complex MVgamma::h_lambda(int hel)
785{
786 double A1;
787 double V;
788
789 if (MVll_DM_flag) {
790 A1 = f_DM(a_0f,a_1f,a_2f,MRf_2,MRf2_2)/(MM+MV);
791 V = g_DM(a_0g,a_1g,a_2g,MRg_2,MRg2_2)*(MM+MV)/2.;
792 } else {
793 A1 = a_0A1;
794 V = a_0V;
795 }
796
797 if (hel == 0) {
798 if (dispersion)
799 return SU3_breaking * ( -1./(MM2*16.*M_PI*M_PI) * (
800 ((MM+MV)*A1) / (2.*MM) * ((- r1_2 + deltaC9_2) / (1. + r2_2 / mJ2) )*exp_Phase_2
801 - lambda / (2.*MM*(MM+MV))*V * ((- r1_1 + deltaC9_1) / (1. + r2_1 / mJ2) )*exp_Phase_1 ) );
802 else if (zExpansion)
803 return (DeltaC9_zExpansion(1) - DeltaC9_zExpansion(2)) / sqrt(2.);
804 }
805 else if (hel == 1) {
806 if (dispersion)
807 return SU3_breaking * (-1./(MM2*16.*M_PI*M_PI) *
808 (((MM+MV)*A1) / (2.*MM) * ((- r1_2 + deltaC9_2) / (1. + r2_2 / mJ2) )*exp_Phase_2
809 + lambda / (2.*MM*(MM+MV))*V * ((- r1_1 + deltaC9_1) / (1. + r2_1 / mJ2) )*exp_Phase_1 ) );
810 else if (zExpansion)
811 return (DeltaC9_zExpansion(1) + DeltaC9_zExpansion(2)) / sqrt(2.);
812 }
813 else {
814 std::stringstream out;
815 out << hel;
816 throw std::runtime_error("MVgamma: hel " + out.str() + " not implemented, can only be 1 (+) or 2 (-)");
817 }
818}
819
820gslpp::complex MVgamma::H_V_m()
821{
822 return lambda_t * (((C_7 + DC7_QCDF) * T_1() + MM2/(MM2 - MV*MV) * T_QCDF_minus(false)) * lambda / MM2 - MM / (2. * Mb)*16. * M_PI * M_PI * h[1]);
823}
824
825gslpp::complex MVgamma::H_V_p()
826{
827 return lambda_t * (-C_7p * T_1() * lambda / MM2 - MM / (2. * Mb)*16. * M_PI * M_PI * h[0]);
828}
829
830gslpp::complex MVgamma::H_V_m_bar()
831{
832 return lambda_t.conjugate() * (((C_7 + DC7_QCDF_bar) * T_1() + MM2/(MM2 - MV*MV) * T_QCDF_minus(true)) * lambda / MM2 - MM / (2. * Mb)*16. * M_PI * M_PI * h[1]);
833}
834
835gslpp::complex MVgamma::H_V_p_bar()
836{
837 return lambda_t.conjugate() * (-C_7p * T_1() * lambda / MM2 - MM / (2. * Mb)*16. * M_PI * M_PI * h[0]);
838}
839
840/*******************************************************************************
841 * Observables *
842 * ****************************************************************************/
843
844
846: ThObservable(SM_i)
847{
848 meson = meson_i;
849 vectorM = vector_i;
850
852}
853
855{
856 QCD::meson meson_i = meson;
857 QCD::meson vector_i = vector;
858
859 SM.getFlavour().getMVgamma(meson_i, vector_i).updateParameters();
860
861 gslpp::complex HVm = SM.getFlavour().getMVgamma(meson_i, vector_i).H_V_m();
862 gslpp::complex HVm_bar = SM.getFlavour().getMVgamma(meson_i, vector_i).H_V_m_bar();
863 gslpp::complex HVp = SM.getFlavour().getMVgamma(meson_i, vector_i).H_V_p();
864 gslpp::complex HVp_bar = SM.getFlavour().getMVgamma(meson_i, vector_i).H_V_p_bar();
865
866 switch (vector_i) {
872 arg = SM.getFlavour().getDB2(0).getM21(FULLNLO).arg();
873 t_int = 1.;
874 break;
876 arg = SM.getFlavour().getDB2(1).getM21(FULLNLO).arg();
877 /* For correctly defined polarization the numerator should be H_V_p().conjugate()*H_V_p_bar() + H_V_m().conjugate()*H_V_m_bar(). Switched to keep consistency with K*ll.*/
878 /* See discussion around eq.53 in hep-ph/0510104*/
879 ADG = 2.*(exp(gslpp::complex::i()*arg)*(HVp.conjugate()*HVm_bar + HVm.conjugate()*HVp_bar)).real() / (HVp.abs2() + HVm.abs2() + HVp_bar.abs2() + HVm_bar.abs2());
881 t_int = (1. - ADG * ys)/(1. - ys*ys);
882 break;
883 default:
884 std::stringstream out;
885 out << vector_i;
886 throw std::runtime_error("MVgamma: vector " + out.str() + " not implemented");
887 }
888
889 double GF = SM.getGF();
890 double ale = SM.getAle();
891 double MM = SM.getMesons(meson_i).getMass();
892 double MM2 = MM * MM;
893 double Mb = SM.getQuarks(QCD::BOTTOM).getMass();
894 double MV = SM.getMesons(vector_i).getMass();
895 double width = SM.getMesons(meson_i).computeWidth();
896 double lambda = MM2 - pow(MV, 2.);
897
898
899 return ale * pow(GF * Mb / (4 * M_PI * M_PI), 2.) * MM * lambda / (4. * width) * (HVp.abs2() + HVm.abs2() + HVp_bar.abs2() + HVm_bar.abs2()) * t_int;
900}
901
906
907R_MVgamma::R_MVgamma(const StandardModel& SM_i, QCD::meson meson_1, QCD::meson vector_1, QCD::meson meson_2, QCD::meson vector_2)
908: BR_MVgamma(SM_i, meson_1, vector_1)
909{
910 meson1 = meson_1;
911 meson2 = meson_2;
912 vector1 = vector_1;
913 vector2 = vector_2;
914
917}
918
923
924D0p_MVgamma::D0p_MVgamma(const StandardModel& SM_i, QCD::meson meson_1, QCD::meson vector_1, QCD::meson meson_2, QCD::meson vector_2)
925: BR_MVgamma(SM_i, meson_1, vector_1)
926{
927 meson1 = meson_1;
928 meson2 = meson_2;
929 vector1 = vector_1;
930 vector2 = vector_2;
931
934}
935
941
950
952{
953 QCD::meson meson_i = meson;
954 QCD::meson vector_i = vector;
955
956 SM.getFlavour().getMVgamma(meson_i, vector_i).updateParameters();
957
958 gslpp::complex HVm = SM.getFlavour().getMVgamma(meson_i, vector_i).H_V_m();
959 gslpp::complex HVm_bar = SM.getFlavour().getMVgamma(meson_i, vector_i).H_V_m_bar();
960 gslpp::complex HVp = SM.getFlavour().getMVgamma(meson_i, vector_i).H_V_p();
961 gslpp::complex HVp_bar = SM.getFlavour().getMVgamma(meson_i, vector_i).H_V_p_bar();
962 double CC = ((HVp.abs2() + HVm.abs2() - HVp_bar.abs2() - HVm_bar.abs2())) / (HVp.abs2() + HVm.abs2() + HVp_bar.abs2() + HVm_bar.abs2());
963 return -CC;
964}
965
970
971DACP_MVgamma::DACP_MVgamma(const StandardModel& SM_i, QCD::meson meson_1, QCD::meson vector_1, QCD::meson meson_2, QCD::meson vector_2)
972: ACP_MVgamma(SM_i, meson_1, vector_1)
973{
974 meson1 = meson_1;
975 meson2 = meson_2;
976 vector1 = vector_1;
977 vector2 = vector_2;
978
981}
982
987
989: ThObservable(SM_i)
990{
991 meson = meson_i;
992 vectorM = vector_i;
993
995}
996
998{
1000
1001 gslpp::complex HVm = SM.getFlavour().getMVgamma(meson, vectorM).H_V_m();
1002 gslpp::complex HVm_bar = SM.getFlavour().getMVgamma(meson, vectorM).H_V_m_bar();
1003 gslpp::complex HVp = SM.getFlavour().getMVgamma(meson, vectorM).H_V_p();
1004 gslpp::complex HVp_bar = SM.getFlavour().getMVgamma(meson, vectorM).H_V_p_bar();
1005 /* REMEMBER: ACP = -C by definition in neutral B mesons.*/
1006 double CC = ((HVp.abs2() + HVm.abs2() - HVp_bar.abs2() - HVm_bar.abs2())) / (HVp.abs2() + HVm.abs2() + HVp_bar.abs2() + HVm_bar.abs2());
1007 if (meson == QCD::B_P) return -CC;
1008 else return CC;
1009
1010}
1011
1013: ThObservable(SM_i)
1014{
1015 meson = meson_i;
1016 vectorM = vector_i;
1017
1019}
1020
1022{
1024
1025 gslpp::complex HVm = SM.getFlavour().getMVgamma(meson, vectorM).H_V_m();
1026 gslpp::complex HVm_bar = SM.getFlavour().getMVgamma(meson, vectorM).H_V_m_bar();
1027 gslpp::complex HVp = SM.getFlavour().getMVgamma(meson, vectorM).H_V_p();
1028 gslpp::complex HVp_bar = SM.getFlavour().getMVgamma(meson, vectorM).H_V_p_bar();
1029
1030 switch (vectorM) {
1032 case StandardModel::RHO:
1033 arg = SM.getFlavour().getDB2(0).getM21(FULLNLO).arg();
1034 break;
1035 case StandardModel::PHI:
1036 arg = SM.getFlavour().getDB2(1).getM21(FULLNLO).arg();
1037 break;
1038 default:
1039 std::stringstream out;
1040 out << vectorM;
1041 throw std::runtime_error("MVgamma: vector " + out.str() + " not implemented");
1042 }
1043
1044 /* For correctly defined polarization the numerator should be H_V_p().conjugate()*H_V_p_bar() + H_V_m().conjugate()*H_V_m_bar(). Switched to keep consistency with K*ll.*/
1045 /* See discussion around eq.53 in hep-ph/0510104*/
1046 return 2.*(exp(gslpp::complex::i()*arg)*(HVp.conjugate()*HVm_bar + HVm.conjugate()*HVp_bar)).imag() / (HVp.abs2() + HVm.abs2() + HVp_bar.abs2() + HVm_bar.abs2());
1047}
1048
1050: ThObservable(SM_i)
1051{
1052 meson = meson_i;
1053 vectorM = vector_i;
1054
1056}
1057
1059{
1061
1062 gslpp::complex HVm = SM.getFlavour().getMVgamma(meson, vectorM).H_V_m();
1063 gslpp::complex HVm_bar = SM.getFlavour().getMVgamma(meson, vectorM).H_V_m_bar();
1064 gslpp::complex HVp = SM.getFlavour().getMVgamma(meson, vectorM).H_V_p();
1065 gslpp::complex HVp_bar = SM.getFlavour().getMVgamma(meson, vectorM).H_V_p_bar();
1066
1067 switch (vectorM) {
1069 arg = SM.getFlavour().getDB2(0).getM21(FULLNLO).arg();
1070 break;
1071 case StandardModel::PHI:
1072 arg = SM.getFlavour().getDB2(1).getM21(FULLNLO).arg();
1073 break;
1074 default:
1075 std::stringstream out;
1076 out << vectorM;
1077 throw std::runtime_error("MVgamma: vector " + out.str() + " not implemented");
1078 }
1079
1080 /* For correctly defined polarization the numerator should be H_V_p().conjugate()*H_V_p_bar() + H_V_m().conjugate()*H_V_m_bar(). Switched to keep consistency with K*ll.*/
1081 /* See discussion around eq.53 in hep-ph/0510104*/
1082 return 2.*(exp(gslpp::complex::i()*arg)*(HVp.conjugate()*HVm_bar + HVm.conjugate()*HVp_bar)).real() / (HVp.abs2() + HVm.abs2() + HVp_bar.abs2() + HVm_bar.abs2());
1083}
1084
1085DC7_1::DC7_1(const StandardModel& SM_i, QCD::meson meson_i, QCD::meson vector_i)
1086: ThObservable(SM_i)
1087{
1088 meson = meson_i;
1089 vectorM = vector_i;
1090
1092}
1093
1099
1100DC7_2::DC7_2(const StandardModel& SM_i, QCD::meson meson_i, QCD::meson vector_i)
1101: ThObservable(SM_i)
1102{
1103 meson = meson_i;
1104 vectorM = vector_i;
1105
1107}
1108
1114
1116: ThObservable(SM_i)
1117{
1118 meson = meson_i;
1119 vectorM = vector_i;
1120
1122}
1123
1129
1131: ThObservable(SM_i)
1132{
1133 meson = meson_i;
1134 vectorM = vector_i;
1135
1137}
1138
1144
1146: ThObservable(SM_i)
1147{
1148 meson = meson_i;
1149 vectorM = vector_i;
1150
1152}
1153
1159
1161: ThObservable(SM_i)
1162{
1163 meson = meson_i;
1164 vectorM = vector_i;
1165
1167}
1168
1174
1176: ThObservable(SM_i)
1177{
1178 meson = meson_i;
1179 vectorM = vector_i;
1180
1182}
1183
1189
1191: ThObservable(SM_i)
1192{
1193 meson = meson_i;
1194 vectorM = vector_i;
1195
1197}
1198
1204
1206: ThObservable(SM_i)
1207{
1208 meson = meson_i;
1209 vectorM = vector_i;
1210
1212}
1213
1219
1221: ThObservable(SM_i)
1222{
1223 meson = meson_i;
1224 vectorM = vector_i;
1225
1227}
1228
1230{
1232
1233 double MM = SM.getMesons(meson).getMass();
1234 double MM2 = MM * MM;
1235 double MV = SM.getMesons(vectorM).getMass();
1236 double T1 = SM.getFlavour().getMVgamma(meson, vectorM).T_1();
1237
1238 return ( SM.getFlavour().getMVgamma(meson, vectorM).DC7_QCDF + MM2/(MM2 - MV*MV) * SM.getFlavour().getMVgamma(meson, vectorM).T_QCDF_minus(false)/T1 ).abs();
1239}
1240
1242: ThObservable(SM_i)
1243{
1244 meson = meson_i;
1245 vectorM = vector_i;
1246
1248}
1249
1251{
1253
1254 double MM = SM.getMesons(meson).getMass();
1255 double MM2 = MM * MM;
1256 double MV = SM.getMesons(vectorM).getMass();
1257 double T1 = SM.getFlavour().getMVgamma(meson, vectorM).T_1();
1258
1259 return ( SM.getFlavour().getMVgamma(meson, vectorM).DC7_QCDF_bar + MM2/(MM2 - MV*MV) * SM.getFlavour().getMVgamma(meson, vectorM).T_QCDF_minus(true)/T1 ).abs();
1260}
1261
1263: ThObservable(SM_i)
1264{
1265 meson = meson_i;
1266 vectorM = vector_i;
1267
1269}
1270
1272{
1274
1275 double MM = SM.getMesons(meson).getMass();
1276 double MM2 = MM * MM;
1277 double MV = SM.getMesons(vectorM).getMass();
1278 double T1 = SM.getFlavour().getMVgamma(meson, vectorM).T_1();
1279
1280 return ( SM.getFlavour().getMVgamma(meson, vectorM).DC7_QCDF + MM2/(MM2 - MV*MV) * SM.getFlavour().getMVgamma(meson, vectorM).T_QCDF_minus(false)/T1 ).real();
1281}
1282
1284: ThObservable(SM_i)
1285{
1286 meson = meson_i;
1287 vectorM = vector_i;
1288
1290}
1291
1293{
1295
1296 double MM = SM.getMesons(meson).getMass();
1297 double MM2 = MM * MM;
1298 double MV = SM.getMesons(vectorM).getMass();
1299 double T1 = SM.getFlavour().getMVgamma(meson, vectorM).T_1();
1300
1301 return ( SM.getFlavour().getMVgamma(meson, vectorM).DC7_QCDF_bar + MM2/(MM2 - MV*MV) * SM.getFlavour().getMVgamma(meson, vectorM).T_QCDF_minus(true)/T1 ).real();
1302}
1303
1305: ThObservable(SM_i)
1306{
1307 meson = meson_i;
1308 vectorM = vector_i;
1309
1311}
1312
1314{
1316
1317 double MM = SM.getMesons(meson).getMass();
1318 double MM2 = MM * MM;
1319 double MV = SM.getMesons(vectorM).getMass();
1320 double T1 = SM.getFlavour().getMVgamma(meson, vectorM).T_1();
1321
1322 return ( SM.getFlavour().getMVgamma(meson, vectorM).DC7_QCDF + MM2/(MM2 - MV*MV) * SM.getFlavour().getMVgamma(meson, vectorM).T_QCDF_minus(false)/T1 ).imag();
1323}
1324
1326: ThObservable(SM_i)
1327{
1328 meson = meson_i;
1329 vectorM = vector_i;
1330
1332}
1333
1335{
1337
1338 double MM = SM.getMesons(meson).getMass();
1339 double MM2 = MM * MM;
1340 double MV = SM.getMesons(vectorM).getMass();
1341 double T1 = SM.getFlavour().getMVgamma(meson, vectorM).T_1();
1342
1343 return ( SM.getFlavour().getMVgamma(meson, vectorM).DC7_QCDF_bar + MM2/(MM2 - MV*MV) * SM.getFlavour().getMVgamma(meson, vectorM).T_QCDF_minus(true)/T1 ).imag();
1344}
@ LO
Definition OrderScheme.h:34
@ NLO
Definition OrderScheme.h:35
@ FULLNNLO
Definition OrderScheme.h:39
@ FULLNLO
Definition OrderScheme.h:38
A class for the parameter of CPV in decay.
Definition MVgamma.h:671
double computeACP_MVgamma(QCD::meson meson, QCD::meson vector)
The parameter of CPV in .
Definition MVgamma.cpp:951
ACP_MVgamma(const StandardModel &SM_i, QCD::meson meson_i, QCD::meson vector_i)
Constructor.
Definition MVgamma.cpp:942
double computeThValue()
Definition MVgamma.cpp:966
QCD::meson meson
Definition MVgamma.h:691
QCD::meson vectorM
Definition MVgamma.h:692
double arg
Definition MVgamma.h:842
double computeThValue()
The parameter for CPV in .
Definition MVgamma.cpp:1058
QCD::meson meson
Definition MVgamma.h:840
QCD::meson vectorM
Definition MVgamma.h:841
ADG_MVgamma(const StandardModel &SM_i, QCD::meson meson_i, QCD::meson vector_i)
Constructor.
Definition MVgamma.cpp:1049
QCD::meson vectorM
Definition MVgamma.h:978
QCD::meson meson
Definition MVgamma.h:977
double computeThValue()
The in .
Definition MVgamma.cpp:1139
AbsDC7_L(const StandardModel &SM_i, QCD::meson meson_i, QCD::meson vector_i)
Constructor.
Definition MVgamma.cpp:1130
AbsDC7_QCDF_bar(const StandardModel &SM_i, QCD::meson meson_i, QCD::meson vector_i)
Constructor.
Definition MVgamma.cpp:1241
QCD::meson meson
Definition MVgamma.h:1221
QCD::meson vectorM
Definition MVgamma.h:1222
double computeThValue()
The in .
Definition MVgamma.cpp:1250
AbsDC7_QCDF(const StandardModel &SM_i, QCD::meson meson_i, QCD::meson vector_i)
Constructor.
Definition MVgamma.cpp:1220
QCD::meson vectorM
Definition MVgamma.h:1188
double computeThValue()
The in .
Definition MVgamma.cpp:1229
QCD::meson meson
Definition MVgamma.h:1187
QCD::meson vectorM
Definition MVgamma.h:1014
double computeThValue()
The in .
Definition MVgamma.cpp:1154
QCD::meson meson
Definition MVgamma.h:1013
AbsDC7_R(const StandardModel &SM_i, QCD::meson meson_i, QCD::meson vector_i)
Constructor.
Definition MVgamma.cpp:1145
gslpp::complex getM21(orders order)
The value of for mesons.
Definition AmpDB2.h:51
A class for the in decay.
Definition MVgamma.h:546
double arg
Definition MVgamma.h:568
BR_MVgamma(const StandardModel &SM_i, QCD::meson meson_i, QCD::meson vector_i)
Constructor.
Definition MVgamma.cpp:845
QCD::meson meson
Definition MVgamma.h:566
double ys
Definition MVgamma.h:570
double computeBR_MVgamma(QCD::meson meson, QCD::meson vector)
The in .
Definition MVgamma.cpp:854
double computeThValue()
Definition MVgamma.cpp:902
double t_int
Definition MVgamma.h:571
double ADG
Definition MVgamma.h:569
QCD::meson vectorM
Definition MVgamma.h:567
double computeThValue()
The parameter of CPV in .
Definition MVgamma.cpp:997
QCD::meson meson
Definition MVgamma.h:769
QCD::meson vectorM
Definition MVgamma.h:770
C_MVgamma(const StandardModel &SM_i, QCD::meson meson_i, QCD::meson vector_i)
Constructor.
Definition MVgamma.cpp:988
QCD::meson meson2
Definition MVgamma.h:651
double computeThValue()
The in .
Definition MVgamma.cpp:936
QCD::meson vector1
Definition MVgamma.h:652
QCD::meson meson1
Definition MVgamma.h:650
QCD::meson vector2
Definition MVgamma.h:653
D0p_MVgamma(const StandardModel &SM_i, QCD::meson meson_1, QCD::meson vector_1, QCD::meson meson_2, QCD::meson vector_2)
Constructor.
Definition MVgamma.cpp:924
QCD::meson vector2
Definition MVgamma.h:733
QCD::meson vector1
Definition MVgamma.h:732
QCD::meson meson2
Definition MVgamma.h:731
double computeThValue()
The in .
Definition MVgamma.cpp:983
DACP_MVgamma(const StandardModel &SM_i, QCD::meson meson_1, QCD::meson vector_1, QCD::meson meson_2, QCD::meson vector_2)
Constructor.
Definition MVgamma.cpp:971
QCD::meson meson1
Definition MVgamma.h:730
QCD::meson vectorM
Definition MVgamma.h:877
double computeThValue()
The in .
Definition MVgamma.cpp:1094
DC7_1(const StandardModel &SM_i, QCD::meson meson_i, QCD::meson vector_i)
Constructor.
Definition MVgamma.cpp:1085
QCD::meson meson
Definition MVgamma.h:876
QCD::meson meson
Definition MVgamma.h:912
DC7_2(const StandardModel &SM_i, QCD::meson meson_i, QCD::meson vector_i)
Constructor.
Definition MVgamma.cpp:1100
QCD::meson vectorM
Definition MVgamma.h:913
double computeThValue()
The in .
Definition MVgamma.cpp:1109
Definition F_1.h:15
Definition F_2.h:15
AmpDB2 & getDB2(int BMeson_i, bool flag_fixmub=false, bool flag_RI=false) const
Returns a reference to the meson dependent object for processes.
Definition Flavour.cpp:229
MVgamma & getMVgamma(QCD::meson meson_i, QCD::meson vector_i) const
Returns the initial and final state dependent object for .
Definition Flavour.cpp:234
double computeThValue()
The in .
Definition MVgamma.cpp:1199
QCD::meson meson
Definition MVgamma.h:1117
ImDC7_L(const StandardModel &SM_i, QCD::meson meson_i, QCD::meson vector_i)
Constructor.
Definition MVgamma.cpp:1190
QCD::meson vectorM
Definition MVgamma.h:1118
QCD::meson meson
Definition MVgamma.h:1357
double computeThValue()
The in .
Definition MVgamma.cpp:1334
QCD::meson vectorM
Definition MVgamma.h:1358
ImDC7_QCDF_bar(const StandardModel &SM_i, QCD::meson meson_i, QCD::meson vector_i)
Constructor.
Definition MVgamma.cpp:1325
double computeThValue()
The in .
Definition MVgamma.cpp:1313
ImDC7_QCDF(const StandardModel &SM_i, QCD::meson meson_i, QCD::meson vector_i)
Constructor.
Definition MVgamma.cpp:1304
QCD::meson meson
Definition MVgamma.h:1323
QCD::meson vectorM
Definition MVgamma.h:1324
double computeThValue()
The in .
Definition MVgamma.cpp:1214
QCD::meson vectorM
Definition MVgamma.h:1154
ImDC7_R(const StandardModel &SM_i, QCD::meson meson_i, QCD::meson vector_i)
Constructor.
Definition MVgamma.cpp:1205
QCD::meson meson
Definition MVgamma.h:1153
double t_m
Definition MVgamma.h:188
double t_p
Definition MVgamma.h:187
double r2_1
Definition MVgamma.h:200
double fperp
Definition MVgamma.h:182
double mu_b
Definition MVgamma.h:179
double r2_2
Definition MVgamma.h:201
double z_DM
Definition MVgamma.h:189
double Chi1plus
Definition MVgamma.h:192
double Ms
Definition MVgamma.h:185
gslpp::complex h[2]
Definition MVgamma.h:197
double ChiTT
Definition MVgamma.h:191
double Mb
Definition MVgamma.h:176
double r1_1
Definition MVgamma.h:198
void updateParameters()
The update parameter method for MVgamma.
Definition MVgamma.cpp:227
double n_I
Definition MVgamma.h:194
double spectator_charge
Definition MVgamma.h:208
virtual ~MVgamma()
Destructor.
Definition MVgamma.cpp:42
double rV
Definition MVgamma.h:190
double mc_pole
Definition MVgamma.h:178
std::vector< std::string > initializeMVgammaParameters()
A method for initializing the parameters necessary for MVgamma.
Definition MVgamma.cpp:45
double Chi1minus
Definition MVgamma.h:193
gslpp::complex lambda_u
Definition MVgamma.h:196
double mb_pole
Definition MVgamma.h:177
double lambda
Definition MVgamma.h:207
double ale
Definition MVgamma.h:172
double deltaC9_2
Definition MVgamma.h:203
double mu_h
Definition MVgamma.h:180
double GF
Definition MVgamma.h:171
gslpp::complex SU3_breaking
Definition MVgamma.h:206
gslpp::complex exp_Phase_1
Definition MVgamma.h:204
double deltaC9_1
Definition MVgamma.h:202
gslpp::complex exp_Phase_2
Definition MVgamma.h:205
double fB
Definition MVgamma.h:184
double fpara
Definition MVgamma.h:183
MVgamma(const StandardModel &SM_i, QCD::meson meson_i, QCD::meson vector_i)
Constructor.
Definition MVgamma.cpp:22
double MM
Definition MVgamma.h:173
double MM2
Definition MVgamma.h:174
double MW
Definition MVgamma.h:186
double width
Definition MVgamma.h:181
double r1_2
Definition MVgamma.h:199
gslpp::complex lambda_t
Definition MVgamma.h:195
double MV
Definition MVgamma.h:175
const double & getDgamma_gamma() const
Definition Meson.h:411
double computeWidth() const
A method to compute the width of the meson from its lifetime.
Definition Meson.cpp:521
const double & getMass() const
A get method to access the particle mass.
Definition Particle.h:61
meson
An enum type for mesons.
Definition QCD.h:336
@ OMEGA
Definition QCD.h:355
@ PHI
Definition QCD.h:348
@ K_star
Definition QCD.h:349
@ B_P
Definition QCD.h:345
@ K_star_P
Definition QCD.h:350
@ RHO_P
Definition QCD.h:354
@ RHO
Definition QCD.h:353
@ B_S
Definition QCD.h:346
const Meson & getMesons(const QCD::meson m) const
A get method to access a meson as an object of the type Meson.
Definition QCD.h:526
@ UP
Definition QCD.h:324
@ BOTTOM
Definition QCD.h:329
@ DOWN
Definition QCD.h:325
@ STRANGE
Definition QCD.h:327
@ CHARM
Definition QCD.h:326
@ MU
Definition QCD.h:314
@ NOLEPTON
Definition QCD.h:317
const Particle & getQuarks(const QCD::quark q) const
A get method to access a quark as an object of the type Particle.
Definition QCD.h:536
R_MVgamma(const StandardModel &SM_i, QCD::meson meson_1, QCD::meson vector_1, QCD::meson meson_2, QCD::meson vector_2)
Constructor.
Definition MVgamma.cpp:907
QCD::meson vector1
Definition MVgamma.h:611
QCD::meson meson2
Definition MVgamma.h:610
QCD::meson meson1
Definition MVgamma.h:609
QCD::meson vector2
Definition MVgamma.h:612
double computeThValue()
The in .
Definition MVgamma.cpp:919
QCD::meson vectorM
Definition MVgamma.h:1048
QCD::meson meson
Definition MVgamma.h:1047
double computeThValue()
The in .
Definition MVgamma.cpp:1169
ReDC7_L(const StandardModel &SM_i, QCD::meson meson_i, QCD::meson vector_i)
Constructor.
Definition MVgamma.cpp:1160
QCD::meson vectorM
Definition MVgamma.h:1290
ReDC7_QCDF_bar(const StandardModel &SM_i, QCD::meson meson_i, QCD::meson vector_i)
Constructor.
Definition MVgamma.cpp:1283
QCD::meson meson
Definition MVgamma.h:1289
double computeThValue()
The in .
Definition MVgamma.cpp:1292
double computeThValue()
The in .
Definition MVgamma.cpp:1271
QCD::meson meson
Definition MVgamma.h:1255
QCD::meson vectorM
Definition MVgamma.h:1256
ReDC7_QCDF(const StandardModel &SM_i, QCD::meson meson_i, QCD::meson vector_i)
Constructor.
Definition MVgamma.cpp:1262
QCD::meson meson
Definition MVgamma.h:1083
QCD::meson vectorM
Definition MVgamma.h:1084
double computeThValue()
The in .
Definition MVgamma.cpp:1184
ReDC7_R(const StandardModel &SM_i, QCD::meson meson_i, QCD::meson vector_i)
Constructor.
Definition MVgamma.cpp:1175
QCD::meson vectorM
Definition MVgamma.h:805
S_MVgamma(const StandardModel &SM_i, QCD::meson meson_i, QCD::meson vector_i)
Constructor.
Definition MVgamma.cpp:1012
double arg
Definition MVgamma.h:806
double computeThValue()
The parameter for CPV in .
Definition MVgamma.cpp:1021
QCD::meson meson
Definition MVgamma.h:804
A model class for the Standard Model.
const Flavour & getFlavour() const
const double getGF() const
A get method to retrieve the Fermi constant .
const double getAle() const
A get method to retrieve the fine-structure constant .
A class for a model prediction of an observable.
void setParametersForObservable(std::vector< std::string > parametersForObservable_i)
A set method to get the parameters for the specific observable.
const StandardModel & SM
A reference to an object of StandardMode class.
QCD::meson vectorM
Definition MVgamma.h:944
hp0_hm0(const StandardModel &SM_i, QCD::meson meson_i, QCD::meson vector_i)
Constructor.
Definition MVgamma.cpp:1115
double computeThValue()
The absolute value of the ratio in .
Definition MVgamma.cpp:1124
QCD::meson meson
Definition MVgamma.h:943