#include "hcategorymanager.h"
#include "hlinearcategory.h"
ClassImp(HCategoryManager)
    
    
    
    
    
    
    
    
    
    
    HLocation HCategoryManager::loc;
HCategory * HCategoryManager::getCategory(Short_t num,Int_t warn,TString name)
{
    
    
    
    HCategory *cat = 0;
    if (name.CompareTo ("") == 0) { name += num; }
    HRecEvent *ev = (HRecEvent*) gHades->getCurrentEvent ();
    if (ev) {
	cat = ev->getCategory(num);
	if (!cat) {
	    if(warn == 0)      {::Warning ("getCategory()", "Cannot get category %s", name.Data());}
	    else if (warn == 1){::Error   ("getCategory()", "Cannot get category %s", name.Data());}
	}
    }
    return cat;
}
HCategory * HCategoryManager::addCategory(Short_t num,TString name,Int_t size,TString partevt, Bool_t dynamicsize)
{
    
    
    
    HCategory *cat = 0;
    if (name.CompareTo ("") == 0) {
	::Error ("addCategory()", "Category name is empty !");
	return cat;
    }
    HRecEvent *ev = (HRecEvent*) gHades->getCurrentEvent ();
    if (ev) {
	cat = ev->getCategory(num);
	if (!cat) {
	    cat = new HLinearCategory (name.Data(),size);
	    if(dynamicsize) ((HLinearCategory*)cat)->setDynamicObjects(kTRUE);
	    ev->addCategory(num,cat,partevt.Data());
	} else {
	    ::Error ("addCategory()", "cat for %s exists already! Fix this!",name.Data());
	}
    } else {
	::Error ("addCategory()", "ZERO pointer retrieved for event !");
    }
    return cat;
}