Jpp 20.0.0-27-g39925593c-D
the software that should make you happy
Loading...
Searching...
No Matches
JF2.cc
Go to the documentation of this file.
1#include <string>
2#include <iostream>
3#include <iomanip>
4#include <vector>
5
6#include "TROOT.h"
7#include "TFile.h"
8#include "TF2.h"
9
10#include "JTools/JRange.hh"
11#include "JLang/JToken.hh"
13
14#include "Jeep/JParser.hh"
15#include "Jeep/JMessage.hh"
16
17
18/**
19 * \file
20 * Auxiliary program to write 2D ROOT function.
21 * \author mdejong
22 */
23int main(int argc, char **argv)
24{
25 using namespace std;
26 using namespace JPP;
27
28 typedef JToken<';'> JToken_t;
29 typedef JRange<double> JRange_t;
30
31 string formula;
32 string name;
33 string outputFile;
34 JRange_t x;
35 JRange_t y;
36 vector<JToken_t> parameters;
37 int N;
38 int debug;
39
40 try {
41
42 JParser<> zap("Auxiliary program to write 2D ROOT function.");
43
44 zap['F'] = make_field(formula, "function, e.g: \"[0]+[1]*x\"");
45 zap['T'] = make_field(name, "name of ROOT function") = "user";
46 zap['o'] = make_field(outputFile, "ROOT file with formula") = "f2.root";
47 zap['x'] = make_field(x, "abscissa range") = JRange_t();
48 zap['y'] = make_field(y, "abscissa range") = JRange_t();
49 zap['@'] = make_field(parameters, "parameter values, e.g: \"p0 = 1.0;\"") = JPARSER::initialised();
50 zap['N'] = make_field(N, "number of points (for drawing)") = 0;
51 zap['d'] = make_field(debug) = 1;
52
53 zap(argc, argv);
54 }
55 catch(const exception &error) {
56 FATAL(error.what() << endl);
57 }
58
59 TF2 f2(name.c_str(),
60 formula.c_str(),
61 x.getLowerLimit(),
62 x.getUpperLimit(),
63 y.getLowerLimit(),
64 y.getUpperLimit());
65
66 if (N > 0) {
67 f2.SetNpx(N);
68 f2.SetNpy(N);
69 }
70
71 for (vector<JToken_t>::const_iterator i = parameters.begin(); i != parameters.end(); ++i) {
72 f2.SetParameter(getParameter(*i), getValue(*i,&f2));
73 }
74
75 TFile out(outputFile.c_str(), "recreate");
76
77 out.WriteTObject(&f2);
78
79 out.Write();
80 out.Close();
81}
string outputFile
int main(int argc, char **argv)
Definition JF2.cc:23
General purpose messaging.
#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
Auxiliary class to define a range between two values.
Wrapper class around string.
Definition JToken.hh:26
Template definition of a multi-dimensional oscillation probability interpolation table.
Utility class to parse command line options.
Definition JParser.hh:1698
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
Definition JParser.hh:68