// : Author B.Spruck //_HADES_CLASS_DESCRIPTION /////////////////////////////////////////////////////////////////////////////// // // HOnlineHodoMon // /////////////////////////////////////////////////////////////////////////////// using namespace std; #include "honlinehodomon.h" #include "honlinehodohistfiller.h" #include "honlinehodohistbooker.h" #include "hododef.h" #include "hcategory.h" #include "hhodoraw.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(HOnlineHodoMon) HOnlineHodoHistBooker* HOnlineHodoMon::hodoHistbooker=0; HOnlineHodoMon::HOnlineHodoMon(void) { // Default constructor . initVariables(); } HOnlineHodoMon::HOnlineHodoMon(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(); } HOnlineHodoMon::~HOnlineHodoMon(void) { // destructor deletes the iterator if (iterraw) delete iterraw; iterraw=0; } void HOnlineHodoMon::initVariables() { // iterator+categories rawCat =0; iterraw=0; } void HOnlineHodoMon::printStatus(){ cout << "************* HOnlineHodoMon **************" << endl; cout << "******************************************" << endl; } void HOnlineHodoMon::setParContainers() { hodoHistbooker = HOnlineHodoHistBooker::getExObject(); if(!hodoHistbooker) { Error("HOnlineHodoMon::setParContainers()","ZERO POINTER FOR HHODOTHISTBOOKER RECEIVED!"); exit(1); } } Bool_t HOnlineHodoMon::init(void) { Bool_t test=kFALSE; setParContainers(); test=getCategories(); printStatus(); fActive=kTRUE; return test; } Bool_t HOnlineHodoMon::reinit(void) { hodoHistbooker = HOnlineHodoHistBooker::getExObject(); hodoHistbooker->printStatus(); fActive=kTRUE; return kTRUE; } Bool_t HOnlineHodoMon::getCategories() { rawCat=(HCategory*)(((HEvent*)(gHades->getCurrentEvent()))->getCategory(catHodoRaw)); if (!rawCat) { Warning("HOnlineHodoMon:init()","CATEGORY HHODORAW IS NOT FILLED!"); } if (rawCat) { iterraw =(HIterator *)((HCategory*)rawCat)->MakeIterator("native"); } calCat=(HCategory*)(((HEvent*)(gHades->getCurrentEvent()))->getCategory(catHodoCal)); if (!calCat) { Warning("HOnlineHodoMon:init()","CATEGORY HHODOCAL IS NOT FILLED!"); } if (calCat) { itercal =(HIterator *)((HCategory*)calCat)->MakeIterator("native"); } hitCat=(HCategory*)(((HEvent*)(gHades->getCurrentEvent()))->getCategory(catHodoHit)); if (!hitCat) { Warning("HOnlineHodoMon:init()","CATEGORY HHODOHIT IS NOT FILLED!"); } if (hitCat) { iterhit =(HIterator *)((HCategory*)hitCat)->MakeIterator("native"); } return kTRUE; } Int_t HOnlineHodoMon::execute() { //hodoHistbooker->resetActiveList(2,gHades->getEventCounter()); // if feature of incremental update should be used HHodoRaw* raw=0; HHodoCal* cal=0; HHodoHit* hit=0; if(rawCat) { hodoHistbooker->getHodoFiller()->fillRawCat(iterraw); iterraw->Reset(); //########################## Fill RAW HISTS ################################## while ((raw=(HHodoRaw *)iterraw->Next())!=0) { hodoHistbooker->getHodoFiller()->fillRaw(raw); } }else{ // cout << "------ No HodoRaw Cat!" << endl; } if(calCat) { itercal->Reset(); //########################## Fill RAW HISTS ################################## while ((cal=(HHodoCal *)itercal->Next())!=0) { hodoHistbooker->getHodoFiller()->fillCal(cal); } }else{ // cout << "------ No HodoCal Cat!" << endl; } if(hitCat) { iterhit->Reset(); //########################## Fill RAW HISTS ################################## while ((hit=(HHodoHit *)iterhit->Next())!=0) { hodoHistbooker->getHodoFiller()->fillHit(hit); } hodoHistbooker->getHodoFiller()->fillHitCat(iterhit); }else{ // cout << "------ No HodoHit Cat!" << endl; } return 0; } Bool_t HOnlineHodoMon::finalize() { return kTRUE; }