Jpp 19.3.0-rc.2
the software that should make you happy
Loading...
Searching...
No Matches
JPrintAHRSCalibration.cc File Reference

Example program for compass calibration. More...

#include <string>
#include <iostream>
#include <iomanip>
#include <vector>
#include <functional>
#include "JDB/JDB.hh"
#include "JDB/JSelector.hh"
#include "JDB/JSelectorSupportkit.hh"
#include "JDB/JAHRSCalibration.hh"
#include "JDB/JAHRSCalibrationToolkit.hh"
#include "JDB/JDBToolkit.hh"
#include "JDB/JDetectorIntegration_t.hh"
#include "JDB/JPBSSequence.hh"
#include "JDB/JProductRouter.hh"
#include "Jeep/JParser.hh"
#include "Jeep/JMessage.hh"

Go to the source code of this file.

Functions

int main (int argc, char **argv)
 

Detailed Description

Example program for compass calibration.

Author
mdejong

Definition in file JPrintAHRSCalibration.cc.

Function Documentation

◆ main()

int main ( int argc,
char ** argv )

Definition at line 27 of file JPrintAHRSCalibration.cc.

28{
29 using namespace std;
30 using namespace JPP;
31
32 JServer server;
33 string usr;
34 string pwd;
35 string cookie;
36 string detid;
37 int debug;
38
39 try {
40
41 JParser<> zap("Example program for compass calibration.");
42
43 zap['s'] = make_field(server) = getServernames();
44 zap['u'] = make_field(usr) = "";
45 zap['!'] = make_field(pwd) = "";
46 zap['C'] = make_field(cookie) = "";
47 zap['D'] = make_field(detid, "Detector identifier") = "";
48 zap['d'] = make_field(debug) = 2;
49
50 zap(argc, argv);
51 }
52 catch(const exception &error) {
53 FATAL(error.what() << endl);
54 }
55
56
58
59 try {
60
61 JDB::reset(usr, pwd, cookie);
62
63 ResultSet& rs = getResultSet(getTable<JAHRSCalibration>());
64
65 rs >> calibration;
66
67 rs.Close();
68 }
69 catch(const exception& error) {
70 FATAL(error.what() << endl);
71 }
72
74
75 JDBToolkit::initialise(getUPI, PBS::AHRS);
76
77
79
80 if (detid != "") {
81
82 DEBUG("Reading database table " << getTable<JDetectorIntegration_t>() << endl);
83
84 try {
85
86 JDB::reset(usr, pwd, cookie);
87
88 detid = getDetector<string>(detid);
89
90 ResultSet& rs = getResultSet(getTable<JDetectorIntegration_t>());
91
92 if (! (rs >> detector)) {
93 THROW(JDatabaseException, "Error reading " << getTable<JDetectorIntegration_t>());
94 }
95 }
96 catch(const exception& error) {
97 FATAL(error.what() << endl);
98 }
99
100 detector.configure(detid);
101 }
102
103
104 const JProductRouter router(detector, getPBSSequences(PBS::AHRS));
105
106 sort(calibration.begin(), calibration.end(), JAHRSCalibrationComparator());
107
108
110
111 for (vector<JAHRSCalibration>::const_iterator p = calibration.begin(); p != calibration.end(); ) {
112
113 vector<JAHRSCalibration>::const_iterator q = p;
114
115 for (++q; q != calibration.end() && q->SERIALNUMBER == p->SERIALNUMBER; ++q) {}
116
117 const JUPI_t upi = getUPI(PBS::AHRS, p->SERIALNUMBER);
118 const JLocation_t location = router.getLocation(upi);
119
120 if (location.is_valid()) {
121
122 for (vector<JAHRSCalibration>::const_iterator i = p; i != q; ++i) {
123
124 if (is_valid(*i)) {
125
126 if (i != p) {
127 WARNING("AHRS " << location << ' ' << upi << ' '
128 << "invalid calibration" << ' '
129 << p->TESTEND << " v" << getVersion(p->TESTNAME) << " -> "
130 << i->TESTEND << " v" << getVersion(i->TESTNAME) << endl);
131 DEBUG(*p << endl);
132 }
133
134 zmap[location] = *i;
135
136 break;
137 }
138 }
139 }
140
141 for (vector<JAHRSCalibration>::const_iterator i = p; i != q; ++i) {
142
143 const bool valid = is_valid(*i) || (i != p);
144
145 if (debug >= debug_t) {
146
147 cout << setw(8) << i->SERIALNUMBER << ' '
148 << setw(22) << left << upi << right << ' '
149 << setw(8) << i->TESTEND << ' '
150 << setw(8) << i->FIRMWARE_VERSION << ' '
151 << setw(2) << getVersion(i->TESTNAME) << ' '
152 << setw(10) << i->TESTOPID << ' '
153 << (valid ? "" : "*") << endl;
154
155 if (!valid) {
156 //cout << " -> " << *i << endl;
157 }
158 }
159 }
160
161 p = q;
162 }
163
164 for (map<JLocation_t, JAHRSCalibration>::const_iterator i = zmap.begin(); i != zmap.end(); ++i) {
165
166 const JLocation_t& location = i->first;
167 const JAHRSCalibration& calibration = i->second;
168 const JUPI_t upi = getUPI(PBS::AHRS, calibration.SERIALNUMBER);
169
170 cout << location << " ";
171
173
174 r1 = detector.find(upi);
175
176 if (distance(r1.first, r1.second) == 1) {
177
178 r2 = detector.find(detector[r1.first->second].container.getUPI());
179
180 if (distance(r2.first, r2.second) == 1) {
181 cout << setw(22) << left << detector[r2.first->second].container.getUPI() << right << ' ';
182 cout << setw(22) << left << detector[r1.first->second].container.getUPI() << right << ' ';
183 cout << setw(22) << left << upi << right << ' ';
184 }
185 }
186
187 cout << setw(3) << (calibration.FIRMWARE_VERSION != "" ?
188 calibration.FIRMWARE_VERSION :
189 "?") << ' ';
190 cout << setw(2) << getVersion(calibration.TESTNAME) << ' ';
191 cout << setw(10) << calibration.TESTOPID << ' ';
192 cout << endl;
193 }
194
195 return 0;
196}
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
#define DEBUG(A)
Message macros.
Definition JMessage.hh:62
#define FATAL(A)
Definition JMessage.hh:67
int debug
debug level
Definition JSirene.cc:72
#define WARNING(A)
Definition JMessage.hh:65
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition JParser.hh:2142
std::vector< T >::difference_type distance(typename std::vector< T >::const_iterator first, typename PhysicsEvent::const_iterator< T > second)
Specialisation of STL distance.
Database exception.
Utility class to parse command line options.
Definition JParser.hh:1698
int getVersion(const std::string &version)
Get numerical value of AHRS calibration version.
ResultSet & getResultSet(const std::string &query)
Get result set.
Definition JDB.hh:438
JUPIHelper & getUPI()
Auxiliary function for helper object initialisation.
std::vector< JServer > getServernames()
Get list of names of available database servers.
Definition JDB.hh:108
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
bool is_valid(const json &js)
Check validity of JSon data.
Calibration.
Definition JHead.hh:330
Detector file.
Definition JHead.hh:227
Auxiliary data structure for sorting of AHRS calibrations.
Auxiliary data structure to check validity of AHRS calibration data.
Auxiliary data structure for location of product in detector.
bool is_valid() const
Check validity of location.
Auxiliary class to map UPI to location in detector.
Wrapper class for server name.
Definition JDB.hh:54
Universal product identifier (UPI).
Definition JUPI_t.hh:32