![]() |
Mixed Data Coincidence Analysis Software 1.0
A program to analyze files produced by the EventMixer software.
|
00001 #include "FileEventParser.hh" 00002 00003 FileEventParser::FileEventParser(char * filename, int nTubes, float detEpsilon, float dRatio) 00004 { 00005 numberOfTubes = nTubes; 00006 detectorEpsilon = detEpsilon; 00007 dominateRatio = dRatio; 00008 myFileStream = fopen(filename,"r"); 00009 if(myFileStream==NULL) 00010 { 00011 fprintf (stderr,"Could not open input event file %s, exiting.", filename); 00012 exit(1); 00013 } 00014 fileEmpty = false; 00015 } 00016 00017 FileEventParser::~FileEventParser() 00018 { 00019 fclose(myFileStream); 00020 } 00021 00022 EventHit * FileEventParser::getNextEventHit() 00023 { 00024 EventHit * eventToReturn; 00025 eventToReturn = new EventHit(numberOfTubes, detectorEpsilon, dominateRatio); 00026 00027 if(fileEmpty) 00028 return NULL; 00029 if(fscanf(myFileStream,"%d %d %d %le", &eventToReturn->eventno, &eventToReturn->Z, &eventToReturn->A, &eventToReturn->time)<4) 00030 { 00031 fileEmpty = true; 00032 return NULL; 00033 } 00034 if(fscanf(myFileStream, "%e %e %e %e", &eventToReturn->UFSP, &eventToReturn->LFSP, &eventToReturn->BSP, &eventToReturn->Ge)<4) 00035 { 00036 fileEmpty = true; 00037 return NULL; 00038 } 00039 for(int j = 0; j<numberOfTubes; j++) 00040 { 00041 if(fscanf(myFileStream,"%e",&eventToReturn->DET[j])<1) 00042 { 00043 fileEmpty = true; 00044 return NULL; 00045 } 00046 } 00047 if(feof(myFileStream)) 00048 { 00049 fileEmpty = true; 00050 } 00051 eventToReturn->ComputeHitType(); 00052 return eventToReturn; 00053 } 00054 00055 bool FileEventParser::hasMoreEvents() 00056 { 00057 return !fileEmpty; 00058 }