Jpp 19.3.0-rc.2
the software that should make you happy
Loading...
Searching...
No Matches
JMultiMap.cc File Reference

Example program to test JTOOLS::JMultiMap. More...

#include <string>
#include <iostream>
#include <iomanip>
#include <cmath>
#include "JTools/JMultiMap.hh"
#include "JTools/JMap.hh"
#include "JLang/JManip.hh"
#include "Jeep/JParser.hh"
#include "Jeep/JMessage.hh"

Go to the source code of this file.

Functions

int main (int argc, char **argv)
 

Detailed Description

Example program to test JTOOLS::JMultiMap.

Author
mdejong

Definition in file JMultiMap.cc.

Function Documentation

◆ main()

int main ( int argc,
char ** argv )

Definition at line 52 of file JMultiMap.cc.

53{
54 using namespace std;
55 using namespace JPP;
56
57 double precision;
58 int debug;
59
60 try {
61
62 JParser<> zap("Example program to test multi-dimensional map.");
63
64 zap['e'] = make_field(precision) = 1.0e-10;
65 zap['d'] = make_field(debug) = 3;
66
67 zap(argc, argv);
68 }
69 catch(const exception &error) {
70 FATAL(error.what() << endl);
71 }
72
73
74 const double xmin = -1.0;
75 const double xmax = +1.0;
76 const double nx = 3;
77
78 typedef JMAPLIST<JMap,
79 JMap,
80 JMap>::maplist JMaplist_t;
81
82 typedef JMultiMap<double, double, JMaplist_t> JMultimap_t;
83
84 JMultimap_t buffer;
85
86 for (double x = xmin; x <= xmax; x += (xmax - xmin)/(nx - 1)) {
87 for (double y = xmin; y <= xmax; y += (xmax - xmin)/(nx - 1)) {
88 for (double z = xmin; z <= xmax; z += (xmax - xmin)/(nx - 1)) {
89 buffer[x][y][z] = f1(x, y, z);
90 }
91 }
92 }
93
94 const JFormat_t format(6, 1, std::ios::fixed);
95
99
100 DEBUG("i->[second]*->(first|second)" << endl);
101
102 for (JMultimap_t::super_const_iterator i = buffer.super_begin(); i != buffer.super_end(); ++i) {
103 DEBUG(""
104 << format << i->first << ' '
105 << format << i->second->first << ' '
106 << format << i->second->second->first << ' '
107 << format << i->second->second->second << endl);
108
109 ASSERT(fabs(f1(i->first,
110 i->second->first,
111 i->second->second->first) - i->second->second->second) <= precision, "Test iterator equality");
112 }
113
114 DEBUG("i->[second]*->(first|second)" << endl);
115
116 for (JMultimap_t::super_const_reverse_iterator i = buffer.super_rbegin(); i != buffer.super_rend(); ++i) {
117 DEBUG(""
118 << format << i->first << ' '
119 << format << i->second->first << ' '
120 << format << i->second->second->first << ' '
121 << format << i->second->second->second << endl);
122
123 ASSERT(fabs(f1(i->first,
124 i->second->first,
125 i->second->second->first) - i->second->second->second) <= precision, "Test iterator equality");
126 }
127
128 DEBUG("*i.[second]*.(first|second)" << endl);
129
130 for (JMultimap_t::super_const_reverse_iterator i = buffer.super_rbegin(); i != buffer.super_rend(); ++i) {
131 DEBUG(""
132 << format << (*i).first << ' '
133 << format << (*i).second.first << ' '
134 << format << (*i).second.second.first << ' '
135 << format << (*i).second.second.second << endl);
136
137 ASSERT(fabs(f1(i->first,
138 i->second->first,
139 i->second->second->first) - i->second->second->second) <= precision, "Test iterator equality");
140 }
141
142 DEBUG("i.getKey() i.getValue()" << endl);
143
144 for (JMultimap_t::super_const_iterator i = buffer.super_begin(); i != buffer.super_end(); ++i) {
145
146 DEBUG(i.getKey() << ' ' << format << i.getValue() << endl);
147
148 ASSERT(fabs(f1(i.getKey()) - i.getValue()) <= precision, "Test iterator equality");
149 }
150
151 return 0;
152}
void setFormat(const JFormat_t &format)
Set format for given type.
Definition JManip.hh:714
#define DEBUG(A)
Message macros.
Definition JMessage.hh:62
#define ASSERT(A,...)
Assert macro.
Definition JMessage.hh:90
#define FATAL(A)
Definition JMessage.hh:67
int debug
debug level
Definition JSirene.cc:72
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition JParser.hh:2142
Utility class to parse command line options.
Definition JParser.hh:1698
Map of pair-wise elements.
Definition JMap.hh:33
Multidimensional map.
Definition JMultiMap.hh:52
const JPolynome f1(1.0, 2.0, 3.0)
Function.
const double xmax
const double xmin
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Data structure for format specifications.
Definition JManip.hh:524
double getValue(const double x) const
Function value.
Definition JMathlib.hh:1421
Auxiliary class for recursive map list generation.
Definition JMapList.hh:109