Jpp 20.0.0-27-g39925593c-D
the software that should make you happy
Loading...
Searching...
No Matches
Functions
JPMTThreshold.cc File Reference

Auxiliary program to set PMT thresholds according DAQ configuration of a given data taking run. More...

#include <string>
#include <iostream>
#include <vector>
#include <map>
#include "TF1.h"
#include "JDB/JDB.hh"
#include "JDB/JSelector.hh"
#include "JDB/JSelectorSupportkit.hh"
#include "JDB/JDBToolkit.hh"
#include "JDB/JPMTThreshold.hh"
#include "JDB/JDetectorIntegration.hh"
#include "JDetector/JPMTParametersMap.hh"
#include "JSystem/JStat.hh"
#include "JSupport/JMeta.hh"
#include "Jeep/JParser.hh"
#include "Jeep/JMessage.hh"

Go to the source code of this file.

Functions

int main (const int argc, const char *const argv[])
 

Detailed Description

Auxiliary program to set PMT thresholds according DAQ configuration of a given data taking run.

Author
mdejong

Definition in file software/JDB/JPMTThreshold.cc.

Function Documentation

◆ main()

int main ( const int argc,
const char *const argv[] )

Definition at line 30 of file software/JDB/JPMTThreshold.cc.

31{
32 using namespace std;
33 using namespace JPP;
34
35 JServer server;
36 string usr;
37 string pwd;
38 string cookie;
39 string detid;
40 int run;
41 string pmtFile;
42 string formula;
43 int debug;
44
45 try {
46
47 JParser<> zap("Auxiliary program to set PMT thresholds according DAQ configuration of a given data taking run.");
48
49 zap['s'] = make_field(server) = getServernames();
50 zap['u'] = make_field(usr) = "";
51 zap['!'] = make_field(pwd) = "";
52 zap['C'] = make_field(cookie) = "";
53 zap['D'] = make_field(detid);
54 zap['r'] = make_field(run);
55 zap['P'] = make_field(pmtFile, "PMT parameters file") = "";
56 zap['F'] = make_field(formula, "transfer function") = "((x * 1.0)/255.0 * 1.6 + 0.8 - 0.989) / 0.44"; // "((x * 1.0)/255.0 * 1.6 + 0.8 - 1) / 0.44";
57 zap['d'] = make_field(debug) = 1;
58
59 zap(argc, argv);
60 }
61 catch(const exception& error) {
62 FATAL(error.what() << endl);
63 }
64
65
66 JPMTParametersMap parameters;
67
68 if (pmtFile != "" && getFileStatus(pmtFile.c_str())) {
69 parameters.load(pmtFile.c_str());
70 }
71
72
73 TF1 f1("user", formula.c_str());
74
75 if (!f1.IsValid()) {
76 FATAL("Formula <" << formula << "> invalid." << endl);
77 }
78
79
80 typedef vector<JDetectorIntegration> detector_type;
81
83 detector_type detector;
84
85
86 try {
87
88 JDB::reset(usr, pwd, cookie);
89
90 const int id = getDetector<int>(detid);
91
92 getPMTThreshold.configure(id, run);
93
95
97
98 for (JDetectorIntegration parameters; rs >> parameters; ) {
99 detector.push_back(parameters);
100 }
101
102 rs.Close();
103 }
104 catch(const exception& error) {
105 FATAL(error.what() << endl);
106 }
107
108
109 for (vector<JDetectorIntegration>::const_iterator i = detector.begin(); i != detector.end(); ++i) {
110
111 if (i->PMTID != -1) {
112
113 try {
114
115 const JPMTThreshold::result_type threshold = getPMTThreshold(i->PMTUPI);
116
117 const double value = f1.Eval((double) threshold.value);
118
119 if (debug >= debug_t) {
120
121 cout << FILL(4,'0') << i->DUID << FILL() << '.'
122 << FILL(2,'0') << i->FLOORID << FILL() << '['
123 << FILL(2,'0') << i->CABLEPOS << FILL() << ']'
124 << ' '
125 << setw(3) << threshold.value << ' '
126 << FIXED(5,2) << value << ' ';
127
128 if (threshold.is_default) {
129 cout << "* (" << FIXED(5,2) << JPMTParameters().threshold << ")";
130 }
131
132 cout << endl;
133 }
134
135 if (!threshold.is_default) {
136
137 const JPMTIdentifier id(i->DOMID, i->CABLEPOS);
138
139 parameters[id].threshold = value;
140 }
141 }
142 catch(const exception& error) {
143 WARNING("Error at "
144 << FILL(4,'0') << i->DUID << FILL() << '.'
145 << FILL(2,'0') << i->FLOORID << FILL() << '['
146 << FILL(2,'0') << i->CABLEPOS << FILL() << ']'
147 << ' '
148 << error.what() << endl);
149 }
150 }
151 }
152
153 if (pmtFile != "") {
154
155 parameters.comment.add(JMeta(argc, argv));
156
157 parameters.store(pmtFile.c_str());
158
159 } else {
160
161 cout << parameters << endl;
162 }
163}
#define DEBUG(A)
Message macros.
Definition JMessage.hh:62
#define FATAL(A)
Definition JMessage.hh:67
int debug
debug level
Definition JSirene.cc:72
#define WARNING(A)
Definition JMessage.hh:65
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition JParser.hh:2142
Auxiliary class for PMT thresholds.
Auxiliary class for map of PMT parameters.
Data structure for PMT parameters.
double threshold
threshold [npe]
Template definition of a multi-dimensional oscillation probability interpolation table.
Utility class to parse command line options.
Definition JParser.hh:1698
ResultSet & getResultSet(const std::string &query)
Get result set.
Definition JDB.hh:438
std::vector< JServer > getServernames()
Get list of names of available database servers.
Definition JDB.hh:108
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Auxiliary data structure for sequence of same character.
Definition JManip.hh:330
Auxiliary data structure for floating point format specification.
Definition JManip.hh:448
Detector file.
Definition JHead.hh:227
Wrapper class for server name.
Definition JDB.hh:54
void load(const char *file_name)
Load from input file.
Auxiliary class for ROOT I/O of application specific meta data.
Definition JMeta.hh:72