Beispiel #1
0
double  initQCD(double MZalphaS, double McMc, double MbMb, double MtP)
{ 
  double Mq,Mq_;

  lambda[5]= findLambda(5,MZalphaS, 91.187);

  MtPole=MtP;

  if(MtP< poleQmass(91.187,MZalphaS, 6)) return -1;  
  
  for(Mq=MtP,Mq_=0;fabs(Mq_-Mq)>0.00001*Mq;)
  { double alpha=alpha3(Mq, lambda[5], 5);
    Mq_=Mq; 
    Mq*=MtP/poleQmass(Mq, alpha, 6);
  }

  qMass[6]= Mq;

  lambda[6]= findLambda(6,alpha3(qMass[6],lambda[5], 5),qMass[6]);
  notInitialized=0;
  
  qMass[5]=0; qMass[4]=0;
  if(MbMb<=lambda[5]) { qMin=lambda[5]; return qMin;}
  
  qMass[5]=MbMb;
  MbPole=poleQmass(MbMb, alpha3(MbMb,lambda[5] ,5),5);

  lambda[4]= findLambda(4,alpha3(qMass[5],lambda[5],5),qMass[5]);

  if(McMc<=lambda[4]) {qMin=lambda[4]; return qMin;}
  qMass[4]=McMc;
  lambda[3]=findLambda(3,alpha3(qMass[4],lambda[4],4),qMass[4]);
                       qMin=lambda[3]; return qMin;
  nfMax=6;
}
Beispiel #2
0
static double findLambda(int nf,double alpha, double M)
{ double l1=0.1, l2=0.3;
  double l,a,a1,a2;

  l2=M*exp(-2*M_PI/alpha/(11-2*nf/3.));
  while((a2=alpha3(M,l2,nf)-alpha) < 0) l2*=1.2;
  l1=l2*0.8;
  while((a1=alpha3(M,l1,nf)-alpha) > 0)  l1*=0.8;

  do{ l=(l1*a2-l2*a1)/(a2-a1);  
      a=alpha3(M,l,nf)-alpha;
      if(a<0) { a1=a;l1=l;} else {a2=a;l2=l;}
    } while (fabs(a) > 0.00001*alpha);
  return l;
}      
Beispiel #3
0
double alphaQCD(double Q) 
{ 
  if(notInitialized) initQCD(0.1172,1.2,4.23,171.4);
  if(Q<qMin) return 1; return alpha3(Q,lambda[NF(Q)],NF(Q));
}
double alphaQCD(double Q) 
{ 
  if(notInitialized) initQCD(0.1184,1.2,4.23,173.07);
  if(Q<qLim) Q=qLim;
  if(Q<qMin) return 1; return alpha3(Q,lambda[NF(Q)],NF(Q));
}