ndm  0.1.2
Axis.hh
1 #pragma once
2 #include <string>
3 #include <vector>
4 namespace NDM {
11 
12 class Axis {
13 public:
15  enum EMode { kAligned = 0, kFixed = 1 };
16 
17  Axis(double min = 0.0, double max = 1.0, EMode mode = kAligned, double delta = 1);
18  virtual ~Axis();
19 
21  void print() const;
23  void find(double v, double & min, double & max, std::string & path, int levelrequest = -1, int levelmax = 100);
25  void expand(char direction = '>', int power = 1);
27  void shrink(char direction = '>', int power = 1);
28 
30  void min(double m) { mMin = m; }
32  void max(double m) { mMax = m; }
34  void minmax(double min, double max);
36  void level(unsigned int l) { mLevel = l; }
37 
39  double min() const { return mMin; }
41  double max() const { return mMax; }
43  double maxb() const { return mMaxB; }
45  double maxb_user() const { return (mMax * mMultiply - mShift); }
46 
48  void info(std::string i) { mInfo = i; }
50  std::string info() const { return mInfo; }
51 
53  double to_user(double v) const { return (v + mShift) / mMultiply; }
55  double to_internal(double v) const { return (v * mMultiply) - mShift; }
56 
58  unsigned int level() const { return mLevel; }
59  void split(std::vector<double> & mins, int level);
60 
61 private:
62  double mMin{0.0};
63  double mMax{1.0};
64  EMode mMode{kAligned};
65  double mMaxB{1};
66  double mShift{0};
67  double mMultiply{1};
68  unsigned int mLevel{0};
69  double mMinDelta{1};
70  std::string mInfo{};
71 
72  int decimels_right(double num, double mult = 10, double min = 0.01, double max = 0.99);
73  int decimels_left(double num, double mult = 10, double min = 0.01);
74  void find(double & v, int & levelrequest, int & levelmax, int & currentlevel, double & min, double & max,
75  std::string & path);
76  void modify_range(char direction = '>', int power = 1);
77  void recalculate_range();
78 };
79 } // namespace NDM
void print() const
Prints axis info.
Definition: Axis.cc:215
void split(std::vector< double > &mins, int level)
Definition: Axis.cc:266
double mMaxB
Internal maximum.
Definition: Axis.hh:65
void info(std::string i)
Sets info string.
Definition: Axis.hh:48
void level(unsigned int l)
Sets level.
Definition: Axis.hh:36
void minmax(double min, double max)
Sets user defined minimum and maximum.
Definition: Axis.cc:74
int decimels_right(double num, double mult=10, double min=0.01, double max=0.99)
Definition: Axis.cc:225
void find(double v, double &min, double &max, std::string &path, int levelrequest=-1, int levelmax=100)
Find bin and print info for given value.
Definition: Axis.cc:83
double mMinDelta
Minimal delta of axis range.
Definition: Axis.hh:69
void max(double m)
Sets user defined maximum.
Definition: Axis.hh:32
double maxb_user() const
Returns internal maximum2.
Definition: Axis.hh:45
unsigned int mLevel
Level of division.
Definition: Axis.hh:68
Axis object in n-dimensional space.
Definition: Axis.hh:12
EMode
Mode for axis.
Definition: Axis.hh:15
unsigned int level() const
Returns level.
Definition: Axis.hh:58
std::string mInfo
Some additional info for axis.
Definition: Axis.hh:70
double maxb() const
Returns internal maximum.
Definition: Axis.hh:43
double min() const
Returns user defined minimum.
Definition: Axis.hh:39
double max() const
Returns user defined maximum.
Definition: Axis.hh:41
void shrink(char direction='>', int power=1)
Shrink range.
Definition: Axis.cc:164
double mMin
User defined minimum.
Definition: Axis.hh:62
void expand(char direction='>', int power=1)
Expand range.
Definition: Axis.cc:156
double mShift
Shift to the internal min/max parameters.
Definition: Axis.hh:66
void min(double m)
Sets user defined minimum.
Definition: Axis.hh:30
double to_user(double v) const
Convert interal to user format.
Definition: Axis.hh:53
void recalculate_range()
Definition: Axis.cc:33
double mMultiply
Multiply to the internal min/max parameters.
Definition: Axis.hh:67
EMode mMode
Axis mode.
Definition: Axis.hh:64
double to_internal(double v) const
Convert user to internal format.
Definition: Axis.hh:55
virtual ~Axis()
Definition: Axis.cc:26
void modify_range(char direction='>', int power=1)
Definition: Axis.cc:172
double mMax
User defined maximum.
Definition: Axis.hh:63
std::string info() const
Returns info string.
Definition: Axis.hh:50
Axis(double min=0.0, double max=1.0, EMode mode=kAligned, double delta=1)
Definition: Axis.cc:10
int decimels_left(double num, double mult=10, double min=0.01)
Definition: Axis.cc:245