Line data Source code
1 : #ifndef ALISEGMENTARRAY_H
2 : #define ALISEGMENTARRAY_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 : /// \class AliSegmentArray
9 : ///
10 : /// Manager class general Alice segment
11 : /// segment is for example one pad row in TPC
12 :
13 : #include "TNamed.h"
14 : #include "TError.h"
15 : #include "TObjArray.h"
16 :
17 : class TTree;
18 : class TBranch;
19 : class TFile;
20 : class TArrayI;
21 : class AliSegmentID;
22 :
23 : class AliSegmentArray: public TNamed{
24 : public:
25 : AliSegmentArray();
26 : AliSegmentArray(const char *classname, Int_t n); //
27 : virtual ~AliSegmentArray();
28 : Bool_t SetClass(const char *classname); //set class of stored object
29 : const AliSegmentID * At(Int_t i); //return pointer to segment with index i
30 : const AliSegmentID * operator[](Int_t i); //return pointer to segment with index i
31 :
32 : Bool_t AddSegment(AliSegmentID *segment); // add segment to array
33 : AliSegmentID * AddSegment(Int_t index); //create objet and set index
34 : Bool_t MakeArray(Int_t n); //make array of pointers to Segments
35 : void ClearSegment(Int_t index); //remove segment from active
36 : virtual AliSegmentID * NewSegment(); //dynamicaly create new segment
37 : //input output functions
38 576 : TTree * GetTree(){return fTree;} //return pointer to connected tree
39 :
40 : virtual void MakeTree(char *file=0); //Make tree with the name
41 : virtual void MakeTree(TTree* tree); //Make tree with the name
42 :
43 : virtual Bool_t ConnectTree(const char * treeName); //connect tree from current directory
44 : virtual Bool_t ConnectTree(TTree* tree); //connect tree from current directory
45 :
46 : virtual AliSegmentID * LoadSegment(Int_t index);//load segment with index to the memory
47 : virtual AliSegmentID * LoadEntry(Int_t index); //load segment entry from position index in tree
48 : virtual void StoreSegment(Int_t index);//write segmen persistent
49 : Bool_t MakeDictionary(Int_t size);//create index table for tree
50 0 : TClass * GetClass() {return fClass;}
51 :
52 : protected:
53 : AliSegmentArray(const AliSegmentArray &segment); //copy constructor
54 : AliSegmentArray &operator = (const AliSegmentArray & segment); //assignment operator
55 : TObjArray * fSegment; //!<! pointer to array of pointers to segment
56 : TArrayI * fTreeIndex; //!<! pointers(index) table in tree
57 : Int_t fNSegment; ///< number of alocated segments
58 : TTree * fTree; //!<! tree with segment objects
59 : Bool_t fTreeOwner;///< flag determing the ownership of the fTree
60 : TBranch * fBranch; //!<! total branch
61 : private:
62 : TClass * fClass; //!<! class type of included objects
63 :
64 : /// \cond CLASSIMP
65 24 : ClassDef(AliSegmentArray,3)
66 : /// \endcond
67 :
68 : };
69 :
70 :
71 :
72 : inline const AliSegmentID* AliSegmentArray::operator[](Int_t i)
73 : {
74 : /// return segment with given index
75 :
76 228956 : if ( (i<0) || (i>=fNSegment)) return 0;
77 45796 : return (AliSegmentID *)(fSegment->At(i));
78 :
79 68688 : }
80 :
81 : inline const AliSegmentID* AliSegmentArray::At(Int_t i)
82 : {
83 : /// return segment with given index
84 :
85 137376 : if ( (i<0) || (i>=fNSegment)) return 0;
86 45792 : return (AliSegmentID *)(fSegment->At(i));
87 45792 : }
88 :
89 : #endif //ALISEGMENTARRAY_H
|