259 cout <<
" *IceRawTWR Exec* No data input file(s) specified." << endl;
263 Int_t ninfiles=
fInfiles->GetEntries();
266 cout <<
" *IceRawTWR Exec* No data input file(s) specified." << endl;
273 otree=
new TTree(
"T",
"TWR raw data converted to IceEvent structures");
282 if (otree) otree->Branch(
"IceEvent",
"IceEvent",&evt,
fBsize,
fSplit);
294 cout <<
" ***" << endl;
295 cout <<
" *** Start processing of job " << GetName() <<
" ***" << endl;
296 cout <<
" ***" << endl;
297 for (Int_t i=0; i<ninfiles; i++)
299 TObjString* sx=(TObjString*)
fInfiles->At(i);
301 inputfile=sx->GetString();
302 cout <<
" TWR raw data input file : " << inputfile.Data() << endl;
304 cout <<
" Maximum number of events to be processed : " <<
fMaxevt << endl;
305 cout <<
" Print frequency : " <<
fPrintfreq << endl;
308 cout <<
" ROOT output file : " <<
fOutfile->GetName() << endl;
309 cout <<
" Output characteristics : splitlevel = " <<
fSplit <<
" buffersize = " <<
fBsize << endl;
316 params.SetNameTitle(
"IceRawTWR",
"IceRawTWR processor parameters");
321 params.
SetSignal(
float(N_OF_CHANNELS),1);
322 params.
SetSignal(
float(N_OF_TRIGGERS),2);
323 params.
SetSignal(
float(BASELINE_MEAN_MAGIC),3);
324 params.
SetSignal(
float(NSECS_PER_TWR_BIN),4);
332 twr_raw_data_file_t twr_file;
333 Int_t year,runnum,evtnum;
339 UInt_t gpslow,gpshigh,gpssecs;
345 for (Int_t ifile=0; ifile<ninfiles; ifile++)
347 TObjString* sx=(TObjString*)
fInfiles->At(ifile);
350 inputfile=sx->GetString();
351 if (inputfile==
"")
continue;
354 fInput=fopen(inputfile.Data(),
"rb");
358 cout <<
" *IceRawTWR Exec* No input file found with name : " << inputfile.Data() << endl;
366 runnum=twr_file.run_no;
376 cout <<
" *IceRawTWR Exec* Error in header for input file : " << inputfile.Data() << endl;
387 Int_t ncrates=
fHeader->n_crates;
389 Int_t omid,readout,thresh,extstop;
390 for (Int_t icr=0; icr<ncrates; icr++)
392 ntwrs=
fHeader->crate[icr]->n_twr;
393 for (Int_t i_twr=0; i_twr<ntwrs; i_twr++)
395 extstop=
fHeader->crate[icr]->twr[i_twr]->ext_stop;
396 for (Int_t ich=0; ich<CHANNELS_PER_TWR; ich++)
398 omid=
fHeader->crate[icr]->twr[i_twr]->om_no[ich];
399 thresh=
fHeader->crate[icr]->twr[i_twr]->threshold[ich];
400 readout=1+
fHeader->crate[icr]->twr[i_twr]->om_is_optical[ich];
401 if (omid>=0 && omid<=681)
415 evtnum=
fEvent.eventcounter;
419 gpslow=gps.seconds & 0x00FFFFFF;
420 gpshigh=gps.info.bits.seconds;
426 nsecs=100*gps.count_10MHz;
429 if (year<2007) seconds-=24*3600;
436 evt->
SetUT(year,0,seconds,nsecs);
459 if (seldev->
GetSignal(
"Select") < 0.1) evtsel=-1;
461 if (otree && evtsel==1) otree->Fill();
688 char start_str[20],year_str[20],day_str[20],run_no_str[20],
689 file_no_str[20],begin_str[20],end_str[20];
692 filename = strstr(fname,
"twr");
694 if(strncmp(
"twr_", start_str, 4))
696 printf(
"%s\n", filename);
697 return(ERROR_NOT_VALID_FILENAME);
700 strncpy(start_str, filename, 4);
701 if(strncmp(
"twr_", start_str, 4))
703 printf(
"%s %s\n", filename, start_str);
704 return(ERROR_NOT_VALID_FILENAME);
706 strncpy(year_str, &filename[4], 4);
707 twr_file->year = strtol(year_str, 0, 10);
709 if(twr_file->year==2003)
711 strncpy(day_str, &filename[9], 3);
713 twr_file->day = strtol(day_str, 0, 10);
715 strncpy(run_no_str, &filename[13], 4);
716 run_no_str[4] =
'\0';
717 twr_file->run_no = strtol(run_no_str, 0, 10);
719 strncpy(file_no_str, &filename[18], 4);
720 file_no_str[4] =
'\0';
721 twr_file->file_no = strtol(file_no_str, 0, 10);
724 if(twr_file->year==2004)
726 strncpy(day_str, &filename[9], 3);
728 twr_file->day = strtol(day_str, 0, 10);
730 strncpy(run_no_str, &filename[13], 4);
731 run_no_str[4] =
'\0';
732 twr_file->run_no = strtol(run_no_str, 0, 10);
734 strncpy(file_no_str, &filename[18], 4);
735 file_no_str[4] =
'\0';
736 twr_file->file_no = strtol(file_no_str, 0, 10);
738 strncpy(begin_str, &filename[23], 5);
740 twr_file->begin = strtol(begin_str, 0, 10);
742 strncpy(end_str, &filename[29], 5);
744 twr_file->end = strtol(end_str, 0, 10);
747 if(twr_file->year > 2004)
749 strncpy(day_str, &filename[9], 3);
751 twr_file->day = strtol(day_str, 0, 10);
753 strncpy(run_no_str, &filename[13], 6);
754 run_no_str[6] =
'\0';
755 twr_file->run_no = strtol(run_no_str, 0, 10);
757 strncpy(file_no_str, &filename[20], 4);
758 file_no_str[4] =
'\0';
759 twr_file->file_no = strtol(file_no_str, 0, 10);
761 strncpy(begin_str, &filename[25], 5);
763 twr_file->begin = strtol(begin_str, 0, 10);
765 strncpy(end_str, &filename[31], 5);
767 twr_file->end = strtol(end_str, 0, 10);
810 Int_t i_crate, i_twr, i_channel;
811 UInt_t count_twr_in_system = 0;
817 sys = (sys_config_t*) malloc(
sizeof(sys_config_t) );
819 fread(&dummy,
sizeof(UInt_t),1,fin);
821 fread(header_length,
sizeof(UInt_t),1,fin);
822 fread(&sys->clockdiv,
sizeof(UInt_t),1,fin);
823 fread(&sys->n_crates,
sizeof(UInt_t),1,fin);
825 if( (sys->n_crates > MAX_N_CRATES) || (sys->n_crates < 0) )
826 return(ERROR_TOO_MANY_CRATES);
828 for(i_crate=0; i_crate < int(sys->n_crates); i_crate++)
830 sys->crate[i_crate] =
831 (crate_config_t*) malloc(
sizeof(crate_config_t) );
833 fread(&sys->crate[i_crate]->vme_base_bridge,
sizeof(UInt_t),1,fin);
834 fread(&sys->crate[i_crate]->vme_base_100MHz,
sizeof(UInt_t),1,fin);
835 fread(&sys->crate[i_crate]->base_gps,
sizeof(UInt_t),1,fin);
836 fread(&sys->crate[i_crate]->n_twr,
sizeof(UInt_t),1,fin);
838 if( (sys->crate[i_crate]->n_twr > MAX_N_TWR_PER_CRATE)
839 || (sys->crate[i_crate]->n_twr < 0) )
840 return(ERROR_TOO_MANY_TWRS);
842 for(i_twr=0; i_twr < int(sys->crate[i_crate]->n_twr); i_twr++)
844 sys->crate[i_crate]->twr[i_twr] =
845 (twr_config_t*) malloc(
sizeof(twr_config_t) );
846 count_twr_in_system++;
847 fread(&sys->crate[i_crate]->twr[i_twr]->base,
848 sizeof(UInt_t),1,fin);
849 fread(&sys->crate[i_crate]->twr[i_twr]->id,
850 sizeof(UInt_t),1,fin);
852 sys->crate[i_crate]->twr[i_twr]->id
853 = sys->crate[i_crate]->twr[i_twr]->id - 0x10;
856 fread(&dummy,
sizeof(UInt_t),1,fin);
857 fread(&sys->crate[i_crate]->twr[i_twr]->mod_id,
858 sizeof(UInt_t),1,fin);
859 fread(&dummy,
sizeof(UInt_t),1,fin);
860 fread(&sys->crate[i_crate]->twr[i_twr]->ext_start,
861 sizeof(UInt_t),1,fin);
862 fread(&sys->crate[i_crate]->twr[i_twr]->ext_stop,
863 sizeof(UInt_t),1,fin);
864 fread(&dummy,
sizeof(UInt_t),1,fin);
866 for(i_channel = 0; i_channel < CHANNELS_PER_TWR; i_channel++)
868 fread(&sys->crate[i_crate]->twr[i_twr]->om_no[i_channel],
869 sizeof(UInt_t),1,fin);
872 for(i_channel = 0; i_channel < CHANNELS_PER_TWR; i_channel++)
874 fread(&sys->crate[i_crate]->twr[i_twr]->om_is_optical[i_channel],
875 sizeof(UInt_t),1,fin);
878 for(i_channel = 0; i_channel < CHANNELS_PER_TWR; i_channel++)
880 fread(&sys->crate[i_crate]->twr[i_twr]->baseline[i_channel],
881 sizeof(UInt_t),1,fin);
884 for(i_channel = 0; i_channel < CHANNELS_PER_TWR; i_channel++)
886 fread(&sys->crate[i_crate]->twr[i_twr]->threshold[i_channel],
887 sizeof(UInt_t),1,fin);
890 sys->twr_field[(i_crate * 0x10) + i_twr]
891 = sys->crate[i_crate]->twr[i_twr];
894 for(i_channel=0; i_channel < 8; i_channel++)
896 if( sys->crate[i_crate]->twr[i_twr]->om_no[i_channel] == 9000 )
897 sys->crate[i_crate]->twr[i_twr]->om_no[i_channel]
904 sys->n_twr = count_twr_in_system;
912 Int_t i_crate, i_twr, i_channel;
915 UInt_t om_no_r1[CHANNELS_PER_TWR]
916 = {111, 112, 113, 114, 115, 116, 39, 118};
917 UInt_t om_is_optical_r1[CHANNELS_PER_TWR]
918 = {0, 0, 0, 0, 0, 0, 0, 0};
919 UInt_t threshold_r1[CHANNELS_PER_TWR]
920 = {50, 50, 50, 50, 50, 50, 80, 50};
923 UInt_t om_no_r2[CHANNELS_PER_TWR]
924 = {473, 484, 485, 486, 487, 475, 490, 491};
925 UInt_t om_is_optical_r2[CHANNELS_PER_TWR]
926 = {1, 1, 1, 1, 1, 1, 1, 1};
927 UInt_t threshold_r2[CHANNELS_PER_TWR]
928 = {15, 50, 55, 40, 15, 23, 15, 15};
932 UInt_t om_no_r3[CHANNELS_PER_TWR]={345, 184, 185, 38, 187, 188, 189, 190};
933 UInt_t om_is_optical_r3[CHANNELS_PER_TWR]={1, 0, 0, 0, 0, 0, 0, 0};
934 UInt_t threshold_r3[CHANNELS_PER_TWR]={20, 50, 50, 80, 50, 50, 50, 50};
937 UInt_t om_no_r4[CHANNELS_PER_TWR]={183, 346, 454, 450, 635, 10000, 10000, 10000};
938 UInt_t om_is_optical_r4[CHANNELS_PER_TWR]={0, 1, 1, 1, 1, 1, 1, 1};
939 UInt_t threshold_r4[CHANNELS_PER_TWR]={50, 20, 20, 20, 20, 500, 500, 500};
959 if (run_number>=9153 && run_number<=9841)
963 for(i_channel = 0; i_channel < CHANNELS_PER_TWR; i_channel++)
965 sys->crate[i_crate]->twr[i_twr]->om_no[i_channel]=om_no_r1[i_channel];
966 sys->crate[i_crate]->twr[i_twr]->om_is_optical[i_channel]=om_is_optical_r1[i_channel];
967 sys->crate[i_crate]->twr[i_twr]->threshold[i_channel]=threshold_r1[i_channel];
990 if (run_number>=9153 && run_number<=9188)
994 for(i_channel=0; i_channel<CHANNELS_PER_TWR; i_channel++)
996 sys->crate[i_crate]->twr[i_twr]->om_no[i_channel]=om_no_r2[i_channel];
997 sys->crate[i_crate]->twr[i_twr]->om_is_optical[i_channel]=om_is_optical_r2[i_channel];
998 sys->crate[i_crate]->twr[i_twr]->threshold[i_channel]=threshold_r2[i_channel];
1005 if (run_number>=9153 && run_number<=9988)
1009 for(i_channel=0; i_channel<CHANNELS_PER_TWR; i_channel++)
1011 sys->crate[i_crate]->twr[i_twr]->om_no[i_channel]=om_no_r3[i_channel];
1012 sys->crate[i_crate]->twr[i_twr]->om_is_optical[i_channel]=om_is_optical_r3[i_channel];
1013 sys->crate[i_crate]->twr[i_twr]->threshold[i_channel]=threshold_r3[i_channel];
1017 for(i_channel=0; i_channel<CHANNELS_PER_TWR; i_channel++)
1019 sys->crate[i_crate]->twr[i_twr]->om_no[i_channel]=om_no_r4[i_channel];
1020 sys->crate[i_crate]->twr[i_twr]->om_is_optical[i_channel]=om_is_optical_r4[i_channel];
1021 sys->crate[i_crate]->twr[i_twr]->threshold[i_channel]=threshold_r4[i_channel];
1031 UInt_t length_of_event_block;
1033 Int_t n_twr, n_of_waveforms_in_event, read_number;
1034 UInt_t length_wfm[CHANNELS_PER_TWR];
1035 UInt_t dummy, channel_no, om_no, twr_no;
1038 memset(&event_ptr->wfm_filled[0], 0,
sizeof(UInt_t) * N_OF_CHANNELS);
1040 if( !fread(&dummy,
sizeof(UInt_t),1,fin) )
return(1);
1042 if(dummy != 0xbbbbbbbb)
1044 printf(
"Wrong event begin mark %x\n", dummy);
1045 while( (dummy !=0xbbbbbbbb)
1046 && (fread(&dummy,
sizeof(UInt_t),1,fin) != 0) )
1050 if( !fread(&length_of_event_block,
sizeof(UInt_t),1,fin) )
return(1);
1051 if( !fread(&event_ptr->eventcounter,
sizeof(UInt_t),1,fin) )
return(1);
1052 if( !fread(&event_ptr->which_trigger,
sizeof(UInt_t),1,fin) )
return(1);
1053 if( !fread(&event_ptr->gps,
sizeof(GPS_t),1,fin) )
return(1);
1057 while(n_twr <
int(sys->n_twr))
1060 if( !fread(&dummy,
sizeof(UInt_t),1,fin) )
return(1);
1061 if(dummy != 0xffffffff)
1062 {printf(
"Wrong twr begin mark %x\n", dummy);
return(2);}
1063 if( !fread(&twr_no,
sizeof(UInt_t),1,fin) )
return(1);
1068 if( !fread(&event_ptr->twr[twr_no].timestamp,
sizeof(UInt_t),1,fin) )
1070 if( !fread(&n_of_waveforms_in_event,
sizeof(UInt_t),1,fin) )
1072 event_ptr->twr[twr_no].n_wfm = n_of_waveforms_in_event;
1074 for(i_wfm=0; i_wfm < n_of_waveforms_in_event; i_wfm++)
1076 if( !fread(&length_wfm[i_wfm],
sizeof(UInt_t),1,fin) )
return(1);
1080 for(i_wfm=0; i_wfm < n_of_waveforms_in_event; i_wfm++)
1082 if(length_wfm[i_wfm] != 0)
1084 if( !fread(&channel_no,
sizeof(UInt_t),1,fin) )
return(1);
1085 if(sys->twr_field[twr_no]->om_no[channel_no]
1087 om_no = sys->twr_field[twr_no]->om_no[channel_no];
1089 om_no = N_OF_CHANNELS-1;
1093 event_ptr->twr_id_of_om[om_no] = twr_no;
1095 read_number = fread(&event_ptr->wfm[om_no],
1096 length_wfm[i_wfm]-
sizeof(UInt_t),1,fin);
1097 event_ptr->wfm_filled[om_no] = 1;
1098 if( !read_number )
return(1);
1101 read_number*=length_wfm[i_wfm]-
sizeof(UInt_t);
1103 if( read_number !=
int(length_wfm[i_wfm]-
sizeof(UInt_t)) )
1105 cout <<
" read_number : " << read_number
1106 <<
" length_wfm["<<i_wfm<<
"] : " << length_wfm[i_wfm]
1107 <<
" sizeof(UInt_t) : " <<
sizeof(UInt_t) << endl;
1126 memset(trig, 0,
sizeof(trigger_hits_t) );
1129 trig->n_software_trigger=0;
1130 for(Int_t itrigger=0; itrigger<N_OF_TRIGGERS; itrigger++)
1132 if(ev->which_trigger & trigger_bits[itrigger])
1135 trig->trigger_active[itrigger]=1;
1136 trig->n_software_trigger++;
1140 trig->trigger_active[itrigger]=0;
1145 trig->n_hardware_trigger=0;
1146 trig->first_trigger_time=10000000;
1147 trig->first_trigger=-1;
1149 for(Int_t jtrigger=0; jtrigger<N_OF_TRIGGERS; jtrigger++)
1151 if(!trigger_channel[jtrigger])
continue;
1153 if(ev->wfm_filled[trigger_channel[jtrigger]])
1155 trig->trigger_active[jtrigger]=1;
1156 trig->trigger_time[jtrigger]=(ev->wfm[trigger_channel[jtrigger]].value[2] & 0xfff);
1157 trig->trigger_has_pulse[jtrigger]=1;
1158 if (trig->trigger_time[jtrigger] < trig->first_trigger_time)
1160 trig->first_trigger_time=trig->trigger_time[jtrigger];
1161 trig->first_trigger=jtrigger;
1163 trig->n_hardware_trigger++;
1171 Int_t i_value, i_frag, i_edge, i_peak;
1173 if(wfm_om == 0)
return(1);
1177 for(i_frag=0; i_frag < MAX_N_OF_FRAGS; i_frag++)
1179 wfm_om->frag_n_points[i_frag] = 0;
1180 wfm_om->frag_begin[i_frag] = 0;
1181 wfm_om->frag_end[i_frag] = 0;
1182 wfm_om->frag_mean[i_frag] = 0;
1183 wfm_om->frag_begin_time[i_frag] = 0;
1187 for(i_peak=0; i_peak < MAX_N_OF_PEAKS; i_peak++)
1189 wfm_om->peak_begin[i_peak] = 0;
1190 wfm_om->peak_end[i_peak] = 0;
1191 wfm_om->peak_max[i_peak] = 0;
1192 wfm_om->peak_TDC_edge[i_peak] = 0;
1193 wfm_om->peak_local_minimum[i_peak] = 0;
1194 wfm_om->crosstalk_charge_n_value[i_peak] = 0;
1195 wfm_om->peak_in_fragment[i_peak] = 0;
1197 wfm_om->peak_mean[i_peak] = 0.0;
1199 wfm_om->peak_m[i_peak] = 0.0;
1200 wfm_om->peak_b[i_peak] = 0.0;
1201 wfm_om->peak_t0[i_peak] = 0.0;
1202 wfm_om->peak_begin_time[i_peak] = 0.0;
1203 wfm_om->peak_charge[i_peak] = 0.0;
1204 wfm_om->peak_height[i_peak] = 0.0;
1205 wfm_om->fitted_amplitude[i_peak] = 0.0;
1206 wfm_om->fitted_TOT[i_peak] = 0.0;
1207 wfm_om->crosstalk_charge[i_peak] = 0.0;
1208 wfm_om->crosstalk_slope[i_peak] = 0.0;
1211 wfm_om->n_point = 0;
1212 wfm_om->wfm_min = 4095;
1213 wfm_om->wfm_max = 0;
1214 wfm_om->b_out_of_range = 0;
1216 for(i_value=0; i_value < 1024; i_value++)
1218 wfm_om->wfm_x[i_value] = 0;
1219 wfm_om->wfm_y[i_value] = 0;
1222 wfm_om->n_tdc_edges = 0;
1223 for(i_edge=0; i_edge < MAX_N_OF_TDC_EDGES; i_edge++)
1225 wfm_om->leading_edge[i_edge] = 0.0;
1226 wfm_om->falling_edge[i_edge] = 0.0;
1227 wfm_om->identified_twr_hit[i_edge] = -1;
1235 UShort_t wfm_length, mean;
1236 static UShort_t tmp_wf[2000];
1239 Int_t fragment_start = 0;
1240 Int_t frag_count = 0;
1241 Int_t n_position = 0;
1243 Int_t n_fragment = 0;
1244 Int_t b_wrong_value = 0;
1246 UShort_t assumed_frag_begin, last_value;
1248 wfm_om->wfm_min = 4095.0;
1249 wfm_om->wfm_max = 0.0;
1251 if( (f_wfm.value[0] & 0xf000) != 0xf000 )
return(1);
1252 wfm_length = (f_wfm.value[0] & 0xfff)/2;
1254 mean = f_wfm.value[1] + BASELINE_MEAN_MAGIC;
1255 while( ((f_wfm.value[n_word] & 0xf000) == 0x4000) &&
1256 (n_word < wfm_length) &&
1257 (n_fragment < MAX_N_OF_FRAGS) )
1259 fragment_start = f_wfm.value[n_word] & 0xfff;
1261 wfm_om->frag_begin_time[n_fragment]
1262 = fragment_start * NSECS_PER_TWR_BIN;
1263 wfm_om->frag_begin[n_fragment] = n_position;
1264 wfm_om->frag_mean[n_fragment] = mean;
1269 while( ((f_wfm.value[n_word] & 0xf000) != 0x2000) &&
1270 ((f_wfm.value[n_word] & 0xf000) != 0x4000) &&
1272 (n_word < wfm_length) )
1279 tmp_wf[n_word] = f_wfm.value[n_word] + mean;
1280 wfm_om->wfm_y[n_position] = (float) tmp_wf[n_word];
1281 wfm_om->wfm_x[n_position] = (float)
1282 wfm_om->frag_begin_time[n_fragment]
1283 + (frag_count * NSECS_PER_TWR_BIN);
1285 else if(frag_count == 1)
1287 tmp_wf[n_word] = f_wfm.value[n_word] + tmp_wf[n_word-1];
1288 wfm_om->wfm_y[n_position] = (float) tmp_wf[n_word];
1289 wfm_om->wfm_x[n_position] = (float)
1290 wfm_om->frag_begin_time[n_fragment]
1291 + (frag_count * NSECS_PER_TWR_BIN);
1296 2*tmp_wf[n_word-1] + f_wfm.value[n_word];
1297 tmp_wf[n_word] -= tmp_wf[n_word-2];
1299 wfm_om->wfm_y[n_position] = (float) tmp_wf[n_word];
1300 wfm_om->wfm_x[n_position] = (float)
1301 wfm_om->frag_begin_time[n_fragment]
1302 + (frag_count * NSECS_PER_TWR_BIN);
1309 if(tmp_wf[n_word] > 0x1fff)
1318 last_value = tmp_wf[n_word-1];
1319 assumed_frag_begin = 0x4000 + fragment_start + frag_count;
1320 tmp_wf[n_word] = f_wfm.value[n_word] + 2 * last_value;
1321 tmp_wf[n_word] -= assumed_frag_begin;
1322 wfm_om->wfm_y[n_position] = (float) tmp_wf[n_word];
1325 if(tmp_wf[n_word] > 0x1fff) b_wrong_value = 1;
1327 debug = ERROR_MISS_FRAG_STOP;
1333 wfm_om->wfm_y[n_position] = (float) f_wfm.value[n_word];
1334 wfm_om->wfm_x[n_position] = (float)
1335 wfm_om->frag_begin_time[n_fragment]
1336 + (frag_count * NSECS_PER_TWR_BIN);
1341 if(wfm_om->wfm_y[n_position] > wfm_om->wfm_max)
1342 wfm_om->wfm_max = wfm_om->wfm_y[n_position];
1343 if(wfm_om->wfm_y[n_position] < wfm_om->wfm_min)
1344 wfm_om->wfm_min = wfm_om->wfm_y[n_position];
1351 if((f_wfm.value[n_word] & 0xf000) == 0x2000)
1354 wfm_om->frag_end[n_fragment] = n_position - 1;
1355 wfm_om->frag_n_points[n_fragment] =
1356 wfm_om->frag_end[n_fragment]
1357 - wfm_om->frag_begin[n_fragment] + 1;
1358 wfm_om->n_point += wfm_om->frag_n_points[n_fragment];
1362 return(ERROR_CORRUPTED_WF);
1368 wfm_om->n_frag = n_fragment;
1369 if( !(n_word & 0x1) ) n_word++;
1371 if(n_fragment >= MAX_N_OF_FRAGS)
return(ERROR_MAX_N_FRAGMENTS_EXCEEDED);
1375 if (wfm_om->wfm_y[wfm_om->n_point] == 0.0)
1386 wfm_om->frag_n_points[wfm_om->n_frag-1]--;
1387 wfm_om->frag_end[wfm_om->n_frag-1]--;
1389 wfm_om->wfm_min = 4095.0;
1390 wfm_om->wfm_max = 0.0;
1391 for (Int_t i_value=0; i_value < wfm_om->n_point; i_value++)
1393 if (wfm_om->wfm_y[i_value] > wfm_om->wfm_max) wfm_om->wfm_max=wfm_om->wfm_y[i_value];
1394 if (wfm_om->wfm_y[i_value] < wfm_om->wfm_min) wfm_om->wfm_min=wfm_om->wfm_y[i_value];