// parsing of the Focal Surface File
// $Id: FocalSurfaceFileParser.cc,v 1.3 2004/06/16 10:46:48 thea Exp $
// M. Pallavicini - created
#include "FocalSurfaceFileParser.hh"
ClassImp(FocalSurfaceFileParser)
// number of columns in focal surface file
#define FSFCOLUMNS 17
// ctor
FocalSurfaceFileParser::FocalSurfaceFileParser( string& fn )
: NumbersFileParser( fn, FSFCOLUMNS ) {
fCurrent = -1;
fOldPmt = 0;
fOldMC = 0;
fOldEC = 0;
fOldChip = 0;
}
// dtor
FocalSurfaceFileParser::~FocalSurfaceFileParser() {
}
// returns PMT number of the current line
// at each call move one line down
// returns 0 when number table is over
int FocalSurfaceFileParser::NewPmtId() {
fCurrent++;
if ( fCurrent >= GetNumLines() ) {
return 0;
}
int n = (int) GetNum( fCurrent, PmtIdCol );
if ( n != (fOldPmt+1) ) {
cerr << "Old = " << fOldPmt << " New=" << n << " Lines=" << GetNumLines() << endl;
throw runtime_error("FocalSurfaceFileParser: Format error in NewPmtId()");
}
fOldPmt = n;
return n;
}
// return macrocell id if we have a new one, otherwise 0
int FocalSurfaceFileParser::NewMacroCell() {
int n = (int) GetNum( fCurrent, MCIdCol );
if ( n == fOldMC ) {
return 0;
}
else if ( n == (fOldMC+1) ) {
fOldMC = n;
return n;
} else {
cerr << "Old = " << fOldMC << " New=" << n << endl;
throw runtime_error("FocalSurfaceFileParser: Format error in NewMacroCell()");
}
}
// return elementary cell id if we have a new one, otherwise 0
int FocalSurfaceFileParser::NewElementaryCell() {
int n = (int) GetNum( fCurrent, ECIdCol );
if ( n == fOldEC ) {
return 0;
}
else if ( n == (fOldEC+1) ) {
fOldEC = n;
return n;
} else {
cerr << "Old = " << fOldEC << " New=" << n << endl;
throw runtime_error("FocalSurfaceFileParser: Format error NewElementaryCell()");
}
}
// return front end chip id if we have a new one, otherwise 0
int FocalSurfaceFileParser::NewFrontEndChip() {
int n = (int) GetNum( fCurrent, ChipIdCol );
if ( n == fOldChip ) {
return 0;
}
else if ( n == (fOldChip+1) ) {
fOldChip = n;
return n;
} else {
cerr << "Old= " << fOldChip << " New=" << n << endl;
throw runtime_error("FocalSurfaceFileParser: Format error in NewFrontEndChip()");
}
}
// geometry parameters: position
const EVector& FocalSurfaceFileParser::Pos() {
fPos[0] = GetNum( fCurrent, PosXCol );
fPos[1] = GetNum( fCurrent, PosYCol );
fPos[2] = GetNum( fCurrent, PosZCol );
return fPos;
}
// geometry parameters: normal
const EVector& FocalSurfaceFileParser::Norm() {
fNorm[0] = GetNum( fCurrent, NormXCol );
fNorm[1] = GetNum( fCurrent, NormYCol );
fNorm[2] = GetNum( fCurrent, NormZCol );
return fNorm;
}
// geometry parameters: direction
const EVector& FocalSurfaceFileParser::Dir() {
fDir[0] = GetNum( fCurrent, DirXCol );
fDir[1] = GetNum( fCurrent, DirYCol );
fDir[2] = GetNum( fCurrent, DirZCol );
return fDir;
}