Jpp  16.0.0-rc.1
the software that should make you happy
 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  JServer server;
35  string usr;
36  string pwd;
37  string cookie;
38  JLocation location;
39  int detid;
40  int debug;
41 
42  try {
43 
44  JParser<> zap("Auxiliary program to print module identifier for a given module location."
45  "\nInteractive mode in absence of option -L <location>.");
46 
47  zap['s'] = make_field(server) = getServernames();
48  zap['u'] = make_field(usr) = "";
49  zap['!'] = make_field(pwd) = "";
50  zap['C'] = make_field(cookie) = "";
51  zap['D'] = make_field(detid, "Detector identifier") = -1;
52  zap['L'] = make_field(location, "Module location") = JLocation();
53  zap['d'] = make_field(debug) = 1;
54 
55  zap(argc, argv);
56  }
57  catch(const exception &error) {
58  FATAL(error.what() << endl);
59  }
60 
61 
62  while (location == JLocation()) {
63  cin >> location;
64  }
65 
66 
67  if (hasDetectorAddressMap(detid)) {
68 
70 
71  try {
72 
73  JDB::reset(usr, pwd, cookie);
74 
75  ResultSet& rs = getResultSet(getTable<JDetectorIntegration_t>());
76 
77  if (! (rs >> detector)) {
78  THROW(JDatabaseException, "Error reading " << getTable<JDetectorIntegration_t>());
79  }
80 
81  } catch (const exception& error) {
82 
83  FATAL(error.what() << endl);
84  }
85 
86  detector.configure(getDetector(detid));
87 
88  const JProductRouter router(detector, PBS::CLB_SEQUENCES);
89 
90  for (map<JUPI_t, JLocation_t>::const_iterator CLB = router.cbegin(); CLB != router.cend(); ++CLB) {
91 
92  if (location.getString() == CLB->second.string &&
93  location.getFloor() == CLB->second.floor) {
94 
95  cout << getCLBID(CLB->first) << endl;
96  break;
97  }
98  }
99 
100  } else {
101 
102  ERROR("No detector found corresponding to user specifications.");
103  }
104 }
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:666
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Definition: JException.hh:696
bool hasDetectorAddressMap(const int id)
Check if detector address map is available.
Data structure for detector geometry and calibration.
JDetectorsHelper & getDetector()
Auxiliary function for helper object initialisation.
Definition: JDBToolkit.hh:365
static const JPBS_t CLB(3, 4, 3, 2)
PBS of central-logic board
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.
JCLBIDHelper & getCLBID()
Auxiliary function for helper object initialisation.
Definition: JDBToolkit.hh:413
#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:432
std::vector< JServer > getServernames()
Get list of names of available database servers.
Definition: JDB.hh:98
Wrapper class for server name.
Definition: JDB.hh:42
do set_variable DETECTOR_TXT $WORKDIR detector
void configure(const std::string &detid)
Configure detector integration for given detector identifier.