Jpp test-rotations-old
the software that should make you happy
Loading...
Searching...
No Matches
JMultiGrid.hh
Go to the documentation of this file.
1#ifndef __JTOOLS__JMULTIGRID__
2#define __JTOOLS__JMULTIGRID__
3
5#include "JTools/JGrid.hh"
6
7
8/**
9 * \author mdejong
10 */
11
12namespace JTOOLS {}
13namespace JPP { using namespace JTOOLS; }
14
15namespace JTOOLS {
16
17
18 /**
19 * Simple data structure for an abstract multidimensional map of equidistant elements.
20 *
21 * This class implements the JAbstractMultiMap interface.
22 */
23 template<unsigned int N, class JAbscissa_t>
24 class JMultiGrid :
25 public virtual JAbstractMultiMap<N, JAbscissa_t>,
26 public JMultiGrid<N - 1, JAbscissa_t>
27 {
28 public:
29 typedef JAbscissa_t abscissa_type;
31
32 using JMultiGrid<N - 1, JAbscissa_t>::operator();
33
34
35 /**
36 * Default constructor.
37 */
39 JMultiGrid<N - 1, JAbscissa_t>()
40 {}
41
42
43 /**
44 * Constructor.
45 *
46 * \param bounds bounds
47 */
49 JMultiGrid<N - 1, JAbscissa_t>(bounds)
50 {
51 this->bounds = bounds;
52 }
53
54
55 /**
56 * Set bounds.
57 *
58 * \param index index of dimension
59 * \param bounds bounds
60 * \return true if correctly set; else false
61 */
62 bool set(unsigned int index, const JGrid<abscissa_type>& bounds)
63 {
64 if (index == N - 1) {
65
66 this->bounds = bounds;
67
68 } else if (index < N - 1) {
69
70 return static_cast<JMultiGrid<N - 1, abscissa_type>&>(*this).set(index, bounds);
71 }
72
73 return false;
74 }
75
76
77 /**
78 * Get abscissa values as a function of given key.
79 *
80 * \param key key
81 * \return abscissa values
82 */
83 virtual const JGrid<abscissa_type>& operator()(const key_type& key) const override
84 {
85 return bounds;
86 }
87
88 protected:
90 };
91
92
93 /**
94 * Terminator class of recursive class JMultiGrid.
95 * This class provides for dummy implementations of interface methods.
96 */
97 template<class JAbscissa_t>
98 class JMultiGrid<0, JAbscissa_t>
99 {
100 protected:
101
102 typedef JAbscissa_t abscissa_type;
103
104 friend class JMultiGrid<1, JAbscissa_t>;
105
106
107 /**
108 * Default constructor.
109 */
111 {}
112
113
114 /**
115 * Constructor.
116 *
117 * \param bounds bounds
118 */
121
122
123 /**
124 * This method does nothing.
125 *
126 * \param index index
127 * \param bounds bounds
128 * \return false
129 */
130 bool set(unsigned int index, const JGrid<abscissa_type>& bounds) const
131 {
132 return false;
133 }
134
135
136 /**
137 * Dummy operator.
138 */
139 void operator()() const
140 {}
141 };
142
143
144 /**
145 * Helper method for JMultiGrid.
146 *
147 * \param bounds bounds
148 * \return multidimensional grid
149 */
150 template<unsigned int N, class JAbscissa_t>
152 {
153 return JMultiGrid<N, JAbscissa_t>(bounds);
154 }
155}
156
157#endif
bool set(unsigned int index, const JGrid< abscissa_type > &bounds) const
This method does nothing.
void operator()() const
Dummy operator.
JMultiGrid(const JGrid< abscissa_type > &bounds)
Constructor.
Simple data structure for an abstract multidimensional map of equidistant elements.
Definition JMultiGrid.hh:27
JMultiGrid(const JGrid< abscissa_type > &bounds)
Constructor.
Definition JMultiGrid.hh:48
JMultiGrid()
Default constructor.
Definition JMultiGrid.hh:38
virtual const JGrid< abscissa_type > & operator()(const key_type &key) const override
Get abscissa values as a function of given key.
Definition JMultiGrid.hh:83
JGrid< JAbscissa_t > bounds
Definition JMultiGrid.hh:89
bool set(unsigned int index, const JGrid< abscissa_type > &bounds)
Set bounds.
Definition JMultiGrid.hh:62
JMultiKey< N - 1, abscissa_type > key_type
Definition JMultiGrid.hh:30
JAbscissa_t abscissa_type
Definition JMultiGrid.hh:29
Multidimensional key.
Definition JMultiKey.hh:69
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Auxiliary classes and methods for multi-dimensional interpolations and histograms.
JMultiGrid< N, JAbscissa_t > make_multigrid(const JGrid< JAbscissa_t > &bounds)
Helper method for JMultiGrid.
Abstract interface for abscissa values of a multidimensional map.
Simple data structure for an abstract collection of equidistant abscissa values.
Definition JGrid.hh:40