#include "hmdcparasciifileio.h"
#include "hmdcrawstruct.h"
#include "hmdcgeomstruct.h"
#include "hmdccalparraw.h"
#include "hmdctdcthreshold.h"
#include "hmdctdcchannel.h"
#include "hmdccal2par.h"
#include "hmdccal2parsim.h"
#include "hmdccelleff.h"
#include "hmdclookupgeom.h"
#include "hmdclookupraw.h"
#include "hmdclayergeompar.h"
#include "hmdcgeompar.h"
#include "hmdctimecut.h"
ClassImp(HMdcParAsciiFileIo)
HMdcParAsciiFileIo::HMdcParAsciiFileIo(fstream* f) : HDetParAsciiFileIo(f) {
fName="HMdcParIo";
}
Bool_t HMdcParAsciiFileIo::init(HParSet* pPar,Int_t* set) {
const Text_t* name=pPar->GetName();
if (pFile) {
pFile->clear();
pFile->seekg(0,ios::beg);
if (!strcmp(name,"MdcRawStruct"))
return read((HMdcRawStruct*)pPar,set);
if (!strcmp(name,"MdcGeomStruct"))
return read((HMdcGeomStruct*)pPar,set);
if (!strncmp(name,"MdcCalParRaw",strlen("MdcCalParRaw")))
return read((HMdcCalParRaw*)pPar,set);
if (!strncmp(name,"MdcTdcThreshold",strlen("MdcTdcThreshold")))
return read((HMdcTdcThreshold*)pPar,set);
if (!strncmp(name,"MdcTdcChannel",strlen("MdcTdcChannel")))
return read((HMdcTdcChannel*)pPar,set);
if (!strcmp(name,"MdcCal2ParSim"))
return read((HMdcCal2ParSim*)pPar,set);
if (!strncmp(name,"MdcCellEff",strlen("MdcCellEff")))
return read((HMdcCellEff*)pPar,set,4);
if (!strcmp(name,"MdcLookupGeom"))
return read((HMdcLookupGeom*)pPar,set);
if (!strcmp(name,"MdcLayerGeomPar"))
return read((HMdcLayerGeomPar*)pPar,set);
if (!strcmp(name,"MdcGeomPar"))
return HDetParAsciiFileIo::read((HDetGeomPar*)pPar,set);
if (!strncmp(name,"MdcTimeCut",strlen("MdcTimeCut")))
return read((HMdcTimeCut*)pPar,set);
Error("HMdcParAsciiFileIo::init()","initialization of %s not possible from file!",name);
return kFALSE;
}
Error("HMdcParAsciiFileIo::init()","no input file open");
return kFALSE;
}
Int_t HMdcParAsciiFileIo::write(HParSet* pPar) {
if (pFile) {
const Text_t* name=pPar->GetName();
if (!strcmp(name,"MdcRawStruct"))
return writeFile3((HMdcRawStruct*)pPar);
if (!strcmp(name,"MdcGeomStruct"))
return writeFile3((HMdcGeomStruct*)pPar);
if (!strncmp(name,"MdcCalParRaw",strlen("MdcCalParRaw")))
return writeFile4((HMdcCalParRaw*)pPar);
if (!strncmp(name,"MdcTdcThreshold",strlen("MdcTdcThreshold")))
return writeFile4((HMdcTdcThreshold*)pPar);
if (!strncmp(name,"MdcTdcChannel",strlen("MdcTdcChannel")))
return writeFile4((HMdcTdcChannel*)pPar);
if (!strcmp(name,"MdcCal2Par"))
return writeFile3_x((HMdcCal2Par*)pPar);
if (!strcmp(name,"MdcCal2ParSim"))
return writeFile3_x((HMdcCal2ParSim*)pPar);
if (!strncmp(name,"MdcCellEff",strlen("MdcCellEff")))
return writeFile2((HMdcCellEff*)pPar);
if (!strcmp(name,"MdcLookupGeom"))
return writeFile4((HMdcLookupGeom*)pPar);
if (!strcmp(name,"MdcLookupRaw"))
return writeFile4((HMdcLookupRaw*)pPar);
if (!strcmp(name,"MdcLayerGeomPar"))
return writeFile3((HMdcLayerGeomPar*)pPar);
if (!strcmp(name,"MdcGeomPar"))
return HDetParAsciiFileIo::writeFile((HDetGeomPar*)pPar);
if(!strncmp(name,"MdcTimeCut",strlen("MdcTimeCut")))
return writeFile2((HMdcTimeCut*)pPar);
Error("HMdcParAsciiFileIo::write()","%s could not be written to Ascii file",name);
return -1;
}
Error("HMdcParAsciiFileIo::write()","no output file open");
return -1;
}
template<class T> Int_t HMdcParAsciiFileIo::writeFile2(T* pPar) {
pPar->putAsciiHeader(fHeader);
writeHeader(pPar->GetName());
Text_t buf[800];
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;
}
template<class T> Int_t HMdcParAsciiFileIo::writeFile2_x(T* pPar) {
pPar->putAsciiHeader(fHeader);
writeHeader(pPar->GetName());
Text_t buf[800];
Int_t n0 = (*pPar).getSize();
Int_t numberOfLines=(*pPar).getNumberOfLines();
for(Int_t i0=0; i0<n0; i0++) {
Int_t n1 = (*pPar)[i0].getSize();
for(Int_t i1=0; i1<n1; i1++) {
for(Int_t i2=0; i2<numberOfLines; i2++) {
if (pPar->writeline(buf, i0,i1))
pFile->write(buf,strlen(buf));
}
}
}
pPar->setChanged(kFALSE);
pFile->write(sepLine,strlen(sepLine));
return 1;
}
template<class T> Int_t HMdcParAsciiFileIo::writeFile3(T* pPar) {
pPar->putAsciiHeader(fHeader);
writeHeader(pPar->GetName());
Text_t buf[800];
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;
}
template<class T> Int_t HMdcParAsciiFileIo::writeFile3_x(T* pPar) {
pPar->putAsciiHeader(fHeader);
writeHeader(pPar->GetName());
Text_t buf[800];
Int_t n0 = (*pPar).getSize();
Int_t numberOfLines=(*pPar).getNumberOfLines();
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++) {
for(Int_t i3=0; i3<numberOfLines; i3++) {
if (pPar->writeline(buf, i0, i1, i2))
pFile->write(buf,strlen(buf));
}
}
}
}
pPar->setChanged(kFALSE);
pFile->write(sepLine,strlen(sepLine));
return 1;
}
template<class T> Int_t HMdcParAsciiFileIo::writeFile4(T* pPar) {
pPar->putAsciiHeader(fHeader);
writeHeader(pPar->GetName());
Text_t buf[800];
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++) {
Int_t n3 = (*pPar)[i0][i1][i2].getSize();
for(Int_t i3=0; i3<n3; i3++) {
if (pPar->writeline(buf, i0, i1, i2, i3))
pFile->write(buf,strlen(buf));
}
}
}
}
pPar->setChanged(kFALSE);
pFile->write(sepLine,strlen(sepLine));
return 1;
}
template<class T> Bool_t HMdcParAsciiFileIo::read(T* pPar, Int_t* set,Int_t num) {
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();
gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName(),"%s: module(s) initialized from Ascii file:",name);
return checkAllFound(set,num);
INFO_msg(10,HMessageMgr::DET_MDC,"end of reading");
return kFALSE;
}
hmdcparasciifileio.cc:100 hmdcparasciifileio.cc:101 hmdcparasciifileio.cc:102 hmdcparasciifileio.cc:103 hmdcparasciifileio.cc:104 hmdcparasciifileio.cc:105 hmdcparasciifileio.cc:106 hmdcparasciifileio.cc:107 hmdcparasciifileio.cc:108 hmdcparasciifileio.cc:109 hmdcparasciifileio.cc:110 hmdcparasciifileio.cc:111 hmdcparasciifileio.cc:112 hmdcparasciifileio.cc:113 hmdcparasciifileio.cc:114 hmdcparasciifileio.cc:115 hmdcparasciifileio.cc:116 hmdcparasciifileio.cc:117 hmdcparasciifileio.cc:118 hmdcparasciifileio.cc:119 hmdcparasciifileio.cc:120 hmdcparasciifileio.cc:121 hmdcparasciifileio.cc:122 hmdcparasciifileio.cc:123 hmdcparasciifileio.cc:124 hmdcparasciifileio.cc:125 hmdcparasciifileio.cc:126 hmdcparasciifileio.cc:127 hmdcparasciifileio.cc:128 hmdcparasciifileio.cc:129 hmdcparasciifileio.cc:130 hmdcparasciifileio.cc:131 hmdcparasciifileio.cc:132 hmdcparasciifileio.cc:133 hmdcparasciifileio.cc:134 hmdcparasciifileio.cc:135 hmdcparasciifileio.cc:136 hmdcparasciifileio.cc:137 hmdcparasciifileio.cc:138 hmdcparasciifileio.cc:139 hmdcparasciifileio.cc:140 hmdcparasciifileio.cc:141 hmdcparasciifileio.cc:142 hmdcparasciifileio.cc:143 hmdcparasciifileio.cc:144 hmdcparasciifileio.cc:145 hmdcparasciifileio.cc:146 hmdcparasciifileio.cc:147 hmdcparasciifileio.cc:148 hmdcparasciifileio.cc:149 hmdcparasciifileio.cc:150 hmdcparasciifileio.cc:151 hmdcparasciifileio.cc:152 hmdcparasciifileio.cc:153 hmdcparasciifileio.cc:154 hmdcparasciifileio.cc:155 hmdcparasciifileio.cc:156 hmdcparasciifileio.cc:157 hmdcparasciifileio.cc:158 hmdcparasciifileio.cc:159 hmdcparasciifileio.cc:160 hmdcparasciifileio.cc:161 hmdcparasciifileio.cc:162 hmdcparasciifileio.cc:163 hmdcparasciifileio.cc:164 hmdcparasciifileio.cc:165 hmdcparasciifileio.cc:166 hmdcparasciifileio.cc:167 hmdcparasciifileio.cc:168 hmdcparasciifileio.cc:169 hmdcparasciifileio.cc:170 hmdcparasciifileio.cc:171 hmdcparasciifileio.cc:172 hmdcparasciifileio.cc:173 hmdcparasciifileio.cc:174 hmdcparasciifileio.cc:175 hmdcparasciifileio.cc:176 hmdcparasciifileio.cc:177 hmdcparasciifileio.cc:178 hmdcparasciifileio.cc:179 hmdcparasciifileio.cc:180 hmdcparasciifileio.cc:181 hmdcparasciifileio.cc:182 hmdcparasciifileio.cc:183 hmdcparasciifileio.cc:184 hmdcparasciifileio.cc:185 hmdcparasciifileio.cc:186 hmdcparasciifileio.cc:187 hmdcparasciifileio.cc:188 hmdcparasciifileio.cc:189 hmdcparasciifileio.cc:190 hmdcparasciifileio.cc:191 hmdcparasciifileio.cc:192 hmdcparasciifileio.cc:193 hmdcparasciifileio.cc:194 hmdcparasciifileio.cc:195 hmdcparasciifileio.cc:196 hmdcparasciifileio.cc:197 hmdcparasciifileio.cc:198 hmdcparasciifileio.cc:199 hmdcparasciifileio.cc:200 hmdcparasciifileio.cc:201 hmdcparasciifileio.cc:202 hmdcparasciifileio.cc:203 hmdcparasciifileio.cc:204 hmdcparasciifileio.cc:205 hmdcparasciifileio.cc:206 hmdcparasciifileio.cc:207 hmdcparasciifileio.cc:208 hmdcparasciifileio.cc:209 hmdcparasciifileio.cc:210 hmdcparasciifileio.cc:211 hmdcparasciifileio.cc:212 hmdcparasciifileio.cc:213 hmdcparasciifileio.cc:214 hmdcparasciifileio.cc:215 hmdcparasciifileio.cc:216 hmdcparasciifileio.cc:217 hmdcparasciifileio.cc:218 hmdcparasciifileio.cc:219 hmdcparasciifileio.cc:220 hmdcparasciifileio.cc:221 hmdcparasciifileio.cc:222 hmdcparasciifileio.cc:223 hmdcparasciifileio.cc:224 hmdcparasciifileio.cc:225 hmdcparasciifileio.cc:226 hmdcparasciifileio.cc:227 hmdcparasciifileio.cc:228 hmdcparasciifileio.cc:229 hmdcparasciifileio.cc:230 hmdcparasciifileio.cc:231 hmdcparasciifileio.cc:232 hmdcparasciifileio.cc:233 hmdcparasciifileio.cc:234 hmdcparasciifileio.cc:235 hmdcparasciifileio.cc:236 hmdcparasciifileio.cc:237 hmdcparasciifileio.cc:238 hmdcparasciifileio.cc:239 hmdcparasciifileio.cc:240 hmdcparasciifileio.cc:241 hmdcparasciifileio.cc:242 hmdcparasciifileio.cc:243 hmdcparasciifileio.cc:244 hmdcparasciifileio.cc:245 hmdcparasciifileio.cc:246 hmdcparasciifileio.cc:247