61   long long int   Tmax_s           = 600;                                
 
   63   double          sigma_deg        = 1.0;                                
 
   64   double          stdev            = numeric_limits<double>::max();      
 
   65   int             numberOfOutliers = 0;
 
   67   bool            overwriteDetector;
 
   80     JParser<> zap(
"Program to calibrate in situ AHRS.");
 
   82     zap[
'f'] = 
make_field(inputFile,    
"output of JConvertDB -q ahrs");
 
   83     zap[
'n'] = 
make_field(numberOfEvents)                                    = JLimit::max();
 
   86     zap[
'c'] = 
make_field(ahrsFile,     
"output of JAHRSCalibration");
 
   93   catch(
const exception &error) {
 
   94     FATAL(error.what() << endl);
 
  131   JManager_t H0(
new TH1D(
"%.twist", NULL, 100,  0.0,   5.0));
 
  132   JManager_t H1(
new TH1D(
"%.swing", NULL, 250,  0.0,   2.5));
 
  133   JManager_t HN(
new TH1D(
"%.count", NULL, 100, -0.5,  99.5));
 
  136            string.size(), -0.5, 
string.size() - 0.5,
 
  139   for (Int_t i = 1; i <= h2.GetXaxis()->GetNbins(); ++i) {
 
  140     h2.GetXaxis()->SetBinLabel(i, 
MAKE_CSTRING(
string.at(i-1)));
 
  142   for (Int_t i = 1; i <= h2.GetYaxis()->GetNbins(); ++i) {
 
  146   TH2D* h1 = (TH2D*) h2.Clone(
"h1");
 
  155   for (JMultipleFileScanner_t::const_iterator file_name = inputFile.begin(); file_name != inputFile.end(); ++file_name) {
 
  157     STATUS(
"processing file " << *file_name << endl);
 
  163       const JAHRS* parameters = in.next();
 
  165       if (
is_valid(*parameters) && router.hasModule(parameters->
DOMID)) {
 
  166         data[router.getModule(parameters->
DOMID).getString()].push_back(*parameters);
 
  172       sort(i->second.begin(), i->second.end(), 
make_comparator(&JAHRS::UNIXTIME));
 
  176         long long int t1 = p->UNIXTIME;
 
  177         long long int t2 = t1;
 
  181         for ( ; p != i->second.end() && p->UNIXTIME < t1 + Tmax_s * 1000; t2 = (p++)->UNIXTIME) {
 
  185             const JModule& module = router.getModule(p->DOMID);
 
  193               buffer.push_back(
JHit(p->DOMID, module.
getZ(), Q, sigma_deg));
 
  198         if (buffer.size() > JModel::NUMBER_OF_PARAMETERS) {
 
  202             const JLocation& location = router.getModule(hit->getID());
 
  211           for (
int ns = 0; 
ns != numberOfOutliers; ++
ns) {        
 
  229             if (
xmax > stdev * sigma_deg) {
 
  231               const JLocation& location = router.getModule(out->getID());
 
  243                 cout << 
"remove "  << location                     << 
' ' 
  249               swap(*out, *--__end);
 
  261           simplex.
step.resize(4);
 
  268           const double chi2 = simplex(
getChi2, buffer.begin(), __end);
 
  269           const int    ndf  = 
distance(buffer.begin(), __end) * 4 - simplex.
step.size();
 
  287             H0[hit->getID()]->Fill(
getAngle(q1.twist, q2.twist));
 
  288             H1[hit->getID()]->Fill(
getAngle(q1.swing, q2.swing));
 
  294             count[hit->getID()] += 1;
 
  298             HN[i->first]->Fill(i->second);
 
  310   for (JManager_t* p : { &H0, &H1, &HN }) {
 
  311     for (JManager_t::iterator i = p->begin(); i != p->end(); ++i) {
 
  319   if (overwriteDetector) {
 
  321     NOTICE(
"Store calibration data on file " << detectorFile << endl);
 
  323     if (
detector.setToLatestVersion()) {
 
  324       NOTICE(
"Set detector version to " << 
detector.getVersion() << endl);
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
 
#define MAKE_CSTRING(A)
Make C-string.
 
#define gmake_property(A)
macros to convert (template) parameter to JPropertiesElement object
 
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.
 
Logical location of module.
 
int getFloor() const
Get floor number.
 
int getString() const
Get string number.
 
Router for direct addressing of module data in detector data structure.
 
Data structure for a composite optical module.
 
bool has(const int bit) const
Test PMT status.
 
Utility class to parse parameter values.
 
std::vector< JModel_t > step
 
Data structure for unit quaternion in three dimensions.
 
const JQuaternion3D & getQuaternion() const
Get quaternion.
 
void setQuaternion(const JQuaternion3D &quaternion)
Set quaternion.
 
JQuaternion3D getConjugate() const
Get conjugate of this quaternion.
 
JQuaternion3D & normalise()
Normalise quaternion.
 
double getZ() const
Get z position.
 
Utility class to parse command line options.
 
Auxiliary class to manage set of compatible ROOT objects (e.g. histograms) using unique keys.
 
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);.
 
JEvt getEvt(const JHead &header, const JModel &model)
Get event.
 
floor_range getRangeOfFloors(const JDetector &detector)
Get range of floors.
 
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
 
void store(const std::string &file_name, const JDetector &detector)
Store detector to output file.
 
double getChi2(const double P)
Get chi2 corresponding to given probability.
 
double getAngle(const JQuaternion3D &first, const JQuaternion3D &second)
Get space angle between quanternions.
 
static const JVector3D JVector3Z_t(0, 0, 1)
unit z-vector
 
JComparator< JResult_t T::*, JComparison::lt > make_comparator(JResult_t T::*member)
Helper method to create comparator between values of data member.
 
int getIndex()
Get index for user I/O manipulation.
 
static const double PI
Mathematical constants.
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
 
Long64_t counter_type
Type definition for counter.
 
bool is_valid(const json &js)
Check validity of JSon data.
 
Auxiliary data structure for floating point format specification.
 
Model for fit to acoustics data.
 
Auxiliary data structure for chi2 evaluation.
 
Auxiliary class to map module identifier to AHRS calibration.
 
Auxiliary data structure to check validity of AHRS data.
 
Router for mapping of string identifier to index.
 
static int debug
debug level (default is off).
 
Auxiliary data structure for decomposition of quaternion in twist and swing quaternions.
 
This class represents a rotation around the x-axis.
 
This class represents a rotation around the y-axis.
 
This class represents a rotation around the z-axis.
 
Template spacialisation for averaging quaternions.
 
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
 
Auxiliary base class for list of file names.