Jpp
JEnergy.hh
Go to the documentation of this file.
1 #ifndef __JFIT__JENERGY__
2 #define __JFIT__JENERGY__
3 
4 #include <cmath>
5 #include <limits>
6 
7 #include "JLang/JComparable.hh"
8 #include "JMath/JMath.hh"
9 
10 
11 /**
12  * \author mdejong
13  */
14 
15 namespace JFIT {}
16 namespace JPP { using namespace JFIT; }
17 
18 namespace JFIT {
19 
20  /**
21  * Data structure for fit of energy.
22  * The internal value is equal to the logarithm of the energy.
23  */
24  class JEnergy :
25  public JMATH::JMath<JEnergy>,
26  public JLANG::JComparable<JEnergy>
27  {
28  public:
29  /**
30  * Default constructor.
31  */
32  JEnergy() :
33  __X(0.0)
34  {}
35 
36 
37  /**
38  * Constructor.
39  *
40  * \param X x-value [log(E/GeV)]
41  */
42  JEnergy(const double X) :
43  __X(X)
44  {}
45 
46 
47  /**
48  * Less than method.
49  *
50  * \param X Energy [log(E/GeV)]
51  * \return true if this energy less than given energy; else false
52  */
53  bool less(const JEnergy& X) const
54  {
55  return __X < X.__X;
56  }
57 
58 
59  /**
60  * Prefix unary minus.
61  *
62  * \return Energy
63  */
65  {
66  __X = -__X;
67 
68  return *this;
69  }
70 
71 
72  /**
73  * Addition operator.
74  *
75  * \param value Energy
76  * \return Energy
77  */
78  JEnergy& add(const JEnergy& value)
79  {
80  __X += value.__X;
81 
82  return *this;
83  }
84 
85 
86  /**
87  * Subtraction operator.
88  *
89  * \param value Energy
90  * \return Energy
91  */
92  JEnergy& sub(const JEnergy& value)
93  {
94  __X -= value.__X;
95 
96  return *this;
97  }
98 
99 
100  /**
101  * Multiplication operator.
102  *
103  * \param value multiplication factor
104  * \return Energy
105  */
106  JEnergy& mul(const double value)
107  {
108  __X *= value;
109 
110  return *this;
111  }
112 
113 
114  /**
115  * Division operator.
116  *
117  * \param value multiplication factor
118  * \return Energy
119  */
120  JEnergy& div(const double value)
121  {
122  __X /= value;
123 
124  return *this;
125  }
126 
127 
128  /**
129  * Get energy.
130  *
131  * \return Energy [log(E/GeV)]
132  */
133  double getX() const
134  {
135  return __X;
136  }
137 
138 
139  /**
140  * Get energy.
141  *
142  * \return Energy [GeV]
143  */
144  double getE() const
145  {
146  return pow(10.0, __X);
147  }
148 
149 
150  /**
151  * Put energy.
152  *
153  * \param E Energy [GeV]
154  */
155  void putE(const double E)
156  {
157  __X = log10(E);
158  }
159 
160 
161  /**
162  * Get derivative of energy.
163  *
164  * \return dE/dx [GeV]
165  */
166  double getDE() const
167  {
168  return getE() * log(10.0);
169  }
170 
171 
172  /**
173  * Get absolute value.
174  *
175  * \param energy energy
176  */
177  friend inline double fabs(const JEnergy& energy)
178  {
179  return std::fabs(energy.__X);
180  }
181 
182 
183  /**
184  * Get minimum possible value.
185  *
186  * \return minimum possible value
187  */
188  static JEnergy min()
189  {
190  return JEnergy(-std::numeric_limits<double>::max());
191  }
192 
193 
194  /**
195  * Get maximum possible value.
196  *
197  * \return maximum possible value
198  */
199  static JEnergy max()
200  {
201  return JEnergy(+std::numeric_limits<double>::max());
202  }
203 
204 
205  /**
206  * Read object from input.
207  *
208  * \param in input stream
209  * \param object object
210  * \return input stream
211  */
212  friend inline std::istream& operator>>(std::istream& in, JEnergy& object)
213  {
214  in >> object.__X;
215 
216  return in;
217  }
218 
219 
220  /**
221  * Write object to output.
222  *
223  * \param out output stream
224  * \param object object
225  * \return output stream
226  */
227  friend inline std::ostream& operator<<(std::ostream& out, const JEnergy& object)
228  {
229  out << object.__X;
230 
231  return out;
232  }
233 
234 
235  typedef double JEnergy::*parameter_type;
236 
237  static parameter_type pE() { return &JEnergy::__X; }
238 
239  protected:
240  double __X;
241  };
242 }
243 
244 #endif
JFIT::JEnergy
Data structure for fit of energy.
Definition: JEnergy.hh:24
JFIT::JEnergy::JEnergy
JEnergy()
Default constructor.
Definition: JEnergy.hh:32
JFIT
Auxiliary classes and methods for linear and iterative data regression.
Definition: JEnergy.hh:15
JFIT::JEnergy::getX
double getX() const
Get energy.
Definition: JEnergy.hh:133
JFIT::JEnergy::getE
double getE() const
Get energy.
Definition: JEnergy.hh:144
JFIT::JEnergy::mul
JEnergy & mul(const double value)
Multiplication operator.
Definition: JEnergy.hh:106
JFIT::JEnergy::max
static JEnergy max()
Get maximum possible value.
Definition: JEnergy.hh:199
JFIT::JEnergy::parameter_type
double JEnergy::* parameter_type
Definition: JEnergy.hh:235
JMATH::JMath
Auxiliary base class for aritmetic operations of derived class types.
Definition: JMath.hh:26
JFIT::JEnergy::pE
static parameter_type pE()
Definition: JEnergy.hh:237
JFIT::JEnergy::min
static JEnergy min()
Get minimum possible value.
Definition: JEnergy.hh:188
JPP
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Definition: JAAnetToolkit.hh:37
JFIT::JEnergy::less
bool less(const JEnergy &X) const
Less than method.
Definition: JEnergy.hh:53
JComparable.hh
JFIT::JEnergy::fabs
friend double fabs(const JEnergy &energy)
Get absolute value.
Definition: JEnergy.hh:177
JFIT::JEnergy::operator<<
friend std::ostream & operator<<(std::ostream &out, const JEnergy &object)
Write object to output.
Definition: JEnergy.hh:227
JFIT::JEnergy::operator>>
friend std::istream & operator>>(std::istream &in, JEnergy &object)
Read object from input.
Definition: JEnergy.hh:212
JFIT::JEnergy::negate
JEnergy & negate()
Prefix unary minus.
Definition: JEnergy.hh:64
JFIT::JEnergy::sub
JEnergy & sub(const JEnergy &value)
Subtraction operator.
Definition: JEnergy.hh:92
JMath.hh
JLANG::JComparable
Template definition of auxiliary base class for comparison of data structures.
Definition: JComparable.hh:24
JFIT::JEnergy::putE
void putE(const double E)
Put energy.
Definition: JEnergy.hh:155
JFIT::JEnergy::div
JEnergy & div(const double value)
Division operator.
Definition: JEnergy.hh:120
JFIT::JEnergy::getDE
double getDE() const
Get derivative of energy.
Definition: JEnergy.hh:166
JFIT::JEnergy::JEnergy
JEnergy(const double X)
Constructor.
Definition: JEnergy.hh:42
JFIT::JEnergy::add
JEnergy & add(const JEnergy &value)
Addition operator.
Definition: JEnergy.hh:78
JFIT::JEnergy::__X
double __X
Definition: JEnergy.hh:240