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