Jpp  15.0.0-rc.2
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Functions
JF2.cc File Reference

Auxiliary program to write 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 ROOT function.

Author
mdejong

Definition in file JF2.cc.

Function Documentation

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;
37  int N;
38  int debug;
39 
40  try {
41 
42  JParser<> zap("Auxiliary program to write 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;\"");
50  zap['N'] = make_field(N) = 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 }
Utility class to parse command line options.
Definition: JParser.hh:1500
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.
then echo Enter input within $TIMEOUT_S seconds echo n User name
Definition: JCookie.sh:42
then JShowerPostfit f $INPUT_FILE o $OUTPUT_FILE N
*fatal Wrong number of arguments esac JCookie sh typeset Z DETECTOR typeset Z SOURCE_RUN typeset Z TARGET_RUN set_variable PARAMETERS_FILE $WORKDIR parameters
Definition: diff-Tuna.sh:38
string outputFile
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition: JParser.hh:1961
int debug
debug level
Definition: JSirene.cc:63
#define FATAL(A)
Definition: JMessage.hh:67