30int main(
int argc,
char **argv)
45 JParser<> zap(
"Auxiliary application to plot detector parameters.");
47 zap[
'a'] =
make_field(detectorFileA,
"detector file.");
50 zap[
'r'] =
make_field(regexp,
"regular expresion to extract bin labels for the x-axis") =
" ";
51 zap[
'L'] =
make_field(labelInterval,
"interval between x-axis bins for which labels are shown") = 1;
56 catch(
const exception &error) {
57 FATAL(error.what() << endl);
61 if (detectorFileA.empty()) {
62 FATAL(
"No detector file specified." << endl);
65 if (detectorFileB.size() != 0 && detectorFileB.size() != detectorFileA.size()) {
66 FATAL(
"Detector file size " << detectorFileA.size() <<
" != " << detectorFileB.size() << endl);
70 const int NUMBER_OF_FILES = detectorFileA.size();
72 JManager<string, TH2D> manager(
new TH2D(
"%", NULL,
73 NUMBER_OF_FILES, -0.5, NUMBER_OF_FILES - 0.5,
74 NUMBER_OF_PMTS, -0.5, NUMBER_OF_PMTS - 0.5));
76 manager->Sumw2(kFALSE);
80 const int n = (NUMBER_OF_FILES < labelInterval) ? 1 : labelInterval;
82 const TPRegexp buffer(regexp);
84 for (
int i = 0; i != NUMBER_OF_FILES; ++i){
87 manager->GetXaxis()->SetBinLabel(i+1 , parse(buffer , TString(detectorFileA[i].c_str())));
89 manager->GetXaxis()->SetBinLabel(i+1 ,
" ");
94 if (detectorFileB.empty()) {
106 FATAL(
"Empty detector." << endl);
110 for (
int i = 0; i != NUMBER_OF_FILES; ++i) {
112 NOTICE(
"Histogram " << detectorFileA[i] <<
" relative to " << detectorFileA[0] << endl);
117 load(detectorFileA[i], buffer);
125 for (JDetector::iterator module =
detector.begin(); module !=
detector.end(); ++module) {
127 TH2D* h2 = manager[
MAKE_CSTRING(module->getID() <<
"." <<
"t0")];
129 for (
size_t pmt = 0; pmt !=
module->size(); ++pmt) {
130 h2->SetBinContent(i+1, pmt+1, router.
getModule(module->getID()).
getPMT(pmt).
getT0() - module->getPMT(pmt).getT0());
137 for (
int i = 0; i != NUMBER_OF_FILES; ++i) {
139 NOTICE(
"Histogram " << detectorFileA[i] <<
" relative to " << detectorFileB[i] << endl);
145 load(detectorFileA[i], detectorA);
146 load(detectorFileB[i], detectorB);
154 for (JDetector::iterator module = detectorA.begin(); module != detectorA.end(); ++module) {
156 TH2D* h2 = manager[
MAKE_CSTRING(module->getID() <<
"." <<
"t0")];
158 for (
size_t pmt = 0; pmt !=
module->size(); ++pmt) {
159 h2->SetBinContent(i+1, pmt+1, router.
getModule(module->getID()).
getPMT(pmt).
getT0() - module->getPMT(pmt).getT0());
166 for (JManager<string, TH2D>::iterator i = manager.begin(); i != manager.end(); ++i) {
167 i->second->Sumw2(kFALSE);