#include #include void calc_stats(char *filename); int main(int argc, char *argv[]) { if (argc > 1) calc_stats(argv[1]); else calc_stats("logfile"); } void calc_stats(char *filename) { int START, DONE, i; FILE *OUTPUT, *LOGFILE; static char line[20], number[20],chamber[20],junk[20],anode[20],cathode[20]; int events,index; float new_ctd_lct[10],new_and_lct[10],old_ctd_lct[10],old_and_lct[10] ,chamber_type[10]; float eff1, eff2, eff3, eff4, sum; if ((LOGFILE = fopen(filename,"r"))==0) { printf("Can't open the history file!!!\n"); exit(-1); } for (i = 0; i < 10; i++) { new_ctd_lct[i] = 0; new_and_lct[i] = 0; old_ctd_lct[i] = 0; old_and_lct[i] = 0; chamber_type[i] = 0; } events = 0; while(fscanf(LOGFILE,"%s",line)!=EOF){ if(strcmp(line,"GTRIGI:") == 0) events++; if(strcmp(line,"chamber") ==0) { /* have chamber type line*/ fscanf(LOGFILE,"%s %s %s",line, number,chamber); chamber_type[atoi(chamber)-1]++; } if(strcmp(line,"ID(") == 0) { /* have LCT found line */ fscanf(LOGFILE,"%s",chamber); index = atoi(chamber) - 1; fscanf(LOGFILE,"%s",line); if (strcmp(line,")") == 0) { /* have new LCT */ fscanf(LOGFILE,"%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s", junk,junk,junk,junk,junk,junk,junk,junk,junk,junk,junk,junk, junk,cathode,junk,anode); if (strcmp(cathode,"0") != 0) new_ctd_lct[index]++; if (strcmp(anode,"0") != 0) new_and_lct[index]++; } else { /* have old LCT */ fscanf(LOGFILE,"%s %s %s %s %s %s %s %s",junk,junk,junk,junk ,junk,junk,junk,junk); if (strcmp(junk,"w") == 0) old_and_lct[index]++; else if (strcmp(junk,"s") == 0) old_ctd_lct[index]++; } } } fclose(LOGFILE); printf("%d total events\n",events); printf("Type\t\tME1/A\tME1/1\tME1/2\tME1/3\tME2/1\tME3/1\tME4/1\tME2/2\tME3/2\tME4/2\n"); printf("Hits in chamber"); for (i = 0; i < 10; i++) printf("\t%3.0f",chamber_type[i]); printf("\nNew Ctd hits"); for (i = 0; i < 10; i++) printf("\t%3.0f",new_ctd_lct[i]); printf("\nNew And hits"); for (i = 0; i < 10; i++) printf("\t%3.0f",new_and_lct[i]); printf("\nOld Ctd hits"); for (i = 0; i < 10; i++) printf("\t%3.0f",old_ctd_lct[i]); printf("\nOld And hits"); for (i = 0; i < 10; i++) printf("\t%3.0f",old_and_lct[i]); printf("\nNew Ctd eff"); for (i = 0; i < 10; i++) printf("\t%3.1f",new_ctd_lct[i]/chamber_type[i]*100.); printf("\nNew And eff"); for (i = 0; i < 10; i++) printf("\t%3.1f",new_and_lct[i]/chamber_type[i]*100.); printf("\nOld Ctd eff"); for (i = 0; i < 10; i++) printf("\t%3.1f",old_ctd_lct[i]/chamber_type[i]*100.); printf("\nOld And eff"); for (i = 0; i < 10; i++) printf("\t%3.1f",old_and_lct[i]/chamber_type[i]*100.); printf("\n\nStation \t1\t2\t3\t4\n"); printf("New Ctd \t%3.1f\t%3.1f\t%3.1f\t%3.1f\n" ,(new_ctd_lct[0]+new_ctd_lct[1]+new_ctd_lct[2] +new_ctd_lct[3])/(chamber_type[0]+chamber_type[1]+ chamber_type[2]+chamber_type[3])*100. ,(new_ctd_lct[4]+new_ctd_lct[7])/ (chamber_type[4]+chamber_type[7])*100. ,(new_ctd_lct[5]+new_ctd_lct[8])/ (chamber_type[5]+chamber_type[8])*100. ,(new_ctd_lct[6]+new_ctd_lct[9])/ (chamber_type[9]+chamber_type[6])*100.); printf("New And \t%3.1f\t%3.1f\t%3.1f\t%3.1f\n" ,(new_and_lct[0]+new_and_lct[1]+new_and_lct[2] +new_and_lct[3])/(chamber_type[0]+chamber_type[1]+ chamber_type[2]+chamber_type[3])*100. ,(new_and_lct[4]+new_and_lct[7])/ (chamber_type[4]+chamber_type[7])*100. ,(new_and_lct[5]+new_and_lct[8])/ (chamber_type[5]+chamber_type[8])*100. ,(new_and_lct[6]+new_and_lct[9])/ (chamber_type[9]+chamber_type[6])*100.); printf("Old Ctd \t%3.1f\t%3.1f\t%3.1f\t%3.1f\n" ,(old_ctd_lct[0]+old_ctd_lct[1]+old_ctd_lct[2] +old_ctd_lct[3])/(chamber_type[0]+chamber_type[1]+ chamber_type[2]+chamber_type[3])*100. ,(old_ctd_lct[4]+old_ctd_lct[7])/ (chamber_type[4]+chamber_type[7])*100. ,(old_ctd_lct[5]+old_ctd_lct[8])/ (chamber_type[5]+chamber_type[8])*100. ,(old_ctd_lct[6]+old_ctd_lct[9])/ (chamber_type[9]+chamber_type[6])*100.); printf("Old And \t%3.1f\t%3.1f\t%3.1f\t%3.1f\n" ,(old_and_lct[0]+old_and_lct[1]+old_and_lct[2] +old_and_lct[3])/(chamber_type[0]+chamber_type[1]+ chamber_type[2]+chamber_type[3])*100. ,(old_and_lct[4]+old_and_lct[7])/ (chamber_type[4]+chamber_type[7])*100. ,(old_and_lct[5]+old_and_lct[8])/ (chamber_type[5]+chamber_type[8])*100. ,(old_and_lct[6]+old_and_lct[9])/ (chamber_type[9]+chamber_type[6])*100.); OUTPUT = fopen("chamber.dat","w"); fprintf(OUTPUT,"> Station NewAnode err1 NewCathode err2 OldAnode err3 OldCathode err4\n"); for (i = 0; i < 10; i++) { eff1 = new_ctd_lct[i]/chamber_type[i]; eff2 = new_and_lct[i]/chamber_type[i]; eff3 = old_ctd_lct[i]/chamber_type[i]; eff4 = old_and_lct[i]/chamber_type[i]; fprintf(OUTPUT,"%d\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\n" ,i+1,eff1*100.,sqrt(eff1*(1.-eff1)/chamber_type[i])*100. ,eff2*100.,sqrt(eff2*(1.-eff2)/chamber_type[i])*100. ,eff3*100.,sqrt(eff3*(1.-eff3)/chamber_type[i])*100. ,eff4*100.,sqrt(eff4*(1.-eff4)/chamber_type[i])*100.); } fclose(OUTPUT); OUTPUT = fopen("station.dat","w"); fprintf(OUTPUT,"> Station NewAnode err1 NewCathode err2 OldAnode err3 OldCathode err4\n"); sum = chamber_type[0]+chamber_type[1]+chamber_type[2]+chamber_type[3]; eff1 = (new_ctd_lct[0]+new_ctd_lct[1]+new_ctd_lct[2]+new_ctd_lct[3])/sum; eff2 = (new_and_lct[0]+new_and_lct[1]+new_and_lct[2]+new_and_lct[3])/sum; eff3 = (old_ctd_lct[0]+old_ctd_lct[1]+old_ctd_lct[2]+old_ctd_lct[3])/sum; eff4 = (old_and_lct[0]+old_and_lct[1]+old_and_lct[2]+old_and_lct[3])/sum; fprintf(OUTPUT,"1\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\n" ,eff1*100.,sqrt(eff1*(1.-eff1)/sum)*100. ,eff2*100.,sqrt(eff2*(1.-eff2)/sum)*100. ,eff3*100.,sqrt(eff3*(1.-eff3)/sum)*100. ,eff4*100.,sqrt(eff4*(1.-eff4)/sum)*100.); sum = chamber_type[4]+chamber_type[7]; eff1 = (new_ctd_lct[4]+new_ctd_lct[7])/sum; eff2 = (new_and_lct[4]+new_and_lct[7])/sum; eff3 = (old_ctd_lct[4]+old_ctd_lct[7])/sum; eff4 = (old_and_lct[4]+old_and_lct[7])/sum; fprintf(OUTPUT,"2\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\n" ,eff1*100.,sqrt(eff1*(1.-eff1)/sum)*100. ,eff2*100.,sqrt(eff2*(1.-eff2)/sum)*100. ,eff3*100.,sqrt(eff3*(1.-eff3)/sum)*100. ,eff4*100.,sqrt(eff4*(1.-eff4)/sum)*100.); sum = chamber_type[5]+chamber_type[8]; eff1 = (new_ctd_lct[5]+new_ctd_lct[8])/sum; eff2 = (new_and_lct[5]+new_and_lct[8])/sum; eff3 = (old_ctd_lct[5]+old_ctd_lct[8])/sum; eff4 = (old_and_lct[5]+old_and_lct[8])/sum; fprintf(OUTPUT,"3\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\n" ,eff1*100.,sqrt(eff1*(1.-eff1)/sum)*100. ,eff2*100.,sqrt(eff2*(1.-eff2)/sum)*100. ,eff3*100.,sqrt(eff3*(1.-eff3)/sum)*100. ,eff4*100.,sqrt(eff4*(1.-eff4)/sum)*100.); sum = chamber_type[6]+chamber_type[9]; eff1 = (new_ctd_lct[6]+new_ctd_lct[9])/sum; eff2 = (new_and_lct[6]+new_and_lct[9])/sum; eff3 = (old_ctd_lct[6]+old_ctd_lct[9])/sum; eff4 = (old_and_lct[6]+old_and_lct[9])/sum; fprintf(OUTPUT,"4\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\t%3.1f\n" ,eff1*100.,sqrt(eff1*(1.-eff1)/sum)*100. ,eff2*100.,sqrt(eff2*(1.-eff2)/sum)*100. ,eff3*100.,sqrt(eff3*(1.-eff3)/sum)*100. ,eff4*100.,sqrt(eff4*(1.-eff4)/sum)*100.); fclose(OUTPUT); }