Jpp test-rotations-old
the software that should make you happy
Loading...
Searching...
No Matches
JAddHDF.cc File Reference

Program to add multi-dimensional histograms of muon light. More...

#include <string>
#include <iostream>
#include <fstream>
#include <iomanip>
#include "JPhysics/JPDFTable.hh"
#include "JIO/JFileStreamIO.hh"
#include "JTools/JHistogram1D_t.hh"
#include "JTools/JHistogramMap_t.hh"
#include "JTools/JTransformableMultiHistogram.hh"
#include "JTools/JFunction1D_t.hh"
#include "JTools/JFunctionalMap_t.hh"
#include "JGeometry3D/JAngle3D.hh"
#include "JGeometry3D/JVersor3D.hh"
#include "JPhysics/JConstants.hh"
#include "Jeep/JParser.hh"
#include "Jeep/JMessage.hh"
#include "JPhysics/JPDFTransformer.hh"

Go to the source code of this file.

Functions

int main (int argc, char **argv)
 

Detailed Description

Program to add multi-dimensional histograms of muon light.

Author
lquinn

Definition in file JAddHDF.cc.

Function Documentation

◆ main()

int main ( int argc,
char ** argv )

Definition at line 32 of file JAddHDF.cc.

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 muon light");
44
45 zap['f'] = make_field(inputFile);
46 zap['o'] = make_field(outputFile);
47 zap['d'] = make_field(debug) = 1;
48
49 zap(argc, argv);
50 }
51 catch(const exception &error) {
52 FATAL(error.what() << endl);
53 }
54
55
56 typedef JHistogram1D_t::abscissa_type abscissa_type;
57
61 JHistogramGridMap_t>::maplist> JMultiHistogram_t;
62
63 typedef JPDFTransformer<3, abscissa_type> JFunctionTransformer_t;
64
65 JMultiHistogram_t h0; // occurrence rate of PMT (used for normalisation)
66 JMultiHistogram_t h1; // light from muon
67 JMultiHistogram_t h2; // light from EM showers
68
69 h1.transformer.reset(new JFunctionTransformer_t());
70 h2.transformer.reset(new JFunctionTransformer_t());
71
72 bool add = false;
73
74 for(vector<string>::const_iterator file_name = inputFile.begin(); file_name != inputFile.end(); ++file_name) {
75
76 NOTICE("loading input from file " << *file_name << "... " << flush);
77
78 try {
79
80 JFileStreamReader in(file_name->c_str());
81
82 if (add) {
83
84 JMultiHistogram_t p0;
85 JMultiHistogram_t p1;
86 JMultiHistogram_t p2;
87
88 p1.transformer.reset(new JFunctionTransformer_t());
89 p2.transformer.reset(new JFunctionTransformer_t());
90
91 for(JMultiHistogram_t* p : { &p0, &p1, &p2 }) {
92 in.load(*p);
93 }
94
95 in.close();
96
97 NOTICE("done." << endl);
98
99 // Add new histogram to first histogram
100
101 for(JMultiHistogram_t::super_iterator
102 i0 = h0.super_begin(), i1 = h1.super_begin(), i2 = h2.super_begin(),
103 j0 = p0.super_begin(), j1 = p1.super_begin(), j2 = p2.super_begin();
104 i0 != h0.super_end(); ++i0, ++i1, ++i2, ++j0, ++j1, ++j2)
105 {
106 i0.getValue().add(j0.getValue());
107 i1.getValue().add(j1.getValue());
108 i2.getValue().add(j2.getValue());
109 }
110 }
111 else {
112
113 for(JMultiHistogram_t* p : { &h0, &h1, &h2 }) {
114 in.load(*p);
115 }
116
117 in.close();
118
119 NOTICE("done." << endl);
120
121 add = true;
122 }
123 }
124 catch(const JException& error) {
125 FATAL(error.what() << endl);
126 }
127 }
128
129 JFileStreamWriter out(outputFile.c_str());
130
131 NOTICE("Storing, " << flush);
132
133 for (const JMultiHistogram_t* p : { &h0, &h1, &h2 }) {
134 out.store(*p);
135 }
136
137 out.close();
138 NOTICE("done." << endl);
139}
string outputFile
TPaveText * p1
#define NOTICE(A)
Definition JMessage.hh:64
#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
Binary buffered file input.
Binary buffered file output.
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
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