static void fillNeutralinoMassMatrix(void) { int i,j,k; double M[5]; M[0]=findValW("MNE1"); M[1]=findValW("MNE2"); M[2]=findValW("MNE3"); M[3]=findValW("MNE4"); M[4]=findValW("MNE5"); for(i=0;i<5;i++) for(j=0;j<5;j++) for(k=0,NMassM[i][j]=0;k<5;k++) NMassM[i][j]+=Zn_[k][i]*M[k]*Zn_[k][j]; assignValW("NMM55", NMassM[4][4]); assignValW("NMM34", NMassM[2][3]); assignValW("NMM35", NMassM[2][4]); assignValW("NMM45", NMassM[3][4]); assignValW("NMM13", NMassM[0][2]); assignValW("NMM14", NMassM[0][3]); assignValW("NMM23", NMassM[1][2]); assignValW("NMM24", NMassM[1][3]); CharginoZM(); }
double UparC(int r) { if(findValW("SW")<=0) { if(read_prmU(r)) { puts("Error : Can not read one (or several) parameter(s) from UMSSMTools.par."); return 0; } } if(r>=0 && r<=362)return findValW(UPARFnames[r]); else {printf("Error : UPARF(%d) does not exist",r);return -1.;} }
int nmssmSUGRA(double m0,double mhf, double a0,double tb, double sgn, double Lambda, double aLambda, double aKappa) { int err; int del=getdelfilesstat_(); err=sugraLesH("inpsp.dat", m0,mhf,a0,tb, sgn,Lambda, aLambda, aKappa); if(err) return -1; err=runTools("nmspec","spectrsp.dat"); assignValW("Au",findValW("At")); assignValW("Ad",findValW("Ab")); if(del) system("rm -f inpsp.dat spectrsp.dat omegasp.dat decaysp.dat outsp.dat"); return err; }
double UparC(int r) { if(findValW("SW")<=0) { if(read_prmU(r)) { puts("Error : Can not read one (or several) parameter(s) from UMSSMTools.par."); return 0; } } if (r==303) return PDG_LSP; else if(r>=0 && r<=302)return findValW(UPARFnames[r]); //if additional higgses->sfermions functions are considered : else if(r>=0 && r<=363)return findValW(UPARFnames[r]); else {printf("Error : UPARF(%d) does not exist",r);return -1.;} }
int readVarSpecial(char *fname, int nVar, char ** names) { int * rdOn; double val; char name[80]; int n,i; rdOn=malloc(sizeof(int)*nVar); for(i=0;i<nVar;i++)rdOn[i]=0; FILE * f=fopen(fname,"r"); if(f==NULL) return -1; for(n=1;;n++) { if(fscanf(f,"%s",name)!=1) { n=0; break;} if(name[0]=='#') { fscanf(f,"%*[^\n]"); continue;} if(fscanf(f,"%lf",&val)!=1) break; fscanf(f,"%*[^\n]"); { int err; for(i=0;i<nVar;i++) if(strcmp(names[i],name)==0) {rdOn[i]=1;break;} if(i==nVar) break; err=assignVal(name,val); if(err==1) break; } } fclose(f); for(i=0;i<nVar;i++) if(rdOn[i]==0) printf("Parameter '%s' keeps default value %E\n", names[i],findValW(names[i])); free(rdOn); return n; }
char * nextOdd(int N,double * Mass) { int i,nn, *n; double * mass; if(N>=Nodd) return NULL; n=malloc(sizeof(int)*Nodd); mass=malloc(sizeof(double)*Nodd); for(i=0; i<Nodd; i++) { mass[i]=fabs(findValW(OddPrtcls[i].mass)); n[i]=i; } for(i=0;i<Nodd-1;) { int i1=i+1; if( mass[n[i]] > mass[n[i1]] ) { int k=n[i]; n[i]=n[i1]; n[i1]=k; if(i==0) i++; else i--; } else i++; } nn=n[N]; if(Mass) *Mass= mass[nn]; free(n); free(mass); return OddPrtcls[nn].name; }
int readVarMSSM(char * fname) { int rdCode; char*vlist[32]={ "alfEMZ","alfSMZ","SW","MZ","Ml","MbMb","Mtp","tb","MG1","MG2", "MG3","Am","Al","At","Ab","Au","Ad","MH3","mu","Ml2", "Ml3","Mr2","Mr3","Mq2","Mq3","Mu2","Mu3","Md2","Md3","wt", "wZ","wW"}; rdCode = readVarSpecial(fname,32,vlist); assignValW("Ml1",findValW("Ml2")); assignValW("Mr1",findValW("Mr2")); assignValW("Mq1",findValW("Mq2")); assignValW("Mu1",findValW("Mu2")); assignValW("Md1",findValW("Md2")); return rdCode; }
int HBblocks(char * fname) { FILE * f=fopen(fname,"w"); double tb,sb,cb,Q; if(!f) return 1; Q=findValW("Q"); fprintf(f,"Block Mass\n 25 %E # Higgs Mass\n\n",findValW("Mh")); slhaDecayPrint("h",f); slhaDecayPrint("t",f); slhaDecayPrint("~H+",f); // MbSM=findValW("Mb"); fprintf(f,"Block HiggsBoundsInputHiggsCouplingsBosons\n"); fprintf(f,"# Effective coupling normalised to SM one and squared\n"); fprintf(f,"# For (*) normalized on Sin(2*W)\n"); fprintf(f," %12.4E 3 25 24 24 # higgs-W-W \n", 1. ); fprintf(f," %12.4E 3 25 23 23 # higgs-Z-Z \n", 1. ); fprintf(f," %12.4E 3 25 25 23 # higgs-higgs-Z \n", 0. ); { assignVal("Q",pMass("h")); calcMainFunc(); fprintf(f," %12.4E 3 25 21 21 # higgs-gluon-gluon\n", 1. ); fprintf(f," %12.4E 3 25 22 22 # higgs-gamma-gamma\n", SQR(findValW("LAAh")/findValW("LAAhSM")) ); } fprintf(f,"Block HiggsBoundsInputHiggsCouplingsFermions\n"); fprintf(f,"# Effective coupling normalised to SM one and squared\n"); fprintf(f," %12.4E %12.4E 3 25 5 5 # higgs-b-b \n" ,1.,0.); fprintf(f," %12.4E %12.4E 3 25 6 6 # higgs-top-top \n",1.,0.); fprintf(f," %12.4E %12.4E 3 25 15 15 # higgs-tau-tau \n",1.,0.); assignValW("Q",Q); calcMainFunc(); fclose(f); return 0; }
void printMasses(FILE * f,int sort) { if(f==NULL) return; fprintf(f,"\nMasses of odd sector Particles:\n"); { int i,col; int *n=malloc(sizeof(int)*Nodd); int *nn=malloc(sizeof(int)*Nodd); double * mass=malloc(sizeof(double)*Nodd); int pow; for(pow=0,i=0; i<Nodd; i++) { double v=findValW(OddPrtcls[i].mass); mass[i]=fabs(v); n[pow]=i; nn[pow]=i; pow++; } if(pow>1) for(i=0;i<pow-1;) { int i1=i+1; if( mass[n[i]] > mass[n[i1]]) { int k=n[i]; n[i]=n[i1]; n[i1]=k; if(i==0) i++; else i--; } else i++; } for(col=0,i=0;i<pow;i++) { int k; if(sort)k=n[i];else k=nn[i]; fprintf(f,"%-4.4s : %-6.6s= %7.1f ", OddPrtcls[k].name, OddPrtcls[k].mass,mass[k]); col++; if(f) { if(col==1 || col==2) fprintf(f,"|| "); if(col==3) { col=0; fprintf(f,"\n");} } } fprintf(f,"\n"); free(n); free(nn); free(mass); } }
int readVarSpecial(char *fname, int nVar, char ** names) { int * rdOn; double val; char name[80]; int n,i,k; FILE*f; rdOn=malloc(sizeof(int)*nVar); for(i=0;i<nVar;i++)rdOn[i]=0; f=fopen(fname,"r"); if(f==NULL) return -1; for(n=1;;n++) { if(fscanf(f,"%s",name)!=1) { n=0; break;} if(name[0]=='#') { fscanf(f,"%*[^\n]"); continue;} if(fscanf(f,"%lf",&val)!=1) break; fscanf(f,"%*[^\n]"); { int err; for(i=0;i<nVar;i++) if(strcmp(names[i],name)==0) {rdOn[i]=1;break;} if(i==nVar) break; err=assignVal(name,val); if(err==1) break; } } fclose(f); for(i=0,k=0;i<nVar;i++) if(rdOn[i]==0) { if(!k){printf("The following parapeters keep default values:\n"); k=1;} { printf("%8.8s=%.4E", names[i],findValW(names[i])); if(k==4) {printf("\n");k=1;}else k++; } } if(k!=1) printf("\n"); free(rdOn); return n; }
int LiLithF(char*fname) { unsigned int i, npart=0; double tb, sb, cb, alpha, sa, ca, ta, samb, camb, dMb, MbHl, MbH, MbH3, MbSM; double CU, Cb, Ctau, CV, Cgamma, Cg; double Mcp=findValW("Mcp"), Mbp=findValW("Mbp"), Mtp=findValW("Mtp"); double LGGSM, LAASM; double vev = 2*findValW("MW")*findValW("SW")/findValW("EE"); FILE*f; tb=findValW("tB"); sb=tb/sqrt(1+tb*tb); cb=1/sqrt(1+tb*tb); alpha=findValW("alpha"); sa=sin(alpha); ca=cos(alpha); ta=sa/ca; samb=sa*cb-ca*sb; camb=ca*cb+sa*sb; dMb=findValW("dMb"); MbSM=findValW("Mb"); MbHl = MbSM/(1+dMb)*(1-dMb/ta/tb); MbH = MbSM/(1+dMb)*(1+dMb*ta/tb); MbH3 = MbSM/(1+dMb)*(1-dMb/tb/tb); // define Higgs states possibly contributing to the signal char *parts[3]={"h","H","H3"}; f=fopen(fname,"w"); fprintf(f, "<?xml version=\"1.0\"?>\n"); fprintf(f, "<lilithinput>\n"); for(i=0; i<3; i++) { double mass = pMass(parts[i]); if(mass < 123. || mass > 128.) { continue; } ++npart; // compute invisible and undetected branching ratios double invBR = 0., undBR = 0.; double w; txtList L; w=pWidth((char*)parts[i], &L); if(Mcdm1 < 0.5*mass) { char invdecay[50]; char cdmName[50]; // sortOddParticles(cdmName); strcpy(invdecay, CDM1); strcat(invdecay, ","); strcat(invdecay, CDM1); invBR = findBr(L, invdecay); } undBR = 1 - invBR - findBr(L, "b B") - findBr(L, "c C") - findBr(L, "l L") - findBr(L, "W+ W-") - findBr(L, "A A") - findBr(L, "Z Z") - findBr(L, "G G") - findBr(L, "m M") - findBr(L, "A Z") - findBr(L, "u U") - findBr(L, "d D") - findBr(L, "s S"); LGGSM=lGGhSM(mass, alphaQCD(mass)/M_PI, Mcp, Mbp, Mtp, vev); LAASM=lAAhSM(mass, alphaQCD(mass)/M_PI, Mcp, Mbp, Mtp, vev); if(strcmp(parts[i], "h") == 0) { CU = ca/sb; Cb = -(sa/cb)*(MbHl/MbSM); Ctau = -(sa/cb); CV = -samb; Cgamma = findValW("LAAh")/LAASM; Cg = findValW("LGGh")/LGGSM; } else if(strcmp(parts[i], "H") == 0) { CU = sa/sb; Cb = (ca/cb)*(MbH/MbSM); Ctau = ca/cb; CV = camb; Cgamma = findValW("LAAH")/LAASM; Cg = findValW("LGGH")/LGGSM; } else { // for H3 (i.e. A) CU = 1./tb; Cb = tb*(MbH3/MbSM); Ctau = tb; CV = 0.; Cgamma = 0.5*findValW("LAAH3")/LAASM; Cg = 0.5*findValW("LGGH3")/LGGSM; } fprintf(f, " <reducedcouplings part=\"%s\">\n", parts[i]); fprintf(f, " <mass>%f</mass>\n", mass); fprintf(f, " <C to=\"uu\">%f</C>\n", CU); fprintf(f, " <C to=\"bb\">%f</C>\n", Cb); fprintf(f, " <C to=\"mumu\">%f</C>\n", Ctau); fprintf(f, " <C to=\"tautau\">%f</C>\n", Ctau); fprintf(f, " <C to=\"VV\">%f</C>\n", CV); fprintf(f, " <C to=\"gammagamma\">%f</C>\n", Cgamma); fprintf(f, " <C to=\"gg\">%f</C>\n", Cg); // fprintf(f, " <C to=\"Zgamma\">%f</C>\n", 1.); fprintf(f, " <precision>%s</precision>\n", "BEST-QCD"); fprintf(f, " <extraBR>\n"); fprintf(f, " <BR to=\"invisible\">%f</BR>\n", invBR); fprintf(f, " <BR to=\"undetected\">%f</BR>\n", undBR); fprintf(f, " </extraBR>\n"); fprintf(f, " </reducedcouplings>\n"); } fprintf(f, "</lilithinput>\n"); fclose(f); return npart; }
int masslimits_(void) { double tb,c2b,mc1,msne,msnm,msnl,mstau1,mn1,msel,mser,mse1,msmul,msmur,msmu1,Mh,Mhh; double mst1,msb1,msul,msur,msdl,msdr; int retcode=0; int limCharg=0,limSne=0,limSnm=0,limSnl=0,limSeR=0,limSmR=0 ,limSl1=0,limh=0,limSb1=0,limSt1=0,limSq=0; if(findVal("MNE1",&mn1)) return -1; mn1=fabs(mn1); if(findVal("MC1",&mc1)) return -1; mc1=fabs(mc1); if(findVal("tB",&tb)) return -1; c2b=(1-tb*tb)/(1+tb*tb); if(findVal("MSeL",&msel)) return -1; msel=fabs(msel); if(findVal("MSeR",&mser)) return -1; mser=fabs(mser); /* mse1=(msel<mser)? msel:mser; */ mse1=mser; if(findVal("MSne",&msne)) return -1; msne=fabs(msne); if(findVal("MSnm",&msnm)) return -1; msnm=fabs(msnm); if(findVal("MSnl",&msnl)) return -1; msnl=fabs(msnl); if(findVal("MSmL",&msmul))return -1; msmul=fabs(msmul); if(findVal("MSmR",&msmur))return -1; msmur=fabs(msmur); /* msmu1=(msmul<msmur)? msmul:msmur;*/ msmu1=msmur; if(findVal("MSl1",&mstau1))return -1;mstau1=fabs(mstau1); if(findVal("MSt1",&mst1)) return -1; mst1=fabs(mst1); if(findVal("MSb1",&msb1)) return -1; msb1=fabs(msb1); if(findVal("MSuL",&msul)) return -1; msul=fabs(msul); if(findVal("MSuR",&msur)) return -1; msur=fabs(msur); if(findVal("MSdL",&msdl)) return -1; msdl=fabs(msdl); if(findVal("MSdR",&msdr)) return -1; msdr=fabs(msdr); Mh=findValW("Mh"); Mhh=findValW("MH"); if(Mh>128) limh=1; if(Mh<123&&Mhh>128) limh=1; if(Mh<123&&Mhh<123) limh=1; if(mc1-mn1>60.) {if((msne>43. &&msne<55. &&mc1<89.5) || (msne>55. &&msne<65. &&mc1<80.) || (msne>65. &&msne<75. &&mc1<74.4) || (msne>75. &&msne<85. &&mc1<73.1) || (msne>85. &&msne<95. &&mc1<73.6) || (msne>95. &&msne<105.&&mc1<75.1) || (msne>105.&&msne<115.&&mc1<76.9) || (msne>115.&&msne<125.&&mc1<80.1) || (msne>125.&&msne<135.&&mc1<83.14) || (msne>135.&&msne<145.&&mc1<85.37) || (msne>145.&&msne<155.&&mc1<88.4) || (msne>155.&&msne<165.&&mc1<91.04) || (msne>165.&&msne<175.&&mc1<92.4) || (msne>175.&&msne<185.&&mc1<94.7) || (msne>185.&&msne<195.&&mc1<95.5) || (msne>195.&&msne<205.&&mc1<96.4) || (msne>205.&&msne<275.&&mc1<99.4) || (msne>275.&&msne<325.&&mc1<100.5) || (msne>325.&&msne<375.&&mc1<101) || (msne>375.&&msne<425.&&mc1<101.2) || (msne>425.&&mc1<101.5) ) limCharg=1; } if(mc1-mn1<60.0) {/*if(msne<45.) return 2;*/ if((msne>43. &&msne<55. &&mc1<101.) || (msne>55. &&msne<65. &&mc1<98.) || (msne>65. &&msne<75. &&mc1<95.) || (msne>75. &&msne<85. &&mc1<91.) || (msne>85. &&msne<95. &&mc1<90.) || (msne>95. &&msne<105.&&mc1<92.) || (msne>105.&&msne<115.&&mc1<93.) || (msne>115.&&msne<125.&&mc1<96.) || (msne>125.&&msne<135.&&mc1<97.) || (msne>135.&&msne<145.&&mc1<99.) || (msne>145.&&msne<155.&&mc1<100.) || (msne>155.&&msne<165.&&mc1<101.) || (msne>165.&&msne<175.&&mc1<101.) || (msne>175.&&msne<225.&&mc1<101.) || (msne>225.&&msne<275.&&mc1<102.) || (msne>275.&&msne<325.&&mc1<102.5) || (msne>325.&&msne<375.&&mc1<102.9) || (msne>375.&&mc1<103.) ) limCharg=1; } if(msne<43.0) limSne=1; if(msnm<43.0) limSnm=1; if(msnl<43.0) limSnl=1; if(mse1<99.4 &&mn1>40.) limSeR=1; if(mse1<100.5&&mn1<40.) limSeR=1; if(msmu1<95.0) limSmR=1; if(msul<40.0) limSq=1; if(msur<40.0) limSq=1; if(msdl<40.0) limSq=1; if(msdr<40.0) limSq=1; if(mst1<63.0) limSt1=1; if(msb1<89 && msb1-mn1>8.0) limSb1=1; /* These limits are valid only if Mstau-mn1> 3GeV*/ if((mstau1 < 80.5&& mn1<10.) || (mstau1 < 82. && mn1>10.&& mn1<20.) || (mstau1 < 84. && mn1>20.&& mn1<30.) || (mstau1 < 85. && mn1>30.&& mn1<40.) || (mstau1 < 87.1&& mn1>40.&& mn1<50.) || (mstau1 < 88. && mn1>50.&& mn1<60.) || (mstau1 < 85. && mn1>60.&& mn1<75.) ) limSl1=1; if(limCharg){retcode+=1; printf("WARNING: Chargino below LEP limit \n");} if(limSne) {retcode+=2; printf("WARNING: Sneutrino-e below LEP limit \n");} if(limSnm) {retcode+=4; printf("WARNING: Sneutrino-mu below LEP limit \n");} if(limSnl) {retcode+=8; printf("WARNING: Sneutrino-tau below LEP limit \n");} if(limSeR) {retcode+=16; printf("WARNING: Selectron-R below LEP limit \n");} if(limSmR) {retcode+=32; printf("WARNING: Smuon-R below LEP limit \n");} if(limSl1) {retcode+=64; printf("WARNING: Stau1 below LEP limit \n");} if(limh) {retcode+=128; printf("WARNING: there is no Higgs particle with a mass between 123-128GeV\n");} if(limSt1) {retcode+=256; printf("WARNING: Stop1 below LEP limit \n");} if(limSb1) {retcode+=512; printf("WARNING: Sbot1 below LEP limit \n");} if(limSq) {retcode+=1024;printf("WARNING: Squarks below LEP limit \n");} return retcode; }
double btaunu_(double *M, double *P) { *M= findValW("Bln" "M"); *P= findValW("Bln" "P"); return findValW("Bln" "0"); }
int MSSMDDtest(int loop, double*pA0,double*pA5,double*nA0,double*nA5) { double ApB[2][7],AmB[2][7],MI[2][2][7],NL[5],T3Q[2],EQ[2],mq[7],mqSM[7], msq[2][7],Aq[7]; double mh,mH,ca,sa,mu; double o1o1h,o1o1H,SQM[2][2][2][2],capb,sapb,w2s3,w4s3; char buffName[10]; char * ZqNames[6]={"Zdd" ,"Zuu" ,"Zss", "Zcc", "Zb", "Zt"}; char * MS1mass[6]={"MSdL","MSuL","MSsL","MScL","MSb1","MSt1"}; char * MS2mass[6]={"MSdR","MSuR","MSsR","MScR","MSb2","MSt2"}; char * AqNames[6]={"Ad","Au", "Ad","Au","Ab","At"}; char mess[10]; double ALPE,SW,CW,MW,MZ,E,G,mne,beta,sb,cb,s; int i,II,IQ,i1,i2; double Ampl0,Ampl2; double MN=0.939; double MqPole[7]={0,0,0,0,1.67,4.78,173.}; double qcdNLO,qcdNLOs; double wS0P__[6],wS0N__[6]; /*scalar */ double wV5P__[3],wV5N__[3]; /*pseudo-vector*/ for(i=0;i<3;i++) { wS0P__[i]= *(&(ScalarFFPd)+i); wS0N__[i]= *(&(ScalarFFNd)+i); wV5P__[i]= *(&(pVectorFFPd)+i); wV5N__[i]= *(&(pVectorFFNd)+i); } for(s=0,i=0;i<3;i++) s+= wS0P__[i]; for(s=2./27.*(1-s),i=3;i<6;i++)wS0P__[i]=s; for(s=0,i=0;i<3;i++) s+= wS0N__[i]; for(s=2./27.*(1-s),i=3;i<6;i++)wS0N__[i]=s; *pA0=0,*pA5=0,*nA0=0,*nA5=0; if(sortOddParticles(mess)) return 0; if(strcmp(mess,"~o1")!=0) { printf("qbox returns 0 because WINP is not ~o1\n"); return 0;} /*ccccccccccccccccccc CONSTANTS ccccccc*/ ALPE=1/127.994; SW=findValW("SW"); CW=sqrt(1.-SW*SW); MZ=findValW("MZ"); MW=MZ*CW; E=sqrt(4*M_PI*ALPE); G =E/SW; mne=fabs(findValW("MNE1")); /*=======*/ beta=atan(findValW("tB")); sb=sin(beta); cb=cos(beta); mu=findValW("mu"); /*======== Quark,SQUARK masses and mixing ======*/ for(IQ=1;IQ<=6;IQ++) { mqSM[IQ]= pMass(pdg2name(IQ)); mq[IQ]= mqSM[IQ]; msq[0][IQ]=findValW(MS1mass[IQ-1]); msq[1][IQ]=findValW(MS2mass[IQ-1]); for(i1=0;i1<2;i1++) for(i2=0;i2<2;i2++) { sprintf(buffName,"%s%d%d", ZqNames[IQ-1],i1+1,i2+1); MI[i1][i2][IQ]=findValW(buffName); } Aq[IQ]=findValW(AqNames[IQ-1]); } mq[1]/=1+deltaMd(); mq[3]/=1+deltaMd(); mq[5]/=1+deltaMb(); for(i=1;i<=4;i++){sprintf(buffName,"Zn1%d",i); NL[i]=findValW(buffName);} T3Q[0]=0.5; EQ[0]=2/3.; T3Q[1]=-0.5; EQ[1]=-1/3.; for(IQ=1;IQ<=6;IQ++) for( II=0;II<2;II++) { double X,Y,Z,A,B; X=-(T3Q[IQ&1]*NL[2]+SW/CW*NL[1]/6); Y=SW/CW*EQ[IQ&1]*NL[1]; Z= -0.5*( (IQ&1)? mq[IQ]*NL[3]/cb: mq[IQ]*NL[4]/sb )/MW; A= G*(MI[II][0][IQ]*(X+Z)+MI[II][1][IQ]*(Y+Z)); B= G*(MI[II][0][IQ]*(X-Z)+MI[II][1][IQ]*(-Y+Z)); ApB[II][IQ] =(A*A+B*B)/2; AmB[II][IQ] =(A-B)*(A+B)/2; /* Normalized like in D&N */ } /* Higgs sector */ mh=findValW("Mh"); mH=findValW("MH"); sa=findValW("sa"); ca=findValW("ca"); o1o1h= E*(ca*NL[4]+sa*NL[3])*(CW*NL[2]-SW*NL[1])/CW/SW; o1o1H=-E*(ca*NL[3]-sa*NL[4])*(CW*NL[2]-SW*NL[1])/CW/SW; /*====================================================================== */ /*========= STARTING OF SUMMATION OF DIFFERENT CONTRIBUTIONS =========== */ /*================= THE SD AMPLITUDED ================= */ /****** light squarks SD contribution */ for(IQ=1;IQ<=3;IQ++) for(II=0;II<2;II++) { double D=SQ(msq[II][IQ])-SQ(mne)-SQ(mqSM[IQ]); double D2=D*D-SQ(2*mne*mqSM[IQ]); double f=sqrt(3.)*0.25*ApB[II][IQ]*D/D2; *pA5+=f*wV5P__[IQ-1]; *nA5+=f*wV5N__[IQ-1]; } /****** Z SD contribution */ for(IQ=1;IQ<=3;IQ++) { double f=sqrt(3.)*0.5*(SQ(NL[4])-SQ(NL[3]))*SQ(G/2/MW)*T3Q[IQ&1]; *pA5+=f*wV5P__[IQ-1]; *nA5+=f*wV5N__[IQ-1]; } *pA5/=sqrt(3); *nA5/=sqrt(3); /*================= THE SI AMPLITUDED =================*/ /****** light quarks-squarks SI contribution (plus heavy squarks at tree level)*/ for(IQ=1;IQ<=(loop? 3:6);IQ++) for(II=0;II<2;II++) { double g,f,D,D2; qcdNLO=qcdNLOs=1; if(QCDcorrections) { double alphaMq; if(IQ>3) { double alphaMq; switch(IQ) { case 4: alphaMq=0.39;break; case 5: alphaMq=0.22;break; default:alphaMq=parton_alpha(mqSM[IQ]); } qcdNLO=1+(11./4.-16./9.)*alphaMq/M_PI; } qcdNLOs=1+(25./6.-16./9.)*parton_alpha(msq[II][IQ])/M_PI; } /* q,~o1 reaction */ D=SQ(msq[II][IQ])-SQ(mne)-SQ(mqSM[IQ]); D2=D*D-SQ(2*mne*mqSM[IQ]); g=-0.25*ApB[II][IQ]/D2; f=-0.25*AmB[II][IQ]*D/D2; if(!Twist2On) g*=4; *pA0+= (f/mqSM[IQ]-g*mne/2)* MN*wS0P__[IQ-1]*qcdNLO; *nA0+= (f/mqSM[IQ]-g*mne/2)* MN*wS0N__[IQ-1]*qcdNLO; /****** squarks from nucleon (~q,~o1 reaction)*/ D=-SQ(msq[II][IQ])-SQ(mne)+SQ(mqSM[IQ]), D2=D*D-SQ(2*mne*msq[II][IQ]); g=mqSM[IQ]*AmB[II][IQ]*D/D2; f=mne*ApB[II][IQ]*(SQ(msq[II][IQ])-SQ(mne)+SQ(mqSM[IQ]))/D2; *pA0+=(f+g)/SQ(msq[II][IQ])*MN*wS0P__[5]/8*qcdNLOs ; *nA0+=(f+g)/SQ(msq[II][IQ])*MN*wS0N__[5]/8*qcdNLOs ; if(Twist2On && IQ!=6) { double D,g; int IQn; qcdNLO=1; switch(IQ) { case 1: IQn=2;break; case 2: IQn=1;break; default: IQn=IQ; } D=SQ(msq[II][IQ])-SQ(mne)-SQ(mqSM[IQ]); g=-0.25*ApB[II][IQ]/(D*D-4*mne*mne*mqSM[IQ]*mqSM[IQ]); *pA0-=1.5*g*mne*MN*parton_x(IQ, msq[II][IQ]-mne); *nA0-=1.5*g*mne*MN*parton_x(IQn,msq[II][IQ]-mne); } } /****** Heavy squarks in case of loops */ if(loop)for(IQ=4;IQ<=6;IQ++) for(II=0;II<2;II++) { double f,g,bd,b1d,bs,b1s,b2s; if(QCDcorrections ) { double alphaMq; switch(IQ) { case 4: alphaMq=0.39;break; case 5: alphaMq=0.22;break; default:alphaMq=parton_alpha(mqSM[IQ]); } qcdNLO=1+(11./4.-16./9.)*alphaMq/M_PI; } else qcdNLO=1; bd = AmB[II][IQ]*mqSM[IQ]*LintIk(1,msq[II][IQ],mqSM[IQ],mne)*3/8.; b1d = AmB[II][IQ]*mqSM[IQ]*LintIk(3,msq[II][IQ],mqSM[IQ],mne); bs =ApB[II][IQ]*mne *LintIk(2,msq[II][IQ],mqSM[IQ],mne)*3/8.; b1s =ApB[II][IQ]*mne *LintIk(4,msq[II][IQ],mqSM[IQ],mne); b2s =ApB[II][IQ] *LintIk(5,msq[II][IQ],MqPole[IQ],mne)/4.; f=-(bd+bs-mne*b2s/2-mne*mne*(b1d+b1s)/4); *pA0+=f*MN*wS0P__[IQ-1]*qcdNLO; *nA0+=f*MN*wS0N__[IQ-1]*qcdNLO; if(Twist2On) { double Ampl2; Ampl2=parton_alpha(mqSM[IQ])/(12*M_PI)*(b2s+mne*(b1s+b1d)/2)*parton_x(21,MqPole[IQ]); *pA0+=1.5*Ampl2*mne*MN; *nA0+=1.5*Ampl2*mne*MN; } } /****** higgs-quark-anitiquark */ for(IQ=1;IQ<=6;IQ++) { double fh,fH; if(QCDcorrections && IQ>3) { double alphaMq; switch(IQ) { case 4: alphaMq=0.39;break; case 5: alphaMq=0.22;break; default:alphaMq=parton_alpha(mqSM[IQ]); } qcdNLO=1+(11/4.-16./9.)*alphaMq/M_PI; } else qcdNLO=1; if(IQ&1) { double dMq=mqSM[IQ]/mq[IQ]-1; fh=o1o1h*E*sa*mq[IQ]*(1-dMq*ca*cb/sa/sb)/(2*MW*cb*SW); fH=-o1o1H*E*ca*mq[IQ]*(1+dMq*sa*cb/ca/sb)/(2*MW*cb*SW); } else { fh=-o1o1h*E*ca*mq[IQ]/(2*MW*sb*SW); fH=-o1o1H*E*sa*mq[IQ]/(2*MW*sb*SW); } *pA0+=0.5*(fh/(mh*mh)+fH/(mH*mH))/mqSM[IQ]*MN*wS0P__[IQ-1]*qcdNLO; *nA0+=0.5*(fh/(mh*mh)+fH/(mH*mH))/mqSM[IQ]*MN*wS0N__[IQ-1]*qcdNLO; } /****** higgs squark-antisquark */ capb=ca*cb-sa*sb; sapb=sa*cb+ca*sb; w4s3=4*SW*SW-3; w2s3=2*SW*SW-3; #define h 0 #define H 1 #define L 0 #define R 1 #define U 0 #define D 1 SQM[h][L][L][U]= sapb/SW*(-w4s3/2); SQM[h][L][L][D]= sapb/SW*( w2s3/2); SQM[h][R][R][U]= sapb*SW*( 2); SQM[h][R][R][D]= sapb*SW*(-1); SQM[H][L][L][U]= capb/SW*( w4s3/2); SQM[H][L][L][D]= capb/SW*(-w2s3/2); SQM[H][R][R][U]= capb*SW*(-2); SQM[H][R][R][D]= capb*SW*( 1); SQM[h][L][R][U]=SQM[h][R][L][U]=0; SQM[h][L][R][D]=SQM[h][R][L][D]=0; SQM[H][L][R][U]=SQM[H][R][L][U]=0; SQM[H][L][R][D]=SQM[H][R][L][D]=0; for(IQ=1;IQ<=6;IQ++)for(II=0;II<2;II++) { double fh,fH; int i,j; if(QCDcorrections)qcdNLOs=1+(25./6.-16./9.)*parton_alpha(msq[II][IQ])/M_PI; else qcdNLOs=1; for(fh=0,fH=0,i=0;i<2;i++)for(j=0;j<2;j++) { double dSQMh,dSQMH; double b=-T3Q[IQ&1]+0.5, t= T3Q[IQ&1]+0.5; if(i==j) { dSQMh=( ca*t - sa*b )*3*SQ(mq[IQ]*CW/MW)/SW; dSQMH=( sa*t + ca*b )*3*SQ(mq[IQ]*CW/MW)/SW; } else { dSQMh=( (ca*Aq[IQ]+mu*sa)*t - (sa*Aq[IQ]+mu*ca)*b )*1.5*mq[IQ]*SQ(CW/MW)/SW; dSQMH=( (sa*Aq[IQ]-mu*ca)*t + (ca*Aq[IQ]-mu*sa)*b )*1.5*mq[IQ]*SQ(CW/MW)/SW; } if(IQ&1) {dSQMh/=cb;dSQMH/=cb;} else {dSQMh/=sb;dSQMH/=sb;} fh+=(SQM[h][i][j][IQ&1]-dSQMh)*MI[II][i][IQ]*MI[II][j][IQ]; fH+=(SQM[H][i][j][IQ&1]-dSQMH)*MI[II][i][IQ]*MI[II][j][IQ]; } fh*=o1o1h*E*MW/(3*CW*CW); fH*=o1o1H*E*MW/(3*CW*CW); *pA0+=(fh/(mh*mh)+fH/(mH*mH))/(2*msq[II][IQ]*msq[II][IQ])*MN*wS0P__[5]/8*qcdNLOs; *nA0+=(fh/(mh*mh)+fH/(mH*mH))/(2*msq[II][IQ]*msq[II][IQ])*MN*wS0N__[5]/8*qcdNLOs; } }
double findvalw_(char*f_name, int len) /*FORTRAN*/ { char c_name[20]; fName2c(f_name,c_name,len); return findValW(c_name); }
int LilithMDL(char*fname) { unsigned int i, npart=0; double CU, Cb, Cl, CU5, Cb5, Cl5, CV,Cgamma, Cg; double Mcp=findValW("Mcp"), Mbp=findValW("Mbp"), Mtp=findValW("Mtp"); double vev = 2*findValW("MW")*findValW("SW")/findValW("EE"); FILE*f; char *parts[3]={"h1","h2","h3"}; int hPdgn[3]={25,35,36}; f=fopen(fname,"w"); fprintf(f, "<?xml version=\"1.0\"?>\n"); fprintf(f, "<lilithinput>\n"); for(i=0; i<3; i++) { double mass = pMass(parts[i]); if(mass < 123 || mass > 128) continue; ++npart; // compute invisible and undetected branching ratios double invBR = 0., undBR = 0.; double w; char format[100]; txtList L; w=pWidth((char*)parts[i], &L); if(Mcdm1 < 0.5*mass) { char invdecay[50]; char cdmName[50]; // sortOddParticles(cdmName); strcpy(invdecay, CDM1); strcat(invdecay, ","); strcat(invdecay, CDM1); invBR = findBr(L, invdecay); } undBR = 1 - invBR - findBr(L, "b B") - findBr(L, "c C") - findBr(L, "l L") - findBr(L, "W+ W-") - findBr(L, "A A") - findBr(L, "Z Z") - findBr(L, "G G") - findBr(L, "m M") - findBr(L, "A Z") - findBr(L, "u U") - findBr(L, "d D") - findBr(L, "s S"); sprintf(format,"%%lf %%*f 3 %d 6 6", hPdgn[i]); CU= slhaValFormat("LiLithInputHiggsCouplingsFermions",0.,format); sprintf(format,"%%*f %%lf 3 %d 6 6", hPdgn[i]); CU5= slhaValFormat("LiLithInputHiggsCouplingsFermions",0.,format); sprintf(format,"%%lf %%*f 3 %d 5 5", hPdgn[i]); Cb= slhaValFormat("LiLithInputHiggsCouplingsFermions",0.,format); sprintf(format,"%%*f %%lf 3 %d 5 5", hPdgn[i]); Cb5= slhaValFormat("LiLithInputHiggsCouplingsFermions",0.,format); sprintf(format,"%%lf %%*f 3 %d 15 15", hPdgn[i]); Cl= slhaValFormat("LiLithInputHiggsCouplingsFermions",0.,format); sprintf(format,"%%*f %%lf 3 %d 15 15", hPdgn[i]); Cl5= slhaValFormat("LiLithInputHiggsCouplingsFermions",0.,format); sprintf(format,"%%lf 3 %d 24 24", hPdgn[i]); CV= slhaValFormat("LiLithInputHiggsCouplingsBosons",0.,format); sprintf(format,"%%lf 3 %d 21 21", hPdgn[i]); Cg= slhaValFormat("LiLithInputHiggsCouplingsBosons",0.,format); // sprintf(format,"%%lf 3 %d 22 22", hPdgn[i]); // Cgamma= slhaValFormat("LiLithInputHiggsCouplingsBosons",0.,format); char LaTxt[20]; double LaV,LaV5,LaSM; sprintf(LaTxt,"LAA%s",parts[i]); LaV=findValW(LaTxt); sprintf(LaTxt,"imLAA%s",parts[i]); LaV5=findValW(LaTxt); Cgamma=-sqrt(LaV*LaV+4*LaV5*LaV5)/lAAhSM(mass,alphaQCD(mass)/M_PI, Mcp,Mbp,Mtp,vev); fprintf(f, " <reducedcouplings part=\"%s\">\n", parts[i]); fprintf(f, " <mass>%f</mass>\n", mass); fprintf(f, " <C to=\"uu\" part=\"re\"> %f</C>\n", CU); fprintf(f, " <C to=\"uu\" part=\"im\"> %f</C>\n", CU5); fprintf(f, " <C to=\"bb\" part=\"re\">%f</C>\n", Cb); fprintf(f, " <C to=\"bb\" part=\"im\">%f</C>\n", Cb5); fprintf(f, " <C to=\"mumu\" part=\"re\">%f</C>\n", Cl); fprintf(f, " <C to=\"mumu\" part=\"im\">%f</C>\n", Cl5); fprintf(f, " <C to=\"tautau\" part=\"re\">%f</C>\n", Cl); fprintf(f, " <C to=\"tautau\" part=\"im\">%f</C>\n", Cl5); fprintf(f, " <C to=\"VV\">%f</C>\n", CV); fprintf(f, " <C to=\"gammagamma\">%f</C>\n", Cgamma); fprintf(f, " <C to=\"gg\">%f</C>\n", Cg); // fprintf(f, " <C to=\"Zgamma\">%f</C>\n", 1.); fprintf(f, " <precision>%s</precision>\n", "LO"); fprintf(f, " <extraBR>\n"); fprintf(f, " <BR to=\"invisible\">%f</BR>\n", invBR); fprintf(f, " <BR to=\"undetected\">%f</BR>\n", undBR); fprintf(f, " </extraBR>\n"); fprintf(f, " </reducedcouplings>\n"); } fprintf(f, "</lilithinput>\n"); fclose(f); return npart; }
int hbBlocksMDL(char*fname,int*nHch) { FILE * f=fopen(fname,"w"); double tb,sb,cb,Q; if(!f) return 0; Q=findValW("Q"); fprintf(f,"Block Mass\n 25 %E # Higgs Mass\n\n",findValW("Mh")); slhaDecayPrint("h", 0,f); slhaDecayPrint("t", 0,f); slhaDecayPrint("~H+",0,f); // MbSM=findValW("Mb"); fprintf(f,"Block HiggsBoundsInputHiggsCouplingsBosons\n"); fprintf(f,"# Effective coupling normalised to SM one and squared\n"); fprintf(f,"# For (*) normalized on Sin(2*W)\n"); fprintf(f," %12.4E 3 25 24 24 # higgs-W-W \n", 1. ); fprintf(f," %12.4E 3 25 23 23 # higgs-Z-Z \n", 1. ); fprintf(f," %12.4E 3 25 25 23 # higgs-higgs-Z \n", 0. ); { double vev = findValW("V"), Mh = findValW("Mh"), aQCD=alphaQCD(Mh)/M_PI, LGGSM=lGGhSM(Mh,aQCD, findValW("Mcp"),findValW("Mbp"),findValW("Mtp"),vev), LAASM=lAAhSM(Mh,aQCD, findValW("Mcp"),findValW("Mbp"),findValW("Mtp"),vev); fprintf(f," %12.4E 3 25 21 21 # higgs-gluon-gluon\n", 1. ); fprintf(f," %12.4E 3 25 22 22 # higgs-gamma-gamma\n", SQR(findValW("LAAh")/LAASM) ); } fprintf(f,"Block HiggsBoundsInputHiggsCouplingsFermions\n"); fprintf(f,"# Effective coupling normalised to SM one and squared\n"); fprintf(f," %12.4E %12.4E 3 25 5 5 # higgs-b-b \n" ,1.,0.); fprintf(f," %12.4E %12.4E 3 25 6 6 # higgs-top-top \n",1.,0.); fprintf(f," %12.4E %12.4E 3 25 15 15 # higgs-tau-tau \n",1.,0.); assignValW("Q",Q); calcMainFunc(); fclose(f); if(nHch) *nHch=1; return 1; }
void smodels(double Pcm, int nf,double csMinFb, char*fileName,int wrt) { int SMP[16]={1,2,3,4,5,6, 11,12,13,14,15,16, 21,22,23,24}; int i,j; FILE*f=fopen(fileName,"w"); int np=0; char**plist=NULL; int smH=-1; char* gluname=NULL; char* phname=NULL; char* bname=NULL; char* Bname=NULL; char* lname=NULL; char* Lname=NULL; // find SM Higgs for(i=0;i<nModelParticles;i++) { if(ModelPrtcls[i].NPDG== 21) gluname=ModelPrtcls[i].name; if(ModelPrtcls[i].NPDG== 22) phname=ModelPrtcls[i].name; if(ModelPrtcls[i].NPDG== 5) { bname=ModelPrtcls[i].name; Bname=ModelPrtcls[i].aname;} if(ModelPrtcls[i].NPDG== -5) { bname=ModelPrtcls[i].aname; Bname=ModelPrtcls[i].name; } if(ModelPrtcls[i].NPDG== 15) { lname=ModelPrtcls[i].name; Lname=ModelPrtcls[i].aname;} if(ModelPrtcls[i].NPDG==-15) { Lname=ModelPrtcls[i].aname; lname=ModelPrtcls[i].name; } } //printf("gluname %s bname %s lname %s\n", gluname,bname,lname); if(gluname && bname && lname) for(smH=0;smH<nModelParticles;smH++) if( ModelPrtcls[smH].spin2==0 && ModelPrtcls[smH].cdim==1 && ModelPrtcls[smH].name[0]!='~' && strcmp(ModelPrtcls[smH].name,ModelPrtcls[smH].aname)==0 ) { double w,ggBr,bbBr,llBr, hMass=pMass(ModelPrtcls[smH].name); txtList L; double ggBrSM=0.073, bbBrSM=0.60,llBrSM=0.063,wSM=4.24E-3; double prec=0.9; char chan[50]; if(hMass<123 || hMass>128) continue; w=pWidth(ModelPrtcls[smH].name,&L); sprintf(chan,"%s,%s",gluname,gluname); ggBr=findBr(L, chan); sprintf(chan,"%s,%s",lname,Lname); llBr=findBr(L, chan); sprintf(chan,"%s,%s",bname,Bname); bbBr=findBr(L, chan); if(ggBr==0) { bbBr*=w/(w+0.073*0.00424); llBr*=w/(w+ggBrSM*wSM);} if( bbBrSM*prec< bbBr && bbBr<bbBrSM*(2-prec) && llBrSM*prec< llBr && llBr<llBrSM*(2-prec)) break; } if(smH<nModelParticles) printf("SM HIGGS=%s\n",ModelPrtcls[smH].name); else printf("NO SM-like HIGGS in the model\n"); fprintf(f,"BLOCK MASS\n"); for(i=0;i<nModelParticles;i++) if(pMass(ModelPrtcls[i].name) <Pcm) { for(j=0;j<16;j++) if(abs(ModelPrtcls[i].NPDG)==SMP[j]) break; if(j==16 ) { np++; plist=realloc(plist,np*sizeof(char*)); plist[np-1]=ModelPrtcls[i].name; if(strcmp(ModelPrtcls[i].name,ModelPrtcls[i].aname)) { np++; plist=realloc(plist,np*sizeof(char*)); plist[np-1]=ModelPrtcls[i].aname; } fprintf(f," %d %E # %s \n",ModelPrtcls[i].NPDG,findValW(ModelPrtcls[i].mass),ModelPrtcls[i].name); } } fprintf(f,"\n"); for(i=0;i<nModelParticles;i++) { for(j=0;j<16;j++) if(ModelPrtcls[i].NPDG==SMP[j]) break; if(j==16) slhaDecayPrint(ModelPrtcls[i].name,1,f); } for(i=0;i<np;i++) for(j=i;j<np;j++) if(pMass(plist[i])+pMass(plist[j])<Pcm) if(plist[i][0]=='~' && plist[j][0]=='~') { int q31,q32,q3,c1,c2; qNumbers(plist[i], NULL, &q31,&c1); qNumbers(plist[j], NULL, &q32,&c2); q3=q31+q32; if(q3<0) { q3*=-1; if(abs(c1)==3) c1*=-1; if(abs(c2)==3) c2*=-1;} if(c1>c2){ int c=c1; c1=c2;c2=c;} if ( (c2==1 || (c1==1 && c2==8) || (c1==-3 && c2==3) || (c1==8 && c2==8) ) && (q3!=0 && q3 !=3) ) continue; if ( ((c1==-3 && c2== 3)||(c1== 1 && c2== 1)|| (c1== 8 && c2== 8)||(c1== 1 && c2== 8)) && (q3!=0 && q3!=3) ) continue; if ( ((c1== 3 && c2== 8)||(c1== 1 && c2== 3)) && (q3!=2) ) continue; if ( ((c1==-3 && c2== 8)||(c1==-3 && c2== 1)) && (q3!=1) ) continue; if ( (c1== 3 && c2== 3) && (q3!=4 && q3!=1) ) continue; if ( (c1==-3 && c2==-3) && (q3!=2) ) continue; { double dcs; double Qf=0.5*(pMass(plist[i])+pMass(plist[j])); dcs=hCollider(Pcm,1,nf,Qf,Qf,plist[i],plist[j],0,wrt); if(dcs>csMinFb*0.001) { fprintf(f,"XSECTION %E 2212 2212 2 %d %d\n",2*Pcm, pNum(plist[i]),pNum(plist[j])); /*pb*/ fprintf(f,"0 0 0 0 0 0 %E micrOMEGAs 3.6\n\n", dcs); } } } fclose(f); free(plist); f=fopen("particles.py","w"); fprintf(f,"#!/usr/bin/env python\n"); fprintf(f,"rOdd ={\n"); for(np=0,i=0;i<nModelParticles;i++) if(ModelPrtcls[i].name[0]=='~' && pMass(ModelPrtcls[i].name) <Pcm ) { if(np) fprintf(f,",\n"); fprintf(f, " %d : \"%s\",\n", ModelPrtcls[i].NPDG,ModelPrtcls[i].name); fprintf(f, " %d : \"%s\"" , -ModelPrtcls[i].NPDG,ModelPrtcls[i].aname); np++; } fprintf(f,"\n}\n"); fprintf(f,"rEven ={\n"); for(np=0,i=0;i<nModelParticles;i++) if(ModelPrtcls[i].name[0]!='~' && pMass(ModelPrtcls[i].name) <Pcm ) { for(j=0;j<16;j++) if(abs(ModelPrtcls[i].NPDG)==SMP[j]) break; if(j==16 ) { if(np) fprintf(f,",\n"); if(ModelPrtcls[i].NPDG==smH) { fprintf(f, " %d : \"higgs\",\n", ModelPrtcls[i].NPDG); fprintf(f, " %d : \"higgs\"\n", -ModelPrtcls[i].NPDG); } else { char * n=ModelPrtcls[i].name; char * an=ModelPrtcls[i].aname; if(strcmp( n,"higgs")==0) n="!higgs"; if(strcmp(an,"higgs")==0) an="!higgs"; fprintf(f, " %d : \"%s\",\n", ModelPrtcls[i].NPDG,n); fprintf(f, " %d : \"%s\"" , -ModelPrtcls[i].NPDG,an); } np++; } } fprintf(f,",\n" " 23 : \"Z\",\n" " -23 : \"Z\",\n" " 22 : \"photon\",\n" " -22 : \"photon\",\n" " 24 : \"W+\",\n" " -24 : \"W-\",\n" " 16 : \"nu\",\n" " -16 : \"nu\",\n" " 15 : \"ta-\",\n" " -15 : \"ta+\",\n" " 14 : \"nu\",\n" " -14 : \"nu\",\n" " 13 : \"mu-\",\n" " -13 : \"mu+\",\n" " 12 : \"nu\",\n" " -12 : \"nu\",\n" " 11 : \"e-\",\n" " -11 : \"e+\",\n" " 5 : \"b\",\n" " -5 : \"b\",\n" " 6 : \"t+\",\n" " -6 : \"t-\",\n" " 1 : \"jet\",\n" " 2 : \"jet\",\n" " 3 : \"jet\",\n" " 4 : \"jet\",\n" " 21 : \"jet\",\n" " -21 : \"jet\",\n" " -1 : \"jet\",\n" " -2 : \"jet\",\n" " -3 : \"jet\",\n" " -4 : \"jet\"" ); fprintf(f,"\n}\n"); fprintf(f, "\nptcDic = {\"e\" : [\"e+\", \"e-\"],\n" " \"mu\" : [\"mu+\", \"mu-\"],\n" " \"ta\" : [\"ta+\", \"ta-\"],\n" " \"l+\" : [\"e+\", \"mu+\"],\n" " \"l-\" : [\"e-\", \"mu-\"],\n" " \"l\" : [\"e-\", \"mu-\", \"e+\", \"mu+\"],\n" " \"W\" : [\"W+\", \"W-\"],\n" " \"t\" : [\"t+\", \"t-\"],\n" " \"L+\" : [\"e+\", \"mu+\", \"ta+\"],\n" " \"L-\" : [\"e-\", \"mu-\", \"ta-\"],\n" " \"L\" : [\"e+\", \"mu+\", \"ta+\", \"e-\", \"mu-\", \"ta-\"]}\n" ); fprintf(f,"qNumbers ={\n"); for(np=0,i=0;i<nModelParticles;i++) if(pMass(ModelPrtcls[i].name) <Pcm ) { for(j=0;j<16;j++) if(abs(ModelPrtcls[i].NPDG)==SMP[j]) break; if(j==16 ) { if(np) fprintf(f,",\n"); fprintf(f, " %d : [%d,%d,%d]", ModelPrtcls[i].NPDG, ModelPrtcls[i].spin2, ModelPrtcls[i].q3, ModelPrtcls[i].cdim); np++; } } fprintf(f,"\n}\n"); fclose(f); }
double deltams_(double *M, double *P) { *M= findValW("DMS" "M"); *P= findValW("DMS" "P"); return findValW("DMS" "0"); }
double deltarho_(void) { double mt,msn,thetat,thetab,thel; double GF=1.16639E-5; double ct,st,cb,ctau ,stau,cta2,sta2,ct2,st2,cb2,sb2,drho; double drhotau,drhotb,mt1,mt2,mb1,mb2,mta1,mta2,sb; mt=findValW("Mtp"); thetat=atan2(findValW("Zt12"),findValW("Zt11")); thetab=atan2(findValW("Zb12"),findValW("Zb11")); thel=atan2(findValW("Zl12"),findValW("Zl11")); /*printf("deltarho: %E %E %E %E\n",mt,thetat,thetab,thel);*/ ct=cos(thetat); st=sin(thetat); cb=cos(thetab); sb=sin(thetab); ctau =cos(thel); stau =sin(thel); cta2=sq(ctau); sta2=sq(stau); ct2=sq(ct); st2=sq(st); cb2=sq(cb); sb2=sq(sb); mt1=sq(findValW("MSt1")); mt2=sq(findValW("MSt2")); mb1=sq(findValW("MSb1")); mb2=sq(findValW("MSb2")); mta1=sq(findValW("MSl1")); mta2=sq(findValW("MSl2")); msn=findValW("MSnl"); drhotb= (ct2*(cb2*su_fr(mt1,mb1)+sb2*su_fr(mt1,mb2)) + st2*(cb2*su_fr(mt2,mb1)+sb2*su_fr(mt2,mb2)) - ct2*st2*su_fr(mt1,mt2)-cb2*sb2*su_fr(mb1,mb2)); drhotau= -cta2*sta2*su_fr(mta1,mta2)+cta2*su_fr(mta1,sq(msn)) + sta2*su_fr(mta2,sq(msn)); drho = 3*drhotb*(1. +2*0.12/3/M_PI*(1.+M_PI*M_PI/3))+drhotau + sq(findValW("aZZ")*findValW("MZ2")/findValW("MZ1")); /* New UMSSM contribution */ return GF/(8* M_PI*M_PI* sqrt(2.))*drho; }
double gmuon_(void) { /*compute the total g-2 from supersymmetry. Parameters are : Mmu : muon mass Mz : Z-boson's mass Mw : W-boson's mass s2thw : sin^2(thw) e : alpha modM1 & argM1 : modulus and argument of M1 modM2 & argM2 : modulus and argument of M2 modmu & argmu : modulus and argument of mu modAmu & argAmu : modulus and argument of Amu */ /*declaration des variables*/ double thw, cb,cw,sw, ymu, g1,masssneutr, g2,gmuo = 0,beta,Mz,Mw,Mmu,e,tbeta; matrix massmatrc,massmatrn,massmatrsmu; matrix Ncomp, Nconj,N,Ucomp,Uconj,U,Vcomp,Vconj,V,X,Xconj,Xcomp; vecteur massen,massec,massesmu; double coeff1 ,coeff2; matrix matrixtemp,matrixtemp2,matrixtemp3,matrixtemp4,matrixtemp5; my_complex nc1,nc2; int i,j; /*Memory Allocation*/ massmatrn=initm(4); massmatrc=initm(2); massmatrsmu=initm(2); Ncomp=initm(4); Nconj=initm(4); N=initm(4); Ucomp=initm(2); Vcomp=initm(2); X=initm(2); U=initm(2); V=initm(2); Uconj=initm(2); Vconj=initm(2); Xcomp=initm(2); Xconj=initm(2); massen=initv(4); massesmu=initv(2); massec=initv(2); matrixtemp=initm(2); matrixtemp2=initm(2); matrixtemp3=initm(4); matrixtemp4=initm(4); matrixtemp5=initm(4); /*Get the values for the masses and mixing matrices*/ e=sqrt(4*M_PI*0.00781653); sw=0.48076; Mz=91.1876; Mmu=0.1057; findVal("tB",&tbeta); beta = atan(tbeta); cb = cos(beta); thw=asin(sw); cw=cos(thw); Mw=Mz*cw; g1 = e/cw; g2 = e/sw; ymu = g2 * Mmu / (sqrt(2)*cb*Mw); findVal("MNE1",&massen.e[0].r); findVal("MNE2",&massen.e[1].r); findVal("MNE3",&massen.e[2].r); findVal("MNE4",&massen.e[3].r); findVal("MC1",&massec.e[0].r); findVal("MC2",&massec.e[1].r); findVal("MSnm",&masssneutr); findVal("Zn11",&Nconj.e[0][0].r); findVal("Zn12",&Nconj.e[1][0].r); findVal("Zn13",&Nconj.e[2][0].r); findVal("Zn14",&Nconj.e[3][0].r); findVal("Zn21",&Nconj.e[0][1].r); findVal("Zn22",&Nconj.e[1][1].r); findVal("Zn23",&Nconj.e[2][1].r); findVal("Zn24",&Nconj.e[3][1].r); findVal("Zn31",&Nconj.e[0][2].r); findVal("Zn32",&Nconj.e[1][2].r); findVal("Zn33",&Nconj.e[2][2].r); findVal("Zn34",&Nconj.e[3][2].r); findVal("Zn41",&Nconj.e[0][3].r); findVal("Zn42",&Nconj.e[1][3].r); findVal("Zn43",&Nconj.e[2][3].r); findVal("Zn44",&Nconj.e[3][3].r); findVal("Zu11",&Uconj.e[0][0].r); findVal("Zu12",&Uconj.e[1][0].r); findVal("Zu21",&Uconj.e[0][1].r); findVal("Zu22",&Uconj.e[1][1].r); findVal("Zv11",&Vcomp.e[0][0].r); findVal("Zv12",&Vcomp.e[0][1].r); findVal("Zv21",&Vcomp.e[1][0].r); findVal("Zv22",&Vcomp.e[1][1].r); { double MSmuLL,MSmuRR,MSmuLR,Am,mu,MSmuth; MSmuLL=findValW("MSmL"); MSmuLL*=MSmuLL; MSmuRR=findValW("MSmR"); MSmuRR*=MSmuRR; Am=findValW("Am"); mu=findValW("mu"); MSmuLR=(Am-mu*tbeta)*Mmu; massesmu.e[0].r=sqrt((MSmuLL+MSmuRR-sqrt((MSmuLL-MSmuRR)*(MSmuLL-MSmuRR)+4*MSmuLR*MSmuLR))/2); massesmu.e[1].r=sqrt((MSmuLL+MSmuRR+sqrt((MSmuLL-MSmuRR)*(MSmuLL-MSmuRR)+4*MSmuLR*MSmuLR))/2); MSmuth=atan2(-2*MSmuLR, -MSmuLL+MSmuRR)/2; X.e[0][0].r=cos(MSmuth); X.e[0][1].r=sin(MSmuth); X.e[1][0].r=-X.e[0][1].r; X.e[1][1].r=X.e[0][0].r; } for(i=0;i<4;i++) if (massen.e[i].r<0) {for(j=0;j<4;j++) {Nconj.e[j][i]=prod(icomp,Nconj.e[j][i]); } massen.e[i].r=-massen.e[i].r; } for(i=0;i<2;i++) {if (massec.e[i].r<0) {for(j=0;j<2;j++) { Uconj.e [j][i]=prod(icomp,Uconj.e[j][i]); Vcomp.e [i][j]=prod(icomp,Vcomp.e[i][j]); } massec.e[i].r=-massec.e[i].r; } if (massesmu.e[i].r<0) {for(j=0;j<2;j++) {X.e [i][j]=prod(icomp,X.e[i][j]); } massesmu.e[i].r=-massesmu.e[i].r; } } N=adj(Nconj); U=adj(Uconj); /*Compute the coefficients entering the formula for the neutral and chargino contribution to g-2_muon and calculates gmuon*/ /*neutralinos*/ for ( i=0;i<4;i=i+1) for ( j=0;j<2;j=j+1) {nc1=somme(prodscal(sqrt(2)*g1,prod(N.e[i][0],X.e[j][1])),prodscal(ymu,prod(N.e[i][2],X.e[j][0]))); nc2=diff(prodscal(1/sqrt(2),prod(somme(prodscal(g2,N.e[i][1]),prodscal(g1,N.e[i][0])),conjug(X.e[j][0]))),prodscal(ymu,prod(N.e[i][2],conjug(X.e[j][1])))); coeff1 =(somme(prod(nc1,conjug(nc1)),prod(nc2,conjug(nc2)))).r; coeff2 = prod(nc1,nc2).r; if (massesmu.e[j].r<1e-8) {return 0; printf("erreur : Mass smuons nul\n");} gmuo=gmuo+calcgmuon (0,Mmu, massen.e[i].r, massesmu.e[j].r,coeff1, coeff2); } /*charginos*/ for (j=0;j<2;j=j+1) { nc1=prodscal(ymu,U.e[j][1]); nc2=prodscal(-g2,conjug(Vcomp.e[j][0])); coeff1 =(somme(prod(nc1,conjug(nc1)),prod(nc2,conjug(nc2)))).r; coeff2 = prod(nc1,nc2).r; if (masssneutr<1e-8) {return 0; printf("erreur : Mass sneutrinos nul\n");} gmuo=gmuo+calcgmuon (1,Mmu, massec.e[j].r, masssneutr,coeff1, coeff2); } return gmuo; }
int main(int argc,char** argv) { int err; char mess[10]; double dMb,dMd; double (*LF)(double,double,double,double); struct { char *lbl; double m0,mhf,A0,tb,sgn;} testPoints[4]= { {"BP", 70, 250,-300,10, 1}, {"KP", 2500, 550, -80,40,-1}, {"IP", 180, 350, 0,35, 1}, {"NUH", 250, 530, 0,30, 1} }; int I, K; /* to save RGE input/output files uncomment the next line */ /*delFiles(0);*/ for(I=0;I<5;I++) { if(I==4) { printf("================================================ MSSM1 ======\n"); err=readVarMSSM("mssm1.par"); if(err==0)err=EWSBMODEL(RGE)(); }else { double m0,mhf,a0,tb; double gMG1, gMG2, gMG3, gAl, gAt, gAb, sgn, gMHu, gMHd, gMl2, gMl3, gMr2, gMr3, gMq2, gMq3, gMu2, gMu3, gMd2, gMd3; printf("\n========= mSUGRA scenario =====\n"); printf("================================================ %s ======\n",testPoints[I].lbl); PRINTRGE(RGE); m0=testPoints[I].m0; mhf=testPoints[I].mhf; a0=testPoints[I].A0; tb=testPoints[I].tb; sgn=testPoints[I].sgn; /*==== simulation of mSUGRA =====*/ gMG1=mhf, gMG2=mhf,gMG3=mhf; gAl=a0, gAt=a0, gAb=a0; gMHu=m0, gMHd=m0; gMl2=m0, gMl3=m0, gMr2=m0, gMr3=m0; gMq2=m0, gMq3=m0, gMu2=m0, gMd2=m0, gMu3=m0, gMd3=m0; if(I==3){ /*==== Non universal SUGRA====*/ gMHu=2.*m0, gMHd=-0.6*m0; } err= SUGRAMODEL(RGE) (tb, gMG1, gMG2, gMG3, gAl, gAt, gAb, sgn, gMHu, gMHd, gMl2, gMl3, gMr2, gMr3, gMq2, gMq3, gMu2, gMu3, gMd2, gMd3); if(err>0){ printf(" non fatal problems in RGE\n");err=0;} } if(err) { printf("Problem with RGE solution or spectrum calculation\n"); exit(1); } err=sortOddParticles(mess); if(err) { printf("Can't calculate %s\n",mess); return 1;} dMb=findValW("dMb"); dMd=findValW("dMd"); printf("dMb=%.2E dMd=dMs=%.2E \n", dMb, dMd); for(K=1;K<=5;K++) { switch(K) { case 1: printf("================= Tree level \n"); QCDcorrections=0; assignValW("dMb",0.); assignValW("dMd",0.); assignValW("dMs",0.); break; case 2: printf("================= QCD \n"); QCDcorrections=1; assignValW("dMb",0.); assignValW("dMd",0.); assignValW("dMs",0.); break; case 3: printf("================= dMb \n"); QCDcorrections=0; assignValW("dMb",dMb); assignValW("dMd",dMd); assignValW("dMs",dMd); break; case 4: printf("================= QCD+dMb \n"); QCDcorrections=1; assignValW("dMb",dMb); assignValW("dMd",dMd); assignValW("dMs",dMd); break; case 5: printf("================= box+QCD+dMb\n"); QCDcorrections=1; assignValW("dMb",dMb); assignValW("dMd",dMd); assignValW("dMs",dMd); break; } { double pA0[2],pA5[2],nA0[2],nA5[2]; double Nmass=0.939; /*nucleon mass*/ double SCcoeff; //printf("\n==== Calculation of WIMP-nucleons amplitudes =====\n"); if(K==5) LF=FeScLoop; else LF=NULL; nucleonAmplitudes(LF, pA0,pA5,nA0,nA5); // printf("WIMP-nucleon amplitudes:\n"); // printf("proton: SI %.3E SD %.3E\n",pA0[0],pA5[0]); // printf("neutron: SI %.3E SD %.3E\n",nA0[0],nA5[0]); SCcoeff=4/M_PI*3.8937966E8*pow(Nmass*lopmass_()/(Nmass+ lopmass_()),2.); // printf("WIMP-nucleon cross sections:\n"); printf(" proton SI %.3E neutron SI %.3E\n",SCcoeff*pA0[0]*pA0[0],SCcoeff*nA0[0]*nA0[0]); // printf(" neutron SI %.3E SD %.3E\n",SCcoeff*nA0[0]*nA0[0],SCcoeff*nA5[0]*nA5[0]); } } } return 0; }
double b2sg_(double *M, double *P) { *M= findValW("BSGM"); *P= findValW("BSGP"); return findValW("BSG0"); }
static double khi2(void) { double tb=extpar.tb; double hl=extpar.Lambda; double hk=extpar.Kappa; double hls=extpar.aLambda; double hks=extpar.aKappa; double xvev=extpar.mu/extpar.Lambda; double g2=extpar.g2; double cb=1.0/sqrt(1.0+tb*tb); double sb=tb*cb; double vev=extpar.vev; double sum; double neum[3][3],orimm[3][3],mh[3]; double mw=extpar.mw; int i1,i2,k; for(i1=0;i1<10;i1++) {La[i1]=0;Las[i1]=0;} Lass=0; mh[0]=findValW("MhaR"); mh[1]=findValW("MhbR"); for(i1=0;i1<2;i1++) for(i2=0;i2<2;i2++) for(k=0,orimm[i1][i2]=0 ;k<2;k++) orimm[i1][i2]+=Pa_[k][i1]*Pa_[k][i2]*mh[k]*mh[k]; xvev=-(orimm[0][1] -hl*vev*hls)/(2*hk*hl*vev); extpar.mu=xvev*hl; neum[0][0]= hl*xvev*(hls+hk*xvev)/(sb*cb); La[5] =(orimm[0][0] -neum[0][0])/(-2.0*vev*vev); hks=-(orimm[1][1]-4*vev*vev*hk*hl*cb*sb-vev*vev*hl*hls/xvev*cb*sb)/(3*hk*xvev); extpar.aKappa=hks; mh[0]=findValW("MHcR"); La[4]=-(mh[0]*mh[0]-mw*mw-xvev*hl*(hls+hk*xvev)/cb/sb+vev*vev*(hl*hl+La[5]) )/(vev*vev); neum[0][0]= g2*vev*vev*cb*cb+hl*hls*tb*xvev+hk*hl*tb*xvev*xvev; neum[1][1]= g2*vev*vev*sb*sb+hl*hls/tb*xvev+hk*hl/tb*xvev*xvev; neum[2][2]= 4*hk*hk*xvev*xvev+vev*vev*hl*hls/xvev*cb*sb+hk*hks*xvev; neum[0][1]=neum[1][0]= -g2*vev*vev*cb*sb+2.0*vev*vev*cb*sb*hl*hl -xvev*hl*(hls+xvev*hk) +2*vev*vev*cb*sb*(La[4]+La[5]); neum[0][2]=neum[2][0]=vev*(2.0*hl*hl*xvev*cb-2*hk*hl*xvev*sb-hl*hls*sb); neum[1][2]=neum[2][1]=vev*(2.0*hl*hl*xvev*sb-2*hk*hl*xvev*cb-hl*hls*cb); mh[0]=findValW("Mh1R"); mh[1]=findValW("Mh2R"); mh[2]=findValW("Mh3R"); for(i1=0;i1<3;i1++) for(i2=0;i2<3;i2++) for(k=0,orimm[i1][i2]=0;k<3;k++) orimm[i1][i2]+= Zh_[k][i1]*Zh_[k][i2]*mh[k]*mh[k]; La[1] =(orimm[0][0]-neum[0][0])/(2.0*vev*vev*cb*cb); La[2] =(orimm[1][1]-neum[1][1])/(2.0*vev*vev*sb*sb); La[3] =(orimm[0][1]-neum[0][1])/(2.0*vev*vev*sb*cb); Las[1]=(orimm[0][2]-neum[0][2])/(2.0*vev*xvev*cb); Las[2]=(orimm[1][2]-neum[1][2])/(2.0*vev*xvev*sb); Lass =(orimm[2][2]-neum[2][2])/(2.0*xvev*xvev); sum= (La[1])*(La[1]) + (La[2])*(La[2]) + La[3]*La[3] +La[4]*La[4] + La[5]*La[5] + Las[1]*Las[1] + Las[2]*Las[2] + Lass*Lass; /*printf("Al = %E",hls); printf("sum = %E\n",sum);*/ return sum; }
int vPolar( int out1,int out2,int out3, double*left,double*right,double*lng) { double pvect[20],pcm1,pcm2,ms,md,chY,shY; int i,err_code; int iW,ie,in; double m[5]; int code[5]; double massMin=-1; int oId; char n1[10],n2[10],n3[10]; numout * cc; char *Wp=NULL,*el=NULL,*Ne=NULL,*o1=NULL,*O1=NULL; double r[3]; double GG=sqrt(4*M_PI*parton_alpha(2*Mcdm)); for(i=0;i<nModelParticles;i++) { if(ModelPrtcls[i].NPDG== out1) { Wp=ModelPrtcls[i].name; sprintf(n1,"p%d",i+1);} if(ModelPrtcls[i].NPDG==-out1) { Wp=ModelPrtcls[i].aname;sprintf(n1,"m%d",i+1);} if(ModelPrtcls[i].NPDG== out2) { el=ModelPrtcls[i].name; sprintf(n2,"p%d",i+1);} if(ModelPrtcls[i].NPDG==-out2) { el=ModelPrtcls[i].aname;sprintf(n2,"m%d",i+1);} if(ModelPrtcls[i].NPDG== out3) { Ne=ModelPrtcls[i].name;sprintf(n3,"p%d",i+1);} if(ModelPrtcls[i].NPDG==-out3) { Ne=ModelPrtcls[i].aname; sprintf(n3,"m%d",i+1);} if(ModelPrtcls[i].name[0]=='~') { double mass=fabs(findValW(ModelPrtcls[i].mass)); if(mass<massMin || massMin<0) { o1=ModelPrtcls[i].name; O1=ModelPrtcls[i].aname; massMin=mass; oId=i+1; } } } if(!o1 || !O1 || !Wp || !el || !Ne) return 1; { char lib[40], process[30], cond[20]; sprintf(lib,"p%d_Polar_%s%s%s",oId,n1,n2,n3); sprintf(process,"%s,%s->%s,%s,%s",o1,O1,Wp,el,Ne); sprintf(cond,"%s!=2",Wp); cc=getMEcode(0,1,process,cond,NULL,lib); if(!cc) { printf("can not generate\n");return 2;} } for(i=1;i<=cc->interface->nvar;i++) if(cc->link[i]) cc->interface->va[i]=*(cc->link[i]); if( cc->interface->calcFunc()>0 ) { return -1;} for(i=0;i<5;i++) cc->interface->pinf(1,i+1,m+i,code+i); for(i=0;i<20;i++) pvect[i]=0; pvect[0]=m[0]; pvect[4]=m[1]; iW=ie=in=-1; for(i=2;i<5;i++) { if(code[i]==out1) iW=i; if(code[i]==out2) ie=i; if(code[i]==out3) in=i; } if(iW<0 || ie <0 || in<0) return 1; if(m[0]+m[1]<=2*m[iW]) { printf("Mcdm too low\n"); return 3;} pcm1=sqrt((m[0]+m[1])*(m[0]+m[1]) - 4*m[iW]*m[iW])/2; ms=m[ie]+m[in]; md=m[ie]-m[in]; pcm2=sqrt((m[iW]*m[iW] - ms*ms)*(m[iW]*m[iW]-md*md))/(2*m[iW]); for(i=0;i<3;i++) { double csfi=i-1; pvect[4*iW]= sqrt(m[iW]*m[iW]+pcm1*pcm1); pvect[4*iW+3] = -pcm1; pvect[4*ie]=sqrt(m[ie]*m[ie]+pcm2*pcm2); pvect[4*ie+3]=pcm2*csfi; pvect[4*ie+2]=pcm2*sqrt(1-csfi*csfi); pvect[4*in]=sqrt(m[in]*m[in]+pcm2*pcm2); pvect[4*in+3]=-pcm2*csfi; pvect[4*in+2]=-pcm2*sqrt(1-csfi*csfi); chY=sqrt(1+pcm1*pcm1/m[iW]/m[iW]); shY=sqrt(pcm1*pcm1/m[iW]/m[iW]); { double p0=pvect[4*ie], p3=pvect[4*ie+3]; pvect[4*ie]= chY*p0 + shY*p3; pvect[4*ie+3]=shY*p0 + chY*p3; p0=pvect[4*in]; p3=pvect[4*in+3]; pvect[4*in]= chY*p0 + shY*p3; pvect[4*in+3]=shY*p0 + chY*p3; } r[i]=(cc->interface->sqme)(1,GG,pvect,&err_code); } { double s; r[2]/=4; r[0]/=4; r[1]=(r[1]-r[0]-r[2])/2; s=r[0]+r[1]+r[2]; s=r[0]+r[1]+r[2]; if(left) *left=r[2]/s; if(right) *right=r[0]/s; if(lng) *lng=r[1]/s; } return 0; }
double bsmumu_(double *M, double *P) { *M= findValW("BsMM" "M"); *P= findValW("BsMM" "P"); return findValW("BsMM" "0"); }
int loopGamma(double * csAZ, double *csAA) { double sigmav; char buff[2000]; int err; FILE*f; *csAA=0,*csAZ=0; if(!access(FOUT,R_OK)) unlink(FOUT); sprintf(buff,"%s/../lib/nngg/lGamma.exe",WORK); if(access( buff,X_OK)) { char buf[2000]; sprintf(buf, "make -C %s/../lib/nngg",WORK); system(buf); } if(access( buff,X_OK)) { printf("Can not found/compile executable %s\n",buff); return 10; } f=fopen(FIN,"w"); if(!f) return 1; fprintf(f, "BLOCK Z3_parameters\n"); fprintf(f, " EE %f\n",findValW("EE")); fprintf(f, " SW %f\n",findValW("SW")); fprintf(f, " MZ %f\n",findValW("MZ")); fprintf(f, " Q %f\n",findValW("Q")); fprintf(f, " wZ %f\n",findValW("wZ")); fprintf(f, " wW %f\n",findValW("wW")); fprintf(f, " Mm %f\n",findValW("Mm")); fprintf(f, " Ml %f\n",findValW("Ml")); fprintf(f, " Mu %f\n",findValW("Mu")); fprintf(f, " Md %f\n",findValW("Md")); fprintf(f, " Mc %f\n",findValW("Mc")); fprintf(f, " Ms %f\n",findValW("Ms")); fprintf(f, " Mtop %f\n",findValW("Mtop")); fprintf(f, " wtop %f\n",findValW("wtop")); fprintf(f, " Mh %f\n",findValW("Mh")); fprintf(f, " la3 %f\n",findValW("la3")); fprintf(f, " la2 %f\n",findValW("la2")); fprintf(f, " la4 %f\n",findValW("la4")); fprintf(f, " laS %f\n",findValW("laS")); fprintf(f, " laS1 %f\n",findValW("laS1")); fprintf(f, " laS2 %f\n",findValW("laS2")); fprintf(f, " laS21 %f\n",findValW("laS21")); fprintf(f, " Mdm1 %f\n",findValW("Mdm1")); fprintf(f, " Mdm2 %f\n",findValW("Mdm2")); fprintf(f, " sinDm %f\n",findValW("sinDm")); fprintf(f, " muppS %f\n",findValW("muppS")); fprintf(f, " Mcp %f\n",findValW("Mcp")); fclose(f); if(!access(FOUT,R_OK)) unlink(FOUT); sprintf(buff+strlen(buff)," %s %s",FIN,FOUT); err=System(buff); if(err>=0) { err=slhaRead(FOUT,1); *csAZ=0; *csAA=slhaVal("Lgamma",0.,1,2)*2.9979E-26; } // if(!access(FOUT,R_OK)) unlink(FOUT); // if(!access(FIN,R_OK)) unlink(FIN); return err; }
int writelesh_(int * err, char*CODE,char *f_name,int len1,int len2) { FILE *f; char name[20]; int n1,n2; double Q; char fname[100]; char codeTxt[100]; char codeN[100]; char codeV[100]; fName2c(f_name,fname,len2); f=fopen(fname,"w"); if(f==NULL) return -2; fName2c(CODE,codeTxt,len1); fprintf(f,"Block SPINFO\n"); sscanf(codeTxt,"%s %[^\n]",codeN,codeV); fprintf(f," 1 %s\n",codeN); fprintf(f," 2 %s\n",codeV); if(*err<0) fprintf(f," 3 %d\n",-(*err) ); if(*err>0) {fprintf(f," 4 %d\n", (*err) ); fclose(f); return 1;} Q=findValW("QSUSY"); fprintf(f,"Block MASS # Mass spectrum\n"); fprintf(f,"#PDG code mass particle\n"); fprintf(f," 24 %16.8E # MW\n", 80.423); fprintf(f," 25 %16.8E # h0\n", findValW("Mh")); fprintf(f," 35 %16.8E # H0\n", findValW("MHH" )); fprintf(f," 36 %16.8E # A0\n", findValW("MH3" )); fprintf(f," 37 %16.8E # H+\n", findValW("MHc" )); fprintf(f," 1000001 %16.8E # ~d_L\n", findValW("MSdL")); fprintf(f," 1000002 %16.8E # ~u_L\n", findValW("MSuL")); fprintf(f," 1000003 %16.8E # ~s_L\n", findValW("MSsL")); fprintf(f," 1000004 %16.8E # ~c_L\n", findValW("MScL")); fprintf(f," 1000005 %16.8E # ~b_1\n", findValW("MSb1")); fprintf(f," 1000006 %16.8E # ~t_1\n", findValW("MSt1")); fprintf(f," 1000011 %16.8E # ~e_L\n", findValW("MSeL")); fprintf(f," 1000012 %16.8E # ~nue_L\n", findValW("MSne")); fprintf(f," 1000013 %16.8E # ~mu_L\n", findValW("MSmL")); fprintf(f," 1000014 %16.8E # ~numu_L\n", findValW("MSnm")); fprintf(f," 1000015 %16.8E # ~stau_1\n", findValW("MSl1")); fprintf(f," 1000016 %16.8E # ~nu_tau_L\n", findValW("MSnl")); fprintf(f," 1000021 %16.8E # ~g\n", findValW("MSG")); fprintf(f," 1000022 %16.8E # ~neutralino(1)\n", findValW("MNE1")); fprintf(f," 1000023 %16.8E # ~neutralino(2)\n", findValW("MNE2")); fprintf(f," 1000024 %16.8E # ~chargino(1)\n", findValW("MC1")); fprintf(f," 1000025 %16.8E # ~neutralino(3)\n", findValW("MNE3")); fprintf(f," 1000035 %16.8E # ~neutralino(4)\n", findValW("MNE4")); fprintf(f," 1000037 %16.8E # ~chargino(2)\n", findValW("MC2")); fprintf(f," 2000001 %16.8E # ~d_R\n", findValW("MSdR")); fprintf(f," 2000002 %16.8E # ~u_R\n", findValW("MSuR")); fprintf(f," 2000003 %16.8E # ~s_R\n", findValW("MSsR")); fprintf(f," 2000004 %16.8E # ~c_R\n", findValW("MScR")); fprintf(f," 2000005 %16.8E # ~b_2\n", findValW("MSb2")); fprintf(f," 2000006 %16.8E # ~t_2\n", findValW("MSt2")); fprintf(f," 2000011 %16.8E # ~e_R\n", findValW("MSeR")); fprintf(f," 2000013 %16.8E # ~mu_R\n", findValW("MSmR")); fprintf(f," 2000015 %16.8E # ~stau_2\n", findValW("MSl2")); fprintf(f,"# Higgs mixing\n"); fprintf(f,"Block ALPHA\n"); fprintf(f," %16.8E\n",findValW("alpha")); fprintf(f,"Block GAUGE Q= %16.8E\n",Q); fprintf(f," 1 %16.8E # U(1) coupling \n", findValW("gY") ); fprintf(f," 2 %16.8E # SU(2) coupling\n", findValW("g2") ); fprintf(f," 3 %16.8E # SU(3) coupling\n", findValW("g3") ); fprintf(f,"Block YU Q= %16.8E\n",Q); fprintf(f," 3 3 %16.8E # Yt\n", findValW("Yt") ); fprintf(f,"Block YD Q= %16.8E\n",Q); fprintf(f," 3 3 %16.8E # Yb\n", findValW("Yb") ); fprintf(f,"Block YE Q= %16.8E\n",Q); fprintf(f," 3 3 %16.8E # Yl\n", findValW("Yl") ); fprintf(f,"Block HMIX Q= %16.8E\n",Q); fprintf(f," 1 %16.8E # mu(Q)MSSM DRbar\n",findValW("mu")); fprintf(f," 2 %16.8E # tan beta(Q)MSSM DRbar\n",findValW("tb_Q")); fprintf(f," 3 %16.8E # vev\n",findValW("vev")); fprintf(f," 4 %16.8E # mA^2\n",findValW("mA_2")); fprintf(f,"Block MSOFT Q= %16.8E\n",Q); fprintf(f," 1 %16.8E # %s\n", findValW("MG1" ),"MG1" ); fprintf(f," 2 %16.8E # %s\n", findValW("MG2" ),"MG2" ); fprintf(f," 3 %16.8E # %s\n", findValW("MG3" ),"MG3" ); fprintf(f," 21 %16.8E # %s\n", findValW("mH1_2"),"mH1_2"); fprintf(f," 22 %16.8E # %s\n", findValW("mH2_2"),"mH2_2"); fprintf(f," 31 %16.8E # %s\n", findValW("Ml1" ),"Ml1" ); fprintf(f," 32 %16.8E # %s\n", findValW("Ml2" ),"Ml2" ); fprintf(f," 33 %16.8E # %s\n", findValW("Ml3" ),"Ml3" ); fprintf(f," 34 %16.8E # %s\n", findValW("Mr1" ),"Mr1" ); fprintf(f," 35 %16.8E # %s\n", findValW("Mr2" ),"Mr2" ); fprintf(f," 36 %16.8E # %s\n", findValW("Mr3" ),"Mr3" ); fprintf(f," 41 %16.8E # %s\n", findValW("Mq1" ),"Mq1" ); fprintf(f," 42 %16.8E # %s\n", findValW("Mq2" ),"Mq2" ); fprintf(f," 43 %16.8E # %s\n", findValW("Mq3" ),"Mq3" ); fprintf(f," 44 %16.8E # %s\n", findValW("Mu1" ),"Mu1" ); fprintf(f," 45 %16.8E # %s\n", findValW("Mu2" ),"Mu2" ); fprintf(f," 46 %16.8E # %s\n", findValW("Mu3" ),"Mu3" ); fprintf(f," 47 %16.8E # %s\n", findValW("Md1" ),"Md1" ); fprintf(f," 48 %16.8E # %s\n", findValW("Md2" ),"Md2" ); fprintf(f," 49 %16.8E # %s\n", findValW("Md3" ),"Md3" ); fprintf(f,"Block STOPMIX\n"); for(n1=1;n1<=2;n1++)for(n2=1;n2<=2;n2++) { sprintf(name,"Zt%d%d",n1,n2); fprintf(f," %d %d %16.8E # %s\n",n1,n2,findValW(name),name); } fprintf(f,"Block SBOTMIX\n"); for(n1=1;n1<=2;n1++)for(n2=1;n2<=2;n2++) { sprintf(name,"Zb%d%d",n1,n2); fprintf(f," %d %d %16.8E # %s\n",n1,n2,findValW(name),name); } fprintf(f,"Block STAUMIX\n"); for(n1=1;n1<=2;n1++)for(n2=1;n2<=2;n2++) { sprintf(name,"Zl%d%d",n1,n2); fprintf(f," %d %d %16.8E # %s\n",n1,n2,findValW(name),name); } fprintf(f,"Block NMIX\n"); for(n1=1;n1<=4;n1++)for(n2=1;n2<=4;n2++) { sprintf(name,"Zn%d%d",n1,n2); fprintf(f," %d %d %16.8E # %s\n",n1,n2,findValW(name),name); } fprintf(f,"Block UMIX\n"); for(n1=1;n1<=2;n1++)for(n2=1;n2<=2;n2++) { sprintf(name,"Zu%d%d",n1,n2); fprintf(f," %d %d %16.8E # %s\n",n1,n2,findValW(name),name); } fprintf(f,"Block VMIX\n"); for(n1=1;n1<=2;n1++)for(n2=1;n2<=2;n2++) { sprintf(name,"Zv%d%d",n1,n2); fprintf(f," %d %d %16.8E # %s\n",n1,n2,findValW(name),name); } fprintf(f,"Block AU Q= %16.8E\n",Q); fprintf(f," 3 3 %16.8E # At\n",findValW("At")); fprintf(f,"Block AD Q= %16.8E\n",Q); fprintf(f," 3 3 %16.8E # Ab\n",findValW("Ab")); fprintf(f,"Block AE Q= %16.8E\n",Q); fprintf(f," 3 3 %16.8E # Al\n",findValW("Al")); /* fprintf(f," 2 2 %16.8E # Am\n",findValW("Am")); */ fprintf(f,"Block SMINPUTS\n"); fprintf(f," 1 %16.8E # 1/alfEMZ\n",1/ findValW("alfEMZ")); fprintf(f," 2 %16.8E # G_Fermi\n",1.16637E-5); fprintf(f," 3 %16.8E # alfSMZ\n", findValW("alfSMZ")); fprintf(f," 5 %16.8E # MbMb\n", findValW("MbMb")); fprintf(f," 6 %16.8E # Mtp\n", findValW("Mtp")); fprintf(f," 7 %16.8E # Mtau\n",findValW("Ml")); fprintf(f,"Block MODSEL\n"); fprintf(f," 1 0 # General MSSM\n"); fprintf(f,"Block MINPAR\n"); fprintf(f," 3 %16.8E # tb\n",findValW("tb")); fclose(f); return 0; }
int main(int argc,char** argv) { int err,nw; char cdmName[10]; int spin2, charge3,cdim; double laMax; delFiles=0; /* switch to save/delete NMSSMTools input/output */ ForceUG=0; /* to Force Unitary Gauge assign 1 */ #ifdef SUGRA { double m0,mhf,a0,tb; double Lambda, aLambda,aKappa,sgn; if(argc<7) { printf(" This program needs 6 parameters:\n" " m0 common scalar mass at GUT scale\n" " mhf common gaugino mass at GUT scale\n" " a0 trilinear soft breaking parameter at GUT scale\n" " tb tan(beta) \n" " Lambda Lambda parameter at SUSY\n" " aKappa aKappa parameter at GUT\n" ); printf(" Auxiliary parameters are:\n" " sgn +/-1, sign of Higgsino mass term (default 1)\n" " aLambda at GUT (default aLambda=a0)\n" " Mtp top quark pole mass\n" " MbMb Mb(Mb) scale independent b-quark mass\n" " alfSMZ strong coupling at MZ\n"); printf("Example: ./main 320 600 -1300 2 0.5 -1400\n"); exit(1); } else { double Mtp,MbMb,alfSMZ; sscanf(argv[1],"%lf",&m0); sscanf(argv[2],"%lf",&mhf); sscanf(argv[3],"%lf",&a0); sscanf(argv[4],"%lf",&tb); sscanf(argv[5],"%lf",&Lambda); sscanf(argv[6],"%lf",&aKappa); if(argc>7) sscanf(argv[7],"%lf",&sgn); else sgn=1; if(argc>8) sscanf(argv[8],"%lf",&aLambda); else aLambda=a0; if(argc>9){ sscanf(argv[9],"%lf",&Mtp); assignValW("Mtp",Mtp); } if(argc>10){ sscanf(argv[10],"%lf",&MbMb); assignValW("MbMb",MbMb); } if(argc>11){ sscanf(argv[11],"%lf",&alfSMZ); assignValW("alfSMZ",alfSMZ);} } err=nmssmSUGRA( m0,mhf, a0,tb, sgn, Lambda, aLambda, aKappa); } #elif defined(EWSB) { if(argc!=2) { printf(" Correct usage: ./main <file with NMSSM parameters> \n"); printf(" Example : ./main data1.par \n"); exit(1); } err=readVarNMSSM(argv[1]); if(err==-1) {printf("Can not open the file\n"); exit(1);} else if(err>0) { printf("Wrong file contents at line %d\n",err);exit(1);} err=nmssmEWSB(); } #else { printf("\n========= SLHA file input =========\n"); if(argc <2) { printf("The program needs one argument:the name of SLHA input file.\n" "Example: ./main spectr.dat \n"); exit(1); } printf("Initial file \"%s\"\n",argv[1]); err=readSLHA(argv[1]); if(err) exit(2); } #endif slhaWarnings(stdout); if(err) exit(1); //assignValW("Ms2GeV",0.14); err=sortOddParticles(cdmName); if(err) { printf("Can't calculate %s\n",cdmName); return 1;} laMax=findValW("laMax"); printf("Largest coupling of Higgs self interaction %.1E\n",laMax); qNumbers(cdmName,&spin2, &charge3, &cdim); printf("\nDark matter candidate is '%s' with spin=%d/2\n", cdmName, spin2); if(charge3) { printf("Dark Matter has electric charge %d/3\n",charge3); exit(1);} if(cdim!=1) { printf("Dark Matter is a color particle\n"); exit(1);} if(strcmp(cdmName,"~o1")) printf(" ~o1 is not CDM\n"); else o1Contents(stdout); /* printVar(stdout); */ #ifdef MASSES_INFO { printf("\n=== MASSES OF HIGGS AND SUSY PARTICLES: ===\n"); printHiggs(stdout); printMasses(stdout,1); } #endif #ifdef CONSTRAINTS { double constr0,constrM, constrP; printf("\n\n==== Physical Constraints: =====\n"); constr0=bsgnlo(&constrM,&constrP); printf("B->s,gamma = %.2E (%.2E , %.2E ) \n",constr0,constrM, constrP ); constr0= bsmumu(&constrM,&constrP); printf("Bs->mu,mu = %.2E (%.2E , %.2E ) \n",constr0,constrM, constrP ); constr0=btaunu(&constrM,&constrP); printf("B+->tau+,nu= %.2E (%.2E , %.2E ) \n",constr0, constrM, constrP ); constr0=deltaMd(&constrM,&constrP); printf("deltaMd = %.2E (%.2E , %.2E ) \n",constr0,constrM, constrP ); constr0=deltaMs(&constrM,&constrP); printf("deltaMs = %.2E (%.2E , %.2E ) \n",constr0,constrM, constrP ); constr0=gmuon(&constrM,&constrP); printf("(g-2)/BSM = %.2E (%.2E , %.2E ) \n",constr0,constrM, constrP ); } #endif #ifdef OMEGA { int fast=1; double Beps=1.E-5, cut=0.01; double Omega,Xf; printf("\n==== Calculation of relic density =====\n"); Omega=darkOmega(&Xf,fast,Beps); printf("Xf=%.2e Omega=%.2e\n",Xf,Omega); printChannels(Xf,cut,Beps,1,stdout); } #endif #ifdef INDIRECT_DETECTION { int err,i; double Emin=0.1,/* Energy cut in GeV */ sigmaV; double vcs_gz,vcs_gg; char txt[100]; double SpA[NZ],SpE[NZ],SpP[NZ]; double FluxA[NZ],FluxE[NZ],FluxP[NZ]; // double * SpNe=NULL,*SpNm=NULL,*SpNl=NULL; double SpNe[NZ],SpNm[NZ],SpNl[NZ]; double Etest=Mcdm/2; printf("\n==== Indirect detection =======\n"); sigmaV=calcSpectrum(2+4,SpA,SpE,SpP,SpNe,SpNm,SpNl ,&err); /* Returns sigma*v in cm^3/sec. SpX - calculated spectra of annihilation. Use SpectdNdE(E, SpX) to calculate energy distribution in 1/GeV units. First parameter 1-includes W/Z polarization 2-includes gammas for 2->2+gamma 4-print cross sections */ printf("sigmav=%.2E[cm^3/s]\n",sigmaV); if(SpA) { double fi=0.1,dfi=0.05; /* angle of sight and 1/2 of cone angle in [rad] */ gammaFluxTab(fi,dfi, sigmaV, SpA, FluxA); printf("Photon flux for angle of sight f=%.2f[rad]\n" "and spherical region described by cone with angle %.2f[rad]\n",fi,2*dfi); #ifdef SHOWPLOTS sprintf(txt,"Photon flux[cm^2 s GeV]^{1} at f=%.2f[rad], cone angle %.2f[rad]",fi,2*dfi); displaySpectrum(FluxA,txt,Emin,Mcdm,1); #endif printf("Photon flux = %.2E[cm^2 s GeV]^{-1} for E=%.1f[GeV]\n",SpectdNdE(Etest, SpA), Etest); } if(SpE) { posiFluxTab(Emin, sigmaV, SpE, FluxE); #ifdef SHOWPLOTS displaySpectrum(FluxE,"positron flux [cm^2 s sr GeV]^{-1}" ,Emin,Mcdm,1); #endif printf("Positron flux = %.2E[cm^2 sr s GeV]^{-1} for E=%.1f[GeV] \n", SpectdNdE(Etest, FluxE), Etest); } if(SpP) { pbarFluxTab(Emin, sigmaV, SpP, FluxP ); #ifdef SHOWPLOTS displaySpectrum(FluxP,"antiproton flux [cm^2 s sr GeV]^{-1}" ,Emin,Mcdm,1); #endif printf("Antiproton flux = %.2E[cm^2 sr s GeV]^{-1} for E=%.1f[GeV] \n", SpectdNdE(Etest, FluxP), Etest); } } #endif #ifdef RESET_FORMFACTORS { /* The user has approach to form factors which specifies quark contents of proton and nucleon via global parametes like <Type>FF<Nucleon><q> where <Type> can be "Scalar", "pVector", and "Sigma"; <Nucleon> "P" or "N" for proton and neutron <q> "d", "u","s" calcScalarFF( Mu/Md, Ms/Md, sigmaPiN[MeV], sigma0[MeV]) calculates and rewrites Scalar form factors */ printf("protonFF (default) d %E, u %E, s %E\n",ScalarFFPd, ScalarFFPu,ScalarFFPs); printf("neutronFF(default) d %E, u %E, s %E\n",ScalarFFNd, ScalarFFNu,ScalarFFNs); calcScalarFF(0.553,18.9,70.,35.); printf("protonFF (new) d %E, u %E, s %E\n",ScalarFFPd, ScalarFFPu,ScalarFFPs); printf("neutronFF(new) d %E, u %E, s %E\n",ScalarFFNd, ScalarFFNu,ScalarFFNs); /* Option to change parameters of DM velocity distribution */ SetfMaxwell(220.,600.); /* dN ~ exp(-v^2/arg1^2)*Theta(v-arg2) d^3v Earth velocity with respect to Galaxy defined by 'Vearth' parameter. All parameters are in [km/s] units. */ } #endif #ifdef CDM_NUCLEON { double pA0[2],pA5[2],nA0[2],nA5[2]; double Nmass=0.939; /*nucleon mass*/ double SCcoeff; printf("\n==== Calculation of CDM-nucleons amplitudes =====\n"); nucleonAmplitudes(FeScLoop, pA0,pA5,nA0,nA5); printf("CDM-nucleon micrOMEGAs amplitudes:\n"); printf("proton: SI %.3E SD %.3E\n",pA0[0],pA5[0]); printf("neutron: SI %.3E SD %.3E\n",nA0[0],nA5[0]); SCcoeff=4/M_PI*3.8937966E8*pow(Nmass*Mcdm/(Nmass+ Mcdm),2.); printf("CDM-nucleon cross sections[pb]:\n"); printf(" proton SI %.3E SD %.3E\n",SCcoeff*pA0[0]*pA0[0],3*SCcoeff*pA5[0]*pA5[0]); printf(" neutron SI %.3E SD %.3E\n",SCcoeff*nA0[0]*nA0[0],3*SCcoeff*nA5[0]*nA5[0]); } #endif #ifdef CDM_NUCLEUS { double dNdE[300]; double nEvents; printf("\n======== Direct Detection ========\n"); nEvents=nucleusRecoil(Maxwell,73,Z_Ge,J_Ge73,S00Ge73,S01Ge73,S11Ge73,FeScLoop,dNdE); printf("73Ge: Total number of events=%.2E /day/kg\n",nEvents); printf("Number of events in 10 - 50 KeV region=%.2E /day/kg\n", cutRecoilResult(dNdE,10,50)); #ifdef SHOWPLOTS displayRecoilPlot(dNdE,"Distribution of recoil energy of 73Ge",0,199); #endif nEvents=nucleusRecoil(Maxwell,131,Z_Xe,J_Xe131,S00Xe131,S01Xe131,S11Xe131,FeScLoop,dNdE); printf("131Xe: Total number of events=%.2E /day/kg\n",nEvents); printf("Number of events in 10 - 50 KeV region=%.2E /day/kg\n", cutRecoilResult(dNdE,10,50)); #ifdef SHOWPLOTS displayRecoilPlot(dNdE,"Distribution of recoil energy of 131Xe",0,199); #endif nEvents=nucleusRecoil(Maxwell,23,Z_Na,J_Na23,S00Na23,S01Na23,S11Na23,FeScLoop,dNdE); printf("23Na: Total number of events=%.2E /day/kg\n",nEvents); printf("Number of events in 10 - 50 KeV region=%.2E /day/kg\n", cutRecoilResult(dNdE,10,50)); #ifdef SHOWPLOTS displayRecoilPlot(dNdE,"Distribution of recoil energy of 23Na",0,199); #endif nEvents=nucleusRecoil(Maxwell,127,Z_I,J_I127,S00I127,S01I127,S11I127,FeScLoop,dNdE); printf("I127: Total number of events=%.2E /day/kg\n",nEvents); printf("Number of events in 10 - 50 KeV region=%.2E /day/kg\n", cutRecoilResult(dNdE,10,50)); #ifdef SHOWPLOTS displayRecoilPlot(dNdE,"Distribution of recoil energy of 127I",0,199); #endif } #endif #ifdef DECAYS { txtList L; int dim; double width,br; char * pname; printf("\nParticle decays\n"); pname = "h1"; width=pWidth(pname,&L,&dim); printf("%s->%d*x : total width=%E \n and Branchings:\n",pname,dim,width); printTxtList(L,stdout); pname = "l"; width=pWidth(pname,&L,&dim); printf("%s->%d*x : total width=%E \n and Branchings:\n",pname,dim,width); printTxtList(L,stdout); printf("Br(e,Ne,nl)= %E\n",findBr(L,"e,Ne,nl")); pname = "~o2"; width=pWidth(pname,&L,&dim); printf("%s->%d*x : total width=%E \n and Branchings:\n",pname,dim,width); printTxtList(L,stdout); } #endif #ifdef CROSS_SECTIONS { double Pcm=500, cosmin=-0.99, cosmax=0.99, cs; numout* cc; printf("\n====== Calculation of cross section ====\n"); printf(" e^+, e^- annihilation\n"); Pcm=500.; Helicity[0]=0.5; /* helicity : spin projection on direction of motion */ Helicity[1]=-0.5; /* helicities ={ 0.5, -0.5} corresponds to vector state */ printf("Process e,E->2*x at Pcm=%.3E GeV\n",Pcm); cc=newProcess("e%,E%->2*x","eE_2x"); if(cc) { int ntot,l; char * name[4]; procInfo1(cc,&ntot,NULL,NULL); for(l=1;l<=ntot; l++) { int err; double cs; char txt[100]; procInfo2(cc,l,name,NULL); sprintf(txt,"%3s,%3s -> %3s %3s ",name[0],name[1],name[2],name[3]); cs= cs22(cc,l,Pcm,cosmin,cosmax,&err); if(err) printf("%-20.20s Error\n",txt); else if(cs) printf("%-20.20s %.2E [pb]\n",txt,cs); } } } #endif killPlots(); return 0; }
int readlesh_(char *f_name,int len) { FILE *f; char buff[100], name[20]; int n1,n2,i,err=0; double val; char fname[100]; char Zf[3][3]={"Zb","Zt","Zl"}; int MG1ok=0, MG2ok=0, AmOK=0; fName2c(f_name,fname,len); f=fopen(fname,"r"); if(f==NULL) return -2; for(;;) { if(fscanf(f,"%s", buff)== EOF) break; if(buff[0]=='#') { fscanf(f,"%*[^\n]\n"); continue;} for(i=0;buff[i];i++) buff[i]=toupper(buff[i]); if(strcmp(buff,"BLOCK")==0) { char rest[200]; char *c; fscanf(f,"%s",buff); if(fscanf(f,"%[^\n]",rest)) { c=strchr(rest,'#'); if(c) c[0]=0; c=strchr(rest,'='); if(c && 1==sscanf(c+1,"%lf",&val))assignValW("QSUSY",val); } fscanf(f,"%*c"); for(i=0;buff[i];i++) buff[i]=toupper(buff[i]); if(strcmp(buff,"MODSEL")==0) { for(;nfscanf(f,&n1,NULL,&val)==2;) if(n1==1) assignValW("model",val); } else if(strcmp(buff,"SMINPUTS")==0) { for(;nfscanf(f,&n1,NULL,&val)==2;) { switch(n1) { case 1 : assignValW("alfEMZ", 1/val); break; case 2 : assignValW("GF",val); break; case 3 : assignValW("alfSMZ", val); break; case 4 : assignValW("MZ", val); break; case 5 : assignValW("MbMb",val); break; case 6 : assignValW("Mtp",val); break; case 7 : assignValW("Ml",val); break; } } } else if(strcmp(buff,"MINPAR")==0) { int model=findValW("model")+0.1; while(2==nfscanf(f,&n1,NULL,&val)) switch(model) { case 0: if(n1==3) assignValW("tb",val); break; case 1: switch(n1) { case 1: assignValW("M0",val); assignValW("gMHu",val); assignValW("gMHd",val); assignValW("gMl2",val); assignValW("gMl3",val); assignValW("gMr2",val); assignValW("gMr3",val); assignValW("gMq2",val); assignValW("gMq3",val); assignValW("gMu2",val); assignValW("gMd2",val); assignValW("gMu3",val); assignValW("gMd3",val); break; case 2: assignValW("Mhlf",val); assignValW("gMG1",val); assignValW("gMG2",val); assignValW("gMG3",val); break; case 3: assignValW("tb",val); break; case 4: assignValW("sgn",val); break; case 5: assignValW("A0", val); assignValW("gAl",val); assignValW("gAt",val); assignValW("gAb",val); break; } break; case 2: switch(n1) { case 1: assignValW("Lambda",val); break; case 2: assignValW("Mmess",val); break; case 3: assignValW("tb",val); break; case 4: assignValW("sgn",val); break; case 5: assignValW("N5",val); assignValW("N5_1",val); assignValW("N5_2",val); assignValW("N5_3",val); break; case 6: assignValW("Cgrav",val); break; } break; case 3: switch(n1) { case 1: assignValW("M0",val); break; case 2: assignValW("M32",val); break; case 3: assignValW("tb",val); break; case 4: assignValW("sgn",val); break; } break; } } else if(strcmp(buff,"EXTPAR")==0) while(2==nfscanf(f,&n1,NULL,&val)) switch(n1) { case 1 : assignValW("gMG1" , val); break; case 2 : assignValW("gMG2" , val); break; case 3 : assignValW("gMG3" , val); break; case 11 : assignValW("gAt" , val); break; case 12 : assignValW("gAb" , val); break; case 13 : assignValW("gAl" , val); break; case 21 : if(val>0) assignValW("gMHd",sqrt(val)); else assignValW("gMHd",-sqrt(-val)); break; case 22 : if(val>0)assignValW("gMHu", sqrt(val)); else assignValW("gMHu", -sqrt(-val));break; case 23 : assignValW("mu", val); break; case 26 : assignValW("MH3", val); break; case 31 : assignValW("gMl1" , val); break; case 32 : assignValW("gMl2" , val); break; case 33 : assignValW("gMl3" , val); break; case 34 : assignValW("gMr1" , val); break; case 35 : assignValW("gMr2" , val); break; case 36 : assignValW("gMr3" , val); break; case 41 : assignValW("gMq1" , val); break; case 42 : assignValW("gMq2" , val); break; case 43 : assignValW("gMq3" , val); break; case 44 : assignValW("gMu1" , val); break; case 45 : assignValW("gMu2" , val); break; case 46 : assignValW("gMu3" , val); break; case 47 : assignValW("gMd1" , val); break; case 48 : assignValW("gMd2" , val); break; case 49 : assignValW("gMd3" , val); break; case 51 : assignValW("N5_1" , val); break; case 52 : assignValW("N5_2" , val); break; case 53 : assignValW("N5_3" , val); break; } } } fclose(f); return err; }