Jpp 19.3.0-rc.2
the software that should make you happy
Loading...
Searching...
No Matches
JAddHDE.cc
Go to the documentation of this file.
1#include <string>
2#include <iostream>
3#include <fstream>
4#include <iomanip>
5
7
9
15
19
20#include "Jeep/JParser.hh"
21#include "Jeep/JMessage.hh"
22
24
25
26/**
27 * \file
28 *
29 * Program to add 5-dimensional histograms of shower light
30 * \author jseneca
31 */
32int main(int argc, char **argv)
33{
34 using namespace std;
35 using namespace JPP;
36
37 vector<string> inputFile;
38 string outputFile;
39 int debug;
40
41 try {
42
43 JParser<> zap("Program to add multi-dimensional histograms of shower light");
44
45 zap['f'] = make_field(inputFile);
46 zap['o'] = make_field(outputFile);
47 zap['d'] = make_field(debug) = 1;
48
49 if (zap.read(argc, argv) != 0)
50 return 1;
51 }
52 catch(const exception &error) {
53 FATAL(error.what() << endl);
54 }
55
56
57 typedef JHistogram1D_t::abscissa_type abscissa_type;
58
64 JHistogramGridMap_t>::maplist> JMultiHistogram_t;
65
66 typedef JPDFTransformer<5, abscissa_type> JFunction5DTransformer_t;
67
68 JMultiHistogram_t h0; // occurrence rate of PMT (used for normalisation)
69 JMultiHistogram_t h1; // light from cascade
70
71 h1.transformer.reset(new JFunction5DTransformer_t());
72
73 bool add = false;
74
75 for(vector<string>::const_iterator file_name = inputFile.begin(); file_name != inputFile.end(); ++file_name) {
76
77 NOTICE("loading input from file " << *file_name << "... " << flush);
78
79 try {
80
81 JFileStreamReader in(file_name->c_str());
82
83 if (add) {
84
85 JMultiHistogram_t p0;
86 JMultiHistogram_t p1;
87
88 p1.transformer.reset(new JFunction5DTransformer_t());
89
90 for(JMultiHistogram_t* p : { &p0, &p1 }) {
91 in.load(*p);
92 }
93
94 in.close();
95
96 NOTICE("done." << endl);
97
98 // Add new histogram to first histogram
99
100 double integral1 = 0.0;
101 double integral2 = 0.0;
102
103 for(JMultiHistogram_t::super_iterator
104 i0 = h0.super_begin(), i1 = h1.super_begin(),
105 j0 = p0.super_begin(), j1 = p1.super_begin(); i1 != h1.super_end(); ++i0, ++i1, ++j0, ++j1) {
106
107 integral1 += i0.getValue().getIntegral();
108
109 i0.getValue().add(j0.getValue());
110 i1.getValue().add(j1.getValue());
111
112 integral2 += i0.getValue().getIntegral();
113 }
114 }
115 else {
116
117 for(JMultiHistogram_t* p : { &h0, &h1 }) {
118 in.load(*p);
119 }
120
121 in.close();
122
123 NOTICE("done." << endl);
124
125 add = true;
126 }
127 }
128 catch(const JException& error) {
129 FATAL(error.what() << endl);
130 }
131 }
132
133 JFileStreamWriter out(outputFile.c_str());
134
135 NOTICE("Storing output to file " << outputFile << "... " << flush);
136
137 for (const JMultiHistogram_t* p : { &h0, &h1 }) {
138 out.store(*p);
139 }
140
141 out.close();
142 NOTICE("JAddHDE done." << endl);
143}
int main(int argc, char **argv)
Definition JAddHDE.cc:32
string outputFile
TPaveText * p1
Various implementations of functional maps.
General purpose messaging.
#define NOTICE(A)
Definition JMessage.hh:64
#define FATAL(A)
Definition JMessage.hh:67
int debug
debug level
Definition JSirene.cc:72
Utility class to parse command line options.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition JParser.hh:2142
Physics constants.
Binary buffered file input.
Binary buffered file output.
void close()
Close file.
JReader & load(JSerialisable &object)
Read object.
JWriter & store(const JSerialisable &object)
Write object.
General exception.
Definition JException.hh:24
virtual const char * what() const override
Get error message.
Definition JException.hh:64
Utility class to parse command line options.
Definition JParser.hh:1698
int read(const int argc, const char *const argv[])
Parse the program's command line options.
Definition JParser.hh:1992
Template definition of transformer of the probability density function (PDF) of the time response of ...
Histogram in 1D.
collection_type::abscissa_type abscissa_type
Transformable multidimensional histogram.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Type definition of a JHistogramMap based on JGridMap implementation.
Type definition of a JHistogramMap based on JMap implementation.
Auxiliary class for recursive map list generation.
Definition JMapList.hh:109