Jpp
JTreeParameters.hh
Go to the documentation of this file.
1 #ifndef __JROOT__JTREEPARAMETERS__
2 #define __JROOT__JTREEPARAMETERS__
3 
4 #include "TString.h"
5 
6 #include "JLang/JType.hh"
7 #include "JLang/JNullType.hh"
8 
9 
10 /**
11  * \author mdejong
12  */
13 
14 namespace JROOT {}
15 namespace JPP { using namespace JROOT; }
16 
17 namespace JROOT {
18 
19  using JLANG::JType;
20  using JLANG::JNullType;
21 
22 
23  /**
24  * Data structure for TTree parameters.
25  */
27  public:
28  /**
29  * Constructor.
30  *
31  * \param treeName TTree name
32  * \param treeTitle TTree title
33  * \param branchName TBranch name
34  * \param compressionLevel TBranch compression level
35  * \param basketSize TBranch basket size
36  * \param splitLevel TBranch split level
37  */
38  JTreeParameters(const TString& treeName,
39  const TString& treeTitle,
40  const TString& branchName = "",
41  const int compressionLevel = 1,
42  const int basketSize = 65536,
43  const int splitLevel = 1)
44 
45  {
46  this->treeName = treeName;
47  this->treeTitle = treeTitle;
48  this->branchName = branchName;
50  this->basketSize = basketSize;
51  this->splitLevel = splitLevel;
52  }
53 
54 
55  /**
56  * Get TTree parameters.
57  *
58  * \return TTree parameters
59  */
60  inline const JTreeParameters& getTreeParameters() const
61  {
62  return static_cast<const JTreeParameters&>(*this);
63  }
64 
65 
66  /**
67  * Get TTree name.
68  *
69  * \return TTree name
70  */
71  const TString& getTreeName() const
72  {
73  return treeName;
74  }
75 
76 
77  /**
78  * Get TTree title.
79  *
80  * \return TTree title
81  */
82  const TString& getTreeTitle() const
83  {
84  return treeTitle;
85  }
86 
87 
88  /**
89  * Get TBranch name.
90  *
91  * \return TBranch name
92  */
93  const TString& getBranchName() const
94  {
95  return (branchName != "" ? branchName : treeName);
96  }
97 
98 
99  /**
100  * Get compression level.
101  *
102  * \return compression level
103  */
104  int getCompressionLevel() const
105  {
106  return compressionLevel;
107  }
108 
109 
110  /**
111  * Get basket size.
112  *
113  * \return basket size
114  */
115  int getBasketSize() const
116  {
117  return basketSize;
118  }
119 
120 
121  /**
122  * Get split level.
123  *
124  * \return split level
125  */
126  int getSplitLevel() const
127  {
128  return splitLevel;
129  }
130 
131 
132  protected:
133  TString treeName; //!< TTree name
134  TString treeTitle; //!< TTree title
135  TString branchName; //!< TBranch name
136  int compressionLevel; //!< TBranch compression level
137  int basketSize; //!< TBranch basket size
138  int splitLevel; //!< TBranch split level
139  };
140 
141 
142  /**
143  * Template definition for method returning TTree parameters.
144  * The template argument refers to the class for which ROOT TTree I/O is desired.
145  *
146  * \return TTree parameters
147  */
148  template<class T>
150  {
151  return getTreeParameters(JType<T>());
152  }
153 
154 
155  /**
156  * Method with argument definition for obtaining TTree parameters.
157  * The method argument refers to the class for which ROOT TTree I/O is desired.
158  * This method should then be overloaded and the overloaded method should
159  * return a JTreeParameters object with the corresponding TTree parameters.
160  *
161  * \param type data type
162  * \return TTree parameters
163  */
164  template<class T>
165  inline JNullType getTreeParameters(const JType<T>& type);
166 
167 
168  /**
169  * Test availability of TTree parameters for given class.
170  *
171  * The parameter result evaluates to true if for this class TTree parameters are defined.
172  */
173  template<class T>
175  {
176  private:
177 
178  class JSmall { char buffer; };
179  class JBig { int buffer; };
180 
181  static JBig JTest(...);
182  static JSmall JTest(const JTreeParameters&);
183 
184  public:
185  static const bool result = sizeof(JTest(getTreeParameters(JType<T>()))) == sizeof(JSmall); //!< true if TTree parameters available; else false
186  };
187 }
188 
189 #endif
JROOT::JTreeParameters::getTreeName
const TString & getTreeName() const
Get TTree name.
Definition: JTreeParameters.hh:71
JROOT::JTreeParameters::treeName
TString treeName
TTree name.
Definition: JTreeParameters.hh:133
JROOT::JTreeParameters::JTreeParameters
JTreeParameters(const TString &treeName, const TString &treeTitle, const TString &branchName="", const int compressionLevel=1, const int basketSize=65536, const int splitLevel=1)
Constructor.
Definition: JTreeParameters.hh:38
JROOT::JTreeParametersAvailable::JSmall
Definition: JTreeParameters.hh:178
JLANG::JType
Auxiliary class for a type holder.
Definition: JType.hh:19
JROOT
Auxiliary classes and methods for ROOT I/O.
Definition: JAbstractStreamer.hh:13
JLANG::JNullType
Auxiliary class for no type definition.
Definition: JNullType.hh:19
JROOT::JTreeParameters::splitLevel
int splitLevel
TBranch split level.
Definition: JTreeParameters.hh:138
JROOT::JTreeParametersAvailable::JTest
static JBig JTest(...)
JROOT::JTreeParametersAvailable
Test availability of TTree parameters for given class.
Definition: JTreeParameters.hh:174
JPP
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Definition: JAAnetToolkit.hh:37
JROOT::JTreeParameters::basketSize
int basketSize
TBranch basket size.
Definition: JTreeParameters.hh:137
JROOT::JTreeParameters::treeTitle
TString treeTitle
TTree title.
Definition: JTreeParameters.hh:134
JROOT::JTreeParameters::getBranchName
const TString & getBranchName() const
Get TBranch name.
Definition: JTreeParameters.hh:93
JROOT::JTreeParameters::getSplitLevel
int getSplitLevel() const
Get split level.
Definition: JTreeParameters.hh:126
JROOT::JTreeParameters::getTreeParameters
const JTreeParameters & getTreeParameters() const
Get TTree parameters.
Definition: JTreeParameters.hh:60
JROOT::JTreeParameters::branchName
TString branchName
TBranch name.
Definition: JTreeParameters.hh:135
JROOT::JTreeParameters::getCompressionLevel
int getCompressionLevel() const
Get compression level.
Definition: JTreeParameters.hh:104
JROOT::JTreeParameters::getTreeTitle
const TString & getTreeTitle() const
Get TTree title.
Definition: JTreeParameters.hh:82
JROOT::getTreeParameters
JNullType getTreeParameters(const JType< T > &type)
Method with argument definition for obtaining TTree parameters.
JROOT::JTreeParameters::getBasketSize
int getBasketSize() const
Get basket size.
Definition: JTreeParameters.hh:115
JNullType.hh
JROOT::JTreeParametersAvailable::result
static const bool result
true if TTree parameters available; else false
Definition: JTreeParameters.hh:185
JROOT::JTreeParametersAvailable::JBig::buffer
int buffer
Definition: JTreeParameters.hh:179
JROOT::JTreeParametersAvailable::JBig
Definition: JTreeParameters.hh:179
JROOT::JTreeParameters::compressionLevel
int compressionLevel
TBranch compression level.
Definition: JTreeParameters.hh:136
JType.hh
JROOT::JTreeParametersAvailable::JSmall::buffer
char buffer
Definition: JTreeParameters.hh:178
JROOT::JTreeParameters
Data structure for TTree parameters.
Definition: JTreeParameters.hh:26