]>
Commit | Line | Data |
---|---|---|
cd246117 | 1 | #ifndef TTREESTREAM_H |
2 | #define TTREESTREAM_H | |
3 | /////////////////////////////////////////////////////////////////////////////// | |
4 | // // | |
5 | // TTreeSRedirector // | |
6 | ||
7 | #include "TObject.h" | |
8 | #include "TString.h" | |
9 | class TFile; | |
10 | class TObjArray; | |
11 | class TTree; | |
12 | class TDataType; | |
13 | ||
14 | class TTreeDataElement: public TNamed { | |
15 | friend class TTreeStream; | |
16 | public: | |
17 | TTreeDataElement(Char_t type); | |
18 | TTreeDataElement(TDataType* type); | |
19 | TTreeDataElement(TClass* cl); | |
20 | void SetPointer(void* pointer) {fPointer=pointer;} | |
21 | Char_t GetType() const {return fType;} | |
22 | protected: | |
90e48c0c | 23 | |
24 | TTreeDataElement(const TTreeDataElement & tde); | |
25 | TTreeDataElement & operator=(const TTreeDataElement & tde); | |
26 | ||
cd246117 | 27 | TString fName; // name of the data element |
28 | Char_t fType; // type of data element | |
29 | TDataType *fDType; //data type pointer | |
30 | TClass *fClass; //data type pointer | |
31 | void * fPointer; // pointer to element | |
32 | ClassDef(TTreeDataElement,1) | |
33 | }; | |
34 | ||
35 | class TTreeStream: public TNamed { | |
36 | friend class TTreeSRedirector; | |
37 | public: | |
38 | TTreeStream(const char *treename); | |
39 | ~TTreeStream(); | |
40 | void Close(); | |
41 | static void Test(); | |
42 | Int_t CheckIn(Char_t type, void *pointer); | |
43 | //Int_t CheckIn(const char *type, void *pointer); | |
44 | Int_t CheckIn(TObject *o); | |
45 | void BuildTree(); | |
46 | void Fill(); | |
47 | TTreeStream& Endl(); | |
48 | // | |
49 | TTreeStream &operator<<(Bool_t &b){CheckIn('B',&b);return *this;} | |
50 | TTreeStream &operator<<(Char_t &c){CheckIn('B',&c);return *this;} | |
51 | TTreeStream &operator<<(UChar_t &c){CheckIn('b',&c);return *this;} | |
52 | TTreeStream &operator<<(Short_t &h){CheckIn('S',&h);return *this;} | |
53 | TTreeStream &operator<<(UShort_t &h){CheckIn('s',&h);return *this;} | |
54 | TTreeStream &operator<<(Int_t &i){CheckIn('I',&i);return *this;} | |
55 | TTreeStream &operator<<(UInt_t &i){CheckIn('i',&i);return *this;} | |
56 | TTreeStream &operator<<(Long_t &l){CheckIn('L',&l);return *this;} | |
57 | TTreeStream &operator<<(ULong_t &l){CheckIn('l',&l);return *this;} | |
58 | TTreeStream &operator<<(Long64_t &l){CheckIn('L',&l);return *this;} | |
59 | TTreeStream &operator<<(ULong64_t &l){CheckIn('l',&l);return *this;} | |
60 | TTreeStream &operator<<(Float_t &f){CheckIn('F',&f);return *this;} | |
61 | TTreeStream &operator<<(Double_t &d){CheckIn('D',&d);return *this;} | |
62 | TTreeStream &operator<<(TObject*o){CheckIn(o);return *this;} | |
63 | TTreeStream &operator<<(Char_t *name); | |
64 | protected: | |
65 | // | |
90e48c0c | 66 | |
67 | TTreeStream(const TTreeStream & ts); | |
68 | TTreeStream & operator=(const TTreeStream & ts); | |
69 | ||
cd246117 | 70 | TObjArray *fElements; //array of elements |
71 | TObjArray *fBranches; //pointers to branches | |
72 | TTree *fTree; //data storage | |
73 | Int_t fCurrentIndex; //index of current element | |
74 | Int_t fId; //identifier of layout | |
cd246117 | 75 | TString fNextName; //name for next entry |
76 | Int_t fNextNameCounter; //next name counter | |
77 | Int_t fStatus; //status of the layout | |
78 | ClassDef(TTreeStream,1) | |
79 | }; | |
80 | ||
81 | ||
82 | ||
83 | class TTreeSRedirector: public TObject { | |
84 | public: | |
85 | TTreeSRedirector(const char *fname); | |
9996a03b | 86 | virtual ~TTreeSRedirector(); |
cd246117 | 87 | void Close(); |
88 | static void Test(); | |
89 | virtual TTreeStream &operator<<(Int_t id); | |
90 | virtual TTreeStream &operator<<(const char *name); | |
91 | private: | |
90e48c0c | 92 | |
93 | TTreeSRedirector(const TTreeSRedirector & tsr); | |
94 | TTreeSRedirector & operator=(const TTreeSRedirector & tsr); | |
95 | ||
cd246117 | 96 | TFile* fFile; //file |
97 | TObjArray *fDataLayouts; //array of data layouts | |
98 | ClassDef(TTreeSRedirector,1) | |
99 | }; | |
100 | ||
101 | ||
102 | ||
103 | ||
104 | #endif |