Jpp  17.3.0-rc.2
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
JMergePDF.cc
Go to the documentation of this file.
1 #include <string>
2 #include <iostream>
3 #include <iomanip>
4 
7 #include "JPhysics/JPDFTable.hh"
8 
9 #include "Jeep/JParser.hh"
10 #include "Jeep/JMessage.hh"
11 
12 
13 /**
14  * \file
15  *
16  * Program to merge interpolation tables of muon light for PDFs.
17  * \author mdejong
18  */
19 int main(int argc, char **argv)
20 {
21  using namespace std;
22  using namespace JPP;
23 
24  vector<string> inputFile;
25  string outputFile;
26  int debug;
27 
28  try {
29 
30  JParser<> zap("Program to merge interpolation tables of muon light for PDFs.");
31 
32  zap['f'] = make_field(inputFile);
33  zap['o'] = make_field(outputFile);
34  zap['d'] = make_field(debug) = 0;
35 
36  zap(argc, argv);
37  }
38  catch(const exception &error) {
39  FATAL(error.what() << endl);
40  }
41 
42 
43  typedef JSplineFunction1D_t JFunction1D_t;
44  typedef JMAPLIST<JPolint1FunctionalMap,
45  JPolint1FunctionalGridMap,
46  JPolint1FunctionalGridMap>::maplist JMapList_t;
47  typedef JPDFTable<JFunction1D_t, JMapList_t> JPDF_t;
48 
49  JPDF_t pdf;
50 
51  bool clone = true;
52 
53  for (vector<string>::const_iterator file_name = inputFile.begin(); file_name != inputFile.end(); ++file_name) {
54 
55  NOTICE("loading input from file " << *file_name << "... " << flush);
56 
57  try {
58 
59  JPDF_t fcn;
60 
61  fcn.load(file_name->c_str());
62 
63  if (clone) {
64 
65  pdf.transformer.reset(fcn.transformer->clone());
66 
67  clone = false;
68  }
69 
70  for (JPDF_t::super_const_iterator i = fcn.super_begin(); i != fcn.super_end(); ++i)
71  pdf.insert(*i);
72  }
73  catch(const JException& error) {
74  FATAL(error.what() << endl);
75  }
76 
77  NOTICE("OK" << endl);
78  }
79 
80  try {
81 
82  NOTICE("storing output to file " << outputFile << "... " << flush);
83 
84  pdf.store(outputFile.c_str());
85 
86  NOTICE("OK" << endl);
87  }
88  catch(const JException& error) {
89  FATAL(error.what() << endl);
90  }
91 }
Utility class to parse command line options.
Definition: JParser.hh:1517
int main(int argc, char *argv[])
Definition: Main.cc:15
string outputFile
Various implementations of functional maps.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition: JParser.hh:1993
#define NOTICE(A)
Definition: JMessage.hh:64
General purpose messaging.
#define FATAL(A)
Definition: JMessage.hh:67
Utility class to parse command line options.
int debug
debug level