ROOT logo
#include "hcategorymanager.h"
#include "hlinearcategory.h"

// ROOT's IO and RTTI stuff is added here
ClassImp(HCategoryManager)

    //_HADES_CLASS_DESCRIPTION
    ////////////////////////////////////////////////////////////////////////////////
    //
    //
    // HCategoryManager
    //
    // Helper object providing static template functions to create/retrieve objects from
    // LiniearCategories in an defined way. Functions to retieve/create LinearCategories
    // are provieded too.
    ////////////////////////////////////////////////////////////////////////////////

    HLocation HCategoryManager::loc;

HCategory * HCategoryManager::getCategory(Short_t num,Int_t warn,TString name)
{
    // retrieve Category with num num from current event. name is the name of
    // the category used to display in Error messages. If warn is KTRUE and
    // category can not be retrieved only an warning is emmitted.

    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)
{
    // add LinearCategory with number num and size size for object type name
    // to partial event partevt. If dynamicsize == KTRUE, objects with variable
    // size can be stored and the category will be cleared in each event.

    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;

}
 hcategorymanager.cc:1
 hcategorymanager.cc:2
 hcategorymanager.cc:3
 hcategorymanager.cc:4
 hcategorymanager.cc:5
 hcategorymanager.cc:6
 hcategorymanager.cc:7
 hcategorymanager.cc:8
 hcategorymanager.cc:9
 hcategorymanager.cc:10
 hcategorymanager.cc:11
 hcategorymanager.cc:12
 hcategorymanager.cc:13
 hcategorymanager.cc:14
 hcategorymanager.cc:15
 hcategorymanager.cc:16
 hcategorymanager.cc:17
 hcategorymanager.cc:18
 hcategorymanager.cc:19
 hcategorymanager.cc:20
 hcategorymanager.cc:21
 hcategorymanager.cc:22
 hcategorymanager.cc:23
 hcategorymanager.cc:24
 hcategorymanager.cc:25
 hcategorymanager.cc:26
 hcategorymanager.cc:27
 hcategorymanager.cc:28
 hcategorymanager.cc:29
 hcategorymanager.cc:30
 hcategorymanager.cc:31
 hcategorymanager.cc:32
 hcategorymanager.cc:33
 hcategorymanager.cc:34
 hcategorymanager.cc:35
 hcategorymanager.cc:36
 hcategorymanager.cc:37
 hcategorymanager.cc:38
 hcategorymanager.cc:39
 hcategorymanager.cc:40
 hcategorymanager.cc:41
 hcategorymanager.cc:42
 hcategorymanager.cc:43
 hcategorymanager.cc:44
 hcategorymanager.cc:45
 hcategorymanager.cc:46
 hcategorymanager.cc:47
 hcategorymanager.cc:48
 hcategorymanager.cc:49
 hcategorymanager.cc:50
 hcategorymanager.cc:51
 hcategorymanager.cc:52
 hcategorymanager.cc:53
 hcategorymanager.cc:54
 hcategorymanager.cc:55
 hcategorymanager.cc:56
 hcategorymanager.cc:57
 hcategorymanager.cc:58
 hcategorymanager.cc:59
 hcategorymanager.cc:60
 hcategorymanager.cc:61
 hcategorymanager.cc:62
 hcategorymanager.cc:63
 hcategorymanager.cc:64
 hcategorymanager.cc:65
 hcategorymanager.cc:66