Jpp 20.0.0-27-g39925593c-D
the software that should make you happy
Loading...
Searching...
No Matches
Functions
JMakeHDG.cc File Reference

Program to convert multi-dimensional histograms of shower light to multi-dimensional PDFs. More...

#include <string>
#include <iostream>
#include <fstream>
#include <iomanip>
#include "JPhysics/JPDFTable.hh"
#include "JPhysics/JPDFTypes.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/JDirection3D.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 convert multi-dimensional histograms of shower light to multi-dimensional PDFs.

Author
lquinn

Definition in file JMakeHDG.cc.

Function Documentation

◆ main()

int main ( int argc,
char ** argv )

Definition at line 33 of file JMakeHDG.cc.

34{
35 using namespace std;
36 using namespace JPP;
37
38 string inputFile;
39 string fileDescriptor;
40 int debug;
41
42 try {
43
44 JParser<> zap("Program to convert multi-dimensional histograms of shower light to multi-dimensional PDFs.");
45
46 zap['f'] = make_field(inputFile);
47 zap['o'] = make_field(fileDescriptor) = "J%p.dat";
48 zap['d'] = make_field(debug) = 1;
49
50 zap(argc, argv);
51 }
52 catch(const exception &error) {
53 FATAL(error.what() << endl);
54 }
55
56
57 if (!hasWildCard(fileDescriptor)) {
58 FATAL("error file descriptor " << fileDescriptor << endl);
59 }
60
61 typedef JHistogram1D_t::abscissa_type abscissa_type;
62
67 JHistogramGridMap_t>::maplist> JMultiHistogram_t;
68
69 typedef JPHYSICS::JPDFTransformer<4, abscissa_type> JFunction4DTransformer_t;
70
71 JMultiHistogram_t h0; // occurrence rate of PMT (used for normalisation)
72 JMultiHistogram_t h1; // light from cascade
73
74 h1.transformer.reset(new JFunction4DTransformer_t());
75
76 // input
77
78 NOTICE("Loading in input, " << flush);
79
80 JFileStreamReader in(inputFile.c_str());
81
82 for (JMultiHistogram_t* p : { &h0, &h1 }) {
83 in.load(*p);
84 }
85
86 in.close();
87
88 NOTICE("done." << endl);
89
90 // rebin histograms according angle of incidence on PMT and normalise contents to PMT occurennce rate
91
92 for (JMultiHistogram_t::super_iterator
93 i0 = h0.super_begin(),
94 i1 = h1.super_begin(); i1 != h1.super_end(); ++i0, ++i1) {
95
96 const double W = i0.getValue().getIntegral();
97
98 if (W != 0.0) {
99
100 const JDirection3D u(JAngle3D(i0->second->first, i0->second->second->first));
101 const JDirection3D v(getSinThetaC(), 0.0, getCosThetaC());
102
103 int number_of_bins = (int) (2 + u.getDot(v));
104
105 i1.getValue().rebin(JHistogram1D_t::JRebin(number_of_bins));
106 i1.getValue().div(W);
107 }
108 }
109
110 NOTICE("done." << endl);
111
112 // output
113
114 struct tuple {
115 const JPDFType_t type;
116 const JMultiHistogram_t& value;
117 };
118
123 JPolint1FunctionalGridMap>::maplist> JPDF_t;
124
125 const string file_name = getFilename(fileDescriptor, DIRECT_LIGHT_FROM_EMSHOWER);
126
127 try {
128 NOTICE("storing output to file " << file_name << "... " << flush);
129
130 const JPDF_t pdf(h1);
131
132 pdf.store(file_name.c_str());
133
134 NOTICE("OK" << endl);
135 }
136 catch(const JException& error) {
137 FATAL(error.what() << endl);
138 }
139}
#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
Data structure for angles in three dimensions.
Definition JAngle3D.hh:35
Data structure for direction in three dimensions.
Binary buffered file input.
General exception.
Definition JException.hh:24
virtual const char * what() const override
Get error message.
Definition JException.hh:64
Template definition of a multi-dimensional oscillation probability interpolation table.
Utility class to parse command line options.
Definition JParser.hh:1698
Multi-dimensional PDF table for arrival time of Cherenkov light.
Definition JPDFTable.hh:44
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.
bool hasWildCard(const std::string &file_name)
Check presence of wild card.
double getCosThetaC()
Get average cosine of Cherenkov angle of water corresponding to group velocity.
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
Type definition of a 1st degree polynomial interpolation with result type double.
Type definition of a 1st degree polynomial interpolation based on a JGridMap implementation.
Type definition of a 1st degree polynomial interpolation based on a JMap implementation.
Auxiliary class for merging of fixed number of consecutive bins.