45  static const int NUMBER_OF_POINTS  = 20;    
 
   46  static const int NUMBER_OF_DEGREES =  1;    
 
   65int main(
int argc, 
char **argv)
 
   81    JParser<> zap(
"Auxiliary program to process AHRS data.");
 
   83    zap[
'f'] = 
make_field(inputFile,    
"output of JConvertDB -q ahrs");
 
   86    zap[
'c'] = 
make_field(ahrsFile,     
"output of JAHRSCalibration");
 
   88    zap[
'S'] = 
make_field(angle_deg,    
"maximal angle w.r.t. fit")          = 0.0;
 
   89    zap[
'T'] = 
make_field(T_s,          
"time window for averaging")         = 0.0;
 
   94  catch(
const exception &error) {
 
   95    FATAL(error.what() << endl);
 
  116  NOTICE(
"Magnetic declination " << getMagneticDeclination << endl);
 
  117  NOTICE(
"Meridian angle [rad] " << 
FIXED(5,3) << meridian << endl);
 
  136  for (JMultipleFileScanner_t::const_iterator file_name = inputFile.begin(); file_name != inputFile.end(); ++file_name) {
 
  138    STATUS(
"processing file " << *file_name << 
"... " << flush);
 
  146      const JAHRS* parameters = in.next();
 
  147      const int    id         = parameters->
DOMID; 
 
  157          compass.
correct(getMagneticDeclination(parameters->
UNIXTIME * 1.0e-3), meridian);
 
  161          data[id].push_back(element_type(parameters->
UNIXTIME * 1.0e-3, Q));
 
  168    if (angle_deg > 0.0) {
 
  170      for (map_type::iterator module = data.begin(); module != data.end(); ++module) {
 
  172        if (!module->second.empty()) {
 
  174          sort(module->second.begin(), module->second.end(), 
make_comparator(&element_type::first));
 
  176          buffer_type::iterator       out = 
module->second.begin();       
 
  177          buffer_type::const_iterator in  = 
module->second.begin();       
 
  178          buffer_type::const_iterator p   = 
module->second.begin();       
 
  179          buffer_type::const_iterator q   = 
module->second.begin();       
 
  181          for (
int i = 0; i != NUMBER_OF_POINTS && q != 
module->second.end(); ++i, ++q) {}
 
  183          for (
int i = 0; i != NUMBER_OF_POINTS/2 && in != q; ++i, ++in) {
 
  187            if (
getAngle(in->second, f1(in->first)) <= angle_deg) {
 
  193          for (++p; q++ != 
module->second.end(); ++p, ++in) {
 
  197            if (
getAngle(in->second, f1(in->first)) <= angle_deg) {
 
  203          for ( ; in != 
module->second.end(); ++in) {
 
  207            if (
getAngle(in->second, f1(in->first)) <= angle_deg) {
 
  213          module->second.erase(out, module->second.end());                
 
  223    const JPolicy policy(router, buffer.begin(), buffer.end());
 
  225    for (JPolicy::const_iterator module = policy.begin(); module != policy.end(); ++module) {
 
  229      for (JPolicy::mapped_type::const_iterator in = module->second.begin(); in != module->second.end(); ++in) {
 
  230        for (map_type::mapped_type::const_iterator i = data[*in].begin(); i != data[*in].end(); ++i) {
 
  231          buffer.push_back(element_type(i->first, i->second));
 
  239        sort(buffer.begin(), buffer.end(), 
make_comparator(&element_type::first));
 
  241        buffer_type::iterator       out = buffer.begin();                 
 
  242        buffer_type::const_iterator p   = buffer.begin();                 
 
  243        buffer_type::const_iterator q   = buffer.begin();                 
 
  245        for (p = buffer.begin(); p != buffer.end(); p = q) {
 
  247          for (q = p; q != buffer.end() && q->first - p->first < T_s; ++q) {}
 
  254            out->first  = 
getAverage(t1.begin(), t1.end());
 
  255            out->second = 
getAverage(q1.begin(), q1.end());
 
  265        buffer.erase(out, buffer.end());                                  
 
  268      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...
 
std::vector< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance.
 
Data structure for compass in three dimensions.
 
void correct(const double declination, const double meridian)
Correct compass for magnetic declination and meridian convergence angle.
 
JQuaternion3D getQuaternion() const
Get quaternion.
 
int getFloor() const
Get floor number.
 
Router for direct addressing of module data in detector data structure.
 
bool hasModule(const JObjectID &id) const
Has module.
 
const JModule & getModule(const JObjectID &id) const
Get module parameters.
 
Data structure for a composite optical module.
 
bool has(const int bit) const
Test PMT status.
 
Data structure for unit quaternion in three dimensions.
 
Utility class to parse command line options.
 
General purpose class for object reading from a list of file names.
 
virtual bool hasNext() override
Check availability of next element.
 
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
 
Long64_t counter_type
Type definition for counter.
 
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]
 
Auxiliary data structure for return type of make methods.
 
Template definition for function evaluation of Legendre polynome.
 
void set(const double *pA)
Set parameter values.
 
static counter_type max()
Get maximum counter value.
 
Auxiliary base class for list of file names.