FairRoot/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>
29 {
30 
31  //--------------------
32  // Declarations --
33  //--------------------
34 
35  // Typedefs, consts, and enums
36 
37  //--------------------
38  // Instance Members --
39  //--------------------
40 
41  public:
42 
43  // Constructors
45  fDefined ( kFALSE ), fLower ( 0 ), fUpper ( 0 ) {
46  }
47 
48  RhoHTRange ( T lowerv, T upperv ) :
49  fDefined ( kTRUE ), fLower ( lowerv ), fUpper ( upperv ) {
50  }
51 
52  // Copy Constructor
53  RhoHTRange ( const RhoHTRange<T>& o ) :
54  fDefined ( o.fDefined ), fLower ( o.fLower ), fUpper ( o.fUpper ) {
55  }
56 
57  // Destructor
58  virtual ~RhoHTRange() {}
59 
60  // Operators
61 
63  if ( &o == this ) { return *this; }
64  fDefined = o.fDefined ;
65  fLower = o.fLower ;
66  fUpper = o.fUpper ;
67  return *this ;
68  }
69 
70  // Selectors (const)
71  Bool_t operator() () const {
72  return fDefined ;
73  }
74 
75  // get upper/lower limits
76  T lower() const {
77  return fLower ;
78  }
79  T upper() const {
80  return fUpper ;
81  }
82 
83  // Modifiers
84 
85  protected:
86 
87  // Helper functions
88 
89  private:
90 
91  // Friends
92 
93  // Data members
96 
97 };
98 #endif
99 
100 
101 #ifndef RhoHTAbsValVector_HH
102 #define RhoHTAbsValVector_HH
103 
104 template<class T>
106 {
107 
108  public:
109 
110  // This must return the number of the stored elements
111  virtual size_t length() const = 0 ;
112  virtual ~RhoHTAbsValVector(){};
113  // This provides access to the indifidual elements.
114  // Index runs from 0 to length()-1. Here () means that we do not requre
115  // index checking from it, though the real classe may do what they like.
116  virtual const T& operator() ( size_t i ) const = 0 ;
117 
118 };
119 #endif
120 
121 // Parent class (abstract):
122 class RhoColumn : public TNamed
123 {
124  public:
125  RhoColumn ( const char* l ) :
126  TNamed ( l,l ), fLabel ( l ), fUseDefValue ( 0 ), fPointer ( 0 ), fBranch ( 0 ) {}
127  virtual ~RhoColumn() {}
128  const TString& GetLabel() const {
129  return fLabel;
130  }
131  TBranch* GetBrPointer() {
132  return fBranch;
133  }
134  void* GetPointer() {
135  return fPointer;
136  }
137  void SetPointer ( void* p ) {
138  fPointer = p;
139  }
140  void SetUseDefValue ( Int_t b ) {
141  fUseDefValue = b;
142  }
143  const Int_t& GetUseDefValue() const {
144  return fUseDefValue;
145  }
146  virtual void SetDefValue() = 0;
147  virtual void SetValue ( const void*, RhoColumn* cp=0 ) = 0;
148  protected:
151  void* fPointer;
152  TBranch* fBranch;
153 };
154 
155 // Classes for Bool_t:
156 class RhoBoolColumn : public RhoColumn
157 {
158  public:
159  RhoBoolColumn ( const char*, const Bool_t&, const Bool_t&, TTree* );
160  virtual ~RhoBoolColumn() {
161  delete ( Bool_t* ) fPointer;
162  }
163  virtual void SetDefValue() {
164  * ( Char_t* ) fPointer = fDefValue;
165  }
166  virtual void SetValue ( const void* p, RhoColumn* ) {
167  * ( Char_t* ) fPointer = * ( const Bool_t* ) p;
168  }
169  private:
171 };
172 
174 {
175  public:
176  RhoBoolArrColumn ( const char*, const RhoHTAbsValVector<Bool_t> &, const Bool_t&,
177  TTree* );
178  virtual ~RhoBoolArrColumn() {
179  delete[] ( Bool_t* ) fPointer;
180  }
181  virtual void SetDefValue() {
182  for ( Int_t i = 0; i < fMax; ++i ) { ( ( Char_t* ) fPointer ) [i] = fDefValue; }
183  }
184  virtual void SetValue ( const void*, RhoColumn* cp=0 );
185  private:
187  Int_t fMax;
188 };
189 
191 {
192  public:
193  RhoBoolDynArrColumn ( const char*, const RhoHTAbsValVector<Bool_t> &,
194  const Bool_t&, RhoColumn*, TTree* );
196  delete[] ( Bool_t* ) fPointer;
197  }
198  virtual void SetDefValue();
199  virtual void SetValue ( const void*, RhoColumn* cp=0 );
200  private:
203 };
204 
205 // Classes for Int_t:
206 class RhoIntColumn : public RhoColumn
207 {
208  public:
209  RhoIntColumn ( const char*, const Int_t&, const Int_t&, TTree* );
210  virtual ~RhoIntColumn() {
211  delete ( Int_t* ) fPointer;
212  }
213  virtual void SetDefValue() {
214  * ( Int_t* ) fPointer = fDefValue;
215  }
216  virtual void SetValue ( const void* p, RhoColumn* ) {
217  * ( Int_t* ) fPointer = * ( const Int_t* ) p;
218  }
219  private:
220  Int_t fDefValue;
221 };
222 
224 {
225  public:
226  RhoIntArrColumn ( const char*, const RhoHTAbsValVector<Int_t> &, const Int_t&,
227  TTree* );
228  virtual ~RhoIntArrColumn() {
229  delete[] ( Int_t* ) fPointer;
230  }
231  virtual void SetDefValue() {
232  for ( Int_t i = 0; i < fMax; ++i ) { ( ( Int_t* ) fPointer ) [i] = fDefValue; }
233  }
234  virtual void SetValue ( const void*, RhoColumn* cp=0 );
235  private:
236  Int_t fDefValue;
237  Int_t fMax;
238 };
239 
241 {
242  public:
243  RhoIntDynArrColumn ( const char*, const RhoHTAbsValVector<Int_t> &,
244  const Int_t&, RhoColumn*, TTree* );
246  delete[] ( Int_t* ) fPointer;
247  }
248  virtual void SetDefValue();
249  virtual void SetValue ( const void*, RhoColumn* cp=0 );
250  private:
251  Int_t fDefValue;
253 };
254 
255 // Classes for Float_t:
256 class RhoFloatColumn : public RhoColumn
257 {
258  public:
259  RhoFloatColumn ( const char*, const Float_t&, const Float_t&, TTree* );
260  virtual ~RhoFloatColumn() {
261  delete ( Float_t* ) fPointer;
262  }
263  virtual void SetDefValue() {
264  * ( Float_t* ) fPointer = fDefValue;
265  }
266  virtual void SetValue ( const void* p, RhoColumn* ) {
267  * ( Float_t* ) fPointer = * ( const Float_t* ) p;
268  }
269  private:
270  Float_t fDefValue;
271 };
272 
274 {
275  public:
276  RhoFloatArrColumn ( const char*, const RhoHTAbsValVector<Float_t> &, const Float_t&,
277  TTree* );
278  RhoFloatArrColumn ( const char*, const TVector&, const Float_t&,
279  TTree* );
280  virtual ~RhoFloatArrColumn() {
281  delete[] ( Float_t* ) fPointer;
282  }
283  virtual void SetDefValue() {
284  for ( Int_t i = 0; i < fMax; ++i ) { ( ( Float_t* ) fPointer ) [i] = fDefValue; }
285  }
286  virtual void SetValue ( const void*, RhoColumn* cp=0 );
287  private:
288  Float_t fDefValue;
289  Int_t fMax;
290 };
291 
293 {
294  public:
295  RhoFloatDynArrColumn ( const char*, const RhoHTAbsValVector<Float_t> &,
296  const Float_t&, RhoColumn*, TTree* );
297  RhoFloatDynArrColumn ( const char*, const TVector&,
298  const Float_t&, RhoColumn*, TTree* );
300  delete[] ( Float_t* ) fPointer;
301  }
302  virtual void SetDefValue();
303  virtual void SetValue ( const void*, RhoColumn* cp=0 );
304  private:
305  Float_t fDefValue;
307 };
308 
309 // Classes for Double_t:
311 {
312  public:
313  RhoDoubleColumn ( const char*, const Double_t&, const Double_t&, TTree* );
314  virtual ~RhoDoubleColumn() {
315  delete ( Double_t* ) fPointer;
316  }
317  virtual void SetDefValue() {
318  * ( Double_t* ) fPointer = fDefValue;
319  }
320  virtual void SetValue ( const void* p, RhoColumn* ) {
321  * ( Double_t* ) fPointer = * ( const Double_t* ) p;
322  }
323  private:
325 };
326 
328 {
329  public:
330  RhoDoubleArrColumn ( const char*, const RhoHTAbsValVector<Double_t> &,
331  const Double_t&, TTree* );
333  delete[] ( Double_t* ) fPointer;
334  }
335  virtual void SetDefValue() {
336  for ( Int_t i = 0; i < fMax; ++i ) { ( ( Double_t* ) fPointer ) [i] = fDefValue; }
337  }
338  virtual void SetValue ( const void*, RhoColumn* cp=0 );
339  private:
341  Int_t fMax;
342 };
343 
345 {
346  public:
347  RhoDoubleDynArrColumn ( const char*, const RhoHTAbsValVector<Double_t> &,
348  const Double_t&, RhoColumn*, TTree* );
350  delete[] ( Double_t* ) fPointer;
351  }
352  virtual void SetDefValue();
353  virtual void SetValue ( const void*, RhoColumn* cp=0 );
354  private:
357 };
358 
359 // String column:
361 {
362  public:
363  RhoStringColumn ( const TString&, const TString&,
364  const TString&, TTree* );
365  virtual ~RhoStringColumn() {
366  delete[] ( TString* ) fPointer;
367  }
368  virtual void SetDefValue();
369  virtual void SetValue ( const void*, RhoColumn* cp=0 );
370  private:
372 };
373 
374 #endif
virtual void SetValue(const void *, RhoColumn *cp=0)
Definition: RhoColumn.cxx:461
RhoHTRange< T > & operator=(const RhoHTRange< T > &o)
Definition: RhoColumn.h:62
Double_t fDefValue
Definition: RhoColumn.h:340
RhoDoubleColumn(const char *, const Double_t &, const Double_t &, TTree *)
Definition: RhoColumn.cxx:349
RhoColumn * fIndexPtr
Definition: RhoColumn.h:306
RhoFloatArrColumn(const char *, const RhoHTAbsValVector< Float_t > &, const Float_t &, TTree *)
Definition: RhoColumn.cxx:212
virtual ~RhoIntArrColumn()
Definition: RhoColumn.h:228
virtual void SetValue(const void *p, RhoColumn *)
Definition: RhoColumn.h:320
virtual void SetValue(const void *, RhoColumn *cp=0)
Definition: RhoColumn.cxx:379
virtual void SetDefValue()
Definition: RhoColumn.h:263
Float_t fDefValue
Definition: RhoColumn.h:288
RhoHTRange()
Definition: RhoColumn.h:44
virtual const T & operator()(size_t i) const =0
virtual ~RhoFloatArrColumn()
Definition: RhoColumn.h:280
virtual void SetValue(const void *p, RhoColumn *)
Definition: RhoColumn.h:166
virtual void SetValue(const void *p, RhoColumn *)
Definition: RhoColumn.h:266
RhoColumn(const char *l)
Definition: RhoColumn.h:125
Int_t i
Definition: run_full.C:25
TTree * b
RhoIntDynArrColumn(const char *, const RhoHTAbsValVector< Int_t > &, const Int_t &, RhoColumn *, TTree *)
Definition: RhoColumn.cxx:155
RhoColumn * fIndexPtr
Definition: RhoColumn.h:202
RhoBoolDynArrColumn(const char *, const RhoHTAbsValVector< Bool_t > &, const Bool_t &, RhoColumn *, TTree *)
Definition: RhoColumn.cxx:66
virtual size_t length() const =0
Int_t fDefValue
Definition: RhoColumn.h:220
RhoStringColumn(const TString &, const TString &, const TString &, TTree *)
Definition: RhoColumn.cxx:438
RhoFloatColumn(const char *, const Float_t &, const Float_t &, TTree *)
Definition: RhoColumn.cxx:201
RhoBoolArrColumn(const char *, const RhoHTAbsValVector< Bool_t > &, const Bool_t &, TTree *)
Definition: RhoColumn.cxx:35
virtual void SetValue(const void *, RhoColumn *cp=0)
Definition: RhoColumn.cxx:94
Bool_t fDefValue
Definition: RhoColumn.h:186
T lower() const
Definition: RhoColumn.h:76
virtual ~RhoBoolColumn()
Definition: RhoColumn.h:160
virtual void SetDefValue()=0
TBranch * fBranch
Definition: RhoColumn.h:152
virtual void SetDefValue()
Definition: RhoColumn.h:283
RhoDoubleArrColumn(const char *, const RhoHTAbsValVector< Double_t > &, const Double_t &, TTree *)
Definition: RhoColumn.cxx:360
Int_t fUseDefValue
Definition: RhoColumn.h:150
virtual void SetValue(const void *, RhoColumn *cp=0)=0
Double_t fDefValue
Definition: RhoColumn.h:324
const TString & GetLabel() const
Definition: RhoColumn.h:128
Double_t p
Definition: anasim.C:58
RhoBoolColumn(const char *, const Bool_t &, const Bool_t &, TTree *)
Definition: RhoColumn.cxx:24
virtual ~RhoDoubleArrColumn()
Definition: RhoColumn.h:332
virtual void SetDefValue()
Definition: RhoColumn.cxx:451
TString fDefValue
Definition: RhoColumn.h:371
virtual ~RhoHTRange()
Definition: RhoColumn.h:58
TTree * T
Definition: anaLmdReco.C:32
RhoColumn * fIndexPtr
Definition: RhoColumn.h:252
Double_t
virtual void SetDefValue()
Definition: RhoColumn.h:335
Bool_t operator()() const
Definition: RhoColumn.h:71
virtual void SetDefValue()
Definition: RhoColumn.cxx:84
void SetUseDefValue(Int_t b)
Definition: RhoColumn.h:140
virtual ~RhoDoubleColumn()
Definition: RhoColumn.h:314
virtual void SetDefValue()
Definition: RhoColumn.h:181
TBranch * GetBrPointer()
Definition: RhoColumn.h:131
void * GetPointer()
Definition: RhoColumn.h:134
TString fLabel
Definition: RhoColumn.h:149
virtual void SetValue(const void *, RhoColumn *cp=0)
Definition: RhoColumn.cxx:183
virtual ~RhoBoolArrColumn()
Definition: RhoColumn.h:178
virtual void SetValue(const void *, RhoColumn *cp=0)
Definition: RhoColumn.cxx:419
virtual void SetDefValue()
Definition: RhoColumn.cxx:409
virtual ~RhoIntDynArrColumn()
Definition: RhoColumn.h:245
T upper() const
Definition: RhoColumn.h:79
const Int_t & GetUseDefValue() const
Definition: RhoColumn.h:143
virtual ~RhoStringColumn()
Definition: RhoColumn.h:365
virtual void SetDefValue()
Definition: RhoColumn.h:317
virtual void SetDefValue()
Definition: RhoColumn.h:163
virtual void SetValue(const void *, RhoColumn *cp=0)
Definition: RhoColumn.cxx:143
virtual void SetValue(const void *, RhoColumn *cp=0)
Definition: RhoColumn.cxx:242
RhoIntColumn(const char *, const Int_t &, const Int_t &, TTree *)
Definition: RhoColumn.cxx:113
void SetPointer(void *p)
Definition: RhoColumn.h:137
virtual ~RhoBoolDynArrColumn()
Definition: RhoColumn.h:195
virtual ~RhoFloatColumn()
Definition: RhoColumn.h:260
virtual void SetDefValue()
Definition: RhoColumn.h:213
virtual void SetDefValue()
Definition: RhoColumn.h:231
virtual void SetValue(const void *, RhoColumn *cp=0)
Definition: RhoColumn.cxx:298
virtual ~RhoColumn()
Definition: RhoColumn.h:127
virtual void SetValue(const void *p, RhoColumn *)
Definition: RhoColumn.h:216
void * fPointer
Definition: RhoColumn.h:151
RhoHTRange(const RhoHTRange< T > &o)
Definition: RhoColumn.h:53
virtual ~RhoIntColumn()
Definition: RhoColumn.h:210
RhoIntArrColumn(const char *, const RhoHTAbsValVector< Int_t > &, const Int_t &, TTree *)
Definition: RhoColumn.cxx:124
Float_t fDefValue
Definition: RhoColumn.h:270
RhoHTRange(T lowerv, T upperv)
Definition: RhoColumn.h:48
RhoColumn * fIndexPtr
Definition: RhoColumn.h:356
RhoFloatDynArrColumn(const char *, const RhoHTAbsValVector< Float_t > &, const Float_t &, RhoColumn *, TTree *)
Definition: RhoColumn.cxx:254
virtual ~RhoHTAbsValVector()
Definition: RhoColumn.h:112
RhoDoubleDynArrColumn(const char *, const RhoHTAbsValVector< Double_t > &, const Double_t &, RhoColumn *, TTree *)
Definition: RhoColumn.cxx:391
virtual void SetDefValue()
Definition: RhoColumn.cxx:272
virtual void SetDefValue()
Definition: RhoColumn.cxx:173
virtual void SetValue(const void *, RhoColumn *cp=0)
Definition: RhoColumn.cxx:54
virtual ~RhoFloatDynArrColumn()
Definition: RhoColumn.h:299
virtual ~RhoDoubleDynArrColumn()
Definition: RhoColumn.h:349
Bool_t fDefValue
Definition: RhoColumn.h:170
Bool_t fDefined
Definition: RhoColumn.h:94