// : Author J.Markert //_HADES_CLASS_DESCRIPTION /////////////////////////////////////////////////////////////////////////////// // // HOnlineRichMon // /////////////////////////////////////////////////////////////////////////////// using namespace std; #include "honlinerichmon.h" #include "honlinerichhistfiller.h" #include "honlinerichhistbooker.h" #include "richdef.h" #include "hcategory.h" #include "hrichcal.h" #include "hrichhit.h" #include "hrichgeometrypar.h" #include "honlinerichfancy.h" #include "hdebug.h" #include "hades.h" #include "hiterator.h" #include "hruntimedb.h" #include "hspectrometer.h" #include "hdetector.h" #include "hevent.h" #include #include #include #include "TIterator.h" ClassImp(HOnlineRichMon) HOnlineRichHistBooker* HOnlineRichMon::richHistbooker=0; HOnlineRichMon::HOnlineRichMon(void) { // Default constructor . initVariables(); } HOnlineRichMon::HOnlineRichMon(const Text_t* name,const Text_t* title) : HReconstructor(name,title) { // Constructor calls the constructor of class HReconstructor with the name // and the title as arguments. initVariables(); } HOnlineRichMon::~HOnlineRichMon(void) { // destructor deletes the iterator if (itercal) delete itercal; if (iterhit) delete iterhit; itercal=0; iterhit=0; } void HOnlineRichMon::initVariables() { // iterator+categories calCat =0; hitCat =0; itercal=0; iterhit=0; } void HOnlineRichMon::printStatus(){ cout << "************* HOnlineRichMon ***************" << endl; cout << "******************************************" << endl; } void HOnlineRichMon::setParContainers() { richHistbooker = HOnlineRichHistBooker::getExObject(); HRichGeometryPar* fRichGeomPar=0; fRichGeomPar=(HRichGeometryPar*)(gHades->getRuntimeDb()->getContainer("RichGeometryParameters")); if(!richHistbooker) { Error("HOnlineRichMon::setParContainers()","ZERO POINTER FOR HSTARTHISTBOOKER RECEIVED!"); exit(1); } } Bool_t HOnlineRichMon::init(void) { Bool_t test=kFALSE; setParContainers(); test=getCategories(); printStatus(); fActive=kTRUE; return test; } Bool_t HOnlineRichMon::reinit(void) { richHistbooker = HOnlineRichHistBooker::getExObject(); richHistbooker->printStatus(); HOnlineRichFancy* richfancy = richHistbooker->getRichFiller()->getRichFancy(); if(richfancy->getKnown()==kFALSE) {richfancy->init();} fActive=kTRUE; return kTRUE; } Bool_t HOnlineRichMon::getCategories() { calCat=(HCategory*)(((HEvent*)(gHades->getCurrentEvent()))->getCategory(catRichCal)); if (!calCat) { Warning("HOnlineRichMon:init()","CATEGORY HRICHCAL IS NOT FILLED!"); } hitCat=(HCategory*)(((HEvent*)(gHades->getCurrentEvent()))->getCategory(catRichHit)); if (!hitCat) { Warning("HOnlineRichMon:init()","CATEGORY HRICHHIT IS NOT FILLED!"); } if (calCat) { itercal=(HIterator *)((HCategory*)calCat)->MakeIterator("native"); } if (hitCat) { iterhit =(HIterator *)((HCategory*)hitCat)->MakeIterator("native"); } return kTRUE; } Int_t HOnlineRichMon::execute() { //richHistbooker->resetActiveList(2,gHades->getEventCounter()); // if feature of incremental update should be used HRichCal* cal=0; HRichHit* hit=0; if(calCat) { itercal->Reset(); richHistbooker->getRichFiller()->fillCalCategory(itercal); itercal->Reset(); //######################### FIll CAL HISTS ################################## while ((cal=(HRichCal *)itercal->Next())!=0) { richHistbooker->getRichFiller()->fillCal(cal); } //############################################################################ } if(hitCat) { iterhit->Reset(); //########################## Fill HIT HISTS ################################## while ((hit=(HRichHit *)iterhit->Next())!=0) { richHistbooker->getRichFiller()->fillHit(hit); } } return 0; } Bool_t HOnlineRichMon::finalize() { return kTRUE; }