36{
39
41 string usr;
42 string pwd;
43 string cookie;
44 string detectorFile;
45 string inputFile;
49
50 try {
51
52 JParser<> zap(
"Auxiliary application to plot PMT parameters as a function of variant.");
53
58 zap[
'a'] =
make_field(detectorFile,
"detector file.");
59 zap[
'f'] =
make_field(inputFile,
"output of JPrintDB -q \"integration\" -c \";\" -W1") =
"";
61 zap[
'P'] =
make_field(parameters,
"PMT calibration data (or corresponding file name)");
63
64 zap(argc, argv);
65 }
66 catch(const exception &error) {
67 FATAL(error.what() << endl);
68 }
69
70
72
73 try {
75 }
78 }
79
81
83
84 string detid = "";
85
86 try {
87
88 JDB::reset(usr, pwd, cookie);
89
91 }
92 catch(const exception& error) {
93 FATAL(error.what() << endl);
94 }
95
96 if (inputFile != "") {
97
98 integration.
load(inputFile.c_str());
99
100 } else {
101
102 DEBUG(
"Reading database table " << getTable<JDetectorIntegration_t>() << endl);
103
104 try {
105
106 ResultSet& rs =
getResultSet(getTable<JDetectorIntegration_t>());
107
108 if (! (rs >> integration)) {
110 }
111 }
112 catch(const exception& error) {
113 FATAL(error.what() << endl);
114 }
115 }
116
118
119 const JProductRouter product(integration, getPBSSequences(PBS::PMT));
120
122
123 JManager<string, TH1D> H1(new TH1D("TTS_ns[%]", NULL, 100, 0.0, 4.0));
124 JManager<string, TH1D> H2(new TH1D("QE[%]", NULL, 100, 0.0, 2.0));
125 JManager<string, TH1D> H3(new TH1D("gain[%]", NULL, 100, 0.0, 2.0));
126 JManager<string, TH1D> H4(new TH1D("gainSpread[%]", NULL, 100, 0.0, 1.0));
127
129
130 const JUPI_t upi = integration[i->second].content.getUPI();
131 const JLocation_t location = product.getLocation(upi);
132
133 DEBUG(
"PMT " << left << setw(24) << upi.
getVariant() << right <<
' ' << location << endl);
134
136
139
144 }
145 }
146
148
149 out << H1 << H2 << H3 << H4;
150
151 out.Write();
152 out.Close();
153}
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
#define DEBUG(A)
Message macros.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Router for direct addressing of location data in detector data structure.
Logical location of module.
Data structure for a composite optical module.
Auxiliary class for map of PMT parameters.
const JPMTParameters & getPMTParameters(const JPMTIdentifier &id) const
Get PMT parameters.
Data structure for PMT parameters.
double QE
relative quantum efficiency
double gainSpread
gain spread [unit]
double TTS_ns
transition time spread [ns]
int getID() const
Get identifier.
Utility class to parse command line options.
ResultSet & getResultSet(const std::string &query)
Get result set.
JDetectorsHelper & getDetector()
Auxiliary function for helper object initialisation.
std::vector< JServer > getServernames()
Get list of names of available database servers.
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
void load(const char *const file_name, const std::string &separator=";")
Load detector integration from CSV formatted input file.
map_type::const_iterator range_const_iterator
void configure(const std::string &detid, const bool option=false)
Configure detector integration for given detector identifier.
range_type find(const JUPI_t &upi) const
Find range of products with given UPI.
Auxiliary data structure for location of product in detector.
int string
position in detector
bool is_valid() const
Check validity of location.
int floor
position in string
int position
position in floor
Auxiliary class to map UPI to location in detector.
Wrapper class for server name.
Universal product identifier (UPI).
const std::string & getVariant() const
Get variant.