// : Author B.Spruck //_HADES_CLASS_DESCRIPTION /////////////////////////////////////////////////////////////////////////////// // // HOnlineWallMon // /////////////////////////////////////////////////////////////////////////////// using namespace std; #include "honlinewallmon.h" #include "honlinewallhistfiller.h" #include "honlinewallhistbooker.h" #include "walldef.h" #include "hcategory.h" #include "hwallraw.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(HOnlineWallMon) HOnlineWallHistBooker* HOnlineWallMon::wallHistbooker=0; HOnlineWallMon::HOnlineWallMon(void) { // Default constructor . initVariables(); } HOnlineWallMon::HOnlineWallMon(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(); } HOnlineWallMon::~HOnlineWallMon(void) { // destructor deletes the iterator if (iterraw) delete iterraw; iterraw=0; if (iterhit) delete iterhit; iterhit=0; } void HOnlineWallMon::initVariables() { // iterator+categories rawCat =0; iterraw=0; hitCat =0; iterhit=0; } void HOnlineWallMon::printStatus(){ cout << "************* HOnlineWallMon **************" << endl; cout << "******************************************" << endl; } void HOnlineWallMon::setParContainers() { wallHistbooker = HOnlineWallHistBooker::getExObject(); if(!wallHistbooker) { Error("HOnlineWallMon::setParContainers()","ZERO POINTER FOR HWALLTHISTBOOKER RECEIVED!"); exit(1); } } Bool_t HOnlineWallMon::init(void) { Bool_t test=kFALSE; setParContainers(); test=getCategories(); printStatus(); fActive=kTRUE; return test; } Bool_t HOnlineWallMon::reinit(void) { wallHistbooker = HOnlineWallHistBooker::getExObject(); wallHistbooker->printStatus(); fActive=kTRUE; return kTRUE; } Bool_t HOnlineWallMon::getCategories() { rawCat=(HCategory*)(((HEvent*)(gHades->getCurrentEvent()))->getCategory(catWallRaw)); if (!rawCat) { Warning("HOnlineWallMon:init()","CATEGORY HWALLRAW IS NOT FILLED!"); } if (rawCat) { iterraw =(HIterator *)((HCategory*)rawCat)->MakeIterator("native"); } hitCat=(HCategory*)(((HEvent*)(gHades->getCurrentEvent()))->getCategory(catWallHit)); if (!hitCat) { Warning("HOnlineWallMon:init()","CATEGORY HWALLHIT IS NOT FILLED!"); } if (hitCat) { iterhit =(HIterator *)((HCategory*)hitCat)->MakeIterator("native"); } return kTRUE; } Int_t HOnlineWallMon::execute() { //wallHistbooker->resetActiveList(2,gHades->getEventCounter()); // if feature of incremental update should be used HWallRaw* raw=0; HWallHit* hit=0; if(rawCat) { wallHistbooker->getWallFiller()->fillRawCat(iterraw); iterraw->Reset(); //########################## Fill RAW HISTS ################################## while ((raw=(HWallRaw *)iterraw->Next())!=0) { wallHistbooker->getWallFiller()->fillRaw(raw); } }else{ cout << "------- No WallRaw Cat!"<Reset(); //########################## Fill HIT HISTS ################################ while ((hit=(HWallHit *)iterhit->Next())!=0) { wallHistbooker->getWallFiller()->fillHit(hit); } } return 0; } Bool_t HOnlineWallMon::finalize() { return kTRUE; }