Jpp
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
getModuleID.cc
Go to the documentation of this file.
1 #include <string>
2 #include <iostream>
3 #include <iomanip>
4 
5 #include "Jeep/JPrint.hh"
6 #include "Jeep/JParser.hh"
7 #include "Jeep/JMessage.hh"
8 
9 #include "JSupport/JMeta.hh"
10 
11 #include "JDetector/JDetector.hh"
14 
15 #include "dbclient/KM3NeTDBClient.h"
16 
17 #include "JDB/JDB.hh"
18 #include "JDB/JDBToolkit.hh"
19 #include "JDB/JDBincludes.hh"
20 #include "JDB/JProductRouter.hh"
21 
22 
23 /**
24  * \file
25  *
26  * Auxiliary program to print module identifier for a given module location.
27  * \author bjung, mjg
28  */
29 int main(int argc, char **argv)
30 {
31  using namespace std;
32  using namespace JPP;
33 
34  string usr;
35  string pwd;
36  string cookie;
37  JLocation location;
38  int detid;
39  int debug;
40 
41  try {
42 
43  JParser<> zap("Auxiliary program to print module identifier for a given module location."
44  "\nInteractive mode in absence of option -L <location>.");
45 
46  zap['u'] = make_field(usr) = "";
47  zap['!'] = make_field(pwd) = "";
48  zap['C'] = make_field(cookie) = "";
49  zap['D'] = make_field(detid, "Detector identifier") = -1;
50  zap['L'] = make_field(location, "Module location") = JLocation();
51  zap['d'] = make_field(debug) = 1;
52 
53  zap(argc, argv);
54  }
55  catch(const exception &error) {
56  FATAL(error.what() << endl);
57  }
58 
59 
60  while (location == JLocation()) {
61  cin >> location;
62  }
63 
64 
65  if (hasDetectorAddressMap(detid)) {
66 
68 
69  try {
70 
71  JDB::reset(usr, pwd, cookie);
72 
73  ResultSet& rs = getResultSet(getTable<JDetectorIntegration_t>());
74 
75  if (! (rs >> detector)) {
76  THROW(JDatabaseException, "Error reading " << getTable<JDetectorIntegration_t>());
77  }
78 
79  } catch (const exception& error) {
80 
81  FATAL(error.what() << endl);
82  }
83 
84  detector.configure(getDetector(detid));
85 
86  const JProductRouter router(detector, PBS::CLB_SEQUENCES);
87 
88  for (map<JUPI_t, JLocation_t>::const_iterator CLB = router.cbegin(); CLB != router.cend(); ++CLB) {
89 
90  if (location.getString() == CLB->second.string &&
91  location.getFloor() == CLB->second.floor) {
92 
93  cout << getCLBID(CLB->first) << endl;
94  break;
95  }
96  }
97 
98  } else {
99 
100  ERROR("No detector found corresponding to user specifications.");
101  }
102 }
Utility class to parse command line options.
Definition: JParser.hh:1500
int main(int argc, char *argv[])
Definition: Main.cc:15
Database exception.
Definition: JException.hh:648
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Definition: JException.hh:670
bool hasDetectorAddressMap(const int id)
Check if detector address map is available.
Data structure for detector geometry and calibration.
static const JPBS_t CLB(3, 4, 3, 2)
PBS of central-logic board
JDetectorsHelper getDetector
Function object for mapping serial number to object identifier of detector and vice versa...
Definition: JDBToolkit.cc:5
Detector specific mapping between logical positions and readout channels of PMTs in optical modules...
I/O formatting auxiliaries.
Logical location of module.
Definition: JLocation.hh:37
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition: JParser.hh:1961
ROOT I/O of application specific meta data.
#define ERROR(A)
Definition: JMessage.hh:66
int debug
debug level
Definition: JSirene.cc:63
static const JPBSSequences CLB_SEQUENCES
PBS sequences for central-logic board.
Auxiliary class to map UPI to location in detector.
General purpose messaging.
#define FATAL(A)
Definition: JMessage.hh:67
void reset(T &value)
Reset value.
Utility class to parse command line options.
ResultSet & getResultSet(const std::string &query)
Get result set.
Definition: JDB.hh:269
JCLBIDHelper getCLBID
Function object for mapping UPI of central-logic board to module identifier.
Definition: JDBToolkit.cc:6
do set_variable DETECTOR_TXT $WORKDIR detector
void configure(const std::string &detid)
Configure detector integration for given detector identifier.