ROOT logo
// @(#)$Id: hsuchain.cc,v 1.5 2008-09-18 13:04:57 halo Exp $
//*-- Author : Marcin Jaskula 03/06/2003

//_HADES_CLASS_DESCRIPTION 
////////////////////////////////////////////////////////////////////////////////
//                                                                            //
// HSUChain                                                                   //
//                                                                            //
// Chain with access to the HCategory objects                                 //
//                                                                            //
////////////////////////////////////////////////////////////////////////////////

#include "hsuchain.h"
#include "hcategory.h"
#include "TDirectory.h"
#include "TFile.h"

// -----------------------------------------------------------------------------

ClassImp(HSUChain)

// -----------------------------------------------------------------------------

HSUChain::HSUChain(const Char_t *pName)
    : TChain(pName, "HSUChain")
{
}

// -----------------------------------------------------------------------------

HSUChain::~HSUChain(void)
{
}

// -----------------------------------------------------------------------------

Int_t HSUChain::GetEntry(Int_t entry, Int_t getall)
{
// Fill the barnches with the data. Take care of the files change.

Int_t iTreeN = GetTreeNumber();
Int_t iR;

    if((iR = TChain::GetEntry(entry, getall)) <= 0)
        return iR;

    if(iTreeN == GetTreeNumber())
        return iR;

    Notify();

    return GetEntry(entry, getall);
}

// -----------------------------------------------------------------------------

Bool_t HSUChain::Notify(void)
{
TIterator *it;
HCategory *pCat;
TString    str;
TBranch   *pBranch;

    if((it = arr.MakeIterator()) == NULL)
    {
        Error("Notify", "Cannot make iterator");
        return kFALSE;
    }

    while((pCat = (HCategory *) it->Next()) != NULL)
    {
        str = pCat->getClassName();
        str += ".";

        if((pBranch = GetBranch(str.Data())) == NULL)
        {
            Error("Notify", "No branch %s in file %s", str.Data(),
                    GetFile()->GetName());
        }
        else
            pBranch->SetAddress(&pCat);
    }

    return kTRUE;
}

// -----------------------------------------------------------------------------

HCategory* HSUChain::getCategory(const Char_t *pName)
{
TString    str = pName;
TBranch   *pBranch;
HCategory *pCat;

    str += ".";

    if((pBranch = GetBranch(str.Data())) == NULL)
    {
        Error("getCategory", "No category: %s", pName);
        return NULL;
    }

TDirectory *pDirSav = gDirectory;

    GetDirectory()->cd();

    if((pCat = (HCategory *)gDirectory->FindObjectAny(pName)) == NULL)
    {
        pDirSav->cd();

        Error("getCategory", "No HCategory %s in Tree", pName);

        return NULL;
    }

    pDirSav->cd();

    pCat = (HCategory*) pCat->Clone();

    SetBranchStatus(str.Data(), 1);

    pBranch->SetAddress(&pCat);

    arr.AddLast(pCat);

    return pCat;
}
 hsuchain.cc:1
 hsuchain.cc:2
 hsuchain.cc:3
 hsuchain.cc:4
 hsuchain.cc:5
 hsuchain.cc:6
 hsuchain.cc:7
 hsuchain.cc:8
 hsuchain.cc:9
 hsuchain.cc:10
 hsuchain.cc:11
 hsuchain.cc:12
 hsuchain.cc:13
 hsuchain.cc:14
 hsuchain.cc:15
 hsuchain.cc:16
 hsuchain.cc:17
 hsuchain.cc:18
 hsuchain.cc:19
 hsuchain.cc:20
 hsuchain.cc:21
 hsuchain.cc:22
 hsuchain.cc:23
 hsuchain.cc:24
 hsuchain.cc:25
 hsuchain.cc:26
 hsuchain.cc:27
 hsuchain.cc:28
 hsuchain.cc:29
 hsuchain.cc:30
 hsuchain.cc:31
 hsuchain.cc:32
 hsuchain.cc:33
 hsuchain.cc:34
 hsuchain.cc:35
 hsuchain.cc:36
 hsuchain.cc:37
 hsuchain.cc:38
 hsuchain.cc:39
 hsuchain.cc:40
 hsuchain.cc:41
 hsuchain.cc:42
 hsuchain.cc:43
 hsuchain.cc:44
 hsuchain.cc:45
 hsuchain.cc:46
 hsuchain.cc:47
 hsuchain.cc:48
 hsuchain.cc:49
 hsuchain.cc:50
 hsuchain.cc:51
 hsuchain.cc:52
 hsuchain.cc:53
 hsuchain.cc:54
 hsuchain.cc:55
 hsuchain.cc:56
 hsuchain.cc:57
 hsuchain.cc:58
 hsuchain.cc:59
 hsuchain.cc:60
 hsuchain.cc:61
 hsuchain.cc:62
 hsuchain.cc:63
 hsuchain.cc:64
 hsuchain.cc:65
 hsuchain.cc:66
 hsuchain.cc:67
 hsuchain.cc:68
 hsuchain.cc:69
 hsuchain.cc:70
 hsuchain.cc:71
 hsuchain.cc:72
 hsuchain.cc:73
 hsuchain.cc:74
 hsuchain.cc:75
 hsuchain.cc:76
 hsuchain.cc:77
 hsuchain.cc:78
 hsuchain.cc:79
 hsuchain.cc:80
 hsuchain.cc:81
 hsuchain.cc:82
 hsuchain.cc:83
 hsuchain.cc:84
 hsuchain.cc:85
 hsuchain.cc:86
 hsuchain.cc:87
 hsuchain.cc:88
 hsuchain.cc:89
 hsuchain.cc:90
 hsuchain.cc:91
 hsuchain.cc:92
 hsuchain.cc:93
 hsuchain.cc:94
 hsuchain.cc:95
 hsuchain.cc:96
 hsuchain.cc:97
 hsuchain.cc:98
 hsuchain.cc:99
 hsuchain.cc:100
 hsuchain.cc:101
 hsuchain.cc:102
 hsuchain.cc:103
 hsuchain.cc:104
 hsuchain.cc:105
 hsuchain.cc:106
 hsuchain.cc:107
 hsuchain.cc:108
 hsuchain.cc:109
 hsuchain.cc:110
 hsuchain.cc:111
 hsuchain.cc:112
 hsuchain.cc:113
 hsuchain.cc:114
 hsuchain.cc:115
 hsuchain.cc:116
 hsuchain.cc:117
 hsuchain.cc:118
 hsuchain.cc:119
 hsuchain.cc:120
 hsuchain.cc:121
 hsuchain.cc:122
 hsuchain.cc:123
 hsuchain.cc:124
 hsuchain.cc:125
 hsuchain.cc:126
 hsuchain.cc:127