41 int main(
int argc,
char **argv)
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();
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) {
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) {
ROOT TTree parameter settings.
Data structure for detector geometry and calibration.
General purpose messaging.
#define DEBUG(A)
Message macros.
#define QAQC(A)
QA/QC output macro.
int qaqc
QA/QC file descriptor.
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
I/O formatting auxiliaries.
#define MAKE_CSTRING(A)
Make C-string.
Direct access to string in detector data structure.
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.
const JModule & getModule(const JObjectID &id) const
Get module parameters.
bool hasModule(const JObjectID &id) const
Has module.
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
int main(int argc, char **argv)
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.