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