147{
150
160
161 try {
162
163 JParser<> zap(
"Auxiliary program to process AHRS data.");
164
165 zap[
'f'] =
make_field(inputFile,
"output of JConvertDB -q ahrs");
174
176 }
177 catch(const exception &error) {
179 }
180
181
183
184 try {
186 }
189 }
190
197 0.0);
198
201
204
206
208
209
211
213
215
216 for (JMultipleFileScanner_t::const_iterator file_name = inputFile.begin(); file_name != inputFile.end(); ++file_name) {
217
218 STATUS(
"processing file " << *file_name <<
"... " << flush);
219
220
221
223
225
226 const JAHRS* parameters = in.next();
227 const int id = parameters->
DOMID;
228
230
231 const JModule&
module = router.getModule(id);
232
234
236
238
240
241 data[id].push_back(element_type(parameters->
UNIXTIME * 1.0e-3, Q, 1,
false));
242 }
243 }
244 }
245
246
247
249
250 for (map_type::iterator
module =
data.begin();
module != data.end(); ++
module) {
251
252 if (!
module->second.empty()) {
253
255
256 buffer_type::iterator out = module->second.begin();
257 buffer_type::const_iterator in = module->second.begin();
258 buffer_type::const_iterator p = module->second.begin();
259 buffer_type::const_iterator q = module->second.begin();
260
261 for (int i = 0; i != NUMBER_OF_POINTS && q != module->second.end(); ++i, ++q) {}
262
263 for (int i = 0; i != NUMBER_OF_POINTS/2 && in != q; ++i, ++in) {
264
265 f1.set(p, in, q);
266
268 *out = *in;
269 ++out;
270 }
271 }
272
273 for (++p; q++ != module->second.end(); ++p, ++in) {
274
275 f1.set(p, in, q);
276
278 *out = *in;
279 ++out;
280 }
281 }
282
283 for ( ; in != module->second.end(); ++in) {
284
285 f1.set(p, in, q);
286
288 *out = *in;
289 ++out;
290 }
291 }
292
293 module->second.erase(out, module->second.end());
294 }
295 }
296 }
297
298
299
300
302
303 const JPolicy policy(router, buffer.begin(), buffer.end(),
npy);
304
305 for (JPolicy::const_iterator
module = policy.begin();
module != policy.end(); ++
module) {
306
308
309 for (JPolicy::mapped_type::const_iterator in =
module->second.begin(); in !=
module->second.end(); ++in) {
310 for (map_type::mapped_type::const_iterator i = data[*in].begin(); i !=
data[*in].end(); ++i) {
311 buffer.push_back(element_type(i->first, i->second, 1,
module->first != *in));
312 }
313 }
314
315
316
318
319 sort(buffer.begin(), buffer.end(),
make_comparator(&element_type::first));
320
321 buffer_type::iterator out = buffer.begin();
322 buffer_type::const_iterator p = buffer.begin();
323 buffer_type::const_iterator q = buffer.begin();
324
325 for (p = buffer.begin(); p != buffer.end(); p = q) {
326
327 for (q = p; q != buffer.end() && q->first - p->first <
T_s; ++q) {}
328
330
333
334 out->first =
getAverage(t1.begin(), t1.end());
337 out->policy = element_type::getOR(p,q);
338
339 } else {
340
341 *out = *p;
342 }
343
344 ++out;
345 }
346
347 buffer.erase(out, buffer.end());
348 }
349
350 for (buffer_type::const_iterator i = buffer.begin(); i != buffer.end(); ++i) {
352 }
353 }
354
356 }
357
359
361
363}
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Data structure for compass in three dimensions.
Router for direct addressing of module data in detector data structure.
Data structure for a composite optical module.
Data structure for unit quaternion in three dimensions.
Template definition of a multi-dimensional oscillation probability interpolation table.
static const int COMPASS_DISABLE
Enable (disable) use of compass if this status bit is 0 (1);.
JQuaternion3D getQuaternion(const JQuaternion &Q)
Get quaternion.
static JARCAMagneticDeclination getARCAMagneticDeclination
Function object for magnetic declination at ARCA site.
static JORCAMagneticDeclination getORCAMagneticDeclination
Function object for magnetic declination at ORCA site.
static const double ORCA_MERIDIAN_CONVERGENCE_ANGLE_RAD
ORCA meridian convergence angle [rad].
static const double ARCA_MERIDIAN_CONVERGENCE_ANGLE_RAD
ARCA meridian convergence angle [rad].
static JZEROMagneticDeclination getZEROMagneticDeclination
Function object for zero magnetic declination.
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
bool isORCADetector(const JDetectorHeader &header)
Check if given detector header is compatible with that of ORCA.
bool isARCADetector(const JDetectorHeader &header)
Check if given detector header is compatible with tat of ARCA.
double getAngle(const JQuaternion3D &first, const JQuaternion3D &second)
Get space angle between quanternions.
JComparator< JResult_t T::*, JComparison::lt > make_comparator(JResult_t T::*member)
Helper method to create comparator between values of data member.
const array_type< JValue_t > & make_array(const JValue_t(&array)[N])
Method to create array of values.
std::iterator_traits< T >::value_type getAverage(T __begin, T __end)
Get average.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
bool is_valid(const json &js)
Check validity of JSon data.
std::map< int, range_type > map_type
Auxiliary data structure for floating point format specification.
Auxiliary base class for interpolation of magnetic declination data obtained from website of NOAA.
Auxiliary class to define policy for invalid modules.
Auxiliary class to map module identifier to AHRS calibration.
Auxiliary data structure to check validity of AHRS data.
long long int UNIXTIME
[ms]
static counter_type max()
Get maximum counter value.
Auxiliary base class for list of file names.