示例#1
0
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(); 

}
示例#2
0
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.;}
}
示例#3
0
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;
}
示例#4
0
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.;}
}
示例#5
0
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;                                         
}
示例#6
0
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;
}
示例#7
0
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;
} 
示例#8
0
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;
}
示例#9
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);

}
}
示例#10
0
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;                                         
}
示例#11
0
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;
}
示例#12
0
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;
}
示例#13
0
double btaunu_(double *M, double *P)
{ *M= findValW("Bln" "M");
  *P= findValW("Bln" "P");
  return findValW("Bln" "0");
}
示例#14
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;
  } 
}
示例#15
0
double findvalw_(char*f_name, int len)  /*FORTRAN*/
{
  char c_name[20];
  fName2c(f_name,c_name,len);
  return findValW(c_name);
}
示例#16
0
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;
}
示例#17
0
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;
}
示例#18
0
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); 
}
示例#19
0
double deltams_(double *M, double *P)
{ *M= findValW("DMS" "M");
  *P= findValW("DMS" "P");
  return findValW("DMS" "0");
}
示例#20
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;
}
示例#21
0
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;

}
示例#22
0
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;
}
示例#23
0
double b2sg_(double *M, double *P)
{ *M= findValW("BSGM");
  *P= findValW("BSGP");
   return findValW("BSG0");
}
示例#24
0
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;
}
示例#25
0
文件: wPolar.c 项目: Omer80/wimps
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;
}  
示例#26
0
double bsmumu_(double *M, double *P)
{ *M= findValW("BsMM" "M");
  *P= findValW("BsMM" "P");
  return findValW("BsMM" "0");
}
示例#27
0
文件: loopGamma.c 项目: Omer80/wimps
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;
}  
示例#28
0
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;
}
示例#29
0
文件: main.c 项目: xueweiphy/superpy
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;
}
示例#30
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;
}