Jpp  18.3.1
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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

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 " << right << setw(10) << module->getID() << ' '
115  << JLocation_t(parameters.DUID, parameters.FLOORID, parameters.CABLEPOS) << " <- "
116  << JLocation_t(parameters.DUID, parameters.FLOORID, parameters.PMTID) << endl);
117 
118  buffer[parameters.CABLEPOS] = (*module)[parameters.PMTID];
119  }
120 
121  } else {
122 
123  ERROR("Missing PMT " << left << setw(5) << pmt << right << setw(10) << module->getID() << "." << FILL(2,'0') << i << FILL() << endl);
124  }
125  }
126 
127  module->swap(buffer);
128  }
129  }
130  catch(const exception& error) {
131  FATAL(error.what() << endl);
132  }
133 
134 
135  if (outputFile != "") {
136  try {
137  store(outputFile, detectorA);
138  }
139  catch(const JException& error) {
140  FATAL(error);
141  }
142  }
143 }
Utility class to parse command line options.
Definition: JParser.hh:1514
static const JPBS_t PMT(3, 4, 2, 3)
PBS of photo-multiplier tube (PMT)
*fatal Wrong number of arguments esac JCookie sh typeset Z DETECTOR typeset Z SOURCE_RUN typeset Z TARGET_RUN set_variable PARAMETERS_FILE $WORKDIR parameters
Definition: diff-Tuna.sh:38
string outputFile
JDetectorsHelper & getDetector()
Auxiliary function for helper object initialisation.
Definition: JDBToolkit.hh:378
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition: JParser.hh:1989
void store(const std::string &file_name, const JDetector &detector)
Store detector to output file.
#define NOTICE(A)
Definition: JMessage.hh:64
#define ERROR(A)
Definition: JMessage.hh:66
Auxiliary data structure for sequence of same character.
Definition: JManip.hh:328
#define FATAL(A)
Definition: JMessage.hh:67
void reset(T &value)
Reset value.
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
ResultSet & getResultSet(const std::string &query)
Get result set.
Definition: JDB.hh:436
std::vector< JServer > getServernames()
Get list of names of available database servers.
Definition: JDB.hh:106
int debug
debug level