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

Auxiliary program to print ROOT fit results. More...

#include <string>
#include <iomanip>
#include <iostream>
#include <vector>
#include <set>
#include "TROOT.h"
#include "TFile.h"
#include "TH1.h"
#include "TGraph.h"
#include "TGraph2D.h"
#include "TF1.h"
#include "JTools/JRange.hh"
#include "JGizmo/JRootObjectID.hh"
#include "JGizmo/JGizmoToolkit.hh"
#include "Jeep/JPrint.hh"
#include "Jeep/JParser.hh"
#include "Jeep/JMessage.hh"

Go to the source code of this file.

Functions

std::istream & operator>> (std::istream &in, TString &object)
 Read formula from input stream. More...
 
std::ostream & operator<< (std::ostream &out, const TString &object)
 Write formula to output stream. More...
 
int main (int argc, char **argv)
 

Detailed Description

Auxiliary program to print ROOT fit results.

Author
mdejong

Definition in file JPrintFit.cc.

Function Documentation

std::istream& operator>> ( std::istream &  in,
TString &  object 
)
inline

Read formula from input stream.

Parameters
ininput stream
objectformula
Returns
input stream

Definition at line 30 of file JPrintFit.cc.

31 {
32  return object.ReadLine(in);
33 }
then fatal The output file must have the wildcard in the e g root fi 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:48
std::ostream& operator<< ( std::ostream &  out,
const TString &  object 
)
inline

Write formula to output stream.

Parameters
outoutput stream
objectformula
Returns
output stream

Definition at line 42 of file JPrintFit.cc.

43 {
44  return out << object.Data();
45 }
int main ( int  argc,
char **  argv 
)

Definition at line 53 of file JPrintFit.cc.

54 {
55  using namespace std;
56  using namespace JPP;
57 
58  JRootObjectID inputFile;
59  string fcn;
61  set<string> parameter;
62  TString formula;
63  int debug;
64 
65  try {
66 
67  JParser<> zap("Auxiliary program to print ROOT fit results.");
68 
69  zap['f'] = make_field(inputFile, "histogram, e.g: <file name>:<object name>");
70  zap['='] = make_field(fcn, "function name") = ".*";
71  zap['x'] = make_field(x, "(x)+, evaluate function at given point") = JPARSER::initialised();
72  zap['@'] = make_field(parameter, "(parameter)+, e.g. \"p0\"") = JPARSER::initialised();
73  zap['F'] = make_field(formula, "ROOT TFormula (may contain method names of TF1)") = JPARSER::initialised();
74  zap['d'] = make_field(debug) = 1;
75 
76  zap(argc, argv);
77  }
78  catch(const exception &error) {
79  FATAL(error.what() << endl);
80  }
81 
82 
83  TObject* p = getObject(inputFile);
84 
85  if (p == NULL) {
86  FATAL("No object at " << inputFile << endl);
87  }
88 
89  TF1* f1 = NULL;
90 
91  if (f1 == NULL && dynamic_cast<TF1*> (p) != NULL) { f1 = dynamic_cast<TF1*>(p); }
92  if (f1 == NULL && dynamic_cast<TH1*> (p) != NULL) { f1 = getFunction(dynamic_cast<TH1*> (p), fcn.c_str()); };
93  if (f1 == NULL && dynamic_cast<TGraph*> (p) != NULL) { f1 = getFunction(dynamic_cast<TGraph*> (p), fcn.c_str()); };
94  if (f1 == NULL && dynamic_cast<TGraph2D*>(p) != NULL) { f1 = getFunction(dynamic_cast<TGraph2D*>(p), fcn.c_str()); };
95 
96  if (f1 == NULL) {
97  FATAL("No function at " << inputFile << " " << fcn << endl);
98  };
99 
100  for (int i = 0; i != f1->GetNpar(); ++i) {
101  if (parameter.count(f1->GetParName(i)) != 0) {
102  cout << FIXED(20,10) << f1->GetParameter(i) << ' '
103  << FIXED(20,10) << f1->GetParError (i) << endl;
104  }
105  }
106 
107  if (!x.empty()) {
108  cout << f1->EvalPar(x.data()) << endl;
109  }
110 
111  if (formula != "") {
112  cout << SCIENTIFIC(15,5) << getResult(formula, f1) << endl;
113  }
114 }
Utility class to parse command line options.
Definition: JParser.hh:1711
TObject * getObject(const JRootObjectID &id)
Get first TObject with given identifier.
TF1 * getFunction(TH1 *h1, const char *const fcn)
Get function.
Definition: JRoot.hh:19
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
Definition: JParser.hh:84
Auxiliary data structure for floating point format specification.
Definition: JManip.hh:446
const JPolynome f1(1.0, 2.0, 3.0)
Function.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition: JParser.hh:2158
Double_t getResult(const TString &text, TObject *object=NULL)
Get result of given textual formula.
#define FATAL(A)
Definition: JMessage.hh:67
Auxiliary data structure for floating point format specification.
Definition: JManip.hh:486
int debug
debug level