#include <DifSynchroReader.hh>
Inheritance diagram for DifSynchroReader:
Public Member Functions | |
DifSynchroReader (Run &aRun, FILE *aFile, ui32 lastEventId) | |
~DifSynchroReader () | |
int | getScData () |
int | getNextEvent (Event &eventToFill) |
int | getAcqData (Event &event) |
Static Public Member Functions | |
static const char * | type (const int subtype=0) |
Private Attributes | |
bool | scFound |
Definition at line 27 of file DifSynchroReader.hh.
DifSynchroReader::DifSynchroReader | ( | Run & | aRun, | |
FILE * | aFile, | |||
ui32 | lastEventId | |||
) |
Definition at line 58 of file DifSynchroReader.cpp.
00058 : Hardroc2Reader(aRun, aFile, lastEventId) 00059 { 00060 FILE_LOG(logDEBUG1) << "--DifSynchroReader constructor()"<< endl; 00061 scFound = false; 00062 reset(); 00063 }
DifSynchroReader::~DifSynchroReader | ( | ) |
static const char* DifSynchroReader::type | ( | const int | subtype = 0 |
) | [inline, static] |
Reimplemented from Hardroc2Reader.
Definition at line 31 of file DifSynchroReader.hh.
Referenced by main().
00031 { return DIFSYNCRO; };
int DifSynchroReader::getScData | ( | ) | [virtual] |
Implements Hardroc2Reader.
Definition at line 77 of file DifSynchroReader.cpp.
Referenced by getNextEvent().
00077 { 00078 unsigned int data; 00079 display(+1); 00080 FILE_LOG(logDEBUG) << " Slow Control data header B1 found" << endl; 00081 00082 ui16 dataFormat = run.getDataFormat(); 00083 bool findA1 = false; 00084 difId = getData(1); 00085 display(+1); 00086 FILE_LOG(logDEBUG) << "--- difId[" << difId << "] config ---" << endl; 00087 00088 Dif& dif = run.getDetector().getDifById(difId); 00089 dif.setDifFirmware(getData(2)); 00090 display(+1); 00091 FILE_LOG(logINFO) << "-------- difFirmware[0x" << hex << dif.getDifFirmware() << "]" << endl; 00092 00093 // Verify A1 Header 00094 unsigned char *buf = initGetBits(1, false); 00095 if ( !buf) 00096 { 00097 FILE_LOG(logERROR) << " malloc error while getting SC buffer" << endl; 00098 exit ( -1); 00099 } 00100 00101 int foo = getBits(8); 00102 finishGetBits(); 00103 00104 FILE_LOG(logDEBUG) << "Hreader[" << hex << foo <<"]" << endl; 00105 if ( foo != 0xa1) 00106 { 00107 FILE_LOG(logERROR) << " Header A1 not found" << endl; 00108 exit (-1); 00109 } 00110 FILE_LOG(logDEBUG1) << "Header A1 found" << endl; 00111 00112 return(1); 00113 } // DifSynchroReader.getScData
int DifSynchroReader::getNextEvent | ( | Event & | eventToFill | ) | [virtual] |
Implements Hardroc2Reader.
Definition at line 228 of file DifSynchroReader.cpp.
00228 { 00229 // Start data reconstruction 00230 Level(0); 00231 00232 ui16 dataFormat = run.getDataFormat(); 00233 00234 if (dataFormat == 0) { 00235 // first read of the file 00236 bcIdDifAbsOrgMap.clear(); 00237 // read file header 00238 dataFormat = getData(1); 00239 if ( dataFormat == 0x10 ) { dataFormat = 0xa; } 00240 run.setDataFormat(dataFormat); 00241 00242 00243 if (fileError == EOF) { 00244 FILE_LOG(logERROR) << "parsing file[" << inputFile << "] - error " << errno << ":" << strerror(errno) << endl; 00245 reset(); 00246 return(LAST_FILE_EVENT); 00247 } 00248 display(+1); 00249 FILE_LOG(logINFO) << " DIF SYNCHRO LABVIEW DATA FORMAT : " << dataFormat << endl; 00250 00251 if (dataFormat != 7 && dataFormat != 1 && dataFormat != 10) { 00252 // unknown format 00253 FILE_LOG(logERROR) << " DIF SYNCHRO LABVIEW data format " << dataFormat << " is not implemented" << endl; 00254 reset(); 00255 return(LAST_FILE_EVENT); 00256 } 00257 00258 if ( dataFormat == 10) 00259 { 00260 run.setDaqSoftware( getData(1)); 00261 display(+1); 00262 FILE_LOG(logINFO) << " DAQ software version : " << run.getDaqSoftware() << endl; 00263 00264 run.setCccFirmware(getData(1)); 00265 display(+1); 00266 FILE_LOG(logINFO) << " ccc firware : " << run.getCccFirmware() << endl; 00267 00268 globalTime = getData(4) ; // labview time is second since 1 janv 1970 and globalTime milli second 00269 FILE_LOG(logDEBUG1) << "globalTime in second:[" << globalTime << "]" << endl; 00270 globalTime *= 1000; 00271 FILE_LOG(logDEBUG1) << "globalTime in millisecond:[" << globalTime << "]" << endl; 00272 FILE_LOG(logDEBUG) << " Global timestamp(hex) [" << hex << globalTime << "]" << endl; 00273 00274 } 00275 00276 00277 if (fileError == EOF) 00278 { 00279 FILE_LOG(logDEBUG) << " END OF DATA FILE" << endl; 00280 reset(); 00281 return(LAST_FILE_EVENT); 00282 } 00283 FILE_LOG(logDEBUG) << run.getDetector() << endl; 00284 display(-1); 00285 return NEW_CONFIG; 00286 } 00287 00288 00289 if ( !scFound ) // slow control has nott been readed yet 00290 { 00291 00292 // look for a global data header and process corresponding data 00293 unsigned int globalHeader = getData(1); 00294 if (fileError == EOF) 00295 { 00296 FILE_LOG(logDEBUG) << " END OF DATA FILE" << endl; 00297 reset(); 00298 return(LAST_FILE_EVENT); 00299 } 00300 FILE_LOG(logDEBUG) << "globalHeader:["<< hex << globalHeader << "]" << endl; 00301 if (globalHeader == 0xB1) 00302 { 00303 // slow control data 00304 getScData(); 00305 scFound = true; 00306 } 00307 } 00308 00309 if (fileError == EOF) 00310 { 00311 FILE_LOG(logINFO) << " END OF DATA FILE" << endl; 00312 reset(); 00313 return(LAST_FILE_EVENT); 00314 } 00315 00316 getAcqData(event); 00317 00318 if ( fileError == EOF) 00319 { 00320 FILE_LOG(logINFO) << " END OF DATA FILE" << endl; 00321 reset(); 00322 return(LAST_FILE_EVENT); 00323 } 00324 00325 return EVENT_CORRECT; 00326 }
int DifSynchroReader::getAcqData | ( | Event & | event | ) | [virtual] |
Implements Hardroc2Reader.
Definition at line 117 of file DifSynchroReader.cpp.
Referenced by getNextEvent().
00117 { 00118 00119 bool eventFound = false; 00120 00121 00122 while ( ! eventFound && fileError != EOF ) 00123 { 00124 i32 foo = getData(4); 00125 FILE_LOG(logDEBUG) << hex << "foo[" << foo << "]" << endl; 00126 00127 if ( foo == 0xfffffffa ) 00128 { 00129 // Header Run number ( synchromizsed with previous Run ) 00130 i32 runNumber = getData(4); 00131 FILE_LOG(logINFO) << "Run number[" << runNumber << "]" << endl; 00132 foo = getData(4); 00133 if ( foo != 0xfffffffb ) 00134 { 00135 FILE_LOG(logERROR) << " Trailer Run numbers ( synchromizsed with previous Run ) not FOUND !" << endl; 00136 exit(-1); 00137 } 00138 else FILE_LOG(logDEBUG) << " Trailer Run numbers[0x" << hex << foo <<"]" << endl; 00139 } 00140 else if ( foo == 0xfffffff0 ) 00141 { 00142 // Header Run number ( DEsynchromizsed with previous Run ) 00143 i32 runNumber = getData(4); 00144 FILE_LOG(logINFO) << "Run number[" << runNumber << "]" << endl; 00145 foo = getData(4); 00146 if ( foo != 0xfffffff1 ) 00147 { 00148 FILE_LOG(logERROR) << " Trailer Run numbers ( DEsynchromizsed with previous Run ) not FOUND !" << endl; 00149 exit(-1); 00150 } 00151 else FILE_LOG(logDEBUG) << hex << " Trailer Run numbers[0x" << foo <<"]" << endl; 00152 } 00153 00154 else if ( foo == 0xffffffff ) 00155 { 00156 FILE_LOG(logINFO) << "COMMAND MODE : end of data buffer flags" << endl; 00157 // end of data buffer flags 00158 } 00159 00160 else // it 's an event 00161 { 00162 event.setDifSyncrho(foo); 00163 FILE_LOG(logDEBUG) << "Dif Synchro[0x"<< hex << foo << " ]" << endl; 00164 event.setId(++lastEventId); 00165 eventFound = true; 00166 } 00167 } 00168 return 0; 00169 /* 00170 unsigned int nbHits = 0; 00171 i32 foo = getData(4); 00172 00173 00174 FILE_LOG(logINFO) << hex<< "foo [" << foo << "]" << endl; 00175 if ( foo == 0xfffffffa ) 00176 { 00177 // Header Run number ( synchromizsed with previous Run ) 00178 i32 runNumber = getData(4); 00179 FILE_LOG(logINFO) << "Run number[" << runNumber << "]" << endl; 00180 foo = getData(4); 00181 if ( foo == 0xfffffffb ) 00182 { 00183 // Trailer Run numbers ( synchromizsed with previous Run ) 00184 foo = getData(4); 00185 } 00186 else 00187 { 00188 FILE_LOG(logERROR) << " Trailer Run numbers ( synchromizsed with previous Run ) not FOUND !" << endl; 00189 exit(-1); 00190 } 00191 } 00192 else if ( foo == 0xfffffff0 ) 00193 { 00194 // Header Run number ( DEsynchromizsed with previous Run ) 00195 i32 runNumber = getData(4); 00196 FILE_LOG(logINFO) << "Run number[" << runNumber << "]" << endl; 00197 foo = getData(4); 00198 if ( foo == 0xfffffff1 ) 00199 { 00200 // Trailer Run numbers ( DEsynchromizsed with previous Run ) 00201 exit(-1); 00202 } 00203 else 00204 { 00205 FILE_LOG(logERROR) << " Trailer Run numbers ( DEsynchromizsed with previous Run ) not FOUND !" << endl; 00206 exit(-1); 00207 } 00208 } 00209 00210 else if ( foo == 0xffffffff ) 00211 { 00212 FILE_LOG(logINFO) << "COMMAND MODE : end of data buffer flags" << endl; 00213 foo = getData(4); 00214 // end of data buffer flags 00215 } 00216 00217 event.setDifSyncrho(foo); 00218 FILE_LOG(logINFO) << "Dif Synchro[0x"<< hex << foo << " ]" << endl; 00219 event.setId(++lastEventId); 00220 return 32; 00221 00222 */ 00223 } // DifSynchroReader.getAcqData
bool DifSynchroReader::scFound [private] |
Definition at line 38 of file DifSynchroReader.hh.
Referenced by DifSynchroReader(), and getNextEvent().