1 #ifndef NPSTAT_DUALAXIS_HH_
2 #define NPSTAT_DUALAXIS_HH_
29 : a_(g), u_(2, 0.0, 1.0), uniform_(
false) {}
32 : a_(dummy_vec()), u_(u), uniform_(
true) {}
34 inline DualAxis(
unsigned nCoords,
double min,
double max,
36 : a_(dummy_vec()), u_(nCoords, min, max, label), uniform_(
true) {}
38 inline explicit DualAxis(
const std::vector<double>& coords,
39 const bool useLogSpace=
false)
40 : a_(coords, useLogSpace), u_(2, 0.0, 1.0), uniform_(
false) {}
42 inline DualAxis(
const std::vector<double>& coords,
const char* label,
43 const bool useLogSpace=
false)
44 : a_(coords, label, useLogSpace), u_(2,0.0,1.0), uniform_(
false) {}
47 inline bool isUniform()
const {
return uniform_;}
49 inline unsigned nCoords()
const
50 {
return uniform_ ? u_.nCoords() : a_.
nCoords();}
52 inline double min()
const
53 {
return uniform_ ? u_.min() : a_.min();}
55 inline double max()
const
56 {
return uniform_ ? u_.max() : a_.max();}
58 inline const std::string& label()
const
59 {
return uniform_ ? u_.label() : a_.label();}
61 inline bool usesLogSpace()
const
62 {
return uniform_ ? u_.usesLogSpace() : a_.usesLogSpace();}
64 inline std::pair<unsigned,double> getInterval(
const double x)
const
65 {
return uniform_ ? u_.getInterval(x) : a_.
getInterval(x);}
67 inline std::pair<unsigned,double> linearInterval(
const double x)
const
70 inline double coordinate(
const unsigned i)
const
71 {
return uniform_ ? u_.coordinate(i) : a_.coordinate(i);}
73 inline double length()
const
74 {
return uniform_ ? u_.length() : a_.length();}
76 inline unsigned nIntervals()
const
77 {
return uniform_ ? u_.nIntervals() : a_.nIntervals();}
79 inline double intervalWidth(
const unsigned i=0)
const
80 {
return uniform_ ? u_.intervalWidth(i) : a_.intervalWidth(i);}
82 inline std::vector<double> coords()
const
83 {
return uniform_ ? u_.coords() : a_.
coords();}
85 inline bool operator==(
const DualAxis& r)
const
86 {
return uniform_ == r.uniform_ && a_ == r.a_ && u_ == r.u_;}
88 inline bool operator!=(
const DualAxis& r)
const
89 {
return !(*
this == r);}
98 {
return uniform_ ?
static_cast<const GridAxis*
>(0) : &a_;}
101 {
return uniform_ ? &u_ :
static_cast<const UniformAxis*
>(0);}
106 {uniform_ ? u_.setLabel(newlabel) : a_.
setLabel(newlabel);}
110 inline gs::ClassId
classId()
const {
return gs::ClassId(*
this);}
111 bool write(std::ostream& of)
const;
114 static inline const char* classname() {
return "npstat::DualAxis";}
115 static inline unsigned version() {
return 1;}
116 static DualAxis* read(
const gs::ClassId&
id, std::istream& in);
123 inline static std::vector<double> dummy_vec()
125 std::vector<double> vec(2, 0.0);
132 inline std::pair<double,double> range()
const
133 {
return uniform_ ? u_.range() : a_.range();}
137 : a_(dummy_vec()), u_(2, 0.0, 1.0), uniform_(true) {}
Non-uniformly spaced coordinate sets for use in constructing rectangular grids.
Definition: DualAxis.hh:25
void setLabel(const char *newlabel)
Definition: DualAxis.hh:105
const GridAxis * getGridAxis() const
Definition: DualAxis.hh:97
gs::ClassId classId() const
Definition: DualAxis.hh:110
Definition: GridAxis.hh:31
unsigned nCoords() const
Definition: GridAxis.hh:95
std::pair< unsigned, double > linearInterval(double coordinate) const
void setLabel(const char *newlabel)
Definition: GridAxis.hh:121
const std::vector< double > & coords() const
Definition: GridAxis.hh:57
std::pair< unsigned, double > getInterval(double coordinate) const
Definition: AbsArrayProjector.hh:14