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

Auxiliary program to print quantiles from ROOT histograms or graphs. More...

#include <string>
#include <iostream>
#include <iomanip>
#include <sstream>
#include <cmath>
#include "TROOT.h"
#include "TFile.h"
#include "TObject.h"
#include "TKey.h"
#include "TH1.h"
#include "TGraph.h"
#include "TRegexp.h"
#include "JTools/JQuantile.hh"
#include "JGizmo/JRootObjectID.hh"
#include "JGizmo/JGizmoToolkit.hh"
#include "Jeep/JParser.hh"
#include "Jeep/JMessage.hh"
#include "Jeep/JPrint.hh"

Go to the source code of this file.

Functions

int main (int argc, char **argv)
 

Detailed Description

Auxiliary program to print quantiles from ROOT histograms or graphs.

The option -f corresponds to <file name>:<object name>.

Author
mdejong

Definition in file JPrintQuantiles.cc.

Function Documentation

int main ( int  argc,
char **  argv 
)

Definition at line 33 of file JPrintQuantiles.cc.

34 {
35  using namespace std;
36  using namespace JPP;
37 
38  vector<JRootObjectID> inputFile;
40  int debug;
41 
42  try {
43 
44  JParser<> zap("Auxiliary program to print quantiles from ROOT histograms.");
45 
46  zap['f'] = make_field(inputFile, "<input file>:<object name>");
47  zap['Q'] = make_field(Q, "quantiles");
48  zap['d'] = make_field(debug) = 0;
49 
50  zap(argc, argv);
51  }
52  catch(const exception &error) {
53  FATAL(error.what() << endl);
54  }
55 
56 
57  for (vector<JRootObjectID>::const_iterator input = inputFile.begin(); input != inputFile.end(); ++input) {
58 
59  DEBUG("Input: " << *input << endl);
60 
61  TDirectory* dir = getDirectory(*input);
62 
63  if (dir == NULL) {
64  ERROR("File: " << input->getFullFilename() << " not opened." << endl);
65  continue;
66  }
67 
68  const TRegexp regexp(input->getObjectName());
69 
70  TIter iter(dir->GetListOfKeys());
71 
72  for (TKey* key; (key = (TKey*) iter.Next()) != NULL; ) {
73 
74  const TString tag(key->GetName());
75 
76  DEBUG("Key: " << tag << " match = " << tag.Contains(regexp) << endl);
77 
78  // option match
79 
80  if (tag.Contains(regexp) && isTObject(key)) {
81 
82  TObject* object = key->ReadObj();
83 
84  vector<Double_t> X(Q.size(), 0.0);
85 
86  try {
87 
88  TH1& h1 = dynamic_cast<TH1&>(*object);
89 
90  h1.GetQuantiles(Q.size(), X.data(), Q.data());
91  }
92  catch(const exception&) {}
93 
94  try {
95 
96  TGraph& g1 = dynamic_cast<TGraph&>(*object);
97 
98  JQuantile Q1("", true);
99 
100  for (Int_t i = 0; i != g1.GetN(); ++i) {
101  Q1.put(g1.GetX()[i], g1.GetY()[i]);
102  }
103 
104  for (size_t i = 0; i != Q.size(); ++i) {
105  X[i] = Q1.getQuantile(Q[i]);
106  }
107  }
108  catch(const exception&) {}
109 
110  for (vector<Double_t>::const_iterator i = X.begin(); i != X.end(); ++i) {
111  cout << ' ' << *i;
112  }
113 
114  cout << endl;
115  }
116  }
117  }
118 }
Utility class to parse command line options.
Definition: JParser.hh:1514
Q(UTCMax_s-UTCMin_s)-livetime_s
Definition: JRoot.hh:19
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Definition: JParser.hh:1989
#define ERROR(A)
Definition: JMessage.hh:66
#define FATAL(A)
Definition: JMessage.hh:67
bool isTObject(const TKey *key)
Check if given key corresponds to a TObject.
no fit printf nominal n $STRING awk v X
TDirectory * getDirectory(const JRootObjectID &id)
Get TDirectory pointer.
int debug
debug level
#define DEBUG(A)
Message macros.
Definition: JMessage.hh:62
Double_t g1(const Double_t x)
Function.
Definition: JQuantiles.cc:25