using namespace std;
#include "hhodoparrootfileio.h"
#include "hparrootfileio.h"
#include "hades.h"
#include "hspectrometer.h"
#include "hruntimedb.h"
#include "hhododetector.h"
#include "hhodolookup.h"
#include "hhodocalpar.h"
#include "hhodorefhitpar.h"
#include <iostream>
#include <iomanip>
ClassImp(HHodoParRootFileIo)
HHodoParRootFileIo::HHodoParRootFileIo(HParRootFile* f) : HDetParRootFileIo(f) {
fName="HHodoParIo";
Int_t n=gHades->getSetup()->getDetector("Hodo")->getMaxModules();
initModules=new TArrayI(n);
}
HHodoParRootFileIo::~HHodoParRootFileIo() {
if (modulesFound) {
delete modulesFound;
modulesFound=0;
}
if (initModules) {
delete initModules;
initModules=0;
}
}
Bool_t HHodoParRootFileIo::init(HParSet* pPar,Int_t* set) {
if (!isActiv) readModules("Hodo");
const Text_t* name=pPar->GetName();
if (pFile) {
if (strcmp(name,"HodoLookup")==0) return read((HHodoLookup*)pPar,set);
if (strcmp(name,"HodoCalPar")==0) return read((HHodoCalPar*)pPar,set);
if (strcmp(name,"HodoRefHitPar")==0) return read((HHodoRefHitPar*)pPar,set);
}
cerr<<"initialization of "<<name<<" not possible from ROOT file!"<<endl;
return kFALSE;
}
Bool_t HHodoParRootFileIo::read(HHodoLookup* pPar,Int_t* set) {
Text_t* name=(Char_t*)pPar->GetName();
Int_t version=findInputVersion(name);
if (version<=0) {
pPar->setInputVersion(-1,inputNumber);
return kFALSE;
}
if (pPar->getInputVersion(inputNumber)==version
&& pPar->getInputVersion(inputNumber)!=-1) return kTRUE;
HHodoLookup* rHodo=(HHodoLookup*)findContainer(name,version);
initModules->Reset();
pPar->clear();
Int_t module, fiber;
for(Int_t c=0;c<rHodo->getSize();c++) {
for(Int_t s=0;s<(*rHodo)[c].getSize();s++) {
for(Int_t i=0;i<(*rHodo)[c][s].getSize();i++) {
(*rHodo)[c][s][i].getAddress(module,fiber);
if (module>=0 && set[module]) {
pPar->fill(c,s,i,module,fiber);
initModules->AddAt(module+1,module);
}
}
}
}
delete rHodo;
Bool_t allFound=kTRUE;
for(Int_t i=0;i<initModules->GetSize(); i++) {
if (set[i] && !initModules->At(i)) allFound=kFALSE;
}
if (allFound) {
pPar->setInputVersion(version,inputNumber);
pPar->setChanged();
printInfo("HodoLookup: module(s) initialized from Root file ");
}
return allFound;
}
Bool_t HHodoParRootFileIo::read(HHodoCalPar* pPar,Int_t* set) {
Text_t* name=(Char_t*)pPar->GetName();
Int_t version=findInputVersion(name);
if (version<=0)
{
pPar->setInputVersion(-1,inputNumber);
return kFALSE;
}
if (pPar->getInputVersion(inputNumber)==version
&& pPar->getInputVersion(inputNumber)!=-1) return kTRUE;
HHodoCalPar* rHodo=(HHodoCalPar*)findContainer(name,version);
Bool_t allFound=kTRUE;
initModules->Reset();
pPar->clear();
for(Int_t m=0;m<rHodo->getSize();m++) {
if (set[m]) {
HHodoCalParMod& r=(*rHodo)[m];
HHodoCalParMod& p=(*pPar)[m];
Int_t pModSize=p.getSize();
if (pModSize && r.getSize()==pModSize) {
for(Int_t c=0;c<pModSize;c++) p[c].fill(r[c]);
initModules->AddAt(m+1,m);
} else allFound=kFALSE;
}
}
for(Int_t i=0;i<initModules->GetSize(); i++) {
if (set[i] && !initModules->At(i)) allFound=kFALSE;
}
if (allFound) {
pPar->setInputVersion(version,inputNumber);
pPar->setChanged();
printInfo("HodoCalPar: module(s) initialized from Root file ");
}
delete rHodo;
return allFound;
}
Bool_t HHodoParRootFileIo::read(HHodoRefHitPar* pPar,Int_t* set) {
Text_t* name=(Char_t*)pPar->GetName();
Int_t version=findInputVersion(name);
if (version<=0)
{
pPar->setInputVersion(-1,inputNumber);
return kFALSE;
}
if (pPar->getInputVersion(inputNumber)==version
&& pPar->getInputVersion(inputNumber)!=-1) return kTRUE;
HHodoRefHitPar* rHodo=(HHodoRefHitPar*)findContainer(name,version);
Bool_t allFound=kTRUE;
initModules->Reset();
pPar->clear();
for(Int_t m=0;m<rHodo->getSize();m++) {
if (set[m]) {
HHodoRefHitParMod& r=(*rHodo)[m];
HHodoRefHitParMod& p=(*pPar)[m];
p.fill(r);
initModules->AddAt(m+1,m);
}
}
for(Int_t i=0;i<initModules->GetSize(); i++) {
if (set[i] && !initModules->At(i)) allFound=kFALSE;
}
if (allFound) {
pPar->setInputVersion(version,inputNumber);
pPar->setChanged();
printInfo("HodoRefHitPar: module(s) initialized from Root file ");
}
delete rHodo;
return allFound;
}
Last change: Sat May 22 12:57:33 2010
Last generated: 2010-05-22 12:57
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.