-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy paththdm.c
132 lines (108 loc) · 4.9 KB
/
thdm.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#include "src/include.h"
#include "src/2hdmc.h"
#define USE_2HDMC
/*--------------------------------------------------------------------*/
/* Calculation of the observables, corresponding to a 2HDM point generated by 2HDMC */
/*--------------------------------------------------------------------*/
int main(int argc,char** argv)
{
char name[50];
double lambda1,lambda2,lambda3,lambda4,lambda5,lambda6,lambda7,m12_2,tanb,mA,delta0;
int type;
double obs[Nobs_BKsll+1];
if(argc<4)
{
printf(" This program needs 3 parameters:\n"
" type Yukawa type (1-4)\n"
" tanb tan(beta)\n"
" mA CP-odd Higgs mass\n");
printf(" Auxiliary parameters are:\n"
" lambda1...7 Higgs potential parameters (by default MSSM like)\n"
" m12^2 if set, mA is not used (otherwise MSSM like)\n");
exit(1);
}
else
{
sscanf(argv[1],"%d",&type);
sscanf(argv[2],"%lf",&tanb);
sscanf(argv[3],"%lf",&mA);
double g=6.51908e-1;
double gp=3.57458e-1;
if(argc>4) sscanf(argv[4],"%lf",&lambda1); else lambda1=(g*g+gp*gp)/4.;
if(argc>5) sscanf(argv[5],"%lf",&lambda2); else lambda2=lambda1;
if(argc>6) sscanf(argv[6],"%lf",&lambda3); else lambda3=(g*g-gp*gp)/4.;
if(argc>7) sscanf(argv[7],"%lf",&lambda4); else lambda4=-g*g/2.;
if(argc>8) sscanf(argv[8],"%lf",&lambda5); else lambda5=0.;
if(argc>9) sscanf(argv[9],"%lf",&lambda6); else lambda6=0.;
if(argc>10) sscanf(argv[10],"%lf",&lambda7); else lambda7=0.;
if(argc>11) sscanf(argv[11],"%lf",&m12_2); else m12_2=mA*mA*sin(2.*atan(tanb))/2.;
}
sprintf(name,"thdm%d.lha",getpid());
int filesOK=1;
#ifdef USE_2HDMC
if(!test_file(THDMC))
{
printf("\"%s\" absent. Please check the 2HDMC path or comment \"#define USE_2HDMC\" in thdm.c\n",THDMC);
filesOK=0;
}
#endif
if(!filesOK) return 1;
if(!test_file("tmp")) system("mkdir tmp");
chdir("tmp");
printf("\n");
printf("SuperIso v3.4 - F. Mahmoudi\n\n");
#ifdef USE_2HDMC
thdmc_types(lambda1,lambda2,lambda3,lambda4,lambda5,lambda6,lambda7,m12_2,tanb,type,name);
printf("THDM - SLHA file generated by 2HDMC\n\n");
delta0=delta0_calculator(name);
if(delta0 !=0.)
{
printf("Observable\t\t\tValue\n\n");
printf("BR(b->s gamma)\t\t\t%.3e\n",bsgamma_calculator(name));
printf("delta0(B->K* gamma)\t\t%.3e\n\n",delta0);
printf("BR(Bs->mu mu)\t\t\t%.3e\n",Bsmumu_calculator(name));
printf("BR(Bs->mu mu)_untag\t\t%.3e\n",Bsmumu_untag_calculator(name));
printf("BR(Bd->mu mu)\t\t\t%.3e\n\n",Bdmumu_calculator(name));
printf("BR(B->K* mu mu)_low\t\t%.3e\n",BRobs_BKstarmumu_lowq2_calculator(name,obs));
printf("AFB(B->K* mu mu)_low\t\t%.3e\n",obs[1]);
printf("FL(B->K* mu mu)_low\t\t%.3e\n",obs[2]);
printf("P1(B->K* mu mu)_low\t\t%.3e\n",obs[5]);
printf("P2(B->K* mu mu)_low\t\t%.3e\n",obs[14]);
printf("P4'(B->K* mu mu)_low\t\t%.3e\n",obs[17]);
printf("P5'(B->K* mu mu)_low\t\t%.3e\n",obs[18]);
printf("P6'(B->K* mu mu)_low\t\t%.3e\n",obs[19]);
printf("P8'(B->K* mu mu)_low\t\t%.3e\n",obs[21]);
printf("AI(B->K* mu mu)_low\t\t%.3e\n\n",AI_BKstarmumu_lowq2_calculator(name));
printf("BR(B->K* mu mu)_high\t\t%.3e\n",BRobs_BKstarmumu_highq2_calculator(name,obs));
printf("AFB(B->K* mu mu)_high\t\t%.3e\n",obs[1]);
printf("FL(B->K* mu mu)_high\t\t%.3e\n",obs[2]);
printf("P1(B->K* mu mu)_high\t\t%.3e\n",obs[5]);
printf("P2(B->K* mu mu)_high\t\t%.3e\n",obs[14]);
printf("P4'(B->K* mu mu)_high\t\t%.3e\n",obs[17]);
printf("P5'(B->K* mu mu)_high\t\t%.3e\n",obs[18]);
printf("P6'(B->K* mu mu)_high\t\t%.3e\n",obs[19]);
printf("P8'(B->K* mu mu)_high\t\t%.3e\n",obs[21]);
printf("AI(B->K* mu mu)_high\t\t%.3e\n\n",AI_BKstarmumu_highq2_calculator(name));
printf("q0^2(AFB(B->K* mu mu))\t\t%.3e\n",A_BKstarmumu_zero_calculator(name));
printf("q0^2(AI(B->K* mu mu))\t\t%.3e\n\n",AI_BKstarmumu_zero_calculator(name));
printf("BR(B->Xs mu mu)_low\t\t%.3e\n",BRBXsmumu_lowq2_calculator(name));
printf("BR(B->Xs mu mu)_high\t\t%.3e\n",BRBXsmumu_highq2_calculator(name));
printf("q0^2(AFB(B->Xs mu mu)\t\t%.3e\n",A_BXsmumu_zero_calculator(name));
printf("BR(B->Xs tau tau)_high\t\t%.3e\n\n",BRBXstautau_highq2_calculator(name));
printf("BR(B->tau nu)\t\t\t%.3e\n",Btaunu_calculator(name));
printf("R(B->tau nu)\t\t\t%.3e\n",RBtaunu_calculator(name));
printf("BR(B->D tau nu)\t\t\t%.3e\n",BDtaunu_calculator(name));
printf("BR(B->D tau nu)/BR(B->D e nu)\t%.3e\n",BDtaunu_BDenu_calculator(name));
printf("BR(Ds->tau nu)\t\t\t%.3e\n",Dstaunu_calculator(name));
printf("BR(Ds->mu nu)\t\t\t%.3e\n",Dsmunu_calculator(name));
printf("BR(D->mu nu)\t\t\t%.3e\n",Dmunu_calculator(name));
printf("BR(K->mu nu)/BR(pi->mu nu)\t%.3e\n",Kmunu_pimunu_calculator(name));
printf("Rmu23(K->mu nu)\t\t\t%.3e\n\n",Rmu23_calculator(name));
printf("a_muon\t\t\t\t%.3e\n\n",muon_gm2_calculator(name));
}
else printf("Invalid point\n\n");
#endif
sprintf(name,"rm -f thdm%d.lha",getpid());
system(name);
return 1;
}