33 int main(
int argc,
char **argv)
39 string fileDescriptor;
44 JParser<> zap(
"Program to convert multi-dimensional histograms of shower light to multi-dimensional PDFs.");
47 zap[
'o'] =
make_field(fileDescriptor) =
"J%p.dat";
52 catch(
const exception &error) {
53 FATAL(error.what() << endl);
58 FATAL(
"error file descriptor " << fileDescriptor << endl);
64 JMAPLIST<JHistogramMap_t,
67 JHistogramGridMap_t>::maplist> JMultiHistogram_t;
74 h1.transformer.reset(
new JFunction4DTransformer_t());
78 NOTICE(
"Loading in input, " << flush);
80 JFileStreamReader in(inputFile.c_str());
82 for (JMultiHistogram_t* buffer[] = { &h0, &h1, NULL }, **i = buffer; *i != NULL; ++i) {
92 for (JMultiHistogram_t::super_iterator
93 i0 = h0.super_begin(),
94 i1 = h1.super_begin(); i1 != h1.super_end(); ++i0, ++i1) {
96 const double W = i0.getValue().getIntegral();
100 const JDirection3D
u(JAngle3D(i0->second->first, i0->second->second->first));
103 int number_of_bins = (int) (2 +
u.getDot(
v));
106 i1.getValue().div(W);
116 const JMultiHistogram_t& value;
119 typedef JPDFTable<JPolint1Function1D_t,
120 JMAPLIST<JPolint1FunctionalMap,
121 JPolint1FunctionalMap,
122 JPolint1FunctionalGridMap,
123 JPolint1FunctionalGridMap>::maplist> JPDF_t;
128 NOTICE(
"storing output to file " << file_name <<
"... " << flush);
130 const JPDF_t pdf(h1);
132 pdf.store(file_name.c_str());
136 catch(
const JException& error) {
137 FATAL(error.what() << endl);