40{
43
46 double precision;
48
49 try {
50
51 JParser<> zap(
"Auxiliary program to compare PDF tables of the arrival time of the Cherenkov light from a bright point.");
52
57
59 }
60 catch(const exception &error) {
62 }
63
68
69 typedef JFunction1D_t::argument_type argument_type;
71
72 JPDF_t pdfA;
73 JPDF_t pdfB;
74
75 const JFunction1D_t::JSupervisor
supervisor(
new JFunction1D_t::JDefaultResult(0.0));
76
78 const string file_name;
79 JPDF_t& pdf;
80 } buffer[] = {
83 };
84
86
87 try {
88
89 NOTICE(
"loading input from file " << i.file_name <<
"... " << flush);
90
91 i.pdf.load(i.file_name.c_str());
92 i.pdf.compile();
94
96 }
99 }
100 }
101
103
104 JPDF_t::super_const_iterator i = pdfA.super_begin();
105 JPDF_t::super_const_iterator
j = pdfB.super_begin();
106
107 for ( ; i != pdfA.super_end() &&
108 j != pdfB.super_end(); ++i, ++
j) {
109
110 const double Wa = pdfA.transformer->getWeight(
JArray_t(i.getKey()));
111 const double Wb = pdfB.transformer->getWeight(
JArray_t(
j.getKey()));
112
113 if (fabs(i->first -
j->first) > precision ||
114 fabs(i->second->first -
j->second->first) > precision ||
115 fabs(
Wa -
Wb) > precision) {
116
118 << i->first << ' '
119 << i->second->first << ' '
121
124 <<
j->second->first <<
' '
126
128 }
129
130 const JFunction1D_t&
fa = i.getValue();
131 const JFunction1D_t& fb =
j.getValue();
132
133 JFunction1D_t::const_iterator p =
fa.begin();
134 JFunction1D_t::const_iterator q = fb.begin();
135
136 while (p !=
fa.end() &&
137 q != fb.end()) {
138
139 if (fabs(p->getX() - q->getX()) > precision) {
140
143
145 }
146
147 if (!compare(p->getY(), q->getY(), precision)) {
148
149 DEBUG(
"a.y " << p->getX() <<
' ' << p->getY() <<
endl);
150 DEBUG(
"b.y " << q->getX() <<
' ' << q->getY() <<
endl);
151
153 }
154
155 if (p->getX() < q->getX())
156 ++p;
157 else if (q->getX() < p->getX())
158 ++q;
159 else {
160 ++p;
161 ++q;
162 }
163 }
164
165 for ( ; p !=
fa.end(); ++p) {
166
168
170 }
171
172 for ( ; q != fb.end(); ++q) {
173
175
177 }
178 }
179
180 for ( ; i != pdfA.super_end(); ++i) {
181
183 << i->first << ' '
184 << i->second->first <<
endl);
185
187 }
188
189 for ( ;
j != pdfB.super_end(); ++
j) {
190
193 <<
j->second->first <<
endl);
194
196 }
197
200 }
201
203}
#define DEBUG(A)
Message macros.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
virtual const char * what() const override
Get error message.
Template definition of a multi-dimensional oscillation probability interpolation table.
Utility class to parse command line options.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).