Jpp  debug
the software that should make you happy
Functions
JPMTSwapDB.cc File Reference

Auxiliary program to check HV. More...

#include <string>
#include <iostream>
#include <iomanip>
#include <limits>
#include <vector>
#include <map>
#include "JDB/JDB.hh"
#include "JDB/JSelector.hh"
#include "JDB/JSelectorSupportkit.hh"
#include "JDB/JDBToolkit.hh"
#include "JDB/JDetectorIntegration.hh"
#include "JDB/JLocation_t.hh"
#include "JDetector/JDetector.hh"
#include "JDetector/JDetectorToolkit.hh"
#include "Jeep/JPrint.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

Auxiliary program to check HV.

Author
mdejong

Definition in file JPMTSwapDB.cc.

Function Documentation

◆ main()

int main ( int  argc,
char **  argv 
)

Definition at line 29 of file JPMTSwapDB.cc.

30 {
31  using namespace std;
32  using namespace JPP;
33 
34  JServer server;
35  string usr;
36  string pwd;
37  string cookie;
38  string detectorFile;
39  string outputFile;
40  int debug;
41 
42  try {
43 
44  JParser<> zap("Auxiliary program to check HV.");
45 
46  zap['s'] = make_field(server) = getServernames();
47  zap['u'] = make_field(usr) = "";
48  zap['!'] = make_field(pwd) = "";
49  zap['C'] = make_field(cookie) = "";
50  zap['a'] = make_field(detectorFile);
51  zap['o'] = make_field(outputFile) = "";
52  zap['d'] = make_field(debug) = 2;
53 
54  zap(argc, argv);
55  }
56  catch(const exception &error) {
57  FATAL(error.what() << endl);
58  }
59 
60 
61  JDetector detectorA;
62 
63  try {
64  load(detectorFile, detectorA);
65  }
66  catch(const JException& error) {
67  FATAL(error);
68  }
69 
70 
71  try {
72 
73  JDB::reset(usr, pwd, cookie);
74 
75  const string detid = getDetector(detectorA.getID());
76 
77  typedef map<int, JDetectorIntegration> detector_type;
78 
79  detector_type detectorB;
80 
81  {
82  ResultSet& rs = getResultSet(getTable<JDetectorIntegration>(), getSelector<JDetectorIntegration>(detectorA.getID()));
83 
84  for (JDetectorIntegration parameters; rs >> parameters; ) {
85 
86  if (parameters.PMTUPI.getPBS() == PBS::PMT) {
87  detectorB[parameters.PMTSER] = parameters;
88  }
89  }
90 
91  rs.Close();
92  }
93 
94  for (JDetector::iterator module = detectorA.begin(); module != detectorA.end(); ++module) {
95 
96  vector<JPMT> buffer(module->begin(), module->end());
97 
98  for (size_t i = 0; i != module->size(); ++i) {
99 
100  const int pmt = (*module)[i].getID();
101 
102  if (detectorB.count(pmt) == 1) {
103 
104  const JDetectorIntegration& parameters = detectorB[pmt];
105 
106  const JLocation location(parameters.DUID, parameters.FLOORID);
107 
108  if (module->getLocation() != location) {
109  FATAL("Wrong location " << left << setw(5) << pmt << " " << module->getLocation() << " != " << location << endl);
110  }
111 
112  if (parameters.PMTID != parameters.CABLEPOS) {
113 
114  NOTICE("Swap PMT "
115  << right << setw(10) << module->getID() << ' '
116  << JLocation_t(parameters.DUID, parameters.FLOORID, parameters.CABLEPOS) << " <- "
117  << JLocation_t(parameters.DUID, parameters.FLOORID, parameters.PMTID) << endl);
118 
119  buffer[parameters.CABLEPOS] = (*module)[parameters.PMTID];
120  }
121 
122  if (parameters.PMTID != (int) i) {
123 
124  ERROR("PMT serial number "
125  << setw(6) << pmt << ' '
126  << right << setw(10) << module->getID() << ' '
127  << JLocation_t(module->getString(), module->getFloor(), i) << " -> "
128  << JLocation_t(parameters.DUID, parameters.FLOORID, parameters.PMTID) << endl);
129  }
130 
131  } else {
132 
133  ERROR("Missing PMT " << left << setw(5) << pmt << right << setw(10) << module->getID() << "." << FILL(2,'0') << i << FILL() << endl);
134  }
135  }
136 
137  module->swap(buffer);
138  }
139  }
140  catch(const exception& error) {
141  FATAL(error.what() << endl);
142  }
143 
144 
145  if (outputFile != "") {
146  try {
147  store(outputFile, detectorA);
148  }
149  catch(const JException& error) {
150  FATAL(error);
151  }
152  }
153 }
JDAQPMTIdentifier PMT
Command line options.
string outputFile
#define ERROR(A)
Definition: JMessage.hh:66
#define NOTICE(A)
Definition: JMessage.hh:64
#define FATAL(A)
Definition: JMessage.hh:67
int debug
debug level
Definition: JSirene.cc:69
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition: JParser.hh:2158
Detector data structure.
Definition: JDetector.hh:96
Logical location of module.
Definition: JLocation.hh:39
General exception.
Definition: JException.hh:24
int getID() const
Get identifier.
Definition: JObjectID.hh:50
Utility class to parse command line options.
Definition: JParser.hh:1714
ResultSet & getResultSet(const std::string &query)
Get result set.
Definition: JDB.hh:436
JDetectorsHelper & getDetector()
Auxiliary function for helper object initialisation.
Definition: JDBToolkit.hh:378
std::vector< JServer > getServernames()
Get list of names of available database servers.
Definition: JDB.hh:106
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
void store(const std::string &file_name, const JDetector &detector)
Store detector to output file.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
void reset(T &value)
Reset value.
Definition: JSTDTypes.hh:14
Auxiliary data structure for sequence of same character.
Definition: JManip.hh:330
Auxiliary data structure for location of product in detector.
Definition: JLocation_t.hh:26
Wrapper class for server name.
Definition: JDB.hh:52
Template definition for getting table specific selector.