45 static const int NUMBER_OF_POINTS = 20;
46 static const int NUMBER_OF_DEGREES = 1;
75 element_type(
const double t1,
92 static inline bool getOR(buffer_type::const_iterator __begin,
93 buffer_type::const_iterator __end)
95 for (buffer_type::const_iterator i = __begin; i != __end; ++i) {
111 static inline bool getAND(buffer_type::const_iterator __begin,
112 buffer_type::const_iterator __end)
114 for (buffer_type::const_iterator i = __begin; i != __end; ++i) {
163 JParser<> zap(
"Auxiliary program to process AHRS data.");
165 zap[
'f'] =
make_field(inputFile,
"output of JConvertDB -q ahrs");
177 catch(
const exception &error) {
216 for (JMultipleFileScanner_t::const_iterator file_name = inputFile.begin(); file_name != inputFile.end(); ++file_name) {
218 STATUS(
"processing file " << *file_name <<
"... " << flush);
226 const JAHRS* parameters = in.next();
227 const int id = parameters->
DOMID;
231 const JModule&
module = router.getModule(id);
241 data[id].push_back(element_type(parameters->
UNIXTIME * 1.0e-3, Q, 1,
false));
250 for (map_type::iterator
module = data.begin();
module != data.end(); ++
module) {
252 if (!
module->second.empty()) {
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();
261 for (
int i = 0; i != NUMBER_OF_POINTS && q !=
module->second.end(); ++i, ++q) {}
263 for (
int i = 0; i != NUMBER_OF_POINTS/2 && in != q; ++i, ++in) {
273 for (++p; q++ !=
module->second.end(); ++p, ++in) {
283 for ( ; in !=
module->second.end(); ++in) {
293 module->second.erase(out, module->second.end());
303 const JPolicy policy(router, buffer.begin(), buffer.end(),
npy);
305 for (JPolicy::const_iterator
module = policy.begin();
module != policy.end(); ++
module) {
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));
319 sort(buffer.begin(), buffer.end(),
make_comparator(&element_type::first));
321 buffer_type::iterator out = buffer.begin();
322 buffer_type::const_iterator p = buffer.begin();
323 buffer_type::const_iterator q = buffer.begin();
325 for (p = buffer.begin(); p != buffer.end(); p = q) {
327 for (q = p; q != buffer.end() && q->first - p->first <
T_s; ++q) {}
334 out->first =
getAverage(t1.begin(), t1.end());
337 out->policy = element_type::getOR(p,q);
347 buffer.erase(out, buffer.end());
350 for (buffer_type::const_iterator i = buffer.begin(); i != buffer.end(); ++i) {
Meridian convergence angles for different sites.
Compass event data types.
ROOT TTree parameter settings.
ROOT TTree parameter settings.
Data structure for detector geometry and calibration.
Recording of objects on file according a format that follows from the file name extension.
General purpose class for hash map of unique elements.
General purpose messaging.
Direct access to module in detector data structure.
Scanning of objects from multiple files according a format that follows from the extension of each fi...
Utility class to parse command line options.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Policy for invalid modules.
I/O formatting auxiliaries.
Auxiliary methods to convert data members or return values of member methods of a set of objects to a...
Data structure for compass in three dimensions.
Router for direct addressing of module data in detector data structure.
bool hasModule(const JObjectID &id) const
Has module.
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).
std::vector< JHitW0 > buffer_type
hits
bool is_valid(const json &js)
Check validity of JSon data.
std::map< int, range_type > map_type
int main(int argc, char **argv)
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.