Jpp
pmt_effective_area_update_2
the software that should make you happy
Main Page
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Pages
software
JTools
JMultiSet.hh
Go to the documentation of this file.
1
#ifndef __JTOOLS__JMULTISET__
2
#define __JTOOLS__JMULTISET__
3
4
#include "
JTools/JAbstractMultiMap.hh
"
5
#include "
JTools/JSet.hh
"
6
7
8
/**
9
* \author mdejong
10
*/
11
12
namespace
JTOOLS {}
13
namespace
JPP {
using namespace
JTOOLS; }
14
15
namespace
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
;
29
typedef
JMultiKey
<
N
- 1,
abscissa_type
>
key_type
;
30
31
using
JMultiSet<N - 1, JAbscissa_t>::operator
();
32
33
34
/**
35
* Default constructor.
36
*/
37
JMultiSet
() :
38
JMultiSet
<
N
- 1, JAbscissa_t>()
39
{}
40
41
42
/**
43
* Constructor.
44
*
45
* \param bounds bounds
46
47
*/
48
JMultiSet
(
const
JSet<abscissa_type>
&
bounds
) :
49
JMultiSet
<
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
JSet<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<
JMultiSet
<
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
JSet<abscissa_type>
&
operator()
(
const
key_type
& key)
const override
84
{
85
return
bounds
;
86
}
87
88
protected
:
89
JSet<JAbscissa_t>
bounds
;
90
};
91
92
93
/**
94
* Terminator class of recursive class JMultiSet.
95
* This class provides for dummy implementations of interface methods.
96
*/
97
template
<
class
JAbscissa_t>
98
struct
JMultiSet
<0, JAbscissa_t>
99
{
100
protected
:
101
102
typedef
JAbscissa_t
abscissa_type
;
103
104
friend
class
JMultiSet
<1, JAbscissa_t>;
105
106
107
/**
108
* Default constructor.
109
*/
110
JMultiSet
()
111
{}
112
113
114
/**
115
* Constructor.
116
*
117
* \param bounds bounds
118
*/
119
JMultiSet
(
const
JSet<abscissa_type>
&
bounds
)
120
{}
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
JSet<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 JMultiSet.
146
*
147
* \param bounds bounds
148
* \return multidimensional set
149
*/
150
template
<
unsigned
int
N,
class
JAbscissa_t>
151
inline
JMultiSet<N, JAbscissa_t>
make_multiset
(
const
JSet<JAbscissa_t>
& bounds)
152
{
153
return
JMultiSet<N, JAbscissa_t>
(bounds);
154
}
155
}
156
157
#endif
JTOOLS::JMultiSet::abscissa_type
JAbscissa_t abscissa_type
Definition:
JMultiSet.hh:28
JTOOLS::JMultiSet::bounds
JSet< JAbscissa_t > bounds
Definition:
JMultiSet.hh:89
JTOOLS::JMultiSet< 0, JAbscissa_t >::set
bool set(unsigned int index, const JSet< abscissa_type > &bounds) const
This method does nothing.
Definition:
JMultiSet.hh:130
JTOOLS::JMultiSet< 0, JAbscissa_t >::operator()
void operator()() const
Dummy operator.
Definition:
JMultiSet.hh:139
JTOOLS::JMultiSet::key_type
JMultiKey< N-1, abscissa_type > key_type
Definition:
JMultiSet.hh:29
JTOOLS::JAbstractMultiMap
Abstract interface for abscissa values of a multidimensional map.
Definition:
JAbstractMultiMap.hh:24
JTOOLS::JMultiSet::set
bool set(unsigned int index, const JSet< abscissa_type > &bounds)
Set bounds.
Definition:
JMultiSet.hh:62
JTOOLS::JAbstractMultiMap::abscissa_type
JAbscissa_t abscissa_type
Definition:
JAbstractMultiMap.hh:27
JAbstractMultiMap.hh
JTOOLS::JMultiKey
Multidimensional key.
Definition:
JMultiKey.hh:34
JTOOLS::JMultiSet< 0, JAbscissa_t >::abscissa_type
JAbscissa_t abscissa_type
Definition:
JMultiSet.hh:102
JTOOLS::JMultiSet::operator()
virtual const JSet< abscissa_type > & operator()(const key_type &key) const override
Get abscissa values as a function of given key.
Definition:
JMultiSet.hh:83
JTOOLS::JMultiSet< 0, JAbscissa_t >::JMultiSet
JMultiSet()
Default constructor.
Definition:
JMultiSet.hh:110
JTOOLS::make_multiset
JMultiSet< N, JAbscissa_t > make_multiset(const JSet< JAbscissa_t > &bounds)
Helper method for JMultiSet.
Definition:
JMultiSet.hh:151
JSet.hh
JTOOLS::JMultiSet::JMultiSet
JMultiSet(const JSet< abscissa_type > &bounds)
Constructor.
Definition:
JMultiSet.hh:48
JTOOLS::JMultiSet
Simple data structure for an abstract multidimensional map of equidistant elements.
Definition:
JMultiSet.hh:24
JTOOLS::JMultiSet::JMultiSet
JMultiSet()
Default constructor.
Definition:
JMultiSet.hh:37
JTOOLS::JMultiSet< 0, JAbscissa_t >::JMultiSet
JMultiSet(const JSet< abscissa_type > &bounds)
Constructor.
Definition:
JMultiSet.hh:119
JTOOLS::JSet
Simple data structure for an abstract collection of non-equidistant abscissa values.
Definition:
JSet.hh:29
N
then usage $script[input file[working directory[option]]] nWhere option can be N
Definition:
JMuonPostfit.sh:36
Generated by
1.8.5