#include "hdebug.h"
#include "hnode.h"
#include "hevent.h"
#include "hades.h"
#include "htree.h"
#include "TBranchObject.h"
#include "TString.h"
#include "TBrowser.h"
//End_Html
ClassImp(HNode)
HNode::HNode(void) : TNamed ("node","generic node") {
fNSubNodes=0;
fSubNodes=NULL;
}
HNode::HNode(Text_t *name,Text_t *title) : TNamed(name,title) {
fNSubNodes=0;
fSubNodes=NULL;
}
HNode::~HNode(void) {
if (fSubNodes) {fSubNodes->Delete(); delete fSubNodes;}
}
void HNode::makeBranch(TBranch *parent) {
Int_t i=0;
if (fSubNodes!=NULL) {
TObjArray &vector=*fSubNodes;
HNode **node=NULL;
TBranch *b=NULL;
for (i=0;i<=vector.GetLast();i++) {
node=(HNode **)&(vector[i]);
if ( (*node)!=NULL) {
b=gHades->getTree()->Branch((*node)->GetTitle(),
(*node)->ClassName(),node,100,1);
(*node)->makeBranch(b);
}
}
}
}
void HNode::activateBranch(TTree *tree) {
Int_t i=0;
if (fSubNodes!=NULL) {
TObjArray &vector=*fSubNodes;
HNode **node=NULL;
for (i=0;i<=vector.GetLast();i++) {
node=(HNode **)&(vector[i]);
if ( (*node)!=NULL) {
tree->SetBranchAddress((*node)->GetTitle(),node);
tree->SetBranchStatus((*node)->GetTitle(),1);
(*node)->activateBranch(tree);
}
}
}
}
HNode *HNode::getSubNode(Int_t i) {
if (fSubNodes && i<fNSubNodes)
return( (HNode *)fSubNodes->UncheckedAt(i) );
return NULL;
}
HNode *HNode::getFirstSubNode(void) {
if (fSubNodes)
return ( (HNode *)fSubNodes->First());
return NULL;
}
HNode *HNode::getLastSubNode(void) {
if (fSubNodes)
return ( (HNode *)fSubNodes->Last());
return NULL;
}
void HNode::addSubNode(HNode *aSon) {
Text_t title[255];
sprintf(title,"%s.%s",GetTitle(),aSon->GetTitle());
aSon->SetTitle(title);
if (fSubNodes) {fSubNodes->Add(aSon); fNSubNodes++;}
else {
fSubNodes=new TObjArray(10);
if (fSubNodes) {fSubNodes->Add(aSon); fNSubNodes++;}
}
}
Bool_t HNode::addSubNodeAt(Int_t idx,HNode *aSon) {
Text_t title[255];
sprintf(title,"%s.%s",GetTitle(),aSon->GetTitle());
aSon->SetTitle(title);
if (fSubNodes) {fSubNodes->AddAtAndExpand(aSon,idx); fNSubNodes++;}
else {
fSubNodes=new TObjArray(10);
if (fSubNodes) {fSubNodes->AddAtAndExpand(aSon,idx); fNSubNodes++;}
else return kFALSE;
}
return kTRUE;
}
void HNode::Clear(void) {
if (fSubNodes) {
TIter next(fSubNodes);
HNode *node;
while ( (node=(HNode *)next())!=NULL) {
node->Clear();
}
}
}
void HNode::Delete(void){
if (fSubNodes) fSubNodes->Delete();
}
Last change: Sat May 22 13:04:47 2010
Last generated: 2010-05-22 13:04
This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.