Jpp test-rotations-old
the software that should make you happy
Loading...
Searching...
No Matches
JGrid.hh
Go to the documentation of this file.
1#ifndef __JTOOLS__JGRID__
2#define __JTOOLS__JGRID__
3
4#include <istream>
5#include <ostream>
6
7#include "JLang/JClass.hh"
8
10
12
13
14/**
15 * \author mdejong
16 */
17
18namespace JTOOLS {}
19namespace JPP { using namespace JTOOLS; }
20
21namespace JTOOLS {
22
23 using JIO::JReader;
24 using JIO::JWriter;
25
26 using JLANG::JClass;
27
28 template<class JElement_t, class JDistance_t>
29 class JCollection;
30
31
32 /**
33 * Simple data structure for an abstract collection of equidistant abscissa values.
34 *
35 * This class implements the JAbstractCollection interface.
36 */
37 template<class JAbscissa_t>
38 struct JGrid :
39 public JAbstractCollection<JAbscissa_t>
40 {
42
43
44 /**
45 * Default constructor.
46 */
48 size(0),
49 xmin(),
50 xmax()
51 {}
52
53
54 /**
55 * Constructor.
56 *
57 * \param nx number of elements
58 * \param Xmin lower limit
59 * \param Xmax upper limit
60 */
61 JGrid(const int nx,
62 const abscissa_type Xmin,
63 const abscissa_type Xmax) :
64 size(nx),
65 xmin(Xmin),
66 xmax(Xmax)
67 {}
68
69
70 /**
71 * Get number of elements.
72 *
73 * \return number of elements
74 */
75 virtual int getSize() const override
76 {
77 return size;
78 }
79
80
81 /**
82 * Get abscissa value.
83 *
84 * \param index index
85 * \return abscissa value
86 */
87 virtual abscissa_type getX(int index) const override
88 {
89 return (index == 0 ? xmin : xmin + index * ((xmax - xmin) / (size - 1)));
90 }
91
92
93 /**
94 * Get minimal abscissa value.
95 *
96 * \return abscissa value
97 */
98 virtual abscissa_type getXmin() const override
99 {
100 return xmin;
101 }
102
103
104 /**
105 * Get maximal abscissa value.
106 *
107 * \return abscissa value
108 */
109 virtual abscissa_type getXmax() const override
110 {
111 return xmax;
112 }
113
114
115 /**
116 * Get index of given abscissa value.
117 *
118 * \param x abscissa value
119 * \return index
120 */
122 {
123 return (int) ((size - 1) * (x - xmin) / (xmax - xmin));
124 }
125
126
127 /**
128 * Configure collection.
129 *
130 * \param collection collection
131 * \return this grid
132 */
133 template<class JElement_t, class JDistance_t>
135 {
136 collection.configure(*this);
137
138 return *this;
139 }
140
141
142 /**
143 * Binary stream input.
144 *
145 * \param in input stream
146 * \param grid grid
147 * \return input stream
148 */
149 friend inline JReader& operator>>(JReader& in, JGrid<JAbscissa_t>& grid)
150 {
151 return in >> grid.size >> grid.xmin >> grid.xmax;
152 }
153
154
155 /**
156 * Binary stream output.
157 *
158 * \param out output stream
159 * \param grid grid
160 * \return output stream
161 */
162 friend inline JWriter& operator<<(JWriter& out, const JGrid<JAbscissa_t>& grid)
163 {
164 return out << grid.size << grid.xmin << grid.xmax;
165 }
166
167
168 /**
169 * Read grid from input.
170 *
171 * \param in input stream
172 * \param grid grid
173 * \return input stream
174 */
175 friend inline std::istream& operator>>(std::istream& in, JGrid<JAbscissa_t>& grid)
176 {
177 return in >> grid.size >> grid.xmin >> grid.xmax;
178 }
179
180
181 /**
182 * Write grid to output.
183 *
184 * \param out output stream
185 * \param grid grid
186 * \return output stream
187 */
188 friend inline std::ostream& operator<<(std::ostream& out, const JGrid<JAbscissa_t>& grid)
189 {
190 return out << grid.size << ' ' << grid.xmin << ' ' << grid.xmax;
191 }
192
193 protected:
194 int size;
197 };
198
199
200 /**
201 * Helper method for JGrid.
202 *
203 * \param nx number of elements
204 * \param Xmin lower limit
205 * \param Xmax upper limit
206 * \return grid
207 */
208 template<class JAbscissa_t>
209 inline JGrid<JAbscissa_t> make_grid(const int nx,
210 const JAbscissa_t Xmin,
211 const JAbscissa_t Xmax)
212 {
213 return JGrid<JAbscissa_t>(nx, Xmin, Xmax);
214 }
215
216
217 /**
218 * Helper method to create a grid with a single value.
219 *
220 * \param value value
221 * \return single-valued grid
222 */
223 template<class JAbscissa_t>
224 inline JGrid<JAbscissa_t> make_grid(const JAbscissa_t value)
225 {
226 return JGrid<JAbscissa_t>(1, value, value);
227 }
228}
229
230#endif
Interface for binary input.
Interface for binary output.
General purpose class for collection of elements, see: <a href="JTools.PDF";>Collection of elements....
Definition JSet.hh:22
void configure(const JAbstractCollection< abscissa_type > &bounds)
Configure collection.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Auxiliary classes and methods for multi-dimensional interpolations and histograms.
JGrid< JAbscissa_t > make_grid(const int nx, const JAbscissa_t Xmin, const JAbscissa_t Xmax)
Helper method for JGrid.
Definition JGrid.hh:209
Template for generic class types.
Definition JClass.hh:80
JArgument< T >::argument_type argument_type
Definition JClass.hh:82
Abstract interface for abscissa values of a collection of elements.
Simple data structure for an abstract collection of equidistant abscissa values.
Definition JGrid.hh:40
friend JReader & operator>>(JReader &in, JGrid< JAbscissa_t > &grid)
Binary stream input.
Definition JGrid.hh:149
JGrid()
Default constructor.
Definition JGrid.hh:47
friend std::istream & operator>>(std::istream &in, JGrid< JAbscissa_t > &grid)
Read grid from input.
Definition JGrid.hh:175
virtual int getSize() const override
Get number of elements.
Definition JGrid.hh:75
virtual abscissa_type getXmin() const override
Get minimal abscissa value.
Definition JGrid.hh:98
virtual abscissa_type getXmax() const override
Get maximal abscissa value.
Definition JGrid.hh:109
const JGrid & operator()(JCollection< JElement_t, JDistance_t > &collection) const
Configure collection.
Definition JGrid.hh:134
JAbstractCollection< JAbscissa_t >::abscissa_type abscissa_type
Definition JGrid.hh:41
virtual abscissa_type getX(int index) const override
Get abscissa value.
Definition JGrid.hh:87
abscissa_type xmax
Definition JGrid.hh:196
friend std::ostream & operator<<(std::ostream &out, const JGrid< JAbscissa_t > &grid)
Write grid to output.
Definition JGrid.hh:188
JGrid(const int nx, const abscissa_type Xmin, const abscissa_type Xmax)
Constructor.
Definition JGrid.hh:61
friend JWriter & operator<<(JWriter &out, const JGrid< JAbscissa_t > &grid)
Binary stream output.
Definition JGrid.hh:162
int getIndex(typename JClass< abscissa_type >::argument_type x) const
Get index of given abscissa value.
Definition JGrid.hh:121
abscissa_type xmin
Definition JGrid.hh:195