47 JLimit_t& numberOfEvents = inputFile.getLimit();
58 JParser<> zap(
"Program to monitor AHRS data.");
60 zap[
'f'] =
make_field(inputFile,
"output of JConvertDB -q ahrs");
61 zap[
'n'] =
make_field(numberOfEvents) = JLimit::max();
64 zap[
'c'] =
make_field(ahrsFile,
"output of JAHRSCalibration");
65 zap[
'p'] =
make_field(precision,
"precision") = 1.0e-6;
72 catch(
const exception &error) {
73 FATAL(error.what() << endl);
95 TH1D h0(
"h0", NULL, 100, 0.0, 5.0);
96 TH1D h1(
"h1", NULL, 100, 0.0, 5.0);
97 TH2D h2(
"h2", NULL, 100, 0.0, 5.0, 100, 0.0, 5.0);
98 TH1D hn(
"hn", NULL, 100, 0.0, 1.0e4);
100 TH2D* ha =
new TH2D(
"ha", NULL,
101 string.size(), -0.5,
string.size() - 0.5,
104 for (Int_t i = 1; i <= ha->GetXaxis()->GetNbins(); ++i) {
105 ha->GetXaxis()->SetBinLabel(i,
MAKE_CSTRING(
string.at(i-1)));
107 for (Int_t i = 1; i <= ha->GetYaxis()->GetNbins(); ++i) {
111 TH2D* hb = (TH2D*) ha->Clone(
"hb");
112 TH2D* hc = (TH2D*) ha->Clone(
"hc");
113 TH2D* hd = (TH2D*) ha->Clone(
"hd");
119 for (JDetector::const_iterator module =
detector.begin(); module !=
detector.end(); ++module) {
120 if (module->getFloor() != 0) {
121 data[module->getID()] = 0;
131 const JAHRS* parameters = inputFile.
next();
133 if (router.hasModule(parameters->
DOMID)) {
162 buffer[parameters->
DOMID].push_back(*parameters);
165 << setw(16) << parameters->
UNIXTIME <<
' '
166 << setw(4) << parameters->
DUID <<
' '
167 << setw(2) << parameters->
FLOORID <<
' '
186 if (i->second.size() >= 2u) {
188 sort(i->second.begin(), i->second.end(),
make_comparator(&JAHRS::UNIXTIME));
192 if ((fabs(p->AHRS_A0 - q->AHRS_A0) > precision ||
193 fabs(p->AHRS_A1 - q->AHRS_A1) > precision ||
194 fabs(p->AHRS_A2 - q->AHRS_A2) > precision)
196 (fabs(p->AHRS_H0 - q->AHRS_H0) > precision ||
197 fabs(p->AHRS_H1 - q->AHRS_H1) > precision ||
198 fabs(p->AHRS_H2 - q->AHRS_H2) > precision)) {
206 for (map_type::const_iterator i =
data.begin(); i !=
data.end(); ++i) {
208 const JLocation& location = router.getModule(i->first);
217 for (JDetector::const_iterator module =
detector.begin(); module !=
detector.end(); ++module) {
219 map_type::const_iterator p =
data.find(module->getID());
221 if (p !=
data.end()) {
222 cout <<
getLabel(module->getLocation()) <<
' ' << setw(8) << module->getID() <<
' ' << setw(6) << p->second << endl;
231 out << h0 << h1 << h2 << hn;
232 out << *ha << *hb << *hc << *hd;
240 for (map_type::const_iterator i =
data.begin(); i !=
data.end(); ++i) {
245 QAQC(
' ' <<
FIXED(8,3) << q1.getQuantile(*i));
#define DEBUG(A)
Message macros.
#define QAQC(A)
QA/QC output macro.
int qaqc
QA/QC file descriptor.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
#define MAKE_CSTRING(A)
Make C-string.
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.
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.
counter_type getCounter() const
Get counter.
virtual const pointer_type & next() override
Get next element.
std::string getLabel(const JLocation &location)
Get module label for monitoring and other applications.
floor_range getRangeOfFloors(const JDetector &detector)
Get range of floors.
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
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 H
Planck constant [eV s].
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 class to map module identifier to AHRS calibration.
Auxiliary data structure to check validity of AHRS data.
long long int UNIXTIME
[ms]
Router for mapping of string identifier to index.
Auxiliary class for defining the range of iterations of objects.