7 #include "TProfile2D.h" 11 #include "Math/Polynomial.h" 12 #include "Math/Interpolator.h" 81 BGL(
int genL=2,
int genQ=2,
int lup=0,
int qup=0,
int mssm=0):
82 planck(6.58211928e-25),
86 Mpip(
"Mpip",0.1396,
"M_{\\pi^+}",domain::real),
87 Mpi0(
"Mpi0",0.1349766,
"M_{\\pi^0}",domain::real),
88 MBp(
"MBp",5.279,
"M_{B^+}",domain::real),
89 MB0(
"MB0",5.2795,
"M_{B^0}",domain::real),
90 MBs0(
"MBs0",5.3663,
"M_{B_s^0}",domain::real),
91 MKp(
"MKp",0.493677,
"MKp",domain::real),
92 MK0(
"MK0",0.497614,
"MK0",domain::real),
93 MDp(
"MDp",1.86957,
"MDp",domain::real),
94 MD0(
"MD0",1.86480,
"MD0",domain::real),
95 MDsp(
"MDsp",1.96845,
"MDsp",domain::real),
97 Fpi(
"Fpi",0.132,
"Fpi",domain::real),
98 FB(
"FB",0.189,
"FB",domain::real),
99 FBs(
"FBs",0.225,
"FBs",domain::real),
100 FK(
"FK",0.159,
"FK",domain::real),
101 FD(
"FD",0.208,
"FD",domain::real),
102 FDs(
"FDs",0.248,
"FDs",domain::real),
105 g(sqrt(GF*8/sqrt(ex(2)))*MW),
112 mixes(tanb,cp, genL,genQ, lup, qup, mssm),
119 alpha=pow(g,2)*(1-cos2)/(4*Pi);
120 replacements.append(GF==1.166371e-5);
121 replacements.append(MZ==
M_MZ);
122 replacements.append(MW==
M_MW);
124 mixes.appendtolst(replacements);
126 replacements.append(Pi==M_PI);
127 replacements.append(sqrt(ex(2))==sqrt(2));
135 ex vq3=dirac_slash(q3,4);
138 for(
uint i=0;i<2;i++)
139 for(
uint j=0;j<3;j++)
140 for(
uint k=0;k<3;k++){
141 conjtoabs.append(conjugate(mixes.V[i][j][k])==pow(abs(mixes.V[i][j][k]),2)/mixes.V[i][j][k]);
167 bosons.push_back(boson);
177 bosons.push_back(boson);
180 for(
int b=bosons.size()-1;b>=0;b--){
181 boson.
mass=bosons[b].mass;
188 boson.
C[t][i][j][h]=bosons[b].C[t][j][i][h].conjugate();
194 boson.
C[t][i][j][
hLeft]=bosons[b].C[t][j][i][
hRight].conjugate();
195 boson.
C[t][i][j][
hRight]=bosons[b].C[t][j][i][
hLeft].conjugate();
197 bosons.push_back(boson);
211 bosons.push_back(boson);
224 bosons.push_back(boson);
247 Meson Pi0d(down,down,Mpi0,Fpi);
248 Meson Pi0u(down,down,Mpi0,Fpi);
249 Meson Pip(up,down,Mpip,Fpi);
250 Meson Pim(down,up,Mpip,Fpi);
252 Meson K0(down,strange,MK0,FK);
253 Meson Kp(up,strange,MKp,FK);
255 Meson D0(charm,up,MD0,FD);
256 Meson Dp(charm,down,MDp,FD);
257 Meson Dsp(charm,strange,MDsp,FDs);
259 Meson B0(down,bottom,MB0,FB);
260 Meson Bp(up,bottom,MBp,FB);
261 Meson Bs0(strange,bottom,MBs0,FBs);
265 sb.append(pow(abs(mixes.V[0][2][2]),2)==1-pow(abs(mixes.V[0][1][2]),2)-pow(abs(mixes.V[0][0][2]),2));
266 sb.append(pow(abs(mixes.V[0][2][1]),2)==1-pow(abs(mixes.V[0][1][1]),2)-pow(abs(mixes.V[0][0][1]),2));
272 ex mutoenunu=decaywidth(muon,neutrino,electron,neutrino);
277 add(
"muRtoeRnunu",gRR2(muon,electron),
new limitedobs(std::pow(0.035,2),0.95));
280 add(
"tauRtoeRnunu",gRR2(tau,electron),
new limitedobs(std::pow(0.7,2),0.95));
283 add(
"tauRtomuRnunu",gRR2(tau,muon),
new limitedobs(std::pow(0.72,2),0.95));
285 add(
"tautomu_tautoe",tautomu_tautoe(),
new gaussobs(1.0018,0.0014/1.0018));
286 cout<<
"tautomu_tautoe: "<<1/1.0018<<
"ERROR: "<<0.0014/1.0018<<endl;
287 cout<<
"ratio1 "<<tautomu_tautoe().subs(replacements)<<endl;
288 cout<<
"ratio2 "<<(decaywidth(tau,neutrino,muon,neutrino,
sVector)/decaywidth(tau,neutrino,electron,neutrino,
sVector)).subs(replacements)<<endl;
290 ex mu3e=decaywidth(muon,electron,electron,electron);
291 add(
"muto3e", mu3e,
new limitedobs(planck/2.197034e-6*1e-12));
292 cout<<
"mu3e "<<decaywidthtest2(muon)<<endl;
295 add(
"tauto3e", decaywidth(tau,electron,electron,electron),
new limitedobs(planck/290.6e-15*2.7e-8));
297 add(
"tauto2e1mup", decaywidth(tau,electron,electron,muon),
new limitedobs(planck/290.6e-15*1.5e-8));
299 add(
"tauto2e1mu", decaywidth(tau,electron,muon,electron),
new limitedobs(planck/290.6e-15*1.8e-8));
302 add(
"tauto2mu1ep", decaywidth(tau,muon,muon,electron),
new limitedobs(planck/290.6e-15*1.7e-8));
303 cout<<
"tauto2mu1ep "<<decaywidthtest2(tau)<<endl;
305 add(
"tauto2mu1ep", decaywidth(tau,muon,electron,muon),
new limitedobs(planck/290.6e-15*2.7e-8));
306 cout<<
"tauto2mu1e "<<decaywidthtest2(tau)<<endl;
309 add(
"tauto3mu", decaywidth(tau,muon,muon,muon),
new limitedobs(planck/290.6e-15*2.1e-8));
313 ex piratio=1.2352e-4/(mesondw(Pip,neutrino,electron,
sVector)/mesondw(Pip,neutrino,muon,
sVector));
314 ex picorrection=piratio.subs(replacements);
315 ex pierror=picorrection*0.0001/1.2352;
316 cout<<
"PiRatio "<<picorrection-1<<
" +/- "<<pierror<<endl;
317 piratio*=mesondw(Pip,neutrino,electron)/mesondw(Pip,neutrino,muon);
318 add(
"piontoenu_munu",piratio,
new gaussobs(1.230e-4,0.003));
319 cout<<
"piontoenu_munu: "<<1.2352e-4/1.230e-4<<
" ERROR: "<<0.003<<endl;
322 add(
"tautopinu_pitomunu",(1+0.16e-2)*fermiontomeson(tau,neutrino,Pip)/mesondw(Pip,neutrino,muon),
new gaussobs((10.83e-2/290.6e-15/(0.9998770/2.6033e-8)),0.06/10.83));
323 cout<<
"tautopinu/pitomunu: "<<(1+0.16e-2)*(fermiontomeson(tau,neutrino,Pip,
sVector)/mesondw(Pip,neutrino,muon,
sVector)).subs(replacements)/((10.83e-2/290.6e-15/(0.9998770/2.6033e-8)))<<
" ERROR: "<<0.06/10.83<<endl;
324 cout<<
"tautopinu: "<<fermiontomesontest(tau,neutrino,Pip)<<endl;
325 cout<<
"tautopinu_pitomunu: "<<10.83e-2/290.6e-15/(0.9998770/2.6033e-8)<<
" +/- "<<0.06e-2/290.6e-15/(0.9998770/2.6033e-8)<<endl;
327 add(
"tautoKnu_Ktomunu",(1+0.9e-2)*fermiontomeson(tau,neutrino,Kp)/mesondw(Kp,neutrino,muon),
new gaussobs((7e-3/290.6e-15)/(0.6355/1.238e-8),0.1/7));
328 cout<<
"tautoKnu/Ktomunu: "<<(1+0.9e-2)*(fermiontomeson(tau,neutrino,Kp,
sVector)/mesondw(Kp,neutrino,muon,
sVector)).subs(replacements)/((7e-3/290.6e-15)/(0.6355/1.238e-8))<<
" ERROR: "<<0.1/7<<endl;
329 cout<<
"tautoKnu/Ktomunu: "<<(7e-3/290.6e-15)/(0.6355/1.238e-8)<<
" +/- "<<(0.1e-3/290.6e-15)/(0.6355/1.238e-8)<<endl;
332 ex pi0toemu=(mesondw(Pi0d,electron,muon)+mesondw(Pi0d,muon,electron)+mesondw(Pi0u,electron,muon)+mesondw(Pi0u,muon,electron))/2;
333 add(
"pi0toemu",pi0toemu,
new limitedobs(3.6e-10*planck/8.52e-17));
335 ex Kratio=2.477e-5/(mesondw(Kp,neutrino,electron,
sVector)/mesondw(Kp,neutrino,muon,
sVector));
336 ex Kcorrection=Kratio.subs(replacements);
337 ex Kerror=Kcorrection*0.001/2.477;
338 cout<<
"KRatio "<<Kcorrection-1<<
" +/- "<<Kerror<<endl;
339 Kratio*=mesondw(Kp,neutrino,electron)/mesondw(Kp,neutrino,muon);
340 add(
"Ktoenu_munu",Kratio,
new gaussobs(2.488e-5,0.005));
341 cout<<
"Ktoenu_munu: "<<2.477e-5/2.488e-5<<
" ERROR: "<<0.005<<endl;
343 ex k0Ltoemu=mesondw(K0,electron,muon)+mesondw(K0,muon,electron);
344 add(
"K0Ltoemu",k0Ltoemu,
new limitedobs((4.7e-12*planck/5.116e-8)));
345 add(
"K0Ltoee",mesondw(K0,electron,electron),
new limitedobs((9e-12*planck/5.116e-8)));
349 add(
"Dtoenu",mesondw(Dp,neutrino,electron),
new limitedobs(8.8e-6*planck/1040e-15));
350 add(
"Dtomunu",mesondw(Dp,neutrino,muon),
new gaussobs(3.82e-4*planck/1040e-15,0.1));
351 cout<<
"Dtomunu: "<<mesondw(Dp,neutrino,muon,
sVector).subs(replacements)/(3.82e-4*planck/1040e-15)<<
" ERROR: "<<0.1<<endl;
353 add(
"Dtotaunu",mesondw(Dp,neutrino,tau),
new limitedobs(1.2e-3*planck/1040e-15));
354 cout<<
"Dtotaunu: "<<mesondw(Dp,neutrino,tau,
sVector).subs(replacements)/(1.2e-3*planck/1040e-15)<<
" LIMIT"<<endl;
358 ex D0toemu=mesondw(D0,electron,muon)+mesondw(D0,muon,electron);
359 add(
"D0toemu",D0toemu,
new limitedobs((2.6e-7*planck/410.1e-15)));
360 ex D0toee=mesondw(D0,electron,electron);
361 add(
"D0toee",D0toee,
new limitedobs((7.9e-8*planck/410.1e-15)));
362 ex D0tomumu=mesondw(D0,muon,muon);
363 add(
"D0tomumu",D0tomumu,
new limitedobs((1.4e-7*planck/410.1e-15)));
366 add(
"Dstomunu",mesondw(Dsp,neutrino,muon),
new gaussobs(5.9e-3*planck/500e-15,0.33/5.9));
367 cout<<
"Dstomunu: "<<mesondw(Dsp,neutrino,muon,
sVector).subs(replacements)/(5.9e-3*planck/500e-15)<<
" ERROR: "<<0.33/5.9<<endl;
369 add(
"Dstoenu",mesondw(Dsp,neutrino,electron),
new limitedobs(1.2e-4*planck/500e-15));
370 add(
"Dstotaunu",mesondw(Dsp,neutrino,tau),
new gaussobs(5.43e-2*planck/500e-15,0.31/5.43));
371 cout<<
"Dstotaunu: "<<mesondw(Dsp,neutrino,tau,
sVector).subs(replacements)/(5.43e-2*planck/500e-15)<<
" ERROR: "<<0.31/5.43<<endl;
373 add(
"Btomunu",mesondw(Bp,neutrino,muon),
new limitedobs(9.8e-7*planck/1.641e-12));
374 add(
"Btoenu",mesondw(Bp,neutrino,electron),
new limitedobs(1e-6*planck/1.641e-12));
376 add(
"Btotaunu",mesondw(Bp,neutrino,tau),
new gaussobs(1.15e-4*planck/1.641e-12,0.23/1.15));
399 cBsmumu=
new calcuBmumu(mixes,Bs0,muon,muon,
new gauss2obs(2.9e-9*planck/1.516e-12,0.7e-9*planck/1.516e-12),
"Bs_to_mumu");
401 ex B0toetau=mesondw(B0,electron,tau)+mesondw(B0,tau,electron);
402 add(
"B0toetau",B0toetau,
new limitedobs((2.8e-5*planck/1.519e-12)));
403 ex B0tomutau=mesondw(B0,muon,tau)+mesondw(B0,tau,muon);
404 add(
"B0tomutau",B0tomutau,
new limitedobs((2.2e-5*planck/1.519e-12)));
405 ex B0toee=mesondw(B0,electron,electron);
406 add(
"B0toee",B0toee,
new limitedobs((8.3e-8*planck/1.519e-12)));
407 ex B0totautau=mesondw(B0,tau,tau);
408 add(
"B0totautau",B0totautau,
new limitedobs((4.1e-3*planck/1.519e-12)));
411 ex Bs0toemu=mesondw(Bs0,electron,muon)+mesondw(Bs0,muon,electron);
412 add(
"Bs0toemu",Bs0toemu,
new limitedobs((2e-7*planck/1.516e-12)));
413 ex Bs0toee=mesondw(Bs0,electron,electron);
414 add(
"Bs0toee",Bs0toee,
new limitedobs((2.8e-7*planck/1.516e-12)));
420 cout<<
"Bs0tomumu: "<<mesondwtest(Bs0,muon,muon)<<endl;
439 Matrix llgammaH0M,llgammaH0E;
456 for(
uint i=0;i<3;i++)
457 for(
uint j=0;j<3;j++){
462 if(j<i){
for(
uint k=0;k<3;k++){
468 A+=mixes.N[
tLepton][1][j][k]*mixes.N[
tLepton][1][k][i]/mtau/mmuon*(Fh2(pow(mtau/MR,2))-Fh2(pow(mtau/MI,2)))/4;
470 llgamma[i][j]=(A*A.conjugate()+B*B.conjugate())*alpha*pow(mmuon,5)*GF*GF/(128*pow(Pi,4));
473 for(
uint k=0;k<3;k++){
479 llgamma[i][j]=-B*GF*sqrt(1/2)/(8*pow(Pi,2))*2*mmuon;
482 add(
"mutoegamma",llgamma[1][0],
new limitedobs(planck/2.197034e-6*2.4e-12));
483 add(
"tautoegamma",llgamma[2][0],
new limitedobs(planck/290.6e-15*3.3e-8));
484 add(
"tautomugamma",llgamma[2][1],
new limitedobs(planck/290.6e-15*4.4e-8));
524 BR_Htotaunu=(CHdecaycoupling(chiggs,tau,neutrino)+3*CHdecaycoupling(chiggs,strange,charm))/factor(CHdecaycoupling(chiggs,
Fermion(
tLepton,
iDown),neutrino)+3*CHdecaycoupling(chiggs,
Fermion(
tQuark,
iDown),charm)+3*CHdecaycoupling(chiggs,
Fermion(
tQuark,
iDown),up));
525 BR_Htotaunu=BR_Htotaunu.subs(replacements);
538 ex BtoDtaunu,BtoD2taunu, BtoDtaunuSM, KtoPi;
539 for(
uint i=0; i<3; i++){
541 if(Wcoup.subs(replacements)==ex(0))
continue;
545 BtoDtaunuSM+=Wcoup*Wcoup.conjugate();
546 BtoDtaunu+=Wcoup*Wcoup.conjugate()*(1+1.5*chcoup_Wcoup.real_part()+chcoup_Wcoup.conjugate()*chcoup_Wcoup);
547 BtoD2taunu+=Wcoup*Wcoup.conjugate()*(1+0.12*chcoup2_Wcoup.real_part()+0.05*chcoup2_Wcoup.conjugate()*chcoup2_Wcoup);
549 lst r2(pow(mixes.V[1][1][2].imag_part(),2)==pow(abs(mixes.V[1][1][2]),2)-pow(mixes.V[1][1][2].real_part(),2));
550 r2.append(pow(mixes.V[0][2][2].imag_part(),2)==pow(abs(mixes.V[0][2][2]),2)-pow(mixes.V[0][2][2].real_part(),2));
552 r2.append(mixes.M[1][0][1][1]==0);
553 r2.append(pow(abs(mixes.V[0][2][2]),2)==1-pow(abs(mixes.V[0][1][2]),2)-pow(abs(mixes.V[0][0][2]),2));
554 r2.append(pow(abs(mixes.V[0][2][1]),2)==1-pow(abs(mixes.V[0][1][1]),2)-pow(abs(mixes.V[0][0][1]),2));
555 r2.append(abs(sqrt(ex(2))* GF)==sqrt(ex(2))* GF);
557 BtoDtaunuSM=collect_common_factors(BtoDtaunuSM.subs(conjtoabs).subs(r2));
558 BtoDtaunu=collect_common_factors(BtoDtaunu.subs(conjtoabs).subs(r2));
560 BtoDtaunuR=(BtoDtaunu/BtoDtaunuSM).subs(replacements).real_part();
562 BtoD2taunu=BtoD2taunu.subs(conjtoabs).subs(r2);
563 BtoD2taunuR=(BtoD2taunu/BtoDtaunuSM).subs(replacements).real_part();
568 add(
"BtoDtaunu_BtoDtaunuSM",BtoDtaunu/BtoDtaunuSM,
new gaussobs(440.0/296, 1.4*58.0/440));
572 add(
"BtoD2taunu_BtoD2taunuSM",BtoD2taunu/BtoDtaunuSM,
new gaussobs(332.0/252, 1.4*24.0/332.0));
576 for(
uint j=0; j<2; j++){
577 ex KtoPimunu, KtoPimunuSM;
578 for(
uint i=0; i<3; i++){
580 if(Wcoup.subs(replacements)==ex(0))
continue;
581 ex chcoup_Wcoup=-pow(MW/McH,2)*(chiggs.
couplingR(up,strange)+chiggs.
couplingL(up,strange))\
584 chcoup_Wcoup=collect_common_factors(expand(chcoup_Wcoup));
585 KtoPimunuSM+=collect_common_factors(expand(Wcoup*Wcoup.conjugate()));
586 KtoPimunu+=collect_common_factors(expand(Wcoup*Wcoup.conjugate()*pow(1+chcoup_Wcoup,2)));
588 KtoPimunuSM=collect_common_factors(expand(KtoPimunuSM.subs(conjtoabs).subs(r2)));
589 KtoPimunu=collect_common_factors(expand(KtoPimunu.subs(conjtoabs).subs(r2)));
590 KtoPimunu=expand(KtoPimunu.subs(replacements).real_part().subs(lst(abs(wild()*pow(MR,-2))==abs(wild())*pow(MR,-2))).subs(lst(log(wild()*pow(MR,-2))==log(wild())-2*log(MR))));
591 KtoPimunu=expand(KtoPimunu.evalf());
592 KtoPimunuSM=expand(KtoPimunuSM.subs(replacements).real_part().subs(lst(abs(wild()*pow(MR,-2))==abs(wild())*pow(MR,-2))).subs(lst(log(wild()*pow(MR,-2))==log(wild())-2*log(MR))));
593 KtoPimunuSM=expand(KtoPimunuSM.evalf());
594 KtoPi+=0.5*log(KtoPimunu/KtoPimunuSM);
597 add(
"KtoPi",KtoPi/(pow(MKp,2)-pow(Mpip,2)),
new gaussobs(0.08, 0.11/0.08));
603 ex DDbar=ex(std::pow(fD,2))*mesonmixing(MD0,charm,up);
604 DDbar=expand(DDbar.subs(replacements).subs(lst(abs(wild()*pow(MR,-2))==abs(wild())*pow(MR,-2))).subs(lst(log(wild()*pow(MR,-2))==log(wild())-2*log(MR))));
605 DDbar=expand(DDbar.evalf());
606 ex aDDbar=sqrt(DDbar.real_part()*DDbar.real_part()+DDbar.imag_part()*DDbar.imag_part());
612 ex KKbar=ex(std::pow(fK,2))*mesonmixing(MK0,strange,down);
613 KKbar=expand(KKbar.subs(replacements).subs(lst(abs(wild()*pow(MR,-2))==abs(wild())*pow(MR,-2))).subs(lst(log(wild()*pow(MR,-2))==log(wild())-2*log(MR))));
614 KKbar=expand(KKbar.evalf());
615 ex aKKbar=sqrt(KKbar.real_part()*KKbar.real_part()+KKbar.imag_part()*KKbar.imag_part());
617 ex eK=0.94*imag_part(KKbar)/3.5e-15/sqrt(2);
619 add(
"a_eK",abs(eK),
new limitedobs(20*0.0114e-3));
620 cout<<abs(KKbar)<<endl;
623 ex Vtb=mixes.V[
tQuark][2][2]/mixes.V[
tQuark][2][2].conjugate();
624 ex Vtd=mixes.V[
tQuark][2][0]/mixes.V[
tQuark][2][0].conjugate();
625 ex Vts=mixes.V[
tQuark][2][1]/mixes.V[
tQuark][2][1].conjugate();
627 ex BBbar=1+ex(std::pow(fB,2))*mesonmixing(MB0,bottom,down)/(3.337e-13*Vtb*Vtd.conjugate());
628 add(
"BBbarimag",imag_part(BBbar),
new gauss2obs(-0.199,0.062));
629 add(
"BBbarreal",real_part(BBbar),
new gauss2obs(0.823,0.143));
631 BBbar=3.337e-13*Vtb*Vtd.conjugate();
632 cout<<
"Bbar "<<(abs(imag_part(BBbar))/abs(BBbar)).subs(replacements)<<endl;
634 ex BsBsbar=1+ex(std::pow(fBs,2))*mesonmixing(MBs0,bottom,strange)/(1.186e-11*Vtb*Vts.conjugate());
635 add(
"BsBsbarimag",imag_part(BsBsbar),
new gauss2obs(0,0.1));
636 add(
"BsBsbarreal",real_part(BsBsbar),
new gauss2obs(0.965,0.133));
638 BsBsbar=1.186e-11*Vtb*Vts.conjugate();
639 cout<<
"Bbar "<<(abs(imag_part(BsBsbar))/abs(BsBsbar)).subs(replacements)<<endl;
645 ex cu=collect_common_factors(expand(chiggs.
couplingL(top,bottom)))/mixes.mass(top)/(g/MW/sqrt(ex(2)))/mixes.V[1][2][2];
646 cout<<
"cu "<<cu<<endl;
647 ex Zbb=(cu-0.72)/McH;
649 cout<<
"Zbb "<<Zbb<<endl;
650 cout<<
"SIZE "<<size()<<endl;
661 return 1.0113*x/8/(1-x)*(4-x+3*x*log(x)/(1-x));
665 return (94-x*(179+x*(-55+12*x)))/(36*pow(1-x,3))+x*(16+x*(-32+9*x))*log(x)/(6*pow(1-x,4));
669 return x*(x*((39-14*x)*x-6)+6*x*(3*x-8)*log(x)-19)/(36*pow(x-1,4));
674 return x*((x-1)*(11*x-21)+(16-6*x)*log(x))/(6*pow(x-1,3));
679 return (94-x*(179+x*(-55+12*x)))/(36*pow(1-x,3))+x*(16+x*(-32+9*x))*log(x)/(6*pow(1-x,4));
697 return -2*(3/2+log(x))*x;
701 return x*(2+3*x-6*x*x+ x*x*x+6*x*log(x))/(24*pow(1-x,4));
705 return x*(-3+4*x-x*x-2*log(x))/(4*pow(1-x,3));
709 return x/(6*pow(1-x,3))*((-7+5*x-8*x*x)/6.0+x*log(x)/(1-x)*(-2+3*x));
713 return (-3+8*x-5*x*x+(6*x-4)*log(x))*x/(6*pow(1-x,3));
722 ex p=pred.subs(replacements).real_part();
723 p=collect_common_factors(expand(p.evalf()));
726 lst l(tanb,McH,MR,MI);
728 for(
uint i=0;i<3;i++){
734 compile_ex(lst(p), l, fp);
744 double mr=p[1].value+p[2].value;
745 if(mr<10 || mr>10000)
return 1;
747 if(mr<10 || mr>10000)
return 1;
751 double mr=p[1].value+p[2].value;
752 if(mr<10 || mr>mmmax)
return 1;
754 if(mr<10 || mr>mmmax)
return 1;
778 double x=pow(10.0,p[0].value);
784 double z=y+p[2].value;
785 double w=z+p[3].value;
789 pp[2].value+=pp[1].value;
790 pp[3].value+=pp[2].value;
791 pp.
values=vector<double>();
792 for(
uint i=0; i<4; i++) pp.
values.push_back(pp[i].value);
794 l=lst(tanb==x,McH==y,MR==z,MI==w);
799 double bsgammawidth(
double tanb,
double McH,
double MR,
double MI,
int option=0){
801 p[0].value=pow(10.0,tanb);
808 return cal.
width(p,option);
881 vector<ex>
mass(bosons.size(),0);
882 vector<int> op(bosons.size(),0);
884 Fermion f1=ff1, f2=ff2,f3=ff3, f4=ff4;
899 for(
uint i=0;i<bosons.size();i++)
if(bosons[i].
s==
s ||
s==
sAny){
901 mass[i]=bosons[i].mass;
902 a[i][0][0][0]=bosons[i].couplingdaggerL(f2,f1)*bosons[i].couplingL(f3,f4);
903 a[i][0][0][1]=bosons[i].couplingdaggerL(f2,f1)*bosons[i].couplingR(f3,f4);
904 a[i][0][1][0]=bosons[i].couplingdaggerR(f2,f1)*bosons[i].couplingL(f3,f4);
905 a[i][0][1][1]=bosons[i].couplingdaggerR(f2,f1)*bosons[i].couplingR(f3,f4);
907 a[i][1][0][0]=bosons[i].couplingdaggerL(f3,f1)*bosons[i].couplingL(f2,f4);
908 a[i][1][0][1]=bosons[i].couplingdaggerL(f3,f1)*bosons[i].couplingR(f2,f4);
909 a[i][1][1][0]=bosons[i].couplingdaggerR(f3,f1)*bosons[i].couplingL(f2,f4);
910 a[i][1][1][1]=bosons[i].couplingdaggerR(f3,f1)*bosons[i].couplingR(f2,f4);
913 ret+=wc.get_integral_symb(a,
mass,op,mixes.mass(f1));
917 return collect_common_factors(ret.subs(conjtoabs));
922 realsymbol s2(
"s2"), s3(
"s3");
923 realsymbol q1(
"q1"), q2(
"q2"), q3(
"q3"), q4(
"q4");
927 ex vq1=dirac_slash(q2,4)+dirac_slash(q3,4)+dirac_slash(q4,4)+m1*dirac_ONE(), vq2=dirac_slash(q2,4);
928 ex vq3=dirac_slash(q3,4), vq4=dirac_slash(q4,4);
932 sp.add(q2, q3, (s4)/2);
933 sp.add(q4, q3, (s2)/2);
934 sp.add(q2, q4, (s3)/2);
941 v[0][0]=dirac_gammaL(); v[0][1]=dirac_gammaR();
942 v[1][0]=dirac_gammaR(); v[1][1]=dirac_gammaL();
945 for(
uint k=0;k<2;k++)
946 for(
uint l=0;l<2;l++)
947 for(
uint m=0;m<2;m++)
948 for(
uint n=0;n<2;n++){
954 traces[k][l][m][n][0]=dirac_trace(vq2*vk*vq1*vl)*dirac_trace(vq3*vm*vq4*vn);
955 traces[k][l][m][n][1]=-dirac_trace(vq2*vk*vq1*vl*vq3*vm*vq4*vn);
958 for(
uint k=0;k<2;k++)
959 for(
uint l=0;l<2;l++)
960 for(
uint m=0;m<2;m++)
961 for(
uint n=0;n<2;n++)
962 for(
uint o=0;o<2;o++)
964 traces[k][l][m][n][o]=(traces[k][l][m][n][o]).simplify_indexed(sp);
967 ex q10=(s2+m1*m1)/(2*sqrt(s2)), lq1l=(m1*m1-s2)/(2*sqrt(s2));
968 ex q30=sqrt(s2)/2, lq3l=q30;
969 ex q20=(m1*m1-s2)/(2*m1), lq2l=q20;
972 for(
uint k=0;k<2;k++)
973 for(
uint l=0;l<2;l++)
974 for(
uint m=0;m<2;m++)
975 for(
uint n=0;n<2;n++)
976 for(
uint r=0;r<2;r++)
978 ex coup=a[r][k][m]*a[
s][l][n].conjugate();
979 ex integrand=traces[k][l][m][n][(r+
s)%2];
980 integrand=expand(integral(s3, 0, m1*m1-s2, integrand).eval_integ()/lq1l/sqrt(s2)*lq2l/m1/m1);
982 ex result=integral(s2,0,m1*m1,integrand).eval_integ()/pow(Pi,3)/512;
983 ex partial=result*coup;
991 symbol gLL(
"g_{LL}"),gLR(
"g_{LR}"),gRL(
"g_{RL}"),gRR(
"g_{RR}"),cLL(
"c_{LL}"),cLR(
"c_{LR}"),cRL(
"c_{RL}"),cRR(
"c_{RR}");
1003 ex ret=get_integral_symb(a,mixes.mass(ff1));
1006 return collect_common_factors(ret.subs(conjtoabs));
1095 for(
uint i=0;i<bosons.size();i++)
1097 ex x=bosons[i].couplingdaggerR(f2,f1)*bosons[i].couplingL(f3,f4)/pow(bosons[i].
mass,2);
1098 ret1+=x*x.conjugate();
1101 ex x=bosons[i].couplingdaggerL(f2,f1)*bosons[i].couplingL(f3,f4)/pow(bosons[i].
mass,2);
1102 ret2+=x*x.conjugate();
1106 ret2=ret2.subs(conjtoabs);
1107 ret1=ret1.subs(conjtoabs);
1108 for(
uint i=0;i<3;i++){
1109 ret1=collect_common_factors(expand(ret1.subs(pow(abs(mixes.V[0][2][i]),2)==1-pow(abs(mixes.V[0][1][i]),2)-pow(abs(mixes.V[0][0][i]),2))));
1110 ret2=collect_common_factors(expand(ret2.subs(pow(abs(mixes.V[0][2][i]),2)==1-pow(abs(mixes.V[0][1][i]),2)-pow(abs(mixes.V[0][0][i]),2))));
1114 return collect_common_factors(ret1/ret2);
1119 ex ret1=0,ret2=0, rety1=0, rety2=0;
1133 ex x1=0, x2=0, y1=0, y2=0;
1134 for(
uint i=0;i<bosons.size();i++){
1136 x1+=bosons[i].couplingdaggerR(f2,f1)*bosons[i].couplingL(f31,f4)/pow(bosons[i].
mass,2);
1137 x2+=bosons[i].couplingdaggerR(f2,f1)*bosons[i].couplingL(f32,f4)/pow(bosons[i].mass,2);
1140 y1+=bosons[i].couplingdaggerL(f2,f1)*bosons[i].couplingL(f31,f4)/pow(bosons[i].
mass,2);
1141 y2+=bosons[i].couplingdaggerL(f2,f1)*bosons[i].couplingL(f32,f4)/pow(bosons[i].mass,2);
1144 ret1+=(x1*y1.conjugate()).real_part();
1145 ret2+=(x2*y2.conjugate()).real_part();
1146 rety1+=y1*y1.conjugate();
1147 rety2+=y2*y2.conjugate();
1149 ret2=(ret2/rety2*mixes.mass(f32)/mixes.mass(f1)).subs(conjtoabs);
1150 ret1=(ret1/rety1*mixes.mass(f31)/mixes.mass(f1)).subs(conjtoabs);
1151 for(
uint i=0;i<3;i++){
1152 ret1=collect_common_factors(expand(ret1.subs(pow(abs(mixes.V[0][2][i]),2)==1-pow(abs(mixes.V[0][1][i]),2)-pow(abs(mixes.V[0][0][i]),2))));
1153 ret2=collect_common_factors(expand(ret2.subs(pow(abs(mixes.V[0][2][i]),2)==1-pow(abs(mixes.V[0][1][i]),2)-pow(abs(mixes.V[0][0][i]),2))));
1156 ex x=pow(mixes.mass(f31)/mixes.mass(f1),2);
1157 ex F1=1-8*x+8*pow(x,3)-pow(x,4)-12*pow(x,2)*log(x);
1158 ex g1=1+9*x-9*pow(x,2)-pow(x,3)+6*x*(1+x)*log(x);
1159 ex N1=1+gRR2(f1,f31)/4;
1161 x=pow(mixes.mass(f32)/mixes.mass(f1),2);
1163 ex F2=1-8*x+8*pow(x,3)-pow(x,4)-12*pow(x,2)*log(x);
1164 ex g2=1+9*x-9*pow(x,2)-pow(x,3)+6*x*(1+x)*log(x);
1165 ex N2=1+gRR2(f1,f32)/4;
1167 return collect_common_factors(N1*(F1+2/N1*ret1*g1)/N2/(F2+2/N2*ret2*g2)*F2/F1);
1173 ex mesonmass=meson.
mass;
1179 realsymbol q3(
"q3"), q4(
"q4");
1180 ex s2=pow(mesonmass,2);
1189 ex mq1=mixes.mass(f1),mq2=mixes.mass(f2),mq3=mixes.mass(f3),mq4=mixes.mass(f4);
1190 ex m2q1=mq1*mq1, m2q2=mq2*mq2, m2q3=mq3*mq3, m2q4=mq4*mq4;
1192 sp.add(q4, q3, (s2-m2q4-m2q3)/2);
1193 sp.add(q3, q3, m2q3);
1194 sp.add(q4, q4, m2q4);
1195 ex q10=(s2+mq1*mq1-mq2*mq2)/(2*sqrt(s2)), lq1l=sqrt(q10*q10-mq1*mq1);
1196 ex q30=(s2+mq3*mq3-mq4*mq4)/(2*sqrt(s2)), lq3l=sqrt(q30*q30-mq3*mq3);
1198 for(
uint i=0;i<bosons.size();i++)
if(bosons[i].
s==
s ||
s==
sAny){
1200 ex a=-(bosons[i].couplingdaggerR(f2,f1)-bosons[i].couplingdaggerL(f2,f1))*bosons[i].
couplingL(f3,f4)*s2/(mq1+mq2)/pow(bosons[i].
mass,2);
1201 v1=v1+a*dirac_gammaL();
1202 v2=v2+a.conjugate()*dirac_gammaR();
1203 a=-(bosons[i].couplingdaggerR(f2,f1)-bosons[i].couplingdaggerL(f2,f1))*bosons[i].
couplingR(f3,f4)*s2/(mq1+mq2)/pow(bosons[i].mass,2);
1204 v1=v1+a*dirac_gammaR();
1205 v2=v2+a.conjugate()*dirac_gammaL();
1208 ex sl=(dirac_slash(q3,4)+dirac_slash(q4,4));
1209 ex a=(bosons[i].couplingdaggerR(f2,f1)-bosons[i].couplingdaggerL(f2,f1))*bosons[i].
couplingL(f3,f4)/pow(bosons[i].
mass,2);
1210 v1=v1+a*sl*dirac_gammaL();
1211 v2=v2+a.conjugate()*sl*dirac_gammaL();
1212 a=(bosons[i].couplingdaggerR(f2,f1)-bosons[i].couplingdaggerL(f2,f1))*bosons[i].
couplingR(f3,f4)/pow(bosons[i].mass,2);
1213 v1=v1+a*sl*dirac_gammaR();
1214 v2=v2+a.conjugate()*sl*dirac_gammaR();
1217 ex vq3=dirac_slash(q3,4)+mq3*dirac_ONE(), vq4=dirac_slash(q4,4)-mq4*dirac_ONE();
1218 ex dt=dirac_trace(vq3*v1*vq4*v2).simplify_indexed(sp);
1219 ex result=expand(dt*4*lq3l/s2/Pi/128);
1225 return pow(meson.
decay_factor,2)*collect_common_factors(ret.subs(conjtoabs));
1233 ex mesonmass=meson.
mass;
1239 realsymbol q3(
"q3"), q4(
"q4");
1240 symbol gL(
"gL"), gR(
"gR"),gVL(
"gVL"), gVR(
"gVR");
1241 symbol gS(
"gS"), gP(
"gP"), gA(
"gA");
1243 ex s2=pow(mesonmass,2);
1252 ex mq1=mixes.mass(f1),mq2=mixes.mass(f2),mq3=mixes.mass(f3),mq4=mixes.mass(f4);
1253 ex m2q1=mq1*mq1, m2q2=mq2*mq2, m2q3=mq3*mq3, m2q4=mq4*mq4;
1255 sp.add(q4, q3, (s2-m2q4-m2q3)/2);
1256 sp.add(q3, q3, m2q3);
1257 sp.add(q4, q4, m2q4);
1258 ex q10=(s2+mq1*mq1-mq2*mq2)/(2*sqrt(s2)), lq1l=sqrt(q10*q10-mq1*mq1);
1259 ex q30=(s2+mq3*mq3-mq4*mq4)/(2*sqrt(s2)), lq3l=sqrt(q30*q30-mq3*mq3);
1275 v1=v1+a*dirac_ONE();
1276 v2=v2+a.conjugate()*dirac_ONE();
1278 v1=v1+a*dirac_gamma5();
1279 v2=v2-a.conjugate()*dirac_gamma5();
1280 ex sl=(dirac_slash(q3,4)+dirac_slash(q4,4));
1296 ex vq3=dirac_slash(q3,4)+mq3*dirac_ONE(), vq4=dirac_slash(q4,4)-mq4*dirac_ONE();
1297 ex dt=dirac_trace(vq3*v1*vq4*v2).simplify_indexed(sp);
1298 ex result=expand(dt*4*lq3l/s2/Pi/128);
1304 ltest.append(conjugate(gL)==pow(abs(gL),2)/gL);
1305 ltest.append(conjugate(gR)==pow(abs(gR),2)/gR);
1306 ltest.append(conjugate(gS)==pow(abs(gS),2)/gS);
1307 ltest.append(conjugate(gP)==pow(abs(gP),2)/gP);
1308 ltest.append(conjugate(gA)==pow(abs(gA),2)/gA);
1310 return pow(meson.
decay_factor,2)*collect_common_factors(expand(ret.subs(conjtoabs).subs(ltest)));
1317 ex mesonmass=meson.
mass;
1323 realsymbol q3(
"q3"), q4(
"q4");
1324 ex s2=pow(mesonmass,2);
1333 ex mq1=mixes.mass(f1),mq2=mixes.mass(f2),mq3=mixes.mass(f3),mq4=mixes.mass(f4);
1334 ex m2q1=mq1*mq1, m2q2=mq2*mq2, m2q3=mq3*mq3, m2q4=mq4*mq4;
1336 sp.add(q4, q3, -(s2-m2q4-m2q3)/2);
1337 sp.add(q3, q3, m2q3);
1338 sp.add(q4, q4, m2q4);
1340 ex q30=(-s2+mq3*mq3+mq4*mq4)/(2*mq4), lq3l=sqrt(q30*q30-mq3*mq3);
1343 for(
uint i=0;i<bosons.size();i++)
if(bosons[i].
s==
s ||
s==
sAny){
1345 ex a=(bosons[i].couplingdaggerR(f2,f1)-bosons[i].couplingdaggerL(f2,f1))*bosons[i].
couplingL(f3,f4)*s2/(mq1+mq2)/pow(bosons[i].
mass,2);
1346 v1=v1+a*dirac_gammaL();
1347 v2=v2+a.conjugate()*dirac_gammaR();
1348 a=(bosons[i].couplingdaggerR(f2,f1)-bosons[i].couplingdaggerL(f2,f1))*bosons[i].
couplingR(f3,f4)*s2/(mq1+mq2)/pow(bosons[i].mass,2);
1349 v1=v1+a*dirac_gammaR();
1350 v2=v2+a.conjugate()*dirac_gammaL();
1353 ex sl=(dirac_slash(q3,4)+dirac_slash(q4,4));
1354 ex a=(bosons[i].couplingdaggerR(f2,f1)-bosons[i].couplingdaggerL(f2,f1))*bosons[i].
couplingL(f3,f4)/pow(bosons[i].
mass,2);
1355 v1=v1+a*sl*dirac_gammaL();
1356 v2=v2+a.conjugate()*sl*dirac_gammaL();
1357 a=(bosons[i].couplingdaggerR(f2,f1)-bosons[i].couplingdaggerL(f2,f1))*bosons[i].
couplingR(f3,f4)/pow(bosons[i].mass,2);
1358 v1=v1+a*sl*dirac_gammaR();
1359 v2=v2+a.conjugate()*sl*dirac_gammaR();
1362 ex vq3=dirac_slash(q3,4)+mq3*dirac_ONE(), vq4=dirac_slash(q4,4)+mq4*dirac_ONE();
1363 ex dt=dirac_trace(vq3*v1*vq4*v2).simplify_indexed(sp);
1364 ex result=expand(dt*2*lq3l/mq4/mq4/Pi/128);
1372 return pow(meson.
decay_factor,2)*collect_common_factors(ret.subs(conjtoabs));
1379 ex mesonmass=meson.
mass;
1385 realsymbol q3(
"q3"), q4(
"q4");
1387 symbol sL(
"sL"), sR(
"sR"), vL(
"vL"), vR(
"vR");
1388 ex s2=pow(mesonmass,2);
1397 ex mq1=mixes.mass(f1),mq2=mixes.mass(f2),mq3=mixes.mass(f3),mq4=mixes.mass(f4);
1398 ex m2q1=mq1*mq1, m2q2=mq2*mq2, m2q3=mq3*mq3, m2q4=mq4*mq4;
1400 sp.add(q4, q3, -(s2-m2q4-m2q3)/2);
1401 sp.add(q3, q3, m2q3);
1402 sp.add(q4, q4, m2q4);
1404 ex q30=(-s2+mq3*mq3+mq4*mq4)/(2*mq4), lq3l=sqrt(q30*q30-mq3*mq3);
1409 v1=v1+a*dirac_gammaL();
1410 v2=v2+a.conjugate()*dirac_gammaR();
1412 v1=v1+a*dirac_gammaR();
1413 v2=v2+a.conjugate()*dirac_gammaL();
1415 ex sl=(dirac_slash(q3,4)+dirac_slash(q4,4));
1417 v1=v1+a*sl*dirac_gammaL();
1418 v2=v2+a.conjugate()*sl*dirac_gammaL();
1420 v1=v1+a*sl*dirac_gammaR();
1421 v2=v2+a.conjugate()*sl*dirac_gammaR();
1423 ex vq3=dirac_slash(q3,4)+mq3*dirac_ONE(), vq4=dirac_slash(q4,4)+mq4*dirac_ONE();
1424 ex dt=dirac_trace(vq3*v1*vq4*v2).simplify_indexed(sp);
1425 ex result=expand(dt*2*lq3l/mq4/mq4/Pi/128);
1431 return pow(meson.
decay_factor,2)*collect_common_factors(ret.subs(conjtoabs));
1440 ex mq1=mixes.mass(f1),mq2=mixes.mass(f2);
1441 ex m2q1=mq1*mq1, m2q2=mq2*mq2;
1443 for(
uint i=0;i<bosons.size();i++)
1445 ex a=(bosons[i].couplingdaggerR(f2,f1)-bosons[i].couplingdaggerL(f2,f1));
1446 v1=v1+pow(a/bosons[i].
mass,2);
1448 ex b=(bosons[i].couplingdaggerR(f2,f1)+bosons[i].couplingdaggerL(f2,f1));
1449 v2=v2+pow(b/bosons[i].mass,2);
1452 ex fc=mesonmass/(mixes.massnum(f1)+mixes.massnum(f2));
1455 ret=2*(-v1*(1+11*fc)+v2*(1+fc))*mesonmass/96;
1457 return collect_common_factors(ret.subs(conjtoabs));
1473 return collect_common_factors(ret.subs(conjtoabs));
1478 return ex_to<numeric>(BR_Htotaunu.subs(tanb==pow(10.0,xx[0])).evalf()).to_double();
1483 return ex_to<numeric>(BR_toptoHq.subs(lst(tanb==pow(10.0,xx[0]),McH==xx[1])).evalf()).to_double();
1489 const possymbol GF,
MZ, MW, Mh;
1490 const constant
Mpip, Mpi0, MBp,MB0,MBs0, MKp,MK0,MDp,MD0,MDsp,MDs0;
1491 const constant
Fpi, FB,FBs, FK,FD,FDs;
1493 const possymbol
tanb, cp, McH, MR, MI, rho;
1494 possymbol Mu[3],Md[3];
this class calculates decay widths of one lepton to 3 leptons
Matrix conjugate() const
computes the hermitian conjugate of the matrix
calculus of the constraints coming from the b->s gamma decay
double BranchingRatio(double *xx, double *p)
A base class representing an experimental measure.
ex couplingdaggerL(const Fermion &f2, const Fermion &f1) const
ex decaywidthtest2(const Fermion &ff1) const
ex get_integral_symb(const multivector< ex, 3 > &a, ex m1) const
ex tautomu_tautoe() const
BGL(int genL=2, int genQ=2, int lup=0, int qup=0, int mssm=0)
ex mesondw(const Meson &meson, const Fermion &ff3, const Fermion &ff4, BSpin s=sAny) const
parameters getlist(const parameters &p) const
double topBranchingRatio(double *xx, double *p)
ex fermiontomesontest(const Fermion &ff4, const Fermion &ff3, const Meson &meson, BSpin s=sAny) const
calculus of the constraints coming from the B->mu mu decay
ex decaywidth(const Fermion &ff1, const Fermion &ff2, const Fermion &ff3, const Fermion &ff4, BSpin s=sAny) const
ex couplingL(const Fermion &f2, const Fermion &f1) const
An experimental measure which is an upper limit on a parameter with a given Confidence Level...
ex fermiontomeson(const Fermion &ff4, const Fermion &ff3, const Meson &meson, BSpin s=sAny) const
ex CHdecaycoupling(Boson higgs, const Fermion &ff3, const Fermion &ff4) const
double width(const parameters &p, int option=0) const
An experimental measure of a parameter which is a mean value and a standard deviation.
multivector< Matrix, 4 > C
ex mesondwtest(const Meson &meson, const Fermion &ff3, const Fermion &ff4, BSpin s=sAny) const
Abstract class for a model.
ex couplingdaggerR(const Fermion &f2, const Fermion &f1) const
parameters generateparameters(int max=0) const
ex coupling(const Fermion &f2, const Fermion &f1, ex mu)
calculus of the constraints coming from the oblique parameters
definition of the couplings for the different BGL models
int veto(const parameters &p, int max=0) const
A parameter which will be fitted in the simulation.
ex gRR2(const Fermion &f1, const Fermion &f3) const
the same as gaussobs but with a different initializer, such that the uncertainty sigma is absolute ...
ex mesonmixing(ex mesonmass, const Fermion &f1, const Fermion &f2) const
void add(const char *s, ex pred, observable *ob, bool sb=0)
theoretical expression for an experimental measure
bool isvalid() const
checks if all the values are between their minimums and maximums
ex couplingR(const Fermion &f2, const Fermion &f1) const
Implementation of the BGL model.
double bsgammawidth(double tanb, double McH, double MR, double MI, int option=0)