51int main(
int argc,
char **argv)
68 JParser<> zap(
"Auxiliary application to plot PMT parameters.");
70 zap[
'a'] =
make_field(detectorFile,
"detector file.");
71 zap[
'P'] =
make_field(inputFile,
"PMT calibration data file(s)");
73 zap[
'r'] =
make_field(regexp,
"regular expresion to extract bin labels for the x-axis") =
"";
74 zap[
'A'] =
make_field(showPMTAddress,
"show PMT address on y-axis");
75 zap[
'L'] =
make_field(labelInterval,
"interval between x-axis bins for which labels are shown") = 1;
76 zap[
'R'] =
make_field(relative,
"monitor changes relative to first input");
81 catch(
const exception &error) {
82 FATAL(error.what() << endl);
95 FATAL(
"Empty detector." << endl);
100 for (vector<string>::const_iterator i = inputFile.begin(); i != inputFile.end(); ++i) {
105 const int NUMBER_OF_FILES = parameters.size();
107 JManager<string, TH2D> manager(
new TH2D(
"%", NULL,
108 NUMBER_OF_FILES, -0.5, NUMBER_OF_FILES - 0.5,
109 NUMBER_OF_PMTS, -0.5, NUMBER_OF_PMTS - 0.5));
111 manager->Sumw2(kFALSE);
115 const int n = (NUMBER_OF_FILES < labelInterval) ? 1 : labelInterval;
117 const TPRegexp buffer(regexp);
119 for (
int i = 0; i != NUMBER_OF_FILES; ++i) {
122 manager->GetXaxis()->SetBinLabel(i+1 , parse(buffer, TString(inputFile[i].c_str())));
124 manager->GetXaxis()->SetBinLabel(i+1 ,
" ");
128 for (JDetector::iterator module =
detector.begin(); module !=
detector.end(); ++module) {
130 DEBUG(
"Module " << setw(10) << module->getID() << endl);
132 for (
int pmt = 0; pmt != NUMBER_OF_PMTS; ++pmt) {
136 for (
int i = 0; i != NUMBER_OF_FILES; ++i) {
140 for (JProperties::const_iterator p = properties.begin(); p != properties.end(); ++p) {
144 try { value = (p->second.getValue<
const double>()); }
catch(
const exception& error) {}
145 try { value = (p->second.getValue<
const bool>() ? 1.0 : 0.0); }
catch(
const exception& error) {}
147 if (i == 0) { buffer[p->first] = value; }
148 if (relative) { value -= buffer[p->first]; }
150 manager[
MAKE_CSTRING(module->getID() <<
"." << p->first)]->SetBinContent(i + 1, pmt + 1, value);
153 double value = getEfficiency(parameters[i].getPMTParameters(
JPMTIdentifier(module->getID(), pmt)));
155 if (i == 0) { buffer[EFFICIENCY] = value; }
156 if (relative) { value -= buffer[EFFICIENCY]; }
158 manager[
MAKE_CSTRING(module->getID() <<
"." << EFFICIENCY)]->SetBinContent(i + 1, pmt + 1, value);
163 for (JManager<string, TH2D>::iterator i = manager.begin(); i != manager.end(); ++i) {
164 i->second->Sumw2(kFALSE);
167 if (showPMTAddress) {
171 for (JManager<string, TH2D>::iterator i = manager.begin(); i != manager.end(); ++i) {
175 istringstream(i->first) >> id;
177 setAxisLabels(*i->second,
"Y", demo.
get(
id));