//_HADES_CLASS_DESCRIPTION /////////////////////////////////////////////////////////////// // HiTofParAsciiFileIo // // Class for iTof parameter input/output from/into Ascii file // /////////////////////////////////////////////////////////////// #include "hitofparasciifileio.h" #include "hitoftrb3lookup.h" #include "hitofcalpar.h" #include "hitofgeompar.h" ClassImp(HiTofParAsciiFileIo) HiTofParAsciiFileIo::HiTofParAsciiFileIo(fstream* f) : HDetParAsciiFileIo(f) { // constructor calls the base class constructor fName = "HiTofParIo"; } Bool_t HiTofParAsciiFileIo::init(HParSet* pPar,Int_t* set) { // calls the appropriate read function for the container const Text_t* name=pPar->GetName(); if (pFile) { if (0 == strncmp(name, "iTofGeomPar", strlen("iTofGeomPar"))) return HDetParAsciiFileIo::read((HDetGeomPar *)pPar, set); if (!strcmp(name,"iTofTrb3Lookup")) { return HDetParAsciiFileIo::readFile((HiTofTrb3Lookup*)pPar); } if (!strcmp(name,"iTofCalPar")) { return read((HiTofCalPar*)pPar,set); } } cerr<<"No input file open"<GetName(); if (0 == strncmp(name, "iTofGeomPar", strlen("iTofGeomPar"))) return HDetParAsciiFileIo::writeFile((HDetGeomPar *)pPar); if (!strcmp(name,"iTofTrb3Lookup")) return HDetParAsciiFileIo::writeFile((HiTofTrb3Lookup*)pPar); if (!strcmp(name,"iTofCalPar")) return writeFile3_x((HiTofCalPar*)pPar); return -1; } cerr<<"No output file open"< Bool_t HiTofParAsciiFileIo::read(T* pPar, Int_t* set) { // template function for all parameter containers // searches the container in the file, reads the data line by line and // called the member function readline(...) of the container class const Text_t* name = pPar->GetName(); if (!findContainer(name)) return kFALSE; const Int_t maxbuf = 800; Text_t buf[maxbuf]; while (!pFile->eof()) { pFile->getline(buf, maxbuf); if (buf[0] == '#') break; if (buf[0] != '/' && buf[0] != '\0') pPar->readline(buf,set); } pPar->setInputVersion(1,inputNumber); pPar->setChanged(); printf("%s: module(s) initialized from Ascii file:\n",name); return checkAllFound(set,6); } template Int_t HiTofParAsciiFileIo::writeFile3_x(T* pPar) { // template function for all parameter containers with 3 levels // writes the header, loops over the container and calls its member // function writeline(...) pPar->putAsciiHeader(fHeader); writeHeader(pPar->GetName()); Text_t buf[800]; Int_t n0 = (*pPar).getSize(); Int_t numberOfLines=(*pPar).getNumberOfChannels(); for(Int_t i0=0; i0writeline(buf, i0, i1, i2, i3)) pFile->write(buf,strlen(buf)); } } } } pPar->setChanged(kFALSE); pFile->write(sepLine,strlen(sepLine)); return 1; }