35int main(
int argc, 
char **argv)
 
   52    JParser<> zap(
"Auxiliary program to scale ROOT histograms."\
 
   53                  "\nNote that the formula may contain method names of the specified object.");
 
   55    zap[
'f'] = 
make_field(inputFile,  
"<input file>:<object name>");
 
   57    zap[
'F'] = 
make_field(formula,    
"ROOT TFormula (may contain method names of object)");
 
   58    zap[
'x'] = 
make_field(X,          
"abscissa range (only for Integral)") = JRange_t();
 
   59    zap[
'y'] = 
make_field(Y,          
"abscissa range (only for Integral)") = JRange_t();
 
   60    zap[
'O'] = 
make_field(option)     = 
"", 
"nosw2", 
"width", 
"nosw2 width";
 
   65  catch(
const exception &error) {
 
   66    FATAL(error.what() << endl);
 
   72  for (vector<JRootObjectID>::const_iterator input = inputFile.begin(); input != inputFile.end(); ++input) {
 
   74    DEBUG(
"Input: " << *input << endl);
 
   76    TDirectory* dir = getDirectory(*input);
 
   79      ERROR(
"File: " << input->getFullFilename() << 
" not opened." << endl);
 
   83    const TRegexp regexp(input->getObjectName());
 
   85    TIter iter(dir->GetListOfKeys());
 
   87    for (TKey* key; (key = (TKey*) iter.Next()) != NULL; ) {
 
   89      const TString tag(key->GetName());
 
   91      DEBUG(
"Key: " << tag << 
" match = " << tag.Contains(regexp) << endl);
 
   95      if (tag.Contains(regexp) && isTObject(key)) {
 
   97        TObject* 
object = key->ReadObj();
 
   99        TH1*          h1 = 
dynamic_cast<TH1*
>         (object);
 
  100        TGraphErrors* ge = 
dynamic_cast<TGraphErrors*
>(object);
 
  101        TGraph*       
g1 = 
dynamic_cast<TGraph*
>      (object);
 
  107          const double factor = getResult(formula, 
object);
 
  111            if (X != JRange_t()) { h1->GetXaxis()->SetRangeUser(X.getLowerLimit(), X.getUpperLimit()); }
 
  112            if (Y != JRange_t()) { h1->GetYaxis()->SetRangeUser(Y.getLowerLimit(), Y.getUpperLimit()); }
 
  114            h1->Scale(factor, option.c_str());
 
  116          } 
else if (ge != NULL) { 
 
  118            for (Int_t i = 0; i != ge->GetN(); ++i) {
 
  119              ge->GetY() [i] *= factor;
 
  120              ge->GetEY()[i] *= factor;
 
  123          } 
else if (
g1 != NULL) { 
 
  125            for (Int_t i = 0; i != 
g1->GetN(); ++i) {
 
  126              g1->GetY() [i] *= factor;
 
  130          out.WriteTObject(
object);