Exemple #1
0
static numout * colliderProduction(char * name1,char *name2)
{ 
  char libname[100], process[100], lName1[20], lName2[20];
  numout *cc;
  int i,first;
    
  pname2lib(name1,lName1);
  pname2lib(name2,lName2);
  if(strcmp(lName1,lName2)>0)sprintf(libname,"PP_%s%s",lName1,lName2);
  else                       sprintf(libname,"PP_%s%s",lName2,lName1); 
  sprintf(process,"proton,proton->%s,%s{",name1,name2);
  
  for(i=0,first=1;i<nModelParticles;i++)
  { switch(abs(ModelPrtcls[i].NPDG))
    { case 1: case 2: case 3: case 4: case 5: case 81: case 83:
       if(!first) strcat(process,","); else  first=0;
       sprintf(process+strlen(process),"%s,%s", 
                     ModelPrtcls[i].name,ModelPrtcls[i].aname);  
       break;
       case 21:
       if(!first) strcat(process,",");else  first=0;
       sprintf(process+strlen(process),"%s",
                             ModelPrtcls[i].name);
    }                              
  }
  
  cc=getMEcode(0,ForceUG,process,NULL,"",libname);
  

  return cc;
}
Exemple #2
0
static int  new_code(int k1,int k2)
{
   char lib[40];
   char process[40];
   char lib1[12],lib2[12];
   numout*cc;
   static char* excludeOut=NULL;
  
   if(excludeOut==NULL)
   { int size=100,len=1,i; 
     excludeOut=(char*)malloc(size);
     excludeOut[0]=0;
     
     for(i=0;i<Nodd;i++) 
     { 
       if(size-len<15){size+=100; excludeOut=realloc(excludeOut,size);}  
       sprintf(excludeOut+strlen(excludeOut),",%s",OddPrtcls[i].name);
       len+=strlen(OddPrtcls[i].name)+1;
       if(strcmp(OddPrtcls[i].name,OddPrtcls[i].aname))
       {
        sprintf(excludeOut+strlen(excludeOut),",%s",OddPrtcls[i].aname);
        len+=strlen(OddPrtcls[i].aname)+1;
       }
     }
   }

/*
   char PM;
   if(inNum[k1]>0) PM='P'; else PM='M';
        sprintf(lib1,"%c%d",PM,abs(inNum[k1]));
   if(inNum[k2]>0) PM='P'; else PM='M';
        sprintf(lib2,"%c%d",PM,abs(inNum[k2]));
*/

   pname2lib(inP[k1],lib1);
   pname2lib(inP[k2],lib2); 
    
   sprintf(lib,"omg%s%s",lib1,lib2);
   sprintf(process,"%s,%s->2*x",inP[k1],inP[k2]);
   cc=newProcess_(1,1,process,NULL,excludeOut+1,lib,0);
   if(cc) 
   { (*cc->interface->twidth)=1;
        code22[k1*NC+k2]=cc;
   } else inC[k1*NC+k2]=0;

   return 0;
}   
Exemple #3
0
static int  new_code(int k1,int k2)
{
   char lib[40];
   char process[40];
   char lib1[12],lib2[12];
   numout*cc;
  
   pname2lib(inP[k1],lib1);
   pname2lib(inP[k2],lib2); 
    
   sprintf(lib,"omg_%s%s",lib1,lib2);
   sprintf(process,"%s,%s->2*x",inP[k1],inP[k2]);
   cc=getMEcode(0,ForceUG,process,NULL,txtListOddParticles(),lib);
   if(cc) 
   { (*cc->interface->twidth)=1;
        code22[k1*NC+k2]=cc;
   } else inC[k1*NC+k2]=0;

   return 0;
}   
Exemple #4
0
static double calcSpectrum0(char *name1,char*name2, int forSun,   double *Spectranu, double *SpectraNu)
{
  int i,k;
  double vcsSum=0; 
  int ntot,err;
  double * v_cs;
  
  char name1L[10],name2L[10], lib[20],process[400];
  numout * libPtr;
  
  for(i=0;i<NZ;i++) Spectranu[i]=SpectraNu[i]=0;  

  pname2lib(name1,name1L);
  pname2lib(name2,name2L);
  sprintf(lib,"omg_%s%s",name1L,name2L);
  sprintf(process,"%s,%s->AllEven,1*x{%s",name1,name2,EvenParticles());
// Warning!!   in should be done in the same manner as annihilation libraries for Omega
  libPtr=getMEcode(0,ForceUG,process,NULL,NULL,lib);
  
  
  if(!libPtr) return 0;
  passParameters(libPtr);
  procInfo1(libPtr,&ntot,NULL,NULL); 

  
  v_cs=malloc(sizeof(double)*ntot);
  (*libPtr->interface->twidth)=0;
  
  for(k=0;k<ntot;k++)
  { double m[4];
    char *N[4];
    procInfo2(libPtr,k+1,N,m);
    if((m[2]+m[3])/(m[0]+m[1])<1)
    { 
#ifdef V0    
      v_cs[k]=V0*cs22(libPtr,k+1,V0*m[0]/2,-1.,1.,&err);
#else 
      v_cs[k]= vcs22(libPtr,k+1,&err);
#endif 
      if(v_cs[k]<0) v_cs[k]=0; 
      vcsSum+=v_cs[k];
    } else v_cs[k]=-1;
  }
   
  for(k=0;k<ntot ;k++) if(v_cs[k]>=0)
  { char * N[4];
    double m[4];
    int l, charge3[2],spin2[2],cdim[2],pdg[2];
    int PlusAok=0;

    procInfo2(libPtr,k+1,N,m);
    for(l=0;l<2;l++)  pdg[l]=qNumbers(N[2+l],spin2+l,charge3+l,NULL);

            
    if(v_cs[k]>1.E-3*vcsSum) 
    {  double tab2[NZ]; 
#ifdef PRINT
       { char txt[100];
         sprintf(txt,"%s,%s -> %s %s", N[0],N[1],N[2],N[3]);
         printf("  %-20.20s  %.2E\n",txt,v_cs[k]*2.9979E-26);
       }
#endif       
       for(l=0;l<2;l++) switch(abs(pdg[l]))  
       {  
         case 12: case 14: case 16:
         if(pdg[l]>0)
         {
           basicNuSpectra(forSun,pdg[l],1,tab2);   
           for(i=0;i<NZ;i++) Spectranu[i]+=tab2[i]*v_cs[k]/vcsSum;
         } else 
         {      
           basicNuSpectra(forSun,pdg[l],-1,tab2);
           for(i=0;i<NZ;i++) SpectraNu[i]+=tab2[i]*v_cs[k]/vcsSum;
         }  
         break;
         default:   
         basicNuSpectra(forSun,pdg[l],1,tab2);
          for(i=0;i<NZ;i++) Spectranu[i]+=0.5*tab2[i]*v_cs[k]/vcsSum;
         basicNuSpectra(forSun,pdg[l],-1,tab2);
          for(i=0;i<NZ;i++) SpectraNu[i]+=0.5*tab2[i]*v_cs[k]/vcsSum;    
       }
    } 
  }
  
  free(v_cs);
  return  vcsSum*2.9979E-26;
}