PandaRoot
RhoColumn.h
Go to the documentation of this file.
1 #ifndef RHOCOLUMN_H
2 #define RHOCOLUMN_H
3 // //
5 // RhoColumn //
6 // //
7 // Nested class hierarchy to hold information about TTuple columns. //
8 // //
9 // Author List: //
10 // Marcel Kunze, RUB, Mar. 99 //
11 // Apr.2001 (MK), Inherit from TNamed to support THashList //
12 // Copyright (C) 1999-2001, Ruhr-University Bochum. //
13 // Ralf Kliemt, HIM/GSI Feb.2013 (Cleanup & Restructuring) //
14 // //
16 
17 #include "TNamed.h"
18 #include "TString.h"
19 #include "TVector.h"
20 
21 class TTree;
22 class TBranch;
23 
24 #ifndef RhoHTRange_HH
25 #define RhoHTRange_HH
26 
27 template <class T>
28 class RhoHTRange {
29 
30  //--------------------
31  // Declarations --
32  //--------------------
33 
34  // Typedefs, consts, and enums
35 
36  //--------------------
37  // Instance Members --
38  //--------------------
39 
40  public:
41  // Constructors
42  RhoHTRange() : fDefined(kFALSE), fLower(0), fUpper(0) {}
43 
44  RhoHTRange(T lowerv, T upperv) : fDefined(kTRUE), fLower(lowerv), fUpper(upperv) {}
45 
46  // Copy Constructor
47  RhoHTRange(const RhoHTRange<T> &o) : fDefined(o.fDefined), fLower(o.fLower), fUpper(o.fUpper) {}
48 
49  // Destructor
50  virtual ~RhoHTRange() {}
51 
52  // Operators
53 
55  {
56  if (&o == this) {
57  return *this;
58  }
59  fDefined = o.fDefined;
60  fLower = o.fLower;
61  fUpper = o.fUpper;
62  return *this;
63  }
64 
65  // Selectors (const)
66  Bool_t operator()() const { return fDefined; }
67 
68  // get upper/lower limits
69  T lower() const { return fLower; }
70  T upper() const { return fUpper; }
71 
72  // Modifiers
73 
74  protected:
75  // Helper functions
76 
77  private:
78  // Friends
79 
80  // Data members
81  Bool_t fDefined;
82  T fLower, fUpper;
83 };
84 #endif
85 
86 #ifndef RhoHTAbsValVector_HH
87 #define RhoHTAbsValVector_HH
88 
89 template <class T>
91 
92  public:
93  // This must return the number of the stored elements
94  virtual size_t length() const = 0;
95  virtual ~RhoHTAbsValVector(){};
96  // This provides access to the indifidual elements.
97  // Index runs from 0 to length()-1. Here () means that we do not requre
98  // index checking from it, though the real classe may do what they like.
99  virtual const T &operator()(size_t i) const = 0;
100 };
101 #endif
102 
103 // Parent class (abstract):
104 class RhoColumn : public TNamed {
105  public:
106  RhoColumn(const char *l) : TNamed(l, l), fLabel(l), fUseDefValue(0), fPointer(nullptr), fBranch(nullptr) {}
107  virtual ~RhoColumn() {}
108  const TString &GetLabel() const { return fLabel; }
109  TBranch *GetBrPointer() { return fBranch; }
110  void *GetPointer() { return fPointer; }
111  void SetPointer(void *p) { fPointer = p; }
112  void SetUseDefValue(Int_t b) { fUseDefValue = b; }
113  const Int_t &GetUseDefValue() const { return fUseDefValue; }
114  virtual void SetDefValue() = 0;
115  virtual void SetValue(const void *, RhoColumn *cp = nullptr) = 0;
116 
117  protected:
118  TString fLabel;
120  void *fPointer;
121  TBranch *fBranch;
122 };
123 
124 // Classes for Bool_t:
125 class RhoBoolColumn : public RhoColumn {
126  public:
127  RhoBoolColumn(const char *, const Bool_t &, const Bool_t &, TTree *);
128  virtual ~RhoBoolColumn() { delete (Bool_t *)fPointer; }
129  virtual void SetDefValue() { *(Char_t *)fPointer = fDefValue; }
130  virtual void SetValue(const void *p, RhoColumn *) { *(Char_t *)fPointer = *(const Bool_t *)p; }
131 
132  private:
133  Bool_t fDefValue;
134 };
135 
136 class RhoBoolArrColumn : public RhoColumn {
137  public:
138  RhoBoolArrColumn(const char *, const RhoHTAbsValVector<Bool_t> &, const Bool_t &, TTree *);
139  virtual ~RhoBoolArrColumn() { delete[](Bool_t *) fPointer; }
140  virtual void SetDefValue()
141  {
142  for (Int_t i = 0; i < fMax; ++i) {
143  ((Char_t *)fPointer)[i] = fDefValue;
144  }
145  }
146  virtual void SetValue(const void *, RhoColumn *cp = nullptr);
147 
148  private:
149  Bool_t fDefValue;
150  Int_t fMax;
151 };
152 
154  public:
155  RhoBoolDynArrColumn(const char *, const RhoHTAbsValVector<Bool_t> &, const Bool_t &, RhoColumn *, TTree *);
156  virtual ~RhoBoolDynArrColumn() { delete[](Bool_t *) fPointer; }
157  virtual void SetDefValue();
158  virtual void SetValue(const void *, RhoColumn *cp = nullptr);
159 
160  private:
161  Bool_t fDefValue;
162  RhoColumn *fIndexPtr;
163 };
164 
165 // Classes for Int_t:
166 class RhoIntColumn : public RhoColumn {
167  public:
168  RhoIntColumn(const char *, const Int_t &, const Int_t &, TTree *);
169  virtual ~RhoIntColumn() { delete (Int_t *)fPointer; }
170  virtual void SetDefValue() { *(Int_t *)fPointer = fDefValue; }
171  virtual void SetValue(const void *p, RhoColumn *) { *(Int_t *)fPointer = *(const Int_t *)p; }
172 
173  private:
174  Int_t fDefValue;
175 };
176 
177 class RhoIntArrColumn : public RhoColumn {
178  public:
179  RhoIntArrColumn(const char *, const RhoHTAbsValVector<Int_t> &, const Int_t &, TTree *);
180  virtual ~RhoIntArrColumn() { delete[](Int_t *) fPointer; }
181  virtual void SetDefValue()
182  {
183  for (Int_t i = 0; i < fMax; ++i) {
184  ((Int_t *)fPointer)[i] = fDefValue;
185  }
186  }
187  virtual void SetValue(const void *, RhoColumn *cp = nullptr);
188 
189  private:
190  Int_t fDefValue;
191  Int_t fMax;
192 };
193 
195  public:
196  RhoIntDynArrColumn(const char *, const RhoHTAbsValVector<Int_t> &, const Int_t &, RhoColumn *, TTree *);
197  virtual ~RhoIntDynArrColumn() { delete[](Int_t *) fPointer; }
198  virtual void SetDefValue();
199  virtual void SetValue(const void *, RhoColumn *cp = nullptr);
200 
201  private:
202  Int_t fDefValue;
203  RhoColumn *fIndexPtr;
204 };
205 
206 // Classes for Float_t:
207 class RhoFloatColumn : public RhoColumn {
208  public:
209  RhoFloatColumn(const char *, const Float_t &, const Float_t &, TTree *);
210  virtual ~RhoFloatColumn() { delete (Float_t *)fPointer; }
211  virtual void SetDefValue() { *(Float_t *)fPointer = fDefValue; }
212  virtual void SetValue(const void *p, RhoColumn *) { *(Float_t *)fPointer = *(const Float_t *)p; }
213 
214  private:
215  Float_t fDefValue;
216 };
217 
218 class RhoFloatArrColumn : public RhoColumn {
219  public:
220  RhoFloatArrColumn(const char *, const RhoHTAbsValVector<Float_t> &, const Float_t &, TTree *);
221  RhoFloatArrColumn(const char *, const TVector &, const Float_t &, TTree *);
222  virtual ~RhoFloatArrColumn() { delete[](Float_t *) fPointer; }
223  virtual void SetDefValue()
224  {
225  for (Int_t i = 0; i < fMax; ++i) {
226  ((Float_t *)fPointer)[i] = fDefValue;
227  }
228  }
229  virtual void SetValue(const void *, RhoColumn *cp = nullptr);
230 
231  private:
232  Float_t fDefValue;
233  Int_t fMax;
234 };
235 
237  public:
238  RhoFloatDynArrColumn(const char *, const RhoHTAbsValVector<Float_t> &, const Float_t &, RhoColumn *, TTree *);
239  RhoFloatDynArrColumn(const char *, const TVector &, const Float_t &, RhoColumn *, TTree *);
240  virtual ~RhoFloatDynArrColumn() { delete[](Float_t *) fPointer; }
241  virtual void SetDefValue();
242  virtual void SetValue(const void *, RhoColumn *cp = nullptr);
243 
244  private:
245  Float_t fDefValue;
246  RhoColumn *fIndexPtr;
247 };
248 
249 // Classes for Double_t:
250 class RhoDoubleColumn : public RhoColumn {
251  public:
252  RhoDoubleColumn(const char *, const Double_t &, const Double_t &, TTree *);
253  virtual ~RhoDoubleColumn() { delete (Double_t *)fPointer; }
254  virtual void SetDefValue() { *(Double_t *)fPointer = fDefValue; }
255  virtual void SetValue(const void *p, RhoColumn *) { *(Double_t *)fPointer = *(const Double_t *)p; }
256 
257  private:
258  Double_t fDefValue;
259 };
260 
262  public:
263  RhoDoubleArrColumn(const char *, const RhoHTAbsValVector<Double_t> &, const Double_t &, TTree *);
264  virtual ~RhoDoubleArrColumn() { delete[](Double_t *) fPointer; }
265  virtual void SetDefValue()
266  {
267  for (Int_t i = 0; i < fMax; ++i) {
268  ((Double_t *)fPointer)[i] = fDefValue;
269  }
270  }
271  virtual void SetValue(const void *, RhoColumn *cp = nullptr);
272 
273  private:
274  Double_t fDefValue;
275  Int_t fMax;
276 };
277 
279  public:
280  RhoDoubleDynArrColumn(const char *, const RhoHTAbsValVector<Double_t> &, const Double_t &, RhoColumn *, TTree *);
281  virtual ~RhoDoubleDynArrColumn() { delete[](Double_t *) fPointer; }
282  virtual void SetDefValue();
283  virtual void SetValue(const void *, RhoColumn *cp = nullptr);
284 
285  private:
286  Double_t fDefValue;
287  RhoColumn *fIndexPtr;
288 };
289 
290 // String column:
291 class RhoStringColumn : public RhoColumn {
292  public:
293  RhoStringColumn(const TString &, const TString &, const TString &, TTree *);
294  virtual ~RhoStringColumn() { delete[](TString *) fPointer; }
295  virtual void SetDefValue();
296  virtual void SetValue(const void *, RhoColumn *cp = nullptr);
297 
298  private:
299  TString fDefValue;
300 };
301 
302 #endif
RhoHTRange< T > & operator=(const RhoHTRange< T > &o)
Definition: RhoColumn.h:54
virtual ~RhoIntArrColumn()
Definition: RhoColumn.h:180
virtual void SetValue(const void *p, RhoColumn *)
Definition: RhoColumn.h:255
virtual void SetDefValue()
Definition: RhoColumn.h:211
RhoHTRange()
Definition: RhoColumn.h:42
virtual ~RhoFloatArrColumn()
Definition: RhoColumn.h:222
virtual void SetValue(const void *p, RhoColumn *)
Definition: RhoColumn.h:130
virtual void SetValue(const void *p, RhoColumn *)
Definition: RhoColumn.h:212
RhoColumn(const char *l)
Definition: RhoColumn.h:106
virtual ~RhoBoolColumn()
Definition: RhoColumn.h:128
TBranch * fBranch
Definition: RhoColumn.h:121
virtual void SetDefValue()
Definition: RhoColumn.h:223
Int_t fUseDefValue
Definition: RhoColumn.h:119
unsigned int i
Definition: P4_F32vec4.h:21
virtual ~RhoDoubleArrColumn()
Definition: RhoColumn.h:264
T lower() const
Definition: RhoColumn.h:69
virtual ~RhoHTRange()
Definition: RhoColumn.h:50
const Int_t & GetUseDefValue() const
Definition: RhoColumn.h:113
virtual void SetDefValue()
Definition: RhoColumn.h:265
void SetUseDefValue(Int_t b)
Definition: RhoColumn.h:112
virtual ~RhoDoubleColumn()
Definition: RhoColumn.h:253
virtual void SetDefValue()
Definition: RhoColumn.h:140
TBranch * GetBrPointer()
Definition: RhoColumn.h:109
void * GetPointer()
Definition: RhoColumn.h:110
TString fLabel
Definition: RhoColumn.h:118
virtual ~RhoBoolArrColumn()
Definition: RhoColumn.h:139
virtual ~RhoIntDynArrColumn()
Definition: RhoColumn.h:197
virtual ~RhoStringColumn()
Definition: RhoColumn.h:294
virtual void SetDefValue()
Definition: RhoColumn.h:254
virtual void SetDefValue()
Definition: RhoColumn.h:129
void SetPointer(void *p)
Definition: RhoColumn.h:111
virtual ~RhoBoolDynArrColumn()
Definition: RhoColumn.h:156
virtual ~RhoFloatColumn()
Definition: RhoColumn.h:210
virtual void SetDefValue()
Definition: RhoColumn.h:170
const TString & GetLabel() const
Definition: RhoColumn.h:108
virtual void SetDefValue()
Definition: RhoColumn.h:181
virtual ~RhoColumn()
Definition: RhoColumn.h:107
virtual void SetValue(const void *p, RhoColumn *)
Definition: RhoColumn.h:171
void * fPointer
Definition: RhoColumn.h:120
RhoHTRange(const RhoHTRange< T > &o)
Definition: RhoColumn.h:47
virtual ~RhoIntColumn()
Definition: RhoColumn.h:169
RhoHTRange(T lowerv, T upperv)
Definition: RhoColumn.h:44
T upper() const
Definition: RhoColumn.h:70
virtual ~RhoHTAbsValVector()
Definition: RhoColumn.h:95
virtual ~RhoFloatDynArrColumn()
Definition: RhoColumn.h:240
virtual ~RhoDoubleDynArrColumn()
Definition: RhoColumn.h:281
Bool_t operator()() const
Definition: RhoColumn.h:66