Exemple #1
0
char * fermPropagTxt(int v,int l,int forReduce)
{  char * proptxt=(char*)malloc(30);
   int P=vcs.vertlist[v][l].partcl;
   int aux=prtclbase1[P].hlp;
   char * mass=prtclbase1[P].massidnt;
   char sgn[4]="";
   int pa=vcs.vertlist[v][l].moment;
   char Ln[4]="";
   char G5[8]="G5";
   char dtwo[4]="";
      
   if(forReduce){strcpy(Ln,"ln,");strcpy(G5,"G(ln,A)");strcpy(dtwo,"/2");}
   
   if(pa<0){ pa=-pa; strcpy(sgn,"-");}
   if(aux=='*') strcpy(proptxt,mass);
   else if(strcmp(mass,"0")) sprintf(proptxt,"%sG(%sp%d)+%s",sgn,Ln,pa,mass);
   else  if(!strchr("LR",aux) && !(PLR_PRTCL&vcs.vertlist[v][l].prop)  ) 
              sprintf(proptxt,"%sG(%sp%d)",sgn,Ln,pa);   
   else if((fermionp(P)&&aux=='L')||(a_fermionp(P)&&aux=='R')) 
              sprintf(proptxt,"%sG(%sp%d)*(1-%s)%s",sgn,Ln,pa,G5,dtwo);
   else if((fermionp(P)&&aux=='R')||(a_fermionp(P)&&aux=='L'))                           
              sprintf(proptxt,"%sG(%sp%d)*(1+%s)%s",sgn,Ln,pa,G5,dtwo);
   else if(sgn[0]==0) sprintf(proptxt,"%sG(%sp%d)*(1+2*Helicity%d*%s)",sgn,Ln,pa,pa,G5);
   else sprintf(proptxt,"%sG(%sp%d)*(1-2*Helicity%d*%s)",sgn,Ln,pa,pa,G5);
   return proptxt;
}   
Exemple #2
0
static void  findfermcycles(void)
{  int  v, v1, l, l1, count;

   for(v=0; v<vcs.sizet; v++) fermmap[v] = 0;

   for(v=0,nloop=0; v<vcs.sizet; v++) if(fermmap[v] == 0)
   {  fermloopstp * FL=&(fermloops[nloop]);
      int vr,lr;
      for(l=vcs.valence[v]-1; l>=0; l--) 
          if(a_fermionp(vcs.vertlist[v][l].partcl)) break;
      if(l< 0) continue;
      count = 0;
      FL->g5 = 0;
      for(v1=v; !fermmap[v1]; nextFerm(&v1,&l),count++)
      {  int nInt=0;
         
         FL->vv[count]=v1+1;
         FL->ll[count]=l+1;
         if(strchr("LR",prtclbase1[vcs.vertlist[v1][l].partcl].hlp)
           || PLR_PRTCL&vcs.vertlist[v1][l].prop) FL->g5=1;
         fermmap[v1]=nloop+1;
         FL->spin[count]=prtclbase1[vcs.vertlist[v1][l].partcl].spin;
         FL->ind[count][0]=vcs.vertlist[v1][l].lorentz;
           lr=vcs.vertlist[v1][l].link.edno;
           vr=vcs.vertlist[v1][l].link.vno;
         FL->ind[count][1]=vcs.vertlist[vr][lr].lorentz; 
               
         for(l1=vcs.valence[v1]-1;l1>=0 ;l1--)  
         {  vectorLn(v1,&l1);
            if(l1>=0 && fermmap[vcs.vertlist[v1][l1].link.vno]==nloop+1) 
                     FL->intln[count][nInt++]=l1+1;
         }
         FL->nint[count]=nInt;         
      } 
      FL->len = count;      
      nloop++;      
   }
}