ndm 0.2.5
Loading...
Searching...
No Matches
Axis.hh
1#pragma once
2#include <string>
3#include <vector>
4namespace NDM {
11
12class Axis {
13public:
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 is_bin(bool b) { mIsBin = b; }
36 void minmax(double min, double max);
38 void level(unsigned int l) { mLevel = l; }
39
41 double min() const { return mMin; }
43 double max() const { return mMax; }
45 bool is_bin() const { return mIsBin; }
47 double maxb() const { return mMaxB; }
49 double maxb_user() const { return (mMax * mMultiply - mShift); }
50
52 void info(std::string i) { mInfo = i; }
54 std::string info() const { return mInfo; }
55
57 double to_user(double v) const { return (v + mShift) / mMultiply; }
59 double to_internal(double v) const { return (v * mMultiply) - mShift; }
60
62 unsigned int level() const { return mLevel; }
63 void split(std::vector<double> & mins, int level);
64
65private:
66 double mMin{0.0};
67 double mMax{1.0};
68 bool mIsBin{false};
69 EMode mMode{kAligned};
70 double mMaxB{1};
71 double mShift{0};
72 double mMultiply{1};
73 unsigned int mLevel{0};
74 double mMinDelta{1};
75 std::string mInfo{};
76
77 int decimels_right(double num, double mult = 10, double min = 0.01, double max = 0.99);
78 int decimels_left(double num, double mult = 10, double min = 0.01);
79 void find(double & v, int & levelrequest, int & levelmax, int & currentlevel, double & min, double & max,
80 std::string & path);
81 void modify_range(char direction = '>', int power = 1);
82 void recalculate_range();
83};
84} // namespace NDM
Axis object in n-dimensional space.
Definition Axis.hh:12
double min() const
Returns user defined minimum.
Definition Axis.hh:41
std::string mInfo
Some additional info for axis.
Definition Axis.hh:75
double mMin
User defined minimum.
Definition Axis.hh:66
void split(std::vector< double > &mins, int level)
Definition Axis.cc:266
void max(double m)
Sets user defined maximum.
Definition Axis.hh:32
unsigned int level() const
Returns level.
Definition Axis.hh:62
int decimels_right(double num, double mult=10, double min=0.01, double max=0.99)
Definition Axis.cc:225
void min(double m)
Sets user defined minimum.
Definition Axis.hh:30
virtual ~Axis()
Definition Axis.cc:26
double max() const
Returns user defined maximum.
Definition Axis.hh:43
void expand(char direction='>', int power=1)
Expand range.
Definition Axis.cc:156
void level(unsigned int l)
Sets level.
Definition Axis.hh:38
EMode mMode
Axis mode.
Definition Axis.hh:69
void recalculate_range()
Definition Axis.cc:33
bool is_bin() const
Returns user defined maximum.
Definition Axis.hh:45
int decimels_left(double num, double mult=10, double min=0.01)
Definition Axis.cc:245
void shrink(char direction='>', int power=1)
Shrink range.
Definition Axis.cc:164
Axis(double min=0.0, double max=1.0, EMode mode=kAligned, double delta=1)
Definition Axis.cc:10
double to_user(double v) const
Convert interal to user format.
Definition Axis.hh:57
bool mIsBin
Min max is in bin/user format.
Definition Axis.hh:68
void is_bin(bool b)
Sets user defined maximum.
Definition Axis.hh:34
double mMinDelta
Minimal delta of axis range.
Definition Axis.hh:74
double maxb() const
Returns internal maximum.
Definition Axis.hh:47
double mShift
Shift to the internal min/max parameters.
Definition Axis.hh:71
std::string info() const
Returns info string.
Definition Axis.hh:54
double mMultiply
Multiply to the internal min/max parameters.
Definition Axis.hh:72
double mMax
User defined maximum.
Definition Axis.hh:67
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 mMaxB
Internal maximum.
Definition Axis.hh:70
double maxb_user() const
Returns internal maximum2.
Definition Axis.hh:49
void print() const
Prints axis info.
Definition Axis.cc:215
void modify_range(char direction='>', int power=1)
Definition Axis.cc:172
double to_internal(double v) const
Convert user to internal format.
Definition Axis.hh:59
unsigned int mLevel
Level of division.
Definition Axis.hh:73
void minmax(double min, double max)
Sets user defined minimum and maximum.
Definition Axis.cc:74
void info(std::string i)
Sets info string.
Definition Axis.hh:52
EMode
Mode for axis.
Definition Axis.hh:15