added LIBC_RAND functionality & x-z view in real TEM mode now
[physik/nlsop.git] / parse_trim_collision.c
index ea59d6b..023c8f6 100644 (file)
@@ -30,10 +30,13 @@ int main(int argc,char **argv) {
 
        int fd,ion,i,j;
        int z,skipped;
-       float en;
+       int avg1,avg2;
+       double en;
+       double max_e;
+       int max_chfi,max_th;
        t_z Z[MAXZ];
        unsigned char hit[MAXZ];
-       char buf[256],*p,value[6],value2[10];
+       char buf[256],*p,value[6],value2[11];
 
        i=0;
 
@@ -47,6 +50,8 @@ int main(int argc,char **argv) {
 
        ion=1;
        skipped=0;
+       avg1=0;
+       avg2=0;
        for(i=0;i<MAXZ;i++) {
                Z[i].cell_hits_from_ions=0;
                Z[i].total_hits=0;
@@ -63,11 +68,25 @@ int main(int argc,char **argv) {
                        j=read(fd,&buf[i],1);
                        if(j<=0) {
                                close(fd);
+                               /* norm */
+                               max_e=Z[0].energy;
+                               max_th=Z[0].total_hits;
+                               max_chfi=Z[0].cell_hits_from_ions;
+                               for(i=0;i<MAXZ;i++) {
+                                       if(Z[i].energy>max_e) max_e=Z[i].energy;
+                                       if(Z[i].total_hits>max_th) max_th=Z[i].total_hits;
+                                       if(Z[i].cell_hits_from_ions>max_chfi) max_chfi=Z[i].cell_hits_from_ions;
+                                       avg1+=Z[i].total_hits;
+                                       avg2+=Z[i].cell_hits_from_ions;
+                               }
                                for(i=0;i<MAXZ;i++) 
-                                       printf("%d %d %f %d\n",i*3,Z[i].total_hits,
-                                                               Z[i].energy,
-                                                               Z[i].cell_hits_from_ions);
+                                       //printf("%d %f %f %f\n",i*3,1.0*Z[i].total_hits/max_th,
+                                       //                      Z[i].energy/max_e,
+                                       //                      1.0*Z[i].cell_hits_from_ions/max_chfi);
+                                       printf("%d %f\n",i*3,1.0*Z[i].total_hits/max_th); // hits
+                                       //printf("%d %f\n",i*3,1.0*Z[i].energy/max_e); // energy
                                printf("skipped = %d\n",skipped);
+                               printf("average hits per ion %d / %d\n",avg1/ion,avg2/ion);
                                return 1;
                        }
                        if(buf[i]=='\n') break;
@@ -75,7 +94,7 @@ int main(int argc,char **argv) {
                }
 
                /* parse line */
-               if((buf[0]=='³')&&(buf[1]!='=')) {
+               if((buf[0]=='³')&&(buf[1]!='=')&&(buf[1]!=' ')) {
                        p=strtok(buf,"³");
                        value[0]=p[0];
                        value[1]=p[1];
@@ -110,8 +129,8 @@ int main(int argc,char **argv) {
                        z=(int)(atof(value2)/30.);
                        if(z>232) skipped+=1;
                        else {
-                               Z[z].energy+=en;
-                               Z[z].total_hits+=1;
+                               //Z[z].energy+=en;
+                               //Z[z].total_hits+=1;
                                hit[z]=1;
                        }
                        if(ion!=atoi(value)) {
@@ -124,8 +143,37 @@ int main(int argc,char **argv) {
                        //      Z[z].energy,Z[z].cell_hits_from_ions);
                        // return 0;
                }
-
-
+               if((buf[0]=='Û')&&(buf[1]==' ')) {
+                       value2[0]=buf[25];
+                       value2[1]=buf[26];
+                       value2[2]=buf[27];
+                       value2[3]=buf[28];
+                       value2[4]='.';
+                       value2[5]=buf[30];
+                       value2[6]=buf[31];
+                       value2[7]=buf[32];
+                       value2[8]=buf[33];
+                       value2[9]='\0';
+                       z=(int)(atof(value2)/30.);
+                       value2[0]=buf[14];
+                       value2[1]=buf[15];
+                       value2[2]=buf[16];
+                       value2[3]=buf[17];
+                       value2[4]=buf[18];
+                       value2[5]='.';
+                       value2[6]=buf[20];
+                       value2[7]=buf[21];
+                       value2[8]=buf[22];
+                       value2[9]=buf[23];
+                       value2[10]='\0';
+                       en=atof(value2);
+                       if(z>232) skipped+=1;
+                       else {
+                               Z[z].energy+=en;
+                               Z[z].total_hits+=1;
+                               hit[z]=1;
+                       }
+               }
        }
        return 0;
 }