Jpp test-rotations-old
the software that should make you happy
Loading...
Searching...
No Matches
JTDC.cc
Go to the documentation of this file.
1#include <string>
2#include <iostream>
3#include <fstream>
4#include <vector>
5
6#include "JDB/JDB.hh"
7#include "JDB/JSelector.hh"
9#include "JDB/JDBToolkit.hh"
11#include "JDB/JPMTHV.hh"
12
14
15#include "Jeep/JPrint.hh"
16#include "Jeep/JParser.hh"
17#include "Jeep/JMessage.hh"
18
19
20/**
21 * \file
22 * Auxiliary program to determine TDC constraints (input to JFitK40.cc) according HV settings from the database.
23 * \author mdejong
24 */
25int main(const int argc, const char * const argv[])
26{
27 using namespace std;
28 using namespace JPP;
29
30 typedef pair<int, int> run_type;
31
32 JServer server;
33 string usr;
34 string pwd;
35 string cookie;
36 string detid;
37 run_type runs;
38 string outputFile;
39 bool usePMTID; // option for old data for which correction for PMT cable swaps does not apply
40 int debug;
41
42 try {
43
44 JParser<> zap("Auxiliary program to determine TDC constraints (input to JFitK40.cc) according HV settings from the database.");
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['D'] = make_field(detid, "Detector identifier");
51 zap['r'] = make_field(runs, "Pair of data taking runs");
52 zap['o'] = make_field(outputFile, "TDC file") = "";
53 zap['U'] = make_field(usePMTID);
54 zap['d'] = make_field(debug) = 1;
55
56 zap(argc, argv);
57 }
58 catch(const exception& error) {
59 FATAL(error.what() << endl);
60 }
61
62
63 try {
64
65 JDB::reset(usr, pwd, cookie);
66
67 const int ID = getDetector<int> (detid);
68 detid = getDetector<string>(detid);
69
70 typedef vector<JDetectorIntegration> detector_type;
71
72 detector_type detector;
73
74 {
75 ResultSet& rs = getResultSet(getTable<JDetectorIntegration>(), getSelector<JDetectorIntegration>(ID));
76
77 for (JDetectorIntegration parameters; rs >> parameters; ) {
78 detector.push_back(parameters);
79 }
80
81 rs.Close();
82 }
83
84 const JPMTHV pmt_hv[] = {
85 JPMTHV(ID, runs.first),
86 JPMTHV(ID, runs.second)
87 };
88
89 filebuf buffer;
90
91 if (outputFile != "") {
92 buffer.open(outputFile.c_str(), ios::out);
93 }
94
95 ostream os(buffer.is_open() ? &buffer : cout.rdbuf());
96
97 for (detector_type::const_iterator i = detector.begin(); i != detector.end(); ++i) {
98 if (i->PMTUPI.getPBS() == PBS::PMT) {
99 try {
100 if (pmt_hv[0](i->PMTUPI).value == pmt_hv[1](i->PMTUPI).value) {
101 if (usePMTID)
102 os << setw(10) << i->DOMID << ' ' << setw(2) << i->PMTID << endl;
103 else
104 os << setw(10) << i->DOMID << ' ' << setw(2) << i->CABLEPOS << endl;
105 }
106 }
107 catch(const exception& error) {
108 ERROR("Invalid UPI " << i->PMTUPI << ' ' << setw(10) << i->DOMID << ' ' << setw(2) << i->PMTID << endl);
109 }
110 }
111 }
112
113 buffer.close();
114 }
115 catch(const exception& error) {
116 FATAL(error.what() << endl);
117 }
118}
string outputFile
General purpose messaging.
#define ERROR(A)
Definition JMessage.hh:66
#define FATAL(A)
Definition JMessage.hh:67
int debug
debug level
Definition JSirene.cc:72
Utility class to parse command line options.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition JParser.hh:2142
I/O formatting auxiliaries.
int main(const int argc, const char *const argv[])
Definition JTDC.cc:25
Auxiliary class for PMT HVs.
Definition JPMTHV.hh:20
Utility class to parse command line options.
Definition JParser.hh:1698
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Detector file.
Definition JHead.hh:227
Wrapper class for server name.
Definition JDB.hh:54
Template definition for getting table specific selector.