//*-- AUTHOR : J. Markert //_HADES_CLASS_DESCRIPTION //////////////////////////////////////////////////////////////////////////// // HMdcHistBooker // // Container class for the mdc hists //////////////////////////////////////////////////////////////////////////// //#include #include "hmdchistbooker.h" #include "hmdchistfiller.h" #include "hmonhist.h" #include "htrendhist.h" #include "hhistarray.h" #include "hgo4parasciifileio.h" #include "hgo4parrootfileio.h" #include "hades.h" #include "hruntimedb.h" #include "hspectrometer.h" #include "hmdcdetector.h" #include "hpario.h" #include "hdetpario.h" #include "hparamlist.h" #include "hmessagemgr.h" #include "hevent.h" #include "hcategory.h" #include "hparasciifileio.h" #include "hparrootfileio.h" #include "hrun.h" #include "hdatasource.h" #include "TList.h" // Container/List pointers HMdcHistBooker* HMdcHistBooker::fMdcHistBooker=0; TList* HMdcHistBooker::mdcHistpool=0; TList* HMdcHistBooker::mdcActiveHists=0; HMdcHistFiller* HMdcHistBooker::mdcfiller=0; ClassImp(HMdcHistBooker) HMdcHistBooker::HMdcHistBooker(const Char_t* name,const Char_t* title, const Char_t* context) : HParCond(name,title,context) { strcpy(detName,"Mdc"); if (gHades) { fMdc =(HMdcDetector*)(((HSpectrometer*)(gHades->getSetup()))->getDetector("Mdc")); } else { fMdc = 0; } clear(); fMdcHistBooker=this; mdcHistpool = new TList; mdcActiveHists = new TList; mdcfiller = new HMdcHistFiller("MdcFiller","MdcFiller"); } void HMdcHistBooker::setGo4ParIo(HRuntimeDb *rtdb) { //Adds MdcHistBookers's Parameter Io to the runtime database. HParIo *io=0; io=rtdb->getFirstInput(); if (io != 0) { if (io->getDetParIo("HGo4ParIo") == 0) { if (strcmp(io->IsA()->GetName(),"HParAsciiFileIo")==0) { HGo4ParAsciiFileIo* p= new HGo4ParAsciiFileIo(((HParAsciiFileIo*)io)->getFile()); io->setDetParIo(p); io->setInputNumber(1); } if (strcmp(io->IsA()->GetName(),"HParRootFileIo")==0) { HGo4ParRootFileIo* p= new HGo4ParRootFileIo(((HParRootFileIo*)io)->getParRootFile()); io->setDetParIo(p); io->setInputNumber(1); } if (strcmp(io->IsA()->GetName(),"HParOraIo")==0) { io->setDetParIo("HGo4ParIo"); io->setInputNumber(1); } } } io=rtdb->getSecondInput(); if (io != 0) { if (io->getDetParIo("HGo4ParIo") == 0) { if (strcmp(io->IsA()->GetName(),"HParAsciiFileIo")==0) { HGo4ParAsciiFileIo* p= new HGo4ParAsciiFileIo(((HParAsciiFileIo*)io)->getFile()); io->setDetParIo(p); io->setInputNumber(2); } if (strcmp(io->IsA()->GetName(),"HParRootFileIo")==0) { HGo4ParRootFileIo* p= new HGo4ParRootFileIo(((HParRootFileIo*)io)->getParRootFile()); io->setDetParIo(p); io->setInputNumber(2); } if (strcmp(io->IsA()->GetName(),"HParOraIo")==0) { io->setDetParIo("HGo4ParIo"); io->setInputNumber(2); } } } io=rtdb->getOutput(); if (io != 0) { if (io->getDetParIo("HGo4ParIo") == 0) { if (strcmp(io->IsA()->GetName(),"HParAsciiFileIo")==0) { HGo4ParAsciiFileIo* p= new HGo4ParAsciiFileIo(((HParAsciiFileIo*)io)->getFile()); io->setDetParIo(p); } if (strcmp(io->IsA()->GetName(),"HParRootFileIo")==0) { HGo4ParRootFileIo* p= new HGo4ParRootFileIo(((HParRootFileIo*)io)->getParRootFile()); io->setDetParIo(p); } if (strcmp(io->IsA()->GetName(),"HParOraIo")==0) io->setDetParIo("HGo4ParIo"); } } } Bool_t HMdcHistBooker::initStandAlone() { // intitializes the container from an input HRuntimeDb* rtdb=0; rtdb=gHades->getRuntimeDb(); HDataSource* source=gHades->getDataSource(); Int_t refId=source->getCurrentRefId(); Int_t runId=source->getCurrentRunId(); HRun* run=rtdb->getRun(runId); if(!run)run=rtdb->addRun(runId,refId); Bool_t allFound=kFALSE; HParVersion* vers; if(run) { if (!run->getParVersion((Char_t*)GetName())) { vers=new HParVersion((Char_t*)GetName()); run->addParVersion(vers); } } else { Error("HMdcHistBooker:initStandAlone()","NO RUN SET!"); return kFALSE; } if (versions[1]!=-1 && versions[2]!=-1) resetInputVersions(); HParIo* io=rtdb->getFirstInput(); if (io) allFound=init(io,0); if (!allFound) { io=rtdb->getSecondInput(); if (io) { allFound=init(io,0); } }else setInputVersion(-1,2); if (!allFound) { cerr<<"******** "<MakeIterator(); HMonHistAddon* h=0; TString buffer; while ((h=(HMonHistAddon*)myiter->Next())!= 0) { h->reset(level,count); } delete myiter; } void HMdcHistBooker::clear() { status=kFALSE; resetInputVersions(); changed=kFALSE; } void HMdcHistBooker::printParam(void) { // prints the parameters of HMdcHistBooker to the screen. // The printParam() of the subobjects are called to print the // parameters of the corresponding subobject. } void HMdcHistBooker::printStatus(void) { // prints the parameters of HMdcHistBooker to the screen. cout<<"####################Status Mdchistbooker#################"<MakeIterator(); while ((h=(HMonHistAddon*)myiter->Next())!= 0) { cout<<"active: "<getActive()<<" resetable: "<getResetable()<<" send: "<getSend()<<" "<GetName()<getRuntimeDb(); if(rtdb) { setGo4ParIo(rtdb); } else { Error("HMdcHistBooker()","ZERO POINTER FOR RTDB RECEIVED!"); exit(1); } HDetParIo* input=inp->getDetParIo("HGo4ParIo"); if (input) return (input->init(this,set)); return kFALSE; } Int_t HMdcHistBooker::write(HParIo* output) { // writes the container to an output HDetParIo* out=output->getDetParIo("HGo4ParIo"); if (out) return out->write(this); return -1; } void HMdcHistBooker::putParams(HParamList* l) { // Puts all params of HMdcHistBooker to the parameter list of // HParamList (which ist used by the io); if(!l) return; mdcfiller->putMdcParams(l,mdcHistpool); } Bool_t HMdcHistBooker::getParams(HParamList* l) { if(!l) return kFALSE; if(isStatic()==0) { if(!mdcfiller->getMdcParams(l,mdcHistpool,mdcActiveHists)) return kFALSE; setStatic(); } return kTRUE; }