#include "hwallparasciifileio.h"
#include "hwalllookup.h"
#include "hwalltrb2lookup.h"
#include "hwallcalpar.h"
#include "hdetector.h"
#include "hwalldetector.h"
ClassImp(HWallParAsciiFileIo)
HWallParAsciiFileIo::HWallParAsciiFileIo(fstream* f) : HDetParAsciiFileIo(f) {
fName="HWallParIo";
}
Bool_t HWallParAsciiFileIo::init(HParSet* pPar,Int_t* set) {
const Text_t* name=pPar->GetName();
if (pFile) {
pFile->clear();
pFile->seekg(0,ios::beg);
if (!strcmp(name,"WallLookup")) return read((HWallLookup*)pPar,set);
if (!strcmp(name,"WallCalPar")) return read((HWallCalPar*)pPar,set);
if (!strcmp(name,"WallTrb2Lookup")) return read((HWallTrb2Lookup*)pPar);
if (!strcmp(name,"WallGeomPar"))
return HDetParAsciiFileIo::read((HDetGeomPar*)pPar,set);
Error("init(HParSet*,Int_t*)",
"initialization of %s not possible from ASCII file!",name);
return kFALSE;
}
Error("init(HParSet*,Int_t*)","No input file open");
return kFALSE;
}
Int_t HWallParAsciiFileIo::write(HParSet* pPar) {
if (pFile) {
const Text_t* name=pPar->GetName();
if (!strcmp(name,"WallLookup")) return writeFile3((HWallLookup*)pPar);
if (!strcmp(name,"WallCalPar")) return writeFile1((HWallCalPar*)pPar);
if (!strcmp(name,"WallTrb2Lookup")) return write((HWallTrb2Lookup*)pPar);
if (!strcmp(name,"WallGeomPar"))
return HDetParAsciiFileIo::writeFile((HDetGeomPar*)pPar);
Error("write(HParSet*)","%s could not be written to ASCII file",name);
return -1;
}
Error("write(HParSet*)","No output file open");
return -1;
}
template<class T> Bool_t HWallParAsciiFileIo::read(T* pPar) {
if (!findContainer(pPar->GetName())) return kFALSE;
pPar->clear();
const Int_t maxbuf=155;
Text_t buf[maxbuf];
Bool_t rc=kTRUE;
while (!pFile->eof()&&rc) {
pFile->getline(buf, maxbuf);
if (buf[0]=='#') break;
if (buf[0]!='/' && buf[0]!='\0') rc=pPar->readline(buf);
}
if (rc) {
pPar->setInputVersion(1,inputNumber);
pPar->setChanged();
printf("%s initialized from Ascii file\n",pPar->GetName());
}
return rc;
}
template<class T> Bool_t HWallParAsciiFileIo::read(T* pPar, Int_t* set) {
const Text_t* name=pPar->GetName();
if (!findContainer(name)) return kFALSE;
pPar->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') pPar->readline(buf,set);
}
Bool_t allFound=kFALSE;
if (set[0]==999) {
set[0]=1;
allFound=kTRUE;
printf("%s initialized from ASCII file\n",name);
pPar->setInputVersion(1,inputNumber);
pPar->setChanged();
}
return allFound;
}
template<class T> Int_t HWallParAsciiFileIo::write(T* pPar) {
pPar->putAsciiHeader(fHeader);
writeHeader(pPar->GetName(),pPar->getParamContext());
pPar->write(*pFile);
pFile->write(sepLine,strlen(sepLine));
pPar->setChanged(kFALSE);
return 1;
}
template<class T> Int_t HWallParAsciiFileIo::writeFile1(T* pPar) {
pPar->putAsciiHeader(fHeader);
writeHeader(pPar->GetName());
Text_t buf[155];
for(Int_t i=0; i<(*pPar).getSize(); i++) {
if (pPar->writeline(buf,i)) pFile->write(buf,strlen(buf));
}
pPar->setChanged(kFALSE);
pFile->write(sepLine,strlen(sepLine));
return 1;
}
template<class T> Int_t HWallParAsciiFileIo::writeFile3(T* pPar) {
pPar->putAsciiHeader(fHeader);
writeHeader(pPar->GetName());
Text_t buf[155];
Int_t n0 = (*pPar).getSize();
for(Int_t i0=0; i0<n0; i0++) {
Int_t n1 = (*pPar)[i0].getSize();
for(Int_t i1=0; i1<n1; i1++) {
Int_t n2 = (*pPar)[i0][i1].getSize();
for(Int_t i2=0; i2<n2; i2++) {
if (pPar->writeline(buf, i0, i1, i2))
pFile->write(buf,strlen(buf));
}
}
}
pPar->setChanged(kFALSE);
pFile->write(sepLine,strlen(sepLine));
return 1;
}
hwallparasciifileio.cc:10 hwallparasciifileio.cc:11 hwallparasciifileio.cc:12 hwallparasciifileio.cc:13 hwallparasciifileio.cc:14 hwallparasciifileio.cc:15 hwallparasciifileio.cc:16 hwallparasciifileio.cc:17 hwallparasciifileio.cc:18 hwallparasciifileio.cc:19 hwallparasciifileio.cc:20 hwallparasciifileio.cc:21 hwallparasciifileio.cc:22 hwallparasciifileio.cc:23 hwallparasciifileio.cc:24 hwallparasciifileio.cc:25 hwallparasciifileio.cc:26 hwallparasciifileio.cc:27 hwallparasciifileio.cc:28 hwallparasciifileio.cc:29 hwallparasciifileio.cc:30 hwallparasciifileio.cc:31 hwallparasciifileio.cc:32 hwallparasciifileio.cc:33 hwallparasciifileio.cc:34 hwallparasciifileio.cc:35 hwallparasciifileio.cc:36 hwallparasciifileio.cc:37 hwallparasciifileio.cc:38 hwallparasciifileio.cc:39 hwallparasciifileio.cc:40 hwallparasciifileio.cc:41 hwallparasciifileio.cc:42 hwallparasciifileio.cc:43 hwallparasciifileio.cc:44 hwallparasciifileio.cc:45 hwallparasciifileio.cc:46 hwallparasciifileio.cc:47 hwallparasciifileio.cc:48 hwallparasciifileio.cc:49 hwallparasciifileio.cc:50 hwallparasciifileio.cc:51 hwallparasciifileio.cc:52 hwallparasciifileio.cc:53 hwallparasciifileio.cc:54 hwallparasciifileio.cc:55 hwallparasciifileio.cc:56 hwallparasciifileio.cc:57 hwallparasciifileio.cc:58 hwallparasciifileio.cc:59 hwallparasciifileio.cc:60 hwallparasciifileio.cc:61 hwallparasciifileio.cc:62 hwallparasciifileio.cc:63 hwallparasciifileio.cc:64 hwallparasciifileio.cc:65 hwallparasciifileio.cc:66 hwallparasciifileio.cc:67 hwallparasciifileio.cc:68 hwallparasciifileio.cc:69 hwallparasciifileio.cc:70 hwallparasciifileio.cc:71 hwallparasciifileio.cc:72 hwallparasciifileio.cc:73 hwallparasciifileio.cc:74 hwallparasciifileio.cc:75 hwallparasciifileio.cc:76 hwallparasciifileio.cc:77 hwallparasciifileio.cc:78 hwallparasciifileio.cc:79 hwallparasciifileio.cc:80 hwallparasciifileio.cc:81 hwallparasciifileio.cc:82 hwallparasciifileio.cc:83 hwallparasciifileio.cc:84 hwallparasciifileio.cc:85 hwallparasciifileio.cc:86 hwallparasciifileio.cc:87 hwallparasciifileio.cc:88 hwallparasciifileio.cc:89 hwallparasciifileio.cc:90 hwallparasciifileio.cc:91 hwallparasciifileio.cc:92 hwallparasciifileio.cc:93 hwallparasciifileio.cc:94 hwallparasciifileio.cc:95 hwallparasciifileio.cc:96 hwallparasciifileio.cc:97 hwallparasciifileio.cc:98 hwallparasciifileio.cc:99 hwallparasciifileio.cc:100 hwallparasciifileio.cc:101 hwallparasciifileio.cc:102 hwallparasciifileio.cc:103 hwallparasciifileio.cc:104 hwallparasciifileio.cc:105 hwallparasciifileio.cc:106 hwallparasciifileio.cc:107 hwallparasciifileio.cc:108 hwallparasciifileio.cc:109 hwallparasciifileio.cc:110 hwallparasciifileio.cc:111 hwallparasciifileio.cc:112 hwallparasciifileio.cc:113 hwallparasciifileio.cc:114 hwallparasciifileio.cc:115 hwallparasciifileio.cc:116 hwallparasciifileio.cc:117 hwallparasciifileio.cc:118 hwallparasciifileio.cc:119 hwallparasciifileio.cc:120 hwallparasciifileio.cc:121 hwallparasciifileio.cc:122 hwallparasciifileio.cc:123 hwallparasciifileio.cc:124 hwallparasciifileio.cc:125 hwallparasciifileio.cc:126 hwallparasciifileio.cc:127 hwallparasciifileio.cc:128 hwallparasciifileio.cc:129 hwallparasciifileio.cc:130 hwallparasciifileio.cc:131 hwallparasciifileio.cc:132 hwallparasciifileio.cc:133 hwallparasciifileio.cc:134 hwallparasciifileio.cc:135 hwallparasciifileio.cc:136 hwallparasciifileio.cc:137 hwallparasciifileio.cc:138 hwallparasciifileio.cc:139 hwallparasciifileio.cc:140 hwallparasciifileio.cc:141 hwallparasciifileio.cc:142 hwallparasciifileio.cc:143 hwallparasciifileio.cc:144 hwallparasciifileio.cc:145 hwallparasciifileio.cc:146 hwallparasciifileio.cc:147 hwallparasciifileio.cc:148 hwallparasciifileio.cc:149 hwallparasciifileio.cc:150 hwallparasciifileio.cc:151 hwallparasciifileio.cc:152 hwallparasciifileio.cc:153 hwallparasciifileio.cc:154 hwallparasciifileio.cc:155 hwallparasciifileio.cc:156 hwallparasciifileio.cc:157 hwallparasciifileio.cc:158 hwallparasciifileio.cc:159