Including St2 in the new geometry segmentation (Christian)
[u/mrichter/AliRoot.git] / CONTAINERS / AliArrayBranch.h
1 #ifndef ALIARRAYBRANCH_H
2 #define ALIARRAYBRANCH_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8 //////////////////////////////////////////////////////////////////////////
9 //                                                                      //
10 // AliArrayBranch                                                        //
11 //                                                                      //
12 // A Branch for the case of an array of clone objects.                  //
13 //////////////////////////////////////////////////////////////////////////
14
15
16 #include "TBranch.h"
17 #include "TTree.h"
18 #include "TBranchObject.h"
19 class TClonesArray;
20 class AliObjectArray;
21  
22 class AliArraySubBranch : public TBranch {
23 public: 
24   AliArraySubBranch(){;}
25   AliArraySubBranch(const char* name, void* address, const char* leaflist, Int_t basketsize = 32000, 
26     Int_t compress = -1):TBranch(name, address, leaflist, basketsize, compress){;}
27   virtual Int_t  GetEntryExport(Long64_t entry, Int_t getall, TClonesArray* list, Int_t n) { return TBranch::GetEntryExport(entry, getall, list, n); }
28   virtual Int_t  GetEntryExport(Int_t entry, Int_t getall, AliObjectArray* list, Int_t n);
29   virtual void ReadBasketExport(TBuffer &b, TLeaf *leaf, AliObjectArray *list, Int_t n); 
30   ClassDef(AliArraySubBranch,1)  //Branch in case of an array of clone objects
31 };
32
33 class AliArrayBranch : public TBranch {
34
35 private: 
36   void Import(TLeaf * leaf, Int_t n);  //integer fill leef buffer 
37 protected:
38     AliObjectArray     *fList;           //Pointer to the clonesarray
39     Int_t            fRead;            //flag = 1 if clonesarray has been read
40     Int_t            fN;               //Number of elements in ClonesArray
41     Int_t            fNdataMax;        //Maximum value of fN
42     TString          fClassName;       //name of the class of the objets in the ClonesArray
43     TBranch          *fBranchCount;    //Branch with clones count
44
45 public:
46     AliArrayBranch();
47     AliArrayBranch(const Text_t *name, void *clonesaddress, TTree * tree, Int_t basketsize=32000,Int_t compress=-1);
48     virtual ~AliArrayBranch();
49
50     virtual void    Browse(TBrowser *b);
51     virtual Int_t   Fill();
52     virtual Int_t   GetEntry(Long64_t entry=0, Int_t getall = 0);
53     virtual Int_t   GetN() {return fN;}
54     AliObjectArray    *GetList() {return fList;}
55     Bool_t          IsFolder() {return kTRUE;}
56     virtual void    Print(Option_t *option="") const;
57     virtual void    Reset(Option_t *option="");
58     virtual void    SetAddress(void *add);
59     virtual void    SetBasketSize(Int_t buffsize);
60     virtual Bool_t          IsFolder() const {return kTRUE;}
61     ClassDef(AliArrayBranch,1)  //Branch in case of an array of clone objects
62 };
63
64
65 class AliObjectBranch: public TBranchObject{
66 public:
67   AliObjectBranch():TBranchObject(){;}
68   AliObjectBranch(const Text_t *name, const Text_t *classname, void *addobj, TTree * tree, 
69                   Int_t basketsize=32000, Int_t splitlevel = 0, Int_t compress=-1);
70   void SetAddress(void *add);
71   ClassDef(AliObjectBranch,1) 
72 };
73
74 class AliTree : public TTree {
75 public:
76   AliTree():TTree(){;}
77   AliTree(const char *name,const char *title, Int_t maxvirtualsize=0);
78   TBranch* AliBranch(const char *name, void *clonesaddress, Int_t bufsize =32000, 
79                      Int_t splitlevel=99,Int_t compres=1);
80   TBranch* AliBranch(const char *name, const char *classname, void *addobj, 
81                      Int_t bufsize=32000, Int_t splitlevel=99);
82   ClassDef(AliTree,1)  
83 };
84
85 #endif