//////////////////////////////// // Events Generator for SAMC // -- Zhihong Ye ///////////////////////////////// /*Include{{{*/ #include #include #include #include #include #include #include #include #include #include #include #include //#include //from root #include #include #include #include #include #include #include /*}}}*/ #define CHAR_LEN 1024 using namespace::std; using namespace::TMath; string gInput; //Input filename string gOutput; //Output filename int gNEvent; //Total Event int getargs(int argc, char**argv); int main(int argc,char** argv){ int err = getargs(argc,argv); if(err<0){ cerr<<"****** I can not recognize the parameters!"< inputdata; FILE* infile; infile=fopen(gInput.c_str(),"r"); char buf[CHAR_LEN]; char data[CHAR_LEN]; int i,j,k; while ( fgets(buf,CHAR_LEN,infile) ) { i=0; while ( buf[i]==' ' ) { i++; } if ( buf[i]!='#' ) { j=0; while ( buf[i]!='#' && buf[i]!='\0' ) { data[j]=buf[i]; i++; j++; } data[j]='\0'; while ( data[--j]==' ' || data[j]=='\t' ) { //remove space or tab at the end of data data[j]='\0'; } inputdata.push_back(data); } //else it's comment, skipped } fclose(infile); k=0; delta_dp=atof(inputdata[k++].c_str()); delta_th=atof(inputdata[k++].c_str()); delta_ph=atof(inputdata[k++].c_str()); Which_Beam_Profile=atoi(inputdata[k++].c_str()); raster_x_size=atof(inputdata[k++].c_str()); raster_y_size=atof(inputdata[k++].c_str()); gaus_x_sigma=atof(inputdata[k++].c_str()); gaus_y_sigma=atof(inputdata[k++].c_str()); beam_x_center=atof(inputdata[k++].c_str()); beam_y_center=atof(inputdata[k++].c_str()); z0=atof(inputdata[k++].c_str()); T_L=atof(inputdata[k++].c_str()); T_H=atof(inputdata[k++].c_str()); cerr<SetSeed(0); for(int iN=0;iNRndm()-0.5)*raster_x_size; beam_y=beam_y_center+(gRandom->Rndm()-0.5)*raster_y_size; } else if ( Which_Beam_Profile==1 ) { beam_x=gRandom->Gaus(beam_x_center,gaus_x_sigma); beam_y=gRandom->Gaus(beam_y_center,gaus_y_sigma); } else if ( Which_Beam_Profile==2 ) { beam_x=beam_x_center+(gRandom->Rndm()-0.5)*raster_x_size; beam_y=beam_y_center+(gRandom->Rndm()-0.5)*raster_y_size; beam_x=gRandom->Gaus(beam_x,gaus_x_sigma); beam_y=gRandom->Gaus(beam_y,gaus_y_sigma); } th_tg_gen=(gRandom->Rndm()-0.5)*delta_th; ph_tg_gen=(gRandom->Rndm()-0.5)*delta_ph; dp_gen=(gRandom->Rndm()-0.5)*delta_dp; reactz_gen=z0+(gRandom->Rndm()-0.5)*T_L; outf <