/////////////////////////////////////////////////////////////// // EmcParAsciiFileIo // // Class for Emc parameter input/output from/into Ascii file // /////////////////////////////////////////////////////////////// #include "EmcParAsciiFileIo.h" #include "EmcDigiPar.h" ClassImp(EmcParAsciiFileIo) EmcParAsciiFileIo::EmcParAsciiFileIo(fstream* f) : CbmDetParAsciiFileIo(f) { // constructor calls the base class constructor fName="EmcParIo"; } Bool_t EmcParAsciiFileIo::init(CbmParSet* pPar) { // calls the appropriate read function for the container const Text_t* name=pPar->GetName(); cout << "-I- Ascii Io init() " << pPar->GetName() << endl; if (pFile) { if (!strcmp(name,"EmcDigiPar")) return read((EmcDigiPar*)pPar,0,kTRUE); cerr<<"initialization of "<GetName(); if (!strcmp(name,"EmcDigiPar")) return writeFile2((EmcDigiPar*)pPar); //problem with container name cerr< Bool_t EmcParAsciiFileIo::read(T* pPar, Int_t* set, Bool_t needsClear) { // 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 // cout << "-I- Read Ascii IO " << endl; // return kTRUE; const Text_t* name=pPar->GetName(); if (!findContainer(name)) return kFALSE; cout<<"Container found"<clear(); const Int_t maxbuf=155; Text_t buf[maxbuf]; while (!pFile->eof()) { pFile->getline(buf, maxbuf); if (buf[0]=='#') break; if (buf[0]!='/' && buf[0]!='\0') // printf("-I- EmcParAsciiFileIo container name: %s", // pPar->GetName()); pPar->readline(buf,set,pFile); } pPar->setInputVersion(1,inputNumber); pPar->setChanged(); Bool_t allFound=kTRUE; // if (allFound) printf("%s initialized from Ascii file\n",name); printf("%s initialized from Ascii file\n",name); return allFound; } template Int_t EmcParAsciiFileIo::writeFile2(T* pPar) { // template function for all parameter containers with 2 levels // writes the header, loops over the container and calls its member // function writeline(...) pPar->putAsciiHeader(fHeader); writeHeader(pPar->GetName()); // Text_t buf[155]; /* Int_t n0 = (*pPar).getSize(); for(Int_t i0=0; i0writeline(buf,i0,i1)) pFile->write(buf,strlen(buf)); } } pPar->setChanged(kFALSE); pFile->write(sepLine,strlen(sepLine)); */ return 1; }