fixed bug in reading nemu files

This commit is contained in:
nemu 2008-04-17 07:17:51 +00:00
parent e5fa134ad8
commit ef4819ba07

View File

@ -189,9 +189,10 @@ bool PRunDataHandler::ReadFile()
bool PRunDataHandler::FileAlreadyRead(PMsrRunStructure &runInfo) bool PRunDataHandler::FileAlreadyRead(PMsrRunStructure &runInfo)
{ {
for (unsigned int i=0; i<fData.size(); i++) { for (unsigned int i=0; i<fData.size(); i++) {
if (!fData[i].fRunName.CompareTo(runInfo.fRunName)) // run alread read if (!fData[i].fRunName.CompareTo(runInfo.fRunName)) { // run alread read
return true; return true;
} }
}
return false; return false;
} }
@ -582,13 +583,13 @@ cout << endl << ">> time resolution : " << runData.fTimeResolution;
int status; int status;
unsigned int group_counter = 0; unsigned int group_counter = 0;
int val[10]; int val[10];
while (!f.eof()) { do {
// check if empty line, i.e. new group // check if empty line, i.e. new group
if (IsWhitespace(instr)) { if (IsWhitespace(instr)) {
runData.fDataBin.push_back(histoData); runData.fDataBin.push_back(histoData);
histoData.clear(); histoData.clear();
group_counter++; group_counter++;
} } else {
// extract values // extract values
status = sscanf(instr, "%d %d %d %d %d %d %d %d %d %d", status = sscanf(instr, "%d %d %d %d %d %d %d %d %d %d",
&val[0], &val[1], &val[2], &val[3], &val[4], &val[0], &val[1], &val[2], &val[3], &val[4],
@ -605,8 +606,23 @@ cout << endl << ">> time resolution : " << runData.fTimeResolution;
// feed data // feed data
for (int i=0; i<status; i++) for (int i=0; i<status; i++)
histoData.push_back(val[i]); histoData.push_back(val[i]);
}
f.getline(instr, sizeof(instr)); f.getline(instr, sizeof(instr));
} while (!f.eof());
// handle last line if present
if (strlen(instr) != 0) {
// extract values
status = sscanf(instr, "%d %d %d %d %d %d %d %d %d %d",
&val[0], &val[1], &val[2], &val[3], &val[4],
&val[5], &val[6], &val[7], &val[8], &val[9]);
if (status > 0) {
// feed data
for (int i=0; i<status; i++)
histoData.push_back(val[i]);
}
} }
// save the last histo if not empty // save the last histo if not empty
@ -635,8 +651,8 @@ cout << endl << ">> time resolution : " << runData.fTimeResolution;
cout << endl << "PRunDataHandler::ReadNemuFile(): **ERROR**"; cout << endl << "PRunDataHandler::ReadNemuFile(): **ERROR**";
cout << endl << " expected " << channels << " bins in histo " << i << ", but found " << runData.fDataBin[i].size(); cout << endl << " expected " << channels << " bins in histo " << i << ", but found " << runData.fDataBin[i].size();
// clean up // clean up
for (unsigned int i=0; i<runData.fDataBin.size(); i++) for (unsigned int j=0; j<runData.fDataBin.size(); j++)
runData.fDataBin[i].clear(); runData.fDataBin[j].clear();
runData.fDataBin.clear(); runData.fDataBin.clear();
return false; return false;
} }