#include "hades.h"
#include "hdetector.h"
#include "hspectrometer.h"
#include "hstart2calpar.h"
#include "hstart2detector.h"
#include "hstart2trb2lookup.h"
#include "hstart2calrunpar.h"
#include "hstart2geompar.h"
#include "hstart2trb3lookup.h"
#include "hstart2trb3calpar.h"
#include "hstartparasciifileio.h"
ClassImp(HStartParAsciiFileIo)
HStartParAsciiFileIo::HStartParAsciiFileIo(fstream* f) : HDetParAsciiFileIo(f)
{
fName = "HStartParIo";
}
Bool_t HStartParAsciiFileIo::init(HParSet* pPar, Int_t* set)
{
const Text_t* name = pPar->GetName();
if (pFile) {
if (!strcmp(name, "Start2Trb2Lookup")) return read((HStart2Trb2Lookup*)pPar);
if (!strcmp(name, "Start2Calpar")) return read((HStart2Calpar*)pPar, set, kTRUE);
if (!strcmp(name, "Start2GeomPar"))
return HDetParAsciiFileIo::read((HDetGeomPar*)pPar,set);
if (!strcmp(name, "Start2Trb3Lookup")) return read((HStart2Trb3Lookup*)pPar);
if (!strcmp(name, "Start2Trb3Calpar"))
return HDetParAsciiFileIo::read((HTrb3Calpar*)pPar);
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 HStartParAsciiFileIo::write(HParSet* pPar)
{
if (pFile) {
const Text_t* name = pPar->GetName();
if (!strcmp(name, "Start2Trb2Lookup")) return write((HStart2Trb2Lookup*)pPar);
if (!strcmp(name, "Start2Calpar")) return writeFile2((HStart2Calpar*)pPar);
if (!strcmp(name, "Start2CalRunPar")) return write((HStart2CalRunPar*)pPar);
if (!strcmp(name, "Start2GeomPar"))
return HDetParAsciiFileIo::writeFile((HDetGeomPar*)pPar);
if (!strcmp(name, "Start2Trb3Lookup")) return write((HStart2Trb3Lookup*)pPar);
if (!strcmp(name, "Start2Trb3Calpar"))
return HDetParAsciiFileIo::writeFile((HTrb3Calpar*)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 HStartParAsciiFileIo::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 HStartParAsciiFileIo::read(T* pPar, Int_t* set,
Bool_t needsClear)
{
const Text_t* name = pPar->GetName();
HDetector* det = gHades->getSetup()->getDetector("Start");
Int_t nSize = det->getMaxModules();
if (!findContainer(name)) return kFALSE;
if (needsClear) 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);
}
pPar->setInputVersion(1, inputNumber);
pPar->setChanged();
Bool_t allFound = kTRUE;
if (!needsClear) {
printf("%s: module(s) initialized from Ascii file:\n", name);
allFound = checkAllFound(set, nSize);
} else {
for (Int_t i = 0; i < nSize; i++) {
if (set[i]) {
if (set[i] == 999) set[i] = 1;
else allFound = kFALSE;
}
}
if (allFound) printf("%s initialized from Ascii file\n", name);
}
return allFound;
}
template<class T> Bool_t HStartParAsciiFileIo::readStartModule(T* pPar, Int_t* set,
Bool_t needsClear)
{
const Text_t* name = pPar->GetName();
if (!findContainer(name)) return kFALSE;
if (needsClear) 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);
}
pPar->setInputVersion(1, inputNumber);
pPar->setChanged();
Bool_t allFound = kTRUE;
if (!needsClear) {
printf("%s: module(s) initialized from Ascii file:\n", name);
allFound = checkAllFound(set, 1);
} else {
for (Int_t i = 0; i < 1; i++) {
if (set[i]) {
if (set[i] == 999) set[i] = 1;
else allFound = kFALSE;
}
}
if (allFound) printf("%s initialized from Ascii file\n", name);
}
return allFound;
}
template<class T> Int_t HStartParAsciiFileIo::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 HStartParAsciiFileIo::writeFile2(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++) {
if (pPar->writeline(buf, i0, i1)) pFile->write(buf, strlen(buf));
}
}
pPar->setChanged(kFALSE);
pFile->write(sepLine, strlen(sepLine));
return 1;
}
hstartparasciifileio.cc:1 hstartparasciifileio.cc:2 hstartparasciifileio.cc:3 hstartparasciifileio.cc:4 hstartparasciifileio.cc:5 hstartparasciifileio.cc:6 hstartparasciifileio.cc:7 hstartparasciifileio.cc:8 hstartparasciifileio.cc:9 hstartparasciifileio.cc:10 hstartparasciifileio.cc:11 hstartparasciifileio.cc:12 hstartparasciifileio.cc:13 hstartparasciifileio.cc:14 hstartparasciifileio.cc:15 hstartparasciifileio.cc:16 hstartparasciifileio.cc:17 hstartparasciifileio.cc:18 hstartparasciifileio.cc:19 hstartparasciifileio.cc:20 hstartparasciifileio.cc:21 hstartparasciifileio.cc:22 hstartparasciifileio.cc:23 hstartparasciifileio.cc:24 hstartparasciifileio.cc:25 hstartparasciifileio.cc:26 hstartparasciifileio.cc:27 hstartparasciifileio.cc:28 hstartparasciifileio.cc:29 hstartparasciifileio.cc:30 hstartparasciifileio.cc:31 hstartparasciifileio.cc:32 hstartparasciifileio.cc:33 hstartparasciifileio.cc:34 hstartparasciifileio.cc:35 hstartparasciifileio.cc:36 hstartparasciifileio.cc:37 hstartparasciifileio.cc:38 hstartparasciifileio.cc:39 hstartparasciifileio.cc:40 hstartparasciifileio.cc:41 hstartparasciifileio.cc:42 hstartparasciifileio.cc:43 hstartparasciifileio.cc:44 hstartparasciifileio.cc:45 hstartparasciifileio.cc:46 hstartparasciifileio.cc:47 hstartparasciifileio.cc:48 hstartparasciifileio.cc:49 hstartparasciifileio.cc:50 hstartparasciifileio.cc:51 hstartparasciifileio.cc:52 hstartparasciifileio.cc:53 hstartparasciifileio.cc:54 hstartparasciifileio.cc:55 hstartparasciifileio.cc:56 hstartparasciifileio.cc:57 hstartparasciifileio.cc:58 hstartparasciifileio.cc:59 hstartparasciifileio.cc:60 hstartparasciifileio.cc:61 hstartparasciifileio.cc:62 hstartparasciifileio.cc:63 hstartparasciifileio.cc:64 hstartparasciifileio.cc:65 hstartparasciifileio.cc:66 hstartparasciifileio.cc:67 hstartparasciifileio.cc:68 hstartparasciifileio.cc:69 hstartparasciifileio.cc:70 hstartparasciifileio.cc:71 hstartparasciifileio.cc:72 hstartparasciifileio.cc:73 hstartparasciifileio.cc:74 hstartparasciifileio.cc:75 hstartparasciifileio.cc:76 hstartparasciifileio.cc:77 hstartparasciifileio.cc:78 hstartparasciifileio.cc:79 hstartparasciifileio.cc:80 hstartparasciifileio.cc:81 hstartparasciifileio.cc:82 hstartparasciifileio.cc:83 hstartparasciifileio.cc:84 hstartparasciifileio.cc:85 hstartparasciifileio.cc:86 hstartparasciifileio.cc:87 hstartparasciifileio.cc:88 hstartparasciifileio.cc:89 hstartparasciifileio.cc:90 hstartparasciifileio.cc:91 hstartparasciifileio.cc:92 hstartparasciifileio.cc:93 hstartparasciifileio.cc:94 hstartparasciifileio.cc:95 hstartparasciifileio.cc:96 hstartparasciifileio.cc:97 hstartparasciifileio.cc:98 hstartparasciifileio.cc:99 hstartparasciifileio.cc:100 hstartparasciifileio.cc:101 hstartparasciifileio.cc:102 hstartparasciifileio.cc:103 hstartparasciifileio.cc:104 hstartparasciifileio.cc:105 hstartparasciifileio.cc:106 hstartparasciifileio.cc:107 hstartparasciifileio.cc:108 hstartparasciifileio.cc:109 hstartparasciifileio.cc:110 hstartparasciifileio.cc:111 hstartparasciifileio.cc:112 hstartparasciifileio.cc:113 hstartparasciifileio.cc:114 hstartparasciifileio.cc:115 hstartparasciifileio.cc:116 hstartparasciifileio.cc:117 hstartparasciifileio.cc:118 hstartparasciifileio.cc:119 hstartparasciifileio.cc:120 hstartparasciifileio.cc:121 hstartparasciifileio.cc:122 hstartparasciifileio.cc:123 hstartparasciifileio.cc:124 hstartparasciifileio.cc:125 hstartparasciifileio.cc:126 hstartparasciifileio.cc:127 hstartparasciifileio.cc:128 hstartparasciifileio.cc:129 hstartparasciifileio.cc:130 hstartparasciifileio.cc:131 hstartparasciifileio.cc:132 hstartparasciifileio.cc:133 hstartparasciifileio.cc:134 hstartparasciifileio.cc:135 hstartparasciifileio.cc:136 hstartparasciifileio.cc:137 hstartparasciifileio.cc:138 hstartparasciifileio.cc:139 hstartparasciifileio.cc:140 hstartparasciifileio.cc:141 hstartparasciifileio.cc:142 hstartparasciifileio.cc:143 hstartparasciifileio.cc:144 hstartparasciifileio.cc:145 hstartparasciifileio.cc:146 hstartparasciifileio.cc:147 hstartparasciifileio.cc:148 hstartparasciifileio.cc:149 hstartparasciifileio.cc:150 hstartparasciifileio.cc:151 hstartparasciifileio.cc:152 hstartparasciifileio.cc:153 hstartparasciifileio.cc:154 hstartparasciifileio.cc:155 hstartparasciifileio.cc:156 hstartparasciifileio.cc:157 hstartparasciifileio.cc:158 hstartparasciifileio.cc:159 hstartparasciifileio.cc:160 hstartparasciifileio.cc:161 hstartparasciifileio.cc:162 hstartparasciifileio.cc:163 hstartparasciifileio.cc:164 hstartparasciifileio.cc:165 hstartparasciifileio.cc:166 hstartparasciifileio.cc:167 hstartparasciifileio.cc:168 hstartparasciifileio.cc:169 hstartparasciifileio.cc:170 hstartparasciifileio.cc:171 hstartparasciifileio.cc:172 hstartparasciifileio.cc:173 hstartparasciifileio.cc:174 hstartparasciifileio.cc:175 hstartparasciifileio.cc:176 hstartparasciifileio.cc:177 hstartparasciifileio.cc:178 hstartparasciifileio.cc:179 hstartparasciifileio.cc:180 hstartparasciifileio.cc:181 hstartparasciifileio.cc:182 hstartparasciifileio.cc:183 hstartparasciifileio.cc:184 hstartparasciifileio.cc:185 hstartparasciifileio.cc:186 hstartparasciifileio.cc:187 hstartparasciifileio.cc:188 hstartparasciifileio.cc:189 hstartparasciifileio.cc:190 hstartparasciifileio.cc:191 hstartparasciifileio.cc:192 hstartparasciifileio.cc:193 hstartparasciifileio.cc:194 hstartparasciifileio.cc:195 hstartparasciifileio.cc:196