Jpp 19.3.0-rc.1
the software that should make you happy
Loading...
Searching...
No Matches
JPlotPMTParameters.cc File Reference

Auxiliary application to plot PMT parameters. More...

#include <string>
#include <iostream>
#include <iomanip>
#include "TROOT.h"
#include "TFile.h"
#include "TH1D.h"
#include "km3net-dataformat/online/JDAQ.hh"
#include "JDetector/JDetector.hh"
#include "JDetector/JDetectorToolkit.hh"
#include "JDetector/JPMTParametersMap.hh"
#include "JDetector/JPMTParametersToolkit.hh"
#include "JDetector/JDetectorAddressMap.hh"
#include "JDetector/JDetectorSupportkit.hh"
#include "JROOT/JManager.hh"
#include "JGizmo/JGizmoToolkit.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 application to plot PMT parameters.

Author
mdejong

Definition in file JDetector/JPlotPMTParameters.cc.

Function Documentation

◆ main()

int main ( int argc,
char ** argv )

Definition at line 48 of file JDetector/JPlotPMTParameters.cc.

49{
50 using namespace std;
51 using namespace JPP;
52 using namespace KM3NETDAQ;
53
54 string detectorFile;
55 JPMTParametersMap parameters;
56 string outputFile;
57 bool showPMTAddress;
58 int debug;
59
60 try {
61
62 JParser<> zap("Auxiliary application to plot PMT parameters.");
63
64 zap['a'] = make_field(detectorFile, "detector file.");
65 zap['o'] = make_field(outputFile, "output file.") = "pmt_parameters.root";
66 zap['P'] = make_field(parameters, "PMT calibration data (or corresponding file name)");
67 zap['A'] = make_field(showPMTAddress, "show PMT address on y-axis");
68 zap['d'] = make_field(debug, "debug") = 0;
69
70 zap(argc, argv);
71 }
72 catch(const exception &error) {
73 FATAL(error.what() << endl);
74 }
75
77
78 try {
79 load(detectorFile, detector);
80 }
81 catch(const JException& error) {
82 FATAL(error);
83 }
84
85 if (detector.empty()) {
86 FATAL("Empty detector." << endl);
87 }
88
89 JManager<string, TH1D> manager(new TH1D("%", NULL, NUMBER_OF_PMTS, -0.5, NUMBER_OF_PMTS - 0.5));
90
91 for (JDetector::iterator module = detector.begin(); module != detector.end(); ++module) {
92
93 DEBUG("Module " << setw(10) << module->getID() << endl);
94
95 for (int pmt = 0; pmt != NUMBER_OF_PMTS; ++pmt) {
96
97 const JProperties properties = parameters.getPMTParameters(JPMTIdentifier(module->getID(), pmt)).getProperties();
98
99 for (JProperties::const_iterator p = properties.begin(); p != properties.end(); ++p) {
100
101 double value = 0.0;
102
103 try { value = (p->second.getValue<const double>()); } catch(const exception& error) {}
104 try { value = (p->second.getValue<const bool>() ? 1.0 : 0.0); } catch(const exception& error) {}
105
106 manager[MAKE_CSTRING(module->getID() << "." << p->first)]->SetBinContent(pmt + 1, value);
107 }
108
109 double value = getEfficiency(parameters.getPMTParameters(JPMTIdentifier(module->getID(), pmt)));
110
111 manager[MAKE_CSTRING(module->getID() << "." << EFFICIENCY)]->SetBinContent(pmt + 1, value);
112 }
113 }
114
115 if (showPMTAddress) {
116
118
119 for (JManager<string, TH1D>::iterator i = manager.begin(); i != manager.end(); ++i) {
120
121 int id;
122
123 istringstream(i->first) >> id;
124
125 setAxisLabels(*i->second, "X", demo.get(id));
126 }
127 }
128
129 manager.Write(outputFile.c_str());
130}
string outputFile
#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 make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition JParser.hh:2142
#define MAKE_CSTRING(A)
Make C-string.
Definition JPrint.hh:72
Lookup table for PMT addresses in detector.
const JModuleAddressMap & get(const int id) const
Get module address map.
Detector data structure.
Definition JDetector.hh:96
Auxiliary class for map of PMT parameters.
const JPMTParameters & getPMTParameters(const JPMTIdentifier &id) const
Get PMT parameters.
JProperties getProperties(const JEquationParameters &equation=JPMTParameters::getEquationParameters())
Get properties of this class.
Utility class to parse parameter values.
General exception.
Definition JException.hh:24
Utility class to parse command line options.
Definition JParser.hh:1698
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
JDetectorAddressMap & getDetectorAddressMap()
Get detector address map.
void setAxisLabels(TAxis *axis, const JModuleAddressMap &memo)
Set axis with PMT address labels.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
KM3NeT DAQ data structures and auxiliaries.
Definition DataQueue.cc:39
Detector file.
Definition JHead.hh:227