void resonanceinit(void){ int ires,ires2,iires[4],code,charge,baryon,strangeness,decay; int ibody,nbodies,ichannel,nchannels; int qcheck,bcheck,scheck; int ii,jj; double mass,spin,width,mcheck,branching,qmag2; double checker; double maxsig; char cdummy[40]; int branchptr=-1,lastbranchptr; int sigptr=-1,lastsigptr; FILE *fptr1; FILE *fptr2; fptr1=fopen("resonance_info/resonance_list.dat","r"); for(ires=1;ires<=nres;ires++){ fscanf(fptr1,"%d %lf %d %d %d %lf %d %lf", &code,&mass,&charge,&baryon,&strangeness,&spin,&decay,&width); fgets(cdummy,21,fptr1); resinfo[ires].code=code; resinfo[ires].mass=mass; resinfo[ires].charge=charge; resinfo[ires].baryon=baryon; resinfo[ires].strangeness=strangeness; resinfo[ires].degen=(int)(2.0*spin+1.00001); resinfo[ires].decay=decay; resinfo[ires].width=width; resinfo[ires].minmass=mass; resinfo[ires].firstbranch=-1; for(ires2=1;ires2<=nres;ires2++) { firstsigptr[ires2][ires]=-1; b2elastic[ires2][ires]=0.8/pi; if(abs(resinfo[ires].baryon)>0) b2elastic[ires2][ires]=b2elastic[ires2][ires]+0.4/pi; if(abs(resinfo[ires2].baryon)>0) b2elastic[ires2][ires]=b2elastic[ires2][ires]+0.4/pi; b2elastic[ires2][ires]=b2elastic[ires2][ires]*sigma_elastic_scale; b2elastic[ires][ires2]=b2elastic[ires2][ires]; biggestb2[ires2][ires]=b2elastic[ires2][ires]; biggestb2[ires][ires2]=biggestb2[ires2][ires]; } //printf("------- ires=%d mass= %f ------\n",ires,resinfo[ires].mass); } fclose(fptr1); /*fptr1.close();*/ fptr2=fopen("resonance_info/resonance_decay.dat","r"); while (feof(fptr2)==0){ fscanf(fptr2,"%d %lf %d %d %d %lf %d %lf", &code,&mass,&charge,&baryon,&strangeness,&spin,&decay,&width); //printf("^^^^^^^^^^ code=%d mass=%f ",code,mass); fgets(cdummy,21,fptr2); //printf(" %s",cdummy); for(ires=1;ires<=nres;ires++){ if(resinfo[ires].code==code){ iires[0]=ires; goto FOUND_IRES0; } } printf("Failed to find ires!"); printf(" mystery code is %d\n",code); exit(1); FOUND_IRES0: checker=0.0; fscanf(fptr2,"%d %d",&code,&nchannels); for(ichannel=0;ichannelresinfo[iires[0]].mass) { printf("code of decaying resonance=%d\n",resinfo[iires[0]].code); printf("mother of all masses=%g\n",resinfo[iires[0]].mass); printf("mcheck=%g\n",mcheck); printf("Masses out of balance in init.\n"); exit(1); } if(bcheck!=resinfo[iires[0]].baryon) { printf("code of decaying resonance=%d\n",resinfo[iires[0]].code); printf("mother of all baryons=%d\n",resinfo[iires[0]].baryon); printf("mcheck=%d\n",bcheck); printf("Baryon conservation out of balance in init.\n"); exit(1); } if(qcheck>resinfo[iires[0]].charge) { printf("code of decaying resonance=%d\n",resinfo[iires[0]].code); printf("mother of all charges=%d\n",resinfo[iires[0]].charge); printf("mcheck=%d\n",qcheck); printf("Charge out of balance in init. code=%d\n",code); exit(1); } if(scheck>resinfo[iires[0]].strangeness) { printf("code of decaying resonance=%d\n",resinfo[iires[0]].code); printf("mother of all strangnesss=%d\n",resinfo[iires[0]].strangeness); printf("mcheck=%d\n",scheck); printf("strangeness out of balance in init.\n"); exit(1); } if(mcheckpi*biggestb2[iires[1]][iires[2]]){ biggestb2[iires[1]][iires[2]]=maxsig/pi; biggestb2[iires[2]][iires[1]]=maxsig/pi; } //printf("degens %d %d %d\n",resinfo[iires[0]].degen, //resinfo[iires[1]].degen,resinfo[iires[2]].degen); //printf("codes %d %d %d\n",resinfo[iires[0]].code, //resinfo[iires[1]].code,resinfo[iires[2]].code); //printf("masses %g %g %g\n",resinfo[iires[0]].mass, //resinfo[iires[1]].mass,resinfo[iires[2]].mass); //printf("For channel %d-> %d,%d, maxsig=%g width=%g branching=%g\n", //iires[0],iires[1],iires[2],maxsig,width,branching); siginfo[sigptr].nextsigptr=-1; if(firstsigptr[iires[1]][iires[2]]==-1){ firstsigptr[iires[1]][iires[2]]=sigptr; firstsigptr[iires[2]][iires[1]]=sigptr; } else{ siginfo[sigptr-1].nextsigptr=sigptr; } } //printf("Finished %d out of %d channels\n",ichannel+1,nchannels); } if(fabs(checker-1.0)>0.01) { printf("Channel weights don't add to unity =%g\n",checker); exit(1); } //printf("Net branch weight= %f\n",checker); } //printf("Exiting resonanceinit\n"); fclose(fptr2); // for(ii=2;ii