Jpp 21.0.0-rc.1
the software that should make you happy
Loading...
Searching...
No Matches
JF2.cc File Reference

Auxiliary program to write 2D ROOT function. More...

#include <string>
#include <iostream>
#include <iomanip>
#include <vector>
#include "TROOT.h"
#include "TFile.h"
#include "TF2.h"
#include "JTools/JRange.hh"
#include "JLang/JToken.hh"
#include "JGizmo/JGizmoToolkit.hh"
#include "Jeep/JParser.hh"
#include "Jeep/JMessage.hh"

Go to the source code of this file.

Functions

int main (int argc, char **argv)
 

Detailed Description

Auxiliary program to write 2D ROOT function.

Author
mdejong

Definition in file JF2.cc.

Function Documentation

◆ main()

int main ( int argc,
char ** argv )

Definition at line 23 of file JF2.cc.

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
#define FATAL(A)
Definition JMessage.hh:67
int debug
debug level
Definition JSirene.cc:74
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition JParser.hh:2140
Wrapper class around string.
Definition JToken.hh:26
Utility class to parse command line options.
Definition JParser.hh:1697
Range of values.
Definition JRange.hh:42
double getValue(const JScale_t scale)
Get numerical value corresponding to scale.
Definition JScale.hh:47
int getParameter(const std::string &text)
Get parameter number from text string.
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:67