27   static const char* 
const first_t = 
"first";
 
   44 int main(
int argc, 
char **argv)
 
   49   typedef JAbstractHistogram<Double_t> JHistogram_t;
 
   61     JParser<> zap(
"Auxiliary program to histogram bin-by-bin deviations of a set of 1D histograms.");
 
   63     zap[
'f'] = 
make_field(inputFile,  
"<input file>:<object name>");
 
   64     zap[
'o'] = 
make_field(
outputFile, 
"ROOT file with histogram (possibly I/O, option -r)")       = 
"variance.root";
 
   65     zap[
'r'] = 
make_field(reuse,      
"reuse histogram from existing output file");
 
   67     zap[
'F'] = 
make_field(formula,    
"ROOT TFormula (may contain method names of object)")       = 
"0";
 
   68     zap[
'R'] = 
make_field(reverse,    
"reverse sign");
 
   73   catch(
const exception &error) {
 
   74     FATAL(error.what() << endl);
 
   85       listOfHistograms.push_back(h1);
 
   89   if (listOfHistograms.empty()) {
 
   90     FATAL(
"No histograms." << endl);
 
   94     FATAL(
"Empty formula." << endl);
 
  104     h0 = 
new TH1D(
"h0", NULL,
 
  105                   X.getNumberOfBins(), X.getLowerLimit(), X.getUpperLimit());
 
  109   TH1* 
h1 = listOfHistograms[0];
 
  111   if (listOfHistograms.size() == 1) {
 
  115     DEBUG(
h1->GetName() << 
' ' << formula << 
' ' << y1 << endl);
 
  117     for (Int_t i = 1; i <= 
h1->GetNbinsX(); ++i) {
 
  119       const Double_t yp = 
h1->GetBinContent(i); 
 
  121       h0->Fill(reverse ? y1 - yp : yp - y1);
 
  126     if (formula == first_t) {
 
  128       for (Int_t i = 1; i <= 
h1->GetNbinsX(); ++i) {
 
  130         const double y1 = 
h1->GetBinContent(i);
 
  134           const Double_t yp = (*p)->GetBinContent(i);
 
  136           h0->Fill(reverse ? y1 - yp : yp - y1);
 
  144       for (Int_t i = 1; i <= 
h1->GetNbinsX(); ++i) {
 
  148           const Double_t yp = (*p)->GetBinContent(i);
 
  150           h0->Fill(reverse ? y1 - yp : yp - y1);
 
Utility class to parse command line options. 
 
TObject * getObject(const JRootObjectID &id)
Get TObject. 
 
then for HISTOGRAM in h0 h1
 
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object 
 
Double_t getResult(const TString &text, TObject *object=NULL)
Get result of given textual formula. 
 
General purpose messaging. 
 
Utility class to parse command line options. 
 
#define DEBUG(A)
Message macros. 
 
int main(int argc, char *argv[])