Jpp  17.3.1
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Functions
JGizmo/JHistogram2D.cc File Reference

Program to create TH2D and fill according given formula. More...

#include <string>
#include <iostream>
#include <fstream>
#include <vector>
#include "TROOT.h"
#include "TFile.h"
#include "TH2D.h"
#include "TF2.h"
#include "JLang/JToken.hh"
#include "JTools/JAbstractHistogram.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

Program to create TH2D and fill according given formula.

Author
mdejong

Definition in file JGizmo/JHistogram2D.cc.

Function Documentation

int main ( int  argc,
char **  argv 
)

Definition at line 25 of file JGizmo/JHistogram2D.cc.

26 {
27  using namespace std;
28  using namespace JPP;
29 
30  typedef JToken<';'> JToken_t;
31  typedef JAbstractHistogram<Double_t> JHistogram_t;
32 
33  string outputFile;
34  string inputFile;
35  string formula;
37  Int_t numberOfEvents;
38  string title;
39  JHistogram_t X;
40  JHistogram_t Y;
41  bool sumw2;
42  int debug;
43 
44  try {
45 
46  JParser<> zap("Program to create TH2D and fill according given formula.");
47 
48  zap['o'] = make_field(outputFile);
49  zap['f'] = make_field(inputFile) = "";
50  zap['F'] = make_field(formula) = "";
52  zap['n'] = make_field(numberOfEvents) = 0;
53  zap['T'] = make_field(title) = "h0";
54  zap['x'] = make_field(X) = JHistogram_t(100, -1.0, +1.0);
55  zap['y'] = make_field(Y) = JHistogram_t(100, -1.0, +1.0);
56  zap['s'] = make_field(sumw2);
57  zap['d'] = make_field(debug) = 1;
58 
59  zap(argc, argv);
60  }
61  catch(const exception &error) {
62  FATAL(error.what() << endl);
63  }
64 
65 
66  if ((formula != "" && inputFile != "") ||
67  (formula == "" && inputFile == "")) {
68  FATAL("Specify input file or formula." << endl);
69  }
70 
71 
72  TFile out(outputFile.c_str(), "recreate");
73 
74  TH2D h0(title.c_str(), NULL,
75  X.getNumberOfBins(), X.getLowerLimit(), X.getUpperLimit(),
76  Y.getNumberOfBins(), Y.getLowerLimit(), Y.getUpperLimit());
77 
78  if (formula != "") {
79 
80  TF2 f2("f2", formula.c_str());
81 
82  for (vector<JToken_t>::const_iterator i = parameters.begin(); i != parameters.end(); ++i) {
83  f2.FixParameter(getParameter(*i), getValue(*i));
84  }
85 
86  if (numberOfEvents > 0) {
87 
88  h0.Sumw2();
89  h0.FillRandom(f2.GetName(), numberOfEvents);
90 
91  } else {
92 
93  for (Int_t ix = 1; ix <= h0.GetXaxis()->GetNbins(); ++ix) {
94  for (Int_t iy = 1; iy <= h0.GetYaxis()->GetNbins(); ++iy) {
95  h0.SetBinContent(ix, iy, f2.Eval(h0.GetXaxis()->GetBinCenter(ix),
96  h0.GetYaxis()->GetBinCenter(iy)));
97  }
98  }
99  }
100  } else if (inputFile != "") {
101 
102  if (sumw2) {
103  h0.Sumw2();
104  }
105 
106  ifstream in(inputFile.c_str());
107 
108  for (double x, y; in >> x >> y; ) {
109  h0.Fill(x, y);
110  }
111 
112  in.close();
113  }
114 
115  out.Write();
116  out.Close();
117 }
Utility class to parse command line options.
Definition: JParser.hh:1517
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.
*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
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
Definition: JParser.hh:83
then fatal Wrong number of arguments fi set_variable STRING $argv[1] set_variable DETECTORXY_TXT $WORKDIR $DETECTORXY_TXT tail read X Y CHI2 RMS printf optimum n $X $Y $CHI2 $RMS awk v Y
string outputFile
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition: JParser.hh:1993
#define FATAL(A)
Definition: JMessage.hh:67
no fit printf nominal n $STRING awk v X
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable INPUT_FILE $argv[2] eval JPrintDetector a $DETECTOR O IDENTIFIER eval JPrintDetector a $DETECTOR O SUMMARY JAcoustics sh $DETECTOR_ID source JAcousticsToolkit sh CHECK_EXIT_CODE typeset A EMITTERS get_tripods $WORKDIR tripod txt EMITTERS get_transmitters $WORKDIR transmitter txt EMITTERS for EMITTER in
Definition: JCanberra.sh:46
int debug
debug level