#include "TPDF.h"
#include "TGraphAsymmErrors.h"
#include "TLegend.h"
#include "TMath.h"
#include "TMatrixD.h"
#include "TGraph.h"
#include "TGraph2D.h"
#include "TMultiGraph.h"
#include "TH1.h"
#include "TStyle.h"
#include "TCanvas.h"
#include "TH1F.h"
#include "TH1D.h"
#include "TH2.h"
#include "TLine.h"
#include "THStack.h"
#include "TPrincipal.h"
#include "TProfile.h"
#include "TProfile2D.h"
#include "TH2F.h"
#include "TH2D.h"
#include "TH3.h"
#include "THashList.h"
#include "TH3F.h"
#include "TH3D.h"
#include "TROOT.h"
#include "TFile.h"
#include "TLatex.h"
#include "TRandom3.h"

#include "QFramework/TQHistogramUtils.h"
#include "QFramework/TQStringUtils.h"
#include "QFramework/TQTaggable.h"
#include "QFramework/TQCounter.h"
#include "QFramework/TQIterator.h"
#include "QFramework/TQUtils.h"

// #define _DEBUG_
#include "QFramework/TQLibrary.h"

#include <iostream>
#include <fstream>
#include <sstream>
#include <cstdlib>
#include <limits>

#include <stdio.h>
#include <stdarg.h>

#include "Math/Math.h"
#include "Math/QuantFuncMathCore.h"
#include "Math/SpecFuncMathCore.h"

#if ROOT_VERSION_CODE < ROOT_VERSION(6,23,0)
//somewhat complex but apparently standard conform hack to access TAxis::IsAlphanumeric. This is only needed until we regularly use a newer root version (6.10 at latest) where this has finally been changed to be a public method...
template <typename TAxisTag>
struct TAxisHackResult {
  typedef typename TAxisTag::type type;
  static type ptr;
};

template <typename TAxisTag>
typename TAxisHackResult<TAxisTag>::type TAxisHackResult<TAxisTag>::ptr;

template<typename TAxisTag, typename TAxisTag::type p>
struct TAxisRob : TAxisHackResult<TAxisTag> {
  struct TAxisFiller {
    TAxisFiller() {TAxisHackResult<TAxisTag>::ptr = p;}
  };
  static TAxisFiller taxisfiller_obj;
};

template<typename TAxisTag, typename TAxisTag::type p>
typename TAxisRob<TAxisTag, p>::TAxisFiller TAxisRob<TAxisTag, p>::taxisfiller_obj;

//now expose some members of TAxis that we need to access
struct TAxisIsAlphanumeric { typedef Bool_t(TAxis::*type)(); };
template class TAxisRob<TAxisIsAlphanumeric, &TAxis::IsAlphanumeric>;
bool TQHistogramUtils::isAlphanumeric(const TAxis* ax){
  return ((*const_cast<TAxis*>(ax)).*TAxisHackResult<TAxisIsAlphanumeric>::ptr)();
}
#else
bool TQHistogramUtils::isAlphanumeric(const TAxis* ax){
  return ax->IsAlphanumeric();
}
#endif

//struct TAxisLabels {typedef void(TAxis::*type)(); };
//template class TAxisRob<TAxisLabels, &TAxis::fLabels>;

////////////////////////////////////////////////////////////////////////////////////////////////
//
// TQHistogramUtils:
//
// TQHistogramUtils is a namespace providing a set of static utility methods related to the
// creation, inspection, and manipulation of histograms.
//
////////////////////////////////////////////////////////////////////////////////////////////////


//__________________________________________________________________________________|___________

bool TQHistogramUtils::isEmpty(const TH1 * hist, double threshold, double mean) {
  // return true if the histogram is empty, false otherwise
  for(int i=1; i<=hist->GetNbinsX(); ++i){
    for(int j=1; j<=hist->GetNbinsY(); ++j){
      for(int k=1; k<=hist->GetNbinsZ(); ++k){
        if(fabs(hist->GetBinContent(i,j,k) - mean) > threshold && fabs(hist->GetBinContent(i,j,k)) > threshold) return false;
      }
    }
  }
  return true;
}

//__________________________________________________________________________________|___________

TString TQHistogramUtils::getGraphDefinition(const TNamed * graph) {
  // Returns a string representing the definition of the histogram
  // following a syntax compatible with
  // TQHistogramUtils::createGraph(...). An empty string is returned
  // in case an invalid histogram is passed.

  if (!graph) {
    return "";
  }

  TString title(graph->GetTitle());

  for(size_t idx=0; idx<3; idx++){
    const TAxis* axis = TQHistogramUtils::getAxis(graph,idx);
    if(!axis) break;
    // embed axis title in graph title
    TString axtitle = axis->GetTitle();
    if (!axtitle.IsNull()) {
      TQStringUtils::append(title, axtitle, ";");
    }
  }

  //  the full graph definition
  TString def = TString::Format("%s(\"%s\", \"%s\")", graph->IsA()->GetName(), graph->GetName(),graph->GetTitle());
  return def;
}


//__________________________________________________________________________________|___________

TString TQHistogramUtils::getHistogramDefinition(const TH1 * histo) {
  // Returns a string representing the definition of the histogram following a syntax
  // compatible with TQHistogramUtils::createHistogram(...) and being similar to the
  // constructor of the corresponding histogram class. An empty string is returned
  // in case an invalid histogram is passed.

  // invalid histogram?
  if (!histo) {
    return "";
  }

  // will become the full histogram definition
  TString def = TString::Format("%s(\"%s\", ", histo->IsA()->GetName(), histo->GetName());

  // will become full title of histogram (including axis titles)
  TString titleDef = histo->GetTitle();

  // will become binning definition
  TString binDef;

  // iterating over dimensions of histogram
  int dim = getDimension(histo);

  for (int i = 1; i <= abs(dim); ++i) {
    const TAxis * axis = NULL;
    if (i == 1) {
      axis = histo->GetXaxis();
    } else if (i == 2) {
      axis = histo->GetYaxis();
    } else if (i == 3) {
      axis = histo->GetZaxis();
    }
    if (!axis) {
      // should never happen
      break;
    }

    // embed axis title in histogram title
    TString title(axis->GetTitle());
    if (!title.IsNull()) {
      TQStringUtils::append(titleDef, title, ";");
    }

    // compile binning definition string
    TQStringUtils::append(binDef, getBinningDefinition(axis), ", ");

    const TProfile* p=dynamic_cast<const TProfile*>(histo);
    if(p){
      TQStringUtils::append(binDef, TString::Format("%g, %g",p->GetYmin(),p->GetYmax()));
    }
  }

  // now combine all parts to one definition string
  def.Append(TString::Format("\"%s\", ", titleDef.Data()));
  def.Append(binDef + ")");

  return def;
}

//__________________________________________________________________________________|___________

TString TQHistogramUtils::getHistogramContents(const TH1 * histo) {
  // convert the histogram contents to a string
  std::stringstream ss;
  ss << histo->GetEntries() << "@{";
  for(size_t i=0; i<(size_t)(histo->GetNbinsX())+2; ++i){
    if(i!=0) ss << ",";
    if(histo->GetNbinsY()>1){
      ss << "{";
      for(size_t j=0; j<(size_t)(histo->GetNbinsY())+2; ++j){
        if(j!=0) ss << ",";
        if(histo->GetNbinsZ()>1){
          for(size_t k=0; k<(size_t)(histo->GetNbinsZ())+2; ++k){
            if(k!=0) ss << ",";
            ss << histo->GetBinContent(i,j,k) << "+-"<<histo->GetBinError(i,j,k);
          }
          ss << "}";
        } else {
          ss << histo->GetBinContent(i,j) << "+-"<<histo->GetBinError(i,j);
        }
      }
      ss << "}";
    } else {
      ss << histo->GetBinContent(i) << "+-"<<histo->GetBinError(i);
    }
  }
  ss << "}";
  return ss.str();
}

//__________________________________________________________________________________|___________

TH1* TQHistogramUtils::convertFromText(TString input){
  // convert a string to a histogram
  TString def;
  TQStringUtils::readUpToText(input,def,"<<");
  TString contents;
  TQStringUtils::removeLeading(input,"< ");
  TH1* hist = TQHistogramUtils::createHistogram(def);
  if(!TQStringUtils::readUpToText(input,contents,"<<")){
    if(!TQHistogramUtils::setHistogramContents(hist,input)){
      ERROR("unable to read histogram contents!");
    }
  } else {
    TQStringUtils::removeLeading(input,"< ");
    if(!TQHistogramUtils::setHistogramContents(hist,contents)){
      ERROR("unable to read histogram contents!");
    }
    TQTaggable tags(input);
    TQHistogramUtils::applyStyle(hist,&tags);
  }
  return hist;
}

//__________________________________________________________________________________|___________

TString TQHistogramUtils::convertToText(const TH1 * histo, int detailLevel) {
  // convert histogram to a string
  TString histstr = TQHistogramUtils::getHistogramDefinition(histo);
  if(detailLevel > 0){
    histstr += " << ";
    histstr += TQHistogramUtils::getHistogramContents(histo);
  }
  if(detailLevel > 1){
    histstr += " << ";
    TQTaggable tags;
    TQHistogramUtils::extractStyle(histo,&tags);
    histstr += tags.exportTagsAsString();
  }
  return histstr;
}

//__________________________________________________________________________________|___________

namespace {
  inline char* next(std::stringstream& ss, int nchars){
    ss.unget();
    char* text = (char*)malloc((nchars+1)*sizeof(char));
    ss.read(text,nchars);
    text[nchars]='\0';
    return text;
  }
}

namespace {
  bool checknan(std::stringstream& ss){
    ss.clear();
    char c = (char)ss.get();
    if(ss.good()){
      if(c == 'n' || c == 'a'){
        char c2 = (char)ss.get();
        if(ss.good() && (c == 'n' && c2 == 'a')){
          char c3 = (char)ss.get();
          ss.clear();
          if(c3 == 'n') return true;
        } else if(ss.good() && c == 'a' && c2 == 'n'){
          ss.clear();
          return true;
        }
      }
    }
    ss.clear();
    return false;
  }
}

bool TQHistogramUtils::setHistogramContents(TH1 * histo, const TString& contents) {
  // set the histogram contents from a string
  if(contents.IsNull()) return false;
  size_t headlen = contents.First("{");
  if(headlen > unsigned(contents.Length())){
    ERRORfile("missing initial '{'!");
  }
  size_t bodylen = TQStringUtils::findParenthesisMatch(contents,headlen,"{","}");
  if(bodylen > unsigned(contents.Length())){
    TString errmsg(contents(0,headlen+5));
    ERRORfile("missing terminating character '}' matching '%s' !",errmsg.Data());
  }

  if(unsigned(contents.First("=")) < bodylen){
    // this is a labeled histogram
    int nentries = atoi(contents(0,headlen).Data());
    TQTaggable values(contents(headlen+1,bodylen-headlen-1));
    if(!TQHistogramUtils::hasBinLabels(histo)){
      TQIterator itr(values.getListOfTagNames(),true);
      int i = 0;
      while(itr.hasNext()){
        TObject* key = itr.readNext();
        histo->GetXaxis()->SetBinLabel(++i,key->GetName());
      }
    }
    TQIterator itr(values.getListOfTagNames(),true);
    while(itr.hasNext()){
      TObject* key = itr.readNext();
      int bin = histo->GetXaxis()->FindBin(key->GetName());
      histo->SetBinContent(bin,values.getTagDoubleDefault(key->GetName(),0));
    }
    histo->SetEntries(nentries);
  } else {
    // this is an unlabeled histogram
    std::stringstream ss(contents.Data());
    int nentries;
    ss >> nentries;
    while(ss.good() && ss.peek() != '{'){
      ss.get();
    }
    if(!ss.good() || ss.get() != '{'){
      ERRORfunc("ill-formatted string '%s'",TString(contents(0,10)).Data());
      return false;
    }
    double val, err;
    for(size_t i=0; i<(size_t)(histo->GetNbinsX())+2 && ss.good(); ++i){
      if(histo->GetNbinsY() > 1){
        if(ss.get() != '{'){
          ERRORfile("missing opening brace at '%s'!",next(ss,10));
          return false;
        }
        for(size_t j=0; j<(size_t)(histo->GetNbinsY())+2 && ss.good(); ++j){
          if(histo->GetNbinsZ() > 1){
            if(ss.get() != '{'){
              ERRORfile("missing opening brace at '%s'!",next(ss,10));
              return false;
            }
            for(size_t k=0; k<(size_t)(histo->GetNbinsZ())+2 && ss.good(); ++k){
              ss >> val;
              if(!ss.good()){
                if(::checknan(ss)){
                  val = std::numeric_limits<double>::quiet_NaN();
                } else {
                  ERRORfile("stream ended after reading '%g' at '%d'/'%d'/'%d'",val,i,j,k);
                  return false;
                }
              }
              if(ss.get() != '+'){
                ERRORfile("missing '+' at '%s'!",next(ss,10));
                return false;
              }
              if(ss.get() != '-'){
                ERRORfile("missing '-' at '%s'!",next(ss,10));
                return false;
              }
              ss >> err;
              if(!ss.good()){
                if(::checknan(ss)){
                  err = std::numeric_limits<double>::quiet_NaN();
                } else {
                  ERRORfile("stream ended after reading '%g' at '%d'/'%d'/'%d'",err,i,j,k);
                  return false;
                }
              }
              if(ss.peek() != ',' && ss.peek() != '}'){
                ERRORfile("missing terminating character at '%s'",next(ss,10));
                return false;
              } else ss.get();
              histo->SetBinContent(i,j,k,val);
              histo->SetBinError(i,j,k,err);
            }
            if(ss.peek() != ',' && ss.peek() != '}'){
              ERRORfile("missing terminating character at '%s'",next(ss,10));
              return false;
            } else ss.get();
          } else {
            ss >> val;
            if(!ss.good()){
              if(::checknan(ss)){
                val = std::numeric_limits<double>::quiet_NaN();
              } else {
                ERRORfile("stream ended after reading '%g' at '%d'/'%d'",val,i,j);
                return false;
              }
            }
            if(ss.get() != '+'){
              ERRORfile("missing '+' at '%s'!",next(ss,10));
              return false;
            }
            if(ss.get() != '-'){
              ERRORfile("missing '-' at '%s'!",next(ss,10));
              return false;
            }
            ss >> err;
            if(!ss.good()){
              if(::checknan(ss)){
                err = std::numeric_limits<double>::quiet_NaN();
              } else {
                ERRORfile("stream ended after reading '%g' at '%d'/'%d'",err,i,j);
                return false;
              }
            }
            if(ss.peek() != ',' && ss.peek() != '}'){
              ERRORfile("missing terminating character at '%s'",next(ss,10));
              return false;
            } else ss.get();
            histo->SetBinContent(i,j,val);
            histo->SetBinError(i,j,err);
          }
        }
        if(ss.peek() != ',' && ss.peek() != '}'){
          ERRORfile("missing terminating character at '%s'",next(ss,10));
          return false;
        } else ss.get();
      } else {
        ss >> val;
        if(!ss.good()){
          if(::checknan(ss)){
            val = std::numeric_limits<double>::quiet_NaN();
          } else {
            ERRORfile("stream ended after reading '%g' at '%d'",val,i);
            return false;
          }
        }
        if(ss.get() != '+'){
          ERRORfile("missing '+' at '%s'!",next(ss,10));
          return false;
        }
        if(ss.get() != '-'){
          ERRORfile("missing '-' at '%s'!",next(ss,10));
          return false;
        }
        ss >> err;
        if(!ss.good()){
          if(::checknan(ss)){
            err = std::numeric_limits<double>::quiet_NaN();
          } else {
            ERRORfile("stream ended after reading '%g' at '%d'",err,i);
            return false;
          }
        }
        if(ss.peek() != ',' && ss.peek() != '}'){
          ERRORfile("missing terminating character at '%s'",next(ss,10));
          return false;
        } else ss.get();
        histo->SetBinContent(i,val);
        histo->SetBinError(i,err);
      }
    }
    histo->SetEntries(nentries);
  }
  return true;
}


//__________________________________________________________________________________|___________

bool TQHistogramUtils::hasUniformBinning(const TH1 * hist) {
	// return true if all axes of a histogram have uniform binning, false otherwise
  const int n = TQHistogramUtils::getDimension(hist);
  if(n==1){
    return hasUniformBinning(hist->GetXaxis());
  } else if(n==2){
    return
      hasUniformBinning(hist->GetXaxis()) &&
      hasUniformBinning(hist->GetYaxis());
  } else if(n==3){
    return
      hasUniformBinning(hist->GetXaxis()) &&
      hasUniformBinning(hist->GetYaxis()) &&
      hasUniformBinning(hist->GetZaxis());
  }
  return false;
}

//__________________________________________________________________________________|___________

bool TQHistogramUtils::hasUniformBinning(const TAxis * axis) {
	// return true if an axis has uniform binning, false otherwise
  bool uniform = true;
  double binWidth = -1.;
  int n = axis->GetNbins();
  for (int i = 1; i < n + 1; i++) {
    // uniform binning?
    double l = axis->GetBinLowEdge(i);
    double u = axis->GetBinUpEdge(i);
    double w = u - l;
    if (binWidth < 0.) {
      binWidth = w;
    } else if (!TMath::AreEqualRel(binWidth, w, 1E-06)) {
      // bin widths not equal => non-uniform binning
      uniform = false;
    }
  }
  return uniform;
}

//__________________________________________________________________________________|___________

TString TQHistogramUtils::getBinningDefinition(const TAxis * axis) {
  // Returns a string representing a definition of the binning on axis <axis>. For
  // uniformly binned axes the format is "<n>, <left>, <right>" where <n> refers to
  // the number of bins, <left> to the lower edge of the first bin and <right> to
  // the upper edge of the last bin. For non-uniformly binned axis the format is
  // "{<e1>, ..., <en>, <eX>}" where <ei> refers to the lower bin edge of bin i and
  // <eX> to the upper bin edge of the last bin. The format is compatible with
  // TQHistogramUtils::createHistogram(...) An empty string is returned in case an
  // invalid histogram is passed.

  // invalid axis
  if (!axis) {
    return "";
  }

  const int n = axis->GetNbins();

  if (!TQHistogramUtils::hasUniformBinning(axis)) {
    // non-uniform binning => list bin edges
    TString edges;

    for (int i = 1; i <= n + 1; i++) {
      // lower edge of current bin
      double l = axis->GetBinLowEdge(i);
      // compile comma-separated list of bin edges
      TQStringUtils::append(edges, TString::Format("%g", l), ", ");
    }

    edges.Prepend("{");
    edges.Append("}");
    return edges;
  } else {
    // uniform binning
    return TString::Format("%d, %g, %g", n, axis->GetBinLowEdge(1), axis->GetBinUpEdge(n));
  }
}

//__________________________________________________________________________________|___________

// return a variation that is symmetric to the var histogram relative to nom
TH1* TQHistogramUtils::invertShift(TH1* var, TH1* nom){
  // inv = 2*nom - var
  TH1* inv = TQHistogramUtils::copyHistogram(var);
  TQHistogramUtils::scaleHistogram(inv,-1);
  TQHistogramUtils::addHistogram(inv,nom);
  TQHistogramUtils::addHistogram(inv,nom);
  return inv;
}

// return a variation that is symmetric to the var histogram relative to nom
// ignore nominal histogram's stat. err.
TH1* TQHistogramUtils::invertShiftWithoutError(TH1* var, TH1* nom){
  // inv = 2*nom - var
  TH1* inv = TQHistogramUtils::copyHistogram(var);
  TQHistogramUtils::scaleHistogram(inv,-1);
  // ignore nominal errors
  TQHistogramUtils::addHistogramWithoutError(inv,nom);
  TQHistogramUtils::addHistogramWithoutError(inv,nom);
  return inv;
}


//__________________________________________________________________________________|___________

TH1* TQHistogramUtils::symmetrizeFromTwo(const TH1* var1, const TH1* var2, TH1* nom){
  TH1D* tmp1 = (TH1D* )var1->Clone();
  tmp1->Divide(nom);
  //tmp1->Sumw2();

  TH1D* tmp2 = (TH1D* )var2->Clone();
  tmp2->Divide(nom);
  //tmp2->Sumw2();

  TH1D* unit = (TH1D* )nom->Clone();
  //unit->Sumw2();
  for (int bin=1; bin<= unit->GetNbinsX(); bin++){
    unit->SetBinContent(bin,1);
    unit->SetBinError(bin,0.0);
  }
  tmp1->Add(unit,-1);
  tmp2->Add(unit,-1);
  tmp1->Add(tmp2,-1);
  tmp1->Scale(0.5);
  tmp1->Add(unit);

  tmp1->Multiply(nom);

  for (int bin=1; bin<= unit->GetNbinsX(); bin++){
    tmp1->SetBinError(bin,nom->GetBinError(bin));
  }
  return tmp1;

}


//__________________________________________________________________________________|___________

TH1 * TQHistogramUtils::createHistogram(const TString& definition, bool printErrMsg) {
  // Creates a new instance of a histogram (TH1F, TH1D, ...) from a definition string
  TString errMsg;
  TH1 * histo = createHistogram(definition, errMsg);
  if (!histo && printErrMsg) {
    std::cout << TQStringUtils::makeBoldRed(errMsg.Prepend("TQHistogramUtils::createHistogram(...): ")).Data() << std::endl;
  }
  return histo;
}

//__________________________________________________________________________________|___________

TH1 * TQHistogramUtils::createHistogram(TQTaggable* values, const TString& prefix) {
  // Creates a new instance of a histogram (TH1F, TH1D, ...) from a definition string
  std::map<TString,double> vals;
  TQIterator itr(values->getListOfKeys(prefix+".*"),true);
  while(itr.hasNext()){
    TObject* key = itr.readNext();
    TString name(key->GetName());
    TQStringUtils::removeLeadingText(name,prefix+".");
    vals[name]=values->getTagDoubleDefault(key->GetName(),0.);
  }
  if(vals.size() == 0) return NULL;
  TH1* histo = new TH1F(prefix,prefix,vals.size(),0,vals.size());
  histo->SetDirectory(NULL);
  size_t i=1;
  for(auto it:vals){
    histo->GetXaxis()->SetBinLabel(i,it.first);
    histo->SetBinContent(i,it.second);
    i++;
  }
  return histo;
}

//__________________________________________________________________________________|___________

TNamed * TQHistogramUtils::createGraph(const TString& definition, bool printErrMsg) {
  // Creates a new instance of a histogram (TH1F, TH1D, ...) from a definition string
  TString errMsg;
  TNamed * graph = createGraph(definition, errMsg);
  if (!graph && printErrMsg) {
    std::cout << TQStringUtils::makeBoldRed(errMsg.Prepend("TQHistogramUtils::createGraph(...): ")).Data() << std::endl;
  }
  return graph;
}

//__________________________________________________________________________________|___________

namespace {
  double getMedianDistance(const std::vector<double>& values, int precision){
    std::vector<double> distances;
    double lastval;
    bool first = true;
    for(auto val:values){
      if(first){
        first = false;
        lastval = val;
        continue;
      }
      if(fabs(val-lastval) < pow(10,-precision)) continue;
      distances.push_back(fabs(lastval-val));
      lastval = val;
    }
    std::sort(distances.begin(),distances.end());
    return distances[distances.size()/2];
  }
}

//__________________________________________________________________________________|___________

int TQHistogramUtils::fillHoles2DAverage(TH2* hist, double threshold, bool allowUnderflowOverflow, int dx, int dy, int minSources){
  std::map<int,double> fixes;
  for(int i=1; i<=hist->GetNbinsX(); ++i){
    for(int j=1; j<=hist->GetNbinsY(); ++j){
      int bin = hist->GetBin(i,j);
      if(hist->GetBinContent(bin) == 0){
        double sum = 0;
        int count = 0;
        for(int k = i-dx; k<=i+dx; ++k){
          for(int l = j-dy; l<=j+dy; ++l){
            if(k==i && l==j) continue;
            if( ( k>=!allowUnderflowOverflow && k<=hist->GetNbinsX()+allowUnderflowOverflow) && (l>=!allowUnderflowOverflow && l<=hist->GetNbinsY()+allowUnderflowOverflow ) ){
              const double val = hist->GetBinContent(k,l);
              if(fabs(val) > fabs(threshold)){
                sum+=val;
                count++;
              }
            }
          }
        }
        if(count >= minSources){
          fixes[bin] = sum/count;
        }
      }
    }
  }
  for(auto fix:fixes){
    hist->SetBinContent(fix.first,fix.second);
  }
  return fixes.size();;
}

int TQHistogramUtils::fillHoles2DMax(TH2* hist, double threshold, bool allowUnderflowOverflow, int dx, int dy, int minSources){
  std::map<int,double> fixes;
  for(int i=1; i<=hist->GetNbinsX(); ++i){
    for(int j=1; j<=hist->GetNbinsY(); ++j){
      int bin = hist->GetBin(i,j);
      if(hist->GetBinContent(bin) == 0){
        double m = 0;
        int count = 0;
        for(int k = i-dx; k<=i+dx; ++k){
          for(int l = j-dy; l<=j+dy; ++l){
            if(k==i && l==j) continue;
            if( ( k>=!allowUnderflowOverflow && k<=hist->GetNbinsX()+allowUnderflowOverflow) && (l>=!allowUnderflowOverflow && l<=hist->GetNbinsY()+allowUnderflowOverflow ) ){
              const double val = hist->GetBinContent(k,l);
              if(fabs(val) > fabs(threshold)){
                m=std::max(m,val);
                count++;
              }
            }
          }
        }
        if(count >= minSources){
          fixes[bin] = m;
        }
      }
    }
  }
  for(auto fix:fixes){
    hist->SetBinContent(fix.first,fix.second);
  }
  return fixes.size();;
}

//__________________________________________________________________________________|___________

int TQHistogramUtils::countHoles(TH2* hist){
  int remainingHoles = 0;
  for(int i=1; i<=hist->GetNbinsX(); ++i){
    for(int j=1; j<=hist->GetNbinsY(); ++j){
      int bin = hist->GetBin(i,j);
      if(hist->GetBinContent(bin) == 0){
        remainingHoles++;
      }
    }
  }
  return remainingHoles;
}


//__________________________________________________________________________________|___________

TH2* TQHistogramUtils::createHistogram(const TGraph2D* g, int nbinsx, int nbinsy){
  // convert a TGraph2D into a TH2 with a given precision for rounding the bin centers
  size_t npoints = g->GetN();
  std::vector<double> xvals(g->GetX(),g->GetX()+npoints);
  std::vector<double> yvals(g->GetY(),g->GetY()+npoints);
  std::sort(xvals.begin(),xvals.end());
  std::sort(yvals.begin(),yvals.end());
  double xmin = xvals[0];
  double xmax = xvals[xvals.size()-1];
  double ymin = yvals[0];
  double ymax = yvals[yvals.size()-1];
  double dx = (xmax-xmin)/(nbinsx-1);
  double dy = (ymax-ymin)/(nbinsy-1);
  TH2* hist = new TH2F(g->GetName(),g->GetTitle(),nbinsx,xmin-.5*dx,xmax+.5*dx,nbinsy,ymin-.5*dy,ymax+.5*dy);
  hist->SetDirectory(NULL);
  for(int i=0; i<nbinsx+2; ++i){
    double x = hist->GetXaxis()->GetBinCenter(i);
    for(int j=0; j<nbinsy+2; ++j){
      double y = hist->GetYaxis()->GetBinCenter(j);
      double val = const_cast<TGraph2D*>(g)->Interpolate(x,y);
      hist->SetBinContent(i,j,val);
    }
  }
  return hist;
}

//__________________________________________________________________________________|___________

TH2* TQHistogramUtils::createHistogram(const TGraph2D* g, int precision){
  // convert a TGraph2D into a TH2 with a given precision for rounding the bin centers
  size_t npoints = g->GetN();
  std::vector<double> xvals(g->GetX(),g->GetX()+npoints);
  std::vector<double> yvals(g->GetY(),g->GetY()+npoints);
  std::sort(xvals.begin(),xvals.end());
  std::sort(yvals.begin(),yvals.end());
  double mdx = getMedianDistance(xvals,precision);
  double mdy = getMedianDistance(yvals,precision);
  double xmin = TQUtils::roundAuto(xvals[0],             precision)-.5*mdx;
  double xmax = TQUtils::roundAuto(xvals[xvals.size()-1],precision)+.5*mdx;
  double ymin = TQUtils::roundAuto(yvals[0],             precision)-.5*mdy;
  double ymax = TQUtils::roundAuto(yvals[yvals.size()-1],precision)+.5*mdy;
  int nbinsx = (xmax - xmin)/mdx;
  int nbinsy = (ymax - ymin)/mdy;
  TH2* hist = new TH2F(g->GetName(),g->GetTitle(),nbinsx,xmin,xmax,nbinsy,ymin,ymax);
  hist->SetDirectory(NULL);
  for(size_t i=0; i<npoints; ++i){
    double x = g->GetX()[i];
    double y = g->GetY()[i];
    double z = g->GetZ()[i];
    int bin = hist->FindBin(x,y);
    if(hist->GetBinContent(bin) > 0){
      ERRORfunc("attempting to double-fill bin %d at %g/%g from values %g/%g while making graph from histogram!",
                (int)i,
                hist->GetXaxis()->GetBinCenter(hist->GetXaxis()->FindBin(x)),
                hist->GetYaxis()->GetBinCenter(hist->GetYaxis()->FindBin(y)),
                x,
                y
                );
    }
    hist->SetBinContent(bin,z);
  }
  return hist;
}

//__________________________________________________________________________________|___________

std::vector<TList*> TQHistogramUtils::getContourList(TH2* hist, const std::vector<double>& thresholds){
  // retrieve the list of contours corresponding to the given contour levels
  bool isBatch = gROOT->IsBatch();
  gROOT->SetBatch(true);
  TCanvas tmp;
  hist->SetContour(thresholds.size(), &thresholds[0]);
  hist->Draw("CONT Z LIST");
  // Needed to force the plotting and retrieve the contours in TGraphs
  tmp.Update();
  std::vector<TList*> retval;
  // retrieve the contours
  TQIterator contItr2(dynamic_cast<TObjArray*>(gROOT->GetListOfSpecials()->FindObject("contours")));
  while(contItr2.hasNext()){
    // contours by level
    TList* contLevel = dynamic_cast<TList*>(contItr2.readNext());
    TList* newList = new TList();
    newList->SetOwner(true);
    TQListUtils::addClones(contLevel,newList);
    retval.push_back(newList);
  }
  hist->SetContour(20);
  gROOT->SetBatch(isBatch);
  return retval;
}


//__________________________________________________________________________________|___________

TNamed * TQHistogramUtils::createGraph(TString definition, TString &errMsg) {
  // Creates a new instance of a graph (TGraph, TGraph2D, ...) from a definition string
  // that uses a simple Class(name,title) syntax.

  // read graph type (e.g. "TGraph", ...)
  TString type;
  TQStringUtils::readBlanksAndNewlines(definition);
  if (TQStringUtils::readToken(definition,type,TQStringUtils::getLetters() + TQStringUtils::getNumerals()) == 0) {
    errMsg = TString::Format("Missing valid graph type, received '%s' from '%s'",type.Data(),definition.Data());
    return NULL;
  }

  // histogram type to create
  bool isTGraph = (type.CompareTo("TGraph") == 0);
  bool isTGraph2D = (type.CompareTo("TGraph2D") == 0);
  bool isTGraphAsymmErrors = (type.CompareTo("TGraphAsymmErrors") == 0);

  if (!isTGraph && !isTGraph2D && !isTGraphAsymmErrors){
    errMsg = TString::Format("Unknown graph type '%s'", type.Data());
    return NULL;
  }

  // read parameter block
  TString parameter;
  TQStringUtils::readBlanksAndNewlines(definition);
  if (TQStringUtils::readBlock(definition, parameter, "()", "''\"\"", false) == 0) {
    errMsg = TString::Format("Missing parameter block '(...)' after '%s'", type.Data());
    return NULL;
  }

  // make sure there is nothing left after the parameter block
  TQStringUtils::readBlanksAndNewlines(definition);
  if (!definition.IsNull()) {
    errMsg = TString::Format("Unrecognized token '%s'", definition.Data());
    return NULL;
  }

  // parse parameter block
  TQTaggable * pars = TQTaggable::parseParameterList(parameter, ",", true, "{}[]()", "''\"\"");
  if (!pars) {
    errMsg = TString::Format("Failed to parse parameters '%s'", parameter.Data());
    return NULL;
  }

  // keep track of parameters read (to find unexpected parameters)
  pars->resetReadFlags();

  // name of histogram
  if (!pars->tagIsOfTypeString("0")) {
    errMsg = "Missing valid graph name";
    delete pars;
    return NULL;
  }
  TString name = pars->getTagStringDefault("0");

  // title of histogram
  if (!pars->tagIsOfTypeString("1")) {
    errMsg = "Missing valid graph title";
    delete pars;
    return NULL;
  }
  TString title = pars->getTagStringDefault("1");

  // now create the graph calling the corresponding constructor
  TNamed * graph = NULL;
  if (isTGraph) {
    graph = new TGraph();
  } else if(isTGraph2D){
    graph = new TGraph2D();
  } else if(isTGraphAsymmErrors){
    graph = new TGraphAsymmErrors();
  }

  graph->SetName(name);
  graph->SetTitle(title);

  delete pars;

  // finally return the histogram
  if(!graph){
    errMsg = "unknown error: graph type is '"+type+"'";
  }
  return graph;
}

//__________________________________________________________________________________|___________

TH1 * TQHistogramUtils::createHistogram(TString definition, TString &errMsg) {
  // Creates a new instance of a histogram (TH1F, TH1D, ...) from a definition string
  // that uses a similar syntax as the constructor of the corresponding histogram
  // class. Currently, TH1F, TH1D, TH2F, TH2D, TH3F, and TH3D are supported.
  //
  // Examples:
  //
  // - a TH1F with 5 bins between 0. and 1.
  //
  // createHistogram("TH1F('histo', 'title', 5, 0, 1)")
  //
  // - similarly, but specifying the bin edges explicitly
  //
  // createHistogram("TH1F('histo', 'title', {0, 0.2, 0.4, 0.6, 0.8, 1})")
  //
  // - a TH2D with 10 times 10 bins between -5 ... 5 and -1 ... 1, respectively
  //
  // createHistogram("TH2F('histo', 'title', 10, -5., 5., 10, -1., 1.)")
  //
  // - a TH2D with 3 times 3 bins between -5 ... 5 and variable bins between
  // -1 ... 1, respectively
  //
  // createHistogram("TH2F('histo', 'title', 3, -5., 5., {-1., -0.8, 0.1, 1.})")
  //

  // read histogram type (e.g. "TH1F", ...)
  TString type;
  TQStringUtils::readBlanksAndNewlines(definition);
  if (TQStringUtils::readToken(definition,type,TQStringUtils::getLetters() + TQStringUtils::getNumerals()) == 0) {
    errMsg = TString::Format("Missing valid histogram type, received '%s' from '%s'",type.Data(),definition.Data());
    return NULL;
  }

  // histogram type to create
  bool isTH1F = (type.CompareTo("TH1F") == 0);
  bool isTH1D = (type.CompareTo("TH1D") == 0);
  bool isTH2F = (type.CompareTo("TH2F") == 0);
  bool isTH2D = (type.CompareTo("TH2D") == 0);
  bool isTH3F = (type.CompareTo("TH3F") == 0);
  bool isTH3D = (type.CompareTo("TH3D") == 0);
  bool isTProfile = (type.CompareTo("TProfile") == 0);
  bool isTProfile2D = (type.CompareTo("TProfile2D") == 0);

  if (!isTH1F && !isTH1D && !isTH2F && !isTH2D&& !isTH3F && !isTH3D && !isTProfile && !isTProfile2D) {
    errMsg = TString::Format("Unknown histogram type '%s'", type.Data());
    return NULL;
  }

  // read parameter block
  TString parameter;
  TQStringUtils::readBlanksAndNewlines(definition);
  if (TQStringUtils::readBlock(definition, parameter, "()", "''\"\"", false) == 0) {
    errMsg = TString::Format("Missing parameter block '(...)' after '%s'", type.Data());
    return NULL;
  }

  // make sure there is nothing left after the parameter block
  TQStringUtils::readBlanksAndNewlines(definition);
  if (!definition.IsNull()) {
    errMsg = TString::Format("Unrecognized token '%s'", definition.Data());
    return NULL;
  }

  // parse parameter block
  TQTaggable * pars = TQTaggable::parseParameterList(parameter, ",", true, "{}[]()", "''\"\"");
  if (!pars) {
    errMsg = TString::Format("Failed to parse parameters '%s'", parameter.Data());
    return NULL;
  }

  // keep track of parameters read (to find unexpected parameters)
  pars->resetReadFlags();

  // name of histogram
  if (!pars->tagIsOfTypeString("0")) {
    errMsg = "Missing valid histogram name";
    delete pars;
    return NULL;
  }
  TString name = pars->getTagStringDefault("0");

  // title of histogram
  if (!pars->tagIsOfTypeString("1")) {
    errMsg = "Missing valid histogram title";
    delete pars;
    return NULL;
  }
  TString title = pars->getTagStringDefault("1");

  // the number of bins on axes
  int nBinsX = 0;
  int nBinsY = 0;
  int nBinsZ = 0;

  // left and right bound on axes
  double minX = 0.;
  double maxX = 0.;
  double minY = 0.;
  double maxY = 0.;
  double minZ = 0.;
  double maxZ = 0.;

  // parameter index for binning definitions
  int pIndex = 2;

  // vector of bin edges
  std::vector<double> edgesX;
  std::vector<double> edgesY;
  std::vector<double> edgesZ;

  // parse binning of X axis (for 1D, 2D, and 3D histograms)
  if (!extractBinning(pars, pIndex, nBinsX, minX, maxX, edgesX, errMsg)) {
    errMsg.Append(" on X axis");
    delete pars;
    return NULL;
  }

  // parse binning of Y axis (for 2D and 3D histograms)
  if ((isTH2F || isTH2D || isTH3F || isTH3D ||isTProfile2D)  && !extractBinning(pars, pIndex, nBinsY, minY, maxY, edgesY, errMsg)) {

    errMsg.Append(" on Y axis");
    delete pars;
    return NULL;
  }
  if (isTProfile && !extractRange(pars, pIndex, minY, maxY, errMsg)) {
    errMsg.Append(" on Y axis");
    delete pars;
    return NULL;
  }

  // parse binning of Z axis (for 3D histograms)
  if ((isTH3F || isTH3D) && !extractBinning(pars, pIndex, nBinsZ, minZ, maxZ, edgesZ, errMsg)) {
    errMsg.Append(" on Z axis");
    delete pars;
    return NULL;
  }

  // unread parameters left?
  if (pars->hasUnreadKeys()) {
    errMsg.Append(TString::Format("Too many parameters for '%s'", type.Data()));
    delete pars;
    return NULL;
  }

  // handle heterogeneous definition of binning on axes of 3-dimensional histograms
  if (isTH3F || isTH3D) {
    if (edgesX.size()==0 && (edgesY.size()>0 || edgesZ.size()>0)) {
      edgesX = getUniformBinEdges(nBinsX, minX, maxX);
    }
    if (edgesY.size()==0 && (edgesX.size()>0 || edgesZ.size()>0)) {
      edgesY = getUniformBinEdges(nBinsY, minY, maxY);
    }
    if (edgesZ.size()==0 && (edgesX.size()>0 || edgesY.size()>0)) {
      edgesZ = getUniformBinEdges(nBinsZ, minZ, maxZ);
    }
  }

  // the current directory might contain a histogram with the same name
  int i = 2;
  TString finalName = name;
  while (gDirectory && gDirectory->FindObject(name.Data())) {
    name = TString::Format("%s_i%d", finalName.Data(), i++);
  }

  // now create the histogram calling the corresponding constructor
  TH1 * histo = NULL;
  if (isTH1F) {
    if (edgesX.size()>0) {
      histo = new TH1F(name.Data(), title.Data(), nBinsX, &(edgesX[0]));
    } else {
      histo = new TH1F(name.Data(), title.Data(), nBinsX, minX, maxX);
    }
  } else if (isTH1D) {
    if (edgesX.size()>0) {
      histo = new TH1D(name.Data(), title.Data(), nBinsX, &(edgesX[0]));
    } else {
      histo = new TH1D(name.Data(), title.Data(), nBinsX, minX, maxX);
    }
  } else if (isTH2F) {
    if (edgesX.size()>0 && edgesY.size()>0) {
      histo = new TH2F(name.Data(), title.Data(), nBinsX, &(edgesX[0]), nBinsY, &(edgesY[0]));
    } else if (edgesX.size()>0 && edgesY.size()==0) {
      histo = new TH2F(name.Data(), title.Data(), nBinsX, &(edgesX[0]), nBinsY, minY, maxY);
    } else if (edgesX.size()==0 && edgesY.size()>0) {
      histo = new TH2F(name.Data(), title.Data(), nBinsX, minX, maxX, nBinsY, &(edgesY[0]));
    } else {
      histo = new TH2F(name.Data(), title.Data(), nBinsX, minX, maxX, nBinsY, minY, maxY);
    }
  } else if (isTH2D) {
    if (edgesX.size()>0 && edgesY.size()>0) {
      histo = new TH2D(name.Data(), title.Data(), nBinsX, &(edgesX[0]), nBinsY, &(edgesY[0]));
    } else if (edgesX.size()>0 && edgesY.size()==0) {
      histo = new TH2D(name.Data(), title.Data(), nBinsX, &(edgesX[0]), nBinsY, minY, maxY);
    } else if (edgesX.size()==0 && edgesY.size()>0) {
      histo = new TH2D(name.Data(), title.Data(), nBinsX, minX, maxX, nBinsY, &(edgesY[0]));
    } else {
      histo = new TH2D(name.Data(), title.Data(), nBinsX, minX, maxX, nBinsY, minY, maxY);
    }
  } else if (isTH3F) {
    if (edgesX.size()==0 && edgesY.size()==0 && edgesZ.size()==0) {
      histo = new TH3F(name.Data(), title.Data(), nBinsX, minX, maxX,
                       nBinsY, minY, maxY, nBinsZ, minZ, maxZ);
    } else {
      histo = new TH3F(name.Data(), title.Data(), nBinsX, &(edgesX[0]),
                       nBinsY, &(edgesY[0]), nBinsZ, &(edgesZ[0]));
    }
  } else if (isTH3D) {
    if (edgesX.size()==0 && edgesY.size()==0 && edgesZ.size()==0) {
      histo = new TH3D(name.Data(), title.Data(), nBinsX, minX, maxX,
                       nBinsY, minY, maxY, nBinsZ, minZ, maxZ);
    } else {
      histo = new TH3D(name.Data(), title.Data(), nBinsX, &(edgesX[0]),
                       nBinsY, &(edgesY[0]), nBinsZ, &(edgesZ[0]));
    }
  } else if (isTProfile) {
    if (edgesX.size()>0) {
      histo = new TProfile(name.Data(), title.Data(), nBinsX, &(edgesX[0]), minY, maxY);
    } else {
      histo = new TProfile(name.Data(), title.Data(), nBinsX, minX, maxX, minY, maxY);
    }

  } else if (isTProfile2D) {
    if (edgesX.size()>0 && edgesY.size()>0) {
      histo = new TProfile2D(name.Data(), title.Data(), nBinsX, &(edgesX[0]), nBinsY, &(edgesY[0]));
    } else if (edgesX.size()>0 && edgesY.size()==0) {
      histo = new TProfile2D(name.Data(), title.Data(), nBinsX, &(edgesX[0]), nBinsY, minY, maxY);
    } else if (edgesX.size()==0 && edgesY.size()>0) {
      histo = new TProfile2D(name.Data(), title.Data(), nBinsX, minX, maxX, nBinsY, &(edgesY[0]));
    } else {
      histo = new TProfile2D(name.Data(), title.Data(), nBinsX, minX, maxX, nBinsY, minY, maxY);
    }
  }

  if (histo) {
    // don't put new histogram into "current directory"
    histo->SetDirectory(NULL);
    // set original (final) name
    histo->SetName(finalName.Data());
    // sum weights
    histo->Sumw2();
  }

  delete pars;

  // finally return the histogram
  if(!histo){
    errMsg = "unknown error: histogram type is '"+type+"'";
  }
  return histo;
}


//__________________________________________________________________________________|___________

std::vector<double> TQHistogramUtils::getUniformBinEdges(int nBins, double min, double max) {
  // Returns a pointer to a vector of doubles listing bin edges of <nBins> bins
  // between <min> and <max>. The resulting vector will have <nBins> + 1 entries
  // (the user is responsible for deleting the returned vector). A null pointer is
  // returned in case <nBins> is smaller than one or <max> is not larger than <min>.

  // create a new vector of doubles
  std::vector<double> edges;

  if (nBins < 1 || max <= min) {
    // invalid input
    return edges;
  }

  // width of one bin
  double width = (max - min) / (double)nBins;

  // set equidistant bin edges
  for (int i = 0; i <= nBins; i++) {
    edges.push_back(min + (double)i * width);
  }

  // return vector
  return edges;
}


//__________________________________________________________________________________|___________

bool TQHistogramUtils::extractBinning(TQTaggable * p, int &index, int &nBins,
                                      double &min, double &max, std::vector<double> &edges, TString &errMsg) {

  // parameter name of number of bins (or array of bin edges)
  TString p_bins = TString::Format("%d", index++);

  // check if parameter represents a list
  int i = 0;
  double edge = 0.;
  while (p->hasTag(p_bins + TString::Format(".%d", i))) {
    if (!p->getTagDouble(p_bins + TString::Format(".%d", i), edge)) {
      errMsg = "Invalid array of bin edges";
      return false;
    }
    if (edges.size() > 0 && edges.back() >= edge) {
      errMsg = "Bin edges need to be in increasing order";
      return false;
    }
    edges.push_back(edge);
    i++;
  }

  if (edges.size()==0) {

    // parameter names of min and max in axis
    TString p_min = TString::Format("%d", index++);
    TString p_max = TString::Format("%d", index++);

    // number of bins of histogram
    if (!p->tagIsOfTypeInteger(p_bins)) {
      errMsg = "Missing valid number of bins";
      return false;
    }

    // lower bound of histogram
    if (!(p->tagIsOfTypeInteger(p_min) || p->tagIsOfTypeDouble(p_min))) {
      errMsg = "Missing valid lower bound";
      return false;
    }

    // upper bound of histogram
    if (!(p->tagIsOfTypeInteger(p_max) || p->tagIsOfTypeDouble(p_max))) {
      errMsg = "Missing valid upper bound";
      return false;
    }

    // now really read parameter
    nBins = p->getTagIntegerDefault(p_bins);
    min = p->getTagDoubleDefault(p_min);
    max = p->getTagDoubleDefault(p_max);

    // check range on axis is not empty
    if (min >= max) {
      errMsg = "Empty range";
      return false;
    }

  } else {
    nBins = edges.size() - 1;
  }

  // check number of bins is correct
  if (nBins <= 0) {
    errMsg = "Number of bins needs to be larger than zero";
    return false;
  }

  return true;
}

//__________________________________________________________________________________|___________

bool TQHistogramUtils::extractRange(TQTaggable * p, int &index,
                                      double &min, double &max, TString &errMsg) {


  // parameter names of min and max in axis
  TString p_min = TString::Format("%d", index++);
  TString p_max = TString::Format("%d", index++);


  // lower bound of histogram
  if (!(p->tagIsOfTypeInteger(p_min) || p->tagIsOfTypeDouble(p_min))) {
    errMsg = "Missing valid lower bound";
    return false;
  }

  // upper bound of histogram
  if (!(p->tagIsOfTypeInteger(p_max) || p->tagIsOfTypeDouble(p_max))) {
    errMsg = "Missing valid upper bound";
    return false;
  }

  // now really read parameter
  min = p->getTagDoubleDefault(p_min);
  max = p->getTagDoubleDefault(p_max);

  // check range on axis is not empty
  if (min >= max) {
    errMsg = "Empty range";
    return false;
  }

  return true;
}

//__________________________________________________________________________________|___________

TString TQHistogramUtils::getDetailsAsString(const TGraph * g, int option) {
  // retrieve details of a TGraph as a string
  TString retval = TString::Format("%d points",g->GetN());
  if(option > 0){
    TQTaggable tags;
    TQHistogramUtils::extractStyle(g,&tags);
    retval.Append(", ");
    retval.Append(tags.exportTagsAsString());
  }
  return retval;
}

//__________________________________________________________________________________|___________

TString TQHistogramUtils::getDetailsAsString(const TGraph2D * g, int/*option*/) {
	// retrieve details of a TGraph2D as a string
  return TString::Format("%d points",g->GetN());
}

//__________________________________________________________________________________|___________

TString TQHistogramUtils::getDetailsAsString(const TH1 * histo, int option) {
  // Returns a string summarizing properties of the histogram passed as argument
  // <histo>. The optional parameter <option> allows to control the degree of detail
  // of the resulting string (<option> is 1 by default):
  //
  // - <option> == 0 prints the number of bins on each axis
  // - <option> == 1 additionally prints the sum of weights an the corresponding
  // uncertainty (from root of sum of squares of weights)
  // - <option> == 2 additionally prints the ranges and binning of axes
  // - <option> == 3 additionally prints the units on axes
  // - <option> == 4 additionally prints the plotting style


  // check dimensionality of histogram
  int dim = TQHistogramUtils::getDimension(histo);

  // dim == 0 means invalid pointer
  if (dim == 0) {
    return TString("Invalid histogram");
  }

  // get details of X axis
  TString details = getDetailsAsString(histo->GetXaxis(), option);

  // in case histogram has more than one dimension ...
  if (dim > 1) {
    // ... add details of second dimension
    details.Append(TString(" X ") + getDetailsAsString(((TH2*)histo)->GetYaxis(), option));
  }
  // in case histogram has more than two dimension ...
  if (dim > 2) {
    // ... add details of third dimension
    details.Append(TString(" X ") + getDetailsAsString(((TH3*)histo)->GetZaxis(), option));
  }

  // "bins" label is added by getDetailsAsString(...) on TAxis for option >= 2
  if (option < 2) {
    details.Append(" bin(s)");
  }

  // append the sum of weights and the corresponding uncertainty if option > 0
  if (option > 0) {
    double err = 0.;
    double sum = TQHistogramUtils::getIntegralAndError(histo, err);
    details.Append(TString::Format(", S(w) = %g +/- %g, N=%d", sum, err,(int)(histo->GetEntries())));
  }

  if(option > 3){
    details.Append(TString::Format(" - linecolor=%d, fillcolor=%d, fillstyle=%d, markercolor=%d, markerstyle=%d, markersize=%.1f",histo->GetLineColor(),histo->GetFillColor(),histo->GetFillStyle(),histo->GetMarkerColor(),histo->GetMarkerStyle(),histo->GetMarkerSize()));
  }

  // return the string
  return details;
}


//__________________________________________________________________________________|___________

TString TQHistogramUtils::getDetailsAsString(const TAxis * axis, int option) {
  // Returns a string summarizing properties of the axis passed as argument
  // <axis>. The optional parameter <option> allows to control the degree of detail
  // of the resulting string (<option> is 1 by default):
  //
  // - <option> == 1 prints the number of bins on axis
  // - <option> == 2 additionally prints the ranges and binning of axis
  // - <option> == 3 additionally prints the units on axis

  if (!axis) {
    // invalid axis
    return TString("");
  } else if (option < 2) {
    // just the number of bins on axis
    TString retval = TString::Format("%d", axis->GetNbins());
    if(axis->GetLabels()){
      retval.Append("l");
    }
    return retval;
  } else {
    // an optional additional "s" if more than one bin
    TString s;
    if (axis->GetNbins() > 1) {
      s = "s";
    }

    // add unit of quantity (extracted from label as "... [unit]") if option > 3
    TString unit;
    if (option > 2) {
      unit = TQStringUtils::getUnit(axis->GetTitle());
      if (!unit.IsNull()) {
        unit.Prepend(" ");
      }
    }
    if(axis->GetLabels()){
      unit.Append(", labeled");
    }

    // compile the final string
    return TString::Format("(%g ... %g%s, %d bin%s)", axis->GetBinLowEdge(1),
                           axis->GetBinUpEdge(axis->GetNbins()), unit.Data(), axis->GetNbins(), s.Data());
  }
}


//__________________________________________________________________________________|___________

int TQHistogramUtils::getNDips(TH1 * histo) {
  // Counts and returns the number of dips (bins without entries surrounded by bins
  // with non-zero entries) in input histogram <histo>. -1 is returned in case an
  // invalid input histogram is provided. Please note: currently, only one and two
  // dimensional histograms are supported.

  // will be the number of dips
  int nDips = 0;

  // histogram properties
  int dim = getDimension(histo);

  if (dim == 1) {
    // scan histogram for empty bin between non-empty bins
    int nX = histo->GetXaxis()->GetNbins();
    for (int iX = 0; iX <= nX - 1; iX++) {
      if ((histo->GetBinContent(iX) > 0. || histo->GetBinError(iX) > 0.) &&
          (histo->GetBinContent(iX + 1) == 0. && histo->GetBinError(iX + 1) == 0.) &&
          (histo->GetBinContent(iX + 2) > 0. || histo->GetBinError(iX + 2) > 0.)) {
        nDips++;
      }
    }
  } else if (dim == 2) {
    // scan histogram for empty bin surrounded by non-empty bins
    int nX = histo->GetNbinsX();
    int nY = histo->GetNbinsY();
    for (int iX = 0; iX <= nX - 1; iX++) {
      for (int iY = 0; iY <= nY - 1; iY++) {
        if ((histo->GetBinContent(iX, iY) > 0. || histo->GetBinError(iX, iY) > 0.) &&
            (histo->GetBinContent(iX, iY + 1) > 0. || histo->GetBinError(iX, iY + 1) > 0.) &&
            (histo->GetBinContent(iX, iY + 2) > 0. || histo->GetBinError(iX, iY + 2) > 0.) &&
            (histo->GetBinContent(iX + 1, iY) > 0. || histo->GetBinError(iX + 1, iY) > 0.) &&
            (histo->GetBinContent(iX + 1, iY + 1) == 0. && histo->GetBinError(iX + 1, iY + 1) == 0.) &&
            (histo->GetBinContent(iX + 1, iY + 2) > 0. || histo->GetBinError(iX + 1, iY + 2) > 0.) &&
            (histo->GetBinContent(iX + 2, iY) > 0. || histo->GetBinError(iX + 2, iY) > 0.) &&
            (histo->GetBinContent(iX + 2, iY + 1) > 0. || histo->GetBinError(iX + 2, iY + 1) > 0.) &&
            (histo->GetBinContent(iX + 2, iY + 2) > 0. || histo->GetBinError(iX + 2, iY + 2) > 0.)) {
          nDips++;
        }
      }
    }
  } else {
    nDips = -1;
  }

  return nDips;
}


//__________________________________________________________________________________|___________

bool TQHistogramUtils::getMaxArea2D(const TH2 * histo, double frac, int &maxX, int &maxY,
                                    int &maxX_low, int &maxX_high, int &maxY_low, int &maxY_high) {
  // Scans the 2D input histogram <histo> for the maximum bin as well as the area
  // around the maximum bin where the bin content exceeds <frac> times the maximum
  // and returns true in case of success or false otherwise. The coordinates of the
  // maximum bin are stored in <maxX> and <maxY> while the span of the maximum area
  // is stored in <maxX_low>, <maxX_high>, <maxY_low>, and <maxY_high>.

  // stop if input histogram is invalid or not a 2D histogram
  if (getDimension(histo) != 2) {
    return false;
  }

  // the bin with maximum bin content
  int iBinX, iBinY, iBinZ;
  int iMaxBin = histo->GetMaximumBin();
  histo->GetBinXYZ(iMaxBin, iBinX, iBinY, iBinZ);

  // the maximum bin content
  double max = histo->GetBinContent(iBinX, iBinY);

  // boundaries of the area exceeding a certain threshold
  // (here, the starting point is the maximum bin)
  int iBinX_low = iBinX;
  int iBinX_high = iBinX;
  int iBinY_low = iBinY;
  int iBinY_high = iBinY;

  // find the area exceeding a certain threshold by starting from
  // the maximum bin and going into each direction up to the bin
  // where the bin contents drops below the threshold
  for (int i = iBinX; i <= histo->GetNbinsX(); i++)
    if (histo->GetBinContent(i, iBinY) > frac * max)
      iBinX_high = i;
  for (int i = iBinX; i > 0; i--)
    if (histo->GetBinContent(i, iBinY) > frac * max)
      iBinX_low = i;
  for (int i = iBinY; i <= histo->GetNbinsY(); i++)
    if (histo->GetBinContent(iBinX, i) > frac * max)
      iBinY_high = i;
  for (int i = iBinY; i > 0; i--)
    if (histo->GetBinContent(iBinX, i) > frac * max)
      iBinY_low = i;

  maxX = iBinX;
  maxY = iBinY;
  maxX_high = iBinX_high;
  maxX_low = iBinX_low;
  maxY_high = iBinY_high;
  maxY_low = iBinY_low;

  return true;
}


//__________________________________________________________________________________|___________

std::vector<double> TQHistogramUtils::getBinLowEdges(const TH1* histo, const std::vector<int>& binBorders){
  // create an array of low edges of a histogram
  return TQHistogramUtils::getBinLowEdges(histo->GetXaxis(),binBorders);
}
//__________________________________________________________________________________|___________

std::vector<double> TQHistogramUtils::getBinLowEdges(const TAxis* axis, const std::vector<int>& binBorders){
  // create an array of low edges of an axis
  std::vector<double> lowEdges;

  std::vector<int> correctedBinBorders;
  if (binBorders.size() > 0) {
    if (binBorders[0] == 0) { // binBorders cannot start with underflow bin (0th bin)
      // WARN("In TQHistogramUtils::getBinLowEdges(): bin borders cannot start with underflow (0th) bin, ignore the first entry!");
      correctedBinBorders = std::vector<int>(binBorders.begin() + 1, binBorders.end());
    } else {
      correctedBinBorders = binBorders;
    }
  }

  const size_t nBins = correctedBinBorders.size()+1;

  /* set the low-edges of rebinned histogram */
  for (size_t i = 0; i < nBins + 1; ++i) {
    if (i == 0)
      /* the left most bin */
      lowEdges.push_back(axis->GetBinLowEdge(1));
    else if (i == nBins)
      /* the right most bin */
      lowEdges.push_back(axis->GetBinLowEdge(axis->GetNbins() + 1));
    else
      /* bins in-between */
      lowEdges.push_back(axis->GetBinLowEdge(correctedBinBorders[i - 1]));
  }
  // std::cout << "In TQHistogramUtils::getBinLowEdges()..." << std::endl;
  // for(size_t i = 0; i < lowEdges.size(); i++) {
  //   std::cout << "bin border = " << binBorders[i] << ", lowEdge =  " << lowEdges[i] << std::endl;
  // }

  return lowEdges;
}

//__________________________________________________________________________________|___________

std::vector<int> TQHistogramUtils::getBinBorders(const TAxis* ax, const std::vector<double>& lowEdges){
  // create the array of bin borders
  std::vector<int> binBorders;

  for (size_t i = 1; i < lowEdges.size() - 1; ++i) {
    binBorders.push_back(ax->FindBin(lowEdges[i]));
  }
  return binBorders;
}

//__________________________________________________________________________________|___________

std::vector<int> TQHistogramUtils::getBinBorders(const TH1* h, const std::vector<double>& lowEdges){
  // create the array of bin borders
  return getBinBorders(h->GetXaxis(),lowEdges);
}

//__________________________________________________________________________________|___________

TH1 * TQHistogramUtils::getRebinned(const TH1 * histo, const std::vector<int>& binBorders, bool doRemap, bool keepOverFlowUnderFlowSeparate) {
  std::vector<double> lowEdges = TQHistogramUtils::getBinLowEdges(histo,binBorders);
  return TQHistogramUtils::getRebinned(histo, binBorders, lowEdges, doRemap, keepOverFlowUnderFlowSeparate);
}

//__________________________________________________________________________________|___________

TH1 * TQHistogramUtils::getRebinned(const TH1 * histo, const std::vector<double>& lowEdges, bool doRemap, bool keepOverFlowUnderFlowSeparate) {
  std::vector<int> binBorders = TQHistogramUtils::getBinBorders(histo,lowEdges);
  return TQHistogramUtils::getRebinned(histo, binBorders, lowEdges, doRemap, keepOverFlowUnderFlowSeparate);
}

//__________________________________________________________________________________|___________

TH1 * TQHistogramUtils::getRebinned(const TH1 * histo, const std::vector<int>& binBorders, const std::vector<double>& lowEdges, bool doRemap, bool keepOverFlowUnderFlowSeparate) {

  /* stop if input histogram or bin border array is invalid */
  if (!histo || getDimension(histo) != 1)
    return 0;

  std::vector<int> correctedBinBorders;
  if (binBorders.size() > 0) {
    if (binBorders[0] == 0) { // binBorders cannot start with underflow bin (0th bin)
      // WARN("In TQHistogramUtils::getRebinned(): bin borders cannot start with underflow (0th) bin, ignore the first entry!");
      correctedBinBorders = std::vector<int>(binBorders.begin() + 1, binBorders.end());
    } else {
      correctedBinBorders = binBorders;
    }
  }

  /* the number of bins after rebinning */
  const int nBins = correctedBinBorders.size() + 1;

  TH1 * newHisto = 0;
  if(doRemap){
    /* create the remapped histogram */
    if (histo->InheritsFrom(TH1F::Class()))
      newHisto = new TH1F(histo->GetName(), histo->GetTitle(),nBins, 0., 1.);
    else if (histo->InheritsFrom(TH1D::Class()))
      newHisto = new TH1D(histo->GetName(), histo->GetTitle(),nBins, 0., 1.);

    if(newHisto){
      /* set title of x axis */
      TString label = TQStringUtils::getWithoutUnit(histo->GetXaxis()->GetTitle());
      label.Prepend("Remapped ");
      newHisto->GetXaxis()->SetTitle(label.Data());
    }
  } else {

    if (histo->InheritsFrom(TH1F::Class())) {
      newHisto = new TH1F(histo->GetName(), histo->GetTitle(), nBins, &(lowEdges[0]));
  }
    else if (histo->InheritsFrom(TH1D::Class()))
      newHisto = new TH1D(histo->GetName(), histo->GetTitle(), nBins, &(lowEdges[0]));

    if(newHisto){
      newHisto->GetXaxis()->SetTitle(histo->GetXaxis()->GetTitle());
    }
  }

  if (newHisto) {
    newHisto->GetYaxis()->SetTitle(histo->GetYaxis()->GetTitle());

    newHisto->Sumw2();

    /* make the histogram memory resident */
    newHisto->SetDirectory(histo->GetDirectory());

    /* style parameter */
    copyStyle(newHisto, histo);

    int overflowUnderflowFills = 0;
    if (keepOverFlowUnderFlowSeparate) overflowUnderflowFills = 2;

    /* set the histograms bin content and error */
    for (int i = 0; i < nBins + overflowUnderflowFills; i++) {

      int lowerBin = 0;
      int upperBin = histo->GetNbinsX() + 1;

      if (i == 0) {
        lowerBin = 0; // underflow
        upperBin = correctedBinBorders[i] - 1; // merge into visible range
        if (keepOverFlowUnderFlowSeparate) upperBin = 0; // only underflow
      }
      if (i > 0 && i != (nBins + overflowUnderflowFills - 1)) {
        lowerBin = correctedBinBorders[i - 1];
        upperBin = correctedBinBorders[i] - 1;
        if (keepOverFlowUnderFlowSeparate) {
          lowerBin = correctedBinBorders[i - 2]; // lacking one bin behind because underflow was filled first
          upperBin = correctedBinBorders[i - 1] - 1;
        }
      }
      if (i == (nBins + overflowUnderflowFills - 1)) { // overflow
        if (!keepOverFlowUnderFlowSeparate) {
          lowerBin = correctedBinBorders[i - 1]; // merge overflow into visible range
        } else {
          lowerBin = histo->GetNbinsX() + 1; // only overflow in case it's kept separate
        }
        upperBin = histo->GetNbinsX() + 1;
      }

      // special settings needed if overflow/underflow are kept separate
      if (keepOverFlowUnderFlowSeparate) {
        if (i == 1) { // first visible bin
          lowerBin = 1;
          upperBin = correctedBinBorders[i - 1] - 1;
        }
        if (i == (nBins + overflowUnderflowFills - 2)) { // second to last visible bin
          lowerBin = correctedBinBorders[i - 2];
          upperBin = histo->GetNbinsX();
        }
      }


      /* set bin content and error */
      int filledBin = i + 1;
      if (keepOverFlowUnderFlowSeparate) filledBin -= 1; // lacking one bin behind because underflow was filled first
      double binError = 0.;
      // std::cout << "Bin = " << filledBin << ", Integral(low=" << lowerBin <<", up=" << upperBin << ") = " << histo->Integral(lowerBin, upperBin) << std::endl;
      newHisto->SetBinContent(filledBin ,histo->IntegralAndError(lowerBin, upperBin, binError));
      newHisto->SetBinError(filledBin , binError);
    }
    // std::cout << "Original histogram: " << std::endl;
    // for (size_t i = 0; i < histo->GetNbinsX()+2; i++) {
    //   std::cout << "Bin = " << i << ": " << "content = " <<  histo->GetBinContent(i) << std::endl;
    // }

    if(!doRemap){
      if (keepOverFlowUnderFlowSeparate) {
        /* set bin content and error of under- and overflow bins */
        newHisto->SetBinContent(0, histo->GetBinContent(0));
        newHisto->SetBinError (0, histo->GetBinError(0));
        newHisto->SetBinContent(nBins + 1,histo->GetBinContent(histo->GetNbinsX() + 1));
        newHisto->SetBinError (nBins + 1,histo->GetBinError(histo->GetNbinsX() + 1));
      }
    }

    newHisto->SetEntries(histo->GetEntries());
  }

  /* return remapped histogram */
  return newHisto;
}

//__________________________________________________________________________________|___________

TH1 * TQHistogramUtils::getRemapped(TH1 * histo, const std::vector<double>& newBinBorders) {
  // return a remapped version of a histogram with the given bin borders  
  if(newBinBorders.size() != (size_t)(histo->GetNbinsX()+1)){
    throw std::runtime_error(TString::Format("Cannot remap axis if new bin boundaries don't match number of bins in histogram: %d vs. %d",int(newBinBorders.size()),histo->GetNbinsX()+1).Data());
  }
  TH1* newHisto = new TH1F(histo->GetName(),histo->GetTitle(),newBinBorders.size()-1,&newBinBorders[0]);
  newHisto->SetDirectory(0);
  for(int i=0; i<histo->GetNbinsX()+2; ++i){
    newHisto->SetBinContent(i,histo->GetBinContent(i));
    newHisto->SetBinError(i,histo->GetBinError(i));    
  }
  newHisto->SetEntries(histo->GetEntries());
  return newHisto;
}


//__________________________________________________________________________________|___________

TH2 * TQHistogramUtils::getRemapped2D(TH2 * histo, const std::vector<int>& binBorders, bool remapX) {
	// return a remapped version of a 2D histogram with the given bin borders
  if (!histo || getDimension(histo) != 2)
    return 0;

  /* the number of bins after rebinning and the number of "slices" */
  int nSlices = (remapX ? histo->GetNbinsY() : histo->GetNbinsX()) + 2;
  if (binBorders.size() % nSlices != 0) {
    return NULL;
  }
  int nBins = binBorders.size() / nSlices + 1;

  /* create the remapped histogram */
  TH2 * remappedHisto = 0;
  if (histo->InheritsFrom(TH2F::Class())) {
    if (remapX) {
      remappedHisto = new TH2F(histo->GetName(), histo->GetTitle(),
                               nBins, 0., 1., nSlices - 2, histo->GetYaxis()->GetBinLowEdge(1),
                               histo->GetYaxis()->GetBinUpEdge(histo->GetNbinsY()));
    } else {
      remappedHisto = new TH2F(histo->GetName(), histo->GetTitle(),
                               nSlices - 2, histo->GetXaxis()->GetBinLowEdge(1),
                               histo->GetXaxis()->GetBinUpEdge(histo->GetNbinsX()), nBins, 0., 1.);
    }
  } else if (histo->InheritsFrom(TH2D::Class())) {
    if (remapX) {
      remappedHisto = new TH2D(histo->GetName(), histo->GetTitle(),
                               nBins, 0., 1., nSlices - 2, histo->GetYaxis()->GetBinLowEdge(1),
                               histo->GetYaxis()->GetBinUpEdge(histo->GetNbinsY()));
    } else {
      remappedHisto = new TH2D(histo->GetName(), histo->GetTitle(),
                               nSlices - 2, histo->GetXaxis()->GetBinLowEdge(1),
                               histo->GetXaxis()->GetBinUpEdge(histo->GetNbinsX()), nBins, 0., 1.);
    }
  }

  if (remappedHisto) {

    remappedHisto->Sumw2();

    /* make the histogram memory resident */
    remappedHisto->SetDirectory(histo->GetDirectory());

    /* set title of remapped axis */
    if (remapX) {
      TString label = TQStringUtils::getWithoutUnit(histo->GetXaxis()->GetTitle());
      label.Prepend("Remapped ");
      remappedHisto->GetXaxis()->SetTitle(label.Data());
      remappedHisto->GetYaxis()->SetTitle(histo->GetYaxis()->GetTitle());
    } else {
      TString label = TQStringUtils::getWithoutUnit(histo->GetYaxis()->GetTitle());
      label.Prepend("Remapped ");
      remappedHisto->GetYaxis()->SetTitle(label.Data());
      remappedHisto->GetXaxis()->SetTitle(histo->GetXaxis()->GetTitle());
    }

    /* style parameter */
    copyStyle(remappedHisto, histo);

    /* set the histograms bin content and error */
    for (int j = 0; j < nSlices; j++) {
      for (int i = 0; i < nBins; i++) {

        int lowerBin = 0;
        int upperBin = remapX ? histo->GetNbinsX() + 1 : histo->GetNbinsY() + 1;

        if (i > 0)
          lowerBin = binBorders[j * (nBins - 1) + i - 1] + 1;
        if (i != (nBins - 1))
          upperBin = binBorders[j * (nBins - 1) + i];

        /* set bin content and error */
        double binError = 0.;
        if (remapX) {
          remappedHisto->SetBinContent(i + 1, j,
                                       histo->IntegralAndError(lowerBin, upperBin, j, j, binError));
          remappedHisto->SetBinError(i + 1, j, binError);
        } else {
          remappedHisto->SetBinContent(j, i + 1,
                                       histo->IntegralAndError(j, j, lowerBin, upperBin, binError));
          remappedHisto->SetBinError(j, i + 1, binError);
        }
      }
    }
    remappedHisto->SetEntries(histo->GetEntries());
  }

  /* return remapped histogram */
  return remappedHisto;
}


//__________________________________________________________________________________|___________

TH1 * TQHistogramUtils::getRebinnedFlat(TH1 * histo, int nBins) {
	// obtain a version of a 1D histogram remapped to a flat distribution
  if (getDimension(histo) != 1)
    return 0;

  // get the optimal bin borders
  std::vector<int> borders = getBinBordersFlat(histo, nBins, false);

  // rebin the histogram
  TH1 * rebinnedHisto = getRebinned(histo, borders, false);

  // return the histogram
  return rebinnedHisto;
}


//__________________________________________________________________________________|___________

TH1 * TQHistogramUtils::getRemappedFlat(TH1 * histo, int nBins) {
	// obtain a version of a 1D histogram rebinned to a flat distribution
  if (getDimension(histo) != 1)
    return 0;

  // get the optimal bin borders
  std::vector<int> borders = getBinBordersFlat(histo, nBins, true);

  // rebin the histogram
  TH1 * rebinnedHisto = getRebinned(histo, borders, true);

  // return the histogram
  return rebinnedHisto;
}


//__________________________________________________________________________________|___________

TH2 * TQHistogramUtils::getRemappedFlat2D(TH2 * histo, int nBins, bool remapX) {
	// obtain a version of a 2D histogram remapped to a flat distribution
  if (getDimension(histo) != 2)
    return 0;

  // get the optimal bin borders
  std::vector<int> borders = getBinBordersFlat2D(histo, nBins, remapX, true);

  // rebin the histogram
  TH2 * remappedHisto = getRemapped2D(histo, borders, remapX);

  // return the histogram
  return remappedHisto;
}


//__________________________________________________________________________________|___________

TH1 * TQHistogramUtils::cutAndZoomHistogram(TH1 * histo,
                                            int cutBinLowX, int cutBinHighX, int cutBinLowY, int cutBinHighY,
                                            int zoomBinLowX, int zoomBinHighX, int zoomBinLowY, int zoomBinHighY) {
	// cut and zoom a histogram to the given bin boundaries in X, Y and Z
  int dim = TQHistogramUtils::getDimension(histo);
  if (dim == 0) {
    return NULL;
  }

  if (cutBinLowX > 1 && zoomBinLowX >= 0) {
    zoomBinLowX -= cutBinLowX - 1;
    if (zoomBinLowX <= 0) {
      return NULL;
    }
  }
  if (cutBinLowX > 1 && zoomBinHighX >= 0) {
    zoomBinHighX -= cutBinLowX - 1;
    if (zoomBinHighX <= 0) {
      return NULL;
    }
  }
  if (cutBinLowY > 1 && zoomBinLowY >= 0) {
    zoomBinLowY -= cutBinLowY - 1;
    if (zoomBinLowY <= 0) {
      return NULL;
    }
  }
  if (cutBinLowY > 1 && zoomBinHighY >= 0) {
    zoomBinHighY -= cutBinLowY - 1;
    if (zoomBinHighY <= 0) {
      return NULL;
    }
  }

  TH1 * histo_cut = cutHistogram(histo, cutBinLowX, cutBinHighX, cutBinLowY, cutBinHighY);
  if (!histo_cut) {
    return NULL;
  }

  TH1 * histo_zoomed = NULL;
  if (dim == 1) {
    if (zoomBinHighX <= histo_cut->GetNbinsX()) {
      histo_zoomed = cutHistogram(histo_cut, zoomBinLowX, zoomBinHighX,
                                  zoomBinLowY, zoomBinHighY, true, true);
    }
  } else if (dim == 2) {
    if (zoomBinHighX <= histo_cut->GetNbinsX() && zoomBinHighY <= histo_cut->GetNbinsY()) {
      histo_zoomed = cutHistogram(histo_cut, zoomBinLowX, zoomBinHighX,
                                  zoomBinLowY, zoomBinHighY, true, true, true, true);
    }
  }

  delete histo_cut;
  return histo_zoomed;
}


//__________________________________________________________________________________|___________

TH1 * TQHistogramUtils::cutHistogram(TH1 * histo,
                                     int xBinLow, int xBinHigh, int yBinLow, int yBinHigh,
                                     bool keepInUVX, bool keepInOVX, bool keepInUVY, bool keepInOVY) {
	// cut a histogram to the given bin boundaries in X, Y and Z
  // giving a bin boundary of -1 implies no cut.

  int dim = getDimension(histo);
  // only support 1- and 2-dimensional histograms
  if (dim < 1 || dim > 2) {
    return NULL;
  }

  int nBinsX = histo->GetNbinsX();
  int nEntries = histo->GetEntries();
  // not cutting at all?
  if (xBinLow < 0) {
    xBinLow = 0;
  }
  if (xBinHigh < 0) {
    xBinHigh = nBinsX + 1;
  }
  // cutting out of range?
  if (xBinLow > nBinsX || xBinHigh == 0 || xBinHigh < xBinLow || xBinHigh > nBinsX + 1) {
    return NULL;
  }
  // cutting in second dimension of 1D histogram?
  if (dim < 2 && (yBinLow != -1 || yBinHigh != -1 || keepInUVY || keepInOVY)) {
    return NULL;
  }
  if (xBinHigh > 0 && xBinHigh < nBinsX) {
    nBinsX -= (nBinsX - xBinHigh);
  }
  if (xBinLow > 1) {
    nBinsX -= (xBinLow - 1);
  }
  double xMin = histo->GetXaxis()->GetBinLowEdge(TMath::Max(xBinLow, 1));
  double xMax = histo->GetXaxis()->GetBinUpEdge(TMath::Min(xBinHigh, histo->GetNbinsX()));

  TH1 * newHisto = 0;
  
  TString orig_name = histo->GetName();
  histo->SetName(orig_name+"_copy"); // to avoid 'potential memory leak' warning
  
  if (dim == 1) {

    if (histo->InheritsFrom(TH1F::Class())) {
      newHisto = new TH1F(histo->GetName(), histo->GetTitle(), nBinsX, xMin, xMax);
    } else if (histo->InheritsFrom(TH1D::Class())) {
      newHisto = new TH1D(histo->GetName(), histo->GetTitle(), nBinsX, xMin, xMax);
    }
    if (newHisto) {
      newHisto->SetDirectory(histo->GetDirectory());
      newHisto->Sumw2();

      double val;
      double err;
      for (int xBinOld = xBinLow; xBinOld <= xBinHigh; xBinOld++) {
        int xBinNew = xBinOld;
        if (xBinLow > 1) {
          xBinNew -= (xBinLow - 1);
        }
        if (xBinLow > 0 && xBinNew <= 0) {
          continue;
        }
        if (xBinHigh <= histo->GetNbinsX() && xBinNew > nBinsX) {
          continue;
        }

        val = histo->GetBinContent(xBinOld);
        err = histo->GetBinError(xBinOld);
        if (val != 0.) {
          newHisto->SetBinContent(xBinNew, val);
        }
        if (err != 0.) {
          newHisto->SetBinError(xBinNew, err);
        }
      }

      if (keepInUVX && xBinLow > 0) {
        val = histo->IntegralAndError(0, xBinLow - 1, err);
        if (val != 0.) {
          newHisto->SetBinContent(0, val);
        }
        if (err != 0.) {
          newHisto->SetBinError(0, err);
        }
      }
      if (keepInOVX && xBinHigh < histo->GetNbinsX() + 1) {
        val = histo->IntegralAndError(xBinHigh + 1, histo->GetNbinsX() + 1, err);
        if (val != 0.) {
          newHisto->SetBinContent(nBinsX + 1, val);
        }
        if (err != 0.) {
          newHisto->SetBinError(nBinsX + 1, err);
        }
      }
    }

  } else if (dim == 2) {

    TH2 * histo2d = (TH2*)histo;

    int nBinsY = histo->GetNbinsY();
    if (yBinLow < 0) {
      yBinLow = 0;
    }
    if (yBinHigh < 0) {
      yBinHigh = nBinsY + 1;
    }
    if (yBinLow > nBinsY || yBinHigh == 0 || yBinHigh < yBinLow || yBinHigh > nBinsY + 1) {
      return NULL;
    }
    if (yBinHigh > 0 && yBinHigh < nBinsY) {
      nBinsY -= (nBinsY - yBinHigh);
    }
    if (yBinLow > 1) {
      nBinsY -= (yBinLow - 1);
    }
    double yMin = histo->GetYaxis()->GetBinLowEdge(TMath::Max(yBinLow, 1));
    double yMax = histo->GetYaxis()->GetBinUpEdge(TMath::Min(yBinHigh, histo->GetNbinsY()));

    if (histo->InheritsFrom(TH2F::Class())) {
      newHisto = new TH2F(histo->GetName(), histo->GetTitle(), nBinsX, xMin, xMax, nBinsY, yMin, yMax);
    } else if (histo->InheritsFrom(TH2D::Class())) {
      newHisto = new TH2D(histo->GetName(), histo->GetTitle(), nBinsX, xMin, xMax, nBinsY, yMin, yMax);
    }
    if (newHisto) {
      newHisto->SetDirectory(histo->GetDirectory());
      newHisto->Sumw2();

      double val;
      double err;
      for (int xBinOld = xBinLow; xBinOld <= xBinHigh; xBinOld++) {
        int xBinNew = xBinOld;
        if (xBinLow > 1) {
          xBinNew -= (xBinLow - 1);
        }
        if (xBinLow > 0 && xBinNew <= 0) {
          continue;
        }
        if (xBinHigh <= histo->GetNbinsX() && xBinNew > nBinsX) {
          continue;
        }
        for (int yBinOld = yBinLow; yBinOld <= yBinHigh; yBinOld++) {
          int yBinNew = yBinOld;
          if (yBinLow > 1) {
            yBinNew -= (yBinLow - 1);
          }
          if (yBinLow > 0 && yBinNew <= 0) {
            continue;
          }
          if (yBinHigh <= histo->GetNbinsY() && yBinNew > nBinsY) {
            continue;
          }

          val = histo->GetBinContent(xBinOld, yBinOld);
          err = histo->GetBinError(xBinOld, yBinOld);
          if (val != 0.) {
            newHisto->SetBinContent(xBinNew, yBinNew, val);
          }
          if (err != 0.) {
            newHisto->SetBinError(xBinNew, yBinNew, err);
          }

          if (xBinOld == xBinLow && keepInUVX && xBinLow > 0) {
            val = histo2d->IntegralAndError(0, xBinLow - 1, yBinOld, yBinOld, err);
            if (val != 0.) {
              newHisto->SetBinContent(0, yBinNew, val);
            }
            if (err != 0.) {
              newHisto->SetBinError(0, yBinNew, err);
            }
          }
          if (xBinOld == xBinLow && keepInOVX && xBinHigh < histo->GetNbinsX() + 1) {
            val = histo2d->IntegralAndError(xBinHigh + 1, histo->GetNbinsX() + 1, yBinOld, yBinOld, err);
            if (val != 0.) {
              newHisto->SetBinContent(nBinsX + 1, yBinNew, val);
            }
            if (err != 0.) {
              newHisto->SetBinError(nBinsX + 1, yBinNew, err);
            }
          }
          if (yBinOld == yBinLow && keepInUVY && yBinLow > 0) {
            val = histo2d->IntegralAndError(xBinOld, xBinOld, 0, yBinLow - 1, err);
            if (val != 0.) {
              newHisto->SetBinContent(xBinNew, 0, val);
            }
            if (err != 0.) {
              newHisto->SetBinError(xBinNew, 0, err);
            }
          }
          if (yBinOld == yBinLow && keepInOVY && yBinHigh < histo->GetNbinsY() + 1) {
            val = histo2d->IntegralAndError(xBinOld, xBinOld, yBinHigh + 1, histo->GetNbinsY() + 1, err);
            if (val != 0.) {
              newHisto->SetBinContent(xBinNew, nBinsY + 1, val);
            }
            if (err != 0.) {
              newHisto->SetBinError(xBinNew, nBinsY + 1, err);
            }
          }
        }
      }

      if (keepInUVX && keepInUVY && xBinLow > 0 && yBinLow > 0) {
        val = histo2d->IntegralAndError(0, xBinLow - 1, 0, yBinLow - 1, err);
        if (val != 0.) {
          newHisto->SetBinContent(0, 0, val);
        }
        if (err != 0.) {
          newHisto->SetBinError(0, 0, err);
        }
      }
      if (keepInOVX && keepInUVY && xBinHigh < histo->GetNbinsX() + 1 && yBinLow > 0) {
        val = histo2d->IntegralAndError(xBinHigh + 1, histo->GetNbinsX() + 1, 0, yBinLow - 1, err);
        if (val != 0.) {
          newHisto->SetBinContent(nBinsX + 1, 0, val);
        }
        if (err != 0.) {
          newHisto->SetBinError(nBinsX + 1, 0, err);
        }
      }
      if (keepInUVX && keepInOVY && xBinLow > 0 && yBinHigh < histo->GetNbinsY() + 1) {
        val = histo2d->IntegralAndError(0, xBinLow - 1, yBinHigh + 1, histo->GetNbinsY() + 1, err);
        if (val != 0.) {
          newHisto->SetBinContent(0, nBinsY + 1, val);
        }
        if (err != 0.) {
          newHisto->SetBinError(0, nBinsY + 1, err);
        }
      }
      if (keepInOVX && keepInOVY && xBinHigh < histo->GetNbinsX() + 1 && yBinHigh < histo->GetNbinsY() + 1) {
        val = histo2d->IntegralAndError(xBinHigh + 1, histo->GetNbinsX() + 1,
                                        yBinHigh + 1, histo->GetNbinsY() + 1, err);
        if (val != 0.) {
          newHisto->SetBinContent(nBinsX + 1, nBinsY + 1, val);
        }
        if (err != 0.) {
          newHisto->SetBinError(nBinsX + 1, nBinsY + 1, err);
        }
      }
    }
  }

  if (newHisto) {
    /* style parameter */
    copyStyle(newHisto, histo);
    newHisto->GetXaxis()->SetTitle(histo->GetXaxis()->GetTitle());
    newHisto->GetYaxis()->SetTitle(histo->GetYaxis()->GetTitle());
    newHisto->SetEntries(nEntries);
  }
  
  histo->SetName(orig_name);
  newHisto->SetName(orig_name);
  return newHisto;
}

//__________________________________________________________________________________|___________


TH2 * TQHistogramUtils::removeBins(TH2* in, TString blackList) {
  // copies a (labled) TH2 skipping all bins (X and Y) whose labels match blackList.
  std::vector<TString> bl;
  bl.push_back(blackList);
  return removeBins(in, bl);
}

//__________________________________________________________________________________|___________

TH2 * TQHistogramUtils::removeBins(TH2* in, const std::vector<TString>& blackList) {
  // copies a (labled) TH2 skipping all bins (X and Y) whose labels match any of the patterns
  // in blackList.

  if (!in) return NULL;

  std::vector<int> binsX;
  std::vector<int> binsY;

  //determine bins to keep
  TAxis* xAxis = in->GetXaxis();
  bool keep;
  for (int i=1; i<xAxis->GetNbins()+1; i++) {
    keep = true;
    for(size_t j=0; j<blackList.size() && keep; j++) {
      keep = keep && !TQStringUtils::matches(xAxis->GetBinLabel(i), blackList[j]);
    }
    if (keep) binsX.push_back(i);
  }
  TAxis* yAxis = in->GetYaxis();
  for (int i=1; i<yAxis->GetNbins()+1; i++) {
    keep = true;
    for(size_t j=0; j<blackList.size() && keep; j++) {
      keep = keep && !TQStringUtils::matches(yAxis->GetBinLabel(i), blackList[j]);
    }
    if (keep) binsY.push_back(i);
  }

  if (binsX.size()== 0 || binsY.size() == 0) return NULL; //resulting histogram would be empty

  int nX = binsX.size();
  int nY = binsY.size();

  //create new TH2 and copy contents
  TH2* retval = new TH2F(in->GetName(),in->GetTitle(),nX,0,nX,nY,0,nY);
  retval->GetXaxis()->SetTitle(in->GetXaxis()->GetTitle());
  retval->GetYaxis()->SetTitle(in->GetYaxis()->GetTitle());
  retval->SetDirectory(NULL);
  //set bin labels
  for (size_t x = 0; x<binsX.size(); x++) {
    retval->GetXaxis()->SetBinLabel(x+1, in->GetXaxis()->GetBinLabel(binsX[x]));
  }
  for (size_t y = 0; y<binsY.size(); y++) {
    retval->GetYaxis()->SetBinLabel(y+1, in->GetYaxis()->GetBinLabel(binsY[y]));
  }

  for (size_t x=0; x<binsX.size(); x++) {
    for (size_t y = 0; y<binsY.size(); y++) {
      retval->SetBinContent(x+1,y+1, in->GetBinContent(binsX[x],binsY[y]));
      retval->SetBinError(x+1,y+1, in->GetBinError(binsX[x],binsY[y]));
    }
  }

  return retval;
}

//__________________________________________________________________________________|___________

namespace {
std::vector<int> getBinBordersFlatPrivate(TH1 * histo, int nBins, int iFirstBin, double meanPerBin, double &quality, bool includeOverflows) {

  if (nBins <= 1) {

    /* in case the number of bins aimed for is equal to one,
     * there is no freedom left to set a bin border: we need
     * to set the last bin border to include the rightmost bin */
    quality = TMath::Power(histo->Integral(iFirstBin,
                                           histo->GetNbinsX() + (includeOverflows ? 1 : 0)) - meanPerBin, 2.);
    return std::vector<int>();

  } else {

    /* the optimal bin borders as a function of the first bin border */
    std::vector<double> nxtChi2;
    std::vector<std::vector<int> > nxtBorders;

    int left = iFirstBin;
    int right = histo->GetNbinsX() + 1 - (nBins - (includeOverflows ? 2 : 1));

    double thisBin = 0.;
    int iThisBin = left;
    while (iThisBin < right && thisBin < meanPerBin)
      thisBin += histo->GetBinContent(iThisBin++);

    left = TMath::Max(left, iThisBin - 2);
    right = TMath::Min(right, iThisBin + 1);

    for (int iBin = left; iBin < right; iBin++) {

      double thisQuality = 0.;
      nxtBorders.push_back(getBinBordersFlatPrivate(histo, nBins - 1, iBin + 1,
                                                     meanPerBin, thisQuality, includeOverflows));

      /* calculate and save the quality of current binning */
      thisQuality += TMath::Power(histo->Integral(iFirstBin, iBin) - meanPerBin, 2.);
      nxtChi2.push_back(thisQuality);
    }

    /* find the optimal bin borders by looking for the highest quality */
    int minIndex = -1;
    for (unsigned int i = 0; i < nxtChi2.size(); i++)
      if (minIndex < 0 || nxtChi2[i] < nxtChi2[minIndex])
        minIndex = i;

    /* the optimal bin borders to return */
    std::vector<int> binBorders;

    /* get the best bin borders and delete the
     * information about the non-optimal ones */
    for (unsigned int i = 0; i < nxtChi2.size(); i++) {

      if (i == (unsigned int)minIndex) {
        /* compile the list of optimal bin borders */
        binBorders.push_back(left + minIndex);
        for (unsigned int j = 0; j < nxtBorders[i].size(); j++)
          binBorders.push_back(nxtBorders[i][j]);
      }
    }

    /* return the optimal bin borders */
    return binBorders;
  }
}
}

//__________________________________________________________________________________|___________

std::vector<int> TQHistogramUtils::getBinBordersFlat2D(TH2 * histo, int nBins, bool remapX, bool includeOverflows, bool remapSlices) {
	// obtain a new set of boundaries that remap a given histogram to a flat distribution
  if (!histo) {
    std::vector<int>();
  }

  int n = (remapX ? histo->GetNbinsY() : histo->GetNbinsX()) + 2;

  /* the reference histogram and the corresponding bin borders */
  std::vector<int> bordersRef;

  std::vector<int> borders2D;
  for (int i = 0; i < n; i++) {

    TH1 * h_ref = NULL;
    if (bordersRef.size()==0) {
      h_ref = getProjection(histo, remapX);
    } else {
      h_ref = getProjection(histo, remapX, i, i);
    }
    if (h_ref && bordersRef.size() == 0) {
      bordersRef = getBinBordersFlat(h_ref, nBins, includeOverflows);
      delete h_ref;
    }

    for (size_t j = 0; j < bordersRef.size(); j++) {
      borders2D.push_back(bordersRef[j]);
    }

    if (remapSlices) {
      bordersRef.clear();
    }
  }
  return borders2D;
}


//__________________________________________________________________________________|___________

std::vector<int> TQHistogramUtils::getBinBordersFlat(TH1 * histo, int nBins, bool includeOverflows) {
	// obtain a new set of boundaries that remap a given histogram to a flat distribution
  if (getDimension(histo) != 1 || nBins <= 1) {
    return std::vector<int>();
  }

  // calculate the integral
  double integral = getIntegral(histo);
  if (!includeOverflows) {
    integral -= histo->GetBinContent(0);
    integral -= histo->GetBinContent(histo->GetNbinsX() + 1);
  }

  // calculate the expected mean content per bin
  double meanPerBin = integral / (double)nBins;

  // return the optimal bin borders
  double dummy = 0.;
  return getBinBordersFlatPrivate(histo, nBins, includeOverflows ? 0 : 1, meanPerBin, dummy, includeOverflows);

}

//__________________________________________________________________________________|___________

std::vector<int> TQHistogramUtils::getOptimizedBinBorders(TH1 * hsig, TH1 * hbkg, double minSignal, double minBkg, double maxBkgUnc,  bool significanceAgnostic, double maxSignal, double estimatedMaxSignInBin, bool verbose, double maxSigUnc, double minBinWidth, bool mergeBins)
{
  // obtain a new set of boundaries that optimize the significance between hsig and hbkg following the conditions provided
  // Parameters:
  // minSignal:  minimum signal in bin to set bin border
  // maxSignal: signal threshold to set early bin border (no effect with significanceAgnostic = true)
  // minBkg: minimum bkg in bin to set bin border
  // maxBkgUnc: maximum relative uncertainty on bkg to set bin border
  // significanceAgnostic: If true, the bin boundaries are entirely specified with minSignal, minBkg, maxBkgUnc and the optional estimatedMaxSignInBin
  // estimatedMaxSignInBin: optional ballpark estimate for significance of most signal sensitive bin to judge range of unsignificant part of distribution
  // mergeBins: merge the first two bins

  if (getDimension(hsig) != 1 || getDimension(hbkg) != 1) {
    return std::vector<int>();
  }

  int movingUpperBin = hsig->GetXaxis()->GetNbins() + 1;

  // welcome message
  if (verbose) {
    INFO("********************************************************");
    INFO("==>> Running binning optimization with the following settings");
    INFO(TString::Format("-->> minimum signal per bin: %f", minSignal));
    INFO(TString::Format("-->> minimum bkg per bin: %f", minBkg));
    INFO(TString::Format("-->> maximum bkg uncertainty per bin: %f", maxBkgUnc));
    INFO(TString::Format("-->> maximum sig uncertainty per bin: %f", maxSigUnc));
    INFO(TString::Format("-->> run mode agnostic to significance? %d", significanceAgnostic));
    INFO(TString::Format("-->> sufficient signal per bin to set boundary: %f", maxSignal));
    INFO(TString::Format("-->> estimated significance of first bin to judge unsignificant part of distribution: %f", estimatedMaxSignInBin));
    INFO(TString::Format("-->> minimum allowed binwidth: %f", minBinWidth));
    INFO(TString::Format("-->> merge first two bins: %d", mergeBins));
    INFO("*********************************************************");
  }

  if (significanceAgnostic && !(estimatedMaxSignInBin > 0.2)) {
    WARN("Your binning optimization runs in significance agnostic mode but the provided " \
         "significance estimate with the 'estimatedMaxSignInBin' argument is 0. " \
         "This could lead to a very fine binning in a signal insensitive region which might not be desired! " \
         "Consider increasing 'estimatedMaxSignInBin'");
  }

  std::vector<double> bestSigns = {};
  std::vector<int> binBoundaries = {};
  int i = -1;
  while (movingUpperBin > 0) {
    i += 1;
    if (verbose) {INFO(TString::Format("============ %d Iteration =================", i+1));}
    std::vector<double> signs = {};
    std::vector<int> bins = {};
    bool setBoundary = true;
    double TotbinWidth = 0;
    double sig_err;
    double bkg_err;
    double sign = -1;  // should be set to a reasonable value later 
    for (int ibin = movingUpperBin; ibin >= 0; ibin--) {
      double binWidth = hsig->GetBinWidth(ibin);
      TotbinWidth += binWidth;
      if (verbose) {
        INFO(TString::Format("-->> ibin: %d", ibin));
        INFO(TString::Format("-->> binWidth: %f", binWidth));
        INFO(TString::Format("-->> TotbinWidth: %f", TotbinWidth));
      }
      double sig = hsig->IntegralAndError(ibin, movingUpperBin, sig_err);
      double bkg = hbkg->IntegralAndError(ibin, movingUpperBin, bkg_err);
      if (sig < minSignal || bkg < minBkg || TotbinWidth <  minBinWidth ) {
        if (verbose) {INFO(TString::Format("Integral(lowBin=%d, upBin=%d): skipping because of insufficient signal yield (%f) or bkg yield (%f) or BinWidth is lower than %f GeV", ibin, movingUpperBin, sig, bkg,minBinWidth));}
        continue;
      }
      if (bkg_err / bkg > maxBkgUnc) {
        if (verbose) {INFO(TString::Format("Integral(lowBin=%d, upBin=%d): skipping because rel. bkg MC uncertainty (%f) is larger than the maximum set (%f)", ibin, movingUpperBin, bkg_err / bkg, maxBkgUnc));}
        continue;
      }
      if (sig_err / sig > maxSigUnc) {
        if (verbose) {INFO(TString::Format("Integral(lowBin=%d, upBin=%d): skipping because rel. sig MC uncertainty (%f) is larger than the maximum set (%f)", ibin, movingUpperBin, sig_err / sig, maxSigUnc));}
        continue;
      }
      if ( (sig_err / sig > maxSigUnc) && (sig > maxSignal) ) {
        WARN(TString::Format("TQHistogramUtils::getOptimizedBinBorders failed to find binning configuration with MaxSignal (%f) and maxSigUnc (%f)", maxSignal, maxSigUnc));
      }
      if ( (sig > maxSignal) && (TotbinWidth <= minBinWidth) ) {
        WARN(TString::Format("TQHistogramUtils::getOptimizedBinBorders failed to find binning configuration with MaxSignal (%f) and minBinWidth (%f) GeV", maxSignal, minBinWidth));
      }
      if (bkg != 0) {
        sign = getSignificance(bkg, sig, "asymptoticPoissonPoisson", bkg_err);
        if (verbose) {INFO(TString::Format("Criteria satisfied at Integral(lowBin=%d, upBin=%d): sig=%f +- %f (rel. unc. %f) , bkg=%f +- %f (rel. unc. %f), sigma=%f, sigmaUnc=%f, s/sqrt(b)=%f", ibin, movingUpperBin, sig, sig_err, sig_err / sig , bkg, bkg_err, bkg_err / bkg , sign, sign, sig / TMath::Sqrt(bkg)));}
        signs.push_back(sign);
        bins.push_back(ibin);
        setBoundary = true;
        if (significanceAgnostic) {
          if (sign > 0.2 * estimatedMaxSignInBin) {
            break;
          } else {
            if (verbose) {INFO(TString::Format("Criteria satisfied at Integral(lowBin=%d, upBin=%d) but not setting a bin boundary because significance is hardly contributing", ibin, movingUpperBin));}
          }
        }
      } else {
        if (verbose) {INFO(TString::Format("Integral(lowBin=%d, upBin=%d): sig=%f, bkg=%f, sigma='bkg is zero, cannot calculate significance'", ibin, movingUpperBin, sig, bkg));}
        continue;
      }
      if (sig > maxSignal) {
        if (estimatedMaxSignInBin > 0) {
          if (*std::max_element(signs.begin(), signs.end()) < 0.2 * estimatedMaxSignInBin) { // otherwise more bins are added that hardly contribute
            if (verbose) {INFO(TString::Format("Reached maximum signal criterium at Integral(lowBin=%d, upBin=%d) but not setting a bin boundary because significance is hardly contributing", ibin, movingUpperBin));}
            setBoundary = false;
            continue;
          } else {
            if (verbose) {INFO(TString::Format("Criteria satisfied at Integral(lowBin=%d, upBin=%d): set bin boundary because plenty of signal is already contained in the current range", ibin, movingUpperBin));}
            setBoundary = true;
            break;
          }
        }
        else {
          if (verbose) {INFO(TString::Format("Criteria satisfied at Integral(lowBin=%d, upBin=%d): set bin boundary because plenty of signal is already contained in the current range", ibin, movingUpperBin));}
          setBoundary = true;
          break;
        }
      }
    }
    if (bins.size() == 0) {// at the very end
      signs.push_back(sign);
      bestSigns.push_back(sign);
      if (verbose) INFO(TString::Format("Integrate rest of distribution (bins %d-%d) with significance: %f", 0, movingUpperBin, sign));
      movingUpperBin = 0;
      binBoundaries.push_back(movingUpperBin);
    } else {
      if (setBoundary == true) {
        if (!significanceAgnostic) {
          int bestSignIndex = std::distance(signs.begin(), std::max_element(signs.begin(), signs.end()));
          movingUpperBin = bins[bestSignIndex];
          binBoundaries.push_back(movingUpperBin);
          bestSigns.push_back(*std::max_element(signs.begin(), signs.end()));
          movingUpperBin = movingUpperBin - 1;
        } else{ // take last entry in bin and signs arrays
          movingUpperBin = bins.back();
          binBoundaries.push_back(movingUpperBin);
          bestSigns.push_back(signs.back());
          movingUpperBin = movingUpperBin - 1;
        }
      } else {
        if (verbose) INFO(TString::Format("Integrate rest of distribution (because significance is hardly contributing anymore) from bins %d-%d which gives a significance: %f", 0, movingUpperBin, signs[signs.size() - 1])); // previous last bin
        movingUpperBin = bins[bins.size() - 1];
        if (movingUpperBin != 0) { // We should only end up here when this is the first bin (bin = 0)
          WARN("In binning optimization an unexpected last bin was seen! Check inputs.");
        } else {
          binBoundaries.push_back(movingUpperBin);
          bestSigns.push_back(signs[signs.size() - 1]);
        }
      }
      if (verbose) INFO(TString::Format("Found new bin boundary: %d", movingUpperBin));
    }
  }



  // sort and throw out underflow bin if specified
  std::sort(binBoundaries.begin(), binBoundaries.end());
  if (binBoundaries[0] == 0) {binBoundaries = std::vector<int>(binBoundaries.begin() + 1, binBoundaries.end());}


//   for now patch like this
  if (mergeBins) binBoundaries = std::vector<int>(binBoundaries.begin() + 1, binBoundaries.end());

  if (verbose) {
    INFO("\n*********************************************************");
    INFO("==>> Final Results for binning optimization");
    INFO(TString::Format("Found bin boundaries in %d iterations with significances per bin:", i+1));
    INFO("border, significance");
    for (size_t i=0; i < binBoundaries.size(); i++) {
      INFO(TString::Format("%d, %f", binBoundaries[i], bestSigns[i]));
    }
    INFO("*********************************************************");
  }

  return binBoundaries;
}

//__________________________________________________________________________________|___________

TH1 * TQHistogramUtils::convertTo1D(const TH2 * histo, bool alongX, bool includeUnderflowsX,
                                    bool includeOverflowsX, bool includeUnderflowsY, bool includeOverflowsY) {
	// convert a 2D histogram to a 1D histogram by unrolling it
  if (!histo) {
    return NULL;
  }

  int nX = histo->GetNbinsX() + (includeUnderflowsX ? 1 : 0) + (includeOverflowsX ? 1 : 0);
  int nY = histo->GetNbinsY() + (includeUnderflowsY ? 1 : 0) + (includeOverflowsY ? 1 : 0);
  int nBins;
  int nBlocks;
  if (alongX) {
    nBins = nX;
    nBlocks = nY;
  } else {
    nBins = nY;
    nBlocks = nX;
  }

  TH1 * h_result = NULL;
  if (histo->InheritsFrom(TH2F::Class())) {
    h_result = new TH1F(histo->GetName(), histo->GetTitle(), nBins * nBlocks, 0., 1.);
  } else if (histo->InheritsFrom(TH2D::Class())) {
    h_result = new TH1D(histo->GetName(), histo->GetTitle(), nBins * nBlocks, 0., 1.);
  }

  if (h_result) {
    h_result->SetDirectory(histo->GetDirectory());
  } else {
    return NULL;
  }

  h_result->Sumw2();

  TString titleX = TQStringUtils::getWithoutUnit(histo->GetXaxis()->GetTitle());
  TString titleY = TQStringUtils::getWithoutUnit(histo->GetYaxis()->GetTitle());

  TString ufX;
  TString ofX;
  TString ufY;
  TString ofY;
  if (includeUnderflowsX) {
    ufX = "<UF> ";
  }
  if (includeOverflowsX) {
    ofX = " <OF>";
  }
  if (includeUnderflowsY) {
    ufY = "<UF> ";
  }
  if (includeOverflowsY) {
    ofY = " <OF>";
  }

  TString title = "Reordered (%s%s%s) #otimes (%s%s%s)";

  if (alongX) {
    h_result->GetXaxis()->SetTitle(TString::Format(title.Data(), ufX.Data(),
                                                   titleX.Data(), ofX.Data(), ufY.Data(), titleY.Data(), ofY.Data()).Data());
  } else {
    h_result->GetXaxis()->SetTitle(TString::Format(title.Data(), ufY.Data(),
                                                   titleY.Data(), ofY.Data(), ufX.Data(), titleX.Data(), ofX.Data()).Data());
  }

  int i = 1;
  for (int iBlock = 0; iBlock < nBlocks; iBlock++) {
    for (int iBin = 0; iBin < nBins; iBin++) {
      int iX;
      int iY;
      if (alongX) {
        iX = iBin + (includeUnderflowsX ? 0 : 1);
        iY = iBlock + (includeUnderflowsY ? 0 : 1);
      } else {
        iX = iBlock + (includeUnderflowsX ? 0 : 1);
        iY = iBin + (includeUnderflowsY ? 0 : 1);
      }
      h_result->SetBinContent(i, histo->GetBinContent(iX, iY));
      h_result->SetBinError(i, histo->GetBinError(iX, iY));
      i++;
    }
  }

  /* style parameter */
  copyStyle(h_result, histo);

  return h_result;
}

//__________________________________________________________________________________|___________


void TQHistogramUtils::reorderBins(TH2* hist, const std::vector<TString>& ordering){
  TMatrixD* mat = TQHistogramUtils::convertHistogramToMatrix(hist);
  std::vector<TString> xaxis,yaxis;
  std::vector<TString> newxaxis,newyaxis;
  for(Int_t i=0; i<hist->GetNbinsX(); ++i){
    xaxis.push_back(hist->GetXaxis()->GetBinLabel(i+1));
  }
  for(Int_t i=0; i<hist->GetNbinsY(); ++i){
    yaxis.push_back(hist->GetYaxis()->GetBinLabel(i+1));
  }
  hist->Reset("ICE");
  for(size_t j=0; j<ordering.size(); ++j){
    for(size_t i=0; i<xaxis.size(); ++i){
      if(ordering[j] == xaxis[i]) newxaxis.push_back(xaxis[i]);
    }
    for(size_t i=0; i<yaxis.size(); ++i){
      if(ordering[j] == yaxis[i]) newyaxis.push_back(yaxis[i]);
    }
  }
  for(size_t i=0; i<newxaxis.size(); ++i){
    hist->GetXaxis()->SetBinLabel(i+1,newxaxis[i]);
  }
  for(size_t i=0; i<newyaxis.size(); ++i){
    hist->GetYaxis()->SetBinLabel(i+1,newyaxis[i]);
  }
  for(size_t i=0; i<xaxis.size(); ++i){
    for(size_t j=0; j<yaxis.size(); ++j){
    // int ibin = hist->FindBin(xaxis[i],yaxis[j]);
      int xidx = hist->GetXaxis()->FindBin(xaxis[i] );
      int yidx = hist->GetYaxis()->FindBin(yaxis[j] );
      hist->SetBinContent(xidx,yidx,(*mat)[i][j]);
    }
  }
  delete mat;
}


//__________________________________________________________________________________|___________

TH1 * TQHistogramUtils::getProjection(TH1 * histo, bool onX, int binLow, int binHigh) {
  // Creates a one-dimensional projection from a two-dimensional histogram onto any
  // of its axes and returns a pointer to the projected histogram or a NULL pointer
  // in case of failure. The histogram <histo> is projected onto its X axis if
  // <onX> == true and onto its Y axis if <onX> == false. Optionally, the projection
  // range on the axis that is projected out can be chosen via <binLow> and <binHigh>
  // which refer to the first and the last bin to be considered, respectively. The
  // projection range reaches to the minimum (including underflow bin) and/or the
  // maximum (including the overflow bin) if <binLow> and/or <binHigh> are less than
  // zero (both are -1 by default). The projection histogram adopts both style options
  // as well as the association to a TDirectory from the source histogram (ensuring
  // unique names in case of an association to a TDirectory).

  // we expect a 2D histogram as input
  if (getDimension(histo) != 2) {
    // ... return NULL pointer if not a 2D histogram
    return NULL;
  }

  // projection range with lower bin less than zero is
  // treated as zero (= projection starts from underflow bin)
  if (binLow < 0) {
    binLow = 0;
  }

  // projection range with upper bin greater than index of overflow bin or less
  // than zero are treated as index of overflow bin (= projection including overflow bin)
  int nBins = (onX ? histo->GetNbinsY() : histo->GetNbinsX());
  if (binHigh < 0 || binHigh > nBins + 1) {
    binHigh = nBins + 1;
  }

  // expect a non-empty projection range
  if (binLow > binHigh) {
    return NULL;
  }

  // the TDirectory the histogram is associated to
  TDirectory * histoDir = histo->GetDirectory();

  // determine a unique name for the projection histogram
  // to avoid collisions with existing histograms
  TString prefix = TString::Format("__h_proj_%s", histo->GetName());
  TString name = prefix;
  int i = 2;
  while ((gDirectory && gDirectory->FindObject(name.Data()))
         || (histoDir && histoDir->FindObject(name.Data()))) {
    name = TString::Format("%s_i%d", prefix.Data(), i++);
  }

  // make projection using ROOT's projection features
  TH1D * h_proj;
  if (onX) {
    // project onto X axis
    h_proj = ((TH2*)histo)->ProjectionX(name.Data(), binLow, binHigh, "e");
  } else {
    // project onto Y axis
    h_proj = ((TH2*)histo)->ProjectionY(name.Data(), binLow, binHigh, "e");
  }

  // if the projection succeeded ...
  if (h_proj) {
    // put the projected histogram into the same TDirectory as the original one
    // (or remove association if original histogram was not associated to any directory)
    h_proj->SetDirectory(histoDir);
    // restore name of histogram (equal to input histogram) if not associated
    // to a TDirectory (otherwise we would end up in another name collision)
    if (!histoDir) {
      h_proj->SetName(histo->GetName());
    }
    // copy style from original histogram to projected histogram
    copyStyle(h_proj, histo);
  }

  // return the projected histogram
  return h_proj;
}


//__________________________________________________________________________________|___________

TH1 * TQHistogramUtils::getProjectionX(TH1 * histo, int binLow, int binHigh) {
  // Creates a one-dimensional projection from a two-dimensional histogram onto its
  // X axis and returns a pointer to the projected histogram or a NULL pointer
  // in case of failure. Please refer to the documentation of
  // TQHistogramUtils::getProjection(...) for additional information.
  //
  // [Please note: this is wrapper to TQHistogramUtils::getProjection(..., true, ...)]

  // make projection
  return getProjection(histo, true, binLow, binHigh);
}


//__________________________________________________________________________________|___________

TH1 * TQHistogramUtils::getProjectionY(TH1 * histo, int binLow, int binHigh) {
  // Creates a one-dimensional projection from a two-dimensional histogram onto its
  // Y axis and returns a pointer to the projected histogram or a NULL pointer
  // in case of failure. Please refer to the documentation of
  // TQHistogramUtils::getProjection(...) for additional information.
  //
  // [Please note: this is wrapper to TQHistogramUtils::getProjection(..., false, ...)]

  // make projection
  return getProjection(histo, false, binLow, binHigh);
}


//__________________________________________________________________________________|___________

bool TQHistogramUtils::applyPoissonErrors(TH1 * histo) {
  // Sets the bin errors for each bin of histogram histo to square-root of bin
  // contents and returns false in case of an invalid histogram or if there are
  // bins with negative entries or true otherwise. For bins with negative bin
  // content the bin error is set to zero.

  if (!histo) {
    return false;
  }

  bool neg = false;

  // iterate over bins
  int n = getNBins(histo);
  for (int i = 0; i < n; i++) {
    double bin = histo->GetBinContent(i);
    if (bin >= 0.) {
      histo->SetBinError(i, TMath::Sqrt(bin));
    } else {
      histo->SetBinError(i, 0.);
      neg = true;
    }
  }

  return !neg;
}

//__________________________________________________________________________________|___________

void TQHistogramUtils::copyGraphAxisTitles(TNamed* copy, const TNamed* graph) {
	// copy axis titles from one graph to the other
  for(size_t idx=0; idx<3; idx++){
    const TAxis* oaxis = TQHistogramUtils::getAxis(graph,idx);
    TAxis* caxis = TQHistogramUtils::getAxis_nonconst(copy,idx);
    if(!oaxis || !caxis) break;
    caxis->SetTitle(oaxis->GetTitle());
  }
}

//__________________________________________________________________________________|___________

TNamed * TQHistogramUtils::copyGraph(const TNamed* graph, const TString& newName) {
  // a variant of copyHistogram that works on TGraphs instead
  if (!graph) {
    return NULL;
  }

  // make a copy of the input Graph
  TNamed * copy = TQHistogramUtils::createGraph(TQHistogramUtils::getGraphDefinition(graph));
  if (!copy) {
    return NULL;
  }
  TQHistogramUtils::copyStyle(copy,graph);
  TQHistogramUtils::addGraph(copy,graph);

	TQHistogramUtils::copyGraphAxisTitles(copy,graph);

  // set the directory of the original histogram
  if (newName.IsNull()) {
    copy->SetName(graph->GetName());
  } else {
    copy->SetName(newName);
  }

  // return the copied graph
  return copy;
}

//__________________________________________________________________________________|___________

TH1 * TQHistogramUtils::copyHistogram(const TH1 * histo, const TString& newName) {
  // Creates an independent copy of the input histogram <histo> and returns a pointer
  // to the copy or a NULL pointer in case of failure. Please note: currently, only
  // instances of TH1F, TH1D, TH2F, TH2D, TH3F, and TH3D are supported. Optionally,
  // a new name for the copy can be specified via <newName>. Otherwise, the copied
  // histogram will adopt the name of the input histogram. In any case it will adopt
  // its potential association to an instance of TDirectory (ensuring a unique name).

  // stop if the histogram to copy is invalid
  if (!histo) {
    return NULL;
  }

  // make a copy of the input histogram

  TH1 * copy = TQHistogramUtils::createHistogram(TQHistogramUtils::getHistogramDefinition(histo));
  if (!copy) {
    return NULL;
  }
  TQHistogramUtils::copyStyle(copy,histo);

  if(histo->GetXaxis()) copy->GetXaxis()->SetTitle(histo->GetXaxis()->GetTitle());
  if(histo->GetYaxis()) copy->GetYaxis()->SetTitle(histo->GetYaxis()->GetTitle());
  if(histo->GetZaxis()) copy->GetZaxis()->SetTitle(histo->GetZaxis()->GetTitle());

  TDirectory * histoDir = histo->GetDirectory();
  if (newName.IsNull() || newName == "NODIR") {
    // find a unique name
    TString prefix = histo->GetName();
    TString name = prefix;
    int i = 2;
    while (histoDir && histoDir->FindObject(name.Data())) {
      name = TString::Format("%s_i%d", prefix.Data(), i++);
    }
    copy->SetName(name.Data());
  } else {
    copy->SetName(newName);
  }

  // set the directory of the original histogram
  if (!histoDir || newName == "NODIR") {
    copy->SetDirectory(NULL);
  } else {
    copy->SetDirectory(histoDir);
  }

  TQHistogramUtils::addHistogram(copy,histo);
  // return the copied histogram
  return copy;
}

//__________________________________________________________________________________|___________

bool TQHistogramUtils::copyBinLabels(const TH1* source, TH1* target) {
  // copy bin labels from axes of one histogram to the corresponding axes of the
  // other returns false if no valid arguments are given or source and target
  // histograms/axes are incompatible (different dimensionality / different number
  // of bins)
  if (!source || !target) return false;
  int dim = abs(TQHistogramUtils::getDimension(source));
  if (dim != abs(TQHistogramUtils::getDimension(target))) return false;

  switch (dim) {
    case 3:
      if (!TQHistogramUtils::copyBinLabels(source->GetZaxis(), target->GetZaxis())) return false;
      break;
    case 2:
      if (!TQHistogramUtils::copyBinLabels(source->GetYaxis(), target->GetYaxis())) return false;
      break;
    case 1:
      if (!TQHistogramUtils::copyBinLabels(source->GetXaxis(), target->GetXaxis())) return false;
      if (TQHistogramUtils::hasBinLabels(target->GetXaxis())) target->GetXaxis()->LabelsOption("v");
      break;
    default:
      WARN("Unsupported histogram dimension '%i' in TQHistogramUtils::copyBinLabels",dim);
      return false;
      break;
  }
  return true;
}

//__________________________________________________________________________________|___________

bool TQHistogramUtils::hasBinLabels(const TH1* h){
  // return true if this histogram has bin labels on any axis
  int dim = abs(TQHistogramUtils::getDimension(h));
  bool retval = TQHistogramUtils::hasBinLabels(h->GetXaxis());
  if(dim > 1) retval = retval && TQHistogramUtils::hasBinLabels(h->GetYaxis());
  if(dim > 2) retval = retval && TQHistogramUtils::hasBinLabels(h->GetZaxis());
  return retval;
}

//__________________________________________________________________________________|___________

bool TQHistogramUtils::hasBinLabels(const TAxis* a){
  // return true if this axis has bin labels
  if (!a) return false;
  THashList* labels = a->GetLabels();
  return labels && labels->GetSize()>0;
}

//__________________________________________________________________________________|___________

bool TQHistogramUtils::copyBinLabels(const TAxis* source, TAxis* target) {
  // copy bin labels from one axis to another. Returns false if arguments are invalid or axes are incompatible
  if (!source || !target) return false;
  if (!TQHistogramUtils::hasBinLabels(source)) return true; //nothing to do here, axis has no labels //note that this line requires a public-private hack due to the stupidity of ROOT...
  int nBins = source->GetNbins();
  if (nBins != target->GetNbins()) return false;
  for (int i=1; i<= nBins; i++) {
    target->SetBinLabel(i,source->GetBinLabel(i));
  }
  return true;
}

//__________________________________________________________________________________|___________

bool TQHistogramUtils::copyAxisStyle(const TH1* source, TH1* target) {
  // copy axis style settings from axes of one histogram to the corresponding axes of the
  // other returns false if no valid arguments are given or source and target
  // histograms/axes are incompatible (different dimensionality / different number
  // of bins)
  if (!source || !target) return false;
  int dim = abs(TQHistogramUtils::getDimension(source));
  if (dim != abs(TQHistogramUtils::getDimension(target))) return false;

  switch (dim) {
    case 3:
      if (!TQHistogramUtils::copyAxisStyle(source->GetZaxis(), target->GetZaxis())) return false;
      break;
    case 2:
      if (!TQHistogramUtils::copyAxisStyle(source->GetYaxis(), target->GetYaxis())) return false;
      break;
    case 1:
      if (!TQHistogramUtils::copyAxisStyle(source->GetXaxis(), target->GetXaxis())) return false;
      break;
    default:
      WARN("Unsupported histogram dimension '%i' in TQHistogramUtils::copyAxisStyle",dim);
      return false;
      break;
  }
  return true;

}

//__________________________________________________________________________________|___________

bool TQHistogramUtils::copyAxisStyle(const TAxis* source, TAxis* target) {
  //add style settings to copy as needed
  if (!source || !target) return false;
  target->SetAxisColor(source->GetAxisColor());
  target->SetLabelColor(source->GetLabelColor());
  target->SetLabelFont(source->GetLabelFont());
  target->SetLabelOffset(source->GetLabelOffset());
  target->SetLabelSize(source->GetLabelSize());
  target->SetNdivisions(source->GetNdivisions());
  target->SetTickLength(source->GetTickLength());
  target->SetTitleColor(source->GetTitleColor());
  target->SetTitleFont(source->GetTitleFont());
  target->SetTitleOffset(source->GetTitleOffset());
  target->SetTitleSize(source->GetTitleSize());
  return true;
}

//__________________________________________________________________________________|___________

bool TQHistogramUtils::includeSystematics(TH1 * histo, TH1 * systematics) {

  /* stop if input histograms are invalid */
  if (!checkConsistency(histo, systematics))
    return false;

  /* only one dimensional histograms supported up to now */
  if (getDimension(histo) != 1)
    return false;

  /* loop on bins */
  int nBins = histo->GetNbinsX();
  for (int iBin = 0; iBin < nBins + 2; iBin++) {

    /* the new total bin error */
    double binErrorSquared = TMath::Power(histo->GetBinError(iBin), 2.);

    /* include systematics */
    binErrorSquared += TMath::Power(systematics->GetBinError(iBin), 2.);
    histo->SetBinError(iBin, TMath::Sqrt(binErrorSquared) + systematics->GetBinContent(iBin));
  }

  /* operation finished successfully */
  return true;
}


//__________________________________________________________________________________|___________

TH1 * TQHistogramUtils::getSystematics(TH1 * h_nominal, TList * singleVars, TList * pairVars) {

  /* get the input variations */
  int nSingleVars = (singleVars ? singleVars->GetEntries() : 0);
  int nPairVars = (pairVars ? pairVars->GetEntries() : 0);

  /* stop if number of Up/Down paired variations is not an even number */
  if (nPairVars % 2 == 1)
    return 0;

  /* use nominal input histogram as binning template */
  TH1 * systematics = copyHistogram(h_nominal);

  /* stop if copy is invalid */
  if (!h_nominal)
    return 0;

  /* reset bin content */
  systematics->Reset();

  /* loop over histogram bins */
  int nBins = getNBins(systematics);
  for (int iBin = 0; iBin < nBins; iBin++) {

    /* nominal bin content */
    double nom = h_nominal->GetBinContent(iBin);

    /* the total systematic uncertainty of this bin */
    double totalSysSquared = 0.;

    /* loop and include single variations */
    for (int iVar = 0; iVar < nSingleVars; iVar++) {

      /* get the list object */
      TObject * obj = singleVars->At(iVar);

      /* check the histograms validity */
      if (obj && obj->InheritsFrom(TH1::Class())
          && checkConsistency(h_nominal, (TH1*)obj))
        /* add the systematic uncertainty of this source */
        totalSysSquared += TMath::Power(((TH1*)obj)->GetBinContent(iBin) - nom, 2.);
      else
        /* invalid histogram...stop? */
        return 0;
    }

    /* loop and include Up/Down pair variations */
    for (int iVar = 0; iVar < (nPairVars / 2); iVar++) {

      /* get the list object */
      TObject * obj0 = pairVars->At(2*iVar);
      TObject * obj1 = pairVars->At(2*iVar + 1);

      /* check the histograms validity */
      if (obj0 && obj0->InheritsFrom(TH1::Class())
          && checkConsistency(h_nominal, (TH1*)obj0) &&
          obj1 && obj1->InheritsFrom(TH1::Class())
          && checkConsistency(h_nominal, (TH1*)obj1))
        /* add the systematic uncertainty of this source */
        totalSysSquared += .5 * (
                                 TMath::Power(((TH1*)obj0)->GetBinContent(iBin) - nom, 2.) +
                                 TMath::Power(((TH1*)obj1)->GetBinContent(iBin) - nom, 2.));
      else
        /* invalid histogram...stop? */
        return 0;
    }

    systematics->SetBinError(iBin, TMath::Sqrt(totalSysSquared));
  }

  /* return the systematics histogram */
  return systematics;
}

//__________________________________________________________________________________|___________


bool TQHistogramUtils::addHistogram(TH1 * histo1, const TH1 * histo2, TQCounter* scale, double corr12, bool includeScaleUncertainty) {
  // add two histograms, just like TH1::Add does
  // this function will handle scale uncertainties and possible correlations
  // between the two histograms properly on a bin-by-bin basis
  if(scale)
    return TQHistogramUtils::addHistogram(histo1,histo2,scale->getCounter(),scale->getError(),corr12,includeScaleUncertainty);
  else
    return TQHistogramUtils::addHistogram(histo1,histo2,1.,0.,corr12,false);
}

//__________________________________________________________________________________|___________

bool TQHistogramUtils::addHistogramInQuadrature(TH1 * histo1, const TH1 * histo2, double factor) {
  // add two histograms in quadrature
  // bin = sqrt ( bin^2(histo1) + factor * bin^2(histo2) )
  // replaces contents of histo1
  int nbins = TQHistogramUtils::getNbinsGlobal(histo1);
  int binmin = 0;
  int binmax = nbins+1;
  if(TQHistogramUtils::hasBinLabels(histo1)){
    binmin = 1;
    binmax = nbins+1;
  }

  if (!histo1 || !histo2 || !checkConsistency(histo1, histo2)) {
    // check validity of input histograms
    return false;
  }

  int nentries = histo1->GetEntries();
  for(int i=binmin; i<binmax; ++i){
    auto a = histo1->GetBinContent(i);
    auto b = histo2->GetBinContent(i);
    histo1->SetBinContent(i,sqrt(a*a+factor*b*b));
    histo1->SetBinError(i,0.0);
  }
  histo1->SetEntries(nentries);

  return true;
}

//__________________________________________________________________________________|___________

bool TQHistogramUtils::addHistogramAsError(TH1 * hist, const TH1 * errhist, bool isRelative) {
  // add a histogram in quadrature to the error of the other histogram
  // binerror = sqrt ( binerror^2(hist) + bin^2(errorhist) )
  // replaces contents of hist
  int nbins = TQHistogramUtils::getNbinsGlobal(hist);
  int binmin = 0;
  int binmax = nbins+1;
  if(TQHistogramUtils::hasBinLabels(hist)){
    binmin = 1;
    binmax = nbins+1;
  }

  if (!hist || !errhist || !checkConsistency(hist, errhist)) {
    // check validity of input histograms
    return false;
  }

  int nentries = hist->GetEntries();
  for(int i=binmin; i<binmax; ++i){
    auto a = hist->GetBinError(i);
    auto b = errhist->GetBinContent(i);
    if(isRelative) b *= a;
    hist->SetBinError(i,sqrt(a*a+b*b));
  }
  hist->SetEntries(nentries);

  return true;
}

//__________________________________________________________________________________|___________

bool TQHistogramUtils::addHistogramInQuadrature(TH1 * histo1, double value, double factor) {
  // add a value to a histogram in quadrature
  // bin = sqrt ( bin^2(histo1) + factor * value^2) )
  // replaces contents of histo1
  if (!histo1){
    // check validity of input histogram
    return false;
  }
  int nbins = TQHistogramUtils::getNbinsGlobal(histo1);
  int binmin = 0;
  int binmax = nbins+1;
  if(TQHistogramUtils::hasBinLabels(histo1)){
    binmin = 1;
    binmax = nbins+1;
  }
  int nentries = histo1->GetEntries();
  for(int i=binmin; i<binmax; ++i){
    auto a = histo1->GetBinContent(i);
    histo1->SetBinContent(i,sqrt(a*a+factor*value*value));
    histo1->SetBinError(i,0.0);
  }
  histo1->SetEntries(nentries);
  return true;
}

//__________________________________________________________________________________|___________

TH1* TQHistogramUtils::sumOfSquares(const std::vector<TH1*>& histograms) {
  // creates a new histogram with contents equal to the sum of squared bin contents
  // of the input histograms (a*a + b*b + ...).
  // returns nullptr if list of input histograms is empty.
  // Note: for sum in quadrature (i.e. sqrt(a*a + b*b + ...)) use
  // TQHistogramUtils::sumHistogramsInQuadrature !
  TH1* result = nullptr;
  int nBins=0;
  int bin=0;
  for (const TH1* hist: histograms) {
    if (!result) {
      result = TQHistogramUtils::createHistogram(TQHistogramUtils::getHistogramDefinition(hist)); //does not copy bin content
      nBins = TQHistogramUtils::getNbinsGlobal(result); //index of last bin+1
    }
    for (bin=0; bin<nBins; ++bin) {
      result->SetBinContent( bin, result->GetBinContent(bin) + pow(hist->GetBinContent(bin), 2) );
    }
  }
  return result;
}

//__________________________________________________________________________________|___________

TH1* TQHistogramUtils::sumHistogramsInQuadrature(const std::vector<TH1*>& histograms) {
  // creates a new histogram with contents equal to the bin-by-bin quadrature sum
  // (sqrt(a*a+b*b+...)) of the input histograms.
  // Note: for sum of squared bin contents (i.e. a*a + b*b + ..., without sqrt() ) use
  // TQHistogramUtils::sumOfSquares !

  TH1* result = TQHistogramUtils::sumOfSquares(histograms);
  if (!result) return nullptr;
  int nBins = TQHistogramUtils::getNbinsGlobal(result);
  for (int bin=0; bin<nBins; ++bin) {
      result->SetBinContent( bin, std::sqrt(result->GetBinContent(bin)) );
  }
  return result;
}

//__________________________________________________________________________________|___________

bool TQHistogramUtils::addHistogramWithoutError(TH1 * histo1, const TH1 * histo2, double scale) {
  // add two histograms, just like TH1::Add does, neglecting errors on the second one
  if(!histo1 || !histo2) return false;
  int nbins = TQHistogramUtils::getNbinsGlobal(histo1);
  int binmin = 0;
  int binmax = nbins+1;
  if(TQHistogramUtils::hasBinLabels(histo1)){
    binmin = 1;
    binmax = nbins+1;
  }

  const int n1 = histo1->GetEntries();
  const int n2 = histo2->GetEntries();
  for(int i=binmin; i<binmax; ++i){
    const double val1 = histo1->GetBinContent(i);
    const double val2 = histo2->GetBinContent(i);
    const double err1 = histo1->GetBinError(i);
    histo1->SetBinContent (i,val1+scale*val2);
    histo1->SetBinError (i,err1);
  }
  histo1->SetEntries(n1+n2);

  return true;
}

//__________________________________________________________________________________|___________


bool TQHistogramUtils::divideHistogramWithoutError(TH1 * histo1, const TH1 * histo2) {
  int nbins = TQHistogramUtils::getNbinsGlobal(histo1);
  int binmin = 0;
  int binmax = nbins+1;
  if(TQHistogramUtils::hasBinLabels(histo1)){
    binmin = 1;
    binmax = nbins+1;
  }

  const int n1 = histo1->GetEntries();
  for(int i=binmin; i<binmax; ++i){
    const double val1 = histo1->GetBinContent(i);
    const double val2 = histo2->GetBinContent(i);
    const double err1 = histo1->GetBinError(i);
    if (val2 != 0) {
      histo1->SetBinContent (i,val1/val2);
      histo1->SetBinError   (i,err1/val2);
    } else {
      // if denominator is zero, set bin content & error to be 0.0,
      // which forces the bin entry to be "empty".
      // this is the same behaviour as TH1::Divide().
      histo1->SetBinContent (i,0.0);
      histo1->SetBinError   (i,0.0);
    }
  }
  histo1->SetEntries(n1);

  return true;
}

//__________________________________________________________________________________|___________


bool TQHistogramUtils::multiplyHistogramWithoutError(TH1 * histo1, const TH1 * histo2) {
  int nbins = TQHistogramUtils::getNbinsGlobal(histo1);
  int binmin = 0;
  int binmax = nbins+1;
  if(TQHistogramUtils::hasBinLabels(histo1)){
    binmin = 1;
    binmax = nbins+1;
  }

  const int n1 = histo1->GetEntries();
  for(int i=binmin; i<binmax; ++i){
    const double val1 = histo1->GetBinContent(i);
    const double val2 = histo2->GetBinContent(i);
    const double err1 = histo1->GetBinError(i);
    histo1->SetBinContent (i,val1*val2);
    histo1->SetBinError   (i,err1*val2);
  }
  histo1->SetEntries(n1);

  return true;
}

//__________________________________________________________________________________|___________


bool TQHistogramUtils::addHistogram(TH1 * histo1, const TH1 * histo2, double scale, double scaleUncertainty, double corr12, bool includeScaleUncertainty) {
  // add two histograms, just like TH1::Add does
  // this function will handle scale uncertainties and possible correlations
  // between the two histograms properly on a bin-by-bin basis

  if (!histo1 || !histo2 || !checkConsistency(histo1, histo2)) {
    // check validity of input histograms
    return false;
  }

  TProfile* p1 = dynamic_cast<TProfile*>(histo1);
  const TProfile* p2 = dynamic_cast<const TProfile*>(histo2);
  if(p1 && p2){
    p1->Add(p2,scale);
  } else {
    const int n1 = histo1->GetEntries();
    const int n2 = histo2->GetEntries();

    int nbins = TQHistogramUtils::getNbinsGlobal(histo1);
    int binmin = 0;
    int binmax = nbins+1;
    if(TQHistogramUtils::hasBinLabels(histo1)){
      binmin = 1;
      binmax = nbins+1;
    }

    for(int i=binmin; i<binmax; ++i){
      const double val1 = histo1->GetBinContent(i);
      const double err1 = histo1->GetBinError(i);
      const double val2 = histo2->GetBinContent(i);
      const double err2 = histo2->GetBinError(i);
      const double val = val1 + scale*val2;
      histo1->SetBinContent(i,val);
      if(includeScaleUncertainty){
        const double err_squared = err1*err1 + err2*err2*scale*scale + val2*val2*scaleUncertainty*scaleUncertainty + 2 * corr12 * scale * err1 * err2;
        histo1->SetBinError (i,sqrt(err_squared));
      } else {
        const double err_squared = err1*err1 + err2*err2*scale*scale + 2 * corr12 * scale * err1 * err2;
        histo1->SetBinError (i,sqrt(err_squared));
      }
    }
    histo1->SetEntries(n1+n2);
  }
  return true;
}

//__________________________________________________________________________________|___________


bool TQHistogramUtils::replaceBins(TH1 * histo1, TH1 * histo2, std::vector<int> bins){
  // replace the bin contents and errors of histo1 by the ones from histo2 in the given bins

  if (!histo1 || !histo2 || !checkConsistency(histo1, histo2)) {
    // check validity of input histograms
    return false;
  }

  int nentries = histo1->GetEntries();

  for(auto bin:bins){
    histo1->SetBinContent(bin,histo2->GetBinContent(bin));
    histo1->SetBinError(bin,histo2->GetBinError(bin));
  }

  histo1->SetEntries(nentries);

  return true;
}


//__________________________________________________________________________________|___________


bool TQHistogramUtils::scaleHistogram(TH1 * histo, TQCounter* scale, bool includeScaleUncertainty) {
  // scales a histogram, just like TH1::Scale does
  // this function will handle scale uncertainties if requested
  if(scale)
    return TQHistogramUtils::scaleHistogram(histo,scale->getCounter(),scale->getError(),includeScaleUncertainty);
  else
    return TQHistogramUtils::scaleHistogram(histo,1.,0.,false);
}

//__________________________________________________________________________________|___________

bool TQHistogramUtils::scaleHistogram(TH1 * histo, double scale, double scaleUncertainty, bool includeScaleUncertainty) {
  // scales a histogram, just like TH1::Scale does
  // this function will handle scale uncertainties if requested
  if(histo->InheritsFrom(TProfile::Class())) return false;
  const int nentries(histo->GetEntries());
  for(int i=0; i<TQHistogramUtils::getNbinsGlobal(histo); ++i){
    const double val = histo->GetBinContent(i);
    const double err = histo->GetBinError(i);
    const double val_new = val * scale;
    histo->SetBinContent(i,val_new);
    if(includeScaleUncertainty){
      histo->SetBinError (i,sqrt(err * err * scale * scale + val * val * scaleUncertainty*scaleUncertainty));
    } else {
      histo->SetBinError (i,err * scale);
    }
  }
  histo->SetEntries(nentries);
  return true;
}

//__________________________________________________________________________________|___________

bool TQHistogramUtils::drawHistograms(TList * histograms,
                                      TString drawOption, TString extOptions) {
	// draw a list of histograms
  if (!histograms)
    return false;

  bool applyColors = false;
  bool drawLegend = false;
  TString legendOptions = "l";
  bool setTitle = false;
  TString title;

  if (!extOptions.IsNull()) {

    /* parse the extended options string */
    TQTaggable * tags = new TQTaggable(extOptions);

    tags->getTagBool ("applyColors", applyColors);
    tags->getTagBool ("legend", drawLegend);
    tags->getTagString ("legend.drawOptions", legendOptions);

    setTitle = tags->getTagString("title", title);

    /* delete the taggable object */
    delete tags;
  }

  /* true if every entry in the input list is valid */
  bool success = true;

  /* false for the first histogram to draw */
  bool drawSame = false;


  /* ===== create the legend to draw ===== */

  /* the legend to draw */
  TLegend * legend = 0;

  if (drawLegend) {
    /* create the legend */
    legend = new TLegend(0.65, 0.65, .95, .9);
    /* set the legend's options */
    legend->SetFillColor(kWhite);
  }


  /* ===== draw the histograms ===== */

  /* the first color */
  Color_t color = 1;

  /* loop over entries in input list */
  TIterator * itr = histograms->MakeIterator();
  TObject * obj;
  while ((obj = itr->Next())) {

    /* check the entry's validity */
    if (obj->InheritsFrom(TH1::Class())) {

      /* the histogram */
      TH1 * histo = (TH1*)obj;

      /* set the line color if requested */
      if (applyColors)
        histo->SetLineColor(color++);

      /* add an entry to the legend (if requested) */
      if (legend)
        legend->AddEntry(histo, histo->GetTitle(), legendOptions.Data());

      /* set the title */
      if (setTitle)
        histo->SetTitle(title.Data());

      /* draw the histogram */
      if (drawSame)
        histo->Draw(TString::Format("%s same", drawOption.Data()).Data());
      else
        histo->Draw(drawOption.Data());

      /* the next histograms will be drawn with "same" option */
      drawSame = true;

    } else {
      success = false;
    }
  }

  /* draw the legend if requested */
  if (legend)
    legend->Draw("same");

  /* delete iterator */
  delete itr;

  /* return true if drawing was successful */
  return success;
}


//__________________________________________________________________________________|___________

bool TQHistogramUtils::resetBinErrors(TH1 * histo) {
	// reset all the bin errors on a histogram

  if (!histo)
    return false;

  // loop on bins and reset bin errors
  int nBins = getNBins(histo);
  for (int iBin = 0; iBin < nBins; iBin++)
    histo->SetBinError(iBin, 0.);

  // operation finished successfully
  return true;
}

//__________________________________________________________________________________|___________

int TQHistogramUtils::getDimension(const TH1 * histo) {
  // Returns the dimensionality of the histogram <histo> (e.g. 1 for TH1F, 2 for
  // TH2D, ...). Returns 0 if the input histogram is invalid.

  if (!histo) {
    // is an invalid pointer
    return 0;
  } else if (histo->InheritsFrom(TProfile2D::Class())) {
    // is a TProfile2D
    return -2;
  } else if (histo->InheritsFrom(TProfile::Class())) {
    // is a TProfile
    return -1;
  } else if (histo->InheritsFrom(TH3::Class())) {
    // is a 3D histogram
    return 3;
  } else if (histo->InheritsFrom(TH2::Class())) {
    // is a 2D histogram
    return 2;
  } else {
    // must be a 1D histogram (no??)
    return 1;
  }
}

//__________________________________________________________________________________|___________

const TAxis*  TQHistogramUtils::getAxis(const TNamed* obj, int idx){
  // get the X (idx=0), Y (idx=1) or Z (idx=3) axis of a TH1 or TGraph or TGraph2D object
  if(obj->InheritsFrom(TH1::Class())){
    TH1* hist = (TH1*)obj;
    switch(idx){
    case 0: return hist->GetXaxis();
    case 1: return hist->GetYaxis();
    case 2: return hist->GetZaxis();
    default: return NULL;
    }
  }
  if(obj->InheritsFrom(TGraph::Class())){
    TGraph* graph = (TGraph*)obj;
    switch(idx){
    case 0: return graph->GetXaxis();
    case 1: return graph->GetYaxis();
    default: return NULL;
    }
  }
  if(obj->InheritsFrom(TGraph2D::Class())){
    TGraph2D* graph = (TGraph2D*)obj;
    switch(idx){
    case 0: return graph->GetXaxis();
    case 1: return graph->GetYaxis();
    case 2: return graph->GetZaxis();
    default: return NULL;
    }
  }
  return NULL;
}

// named this differently than getAxis so we avoid an infinite recursion warning
TAxis*  TQHistogramUtils::getAxis_nonconst(TNamed* obj, int idx){
  return const_cast<TAxis*>(getAxis(obj, idx));
}

//__________________________________________________________________________________|___________

int TQHistogramUtils::getNBins(const TH1 * histo, bool includeUnderflowOverflow) {
  // Returns the total number of bins of the input histogram <histo> including over-
  // and underflow bins as well as all dimensions of the histogram or 0 in case of
  // failure. That is, for a 10x10 bins 2D histogram 144 = (10+2)*(10+2) is returned.

  /* stop if histogram is invalid */
  if (!histo)
    return 0;

  /* the number of bins */
  int nBins = histo->GetNbinsX() + (includeUnderflowOverflow ? 2 : 0);

  if (histo->InheritsFrom(TH3::Class())) {
    nBins *= histo->GetNbinsY() + (includeUnderflowOverflow ? 2 : 0);
    nBins *= histo->GetNbinsZ() + (includeUnderflowOverflow ? 2 : 0);
  } else if (histo->InheritsFrom(TH2::Class())) {
    nBins *= histo->GetNbinsY() + (includeUnderflowOverflow ? 2 : 0);
  }

  /* return the number of bins */
  return nBins;
}


//__________________________________________________________________________________|___________

int TQHistogramUtils::getSizePerBin(const TH1 * histo) {
	// return the size of bits per bin
  if (!histo)
    return 0;
  else if ( histo->InheritsFrom(TH1F::Class()) ||
            histo->InheritsFrom(TH2F::Class()) ||
            histo->InheritsFrom(TH3F::Class()))
    return 2 * 4;
  else if ( histo->InheritsFrom(TH1D::Class()) ||
            histo->InheritsFrom(TH2D::Class()) ||
            histo->InheritsFrom(TH3D::Class()))
    return 2 * 8;
  else
    return 0;
}


//__________________________________________________________________________________|___________

int TQHistogramUtils::estimateSize(const TH1 * histo) {
	// estimate the memory size of a histogram
  if (histo)
    return getNBins(histo) * getSizePerBin(histo);
  else
    return 0;
}


//__________________________________________________________________________________|___________

bool TQHistogramUtils::checkConsistency(const TH1 * histo1, const TH1 * histo2, bool verbose) {
  // Check if two histograms have consistent binning

  if (!histo1 || !histo2){
    if(verbose) ERRORfunc("received NULL pointer");
    return false;
  }

  DEBUGfunc("function called on histograms '%s' and '%s'",histo1->GetName(),histo2->GetName());

  /* get histogram dimensions */
  int dim = getDimension(histo1);

  /* stop if the histograms have different dimensions */
  if (dim != getDimension(histo2)){
    if(verbose) ERRORfunc("inconsistent histogram dimensions");
    return false;
  }

  /* check consistency of first dimension
   * =================================================== */

  /* stop if the number of bins on the X axis are different */
  int nBinsX1 = histo1->GetNbinsX();
  int nBinsX2 = histo2->GetNbinsX();
  if (nBinsX1 != nBinsX2){
    if(verbose) ERRORfunc("inconsistent number of bins in X-direction: %d vs. %d",nBinsX1,nBinsX2);
    return false;
  }

  /* stop if the ranges of the X axis are different */
  if (!TMath::AreEqualRel(
                          histo1->GetXaxis()->GetBinLowEdge(0),
                          histo2->GetXaxis()->GetBinLowEdge(0), 1E-12) ||
      !TMath::AreEqualRel(
                          histo1->GetXaxis()->GetBinUpEdge(nBinsX1),
                          histo2->GetXaxis()->GetBinUpEdge(nBinsX2), 1E-12)){
    if(verbose) ERRORfunc("inconsistent axis ranges in X-direction");
    return false;
  }

  /* TODO: check the bin width individually */

  /* for 1dim histograms we are done */
  if (dim < 2)
    return true;

  /* check consistency of second dimension
   * =================================================== */

  /* stop if the number of bins on the Y axis are different */
  int nBinsY1 = histo1->GetNbinsY();
  int nBinsY2 = histo2->GetNbinsY();
  if (nBinsY1 != nBinsY2){
    if(verbose) ERRORfunc("inconsistent number of bins in Y-direction");
    return false;
  }

  /* stop if the ranges of the Y axis are different */
  if (!TMath::AreEqualRel(
                          histo1->GetYaxis()->GetBinLowEdge(0),
                          histo2->GetYaxis()->GetBinLowEdge(0), 1E-12) ||
      !TMath::AreEqualRel(
                          histo1->GetYaxis()->GetBinUpEdge(nBinsY1),
                          histo2->GetYaxis()->GetBinUpEdge(nBinsY2), 1E-12)){
    if(verbose) ERRORfunc("inconsistent axis ranges in Y-direction");
    return false;
  }

  /* TODO: check the bin width individually */

  /* for 2dim histograms we are done */
  if (dim < 3)
    return true;

  /* check consistency of third dimension
   * =================================================== */

  /* stop if the number of bins on the Z axis are different */
  int nBinsZ1 = histo1->GetNbinsZ();
  int nBinsZ2 = histo2->GetNbinsZ();
  if (nBinsZ1 != nBinsZ2){
    if(verbose) ERRORfunc("inconsistent number of bins in Y-direction");
    return false;
  }

  /* stop if the ranges of the Z axis are different */
  if (!TMath::AreEqualRel(
                          histo1->GetZaxis()->GetBinLowEdge(0),
                          histo2->GetZaxis()->GetBinLowEdge(0), 1E-12) ||
      !TMath::AreEqualRel(
                          histo1->GetZaxis()->GetBinUpEdge(nBinsZ1),
                          histo2->GetZaxis()->GetBinUpEdge(nBinsZ2), 1E-12)){
    if(verbose) ERRORfunc("inconsistent axis ranges in Z-direction");
    return false;
  }

  if(dim < 4)
    return true;

  /* TODO: check the bin width individually */

  if(verbose) ERRORfunc("histograms have unknown dimensionality!");
  return false;
}


//__________________________________________________________________________________|___________

TGraphAsymmErrors * TQHistogramUtils::getGraph(const TH1 * histo) {
	// convert a histogram into a TGraph
  if (!histo)
    return 0;

  // only 1 dimensional histograms supported
  if (getDimension(histo) != 1)
    return 0;

  // the number of bins of the histogram
  int nBins = getNBins(histo);

  // the error graph to return
  TGraphAsymmErrors * graph = new TGraphAsymmErrors(nBins);
  graph->SetName(TString::Format("g_%s",histo->GetName()));
  graph->SetTitle(histo->GetTitle());

  // loop over bins and set graph point properties
  for (int iBin = 1; iBin <= nBins; iBin++) {
    // set the point
    graph->SetPoint(iBin,
                    histo->GetBinCenter(iBin),
                    histo->GetBinContent(iBin));
    /* set the point error */
    graph->SetPointError(iBin,
                         histo->GetBinWidth(iBin) / 2., histo->GetBinWidth(iBin) / 2.,
                         histo->GetBinError(iBin), histo->GetBinError(iBin));
  }

  /* return error graph */
  graph->SetLineStyle(histo->GetLineStyle());
  graph->SetLineColor(histo->GetLineColor());
  graph->SetFillStyle(histo->GetFillStyle());
  graph->SetFillColor(histo->GetFillColor());
  graph->GetXaxis()->SetLimits(histo->GetXaxis()->GetXmin(),histo->GetXaxis()->GetXmax());

  // transfer axis titles from histogram
  if(histo->GetXaxis()) graph->GetXaxis()->SetTitle(histo->GetXaxis()->GetTitle());
  if(histo->GetYaxis()) graph->GetYaxis()->SetTitle(histo->GetYaxis()->GetTitle());

  return graph;
}


//__________________________________________________________________________________|___________

TGraphAsymmErrors * TQHistogramUtils::getGraph(const TH1* nom, TObjArray* sys) {
	// convert a histogram into a TGraph
  if (!nom || !sys->GetEntries())
    return 0;

  /* only 1 dimensional histograms supported */
  if (getDimension(nom) != 1 || getDimension((TH1*)sys->First()) != 1)
    return 0;

  /* the number of bins of the histogram */
  int nBins = getNBins(nom);

  /* copy from the nominal to create template */
  TH1* upper = (TH1*)nom->Clone();
  TH1* lower = (TH1*)nom->Clone();
  upper->Reset();
  lower->Reset();

  /* loop over systematics and generate upper and lower */
  for (int iSys = 0; iSys < sys->GetEntries(); ++iSys) {
    TH1* thisSys = (TH1*) sys->At(iSys);
    for (int ibin = 0; ibin <= thisSys->GetNbinsX()+1; ++ibin) {
      double add_sys = thisSys->GetBinContent(ibin);
      double add_sys_err = thisSys->GetBinError(ibin);
      double cur_sys = upper->GetBinContent(ibin);
      double new_sys = TMath::Sqrt(cur_sys*cur_sys + add_sys*add_sys); // assumes that everything is un-correlated
      //double new_sys = cur_sys + add_sys; //linear sum. extra conservative approach
      double cur_sys_err = upper->GetBinError(ibin);
      double new_sys_err = TMath::Sqrt(cur_sys_err*cur_sys_err + add_sys_err*add_sys_err);
      if (add_sys >= 0) {
        upper->SetBinContent(ibin, new_sys);
        upper->SetBinError(ibin, new_sys_err);
      } else {
        lower->SetBinContent(ibin, new_sys);
        lower->SetBinError(ibin, new_sys_err);
      }
    }
  }

  /* the error graph to return */
  TGraphAsymmErrors * graph = new TGraphAsymmErrors(nBins);

  /* loop over bins and set graph point properties */
  for (int iBin = 1; iBin <= nBins; iBin++) {
    /* set the point */
    graph->SetPoint(iBin,
                    nom->GetBinCenter(iBin),
                    nom->GetBinContent(iBin));

    /* add the statistical error */
    double statErr = nom->GetBinError(iBin);
    double lowerErr = TMath::Sqrt(statErr*statErr + lower->GetBinContent(iBin)*lower->GetBinContent(iBin));
    double upperErr = TMath::Sqrt(statErr*statErr + upper->GetBinContent(iBin)*upper->GetBinContent(iBin));

    /* set the point error */
    graph->SetPointError(iBin,
                         nom->GetBinWidth(iBin) / 2., nom->GetBinWidth(iBin) / 2.,
                         lowerErr, upperErr);
  }

  /* return error graph */
  return graph;
}

//__________________________________________________________________________________|___________

std::vector<TString> TQHistogramUtils::histoBinsToCutStrings(TH1* hist, const TString& varexpr, TString cutname, const TString& basecutname){
  // creates a std::vector of TString that represent cut definitions according to the histogram bins
  // the cutname should contain a %d placeholder which will be replaced by the cut (bin) index
  // if the cutname does not contain such a placeholder, "_%d" will be appended
  // if no cutname is given, the histogram name will be used
  // if a non-empty basecutname is given, it will be included in the cut definition strings
  // underflow and overflow bins will automatically be included as first and last vector element
  if(cutname.IsNull()) cutname = hist->GetName();
  if(!cutname.Contains("%d")) cutname += "_%d";
  cutname.Append(":");
  if(!basecutname.IsNull()){
    cutname.Append(" ");
    cutname.Append(basecutname);
    cutname.Append(" <<");
  }
  cutname.Append(" ");
  std::vector<TString> cutstrings;
  cutstrings.push_back(TString::Format(cutname.Data(),0) + varexpr + TString::Format(" < %f ;",hist->GetBinLowEdge(1)));
  TString cutstringtemplate = cutname + "(%s < %f) && (%s > %f);";
  for(int i=2; i<=hist->GetNbinsX(); i++){
    cutstrings.push_back(TString::Format(cutstringtemplate.Data(),i-1,varexpr.Data(),hist->GetBinLowEdge(i),varexpr.Data(),hist->GetBinLowEdge(i-1)));
  }
  cutstrings.push_back(TString::Format(cutname.Data(),hist->GetNbinsX()) + varexpr + TString::Format(" > %f ;",hist->GetBinLowEdge(hist->GetNbinsX()+1)));
  return cutstrings;
}


//__________________________________________________________________________________|___________

double TQHistogramUtils::getPoisson(double b, double s) {
  // Returns the Poisson significance according to <b> expected background events
  // and <s> expected signal events. Returns 0 if any term becomes invalid
  //
  // Poisson significance = TMath::Sqrt(2. * ((s + b) * TMath::Log(1. + s / b) - s))

  if (b <= 0. || s < 0.) {
    return std::numeric_limits<double>::quiet_NaN();
  }

  double sqrtInput = 2. * ((s + b) * TMath::Log(1. + s / b) - s);
  if (sqrtInput < 0.) {
    return std::numeric_limits<double>::quiet_NaN();
  }

  return TMath::Sqrt(sqrtInput);
}

//__________________________________________________________________________________|___________

double TQHistogramUtils::getPoissonError(double b, double s, double db, double ds) {
  // Returns the error on the Poisson significance according to <b> expected background events
  // and <s> expected signal events. Returns 0 if any term becomes invalid
  //
  // Poisson significance = TMath::Sqrt(2. * ((s + b) * TMath::Log(1. + s / b) - s))
  // The error is propagated from errors in b and s according to the most general formula
  // for independent error propagation.

  if (b <= 0. || s < 0.) {
    return std::numeric_limits<double>::quiet_NaN();
  }

  // negative radicand check
  double sqrtInput = 2. * ((s + b) * TMath::Log(1. + s / b) - s);
  if (sqrtInput < 0.) {
    return std::numeric_limits<double>::quiet_NaN();
  }
  // Poisson significance
  double P = TMath::Sqrt(sqrtInput);

  double logTerm = TMath::Log(1 + s / b);

  // dP/ds = ( logTerm - 1 +     (b + s) / (b *     (1 + s / b)) ) / P
  // dP/db = ( logTerm     - s * (b + s) / (b * b * (1 + s / b)) ) / P
  double dPds = ( logTerm       ) / P;
  double dPdb = ( logTerm - s/b ) / P;

  return TMath::Sqrt( TMath::Power((dPds * ds), 2) + TMath::Power((dPdb * db), 2) );
}

//__________________________________________________________________________________|___________

double TQHistogramUtils::getPoissonWithError(double b, double db, double s) {
  // Returns the significance corresponding to a Poisson-Poisson model with asymptotic formula.
  // Returns 0 if any term becomes invalid
  //
  // Poisson-Poisson asymptotic significance = TMath::Sqrt(2. *(
  //         (s+b) * TMath::Log((s+b)*(b+db*db)/(b*b+(s+b)*db*db) ) -
  //   b*b/(db*db) * TMath::Log(1. +  (db*db*s)/(     b*(b+db*db)))    ) )
  // See slide 9 https://indico.cern.ch/event/768968/contributions/3195413/attachments/1743878/2822499/statsCommitteeAtlasWeeklyOct2018.pdf

  if (b <= 0. || db < 0.) {
    return std::numeric_limits<double>::quiet_NaN();
  }

  if (std::abs(s) < 1e-5) return 0.;

  double sqrtInput = 2. * (
          (s + b) * TMath::Log( (s + b) * (b + db*db) / ( b*b + (s + b) * db * db) ) -
    b*b / (db*db) * TMath::Log( 1. +          db*db*s / (b * (b + db*db) )    )        );
  if (sqrtInput < 0.) {
    return std::numeric_limits<double>::quiet_NaN();
  }

  return TMath::Sqrt(sqrtInput) * (s > 0. ? 1. : -1.);
}

//__________________________________________________________________________________|___________

double TQHistogramUtils::getPoissonWithErrorError(double b, double s, double db, double ds) {
  // Returns the error on the Poisson significance according to <b> expected background events
  // and <s> expected signal events. Returns 0 if any term becomes invalid
  //
  // Poisson significance = TMath::Sqrt(2. *(
  //         (s+b) * TMath::Log((s+b)*(b+db*db)/(b*b+(s+b)*db*db) ) -
  //   b*b/(db*db) * TMath::Log(1. +  (db*db*s)/(     b*(b+db*db)))    ) )
  // The error is propagated from errors in b and s according to the most general formula
  // for independent error propagation.

  if (b <= 0. || db < 0.) {
    return std::numeric_limits<double>::quiet_NaN();
  }

  if (std::abs(s) < 1e-5) return 0.;

  double LogA=TMath::Log(  (s+b)*(b + db*db) /((s+b)*db*db + b*b) );
  double LogB=TMath::Log( ((s+b)*db*db + b*b)/(b*(b+db*db)) );
  // negative radicand check
  double sqrtInput = 2. * ( ((s+b)*db*db)*LogA - b*b*LogB );
  if (sqrtInput < 0.) {
    return std::numeric_limits<double>::quiet_NaN();
  }
  // Poisson significance
  //double P = TMath::Sqrt(sqrtInput);

  double dPds = db*LogA / TMath::Sqrt(sqrtInput);
  double dPdb = ( (b+db*db)*(db*db)*LogA - 2*b*(b+db*db)*LogB + s*db*db )  / (db*(b+db*db)*TMath::Sqrt(sqrtInput));

  return TMath::Sqrt( TMath::Power((dPds * ds), 2) + TMath::Power((dPdb * db), 2) );
}

//__________________________________________________________________________________|___________

double TQHistogramUtils::getSoverSqrtB(double b, double s) {
  // Returns <s> over square-root of <b> or zero in case <s> is negative or <b> is
  // not larger than zero.

  if (b > 0. && s >= 0.) {
    return s / TMath::Sqrt(b);
  } else {
    return 0.;
  }
}

//__________________________________________________________________________________|___________

double TQHistogramUtils::getSoverSqrtSplusB(double b, double s) {
  // Returns <s> over square-root of <b> or zero in case <s> is negative or <b> is
  // not larger than zero.

  if (b > 0. && s >= 0.) {
    return s / TMath::Sqrt(s+b);
  } else {
    return 0.;
  }
}

//__________________________________________________________________________________|___________

double TQHistogramUtils::getSoverB(double b, double s) {
  // Returns <s> over <b> or zero in case <s> is negative or <b> is not larger than
  // zero.

  if (b > 0. && s >= 0.) {
    return s / b;
  } else {
    return 0.;
  }
}


//__________________________________________________________________________________|___________

double TQHistogramUtils::getSignificance(double b, double s,
                                         TString sgnfName, double berr, TString * sgnfTitle) {
	// calculate the significance given a certain string identifier
	// supported versions are:
	// poission, soversqrtb, soversqrtsplusb, soverb
  double sgnf = -1.;

  if (sgnfName.CompareTo("poisson", TString::kIgnoreCase) == 0) {
    if (sgnfTitle)
      *sgnfTitle = "Poisson Significance";
    sgnf = getPoisson(b, s);
  } else if (sgnfName.CompareTo("soversqrtb", TString::kIgnoreCase) == 0) {
    if (sgnfTitle)
      *sgnfTitle = "signal / #sqrt{background}";
    sgnf = getSoverSqrtB(b, s);
  } else if (sgnfName.CompareTo("soversqrtsplusb", TString::kIgnoreCase) == 0) {
    if (sgnfTitle)
      *sgnfTitle = "signal / #sqrt{signal+background}";
    sgnf = getSoverSqrtSplusB(b, s);
  } else if (sgnfName.CompareTo("soverb", TString::kIgnoreCase) == 0) {
    if (sgnfTitle)
      *sgnfTitle = "signal / background";
    sgnf = getSoverB(b, s);
  } else if (sgnfName.CompareTo("asymptoticPoissonPoisson", TString::kIgnoreCase) == 0) {
    if (sgnfTitle)
      *sgnfTitle = "Poisson-Poisson model Significance";
    sgnf = getPoissonWithError(b, berr, s);
  }

  return sgnf;

}

//__________________________________________________________________________________|___________

bool TQHistogramUtils::areEqual(TH1* first, TH1* second, bool includeUnderflowOverflow, bool compareErrors, double tolerance){
  // return true if two histograms are completely equal
  // false otherwise
  if(!first || !second) return false;
  if(!checkConsistency(first,second)) return false;
  if(first->GetNbinsX() != second->GetNbinsX()) return false;
  double integral = first->Integral() + second->Integral();
  for(int i= !includeUnderflowOverflow; i<first->GetNbinsX()-!includeUnderflowOverflow; i++){
    if(fabs((first->GetBinContent(i) - second->GetBinContent(i))/integral) > tolerance) return false;
    if(compareErrors && fabs((first->GetBinError(i) - second->GetBinError(i))/integral) > tolerance) return false;
  }
  return true;
}

//__________________________________________________________________________________|___________

void TQHistogramUtils::getSgnfAndErr(double b, double bErr, double s,
                                     double sErr, double & sgnf, double & sgnfErr, TString sgnfName, TString * sgnfTitle) {
	// calculate the significance given a certain string identifier
	// supported versions are:
	// poission, soversqrtb, soversqrtsplusb, soverb
  sgnf = getSignificance(b, s, sgnfName, bErr, sgnfTitle);

  /* variations of significance */
  double sgnf_bkg_up = getSignificance(b + bErr, s, sgnfName, bErr);
  double sgnf_bkg_down = getSignificance(b - bErr, s, sgnfName, bErr);
  double sgnf_sig_up = getSignificance(b, s + sErr, sgnfName, bErr);
  double sgnf_sig_down = getSignificance(b, s - sErr, sgnfName, bErr);

  /* the mean uncertainty on the significance caused
   * by background and signal variation separatly */
  double sgnf_bkg_err = (TMath::Abs(sgnf - sgnf_bkg_up)
                         + TMath::Abs(sgnf - sgnf_bkg_down)) / 2.;
  double sgnf_sig_err = (TMath::Abs(sgnf - sgnf_sig_up)
                         + TMath::Abs(sgnf - sgnf_sig_down)) / 2.;

  /* the mean total uncertainty of the significance */
  sgnfErr = TMath::Sqrt(TMath::Power(sgnf_bkg_err, 2)
                        + TMath::Power(sgnf_sig_err, 2));

}


//__________________________________________________________________________________|___________

TH1 * TQHistogramUtils::getCutEfficiencyHisto(TH1 * histo, TString options) {
  // Calculate the efficiency of a cut on the distribution given by the histogram
  // histo.

  /* stop if the input histogram is invalid */
  if (!histo)
    return 0;

  /* clone and reset the input histogram to get the binning */
  TH1 * h_eff = copyHistogram(histo, TString(histo->GetName()) + "_CutEff");
  h_eff->Reset();

  bool normToUnity = false;
  if (options.Contains("norm:yes", TString::kIgnoreCase))
    normToUnity = true;

  /* distinguish between one, two and three dimensional
   * histograms: this is a 3-dimensional histogram */
  if (histo->InheritsFrom(TH3::Class())) {

    /* not yet supported */
    return 0;

    /* this is a 2-dimensional histogram */
  } else if (histo->InheritsFrom(TH2::Class())) {

    TH2 * histo2 = (TH2*)histo;

    bool upperBoundOnX = true;
    bool upperBoundOnY = true;
    if (options.Contains("x:lower", TString::kIgnoreCase))
      upperBoundOnX = false;
    if (options.Contains("y:lower", TString::kIgnoreCase))
      upperBoundOnY = false;

    /* replace title of X axis */
    TString axisLabel = histo2->GetXaxis()->GetTitle();
    if (upperBoundOnX)
      axisLabel.Prepend("upper bound on ");
    else
      axisLabel.Prepend("lower bound on ");
    h_eff->GetXaxis()->SetTitle(axisLabel.Data());

    /* replace title of Y axis */
    axisLabel = histo2->GetYaxis()->GetTitle();
    if (upperBoundOnY)
      axisLabel.Prepend("upper bound on ");
    else
      axisLabel.Prepend("lower bound on ");
    h_eff->GetYaxis()->SetTitle(axisLabel.Data());


    int nBinsX = histo2->GetNbinsX();
    int nBinsY = histo2->GetNbinsY();

    for (int iBinX = 0; iBinX < nBinsX + 2; iBinX++) {
      
      for (int iBinY = 0; iBinY < nBinsY + 2; iBinY++) {
        int iBinXFrom = (upperBoundOnX ? 0 : iBinX);
        int iBinXTo = (upperBoundOnX ? iBinX : nBinsX + 1);
        int iBinYFrom = (upperBoundOnY ? 0 : iBinY);
        int iBinYTo = (upperBoundOnY ? iBinY : nBinsY + 1);

        double integral = histo2->Integral(iBinXFrom, iBinXTo, iBinYFrom, iBinYTo);

        h_eff->SetBinContent(h_eff->GetBin(iBinX, iBinY), integral);

      }
    }

    if (normToUnity)
      h_eff->Scale(1. / histo2->Integral(0, nBinsX + 1, 0, nBinsY + 1));

    /* this is a 1-dimensional histogram */
  } else {

    bool upperBoundOnX = true;
    if (options.Contains("x:lower", TString::kIgnoreCase))
      upperBoundOnX = false;

    /* replace title of X axis */
    TString axisLabel = histo->GetXaxis()->GetTitle();
    if (upperBoundOnX)
      axisLabel.Prepend("upper bound on ");
    else
      axisLabel.Prepend("lower bound on ");
    h_eff->GetXaxis()->SetTitle(axisLabel.Data());

    double integral = 0.;
    double integralErr = 0.;

    /* loop over bins and integrate */
    int nBinsX = histo->GetNbinsX();
    for (int iBinX = (upperBoundOnX ? 0 : nBinsX + 1);
         upperBoundOnX ? (iBinX <= nBinsX + 1) : iBinX >= 0;
         iBinX += (upperBoundOnX ? 1 : -1)) {

      integral += histo->GetBinContent(iBinX);
      integralErr += TMath::Power(histo->GetBinError(iBinX), 2);

      h_eff->SetBinContent(iBinX, integral);
      h_eff->SetBinError(iBinX, TMath::Sqrt(integralErr));

    }

    if (normToUnity)
      h_eff->Scale(1. / integral);

  }

  return h_eff;

}


//__________________________________________________________________________________|___________

TH1 * TQHistogramUtils::getSignificanceHisto(TH1 * histo_bkg,
                                             TH1 * histo_sig, TString options) {

  /* stop if the input histograms are invalid/inconsitent */
  if (!checkConsistency(histo_bkg, histo_sig))
    return 0;

  /* 3 dimensional histograms not yet supported */
  if (histo_bkg->InheritsFrom(TH3::Class()))
    return 0;

  /* select the significance to use */
  TString sgnfName;
  if (options.Contains("sgnf:poisson", TString::kIgnoreCase))
    /* poisson significance */
    sgnfName = "poisson";
  else if (options.Contains("sgnf:soversqrtb", TString::kIgnoreCase))
    /* signal over square root background */
    sgnfName = "soversqrtb";
  else if (options.Contains("sgnf:soversqrtsplusb", TString::kIgnoreCase))
    /* signal over square root signal plus background */
    sgnfName = "soversqrtsplusb";
  else if (options.Contains("sgnf:soverb", TString::kIgnoreCase))
    /* signal over background */
    sgnfName = "soverb";
  else if (options.Contains("sgnf:asymptoticPoissonPoisson", TString::kIgnoreCase))
    /* Poisson-poisson model with asymptotic formulae */
    sgnfName = "Poisson-Poisson model Significance";
  else
    /* unknown significance */
    return 0;

  /* create cut efficiency histograms */
  TH1 * h_bkg_CutEff = getCutEfficiencyHisto(histo_bkg, options);
  TH1 * h_sig_CutEff = getCutEfficiencyHisto(histo_sig, options);

  /* clone and reset the histogram to get the binning */
  TH1 * h_sgnf = copyHistogram(h_sig_CutEff, TString(histo_sig->GetName()) + "_" + sgnfName);
  h_sgnf->Reset();

  TString * sgnfTitle = new TString();

  if (histo_bkg->InheritsFrom(TH2::Class())) {

    TH2 * h_bkg_CutEff2 = (TH2*)h_bkg_CutEff;
    TH2 * h_sig_CutEff2 = (TH2*)h_sig_CutEff;

    int nBinsX = h_sgnf->GetNbinsX();
    int nBinsY = h_sgnf->GetNbinsY();

    for (int iBinX = 0; iBinX < nBinsX + 2; iBinX++) {
      for (int iBinY = 0; iBinY < nBinsY + 2; iBinY++) {

        double significance = getPoisson(
                                         h_bkg_CutEff2->GetBinContent(iBinX, iBinY),
                                         h_sig_CutEff2->GetBinContent(iBinX, iBinY));

        h_sgnf->SetBinContent(iBinX, iBinY, significance);

      }
    }

  } else {

    int nBinsX = h_sgnf->GetNbinsX();
    for (int iBinX = 0; iBinX < nBinsX + 2; iBinX++) {

      double sgnf = 0.;
      double sgnfErr = 0.;

      getSgnfAndErr( h_bkg_CutEff->GetBinContent(iBinX),
                     h_bkg_CutEff->GetBinError(iBinX),
                     h_sig_CutEff->GetBinContent(iBinX),
                     h_sig_CutEff->GetBinError(iBinX),
                     sgnf, sgnfErr, sgnfName, sgnfTitle);

      h_sgnf->SetBinContent (iBinX, sgnf);
      h_sgnf->SetBinError (iBinX, sgnfErr);

    }

    h_sgnf->GetYaxis()->SetTitle(sgnfTitle->Data());

  }

  /* delete the cut efficiency histograms */
  delete h_bkg_CutEff;
  delete h_sig_CutEff;
  /* delete the title string */
  delete sgnfTitle;

  /* return the significance histogram */
  return h_sgnf;

}


//__________________________________________________________________________________|___________

double TQHistogramUtils::getSummedBinByBinSignificance(TH1 * histo_bkg, TH1 * histo_sig, TString options) {
  // add significances in bins quadratically

  /* stop if the input histograms are invalid/inconsitent */
  if (!checkConsistency(histo_bkg, histo_sig))
    return 0;

  /* 3 dimensional histograms not yet supported */
  if (histo_bkg->InheritsFrom(TH3::Class()))
    return 0;

  /* select the significance to use */
  TString sgnfName;
  if (options.Contains("sgnf:poisson", TString::kIgnoreCase))
    /* poisson significance */
    sgnfName = "poisson";
  else if (options.Contains("sgnf:soversqrtb", TString::kIgnoreCase))
    /* signal over square root background */
    sgnfName = "soversqrtb";
  else if (options.Contains("sgnf:soversqrtsplusb", TString::kIgnoreCase))
    /* signal over square root signal plus background */
    sgnfName = "soversqrtsplusb";
  else if (options.Contains("sgnf:soverb", TString::kIgnoreCase))
    /* signal over background */
    sgnfName = "soverb";
  else if (options.Contains("sgnf:asymptoticPoissonPoisson", TString::kIgnoreCase))
    /* Poisson-poisson model with asymptotic formulae */
    sgnfName = "asymptoticPoissonPoisson";
  else
    /* unknown significance */
    return 0;

  int nBinsX = histo_sig->GetNbinsX();
  double Z0 = 0;
  for (int iBinX = 0; iBinX < nBinsX + 2; iBinX++) {
    if (histo_bkg->InheritsFrom(TH2::Class())) {
      int nBinsY = histo_sig->GetNbinsY();
      for (int iBinY = 0; iBinY < nBinsY + 2; iBinY++) {
        double b = histo_bkg->GetBinContent(iBinX, iBinY);
        double berr = histo_bkg->GetBinError(iBinX, iBinY);
        double s = histo_sig->GetBinContent(iBinX, iBinY);
        double Z = getSignificance(b, s, sgnfName, berr);
        if(TQUtils::isNum(Z)) Z0 += TMath::Power(Z, 2);
      }
    } else {
      double b = histo_bkg->GetBinContent(iBinX);
      double berr = histo_bkg->GetBinError(iBinX);
      double s = histo_sig->GetBinContent(iBinX);
      double Z = getSignificance(b, s, sgnfName, berr);
      if(TQUtils::isNum(Z)) Z0 += TMath::Power(Z, 2);
    }
  }

  /* return the final significance */
  return TMath::Sqrt(Z0);
}


//__________________________________________________________________________________|___________

TGraphAsymmErrors * TQHistogramUtils::getROCGraph(TH1 * h_bkg, TH1 * h_sig, bool lowerBound) {
  if (!checkConsistency(h_bkg, h_sig))
    return 0;

  /* only 1 dimensional histograms supported */
  if (getDimension(h_bkg) != 1)
    return 0;

  /* the number of bins of the histogram */
  int nBins = getNBins(h_bkg);

  /* the error graph to return */
  TGraphAsymmErrors * graph = new TGraphAsymmErrors(nBins);

  /* signal and background */
  double B = getIntegral(h_bkg);
  double S = getIntegral(h_sig);
  double b = 0.;
  double s = 0.;
  double berr2 = 0.;
  double serr2 = 0.;

  /* loop over bins and set graph point properties */
  for (int iBin = 0; iBin < nBins; iBin++) {

    b += h_bkg->GetBinContent(lowerBound ? nBins - iBin - 1 : iBin);
    s += h_sig->GetBinContent(lowerBound ? nBins - iBin - 1 : iBin);
    berr2 += TMath::Power(h_bkg->GetBinError(lowerBound ? nBins - iBin - 1 : iBin), 2.);
    serr2 += TMath::Power(h_sig->GetBinError(lowerBound ? nBins - iBin - 1 : iBin), 2.);

    /* set the point */
    graph->SetPoint(iBin, s / S, 1. - b / B);
  }

  graph->GetXaxis()->SetTitle("Signal efficiency");
  graph->GetYaxis()->SetTitle("Background rejection");

  /* return error graph */
  return graph;
}



//__________________________________________________________________________________|___________

TList * TQHistogramUtils::getProjectionHistograms(
                                                  TH2 * histo, bool projectOnX, bool normalize) {
  if (!histo)
    return 0;

  /* the list of profile histogram sto return */
  TList * histograms = new TList();

  /* get the number of projections (the number of bins perpen-
   * dicular to the axis to project on) and the the axis' title */
  int nBins;
  TString axisTitle;
  if (projectOnX) {
    nBins = histo->GetNbinsY();
    axisTitle = histo->GetYaxis()->GetTitle();
  } else {
    nBins = histo->GetNbinsX();
    axisTitle = histo->GetXaxis()->GetTitle();
  }

  /* get the variable and its unit from axis title */
  TString variable = axisTitle;
  TString unit = TQStringUtils::cutUnit(variable);

  /* loop over bins */
  for (int iBin = 0; iBin < nBins + 2; iBin++) {

    /* ===== create the projection ===== */

    /* the projection histogram */
    TH1 * projection;

    /* the "width of the projection" */
    double lower;
    double upper;

    if (projectOnX) {
      /* create the projection histogram on X */
      projection = histo->ProjectionX(TString::Format(
                                                      "%s_ProjX_%d", histo->GetName(), iBin).Data(), iBin, iBin, "e");
      /* get the bounderies along Y axis */
      lower = histo->GetYaxis()->GetBinLowEdge(iBin);
      upper = histo->GetYaxis()->GetBinUpEdge(iBin);
    } else {
      /* create the projection histogram on Y */
      projection = histo->ProjectionY(TString::Format(
                                                      "%s_ProjY_%d", histo->GetName(), iBin).Data(), iBin, iBin, "e");
      /* get the bounderies along Y axis */
      lower = histo->GetXaxis()->GetBinLowEdge(iBin);
      upper = histo->GetXaxis()->GetBinUpEdge(iBin);
    }

    /* set the histograms directory to the one of the input histogram */
    projection->SetDirectory(histo->GetDirectory());

    /* set the histograms title */
    if (iBin == 0)
      projection->SetTitle(TString::Format("%s < %g %s",
                                           variable.Data(), upper, unit.Data()).Data());
    else if (iBin > nBins)
      projection->SetTitle(TString::Format("%g %s #leq %s",
                                           lower, unit.Data(), variable.Data()).Data());
    else
      projection->SetTitle(TString::Format("%g %s #leq %s < %g %s",
                                           lower, unit.Data(), variable.Data(), upper, unit.Data()).Data());

    /* normalize the projection histogram if requested */
    if (normalize)
      TQHistogramUtils::normalize(projection);

    /* add the projection to the list */
    histograms->Add(projection);
  }

  /* return the list of profile histograms */
  return histograms;
}


//__________________________________________________________________________________|___________

TList * TQHistogramUtils::getProjectionHistogramsX(TH2 * histo, bool normalize) {

  return getProjectionHistograms(histo, true, normalize);
}


//__________________________________________________________________________________|___________

TList * TQHistogramUtils::getProjectionHistogramsY(TH2 * histo, bool normalize) {

  return getProjectionHistograms(histo, false, normalize);
}


//__________________________________________________________________________________|___________

TH1 * TQHistogramUtils::getReweightedHistogram(
                                               TH2 * histo_input, TH1 * histo_weights, bool projectOnX) {
  if (!histo_input || !histo_weights)
    return 0;

  /* ===== check consistency of weight histogram ===== */

  /* get the projection histogram perpendicular to final projection */
  TH1D * h_check = 0;
  if (projectOnX)
    h_check = histo_input->ProjectionY();
  else
    h_check = histo_input->ProjectionX();

  /* remove from current directory */
  h_check->SetDirectory(0);

  /* check its consistency with weights histogram */
  bool consistent = checkConsistency(h_check, histo_weights);

  /* delete the projection histogram since
   * it was only used for consistency check */
  delete h_check;

  /* stop if histograms are inconsistent */
  if (!consistent)
    return 0;

  /* ===== now do the reweighting ===== */

  /* the reweighted histogram to return */
  TH1 * h_result = 0;

  /* the number of bins along reweighting axis */
  int nBinsRew = projectOnX ? histo_input->GetNbinsY() : histo_input->GetNbinsX();

  /* loop over bins on reweighting axis */
  for (int iBinRew = 0; iBinRew < nBinsRew + 2; iBinRew++) {

    /* the temporary name of the projection */
    TString name = TString::Format("__h_proj_%s_%d", histo_input->GetName(), iBinRew);

    /* project the reweighting slice on projection axis */
    TH1 * h_proj;
    if (projectOnX)
      h_proj = histo_input->ProjectionX(name.Data(), iBinRew, iBinRew, "e");
    else
      h_proj = histo_input->ProjectionY(name.Data(), iBinRew, iBinRew, "e");

    /* remove from current directory */
    h_proj->SetDirectory(0);

    /* apply the weight */
    h_proj->Scale(histo_weights->GetBinContent(iBinRew));

    /* add up slices */
    if (h_result) {
      h_result->Add(h_proj);
      delete h_proj;
    } else {
      h_result = h_proj;
    }
  }

  /* set the name of the output histogram */
  if (h_result) {
    if (projectOnX)
      h_result->SetName(TString::Format("%s_ProjXRewY", histo_input->GetName()).Data());
    else
      h_result->SetName(TString::Format("%s_ProjYRewX", histo_input->GetName()).Data());
  }

  /* return the reweighted histogram */
  return h_result;
}


//__________________________________________________________________________________|___________

TH1 * TQHistogramUtils::getReweightedHistogramX(TH2 * histo_input, TH1 * histo_weights) {

  return getReweightedHistogram(histo_input, histo_weights, true);
}


//__________________________________________________________________________________|___________

TH1 * TQHistogramUtils::getReweightedHistogramY(TH2 * histo_input, TH1 * histo_weights) {

  return getReweightedHistogram(histo_input, histo_weights, false);
}


//__________________________________________________________________________________|___________

TQCounter * TQHistogramUtils::histogramToCounter(TH1 * histo) {
	// convert a histogram to a TQCounter
  if (!histo) {
    return NULL;
  }

  double err = 0.;
  double sum = getIntegralAndError(histo, err);

  TQCounter* cnt =  new TQCounter(histo->GetName(), sum, err);
  cnt->setRawCounter(histo->GetEntries());
  return cnt;
}


//__________________________________________________________________________________|___________

TH1 * TQHistogramUtils::counterToHistogram(TQCounter * counter) {
	// convert a TQCounter to a histogram
  if (!counter) {
    return NULL;
  }

  TH1 * histo = new TH1D(counter->GetName(), counter->GetName(), 1, 0., 1.);
  histo->SetDirectory(NULL);
  histo->Sumw2();
  histo->SetBinContent(1, counter->getCounter());
  histo->SetBinError(1, counter->getError());
  histo->SetEntries(counter->getRawCounter());
  return histo;
}


//__________________________________________________________________________________|___________

TH1 * TQHistogramUtils::countersToHistogram(TList * counters) {
	// convert a list of TQCounters to a histogram
  int n = 0;
  TQIterator itr(counters);
  while (itr.hasNext()) {
    TObject * obj = itr.readNext();
    if (obj->InheritsFrom(TQCounter::Class())) {
      n++;
    }
  }

  TH1 * histo = NULL;
  if (n > 0) {
    TString prefix = counters->GetName();
    if (prefix.IsNull()) {
      prefix = "histogramFromCounters";
    }
    TString name = prefix;
    int i = 2;
    while (gDirectory && gDirectory->FindObject(name.Data())) {
      name = TString::Format("%s_i%d", prefix.Data(), i++);
    }
    histo = new TH1D(name, name, n, 0., (double)n);
    histo->SetDirectory(NULL);
    histo->Sumw2();

    i = 1;
    itr.reset();
    while (itr.hasNext()) {
      TObject * obj = itr.readNext();
      if (obj->InheritsFrom(TQCounter::Class())) {
        TQCounter * cnt = (TQCounter*)obj;
        histo->SetBinContent(i, cnt->getCounter());
        histo->SetBinError(i, cnt->getError());
        histo->GetXaxis()->SetBinLabel(i++, cnt->GetName());
      }
    }
  }

  return histo;
}


//__________________________________________________________________________________|___________

double TQHistogramUtils::getIntegral(const TH1 * histo, bool useUnderOverflow) {
  // Return the integral of a histogram

  if (histo) {
    int xLow, xHigh, yLow, yHigh, zLow, zHigh;
    xLow = yLow = zLow = 0;
    xHigh = histo->GetNbinsX() + 1;
    yHigh = histo->GetNbinsY() + 1;
    zHigh = histo->GetNbinsZ() + 1;
    if (!useUnderOverflow) {
        xLow++; yLow++; zLow++;
        xHigh--; yHigh--; zHigh--;
      }
    double integral = 0.;

    if (histo->InheritsFrom(TH3::Class())) {
      /* 3 dimensional integral */
      integral = ((TH3*)histo)->Integral(
                                         xLow, xHigh,
                                         zLow, yHigh,
                                         zLow, zHigh);
    } else if (histo->InheritsFrom(TH2::Class())) {
      /* 2 dimensional integral */
      integral = ((TH2*)histo)->Integral(
                                         xLow, xHigh,
                                         yLow, yHigh);
    } else {
      /* 1 dimensional integral */
      integral = histo->Integral(xLow, xHigh);
    }

    return integral;

  } else {
    /* invalid input histogram given */
    return 0.;
  }
}


//__________________________________________________________________________________|___________

TH1* TQHistogramUtils::getEfficiencyHistogram(TH1* numerator, TH1* denominator) {
  // computes the ratio of the two given histograms. Errors are recalculated assuming
  // that events in the numerator histogram are also present in the denominator,
  // i.e., that the selection of events/entries in the numerator represents a true
  // subset of those in the denominator. If the calculation of the resulting uncertainty
  // fails at some point NULL is returned.

  if (!numerator || !denominator) return NULL;
  if (!TQHistogramUtils::checkConsistency(numerator,denominator)) {
    WARN("Cannot create efficiency histogram, input histograms ('%s' and '%s') have inconsistent binning!",numerator->GetName(),denominator->GetName());
    return NULL;
  }
  //TH1* copy = TQHistogramUtils::copyHistogram(numerator);
  TH1* copy = dynamic_cast<TH1*>( numerator->Clone("hcopy") );
  if (!copy) {
    WARN("Failed to create clone of numerator histogram '%s' !",numerator->GetName());
    return NULL;
  }
  //int nBins = TQHistogramUtils::getNbinsGlobal(copy,true);
  if (!copy->Divide(numerator,denominator,1.,1.,"B")) {
    WARN("Failed to divide histograms");
    delete copy;
    return NULL;
  }
  /*
  double delta,sDeltaSq,drdn,drdd,num;
  for (int i=0; i<nBins; ++i) {
    if (denominator->GetBinContent(i)!= 0.) {
      delta = denominator->GetBinContent(i)-numerator->GetBinContent(i);
      sDeltaSq = pow(denominator->GetBinError(i),2.) - pow(numerator->GetBinError(i),2.);
      num = numerator->GetBinContent(i);
      drdn = 1/(delta+num)*(1-1/(delta+num));
      drdd = -num/pow(num+delta,2.);
      if (sDeltaSq<0) {
        WARN("Difference between numerator and denominator has complex uncertainty (squared uncertainty is negative)!");
        delete copy;
        return NULL;
      }
      copy->SetBinContent(i, num/(delta+num));
      copy->SetBinError(i, sqrt( pow(drdn*denominator->GetBinError(i),2.) + pow(drdd,2.)*sDeltaSq ) );
    } else {
      copy->SetBinContent(i,0.); copy->SetBinError(i,0.);
    }

  }
  */
  return copy;
}

//__________________________________________________________________________________|___________

TH1* TQHistogramUtils::getRelativeVariationHistogram(TH1* variation, TH1* nominal, double epsilon) {
  // computes the (bin-by-bin) ratio of <variation>/<nominal>. Statistical
  // uncertainties are calculated/propagated using only the uncertainty of the
  // variation. If the bin content of the nominal or variation histogram is zero
  // for some bin the uncertainty of the corresponding ratio bin is set to infinity.
  // If at least one of the input histograms is invalid or the histograms
  // are incompatible, according to TQHistogramUtils::checkConsistency, NULL is
  // returned.

  if (!variation || !nominal) return NULL;
  if (!TQHistogramUtils::checkConsistency(variation,nominal)) {
    WARN("Cannot create efficiency histogram, input histograms ('%s' and '%s') have inconsistent binning!",variation->GetName(),nominal->GetName());
    return NULL;
  }
  //TH1* copy = TQHistogramUtils::copyHistogram(numerator);
  TH1* copy = dynamic_cast<TH1*>( variation->Clone("hcopy") );
  if (!copy) {
    WARN("Failed to create clone of variation(numerator) histogram '%s' !",variation->GetName());
    return NULL;
  }
  //int nBins = TQHistogramUtils::getNbinsGlobal(copy,true);
  if (!copy->Divide(variation,nominal,1.,1.)) {
    WARN("Failed to divide histograms");
    delete copy;
    return NULL;
  }
  //re-calculate uncertainties using only the numberator (i.e. the variation histogram)
  int nBins = TQHistogramUtils::getNbinsGlobal(copy,true);
  double nomContent=0;
  for (int i=0; i<nBins; ++i) {
    nomContent = nominal->GetBinContent(i);
    if(variation->GetBinContent(i) <= epsilon || nominal->GetBinContent(i) <= epsilon){
      copy->SetBinError(i,std::numeric_limits<double>::infinity());
      copy->SetBinContent(i,1);
    } else {
      copy->SetBinError(i, variation->GetBinError(i)/nomContent);
    }
  }
  return copy;
}

//__________________________________________________________________________________|___________

double TQHistogramUtils::getIntegralError(const TH1 * histo) {
  // Return the error of the integral of a histogram including under- and over-
  // flow bins

  if (histo) {

    double error = 0.;

    /* calculate error of integral */
    getIntegralAndError(histo, error);

    /* return error of integral */
    return error;

  } else {
    /* invalid input histogram given */
    return 0.;
  }
}


//__________________________________________________________________________________|___________

double TQHistogramUtils::getIntegralAndError(const TH1 * histo, double &error, bool useUnderOverflow) {
  // Return the integral and its error of a histogram including under- and over-
  // flow bins

  if (histo) {
    int xLow, xHigh, yLow, yHigh, zLow, zHigh;
    xLow = yLow = zLow = 0;
    xHigh = histo->GetNbinsX() + 1;
    yHigh = histo->GetNbinsY() + 1;
    zHigh = histo->GetNbinsZ() + 1;
    if (!useUnderOverflow) {
        xLow++; yLow++; zLow++;
        xHigh--; yHigh--; zHigh--;
      }
    double integral = 0.;

    if (histo->InheritsFrom(TH3::Class())) {
      /* 3 dimensional integral */
      integral = ((TH3*)histo)->IntegralAndError(
                                         xLow, xHigh,
                                         zLow, yHigh,
                                         zLow, zHigh, error);
    } else if (histo->InheritsFrom(TH2::Class())) {
      /* 2 dimensional integral */
      integral = ((TH2*)histo)->IntegralAndError(
                                         xLow, xHigh,
                                         yLow, yHigh, error);
    } else {
      /* 1 dimensional integral */
      integral = histo->IntegralAndError(xLow, xHigh, error);
    }

    return integral;

  } else {
    /* invalid input histogram given */
    return 0.;
  }
}


//__________________________________________________________________________________|___________

TH1 * TQHistogramUtils::normalize(TH1 * histo, double normalizeTo, bool includeUnderOverflow) {
  // Normalize this histogram to a given integral value

  if (histo) {

    /* get the histogram's integral */
    double integral = getIntegral(histo, includeUnderOverflow);

    /* normalize the histogram to 'normalizeTo' */
    if (integral != 0.)
      histo->Scale(normalizeTo / integral);

    return histo;

  } else {
    /* invalid input histogram given */
    return 0;
  }
}


//__________________________________________________________________________________|___________

TH1 * TQHistogramUtils::normalize(TH1 * histo, const TH1 * normalizeToHisto, bool includeUnderOverflow) {
  // Normalize this histogram to the integral value of another histogram

  if (histo && normalizeToHisto) {
    /* normalize histogram to integral of second histogram */
    normalize(histo, getIntegral(normalizeToHisto, includeUnderOverflow), includeUnderOverflow);
    return histo;
  } else {
    /* invalid input histogram given */
    return 0;
  }
}


//__________________________________________________________________________________|___________

TH1 * TQHistogramUtils::power(TH1 * histo, double exp) {
	// exponentiate every entry in a histogram by a given power
  if (!histo) {
    return 0;
  }

  int n = TQHistogramUtils::getNBins(histo);
  for (int i = 0; i < n; i++) {
    double bin = histo->GetBinContent(i);
    double err = histo->GetBinError(i);
    histo->SetBinContent(i, TMath::Power(bin, exp));
    histo->SetBinError(i, exp * TMath::Power(bin, exp - 1.) * err);
  }

  return histo;
}


//__________________________________________________________________________________|___________

TH1 * TQHistogramUtils::getSlopeHistogram(TH1 * input, double slope) {
	// set the contents of a histogram to reflect a certain slope
  if (TQHistogramUtils::getDimension(input) != 1) {
    return NULL;
  }

  double min = input->GetXaxis()->GetBinLowEdge(1);
  double max = input->GetXaxis()->GetBinUpEdge(input->GetNbinsX());
  double avg = (max + min) / 2.;

  TH1 * output = TQHistogramUtils::copyHistogram(input);
  output->Reset();

  for (int i = 1; i <= input->GetNbinsX(); i++) {
    output->SetBinContent(i, 1. + slope * (avg - input->GetXaxis()->GetBinCenter(i)));
  }

  return output;
}


//__________________________________________________________________________________|___________

TH1 * TQHistogramUtils::applySlopeToHistogram(TH1 * input, double slope) {
	// apply a slope to a given histogram
  TH1 * h_slope = getSlopeHistogram(input, slope);
  if (!h_slope || !input) {
    return NULL;
  }

  input->Multiply(h_slope);
  delete h_slope;
  return input;
}


//__________________________________________________________________________________|___________

double TQHistogramUtils::getChi2(TH1 * histo1, TH1 * histo2) {
	// calculate the Chi2 difference between two histograms
  if (!histo1 || !histo2)
    return -1.;

  /* stop if histograms are inconsistent */
  if (!checkConsistency(histo1, histo2))
    return -1.;

  if (getDimension(histo1) == 1) {

    double chi2 = 0.;

    int nBins = histo1->GetNbinsX();
    for (int iBin = 0; iBin <= nBins + 1; iBin++) {

      /* get bin content and errors */
      double cnt1 = histo1->GetBinContent(iBin);
      double cnt2 = histo2->GetBinContent(iBin);
      double err1 = histo1->GetBinError(iBin);
      double err2 = histo2->GetBinError(iBin);

      /* calculate difference and error of difference */
      double diff = cnt1 - cnt2;
      double error = TMath::Sqrt(TMath::Power(err1, 2.) + TMath::Power(err2, 2.));

      /* sum up chi^2 */
      if (error != 0.)
        chi2 += TMath::Power(diff, 2.) / TMath::Power(error, 2.);
    }

    /* return chi2 / ndf */
    return chi2 / (double)(nBins + 2);

  } else {
    return -1.;
  }
}


//__________________________________________________________________________________|___________

TH1 * TQHistogramUtils::includeOverflowBins(TH1 * histo, bool underflow, bool overflow) {
	// include overflow and/or underflow bins in a histogram
  if(!underflow && !overflow) return histo;

  if (histo) {
    size_t nentries = histo->GetEntries();
    if (histo->InheritsFrom(TH3::Class()) || histo->InheritsFrom(TH2::Class())) {
      /* not applicable */
      return 0;
    } else {

      if (underflow) {
        /* move the content of the underflow bin to the first nominal bin */
        histo->SetBinContent(1,
                             histo->GetBinContent(0) +
                             histo->GetBinContent(1));
        histo->SetBinContent(0, 0.);
        /* propagate the error of the underflow bin to the first nominal bin error */
        histo->SetBinError(1, TMath::Sqrt(
                                          TMath::Power(histo->GetBinError(0), 2) +
                                          TMath::Power(histo->GetBinError(1), 2)));
        histo->SetBinError(0, 0.);
      }

      if (overflow) {
        /* get the number of bins to access
         * the last and the overflow bin */
        int nBins = histo->GetNbinsX();
        /* move the content of the overflow bin to the last nominal bin */
        histo->SetBinContent(nBins,
                             histo->GetBinContent(nBins) +
                             histo->GetBinContent(nBins + 1));
        histo->SetBinContent(nBins + 1, 0.);
        /* propagate the error of the overflow bin to the last nominal bin error */
        histo->SetBinError(nBins, TMath::Sqrt(
                                              TMath::Power(histo->GetBinError(nBins), 2) +
                                              TMath::Power(histo->GetBinError(nBins + 1), 2)));
        histo->SetBinError(nBins + 1, 0.);
      }

    }
    histo->SetEntries(nentries);

    return histo;

  } else {
    /* invalid input histogram given */
    return 0;
  }

}


//__________________________________________________________________________________|___________

TH1 * TQHistogramUtils::extraOverflowBins(TH1*& histo, bool underflow, bool overflow, bool remap) {
  // add overflow and/or underflow bins as extra bins to a histogram

  if(!underflow && !overflow) return histo;
  if(!histo) return 0;

  if (histo->InheritsFrom(TH3::Class()) || histo->InheritsFrom(TH2::Class())) {
    /* not applicable */
    return 0;
  }
  if(!remap){
    WARN("Function TQHistogramUtils::extraOverflowBins requires usage of remapping (tag 'remap=true'). Return unchanged histogram.");
    return histo;
  }

  /* create the new histogram */
  int newNBins = histo->GetNbinsX();
  if(underflow) newNBins+=1;
  if(overflow) newNBins+=1;
  TH1 * newHisto = 0;
  if (histo->InheritsFrom(TH1F::Class()))
    newHisto = new TH1F(histo->GetName(), histo->GetTitle(),newNBins, 0., 1.);
  else if (histo->InheritsFrom(TH1D::Class()))
    newHisto = new TH1D(histo->GetName(), histo->GetTitle(),newNBins, 0., 1.);

  if(!newHisto){
    ERROR("TQHistogramUtils::extraOverflowBins failed creating new histogram. Return unchanged histogram.");
    return histo;
  }

  /* set title of x axis */
  TString label = TQStringUtils::getWithoutUnit(histo->GetXaxis()->GetTitle());
  label.Prepend("Remapped ");
  newHisto->GetXaxis()->SetTitle(label.Data());
  newHisto->GetYaxis()->SetTitle(histo->GetYaxis()->GetTitle());
  newHisto->Sumw2();

  /* make the histogram memory resident */
  newHisto->SetDirectory(histo->GetDirectory());

  /* style parameter */
  copyStyle(newHisto, histo);

  /* set the histograms bin contents, errors and total entries */
  for (int i = 0; i <= histo->GetNbinsX()+1; i++) {
    int binOffset=0;
    if (underflow) binOffset=1;
    newHisto->SetBinContent(i+binOffset,histo->GetBinContent(i));
    newHisto->SetBinError(i+binOffset,histo->GetBinError(i));
  }
  size_t nentries = histo->GetEntries();
  newHisto->SetEntries(nentries);

  histo = newHisto;

  return histo;

}


//__________________________________________________________________________________|___________

void TQHistogramUtils::unifyMinMax(TCollection * histograms, double vetoFraction) {
	// unify the minima and maxima of a list of histograms
  if (!histograms)
    return;

  /* the maximum/minimum */
  double max = 0.;
  double min = 0.;

  /* loop over list of histograms to find global maximum and minimum */
  bool first = true;
  TQTH1Iterator itr(histograms);
  while(itr.hasNext()){
    /* cast to histogram */
    TH1 * histo = itr.readNext();
    if(!histo) continue;
    /* maximum/minimum of this histogram */
    double thisMax = histo->GetBinContent(histo->GetMaximumBin());
    double thisMin = histo->GetBinContent(histo->GetMinimumBin());
    /* calculate the new maximum/minimum */
    max = (first || thisMax > max) ? thisMax : max;
    min = (first || thisMin < min) ? thisMin : min;
    first = false;
  }

  /* allow some space between maximum and top of plot */
  max = min + (max - min)/(1-vetoFraction);

  /* loop over list of histograms to set the new global maximum and minimum */
  itr.reset();
  while(itr.hasNext()){
    TH1 * histo = itr.readNext();
    if(!histo) continue;
    histo->SetMaximum(max);
    histo->SetMinimum(min);
  }
}


//__________________________________________________________________________________|___________

void TQHistogramUtils::unifyMinMax(TH1 * h1, TH1 * h2, TH1 * h3, double vetoFraction) {
	// unify the minima and maxima of three histograms
  TList * histograms = new TList();
  if (h1) histograms->Add(h1);
  if (h2) histograms->Add(h2);
  if (h3) histograms->Add(h3);

  /* unify maximum and minimum */
  unifyMinMax(histograms, vetoFraction);

  /* delete the list of histograms */
  delete histograms;
}


//__________________________________________________________________________________|___________

void TQHistogramUtils::unifyMinMax(TH1 * h1, TH1 * h2, double vetoFraction) {
	// unify the minima and maxima of two histograms
  unifyMinMax(h1, h2, (TH1*)0, vetoFraction);
}


//__________________________________________________________________________________|___________

bool TQHistogramUtils::getMinMaxBin(
                                    const TH1 * histo,
                                    int &iBinMin,
                                    int &iBinMax,
                                    bool includeError,
                                    bool includeUnderflowOverflow,
                                    double minMin,
                                    double maxMax) {
	// find the minimum and maximum bins of a histogram
  if (!histo)
    return false;

  int nBins = getNBins(histo);
  double min = std::numeric_limits<double>::infinity();
  double max = -std::numeric_limits<double>::infinity();
  /* loop over bins and find the minimum/maximum */
  for (int i = 0; i < nBins; ++i) {
    if (!includeUnderflowOverflow && (histo->IsBinUnderflow(i) || histo->IsBinOverflow(i)) ) continue;
    double lower = (histo->GetBinContent(i) - (includeError ? histo->GetBinError(i) : 0.));
    double upper = (histo->GetBinContent(i) + (includeError ? histo->GetBinError(i) : 0.));
    if ( (iBinMin == -1 || lower < min) && lower>minMin ){ //only consider value if not below lower cutoff 'minMin'
      min = lower;
      iBinMin = i;
    }
    if ( (iBinMax == -1 || upper > max) && upper<maxMax ){ //only consider value if not exeeding upper cutoff 'maxMax'
      max = upper;
      iBinMax = i;
    }
  }
  return true;
}


//__________________________________________________________________________________|___________

bool TQHistogramUtils::getMinMax(
                                 const TH1 * histo,
                                 double &min,
                                 double &max,
                                 bool includeError,
                                 bool includeUnderflowOverflow,
                                 double minMin,
                                 double maxMax) {
	// find the minimum and maximum coordinates of a histogram
  int minBin = -1;
  int maxBin = -1;
  if (getMinMaxBin(histo, minBin, maxBin, includeError, includeUnderflowOverflow, minMin, maxMax) && (minBin!=-1 || maxBin!=-1) ) { //at least one limit should have been successfully obtained, otherwise something went clearly wrong (->return false)
    if (minBin!=-1) min = histo->GetBinContent(minBin) - (includeError ? histo->GetBinError(minBin) : 0.);
    if (maxBin!=-1) max = histo->GetBinContent(maxBin) + (includeError ? histo->GetBinError(maxBin) : 0.);
    return true;
  } else {
    return false;
  }
}


//__________________________________________________________________________________|___________

int TQHistogramUtils::getMinBin(const TH1 * histo, bool includeError, bool includeUnderflowOverflow, double minMin) {
	// find the minimum bin of a histogram
  int minBin = -1;
  int maxBin = -1;
  getMinMaxBin(histo, minBin, maxBin, includeError, includeUnderflowOverflow, minMin, std::numeric_limits<double>::infinity() );
  return minBin;
}


//__________________________________________________________________________________|___________

int TQHistogramUtils::getMaxBin(const TH1 * histo, bool includeError, bool includeUnderflowOverflow, double maxMax) {
	// find the maximum bin of a histogram
  int minBin = -1;
  int maxBin = -1;
  getMinMaxBin(histo, minBin, maxBin, includeError, includeUnderflowOverflow, -std::numeric_limits<double>::infinity(), maxMax );
  return maxBin;
}


//__________________________________________________________________________________|___________

double TQHistogramUtils::getMin(const TH1 * histo, bool includeError, bool includeUnderflowOverflow, double minMin) {
	// find the minimum coordinate of a histogram
  double min = 0.;
  double max = 0.;
  getMinMax(histo, min, max, includeError, includeUnderflowOverflow, minMin, std::numeric_limits<double>::infinity() );
  return min;
}


//__________________________________________________________________________________|___________

double TQHistogramUtils::getMax(const TH1 * histo, bool includeError, bool includeUnderflowOverflow, double maxMax) {
	// find the maximum coordinate of a histogram
  double min = 0.;
  double max = 0.;
  getMinMax(histo, min, max, includeError, includeUnderflowOverflow, -std::numeric_limits<double>::infinity(), maxMax);
  return max;
}


//__________________________________________________________________________________|___________

bool TQHistogramUtils::extractStyle(const TH1 * histo, TQTaggable * tags, const TString& styleScheme) {
	// extract the style from a histogram and save it to a TQTaggable object
  if (!histo || !tags) {
    return false;
  }

  // the style tag prefix
  TString prefix;
  if (!styleScheme.IsNull()) {
    if (TQTaggable::isValidKey(styleScheme)) {
      prefix = TString("style.") + styleScheme + ".";
    } else {
      prefix = TString("style.");
    }
  }

  tags->setTagString (prefix + "title", histo->GetTitle());
  tags->setTagInteger (prefix + "histFillColor", histo->GetFillColor());
  tags->setTagInteger (prefix + "histFillStyle", histo->GetFillStyle());
  tags->setTagInteger (prefix + "histLineColor", histo->GetLineColor());
  tags->setTagInteger (prefix + "histLineWidth", histo->GetLineWidth());
  tags->setTagInteger (prefix + "histLineStyle", histo->GetLineStyle());
  tags->setTagInteger (prefix + "histMarkerColor", histo->GetMarkerColor());
  tags->setTagDouble (prefix + "histMarkerSize", histo->GetMarkerSize());
  tags->setTagInteger (prefix + "histMarkerStyle", histo->GetMarkerStyle());

  if(TQHistogramUtils::hasBinLabels(histo->GetXaxis())){
    for(int i=0; i<histo->GetXaxis()->GetNbins(); ++i){
      tags->setTagString(TString::Format("%sxLabels.%d",prefix.Data(),i),histo->GetXaxis()->GetBinLabel(i+1));
    }
  }
  if(TQHistogramUtils::hasBinLabels(histo->GetYaxis())){
    for(int i=0; i<histo->GetYaxis()->GetNbins(); ++i){
      tags->setTagString(TString::Format("%syLabels.%d",prefix.Data(),i),histo->GetXaxis()->GetBinLabel(i+1));
    }
  }

  return true;
}

//__________________________________________________________________________________|___________

bool TQHistogramUtils::extractStyle(const TGraph* graph, TQTaggable * tags, const TString& styleScheme) {
  // extract the style from a histogram and save it to a TQTaggable object
  if (!graph || !tags) {
    return false;
  }

  // the style tag prefix
  TString prefix;
  if (!styleScheme.IsNull()) {
    if (TQTaggable::isValidKey(styleScheme)) {
      prefix = TString("style.") + styleScheme + ".";
    } else {
      prefix = TString("style.");
    }
  }

  tags->setTagString (prefix + "title", graph->GetTitle());
  tags->setTagInteger (prefix + "fillColor", graph->GetFillColor());
  tags->setTagInteger (prefix + "fillStyle", graph->GetFillStyle());
  tags->setTagInteger (prefix + "lineColor", graph->GetLineColor());
  tags->setTagInteger (prefix + "lineWidth", graph->GetLineWidth());
  tags->setTagInteger (prefix + "lineStyle", graph->GetLineStyle());
  tags->setTagInteger (prefix + "markerColor", graph->GetMarkerColor());
  tags->setTagDouble (prefix + "markerSize", graph->GetMarkerSize());
  tags->setTagInteger (prefix + "markerStyle", graph->GetMarkerStyle());

  return true;
}


//__________________________________________________________________________________|___________

int TQHistogramUtils::applyStyle(TH1 * histo, TQTaggable * tags, const TString& styleScheme, bool allowRecursion) {
	// apply the style given by a TQTaggable object to a histogram
  if (!histo || !tags) {
    return 0;
  }

  // the number of style tags applied
  int nStyleTags = 0;

  // the style tag prefix
  TString prefix;
  if (!styleScheme.IsNull()) {
    if (TQTaggable::isValidKey(styleScheme)) {
      prefix = TString(allowRecursion ? "~style." : "style.") + styleScheme + ".";
    } else {
      prefix = TString(allowRecursion ? "~style." : "style.");
    }
  }

  /* apply style: the histogram title */
  TString title;
  if (tags->getTagString(prefix + "title", title)) {
    histo->SetTitle(title.Data());
    nStyleTags++;
  }

  /* apply style: the common color */
  int commonColor;
  if (tags->getTagInteger(prefix + "color", commonColor)) {
    histo->SetFillColor (commonColor);
    histo->SetLineColor (commonColor);
    histo->SetMarkerColor (commonColor);
    nStyleTags += 3;
  }

  /* apply style: the histogram fill color */
  int histFillColor;
  if (tags->getTagInteger(prefix + "histFillColor", histFillColor)) {
    histo->SetFillColor(histFillColor);
    nStyleTags++;
  }

  /* apply style: the histogram fill style */
  int histFillStyle;
  if (tags->getTagInteger(prefix + "histFillStyle", histFillStyle)) {
    histo->SetFillStyle(histFillStyle);
    nStyleTags++;
  }

  /* apply style: the histogram line color */
  int histLineColor;
  if (tags->getTagInteger(prefix + "histLineColor", histLineColor)) {
    histo->SetLineColor(histLineColor);
    if (histo->InheritsFrom(TProfile::Class()))
      histo->SetLineColor(histFillColor);
    nStyleTags++;
  }

  /* apply style: the histogram line width */
  int histLineWidth;
  if (tags->getTagInteger(prefix + "histLineWidth", histLineWidth)) {
    histo->SetLineWidth(histLineWidth);
    nStyleTags++;
  }

  /* apply style: the histogram line style */
  int histLineStyle;
  if (tags->getTagInteger(prefix + "histLineStyle", histLineStyle)) {
    histo->SetLineStyle(histLineStyle);
    nStyleTags++;
  }

  /* apply style: the histogram marker color */
  int histMarkerColor;
  if (tags->getTagInteger(prefix + "histMarkerColor", histMarkerColor)) {
    histo->SetMarkerColor(histMarkerColor);
    nStyleTags++;
  }

  /* apply style: the histogram marker size */
  double histMarkerSize;
  if (tags->getTagDouble(prefix + "histMarkerSize", histMarkerSize)) {
    histo->SetMarkerSize(histMarkerSize);
    nStyleTags++;
  }

  /* apply style: the histogram marker style */
  int histMarkerStyle;
  if (tags->getTagInteger(prefix + "histMarkerStyle", histMarkerStyle)) {
    histo->SetMarkerStyle(histMarkerStyle);
    nStyleTags++;
  }

  std::vector<TString> xlabels = tags->getTagVString(prefix+"xLabels");
  for(size_t i=0; i<xlabels.size(); ++i){
    histo->GetXaxis()->SetBinLabel(i+1,xlabels[i]);
  }
  std::vector<TString> ylabels = tags->getTagVString(prefix+"yLabels");
  for(size_t i=0; i<ylabels.size(); ++i){
    histo->GetYaxis()->SetBinLabel(i+1,ylabels[i]);
  }

  /* return the number of style tags applied */
  return nStyleTags;
}


//__________________________________________________________________________________|___________

bool TQHistogramUtils::copyStyle(TH1 * h_dest, const TH1 * h_src) {
  // Copies the style settings (fill color, fill style, line color, line style, line
  // width, marker size, marker color, marker style) from the source histogram
  // <h_src> to the destionation histogram <h_dest> and returns true in case of
  // success or false in case of failure.

  if (!h_dest || !h_src) {
    return false;
  }

  h_dest->SetFillColor(h_src->GetFillColor());
  h_dest->SetFillStyle(h_src->GetFillStyle());
  h_dest->SetLineColor(h_src->GetLineColor());
  h_dest->SetLineStyle(h_src->GetLineStyle());
  h_dest->SetLineWidth(h_src->GetLineWidth());
  h_dest->SetMarkerSize(h_src->GetMarkerSize());
  h_dest->SetMarkerColor(h_src->GetMarkerColor());
  h_dest->SetMarkerStyle(h_src->GetMarkerStyle());

  TQHistogramUtils::copyBinLabels(h_src,h_dest);
  TQHistogramUtils::copyAxisStyle(h_src,h_dest);

  return true;
}

//__________________________________________________________________________________|___________

bool TQHistogramUtils::copyStyle(TGraph * g_dest, const TH1 * h_src) {
  // Copies the style settings (fill color, fill style, line color, line style, line
  // width, marker size, marker color, marker style) from the source histogram
  // <h_src> to the destionation graph <h_dest> and returns true in case of
  // success or false in case of failure.

  if (!g_dest || !h_src) {
    return false;
  }

  g_dest->SetFillColor(h_src->GetFillColor());
  g_dest->SetFillStyle(h_src->GetFillStyle());
  g_dest->SetLineColor(h_src->GetLineColor());
  g_dest->SetLineStyle(h_src->GetLineStyle());
  g_dest->SetLineWidth(h_src->GetLineWidth());
  g_dest->SetMarkerSize(h_src->GetMarkerSize());
  g_dest->SetMarkerColor(h_src->GetMarkerColor());
  g_dest->SetMarkerStyle(h_src->GetMarkerStyle());

  return true;
}

//__________________________________________________________________________________|___________

bool TQHistogramUtils::copyStyle(TNamed * dest, const TNamed * src) {
  // copies the style of histograms or graphs
  if(dest->InheritsFrom(TH1::Class())&&src->InheritsFrom(TH1::Class())) return TQHistogramUtils::copyStyle(static_cast<TH1*>(dest),static_cast<const TH1*>(src));
  if(dest->InheritsFrom(TGraph::Class())&&src->InheritsFrom(TGraph::Class())) return TQHistogramUtils::copyStyle(static_cast<TGraph*>(dest),static_cast<const TGraph*>(src));
  if(dest->InheritsFrom(TGraph2D::Class())&&src->InheritsFrom(TGraph2D::Class())) return TQHistogramUtils::copyStyle(static_cast<TGraph2D*>(dest),static_cast<const TGraph2D*>(src));
  return false;
}

//__________________________________________________________________________________|___________

bool TQHistogramUtils::copyStyle(TGraph * g_dest, const TGraph * g_src) {
  // Copies the style settings (fill color, fill style, line color, line style, line
  // width, marker size, marker color, marker style) from the source graph
  // <g_src> to the destionation graph <g_dest> and returns true in case of
  // success or false in case of failure.

  if (!g_dest || !g_src) {
    return false;
  }

  g_dest->SetFillColor(g_src->GetFillColor());
  g_dest->SetFillStyle(g_src->GetFillStyle());
  g_dest->SetLineColor(g_src->GetLineColor());
  g_dest->SetLineStyle(g_src->GetLineStyle());
  g_dest->SetLineWidth(g_src->GetLineWidth());
  g_dest->SetMarkerSize(g_src->GetMarkerSize());
  g_dest->SetMarkerColor(g_src->GetMarkerColor());
  g_dest->SetMarkerStyle(g_src->GetMarkerStyle());

  TQHistogramUtils::copyAxisStyle(g_src->GetXaxis(),g_dest->GetXaxis());
  TQHistogramUtils::copyAxisStyle(g_src->GetYaxis(),g_dest->GetYaxis());

  return true;
}

//__________________________________________________________________________________|___________

bool TQHistogramUtils::copyStyle(TGraph2D * g_dest, const TGraph2D * g_src) {
  // Copies the style settings (fill color, fill style, line color, line style, line
  // width, marker size, marker color, marker style) from the source graph
  // <g_src> to the destionation graph <g_dest> and returns true in case of
  // success or false in case of failure.

  if (!g_dest || !g_src) {
    return false;
  }

  g_dest->SetFillColor(g_src->GetFillColor());
  g_dest->SetFillStyle(g_src->GetFillStyle());
  g_dest->SetLineColor(g_src->GetLineColor());
  g_dest->SetLineStyle(g_src->GetLineStyle());
  g_dest->SetLineWidth(g_src->GetLineWidth());
  g_dest->SetMarkerSize(g_src->GetMarkerSize());
  g_dest->SetMarkerColor(g_src->GetMarkerColor());
  g_dest->SetMarkerStyle(g_src->GetMarkerStyle());

  TQHistogramUtils::copyAxisStyle(g_src->GetXaxis(),g_dest->GetXaxis());
  TQHistogramUtils::copyAxisStyle(g_src->GetYaxis(),g_dest->GetYaxis());
  TQHistogramUtils::copyAxisStyle(g_src->GetZaxis(),g_dest->GetZaxis());

  return true;
}

//__________________________________________________________________________________|___________

bool TQHistogramUtils::isCloseToOneRel(double val, double rel) {
  // Returns true if the input value <val> is compatible with one with a relative
  // deviation smaller than <rel> and false otherwise. The return value is invariant
  // under the transformation <val> --> 1/<val>.

  if (val < 0.) {
    // negative value are always incompatible with one
    return false;
  } else if (val > 1.) {
    // for values larger than 1.
    return (val - 1.) < rel;
  } else if (val < 1.) {
    // for values smaller than one (but larger than zero)
    return (1. / val - 1.) < rel;
  } else {
    // val exactly equal to one
    return true;
  }
}


//__________________________________________________________________________________|___________

bool TQHistogramUtils::areEqualRel(double val1, double val2, double rel) {
  // Returns true if the two input values <val1> and <val2> are compatible with a
  // relative deviation smaller than <rel> and false otherwise. If either of the
  // input values is zero or one is positive while the other is negative false is
  // returned. The return value is invariant under exchange of <val1> and <val2>.

  if (val1 * val2 > 0.) {
    return isCloseToOneRel(val1 / val2, rel);
  } else {
    // at least one value is zero or one is positive while the other is negative
    return false;
  }
}


//__________________________________________________________________________________|___________

bool TQHistogramUtils::haveEqualShapeRel(TH1 * h1, TH1 * h2, double rel) {
	// check if two histograms have a relatively equal shape by calling areEqualRel on every bin
  if (!h1 || !h2)
    return false;

  /* histograms have to have same binning */
  if (!checkConsistency(h1, h2))
    return false;

  /* true if shapes are equal */
  bool equal = true;

  /* loop over individual bins */
  int nBins = getNBins(h1);
  for (int i = 0; equal && i < nBins; i++) {
    double bin1 = h1->GetBinContent(i);
    double bin2 = h2->GetBinContent(i);
    if (bin1 > 0. && bin2 > 0.)
      equal = areEqualRel(bin1, bin2, rel);
    else if (bin1 < 0. && bin2 < 0.)
      equal = areEqualRel(-bin1, -bin2, rel);
    else if (bin1 != 0. || bin2 != 0.)
      equal = false;
  }

  return equal;
}

//__________________________________________________________________________________|___________

bool TQHistogramUtils::ensureMinimumContent(double &content,
                                            double &uncertainty,
                                            double min,
                                            bool ignoreNegative,
                                            bool flipToPositive,
                                            bool assignUncertainty){
  // Takes a value content and ensure that it is greater or equal to min.
  // Returns true if the content or uncertainty have changed, false
  // otherwise. The variables content and uncertainty are call-by-reference.
  // All additional options only play a role if content is negative:
  // If (assignUncertainty) and (content < 0), then it is ensured that the
  // new uncertainty is greater or equal to -content.
  // If (ignoreNegative) and (content < 0), content is not changed.
  // If (not ignoreNegative) and (flipToPositive) and (content < 0), then the
  // absolute value of content is taken.

  bool varsChanged = false;
  if (content < 0){
    double absContent = TMath::Abs(content);
    if ((assignUncertainty) && (uncertainty < absContent)){
      uncertainty = absContent;
      varsChanged = true;
      // No return here. We still need to set the content.
    }
    if (ignoreNegative){
      return varsChanged;
    }
    if (flipToPositive){
      content = absContent;
      varsChanged = true;
      return varsChanged;
    }
  }

  // Now, content is > 0 or doesn't need special treatment.
  if (content < min){
    content = min;
    varsChanged = true;
    return varsChanged;
  }
  return varsChanged;
}

//__________________________________________________________________________________|___________

int TQHistogramUtils::ensureMinimumBinError( TH1 * histo, double averageWeight) {

  //this function ensures that the bin error of an histogram corresponds at least at 68\% C.L. upper limit on the number of raw events in the histogram

    int set = 0;
    int nBins = histo->GetNbinsX()*histo->GetNbinsY()*histo->GetNbinsZ();

//iterate over "visible" bins (non-under/over flow)

    for (int iBin=1; iBin<nBins+1; ++iBin) {

      double origStatUncert = histo->GetBinError(iBin);

      double binContent = histo->GetBinContent(iBin); //this is after already ensuring a min. bin content!

      histo->SetBinContent(iBin, 0);

      histo->SetBinError(iBin, 0);

//estimate the number of raw events based on the specified average weight

      double nRawApprox = std::max(binContent/averageWeight,0.);

      size_t nRawLow = size_t(nRawApprox); //round down (we'll consider both surrounding integers, i.e. effective rounding up and down and then interpolate)

      if (nRawLow>= poisson68percLimits.size()) { //beyond the range that we consider worth inflating

         continue;

      }

      double inflateTo = 0.;

      if (nRawLow == poisson68percLimits.size()-1) {//last entry in the list above

          inflateTo = averageWeight*TMath::Sqrt(poisson68percLimits.back()); //ensure slightly higher yields don't get a lower uncertainty

      } else { //somewhere inside the list, will need to interpolate

        double limitLow = poisson68percLimits[nRawLow];

        double limitHigh = poisson68percLimits[nRawLow+1];

//linear interpolation: (also, don't forget to add back the average weight!)

       inflateTo = averageWeight * TMath::Sqrt( limitLow + (nRawApprox-nRawLow) * (limitHigh-limitLow) );

      }
   
      if (inflateTo > origStatUncert) {
  
//      histo->SetBinError(iBin,inflateTo);
	set++;
         histo->SetBinError(iBin,sqrt(inflateTo*inflateTo-origStatUncert*origStatUncert));
      } 
   

    }

    return set;

}


int TQHistogramUtils::ensureMinimumBinContent(
                                              TH1 * histo,
                                              double min,
                                              bool ignoreNegative,
                                              bool flipToPositive,
                                              bool assignUncertainty) {
	// Ensure that a histogram has a certain minimum content in every bin
	// For the other options, see ensureMinimumContent(...)
  int dim = getDimension(histo);
  if (dim < 1 || dim > 2) {
    return -1;
  }

  int nEntries = histo->GetEntries();

  /* the number of bins where additional bin content has been set */
  int set = 0;

  /* loop over individual bins */
  int nBinsX = histo->GetNbinsX();
  if (dim == 1) {
    for (int iX = 1; iX <= nBinsX; iX++) {
      double content = histo->GetBinContent(iX);
      double uncertainty = histo->GetBinError(iX);
      if (ensureMinimumContent(content, uncertainty, min, ignoreNegative, flipToPositive, assignUncertainty)){
        histo->SetBinContent(iX, content);
        histo->SetBinError(iX, uncertainty);
        set++;
      }
    }
  } else if (dim == 2) {
    int nBinsY = histo->GetNbinsY();
    for (int iX = 1; iX <= nBinsX; iX++) {
      for (int iY = 1; iY <= nBinsY; iY++) {
        double content = histo->GetBinContent(iX, iY);
        double uncertainty = histo->GetBinError(iX, iY);
        if (ensureMinimumContent(content, uncertainty, min, ignoreNegative, flipToPositive, assignUncertainty)){
          histo->SetBinContent(iX, iY, content);
          histo->SetBinError(iX, iY, uncertainty);
          set++;
        }
      }
    }
  }

  histo->SetEntries(nEntries);

  return set;
}

//__________________________________________________________________________________|___________

bool TQHistogramUtils::ensureAbsMinimumContent(double &content,
                                            double min){
  // Build upon ensureMinimumContent. When this is called the Absolute content is compared with the MinBinContent.
  // If the AbsContent is lower than the MinBincontent and the Content was negative. The new content is -MinBinContent
  // If the AbsContent is lower than the MinBincontent and the Content was positive. The new content is +MinBinContent
  // Bins equal to zero are regarded as positive.

  bool varsChanged = false;
  if (content < 0){
    // If we have negative content, but the AbsMinimumContent is called. We trust the statistical uncertainty. And only ensure a non-zero bin content.
    double absContent = TMath::Abs(content);
    if (absContent < min){
        content = -min;
        varsChanged = true;
        return varsChanged;
    } else {
        return varsChanged;
    }
  }



  // Now, content is > 0 or doesn't need special treatment.
  if (content < min){
    content = min;
    varsChanged = true;
    return varsChanged;
  }
  return varsChanged;
}

//__________________________________________________________________________________|___________

int TQHistogramUtils::ensureAbsMinimumBinContent(
                                              TH1 * histo,
                                              double min) {
	// Ensure that a histogram has a certain minimum content in every bin
	// For the other options, see ensureMinimumContent(...)
  int dim = getDimension(histo);
  if (dim < 1 || dim > 2) {
    return -1;
  }

  int nEntries = histo->GetEntries();

  /* the number of bins where additional bin content has been set */
  int set = 0;

  /* loop over individual bins */
  int nBinsX = histo->GetNbinsX();
  if (dim == 1) {
    for (int iX = 1; iX <= nBinsX; iX++) {
      double content = histo->GetBinContent(iX);
      double uncertainty = histo->GetBinError(iX);
      if (ensureAbsMinimumContent(content, min)){
        histo->SetBinContent(iX, content);
        histo->SetBinError(iX, uncertainty);
        set++;
      }
    }
  } else if (dim == 2) {
    int nBinsY = histo->GetNbinsY();
    for (int iX = 1; iX <= nBinsX; iX++) {
      for (int iY = 1; iY <= nBinsY; iY++) {
        double content = histo->GetBinContent(iX, iY);
        double uncertainty = histo->GetBinError(iX, iY);
        if (ensureAbsMinimumContent(content, min)){
          histo->SetBinContent(iX, iY, content);
          histo->SetBinError(iX, iY, uncertainty);
          set++;
        }
      }
    }
  }

  histo->SetEntries(nEntries);
  return set;
}

//__________________________________________________________________________________|___________

double TQHistogramUtils::pValuePoisson(unsigned nObs, // observed counts
                                       double nExp){ // Poisson parameter
  /*
    Consider Poi(k|nExp) and compute the p-value which corresponds to
    the observation of nObs counts.

    When nObs > nExp there is an excess of observed events and

    p-value = P(n>=nObs|nExp) = \sum_{n=nObs}^{\infty} Poi(n|nExp)
    = 1 - \sum_{n=0}^{nObs-1} Poi(n|nExp)
    = 1 - e^{-nExp} \sum_{n=0}^{nObs-1} nExp^n / n!

    Otherwise (nObs <= nExp) there is a deficit and

    p-value = P(n<=nObs|nExp) = \sum_{n=0}^{nObs} Poi(n|nExp)
    = e^{-nExp} \sum_{n=0}^{nObs} nExp^n / n!
  */

  if (nObs>nExp) // excess
    return 1-ROOT::Math::inc_gamma_c(nObs,nExp);
  else // deficit
    return ROOT::Math::inc_gamma_c(nObs+1,nExp);

}


//__________________________________________________________________________________|___________

double TQHistogramUtils::pValuePoissonError(unsigned nObs, // observed counts
                                            double E, // expected counts
                                            double V){ // variance of expectation

  /*
    Consider Poi(k|nExp) and compute the p-value which corresponds to
    the observation of nObs counts, in the case of uncertain nExp whose
    variance is provided.

    The prior for nExp is a Gamma density which matches the expectation
    and variance provided as input. The marginal model is provided by
    the Poisson-Gamma mixture, which is used to compute the p-value.

    Gamma density: the parameters are
    * a = shape param [dimensionless]
    * b = rate param [dimension: inverse of x]

    nExp ~ Ga(x|a,b) = [b^a/Gamma(a)] x^{a-1} exp(-bx)

    One has E[x] = a/b and V[x] = a/b^2 hence
    * b = E/V
    * a = E*b

    The integral of Poi(n|x) Ga(x|a,b) over x gives the (marginal)
    probability of observing n counts as

    b^a [Gamma(n+a) / Gamma(a)]
    P(n|a,b) = -----------------------------
    n! (1+b)^{n+a}

    When nObs > nExp there is an excess of observed events and

    p-value = P(n>=nObs) = \sum_{n=nObs}^{\infty} P(n)
    = 1 - \sum_{n=0}^{nObs-1} P(n)

    Otherwise (nObs <= nExp) there is a deficit and

    p-value = P(n<=nObs) = \sum_{n=0}^{nObs} P(n)

    To compute the sum, we use the following recurrent relation:

    P(n=0) = [b/(1+b)]^a
    P(n=1) = [b/(1+b)]^a a/(1+b) = P(n=0) a/(1+b)
    P(n=2) = [b/(1+b)]^a a/(1+b) (a+1)/[2(1+b)] = P(n=1) (a+1)/[2(1+b)]
    ... ...
    P(n=k) = P(n=k-1) (a+k-1) / [k(1+b)]

    and to avoid rounding errors, we work with logarithms.
  */

//  if (nObs<0) {
//    std::cerr << "ERROR in pValuePoissonError(): the number of observed events cannot be negative" << std::endl;
//    return 0;
//  }
  if (E<=0 || V<=0) {
    std::cerr << "ERROR in pValuePoissonError(): expectation and variance must be positive" << std::endl;
    return 0;
  }
  double B = E/V;
  double A = E*B;

  // relative syst = sqrt(V)/E = 1/sqrt(A)
  // relative stat = 1/sqrt(nObs)
  // if syst < 0.1*stat there is no need for syst:
  // save a bit of CPU time (comment if not needed)
  if (A>100*nObs) return TQHistogramUtils::pValuePoisson(nObs,E);

  // explicit treatment for systematics:
  unsigned stop=nObs;
  if (nObs>E) --stop;

  //double prob=pow(B/(1+B), A);
  // NB: must work in log-scale otherwise troubles!
  double logProb = A*log(B/(1+B));
  double sum=exp(logProb); // P(n=0)
  for (unsigned u=1; u<stop; ++u) {
    logProb += log((A+u-1)/(u*(1+B)));
    sum += exp(logProb);
  }
  if (nObs>E) // excess
    return 1-sum;
  else // deficit
    return sum;
}

//__________________________________________________________________________________|___________

double TQHistogramUtils::pValueToSignificance(double p, // p-value
                                              bool excess){ // false if deficit
  /*
    Convert a p-value into a right-tail normal significance, i.e. into
    the number of Gaussian standard deviations which correspond to it.
  */

  if (p<0 || p>1) {
    std::cerr << "ERROR: p-value must belong to [0,1] but input value is " << p << std::endl;
    return 0;
  }

  if (excess)
    return ROOT::Math::normal_quantile(1-p,1);
  else
    return ROOT::Math::normal_quantile(p,1);
}

//__________________________________________________________________________________|___________



TH1* TQHistogramUtils::pcmpObsVsExp(TH1* hObs, TH1* hExp, bool ignoreExpUnc){

  /*
    Find the significance of the excess/deficit of counts with respect
    to the expectation.

    The input histograms are:
    * hObs = observed counts (integers)
    * hExp = expected yields (real values)
    and the returned histogram contains the z-value or significance
    of the bin-wise deviations between hObs and hExp.

    The uncertainty on the expected yields must be provided in the
    form of bin "errors" (i.e. standard deviations). If they are
    not null and the boolean flag ignoreExpUnc is not true, such
    uncertainties are accounted for with a Bayesian treatment.

    The uncertainties on the expectation have the effect of reducing
    the significance of any deviation. A Gamma density is found
    which has the same expectation and standard deviation in each
    bin, and the marginal model is used to compute the p-value.

    The marginal model is a Poisson-Gamma mixture (also known as
    negative binomial).
  */

  if (hObs==0 || hExp==0)
    return 0;

  TString name=hObs->GetName();

  name+="_cmp_";
  name+=hExp->GetName();

  int Nbins = hObs->GetNbinsX();

  TH1* hOut = 0;

  if (hObs->InheritsFrom(TH1F::Class()))
    hOut = new TH1F(name.Data(),hObs->GetTitle(), hObs->GetNbinsX(), hObs->GetXaxis()->GetXmin(), hObs->GetXaxis()->GetXmax() );
  else if (hObs->InheritsFrom(TH1D::Class()))
    hOut = new TH1D(name.Data(),hObs->GetTitle(), hObs->GetNbinsX(), hObs->GetXaxis()->GetXmin(), hObs->GetXaxis()->GetXmax() );

  hOut->GetXaxis()->SetTitle( hObs->GetXaxis()->GetTitle() );
  hOut->GetYaxis()->SetTitle("significance");

  hOut->SetFillColor(2);

  for (int i=1; i<Nbins; ++i) { // SKIP UNDER-, OVER-FLOWS
    int nObs = (int) hObs->GetBinContent(i);
    if (nObs<=0)
      continue;
    float nExp = hExp->GetBinContent(i);
    float vrnc = hExp->GetBinError(i);
    vrnc *= vrnc; // variance
    float sig = 0;
    if (vrnc>0 && !ignoreExpUnc) {
      // account for systematic uncertainty
      float pValue = pValuePoissonError(nObs, nExp, vrnc);
      if (pValue<0.5) sig = pValueToSignificance(pValue, (nObs>nExp));
    } else {
      // assume perfect knowledge of Poisson parameter
      float pValue = pValuePoisson(nObs,nExp);
      if (pValue<0.5) sig = pValueToSignificance(pValue, (nObs>nExp));
    }
    hOut->SetBinContent(i, sig);
  }

  return hOut;
}

//__________________________________________________________________________________|___________

TH1* TQHistogramUtils::getUncertaintyHistogram(TH1* hist) {
  // fills a new histogram with uncertainties of the argument.
  if (!hist) return 0;
  TH1* histUncert = copyHistogram(hist, TString(hist->GetName())+"_uncertanties");
  histUncert->SetDirectory(NULL);
  for (int i=0; i<=getNbinsGlobal(histUncert); i++) {
    histUncert->SetBinContent(i,hist->GetBinError(i));
    histUncert->SetBinError(i,0.);
  }
  return histUncert;
}

//__________________________________________________________________________________|___________

void TQHistogramUtils::setRelativeUncertainties(TH1* hist,double relunc,bool addToInitialValue) {
  // set the uncertainties of a histogram to the relative unceratinty value given
  if (!hist) return;
  for (int i=0; i<=getNbinsGlobal(hist); ++i) {
    double val = hist->GetBinContent(i);
    double initVal = addToInitialValue ? hist->GetBinError(i) : 0;
    double addVal = val*relunc;
    double newVal = sqrt(initVal*initVal+addVal*addVal);
    hist->SetBinError(i,newVal);
  }
}

//__________________________________________________________________________________|___________

TGraph* TQHistogramUtils::scatterPlot(const TString& name, double* vec1, double* vec2, int vLength, const TString& labelX, const TString& labelY) {
	// obtain a TGraph scatter plot from two lists of numbers
  std::vector<double> v1(vec1, vec1 + vLength);
  std::vector<double> v2(vec2, vec2 + vLength);
  return TQHistogramUtils::scatterPlot(name , v1 , v2 , labelX , labelY);
}

//__________________________________________________________________________________|___________


TGraph* TQHistogramUtils::scatterPlot(const TString& name, std::vector<double>& vec1, std::vector<double>& vec2, const TString& labelX, const TString& labelY) {
	// obtain a TGraph scatter plot from two lists of numbers
  if (vec1.size() != vec2.size()) {
    ERRORfunc("Vectors have different length!");
    return NULL;
  }
  TGraph* graph = new TGraph(vec1.size(),&vec1[0],&vec2[0]);
  if (!graph) {
    ERRORfunc("Failed to create graph");
    return NULL;
  }
  graph->SetNameTitle(name.Data(),name.Data());
  graph->GetXaxis()->SetTitle(labelX.Data());
  graph->GetYaxis()->SetTitle(labelY.Data());
  return graph;
}

//__________________________________________________________________________________|___________

TMultiGraph* TQHistogramUtils::makeMultiColorGraph(const std::vector<double>& vecX, const std::vector<double>& vecY, const std::vector<short>& vecColors) {
  // creates multiple TGraphs combined into a TMultiGraph. vecColors idicates the
  // color of each point (according to the usual ROOT colors) and is hence required
  // to have the same number of elements as the coordinates of the points (vecX, vecY).
  // For each color present in vecColors one TGraph is created and added to the
  // TMultiGraph.
  if (vecX.size() != vecY.size() || vecX.size() != vecColors.size()) {
    WARN("Cannot create multiColorGraph: input sizes do not match!");
    return nullptr;
  }
  std::map< short,std::pair < std::vector<double>,std::vector<double> > > pointMap;
  for (size_t i=0; i<vecX.size(); ++i) {
    short color = vecColors[i];
    //ensure there is a pair of vectors for this color
    if (pointMap.count(color)<1) {
      std::pair< std::vector<double>,std::vector<double> > points;
      pointMap[color] = points;
    }
    pointMap[color].first.push_back(vecX[i]);
    pointMap[color].second.push_back(vecY[i]);
  }
  TMultiGraph* multi = new TMultiGraph();

  for (auto const& graphDef : pointMap) {
    TGraph* gr = new TGraph(graphDef.second.first.size(), &(graphDef.second.first[0]), &(graphDef.second.second[0]) );
    gr->SetMarkerColor(graphDef.first);
    multi->Add(gr);  //multi graph takes ownership
  }
  return multi;
}

//__________________________________________________________________________________|___________


void TQHistogramUtils::setSliceX(TH2* hist2d, TH1* hist, double value){
  // set an X-slice of a TH2*-type histogram to the content of a TH1*-type histogram
  // the dimension of the TH1* will become the Y-direction of the TH2*
  for(int i=1; i<hist->GetNbinsX()+2; i++){
    int bin = hist2d->FindBin(value,hist->GetBinCenter(i));
    if(bin <= 0) continue;
    hist2d->SetBinContent(bin,hist->GetBinContent(i));
    hist2d->SetBinError(bin,hist->GetBinError(i));
  }
}

//__________________________________________________________________________________|___________

void TQHistogramUtils::setSliceY(TH2* hist2d, TH1* hist, double value){
  // set an Y-slice of a TH2*-type histogram to the content of a TH1*-type histogram
  // the dimension of the TH1* will become the X-direction of the TH2*
  for(int i=1; i<hist->GetNbinsX()+2; i++){
    int bin = hist2d->FindBin(hist->GetBinCenter(i),value);
    if(bin <= 0) continue;
    hist2d->SetBinContent(bin,hist->GetBinContent(i));
    hist2d->SetBinError(bin,hist->GetBinError(i));
  }
}

//__________________________________________________________________________________|___________

int TQHistogramUtils::purgePeaks1D(TH1* hist, double threshold, int mode){
  if(!hist) return 0;
  int n=0;
  for(int i=1; i<hist->GetNbinsX()+1; ++i){
    if(hist->GetBinContent(i) > threshold*hist->GetBinContent(i+1) && hist->GetBinContent(i) > threshold*hist->GetBinContent(i-1)){
      if(mode == 0){
	hist->SetBinContent(i,0);
      } else {
	hist->SetBinContent(i,0.5*(hist->GetBinContent(i+1)+hist->GetBinContent(i-1)));
      }
      ++n;
    }
  }
  return n;
}

//__________________________________________________________________________________|___________

void TQHistogramUtils::getFilteredRange(TCollection* histograms, double xmin, double xmax, double minContent, double maxContent, double& lower, double& upper, double logMin){
  //Find the largest error of a plot
  double maxErr=0.;
  int eventCounter=0;
  TQTH1Iterator itr(histograms);
  while(itr.hasNext()){
    TH1 * hist = itr.readNext();
    if(!hist) continue;
    int minbin = hist->FindBin(xmin);
    int maxbin = hist->FindBin(xmax);
    for(int i=minbin; i<maxbin; i++){
      double val = hist->GetBinContent(i);
      double err = hist->GetBinError(i);
      if(val < minContent || val > maxContent || err==0.) continue; //skip obvious outliers
      maxErr=std::max(maxErr, err);
      eventCounter++;
    }
  }
  //Fill distribution of errors
  TH1F* errors = new TH1F("error distribution","", eventCounter, 0., maxErr);
  itr.reset();
  while(itr.hasNext()){
    TH1 * hist = itr.readNext();
    if(!hist) continue;
    int minbin = hist->FindBin(xmin);
    int maxbin = hist->FindBin(xmax);
    for(int i=minbin; i<maxbin; i++){
      double val = hist->GetBinContent(i);
      double err = hist->GetBinError(i);
      if(val < minContent || val > maxContent || err==0) continue; //skip obvious outliers
      errors->Fill(err);
    }
  }

  //calculate mean and std. deviation of 95% of errors. Allow in TProfile only points with error smaller than Mean+3Sigma
  int collectedEvents=0;
  int percentile95=1;
  while (collectedEvents < (eventCounter-1)*0.95){
    collectedEvents+=errors->GetBinContent(percentile95);
    percentile95++;
  }
  errors->GetXaxis()->SetRange(1,percentile95-1);
  double maxAllowedErr=errors->GetMean()+3*errors->GetRMS();
  maxAllowedErr=std::max(maxAllowedErr, (maxContent-minContent)*0.1); //do not allow too harsh filtering
  delete errors;

  //calculate minimum allowed window
  lower=maxContent;
  upper=minContent;
  itr.reset();
  while(itr.hasNext()){
    TH1 * hist = itr.readNext();
    if(!hist) continue;
    int minbin = hist->FindBin(xmin);
    int maxbin = hist->FindBin(xmax);
    for(int i=minbin; i<maxbin; i++){
      double val = hist->GetBinContent(i);
      double err = hist->GetBinError(i);
      if(TQUtils::isNum(val) && TQUtils::isNum(err) && val > minContent && val < maxContent && err<maxAllowedErr){
        if (val+err>upper) upper = val+err;
        if (logMin<0 || val-err>logMin) {
          if (val-err<lower) lower = val-err;
        } else {
          if (val-err<lower) lower=std::min(lower,logMin);
          if (val<lower) lower=val/1.05; //don't let error bar be lower than logMin, but allow value; add small margin
        }
      }
    }
  }

}

//__________________________________________________________________________________|___________

void TQHistogramUtils::getUnFilteredRange(TCollection* histograms, double xmin, double xmax, double minContent, double maxContent, double& lower, double& upper){
  //Fit even points with insane errors on a plot
  lower=minContent;
  upper=maxContent;
  TQTH1Iterator itr(histograms);
  while(itr.hasNext()){
    TH1 * hist = itr.readNext();
    if(!hist) continue;
    int minbin = hist->FindBin(xmin);
    int maxbin = hist->FindBin(xmax);
    for(int i=minbin; i<maxbin; i++){
      double val = hist->GetBinContent(i);
      double err = hist->GetBinError(i);
      if(TQUtils::isNum(val) && TQUtils::isNum(err)) {
        if (val-err<lower) lower = val-err;
        if (val+err>upper) upper = val+err;
      }
    }
  }
}

//__________________________________________________________________________________|___________

double TQHistogramUtils::getMinimumBinValue(TH1* hist, double xmin, double xmax, bool includeErrors, double minContent, double maxContent){
  // find the minimum bin value of the given histogram
  // in the given x-range ignoring bins smaller or
  // equal to minContent and larger or equal to maxContent
  double min = std::numeric_limits<double>::infinity();
  if(!hist) return min;
  int minbin = hist->FindBin(xmin);
  int maxbin = hist->FindBin(xmax);
  for(int i=minbin; i<maxbin; i++){
    double val = hist->GetBinContent(i);
    if(includeErrors){
      double err = hist->GetBinError(i);
      if(TQUtils::isNum(err)) val -= err;
    }
    if(TQUtils::isNum(val) && val < min && val > minContent && val < maxContent)
      min = val;
  }
  return min;
}

//__________________________________________________________________________________|___________

double TQHistogramUtils::getMinimumBinValue(TCollection* histograms, double xmin, double xmax, bool includeErrors, double minContent, double maxContent){
  // find the minimum bin value of a list of histograms
  double min = std::numeric_limits<double>::infinity();
  TQTH1Iterator itr(histograms);
  while(itr.hasNext()){
    TH1 * histo = itr.readNext();
    if(!histo) continue;
    min = std::min(min,TQHistogramUtils::getMinimumBinValue(histo,xmin,xmax,includeErrors,minContent,maxContent));
  }
  return min;
}

//__________________________________________________________________________________|___________

double TQHistogramUtils::getMaximumBinValue(TH1* hist, double xmin, double xmax, bool includeErrors, double minContent, double maxContent){
  // find the maximum bin value of the given histogram
  // in the given x-range ignoring bins smaller or
  // equal to minContent and larger or equal to maxContent
  double max = -std::numeric_limits<double>::infinity();
  if(!hist) return max;
  int minbin = hist->FindBin(xmin);
  int maxbin = hist->FindBin(xmax);
  for(int i=minbin; i<maxbin; i++){
    double val = hist->GetBinContent(i);
    if(includeErrors){
      double err = hist->GetBinError(i);
      if(TQUtils::isNum(err)) val += err;
    }
    if(TQUtils::isNum(val) && val > max && val > minContent && val < maxContent)
      max = val;
  }
  return max;
}

//__________________________________________________________________________________|___________

double TQHistogramUtils::getMaximumBinValue(TCollection* histograms, double xmin, double xmax, bool includeErrors, double minContent, double maxContent){
  // find the maximum bin value of a list of histograms
  double max = -std::numeric_limits<double>::infinity();
  TQTH1Iterator itr(histograms);
  while(itr.hasNext()){
    TH1 * histo = itr.readNext();
    if(!histo) continue;
    max = std::max(max,TQHistogramUtils::getMaximumBinValue(histo,xmin,xmax,includeErrors,minContent,maxContent));
  }
  return max;
}

//__________________________________________________________________________________|___________

double TQHistogramUtils::getHistogramMaximum(size_t n, ...){
  // find the total maximum of a set of histograms
  // the first argument is the number of histograms to consider
  // an arbitrary number of subsequent histogram pointers can be passed
  va_list vl;
  va_start(vl,n);
  double max = -std::numeric_limits<double>::infinity();
  for(size_t i=0; i<n; i++){
    TH1* h = va_arg(vl,TH1*);
    if(h) max = std::max(max,h->GetMaximum());
  }
  va_end(vl);
  return max;
}

//__________________________________________________________________________________|___________

double TQHistogramUtils::getHistogramMinimum(size_t n, ...){
  // find the total minimum of a set of histograms
  // the first argument is the number of histograms to consider
  // an arbitrary number of subsequent histogram pointers can be passed
  va_list vl;
  va_start(vl,n);
  double min = std::numeric_limits<double>::infinity();
  for(size_t i=0; i<n; i++){
    TH1* h = va_arg(vl,TH1*);
    if(h) min = std::min(min,h->GetMinimum());
  }
  va_end(vl);
  return min;
}

//__________________________________________________________________________________|___________

double TQHistogramUtils::getHistogramXmax(size_t n, ...){
  // find x axis maximum of a set of histograms
  // the first argument is the number of histograms to consider
  // an arbitrary number of subsequent histogram pointers can be passed
  va_list vl;
  va_start(vl,n);
  double max = -std::numeric_limits<double>::infinity();
  for(size_t i=0; i<n; i++){
    TH1* h = va_arg(vl,TH1*);
    if(h) max = std::max(max,h->GetXaxis()->GetXmax());
  }
  va_end(vl);
  return max;
}

//__________________________________________________________________________________|___________

double TQHistogramUtils::getHistogramXmin(size_t n, ...){
  // find the x axis minimum of a set of histograms
  // the first argument is the number of histograms to consider
  // an arbitrary number of subsequent histogram pointers can be passed
  va_list vl;
  va_start(vl,n);
  double min = std::numeric_limits<double>::infinity();
  for(size_t i=0; i<n; i++){
    TH1* h = va_arg(vl,TH1*);
    if(h) min = std::min(min,h->GetXaxis()->GetXmin());
  }
  va_end(vl);
  return min;
}

//__________________________________________________________________________________|___________

double TQHistogramUtils::getHistogramYmax(size_t n, ...){
  // find the y axis maximum of a set of histograms
  // the first argument is the number of histograms to consider
  // an arbitrary number of subsequent histogram pointers can be passed
  va_list vl;
  va_start(vl,n);
  double max = -std::numeric_limits<double>::infinity();
  for(size_t i=0; i<n; i++){
    TH1* h = va_arg(vl,TH1*);
    if(h) max = std::max(max,h->GetYaxis()->GetXmax());
  }
  va_end(vl);
  return max;
}

//__________________________________________________________________________________|___________

double TQHistogramUtils::getHistogramYmin(size_t n, ...){
  // find the y axis minimum of a set of histograms
  // the first argument is the number of histograms to consider
  // an arbitrary number of subsequent histogram pointers can be passed
  va_list vl;
  va_start(vl,n);
  double min = std::numeric_limits<double>::infinity();
  for(size_t i=0; i<n; i++){
    TH1* h = va_arg(vl,TH1*);
    if(h) min = std::min(min,h->GetYaxis()->GetXmin());
  }
  va_end(vl);
  return min;
}

//__________________________________________________________________________________|___________

double TQHistogramUtils::getAxisYmin(const TH1* hist){
  // retrieve lower edge value of y-axis from histogram
  if(!hist) return std::numeric_limits<double>::quiet_NaN();
  return hist->GetYaxis()->GetBinLowEdge(hist->GetYaxis()->GetFirst());
}

//__________________________________________________________________________________|___________

double TQHistogramUtils::getAxisYmax(const TH1* hist){
  // retrieve upper edge value of y-axis from histogram
  if(!hist) return std::numeric_limits<double>::quiet_NaN();
  return hist->GetYaxis()->GetBinUpEdge(hist->GetYaxis()->GetLast());
}

//__________________________________________________________________________________|___________

double TQHistogramUtils::getAxisXmin(const TH1* hist){
  // retrieve lower edge value of x-axis from histogram
  if(!hist) return std::numeric_limits<double>::quiet_NaN();
  return hist->GetXaxis()->GetBinLowEdge(hist->GetXaxis()->GetFirst());
}

//__________________________________________________________________________________|___________

double TQHistogramUtils::getAxisXmax(const TH1* hist){
  // retrieve upper edge value of x-axis from histogram
  if(!hist) return std::numeric_limits<double>::quiet_NaN();
  return hist->GetXaxis()->GetBinUpEdge(hist->GetXaxis()->GetLast());
}

//__________________________________________________________________________________|___________

double TQHistogramUtils::getAxisXmin(const TGraph* graph){
  // retrieve lower edge value of x-axis from histogram
  if(!graph) return std::numeric_limits<double>::quiet_NaN();
  return graph->GetXaxis()->GetBinLowEdge(graph->GetXaxis()->GetFirst());
}

//__________________________________________________________________________________|___________

double TQHistogramUtils::getAxisXmax(const TGraph* graph){
  // retrieve upper edge value of x-axis from histogram
  if(!graph) return std::numeric_limits<double>::quiet_NaN();
  return graph->GetXaxis()->GetBinUpEdge(graph->GetXaxis()->GetLast());
}

//__________________________________________________________________________________|___________

double TQHistogramUtils::getHistogramBinContentFromFile(const TString& fname, const TString& hname, const TString binlabel){
  // retrieve the contents of the bin labeled binlabel
  // from a histogram named hname which resides in a TFile fname
  // will return NaN and print an error message if no such file, histogram or bin exists
  TFile* f = TFile::Open(fname,"READONLY");
  if(!f){
    ERRORfunc("unable to open file: '%s'",fname.Data());
    return std::numeric_limits<double>::quiet_NaN();
  }
  if(!f->IsOpen()){
    delete f;
    ERRORfunc("unable to open file '%s'",fname.Data());
    return std::numeric_limits<double>::quiet_NaN();
  }
  TH1* h = dynamic_cast<TH1*>(f->Get(hname));
  if(!h){
    f->Close();
    delete f;
    ERRORfunc("unable to obtain histogram '%s' from file '%s'",hname.Data(),fname.Data());
    return std::numeric_limits<double>::quiet_NaN();
  }
  TAxis* a = h->GetXaxis();
  if(!a){
    f->Close();
    delete f;
    ERRORfunc("unable to obtain x-axis from histogram '%s' in file '%s'",hname.Data(),fname.Data());
    return std::numeric_limits<double>::quiet_NaN();
  }
  int bin = a->FindBin(binlabel);
  if(bin < 0){
    f->Close();
    delete f;
    ERRORfunc("histogram '%s' from file '%s' does not have any bin labeled '%s'",hname.Data(),fname.Data(),binlabel.Data());
    return std::numeric_limits<double>::quiet_NaN();
  }
  double val = h->GetBinContent(bin);
  f->Close();
  delete f;
  return val;
}

//__________________________________________________________________________________|___________

double TQHistogramUtils::getHistogramBinContentFromFile(const TString& fname, const TString& hname, int bin){
  // retrieve the contents of the given bin
  // from a histogram named hname which resides in a TFile fname
  // will return NaN and print an error message if no such file, histogram or bin exists
  TFile* f = TFile::Open(fname,"READONLY");
  if(!f){
    ERRORfunc("unable to open file: '%s'",fname.Data());
    return std::numeric_limits<double>::quiet_NaN();
  }
  if(!f->IsOpen()){
    delete f;
    ERRORfunc("unable to open file '%s'",fname.Data());
    return std::numeric_limits<double>::quiet_NaN();
  }
  TH1* h = dynamic_cast<TH1*>(f->Get(hname));
  if(!h){
    f->Close();
    delete f;
    ERRORfunc("unable to obtain histogram '%s' from file '%s'",hname.Data(),fname.Data());
    return std::numeric_limits<double>::quiet_NaN();
  }
  double val = h->GetBinContent(bin);
  f->Close();
  delete f;
  return val;
}

//__________________________________________________________________________________|___________

std::vector<int> TQHistogramUtils::getBinsSortedByRatio(TH1* sig, TH1* bkg, double epsilon){
  // read in a signal and background histogram and give back a vector of bins starting with the lowest value of sig/bkg and ending with highest
  // only supports 1dim histograms at the moment
  const int nbins = sig->GetNbinsX();
  std::vector<double> sigbkg(nbins);
  std::vector<int> bin(nbins);
  // comparator that provides the sorting algorithm
  struct comparator {
    comparator(const std::vector<double>& _content):
      content(_content) {}
    bool operator() (int i, int j) {
      return (content[i] < content[j]);
    }
    std::vector<double> content;
  } ;

  // check if histograms are of the same size
  if (!checkConsistency(sig,bkg,true)){
    throw std::runtime_error("Cannot calculate signal over background per bin, histograms are not the same size");
  }

  // start filling sigbkg and bin
  for (int i = 0; i < nbins; ++i){ // ignore under and overflow
    double bkgContent = std::max(bkg->GetBinContent(i+1),epsilon);
    double sigContent = std::max(sig->GetBinContent(i+1),0.);
    sigbkg[i] = sigContent/bkgContent;
    bin[i] = i;
  }

  std::sort(bin.begin(), bin.end(), comparator(sigbkg));
  return bin;
}

//__________________________________________________________________________________|___________

int TQHistogramUtils::edge(TH1* hist, double cutoff){
  // edges a one-dimensional histogram
  // adjusts the axis to hide marginal bins with a bin content below the cutoff
  if (hist->GetMaximum() < cutoff) {
    WARN("In TQHistogramUtils::edge() : Edging of histogram not possible! Cutoff value is larger than histogram maximum.");
    return 0;
  }
  if(!hist) return -1;
  TAxis* a = hist->GetXaxis();
  if(!a) return -1;
  size_t min=1;
  size_t max = hist->GetNbinsX();
  for(int i=min; i<hist->GetNbinsX(); i++){
    if(hist->GetBinContent(i) <= cutoff) min++;
    else break;
  }
  for(int i=max; i>0; i--){
    if(hist->GetBinContent(i) <= cutoff) max--;
    else break;
  }
  a->SetRange(min,max);
  return (hist->GetNbinsX() - max + min);
}

//__________________________________________________________________________________|___________

int TQHistogramUtils::edge(TH2* hist, double cutoff){
  // edges a two-dimensional histogram
  // adjusts the axis to hide marginal bins with a bin content below the cutoff
  if(!hist) return -1;
  TAxis* ax = hist->GetXaxis();
  TAxis* ay = hist->GetYaxis();
  if(!ax || !ay) return -1;
  size_t xmin=1;
  size_t xmax = hist->GetNbinsX();
  size_t ymin=1;
  size_t ymax = hist->GetNbinsY();
  for(int i=xmin; i<hist->GetNbinsX(); i++){
    bool emptyline = true;
    for(size_t j=1; j<ymax; j++){
      int bin = hist->GetBin(i,j);
      if(hist->GetBinContent(bin) > cutoff){
        emptyline = false;
        break;
      }
    }
    if(emptyline) xmin++;
    else break;
  }
  for(size_t i=xmax; i>0; i--){
    bool emptyline = true;
    for(size_t j=1; j<ymax; j++){
      int bin = hist->GetBin(i,j);
      if(hist->GetBinContent(bin) > cutoff){
        emptyline = false;
        break;
      }
    }
    if(emptyline) xmax--;
    else break;
  }
  for(int i=ymin; i<hist->GetNbinsY(); i++){
    bool emptyline = true;
    for(size_t j=xmin; j<xmax; j++){
      int bin = hist->GetBin(j,i);
      if(hist->GetBinContent(bin) > cutoff){
        emptyline = false;
        break;
      }
    }
    if(emptyline) ymin++;
    else break;
  }
  for(size_t i=ymax; i>0; i--){
    bool emptyline = true;
    for(size_t j=xmin; j<xmax; j++){
      int bin = hist->GetBin(j,i);
      if(hist->GetBinContent(bin) > cutoff){
        emptyline = false;
        break;
      }
    }
    if(emptyline) ymax--;
    else break;
  }
  ax->SetRange(xmin,xmax);
  ay->SetRange(ymin,ymax);
  return hist->GetNbinsX()*hist->GetNbinsY() - (xmax + xmin -1 )*(ymax+ymin-1);
}

//__________________________________________________________________________________|___________

bool TQHistogramUtils::rebin(TH1*& hist, const std::vector<int>& boundaries, bool doRemap) {
	// rebin and/or remap a histogram to given set of bin boundaries
  std::vector<double> bounds = TQHistogramUtils::getBinLowEdges(hist,boundaries);
  return TQHistogramUtils::rebin(hist,bounds,doRemap);
}

//__________________________________________________________________________________|___________

bool TQHistogramUtils::rebin(TH1*& hist, const std::vector<int>& boundariesX, const std::vector<int>& boundariesY, bool doRemap) {
	// rebin and/or remap a histogram to given set of bin boundaries
  std::vector<double> boundsX = TQHistogramUtils::getBinLowEdges(hist->GetXaxis(),boundariesX);
  std::vector<double> boundsY = TQHistogramUtils::getBinLowEdges(hist->GetYaxis(),boundariesY);
  return TQHistogramUtils::rebin(hist,boundsX,boundsY,doRemap);
}

//__________________________________________________________________________________|___________

TH1* TQHistogramUtils::getRebinned(const TH1* hist, const std::vector<int>& boundariesX, const std::vector<int>& boundariesY, bool doRemap, bool keepOverFlowUnderFlowSeparate) {
	// rebin and/or remap a histogram to given set of bin boundaries
  std::vector<double> boundsX = TQHistogramUtils::getBinLowEdges(hist->GetXaxis(),boundariesX);
  std::vector<double> boundsY = TQHistogramUtils::getBinLowEdges(hist->GetYaxis(),boundariesY);
  return TQHistogramUtils::getRebinned(hist,boundsX,boundsY,doRemap, keepOverFlowUnderFlowSeparate);
}

//__________________________________________________________________________________|___________

void TQHistogramUtils::reorder(TH1* hist, const std::vector<int>& bins) {
  // read in a histogram and vector with the places of the bins and reorder the bins accordingly
  if(!hist) return;  
  const int nentries = hist->GetEntries();
  std::vector<double> contents(hist->GetNbinsX());
  std::vector<double> errors(hist->GetNbinsX());
  for (int i = 0; i < hist->GetNbinsX(); ++i){ // ignore under and overflow
    contents[i] = hist->GetBinContent(bins[i]+1);
    errors[i] = hist->GetBinError(bins[i]+1);
  }
  for (unsigned i = 0; i < contents.size(); ++i){ // ignore under and overflow
    hist->SetBinContent( i+1, contents[i] );
    hist->SetBinError( i+1, errors[i] );
  }
  TQHistogramUtils::remap(hist->GetXaxis(),0,1);
  hist->SetEntries(nentries);
}

//__________________________________________________________________________________|___________

bool TQHistogramUtils::rebin(TH1*& hist, const std::vector<double>& boundaries, bool doRemap) {
	// rebin and/or remap a histogram to given set of bin boundaries
  if(!hist) return false;
  TH1* oldhist = hist;
  hist = NULL;
  TString name(oldhist->GetName());
  TDirectory* dir = oldhist->GetDirectory();
  if(dir) dir->Remove(oldhist);
  hist = oldhist->Rebin(boundaries.size()-1, name, &boundaries[0]);

  // If remap is true, the variable binning is changed to flat.
  if (doRemap) {
    remap(hist->GetXaxis(),0,1);
  }

  hist->SetDirectory(dir);
  delete oldhist;
  return true;
}

//__________________________________________________________________________________|___________

bool TQHistogramUtils::rebin(TH1*& hist, const std::vector<double>& boundariesX, const std::vector<double>& boundariesY, bool doRemap) {
	// rebin and/or remap a histogram to given set of bin boundaries
  TH1* oldhist = hist;
  hist = TQHistogramUtils::getRebinned(hist,boundariesX,boundariesY,doRemap);
  if(!hist) return false;
  TDirectory* dir = oldhist->GetDirectory();
  if(dir) dir->Remove(oldhist);
  hist->SetDirectory(dir);
  delete oldhist;
  return true;
}

TH1* TQHistogramUtils::getRebinned(const TH1* oldhist, const std::vector<double>& boundariesX, const std::vector<double>& boundariesY, bool doRemap, bool /* keepOverFlowUnderFlowSeparate */) {
  if(!oldhist) return NULL;  
  TH1* hist = new TH2F(oldhist->GetName(),oldhist->GetTitle(),boundariesX.size()-1,&boundariesX[0],boundariesY.size()-1,&boundariesY[0]);

  for(int i=0; i<oldhist->GetNbinsX()+2; ++i){
    for(int j=0; j<oldhist->GetNbinsY()+2; ++j){
      double xval = oldhist->GetXaxis()->GetBinCenter(i);
      double yval = oldhist->GetYaxis()->GetBinCenter(j);
      int ibin = hist->FindBin(xval,yval);
      double val = hist->GetBinContent(ibin);
      double err2 = pow(hist->GetBinError(ibin),2);
      val += oldhist->GetBinContent(i,j);
      err2 += pow(oldhist->GetBinError(i,j),2);
      hist->SetBinContent(ibin,val);
      hist->SetBinError(ibin,sqrt(err2));
    }
  }

  // If remap is true, the variable binning is changed to flat.
  if (doRemap) {
    remap(hist->GetXaxis(),0,1);
    remap(hist->GetYaxis(),0,1);
  }

  return hist;
}

//__________________________________________________________________________________|___________

TH1 * TQHistogramUtils::getSmoothedManually(const TH1 * histo, const std::vector<double>& lowEdges, bool keepOverFlowUnderFlowSeparate) {
  std::vector<int> binBorders;
  for (size_t i = 0; i < lowEdges.size(); ++i) {
    binBorders.push_back(histo->GetXaxis()->FindBin(lowEdges[i]));
  }
  return TQHistogramUtils::getSmoothedManually(histo, binBorders, keepOverFlowUnderFlowSeparate);
}

//__________________________________________________________________________________|___________

TH1 * TQHistogramUtils::getSmoothedManually(const TH1 * histo, const std::vector<int>& binBorders, bool keepOverFlowUnderFlowSeparate) {

  /* manually average histogram according to bin borders provided.
  The number of bins does not change.
  Underflow/overflow can be considered in the averaging.
  Example:
   given a hist with 5 bins, calling this function with input
     binBorders = [1, 2, 3, 5]
   returns a histogram with 5 bins with the 3th and 4th bin exhibiting the
   same content that is the average of bin 3 and 4 of the original hist.
  */

  /* stop if input histogram or bin border array is invalid */
  if (!histo || getDimension(histo) != 1)
    return 0;

  if (binBorders.size() == 0) {
    WARN("Not possible to return smoothed histogram with name '%s' because" \
    " no bin borders provided.", histo->GetName());
    return 0;
  }

  std::vector<int> correctedBinBorders;
    if (binBorders.size() > 0) {
    if (binBorders[0] == 0) { // binBorders cannot start with underflow bin (0th bin)
      correctedBinBorders = std::vector<int>(binBorders.begin() + 1, binBorders.end());
    } else {
      correctedBinBorders = binBorders;
    }
    if (correctedBinBorders[correctedBinBorders.size()-1] <= histo->GetNbinsX() ) {
      if (!keepOverFlowUnderFlowSeparate) {
        correctedBinBorders.push_back( histo->GetNbinsX() + 2 ); // overflow
      } else {
        correctedBinBorders.push_back( histo->GetNbinsX() + 1 ); // overflow
      }
    }
    if (keepOverFlowUnderFlowSeparate) {
      if (correctedBinBorders[0] != 1) {
        correctedBinBorders.insert(correctedBinBorders.begin(), 1);
      }
      if (correctedBinBorders[correctedBinBorders.size()-1] != histo->GetNbinsX() + 2) {
        correctedBinBorders.push_back(histo->GetNbinsX() + 2);
      }
      if (correctedBinBorders[correctedBinBorders.size()-2] != histo->GetNbinsX() + 1) {
        int tmpBin = correctedBinBorders[correctedBinBorders.size() - 1];
        correctedBinBorders.pop_back();
        correctedBinBorders.push_back(histo->GetNbinsX() + 1);        correctedBinBorders.push_back(tmpBin);
      }
    } else {
      if (correctedBinBorders[correctedBinBorders.size()-1] != histo->GetNbinsX() + 2) {
        correctedBinBorders.push_back( histo->GetNbinsX() + 2 ); // overflow
      }
    }
  }

  TH1 * newHisto;
  if (histo->InheritsFrom(TH1F::Class()))
    newHisto = (TH1F*)histo->Clone();
  else if (histo->InheritsFrom(TH1D::Class()))
    newHisto = (TH1D*)histo->Clone();
  else return nullptr;



  /* create the smoothed histogram */
  if(newHisto){
    /* set title of x axis */
    TString label = TQStringUtils::getWithoutUnit(histo->GetXaxis()->GetTitle());
    label.Prepend("Smoothed ");
    newHisto->GetXaxis()->SetTitle(label.Data());

    /* make the histogram memory resident */
    newHisto->SetDirectory(histo->GetDirectory());

    std::vector<double> binContents;
    std::vector<double> binErrors;
    /* set the histograms bin content and error */
    for (size_t i = 0; i < correctedBinBorders.size(); i++) {

      int lowerBin = 0;
      int upperBin = histo->GetNbinsX() + 1;

      if (i == 0) {
        lowerBin = 0;
        upperBin = correctedBinBorders[0] - 1; // merge into visible range
      } else {
        lowerBin = correctedBinBorders[i - 1];
        upperBin = correctedBinBorders[i] - 1;
      }

      double binError = 0.;
      for (int i=0; i < upperBin - lowerBin + 1; i++) {
        int nAveragedBins = upperBin - lowerBin + 1;
        binContents.push_back(histo->IntegralAndError(lowerBin, upperBin, binError) / nAveragedBins);
        binErrors.push_back(binError / nAveragedBins);
      }
    }

    for (size_t i = 0; i < binContents.size(); i++) {
      newHisto->SetBinContent(i, binContents[i]);
      newHisto->SetBinError(i, binErrors[i]);
    }
    newHisto->SetEntries(histo->GetEntries());
  }

  /* return smoothed histogram */
  return newHisto;
}

//__________________________________________________________________________________|___________

TH1 * TQHistogramUtils::getSmoothedVariation(const TH1 * h_nom, TH1 * h_var, const std::vector<int>& binBorders, bool keepOverFlowUnderFlowSeparate) {
  /* Returns histogram that is varied from nominal with the possibility to smooth the
  variation by deriving the relative variations in merged histogram bins as
  specified by binBorders.
  */

  if (binBorders.empty()) {
    DEBUG("No bin borders specified, returning varied histogram!");
    return h_var;
  }

  TH1* h_nom_smoothed = TQHistogramUtils::getSmoothedManually(h_nom, binBorders, keepOverFlowUnderFlowSeparate);
  TH1* h_var_smoothed = TQHistogramUtils::getSmoothedManually(h_var, binBorders, keepOverFlowUnderFlowSeparate);

  if (h_var_smoothed) {
    h_var_smoothed->Divide(h_nom_smoothed); // relative variation...
    h_var_smoothed->Multiply(h_nom); // ...applied to nominal yields
    h_var = TQHistogramUtils::copyHistogram(h_var_smoothed);
  } else{
    DEBUG("Couldn't return smoothed variation!");
  }

  return h_var;

}

//__________________________________________________________________________________|___________

bool TQHistogramUtils::rebin(TH1* histo, int rebinX, int rebinY, int rebinZ, bool doRemap){
  // rebin and/or remap a histogram to given number of bins in X, Y and Z direction
  if(!histo) return false;  
  int tmp = gErrorIgnoreLevel;
  gErrorIgnoreLevel = 5000;
  // rebin the histogram
  bool ok = true;
  int dim = TQHistogramUtils::getDimension(histo);
  if (dim == 1 && rebinX > 0 && rebinY == 0 && rebinZ == 0) {
    histo->Rebin(rebinX);
    if(doRemap) remap(histo->GetXaxis(),0,1);
  } else if (dim == 2 && (rebinX > 0 || rebinY > 0) && rebinZ == 0) {
    if (rebinX > 0){
      ((TH2*)histo)->RebinX(rebinX);
      if(doRemap) remap(histo->GetXaxis(),0,1);
    }
    if (rebinY > 0) {
      ((TH2*)histo)->RebinY(rebinY);
      if(doRemap) remap(histo->GetYaxis(),0,1);
    }
  } else if (dim == 3 && (rebinX > 0 || rebinY > 0 || rebinZ > 0)) {
    if (rebinX > 0){
      ((TH3*)histo)->Rebin3D(rebinX, 1, 1, "");
      if(doRemap) remap(histo->GetXaxis(),0,1);
    }
    if (rebinY > 0){
      ((TH3*)histo)->Rebin3D(1, rebinY, 1, "");
      if(doRemap) remap(histo->GetYaxis(),0,1);
    }
    if (rebinZ > 0){
      ((TH3*)histo)->Rebin3D(1, 1, rebinZ, "");
      if(doRemap) remap(histo->GetZaxis(),0,1);
    }
  } else {
    ok = false;
  }
  // restore error ignore level
  gErrorIgnoreLevel = tmp;
  return ok;
}

//__________________________________________________________________________________|___________

void TQHistogramUtils::remap(TAxis* ax,double min, double max) {
  // remap the axis of a histogram to a given range (without actually changing the binning)
  if(!ax) return;
  TString label = TQStringUtils::getWithoutUnit(ax->GetTitle());
  label.Prepend("Remapped ");
  ax->SetTitle(label.Data());
  ax->Set(ax->GetNbins(),min,max);
}

//__________________________________________________________________________________|___________

void TQHistogramUtils::remapAndRelabel(TAxis* ax) {
  // remap the axis of a histogram to a given range (without actually changing the binning)
  TString label = TQStringUtils::getWithoutUnit(ax->GetTitle());
  TString unit = TQStringUtils::getUnit(ax->GetTitle());
  std::vector<double> boundaries;
  for(int i=0; i<=ax->GetNbins(); ++i){
    boundaries.push_back(ax->GetBinLowEdge(i));
  }
  ax->Set(ax->GetNbins(),0,1);
  for(int i=0; i<ax->GetNbins(); ++i){
    TString binlabel = TString::Format("%g %s < %s < %g %s",boundaries[i],unit.Data(),label.Data(),boundaries[i+1],unit.Data());
    ax->SetBinLabel(i+1,binlabel);
  }
}

//__________________________________________________________________________________|___________

void TQHistogramUtils::print(THStack* s, TString/*options*/){
  // print the contents of a histogram stack to the console
  TQIterator itr(s->GetHists());
  while(itr.hasNext()){
    TH1* hist = dynamic_cast<TH1*>(itr.readNext());
    if(!hist) continue;
    std::cout<<TQStringUtils::fixedWidth(hist->GetName(),20) << TQStringUtils::fixedWidth(hist->GetTitle(),20) << TQHistogramUtils::getDetailsAsString(hist,4) << std::endl;
  }
}

//__________________________________________________________________________________|___________

double TQHistogramUtils::getMax(const TCollection* c, bool includeUnderflowOverflow, double maxMax){
  // get the absolute maximum of a collection of histograms
  TQIterator itr(c);
  double max = -std::numeric_limits<double>::infinity();
  while(itr.hasNext()){
    TH1* hist = dynamic_cast<TH1*>(itr.readNext());
    if(!hist) continue;
    max = std::max(TQHistogramUtils::getMax(hist,false,includeUnderflowOverflow, maxMax) , max);
  }
  return max;
}

//__________________________________________________________________________________|___________

double TQHistogramUtils::getMin(const TCollection* c, bool includeUnderflowOverflow, double minMin){
  // get the absolute minimum of a collection of histograms
  TQIterator itr(c);
  double min = std::numeric_limits<double>::infinity();
  while(itr.hasNext()){
    TH1* hist = dynamic_cast<TH1*>(itr.readNext());
    if(!hist) continue;
    min = std::min(TQHistogramUtils::getMin(hist,false,includeUnderflowOverflow, minMin) , min);
  }
  return min;
}

//__________________________________________________________________________________|___________

double TQHistogramUtils::evaluateGraph(const TGraph* g, double x, int mode){
  // interpolate a graph to a specific point
  // mode encodes the interpolation method:
  //   0: linear
  //   1: exponential (linear for logscale)
  if(!g) return std::numeric_limits<double>::quiet_NaN();
  Int_t fNpoints = g->GetN();
  double* fX = g->GetX();
  double* fY = g->GetY();  
  Int_t low  = -1;
  Int_t up  = -1;
  // if (TestBit(TGraph::kIsSortedX)){
  if(true){
    low = TMath::BinarySearch(fNpoints, fX, x);
    if (low == -1)  {
      // use first two points for doing an extrapolation
      low = 0;
    }
    if (fX[low] == x) return fY[low];
    if (low == fNpoints-1) low--; // for extrapolating
    up = low+1;
  } else {
    // case TGraph is not sorted
   
    // find neighbours simply looping  all points
    // and find also the 2 adjacent points: (low2 < low < x < up < up2 )
    // needed in case x is outside the graph ascissa interval
    Int_t low2 = -1;
    Int_t up2 = -1;
   
    for (Int_t i = 0; i < fNpoints; ++i) {
      if (fX[i] < x) {
	if (low == -1 || fX[i] > fX[low])  {
	  low2 = low;
	  low = i;
	} else if (low2 == -1) low2 = i;
      } else if (fX[i] > x) {
	if (up  == -1 || fX[i] < fX[up])  {
	  up2 = up;
	  up = i;
	} else if (up2 == -1) up2 = i;
      } else // case x == fX[i]
	return fY[i]; // no interpolation needed
    }
   
    // treat cases when x is outside graph min max abscissa
    if (up == -1)  {
      up  = low;
      low = low2;
    }
    if (low == -1) {
      low = up;
      up  = up2;
    }
  }
  if(mode == 0){
    return fY[up] + (x - fX[up]) * (fY[low] - fY[up]) / (fX[low] - fX[up]);
  } else if(mode==1){
    /**
    y1 = c * exp ( a x1 )
    y2 = c * exp ( a x2 )

    y1 / y2 = exp( ax1 - ax2 )

    ln(y1 / y2) = a (x1 - x2 )
    ( ln(y1) - ln(y2) ) / (x1 - x2 ) = a

    c = y1 / exp ( a x1 ) 
    */
    const double a = ( log(fY[low]) - log(fY[up]) ) / (fX[low] - fX[up] );
    const double c = fY[low] / exp( a * fX[low] );
    return c * exp ( a * x );
  } else {
    throw std::runtime_error("unknown interpolation method!");
  }
}

//__________________________________________________________________________________|___________

double TQHistogramUtils::findIntersection(const TGraph* a, const TGraph* b, int mode, double left, double right, double epsilon){
  // find the point where two graphs intersect
  if(!a || !b)  return std::numeric_limits<double>::quiet_NaN();
  if(!TQUtils::isNum(left)) left = a->GetX()[0];
  if(!TQUtils::isNum(right)) right = a->GetX()[a->GetN()-1];  
  DEBUGfunc("a=%s, b=%s, mode=%d",a->GetName(),b->GetName(),mode);
  while(true){
    bool larger_left = TQHistogramUtils::evaluateGraph(a,left,mode) > TQHistogramUtils::evaluateGraph(b,left,mode);
    bool larger_right = TQHistogramUtils::evaluateGraph(a,right,mode) > TQHistogramUtils::evaluateGraph(b,right,mode);
    DEBUGfunc("left: x=%g, a=%g, b=%g; right: x=%g, a=%g, b=%g",left,TQHistogramUtils::evaluateGraph(a,left,mode),TQHistogramUtils::evaluateGraph(b,left,mode),right,TQHistogramUtils::evaluateGraph(a,right,mode),TQHistogramUtils::evaluateGraph(b,right,mode));
    if(larger_left == larger_right) return std::numeric_limits<double>::quiet_NaN();
    double mid = 0.5*(left+right);
    bool larger_mid = TQHistogramUtils::evaluateGraph(a,mid,mode) > TQHistogramUtils::evaluateGraph(b,mid,mode);
    if(larger_mid == larger_left){
      left = mid;
    } else {
      right = mid;
    }
    if(fabs(TQHistogramUtils::evaluateGraph(a,mid,mode)-TQHistogramUtils::evaluateGraph(b,mid,mode)) < epsilon) return mid;
  }
  return std::numeric_limits<double>::quiet_NaN();  
}

//__________________________________________________________________________________|___________

double TQHistogramUtils::getContourArea(const TGraph* g){
  // calculate area of the graph contour (polygon) in the x/y plane
  // will only yield an accurate result if the graph is a regular polygon
  // without any intersecting lines
  if(!g) return std::numeric_limits<double>::quiet_NaN();
  double x,y,xOld,yOld;
  g->GetPoint(0,xOld,yOld);
  int i=1;
  double_t area = 0;
  while(g->GetPoint(i,x,y) > 0){
    area += y*xOld -x*yOld;
    xOld = x;
    yOld = y;
    i++;
  }
  g->GetPoint(0,x,y);
  area += y*xOld -x*yOld;
  return 0.5*area;
}


//__________________________________________________________________________________|___________

double TQHistogramUtils::getContourJump(const TGraph* g){
  // calculate distance between first and last point of graph
  // in the x/y plane
  if(!g) return std::numeric_limits<double>::quiet_NaN();
  double x,y,xOld,yOld;
  g->GetPoint(0,xOld,yOld);
  g->GetPoint(g->GetN(),x,y);
  return sqrt(pow(x-xOld,2)+pow(y-yOld,2));
}

//__________________________________________________________________________________|___________

void TQHistogramUtils::interpolateGraph(TGraph* g, size_t increasePoints, const char* option){
  // interpolate a graph, increasing the number of points by the given factor
  if(!g) return;
  g->Sort();
  const size_t n = g->GetN();
  std::map<double,double> morePoints;
  std::map<double,double> moreErrorsHigh;
  std::map<double,double> moreErrorsLow;    
  for(size_t i=0; i<n-1; ++i){
    double minx,maxx,miny,maxy;
    g->GetPoint(  i,minx,miny);
    g->GetPoint(i+1,maxx,maxy);
    if(minx >= maxx) continue;

    double stepsize = fabs(maxx-minx) / (increasePoints);
    minx+=stepsize;
    maxx-=stepsize;

    for (double thisX = minx; thisX <= maxx; thisX += stepsize) {
      double thisY = g->Eval(thisX, NULL, option);
      if(TQUtils::isNum(thisY)){
        morePoints[thisX]=thisY;
      }
    }
  }
  size_t i=n;
  for(auto it:morePoints){
    g->SetPoint(i,it.first,it.second);
    i++;
  }
  g->Sort();
}

//__________________________________________________________________________________|___________

double TQHistogramUtils::getMinBinWidth(TAxis*a){
  // calculate width of smallest bin in axis coordinates
  if(!a) return std::numeric_limits<double>::quiet_NaN();
  double min = std::numeric_limits<double>::infinity();
  for(int i=1; i<=a->GetNbins(); i++){
    min = std::min(a->GetBinWidth(i),min);
  }
  return min;
}


//__________________________________________________________________________________|___________

double TQHistogramUtils::getMinBinArea(TH2* hist){
  // calculate area of smallest bin in axis coordinates
  if(!hist) return std::numeric_limits<double>::quiet_NaN();
  return TQHistogramUtils::getMinBinWidth(hist->GetXaxis())*TQHistogramUtils::getMinBinWidth(hist->GetYaxis());
}

//__________________________________________________________________________________|___________


int TQHistogramUtils::addPCA(TPrincipal* orig, TPrincipal* add){
  // add two objects of type TPrincipal
  // will add the contents of the second argument to the first one
  // the second one will stay unchanged
  if(!orig || !add) return -1;

  if(orig->GetSigmas()->GetNrows() != orig->GetSigmas()->GetNrows()) return -1;

  int nRow = 0;
  while(true){
    const double * row = add->GetRow(nRow);
    if(!row) break;
    orig->AddRow(row);
    nRow++;
  }
  return nRow;
}

//__________________________________________________________________________________|___________

bool TQHistogramUtils::addGraph(TGraph * orig, const TGraph * add){
  // add two objects of type TGraph
  if(!orig || !add) return false;

  const size_t n = orig->GetN();
  const size_t nnew = add->GetN();

	// the standard expansion of TGraph is pretty inefficient, so we manually put it to the right size
	orig->Expand(n+nnew);

  for(size_t i=0; i<nnew; ++i){
    double x,y;
    add->GetPoint(i,x,y);
    orig->SetPoint(n+i,x,y);
  }
  return true;
}

//__________________________________________________________________________________|___________

bool TQHistogramUtils::addGraph(TGraph2D * orig, const TGraph2D * add){
  // add two objects of type TGraph2D
  if(!orig || !add) return false;

  const size_t n = orig->GetN();
  const size_t nnew = add->GetN();

	// TGraph2D automatically expands in a smart way, so nothing to do here except adding the points

  const double* x = add->GetX();
  const double* y = add->GetY();
  const double* z = add->GetZ();

  for(size_t i=0; i<nnew; ++i){
    orig->SetPoint(n+i,x[i],y[i],z[i]);
  }
  return true;
}

//__________________________________________________________________________________|___________

bool TQHistogramUtils::addGraph(TNamed * orig, const TNamed * add){
  // add two graphs
  if(!orig || !add) return false;
  if(orig->InheritsFrom(TGraph::Class()) && add->InheritsFrom(TGraph::Class())){
    return addGraph(static_cast<TGraph*>(orig),static_cast<const TGraph*>(add));
  }
  if(orig->InheritsFrom(TGraph2D::Class()) && add->InheritsFrom(TGraph2D::Class())){
    return addGraph(static_cast<TGraph2D*>(orig),static_cast<const TGraph2D*>(add));
  }
  ERRORfunc("unable to add graphs of types '%s' and '%s'",orig->ClassName(),add->ClassName());
  return false;
}

//__________________________________________________________________________________|___________

TString TQHistogramUtils::getDetailsAsString(const TNamed * obj, int option) {
  // retrieve an info-string for some TPrincipal object
  if(obj->InheritsFrom(TH1::Class())) return TQHistogramUtils::getDetailsAsString((TH1*)obj,option);
  if(obj->InheritsFrom(TGraph::Class())) return TQHistogramUtils::getDetailsAsString((TGraph*)obj,option);
  if(obj->InheritsFrom(TPrincipal::Class())) return TQHistogramUtils::getDetailsAsString((TPrincipal*)obj,option);
  if(obj->InheritsFrom(TAxis::Class())) return TQHistogramUtils::getDetailsAsString((TAxis*)obj,option);
  if(obj->InheritsFrom(TGraph2D::Class())) return TQHistogramUtils::getDetailsAsString((TGraph2D*)obj,option);
  return TString::Format("%s: %s (unknown)",obj->GetName(),obj->GetTitle());
}

//__________________________________________________________________________________|___________

TString TQHistogramUtils::getDetailsAsString(const TPrincipal * p, int/*option*/) {
  // retrieve an info-string for some TPrincipal object
  if(!p) return "NULL";
  TQTaggable tags(p->GetTitle());
  std::vector<TString> varnames;
  TString retval = TString::Format("%d entries",p->GetUserData()->GetNrows());
  if(tags.getTag("varname",varnames) > 0){
    retval += " in " + TQStringUtils::concat(varnames,",");
  } else {
    retval += TString::Format("(%s)",p->GetTitle());
  }
  return retval;
}

//__________________________________________________________________________________|___________

int TQHistogramUtils::dumpData(TPrincipal * p, int cutoff){
  // print the entire data contents of a TPrincipal object to the console
  if(!p) return -1;

  TQTaggable tags(p->GetTitle());
  size_t nVars = p->GetSigmas()->GetNrows();
  int width = 20;
  int numWidth = std::min((int)ceil(log10(cutoff))+1,10);
  std::vector<TString> varnames;
  if(tags.getTag("varname",varnames) == (int)nVars){
    for(size_t i=0; i<varnames.size(); i++){
      std::cout << TQStringUtils::makeBoldWhite(TQStringUtils::fixedWidth(varnames[i],width,"r"));
    }
  } else {
    for(size_t i=0; i<nVars; i++){
      std::cout << TQStringUtils::makeBoldWhite(TQStringUtils::fixedWidth(TString::Format("var%u",(unsigned int)i),width,"r"));
    }
  }
  std::cout << std::endl;
  int nRows = 0;
  while(nRows < cutoff){
    const double * row = p->GetRow(nRows);
    if(!row) break;
    std::cout << TQStringUtils::fixedWidth(TString::Format("%d",nRows),numWidth,"r");
    for(size_t i=0; i<nVars; i++){
      std::cout << TQStringUtils::fixedWidth(TString::Format("%f",row[i]),width,"r");
    }
    nRows++;
    std::cout << std::endl;
  }
  if(nRows >= cutoff){
    std::cout << " ... truncated after " << nRows << " entries ..." << std::endl;
  }
  return nRows;
}

//__________________________________________________________________________________|___________

TH1* TQHistogramUtils::getSoverSqrtBScan(TH1* sig, TH1* bkg, bool fromleft, double cutoff, bool verbose) {
  // retrieve an integrated s/sqrt(b) histogram, scanning from left or right
  return TQHistogramUtils::getFOMScan(TQHistogramUtils::kSoSqB,sig,bkg,fromleft,cutoff,verbose);
}

//__________________________________________________________________________________|___________

double TQHistogramUtils::getFOM(TQHistogramUtils::FOM fom, double b, double berr, double s, double/*serr*/){
  // calculate a figure of merit from the source numbers
  switch(fom){
  case kSoSqB:
    return s/sqrt(b);
  case kSoSqBpdB:
    return s/sqrt(b + berr*berr);
  case kPoisson:
    return TQHistogramUtils::getPoisson(b,s);
  case kPoissonWErr:
    return TQHistogramUtils::getPoissonWithError(b,berr,s);
  case kSoB:
    return s/b;
  case kSoSqSpB:
    return s/sqrt(s+b);
  default :
    return std::numeric_limits<double>::quiet_NaN();
  }
  return std::numeric_limits<double>::quiet_NaN();
}

//__________________________________________________________________________________|___________

TQHistogramUtils::FOM TQHistogramUtils::readFOM(TString fom){
  // extract a figure of merit from a string
  fom.ToLower();
  fom.ReplaceAll(" ","");
  if(TQStringUtils::matches(fom,"s/sqrt(s+b)")){
    return TQHistogramUtils::kSoSqSpB;
  }
  if(TQStringUtils::matches(fom,"s/b")){
    return TQHistogramUtils::kSoB;
  }
  if(TQStringUtils::matches(fom,"poisson")){
    return TQHistogramUtils::kPoisson;
  }
  if(TQStringUtils::matches(fom,"poissonwerr")){
    return TQHistogramUtils::kPoissonWErr;
  }
  if(TQStringUtils::matches(fom,"s/sqrt(b)")){
    return TQHistogramUtils::kSoSqB;
  }
  if(TQStringUtils::matches(fom,"s/sqrt(b+db2)")){
    return TQHistogramUtils::kSoSqBpdB;
  }
  return TQHistogramUtils::kUndefined;
}

//__________________________________________________________________________________|___________

TString TQHistogramUtils::getFOMTitleROOT(TQHistogramUtils::FOM fom){
  // return a title string identifying a figure of merit
  switch(fom){
  case TQHistogramUtils::kSoSqB: return "s/#sqrt{b}";
  case TQHistogramUtils::kSoSqBpdB: return "s/#sqrt{b+db^{2}}";
  case TQHistogramUtils::kPoisson: return "#sqrt{2((s+b)ln(1+s/b)-s)}";
  //case TQHistogramUtils::kPoissonWErr: return "#sqrt{2{(s+b)ln[#frac{(s+b)(b+#sigma^{2})}{b^{2}+(s+b)#sigma^{2}}] - #frac{b^{2}}{#sigma^{2}}ln[1+#frac{#sigma^{2}s}{b(b+#sigma^{2})}]}}";
  case TQHistogramUtils::kPoissonWErr: return "Significance";
  case TQHistogramUtils::kSoB: return "s/b";
  case TQHistogramUtils::kSoSqSpB: return "s/#sqrt{s+b}";
  default: return "<unknown>";
  }
  return "<unknown>";
}

//__________________________________________________________________________________|___________

TString TQHistogramUtils::getFOMTitleLaTeX(TQHistogramUtils::FOM fom){
  // return a title string identifying a figure of merit
  switch(fom){
  case TQHistogramUtils::kSoSqB: return "$s/\\sqrt{b}$";
  case TQHistogramUtils::kSoSqBpdB: return "$s/\\sqrt{b+db^{2}}$";
  case TQHistogramUtils::kPoisson: return "$\\sqrt{2((s+b)\\ln(1+s/b)-s)}$";
  case TQHistogramUtils::kPoissonWErr: return "$\\sqrt{2{(s+b)\\ln[\\frac{(s+b)(b+\\sigma^{2})}{b^{2}+(s+b)\\sigma^{2}}] - \\frac{b^{2}}{\\sigma^{2}}\\ln[1+\\frac{\\sigma^{2}s}{b(b+\\sigma^{2})}]}}$";
  case TQHistogramUtils::kSoB: return "$s/b$";
  case TQHistogramUtils::kSoSqSpB: return "$s/\\sqrt{s+b}$";
  default: return "<unknown>";
  }
  return "<unknown>";
}

//__________________________________________________________________________________|___________

TH1* TQHistogramUtils::getSoverSqrtB(TH1* sig, TH1* bkg) {
  // retrieve an s/sqrt(b) histogram (bin-by-bin mode)
  return TQHistogramUtils::getFOMHistogram(TQHistogramUtils::kSoSqB,sig,bkg);
}

//__________________________________________________________________________________|___________

TH1* TQHistogramUtils::getFOMHistogram(TQHistogramUtils::FOM fom, TH1* sig, TH1* bkg, double cutoff, const std::vector<TH1*>& bkgSystHistos) {
  // retrieve a significance histogram (bin-by-bin mode)
  if(!checkConsistency(sig,bkg,true)) return NULL;

  //sum of variances if one or more systematics histograms are provided (equivalent to a nullptr if bkgSystHistos is an empty vector!)
  std::unique_ptr<TH1> sumOfSqSys ( TQHistogramUtils::sumOfSquares(bkgSystHistos) );

  /* significance plot */
  TH1* retval = (TH1*)copyHistogram(sig,"NODIR");
  retval->Reset();
  retval->GetYaxis()->SetTitle(TQHistogramUtils::getFOMTitleROOT(fom));
  double bkgErr=0;
  for(int i=0; i<=sig->GetNbinsX(); i++){
    if(bkg->GetBinContent(i) > cutoff){
      //calculate background error adding potential (simplified) systematic uncertainties in quadrature to MC stats.
      //sumOfSqSys has systematic uncertainties as bin contents, not "Errors"
      bkgErr = sumOfSqSys ? std::sqrt( pow(bkg->GetBinError(i),2) + sumOfSqSys->GetBinContent(i) ) : bkg->GetBinError(i);
      retval->SetBinContent(i,TQHistogramUtils::getFOM(fom,bkg->GetBinContent(i),bkgErr,sig->GetBinContent(i),sig->GetBinError(i)));
    } else {
      retval->SetBinContent(i,0);
    }
    retval->SetBinError(i,0);
  }
  return retval;
}

//__________________________________________________________________________________|___________

TH1* TQHistogramUtils::getFOMScan(TQHistogramUtils::FOM fom, TH1* sig, TH1* bkg, bool fromleft, double cutoff, bool verbose, const std::vector<TH1*>& bkgSystHistos) {
  // retrieve an integrated FOM histogram, scanning from left or right
  if(!checkConsistency(sig,bkg,true)) return NULL;
  if(!(getDimension(sig) == 1)){
    ERRORfunc("cannot perform scan on multi-dimensional histograms!");
  }

  std::unique_ptr<TH1> hCdfBkgSyst;
  for (const TH1* hSys: bkgSystHistos) {
    if (!hSys) continue;
    if (!hCdfBkgSyst) { //the first histogram
      hCdfBkgSyst = std::unique_ptr<TH1>(hSys->GetCumulative(!fromleft)); //meaning of "fromleft" is opposite to "forward" in GetCumulative!
      if (!hCdfBkgSyst) continue;
      hCdfBkgSyst->Multiply(hCdfBkgSyst.get()); //since hCdfBkgSyst is created in this function we can optimize by using a function that modifies it in-place (instead of yet another histogram copy)
    } else {
      TH1* hTemp = hSys->GetCumulative(!fromleft); //meaning of "fromleft" is opposite to "forward" in GetCumulative!
      if (!hTemp) continue;
      hTemp->Multiply(hTemp);
      hCdfBkgSyst->Add(hTemp);
      delete hTemp;
    }
  }

  /* significance plot */
  TH1* retval = (TH1*)copyHistogram(sig,"NODIR");
  if (fromleft)
    retval->SetLineColor(2);
  else
    retval->SetLineColor(4);

  int lbound = 0;
  int rbound = sig->GetNbinsX()+1;

  for (int ib = 0; ib <= sig->GetNbinsX(); ++ib) {

    double cutval = 0;
    if (fromleft){
      lbound = ib;
      cutval = sig->GetBinLowEdge(ib);
    } else {
      rbound = ib;
      cutval = sig->GetBinLowEdge(ib) + sig->GetBinWidth(ib);
    }

    double serr = 0;
    double s = sig->IntegralAndError(lbound,rbound,serr);
    double berr = 0;
    double b = bkg->IntegralAndError(lbound,rbound,berr);
    if (hCdfBkgSyst) berr = std::sqrt( pow(berr,2) + hCdfBkgSyst->GetBinContent(ib) );
    double z = TQHistogramUtils::getFOM(fom,b,berr,s,serr);
    if (b<cutoff)
      z = 0;
    if(verbose) VERBOSEfunc("@%s=%g: s=%g, b=%g, z=%g",bkg->GetXaxis()->GetTitle(),cutval,s,b,z);

    retval->SetBinContent(ib, z);
  }
  retval->GetYaxis()->SetTitle(TQHistogramUtils::getFOMTitleROOT(fom));
  return retval;
}

//__________________________________________________________________________________|___________

double TQHistogramUtils::sumLineDistSquares(TH2* hist, double a, double b, bool useUnderflowOverflow){
  // calculate the sum of squared distances between some line and all histogram entries in a 2D histogram
  if(!hist) return 0;
  double sum = 0;
  for(size_t i=1 - useUnderflowOverflow; i<=(size_t)hist->GetNbinsX() + useUnderflowOverflow; i++){
    for(size_t j=1 - useUnderflowOverflow; j<=(size_t)hist->GetNbinsY() + useUnderflowOverflow; j++){
      sum += (hist->GetBinContent(i,j))*calculateBinLineDistSquare(hist,a,b,i,j);
    }
  }
  return sum;
}

//__________________________________________________________________________________|___________

double TQHistogramUtils::calculateBinLineDistSquare(TH2* hist, double a, double b, int i, int j){
  // calculate the squared distance between some line and a given bin in a 2D histogram
  // line is defined by slope b and y-axis offset a
  double xp = hist->GetXaxis()->GetBinCenter(i);
  double yp = hist->GetYaxis()->GetBinCenter(j);
  if(b == 0) return pow(yp,2);
  if(!TQUtils::isNum(b)) return pow(xp,2);
  // these are the legs of the right triangle
  // between the line and the two perpendiculars of the point
  // with respect to the x- and y-axes
  double yf = a + b*xp;
  double xf = (yp - a)/b;
  if((yf == yp) && (xf == xp)) return 0;
  double firstLeg2 = pow(xp-xf,2);
  double secondLeg2 = pow(yp-yf,2);
  double dist2 = firstLeg2 * secondLeg2 / (firstLeg2 + secondLeg2);
  // std::cout << xp << " " << xf << " " << yp << " " << yf << " " << firstLeg2 << " " << secondLeg2 << " " << dist2 << " " << weight << std::endl ;
  return dist2;
}

//__________________________________________________________________________________|___________

TH1* TQHistogramUtils::getLineDistSquares(TH2* hist, double a, double b, bool useUnderflowOverflow){
  // generate distribution of squared distances between some line and all histogram entries in a 2D histogram
  // line is defined by slope b and y-axis offset a
  if(!hist) return 0;
  double maxDist2 = pow(TQHistogramUtils::getAxisXmax(hist) - TQHistogramUtils::getAxisXmin(hist),2) + pow(TQHistogramUtils::getAxisYmax(hist) - TQHistogramUtils::getAxisYmin(hist),2);
  TH1F* distances = new TH1F(hist->GetName(),hist->GetTitle(),sqrt(hist->GetNbinsX()*hist->GetNbinsY()),0,maxDist2);
  distances->SetDirectory(NULL);
  for(size_t i=1 - useUnderflowOverflow; i<=(size_t)hist->GetNbinsX() + useUnderflowOverflow; i++){
    for(size_t j=1 - useUnderflowOverflow; j<=(size_t)hist->GetNbinsY() + useUnderflowOverflow; j++){
      distances->Fill(calculateBinLineDistSquare(hist,a,b,i,j),hist->GetBinContent(i,j));
    }
  }
  return distances;
}

//__________________________________________________________________________________|___________

TH1* TQHistogramUtils::rotationProfile(TH2* hist, double xUnit, double yUnit, int nStep, double xOrig, double yOrig){
  // produces the 'rotation profile' of a histogram in the following sense
  // given a line with angle alpha, what is the sum of squared distances of all histogram entries
  // with respect to the given line?
  // the returned histogram holds the dependency of the inverse of this sum as a function of the angle alpha
  // since the definition of the angle depends on the relative scaling of the two axis,
  // units must be given for both dimensions.
  if(!hist) return NULL;
  if(xUnit <= 0) xUnit = TQHistogramUtils::getAxisXmax(hist) - xOrig;
  if(yUnit <= 0) yUnit = TQHistogramUtils::getAxisYmax(hist) - yOrig;

  double steprad = 0.5*TMath::Pi()/nStep;
  double stepdeg = 90./nStep;
  TH1F* profile = new TH1F(hist->GetName(), hist->GetTitle(), nStep+1, -stepdeg*0.5 , 0.5*stepdeg+90.);
  profile->SetDirectory(NULL);
  profile->GetXaxis()->SetTitle("#alpha [deg]");
  profile->GetYaxis()->SetTitle("\\left(\\sum_{N} n\\cdot d^{2}\\right)^{-1}");
  for(size_t i=0; i<(size_t)nStep+1; i++){
    double angle = i * steprad;
    double slope = (sin(angle)*yUnit) / (cos(angle)*xUnit);
    double yOffset = yOrig - slope*xOrig;
    double value = 1./TQHistogramUtils::sumLineDistSquares(hist,yOffset,slope);
    // std::cout << "considering slope " << slope << " with angle " << angle << " : " << value << std::endl;
    profile->SetBinContent(i+1,value);
  }
  return profile;
}

//__________________________________________________________________________________|___________

TH2* TQHistogramUtils::rotationYtranslationProfile(TH2* hist, double xUnit, double yUnit, int nStepAngle, int nStepOffset, double xOrig, double y0){
  // produces the 'rotation-translation profile' of a histogram in the following sense
  // given a line with angle alpha and a vertical offset y, what is the sum of squared distances of all histogram entries
  // with respect to the given line?
  // the returned histogram holds the dependency of the inverse of this sum as a function of the angle alpha and the offset y
  // since the definition of the angle depends on the relative scaling of the two axis,
  // units must be given for both dimensions.
  if(!hist) return NULL;
  if(xUnit <= 0) xUnit = TQHistogramUtils::getAxisXmax(hist) - xOrig;
  if(yUnit <= 0) yUnit = TQHistogramUtils::getAxisYmax(hist);
  if(nStepOffset < 1) nStepOffset = hist->GetYaxis()->GetLast();

  double steprad = 0.5*TMath::Pi()/nStepAngle;
  double stepdeg = 90./nStepAngle;
  if(!TQUtils::isNum(y0)) y0 = TQHistogramUtils::getAxisYmin(hist);
  double yStep = (TQHistogramUtils::getAxisYmax(hist) - y0)/nStepOffset;
  TH2F* profile = new TH2F(hist->GetName(), hist->GetTitle(), nStepAngle+1, -stepdeg*0.5 , 0.5*stepdeg+90., nStepOffset+1, y0-0.5*yStep, y0 + (0.5+nStepOffset)*yStep);
  profile->SetDirectory(NULL);
  profile->GetXaxis()->SetTitle("#alpha [deg]");
  profile->GetYaxis()->SetTitle(hist->GetYaxis()->GetTitle());
  profile->GetZaxis()->SetTitle("\\left(\\sum_{N} n\\cdot d^{2}\\right)^{-1}");
  for(size_t i=0; i<(size_t)nStepAngle+1; i++){
    double angle = i * steprad;
    double slope = (sin(angle)*yUnit) / (cos(angle)*xUnit);
    for(size_t j=0; j<(size_t)nStepOffset+1; j++){
      double yOffset = y0 + j*yStep;
      double value = 1./TQHistogramUtils::sumLineDistSquares(hist,yOffset,slope);
      profile->SetBinContent(i+1,j+1,value);
    }
  }
  return profile;
}

//__________________________________________________________________________________|___________

TH2* TQHistogramUtils::rotationXtranslationProfile(TH2* hist, double xUnit, double yUnit, int nStepAngle, int nStepOffset, double yOrig, double x0){
  // produces the 'rotation-translation profile' of a histogram in the following sense
  // given a line with angle alpha and a horizontal offset x, what is the sum of squared distances of all histogram entries
  // with respect to the given line?
  // the returned histogram holds the dependency of the inverse of this sum as a function of the angle alpha and the offset x
  // since the definition of the angle depends on the relative scaling of the two axis,
  // units must be given for both dimensions.
  if(!hist) return NULL;
  if(xUnit <= 0) xUnit = TQHistogramUtils::getAxisXmax(hist);
  if(yUnit <= 0) yUnit = TQHistogramUtils::getAxisYmax(hist) - yOrig;;
  if(nStepOffset < 1) nStepOffset = hist->GetXaxis()->GetLast();

  double steprad = 0.5*TMath::Pi()/nStepAngle;
  double stepdeg = 90./nStepAngle;
  double y0 = TQHistogramUtils::getAxisXmin(hist);
  if(!TQUtils::isNum(x0)) x0 = TQHistogramUtils::getAxisXmin(hist);
  double xStep = (TQHistogramUtils::getAxisXmax(hist) - x0)/nStepOffset;
  TH2F* profile = new TH2F(hist->GetName(), hist->GetTitle(), nStepAngle+1, -stepdeg*0.5 , 0.5*stepdeg+90., nStepOffset+1, x0-0.5*xStep, x0 + (0.5+nStepOffset)*xStep);
  profile->SetDirectory(NULL);
  profile->GetXaxis()->SetTitle("#alpha [deg]");
  profile->GetYaxis()->SetTitle(hist->GetXaxis()->GetTitle());
  profile->GetZaxis()->SetTitle("\\left(\\sum_{N} n\\cdot d^{2}\\right)^{-1}");
  for(size_t i=0; i<(size_t)nStepAngle+1; i++){
    double angle = i * steprad;
    double slope = (angle == 0.5*TMath::Pi() ? std::numeric_limits<double>::infinity() : (sin(angle)*yUnit) / (cos(angle)*xUnit));
    for(size_t j=0; j<(size_t)nStepOffset+1; j++){
      double xOffset = x0 + j*xStep;
      double yOffset = (angle == 0.5*TMath::Pi() ? std::numeric_limits<double>::quiet_NaN() : y0 - xOffset*slope);
      double value = 1./TQHistogramUtils::sumLineDistSquares(hist,yOffset,slope);
      // std::cout << "angle= " << i*stepdeg << ", xOffset = " << xOffset << ", yOffset=" << yOffset << ", slope=" << slope << " : " << value << std::endl;
      profile->SetBinContent(i+1,j+1,value);
    }
  }
  return profile;
}

//__________________________________________________________________________________|___________

TLine* TQHistogramUtils::makeBisectorLine(TH1* hist, double angle, double xUnit, double yUnit, double xOrig, double yOrig){
  // create a TLine with a given angle (in xUnit and yUnit coordinates, axis coordinates if not given)
  // measured from origin at xOrig and yOrig
  // will be cropped to the size fo the histogram
  if(!hist) return NULL;
  if(xUnit <= 0) xUnit = TQHistogramUtils::getAxisXmax(hist);
  if(yUnit <= 0) yUnit = TQHistogramUtils::getAxisYmax(hist);
  double angleRad = angle / 180. * TMath::Pi();
  double slope = (sin(angleRad)*yUnit) / (cos(angleRad)*xUnit);
  double yOffset = yOrig - slope*xOrig;

  double xAxMin = TQHistogramUtils::getAxisXmin(hist);
  double yAxMin = TQHistogramUtils::getAxisYmin(hist);
  double xAxMax = TQHistogramUtils::getAxisXmax(hist);
  double yAxMax = TQHistogramUtils::getAxisYmax(hist);

  if(!TQUtils::isNum(slope)){
    return new TLine(xOrig, yAxMin, xOrig, yAxMax);
  } else if(slope > 0){
    double xMin = std::max(xAxMin,(yAxMin-yOffset)/slope);
    double yMin = std::max(yAxMin,slope*xAxMin+yOffset);
    double xMax = std::min(xAxMax,(yAxMax-yOffset)/slope);
    double yMax = std::min(yAxMax,slope*xAxMax+yOffset);

    // std::cout << slope << " " << xOrig << " " << yOrig << " " << yOffset << std::endl;
    // std::cout << xAxMin << " " << yAxMin << " " << xAxMax << " " << yAxMax << std::endl;
    // std::cout << xMin << " " << yMin << " " << xMax << " " << yMax << std::endl;

    TLine* l = new TLine(xMin, yMin, xMax, yMax);
    return l;
  } else if (slope < 0){
    double xMin = std::max(xAxMin,(yAxMax-yOffset)/slope);
    double yMin = std::max(yAxMin,slope*xAxMax+yOffset);
    double xMax = std::min(xAxMax,(yAxMin-yOffset)/slope);
    double yMax = std::min(yAxMax,slope*xAxMin+yOffset);

    // std::cout << slope << " " << xOrig << " " << yOrig << " " << yOffset << std::endl;
    // std::cout << xAxMin << " " << yAxMin << " " << xAxMax << " " << yAxMax << std::endl;
    // std::cout << xMin << " " << yMin << " " << xMax << " " << yMax << std::endl;

    TLine* l = new TLine(xMin, yMax, xMax, yMin);
    return l;
  } else {
    return new TLine(xAxMin, yOrig, xAxMax, yOrig);
  }
  return NULL;

}

//__________________________________________________________________________________|___________

bool TQHistogramUtils::cropLine(TH1* hist, TLine* l){
  // crop a line so that it does not exceed the drawing area of the histogram
  // this function will swap the line orientation such that x1<x2
  if(!hist) return false;
  if(!l) return false;
  double xAxMin = TQHistogramUtils::getAxisXmin(hist);
  double yAxMin = TQHistogramUtils::getAxisYmin(hist);
  double xAxMax = TQHistogramUtils::getAxisXmax(hist);
  double yAxMax = TQHistogramUtils::getAxisYmax(hist);

  double x1 = std::min(l->GetX1(),l->GetX2());
  double x2 = std::max(l->GetX1(),l->GetX2());
  double y1 = (l->GetX2() > l->GetX1()) ? l->GetY1() : l->GetY2();
  double y2 = (l->GetX2() > l->GetX1()) ? l->GetY2() : l->GetY1();

  double slope = (y2-y1)/(x2-x1);

  // std::cout << x1 << "/" << y1 << " -- " << x2 << "/" << y2 << " : slope=" << slope << std::endl;

  if(x2 < xAxMin) return false;
  if(x1 > xAxMax) return false;
  if(std::min(y1,y2) > yAxMax) return false;
  if(std::max(y1,y2) < yAxMin) return false;

  if(x2 > xAxMax){
    // std::cout << "x2 is too large" << std::endl;
    if(slope > 0){
      l->SetX2(std::min(xAxMax,x1 + (yAxMax - y1)/slope));
    } else if (slope < 0){
      l->SetX2(std::min(xAxMax,x1 - (y1 - yAxMin)/slope));
    } else {
      l->SetX2(xAxMax);
    }
  } else {
    l->SetX2(x2);
  }
  if(l->GetX2() < xAxMin) return false;
  if(x1 < xAxMin){
    // std::cout << "x1 is too small" << std::endl;
    if(slope > 0){
      l->SetX1(std::max(xAxMin,x2 - (y1 - yAxMin)/slope));
    } else if (slope < 0){
      l->SetX1(std::max(xAxMin,x2 + (yAxMin - y1)/slope));
    } else {
      l->SetX1(xAxMin);
    }
  } else {
    l->SetX1(x1);
  }
  if(l->GetX1() > xAxMax) return false;
  if(y2 > yAxMax){
    // std::cout << "y2 is too large" << std::endl;
    l->SetY2(std::min(yAxMax,y1 + slope*(l->GetX2() - x1)));
    l->SetX2(std::min(l->GetX2(),x1 + (l->GetY2() - y1)/slope));
  } else if(y2 < yAxMin){
    // std::cout << "y2 is too small" << std::endl;
    l->SetY2(std::max(yAxMin,y1 + slope*(l->GetX2() - x1)));
    l->SetX2(std::min(l->GetX2(),x1 + (l->GetY2() - y1)/slope));
  } else {
    l->SetY2(y2);
  }
  if(l->GetY2() > yAxMax || l->GetY2() < yAxMin) return false;
  if(y1 > yAxMax){
    // std::cout << "y1 is too large" << std::endl;
    l->SetY1(std::min(yAxMax,y2 - slope*(x2 - l->GetX1())));
    l->SetX1(std::max(l->GetX1(),x2 + fabs(y2 - l->GetY1())/slope));
  } else if(y1 < yAxMin){
    // std::cout << "y1 is too small" << std::endl;
    l->SetY1(std::max(yAxMin,y2 - slope*(x2 - l->GetX1())));
    l->SetX1(std::max(l->GetX1(),x2 + fabs(y2 - l->GetY1())/slope));
  } else {
    l->SetY1(y1);
  }
  if(l->GetY1() > yAxMax || l->GetY1() < yAxMin) return false;
  return true;
  // std::cout << l->GetX1() << "/" << l->GetY1() << " -- " << l->GetX2() << "/" << l->GetY2() << std::endl;
}

//__________________________________________________________________________________|___________

double TQHistogramUtils::clearBinsAboveX(TH1* hist, double xMax){
  // clear all histogram bins beyond xMax
  if(!hist) return 0;
  int border = hist->GetXaxis()->FindBin(xMax);
  double retval = 0;
  for(size_t i=border; i<(size_t)hist->GetNbinsX()+1; i++){
    retval += hist->GetBinContent(i);
    hist->SetBinError(i,0);
    hist->SetBinContent(i,0);
  }
  return retval;
}

//__________________________________________________________________________________|___________

double TQHistogramUtils::clearBinsBelowX(TH1* hist, double xMin){
  // clear all histogram bins below xMin
  if(!hist) return 0;
  size_t border = hist->GetXaxis()->FindBin(xMin);
  double retval = 0;
  for(size_t i=0; i<border-1; i++){
    retval += hist->GetBinContent(i);
    hist->SetBinError(i,0);
    hist->SetBinContent(i,0);
  }
  return retval;
}

//__________________________________________________________________________________|___________

double TQHistogramUtils::clearBinsAboveX(TH2* hist, double xMax){
  // clear all histogram bins beyond xMax (for 2D-histograms)
  if(!hist) return 0;
  size_t border = hist->GetXaxis()->FindBin(xMax);
  double retval = 0;
  for(size_t i=border; i<(size_t)hist->GetNbinsX()+1; i++){
    for(size_t j=0; j<(size_t)hist->GetNbinsY()+1; j++){
      retval += hist->GetBinContent(i,j);
      hist->SetBinError(i,j,0);
      hist->SetBinContent(i,j,0);
    }
  }
  return retval;
}

//__________________________________________________________________________________|___________

double TQHistogramUtils::clearBinsBelowX(TH2* hist, double xMin){
  // clear all histogram bins below xMin (for 2D-histograms)
  if(!hist) return 0;
  size_t border = hist->GetXaxis()->FindBin(xMin);
  double retval = 0;
  for(size_t i=0; i<border; i++){
    for(size_t j=0; j<(size_t)hist->GetNbinsY()+1; j++){
      retval += hist->GetBinContent(i,j);
      hist->SetBinError(i,j,0);
      hist->SetBinContent(i,j,0);
    }
  }
  return retval;
}

//__________________________________________________________________________________|___________

double TQHistogramUtils::clearBinsAboveY(TH2* hist, double yMax){
  // clear all histogram bins beyond yMax (for 2D-histograms)
  if(!hist) return 0;
  int border = hist->GetYaxis()->FindBin(yMax);
  double retval = 0;
  for(size_t i=0; i<(size_t)hist->GetNbinsX()+1; i++){
    for(size_t j=border; j<(size_t)hist->GetNbinsY()+1; j++){
      retval += hist->GetBinContent(i,j);
      hist->SetBinError(i,j,0);
      hist->SetBinContent(i,j,0);
    }
  }
  return retval;
}

//__________________________________________________________________________________|___________

double TQHistogramUtils::clearBinsBelowY(TH2* hist, double yMin){
  // clear all histogram bins below yMin (for 2D-histograms)
  if(!hist) return 0;
  size_t border = hist->GetYaxis()->FindBin(yMin);
  double retval = 0;
  for(size_t i=0; i<(size_t)hist->GetNbinsX()+1; i++){
    for(size_t j=0; j<border; j++){
      retval += hist->GetBinContent(i,j);
      hist->SetBinError(i,j,0);
      hist->SetBinContent(i,j,0);
    }
  }
  return retval;
}

//__________________________________________________________________________________|___________

void TQHistogramUtils::printHistogramASCII(TH1* hist, const TString& tags){
  // print a histogram to the console (ascii-art)
  TQHistogramUtils::printHistogramASCII(std::cout, hist, tags);
}

//__________________________________________________________________________________|___________

void TQHistogramUtils::printHistogramASCII(TH1* hist, TQTaggable& tags){
  // print a histogram to the console (ascii-art)
  TQHistogramUtils::printHistogramASCII(std::cout, hist, tags);
}

//__________________________________________________________________________________|___________

void TQHistogramUtils::printHistogramASCII(std::ostream& os, TH1* hist, const TString& tags){
  // print a histogram to a stream (ascii-art)
  TQTaggable taggable(tags);
  TQHistogramUtils::printHistogramASCII(os, hist,taggable);
}

//__________________________________________________________________________________|___________

void TQHistogramUtils::printHistogramASCII(std::ostream& os, TH1* hist, TQTaggable& tags){
  // print a histogram to a stream (ascii-art)
  bool showTitle = tags.getTagBoolDefault("showTitle",true);
  bool showMeanRMS = tags.getTagBoolDefault("showMeanRMS",showTitle);
  bool showEntries = tags.getTagBoolDefault("showEntries",showTitle);
  bool includeUnderflow = tags.getTagBoolDefault("includeUnderflow",false);
  bool includeOverflow = tags.getTagBoolDefault("includeOverflow",false);
  TString token = tags.getTagStringDefault("token","â–ˆ");
  size_t yScale = tags.getTagIntegerDefault("yScale",10);
  int rebin = tags.getTagIntegerDefault("rebin",1);
  int nSigDigitsY = tags.getTagIntegerDefault("showDigitsY",2);
  int nSigDigitsX = tags.getTagIntegerDefault("showDigitsX",2);
  if(showTitle){
    os << hist->ClassName() << " " << hist->GetName() << ": " << hist->GetTitle();
    if(showMeanRMS){
      os << " - " << "Mean = " << hist->GetMean() << ", RMS = " << hist->GetRMS();
    }
    if(showEntries){
      os << " - " << hist->GetEntries() << " Entries";
    }
    os << std::endl;
  }
  double max = 0;
  double val = 0;
  int count = 0;
  int lastbin = 0;
  std::vector<double> nBlocks;
  std::vector<double> binCenters;
  if(includeUnderflow){
    nBlocks.push_back(hist->GetBinContent(0));
    binCenters.push_back(.5*(hist->GetBinLowEdge(0) + hist->GetBinLowEdge(1)));
  }
  for(int i=0; i<hist->GetNbinsX(); i++){
    val += hist->GetBinContent(i);
    count++;
    if(count >= rebin){
      binCenters.push_back(.5*(hist->GetBinLowEdge(lastbin) + hist->GetBinLowEdge(i+1)));
      max = std::max(val,max);
      nBlocks.push_back(val);
      val = 0;
      count = 0;
      lastbin = i;
    }
  }
  if(tags.getTagBoolDefault("vertical",false)){
    bool showBinContents = tags.getTagBoolDefault("printBinContents",true);
    bool showHlines = tags.getTagBoolDefault("printHorizontalLines",true);
    int rightMargin = showBinContents ? std::max(10,nSigDigitsX+2) : 0;
    int leftMargin = nSigDigitsY+2+std::max(ceil(log10(TQHistogramUtils::getAxisXmax(hist))),0.);
    int histWidth = tags.getTagIntegerDefault("width",TQLibrary::getConsoleWidth() - rightMargin - 2 - leftMargin);
    TString fmtx = TString::Format("%%.%df",nSigDigitsX);
    TString fmty = TString::Format("%%.%df",nSigDigitsY);
    double scale = ((double)(histWidth))/max;
    if(showHlines) os << TQStringUtils::repeat(" ",leftMargin) << "+" << TQStringUtils::repeat("-",histWidth) << std::endl;
    for(size_t i=0; i<nBlocks.size(); i++){
      size_t n = scale*nBlocks[i];
      os << TQStringUtils::fixedWidth(TString::Format(fmtx,binCenters[i]),leftMargin,"r");
      os << "|";
      os << TQStringUtils::repeat(token,n);
      if(showBinContents){
        os << " " << TString::Format(fmty,nBlocks[i]);
      }
      os << std::endl;
    }
    if(showHlines) os << TQStringUtils::repeat(" ",leftMargin) << "+" << TQStringUtils::repeat("-",histWidth) << std::endl;
  } else {
    int width = floor(log10(max));
    if(includeOverflow) nBlocks.push_back(hist->GetBinContent(hist->GetNbinsX()));
    double scale = ((double)yScale)/max;
    for(size_t i=yScale; /*i>=0 &&*/ i<=yScale; i--) { //in case of an underflow 'i' will become max. positive number represented by size_t and hence fail the second check anyways
      os << " |";
      for(size_t j=0; j<nBlocks.size(); j++){
        if(nBlocks[j]*scale > i){
          os << token;
        } else {
          os << " ";
        }
      }
      os << "| ";
      if(i==0){
        os << TQStringUtils::repeat(" ",width) << 0<< std::endl;
      } else {
        os << TQStringUtils::repeat(" ",width-floor(log10(i/scale))) << TQUtils::round(i/scale,nSigDigitsY) << std::endl;
      }
    }
    os << " +" << TQStringUtils::repeat("-",nBlocks.size()) << "+" << std::endl;
    TString fmt = TString::Format("%%.%df",nSigDigitsX);
    os << " " << TQStringUtils::fixedWidth(TString::Format(fmt,TQHistogramUtils::getAxisXmin(hist)),ceil(0.5*nBlocks.size())+1,"l");
    os << TQStringUtils::fixedWidth(TString::Format(fmt,TQHistogramUtils::getAxisXmax(hist)),ceil(0.5*nBlocks.size())+1,"r");
    os << std::endl;
  }
}

//__________________________________________________________________________________|___________

TStyle* TQHistogramUtils::ATLASstyle()
{
  // copied from official ATLAS style scripts
  // returns a TStyle* object according to the ATLAS style guidelines
  // can then be enabled via gROOT->SetStyle("ATLAS");
  // followed by either calling TH1::UseCurrentStyle() on each histogram or gROOT->ForceStyle();

  TStyle *atlasStyle = new TStyle("ATLAS","Atlas style");

  // use plain black on white colors
  Int_t icol=0; // WHITE
  atlasStyle->SetFrameBorderMode(icol);
  atlasStyle->SetFrameFillColor(icol);
  atlasStyle->SetCanvasBorderMode(icol);
  atlasStyle->SetCanvasColor(icol);
  atlasStyle->SetPadBorderMode(icol);
  atlasStyle->SetPadColor(icol);
  atlasStyle->SetStatColor(icol);
  //atlasStyle->SetFillColor(icol); // don't use: white fill color for *all* objects

  // set the paper & margin sizes
  atlasStyle->SetPaperSize(20,26);

  // set margin sizes
  atlasStyle->SetPadTopMargin(0.05);
  atlasStyle->SetPadRightMargin(0.05);
  atlasStyle->SetPadBottomMargin(0.16);
  atlasStyle->SetPadLeftMargin(0.16);

  // set title offsets (for axis label)
  atlasStyle->SetTitleXOffset(1.4);
  atlasStyle->SetTitleYOffset(1.4);

  // use large fonts
  //Int_t font=72; // Helvetica italics
  Int_t font=42; // Helvetica
  Double_t tsize=0.05;
  atlasStyle->SetTextFont(font);

  atlasStyle->SetTextSize(tsize);
  atlasStyle->SetLabelFont(font,"x");
  atlasStyle->SetTitleFont(font,"x");
  atlasStyle->SetLabelFont(font,"y");
  atlasStyle->SetTitleFont(font,"y");
  atlasStyle->SetLabelFont(font,"z");
  atlasStyle->SetTitleFont(font,"z");

  atlasStyle->SetLabelSize(tsize,"x");
  atlasStyle->SetTitleSize(tsize,"x");
  atlasStyle->SetLabelSize(tsize,"y");
  atlasStyle->SetTitleSize(tsize,"y");
  atlasStyle->SetLabelSize(tsize,"z");
  atlasStyle->SetTitleSize(tsize,"z");

  // use bold lines and markers
  atlasStyle->SetMarkerStyle(20);
  atlasStyle->SetMarkerSize(1.2);
  atlasStyle->SetHistLineWidth(2.);
  atlasStyle->SetLineStyleString(2,"[12 12]"); // postscript dashes

  // get rid of X error bars
  //atlasStyle->SetErrorX(0.001);
  // get rid of error bar caps
  atlasStyle->SetEndErrorSize(0.);

  // do not display any of the standard histogram decorations
  atlasStyle->SetOptTitle(0);
  //atlasStyle->SetOptStat(1111);
  atlasStyle->SetOptStat(0);
  //atlasStyle->SetOptFit(1111);
  atlasStyle->SetOptFit(0);

  // put tick marks on top and RHS of plots
  atlasStyle->SetPadTickX(1);
  atlasStyle->SetPadTickY(1);

  return atlasStyle;

}

//__________________________________________________________________________________|___________

TCanvas* TQHistogramUtils::applyATLASstyle(TH1* histo, const TString& label, double x, double y, double yResize, const TString& xTitle, const TString& yTitle, bool square) {
  //Turns a simple histogram into a plot following ATLAS style guidelines. This is mostly intended for quick plotting and interactive use
  if (!histo) return NULL;
  TH1* h = static_cast<TH1*>( histo->Clone("hcopy") );
  bool isTH2 = h->InheritsFrom(TH2::Class());

  if (!gROOT->GetStyle("ATLAS")) {
  TQHistogramUtils::ATLASstyle(); //yes, this returns a pointer that is not cleared (it is automatically recognized by TROOT, see next line)
  gROOT->SetStyle("ATLAS");
  gROOT->ForceStyle();
  }
  if (isTH2) {
    gStyle->SetPadRightMargin(0.15);
    gStyle->SetPalette(55); //kRainbow
  }
  h->GetXaxis()->SetTitleSize(0.05);
  h->GetYaxis()->SetTitleSize(0.05);
  TCanvas* can = new TCanvas("can_" + TString(histo->GetName()), "can_"+ TString(histo->GetTitle()), square ? 600 : 800, 600);
  if (xTitle != "none") h->GetXaxis()->SetTitle(xTitle);
  if (yTitle != "none") h->GetYaxis()->SetTitle(yTitle);
  if (yResize > 0) h->SetMaximum(histo->GetMaximum()/yResize);
  h->Draw();
  TLatex l; //l.SetTextAlign(12); l.SetTextSize(tsize);
  l.SetNDC();
  l.SetTextFont(72);
  //l.SetTextColor(color);

  double delx = 0.115*696*gPad->GetWh()/(472*gPad->GetWw());

  l.DrawLatex(x,y,"ATLAS");
  if (label) {
    TLatex p;
    p.SetNDC();
    p.SetTextFont(42);
    //p.SetTextColor(color);
    p.DrawLatex(x+delx,y,label);
  }

  //delete atlasStyle;
  return can;
}

//____________________________________________________________________________________________________

TH1* TQHistogramUtils::unrollHistogram(const TH2* input, bool firstX, bool includeUnderflowOverflow, bool addLabels){
  // unroll a two-dimensional histogram, concatenating the slices to a single one-dimensional histogram
  const bool binlabels = TQHistogramUtils::hasBinLabels(input);
  //const size_t ntot = TQHistogramUtils::getNbinsGlobal(input);
  if(!includeUnderflowOverflow && binlabels){
    return NULL;
  }
  const size_t nx = input->GetXaxis()->GetNbins()+2*includeUnderflowOverflow;
  const size_t ny = input->GetYaxis()->GetNbins()+2*includeUnderflowOverflow;
  const bool extra = includeUnderflowOverflow;
  TH1* hist = new TH1F(input->GetName(),input->GetTitle(),nx*ny,0,1);
  // std::cout << ntot << " vs " << TQHistogramUtils::getNbinsGlobal(hist) << std::endl;
  hist->SetDirectory(NULL);
  for(size_t j=0; j<ny; ++j){
    for(size_t i=0; i<nx; ++i){
      size_t newidx;
      if(firstX) newidx = 1 + j*nx + i;
      else       newidx = 1 + i*ny + j;
      size_t bin = input->GetBin(i+!extra,j+!extra);
      hist->SetBinContent(newidx,input->GetBinContent(bin));

      if(addLabels){
	TString labelX,labelY;
	if(i==0 && extra){
	  labelX = TString::Format("%s<%g",input->GetXaxis()->GetTitle(),input->GetXaxis()->GetBinLowEdge(1));
	} else if(i+1==nx && extra){
	  labelX = TString::Format("%s>%g",input->GetXaxis()->GetTitle(),input->GetXaxis()->GetBinLowEdge(nx));
	} else if(binlabels){
	  labelX = input->GetXaxis()->GetBinLabel(i+!extra);
	} else {
	  labelX = TString::Format("%s=%g",input->GetXaxis()->GetTitle(),input->GetXaxis()->GetBinCenter(i+!extra));
	}
	
	if(j==0 && extra){
	  labelY = TString::Format("%s<%g",input->GetYaxis()->GetTitle(),input->GetYaxis()->GetBinLowEdge(1));
	} else if(j+1==ny && extra){
	  labelY = TString::Format("%s>%g",input->GetYaxis()->GetTitle(),input->GetYaxis()->GetBinLowEdge(ny));
	} else if(binlabels){
	  labelY = input->GetYaxis()->GetBinLabel(j+!extra);
	} else {
	  labelY = TString::Format("%s=%g",input->GetYaxis()->GetTitle(),input->GetYaxis()->GetBinCenter(j+!extra));
	}
	// std::cout << "i=" << i << "/" << nx << ", j=" << j << "/" << ny << " = " << bin << "/" << ntot << " => " << newidx << "/" << hist->GetXaxis()->GetNbins() << std::endl;
	hist->GetXaxis()->SetBinLabel(newidx,labelX+", "+labelY);
      }
    }
  }
  return hist;
}


//____________________________________________________________________________________________________

TObjArray* TQHistogramUtils::getSlices(const TH2* input, bool alongX){
  // chop a 2d-histogram into slices along X (or Y)
  TObjArray* list = new TObjArray();
  auto* firstaxis = (alongX ? input->GetXaxis() : input->GetYaxis());
  auto* secondaxis = (alongX ? input->GetYaxis() : input->GetXaxis());
  for(Int_t i=1; i<=firstaxis->GetNbins(); ++i){
    TString label = firstaxis->GetBinLabel(i);
    if(label.IsNull()){
      label = TString::Format("%s=%g",firstaxis->GetTitle(),firstaxis->GetBinCenter(i));
    }
    TH1F* hist = new TH1F(input->GetName(), label, secondaxis->GetNbins(), secondaxis->GetXmin(), secondaxis->GetXmax());
    hist->GetXaxis()->SetTitle(secondaxis->GetTitle());
    hist->GetYaxis()->SetTitle(input->GetTitle());
    hist->SetDirectory(NULL);
    for(Int_t j=1; j<=secondaxis->GetNbins(); ++j){
      hist->SetBinContent(j, alongX ? input->GetBinContent(i,j) : input->GetBinContent(j,i));
    }
    list->Add(hist);
  }
  return list;
}

//____________________________________________________________________________________________________

bool TQHistogramUtils::isUnderflowOverflowBin(TH1* hist, int bin){
  return hist->IsBinUnderflow(bin) || hist->IsBinOverflow(bin);
}


//____________________________________________________________________________________________________

bool TQHistogramUtils::isGreaterThan(TH1* hist1, TH1* hist2){
  // returns true if each bin of hist1 has a larger or equal value than the corresponding bin of hist2
  const size_t n = TQHistogramUtils::getNbinsGlobal(hist1);
  for(size_t i=0; i<n; ++i){
    if(TQHistogramUtils::isUnderflowOverflowBin(hist1,i)) continue;
    if(hist1->GetBinContent(i) < hist2->GetBinContent(i)){
      DEBUGfunc("bin %d: %g < %g",i,hist1->GetBinContent(i),hist2->GetBinContent(i));
      return false;
    }
  }
  return true;
}

bool TQHistogramUtils::hasGreaterMaximumThan(TH1* hist1, TH1* hist2) {
  return hist1->GetMaximum() > hist2->GetMaximum();
}

//____________________________________________________________________________________________________

TCanvas* TQHistogramUtils::applyATLASstyle(TGraph* histo, const TString& label, double x, double y, double yResize, const TString& xTitle, const TString& yTitle, bool square) {
  //Turns a TGraph based scatter plot into a plot following ATLAS style guidelines. This is mostly intended for quick plotting and interactive use

  if (!histo) return NULL;
  TGraph* h = dynamic_cast<TGraph*>( histo->Clone("hcopy") );
  if (!gROOT->GetStyle("ATLAS")) {
  TQHistogramUtils::ATLASstyle(); //yes, this returns a pointer that is not cleared (it is automatically recognized by TROOT, see next line)
  gROOT->SetStyle("ATLAS");
  gROOT->ForceStyle();
  }
  int nPoints = h->GetN();
  double xMin,xMax,yMin,yMax;
  h->GetPoint(0,xMin,yMin);
  h->GetPoint(0,xMax,yMax);
  double xi=0.;
  double yi=0.;
  for (int i=0; i<nPoints; i++)
  {
    h->GetPoint(i, xi, yi);
    if (yMax<yi) yMax=yi;
    if (yMin>yi) yMin=yi;
    if (xMax<xi) xMax=xi;
    if (xMin>xi) xMin=xi;
  }

  TCanvas* can = new TCanvas("can_" + TString(histo->GetName()), "can_"+ TString(histo->GetTitle()), square ? 600 : 800, 600);
  if (xTitle != "none") h->GetXaxis()->SetTitle(xTitle);
  if (yTitle != "none") h->GetYaxis()->SetTitle(yTitle);
  yMin -= 0.05*(yMax-yMin);
  if (yResize > 0) h->SetMaximum((yMax-yMin)/yResize+yMin);
  if (yResize > 0) h->SetMinimum(yMin);
  h->GetXaxis()->SetRangeUser(xMin-0.02*(xMax-xMin),xMax+0.02*(xMax-xMin));
  //h->GetXaxis()->SetRangeUser(0.,1.);
  //apply style settings
  h->SetMarkerSize(1);
  h->SetMarkerStyle(20);

  h->Draw("AP");
  TLatex l; //l.SetTextAlign(12); l.SetTextSize(tsize);
  l.SetNDC();
  l.SetTextFont(72);
  //l.SetTextColor(color);

  double delx = 0.115*696*gPad->GetWh()/(472*gPad->GetWw());

  l.DrawLatex(x,y,"ATLAS");
  if (label) {
    TLatex p;
    p.SetNDC();
    p.SetTextFont(42);
    //p.SetTextColor(color);
    p.DrawLatex(x+delx,y,label);
  }

  //delete atlasStyle;
  return can;
}

//____________________________________________________________________________________________________

TCanvas* TQHistogramUtils::applyATLASstyle(TMultiGraph* histo, const TString& label, double x, double y, double yResize, const TString& xTitle, const TString& yTitle, bool square) {
  //Turns a TGraph based scatter plot into a plot following ATLAS style guidelines. This is mostly intended for quick plotting and interactive use

  if (!histo) {
    WARN("Cannot create canvas, TMultiGraph is a null pointer");
    return NULL;
  }
  TMultiGraph* h = dynamic_cast<TMultiGraph*>( histo->Clone("hcopy") );
  if (!h) {
    WARN("Failed to clone TMultiGraph");
    return nullptr;
  }
  if (!gROOT->GetStyle("ATLAS")) {
  TQHistogramUtils::ATLASstyle(); //yes, this returns a pointer that is not cleared (it is automatically recognized by TROOT, see next line)
  gROOT->SetStyle("ATLAS");
  gROOT->ForceStyle();
  }

  double xMin,xMax,yMin,yMax;
  bool first = true;
  TQGraphIterator itr(h->GetListOfGraphs());
  while(itr.hasNext()) {
    TGraph* gr = itr.readNext();
    if (!gr) continue;
    gr->SetMarkerSize(1);
    gr->SetMarkerStyle(20);
    int nPoints = gr->GetN();
    if (first) {
      gr->GetPoint(0,xMin,yMin);
      gr->GetPoint(0,xMax,yMax);
      first = false;
    }
    double xi=0.;
    double yi=0.;
    for (int i=0; i<nPoints; i++)
    {
      gr->GetPoint(i, xi, yi);
      if (yMax<yi) yMax=yi;
      if (yMin>yi) yMin=yi;
      if (xMax<xi) xMax=xi;
      if (xMin>xi) xMin=xi;
    }
  }

  TCanvas* can = new TCanvas("can_" + TString(histo->GetName()), "can_"+ TString(histo->GetTitle()), square ? 600 : 800, 600);
  yMin -= 0.05*(yMax-yMin);
  if (yResize > 0) h->SetMaximum((yMax-yMin)/yResize+yMin);
  if (yResize > 0) h->SetMinimum(yMin);
  //h->GetXaxis()->SetRangeUser(0.,1.);
  //apply style settings
  //h->SetMarkerSize(1);
  //h->SetMarkerStyle(20);

  h->Draw("AP"); //dummy Draw call to create x/y axis member objects. "A" option must be present!
  if (h->GetXaxis()) {
  if (xTitle != "none") h->GetXaxis()->SetTitle(xTitle);
  if (yTitle != "none") h->GetYaxis()->SetTitle(yTitle);
  h->GetXaxis()->SetRangeUser(xMin-0.02*(xMax-xMin),xMax+0.02*(xMax-xMin));
  }
  h->Draw("AP");
  TLatex l; //l.SetTextAlign(12); l.SetTextSize(tsize);
  l.SetNDC();
  l.SetTextFont(72);
  //l.SetTextColor(color);

  double delx = 0.115*696*gPad->GetWh()/(472*gPad->GetWw());

  l.DrawLatex(x,y,"ATLAS");
  if (label) {
    TLatex p;
    p.SetNDC();
    p.SetTextFont(42);
    //p.SetTextColor(color);
    p.DrawLatex(x+delx,y,label);
  }

  //delete atlasStyle;
  return can;
}

//____________________________________________________________________________________________________

void TQHistogramUtils::rerollGauss(TH1* hist, double zvalue){
  // reroll a histogram, i.e. replace every bin content with a new
  // number randomly selected from a gaussian distribution where mean
  // and width are given by bin content and bin error of the histogram.
  // zvalue can be used to scale up or down the width of the gaussian.
  const size_t n = TQHistogramUtils::getNbinsGlobal(hist);
  TRandom3 rand;
  for(size_t i=0; i<n; ++i){
    double newvalue = rand.Gaus(hist->GetBinContent(i),zvalue*hist->GetBinError(i));
    hist->SetBinContent(i,newvalue);
  }
}

//____________________________________________________________________________________________________

void TQHistogramUtils::rerollPoisson(TH1* hist, int seed){
  // reroll a histogram, i.e. replace every bin content with a new
  // number randomly selected from a poisson distribution where the mean
  // is given by bin content of the histogram.
  const size_t entries = hist->GetEntries();
  const size_t n = TQHistogramUtils::getNbinsGlobal(hist);
  TRandom3 rand(seed);
  for(size_t i=0; i<n; ++i){
    double newvalue = rand.Poisson(hist->GetBinContent(i));
    hist->SetBinContent(i,newvalue);
    hist->SetBinError(i,sqrt(newvalue));
  }
  hist->SetEntries(entries);
}

//____________________________________________________________________________________________________

bool TQHistogramUtils::envelopeUpper(TH1* hist, TH1* otherhist){
  // envelope a histogram by another one, taking the bin-by-bin maximum
  const size_t n = TQHistogramUtils::getNbinsGlobal(hist);
  const size_t entries = std::max(hist->GetEntries(),otherhist->GetEntries());
  for(size_t i=0; i<n; ++i){
    const double thisval = hist->GetBinContent(i);
    const double otherval = otherhist->GetBinContent(i);
    if(otherval > thisval){
      hist->SetBinContent(i,otherval);
      hist->SetBinError(i,otherhist->GetBinError(i));
    }
  }
  hist->SetEntries(entries);
  return true;
}

//____________________________________________________________________________________________________

bool TQHistogramUtils::envelopeLower(TH1* hist, TH1* otherhist){
  // envelope a histogram by another one, taking the bin-by-bin minimum
  const size_t n = TQHistogramUtils::getNbinsGlobal(hist);
  const size_t entries = std::min(hist->GetEntries(),otherhist->GetEntries());
  for(size_t i=0; i<n; ++i){
    const double thisval = hist->GetBinContent(i);
    const double otherval = otherhist->GetBinContent(i);
    if(otherval < thisval){
      hist->SetBinContent(i,otherval);
      hist->SetBinError(i,otherhist->GetBinError(i));
    }
  }
  hist->SetEntries(entries);
  return true;
}

//____________________________________________________________________________________________________

template<class TMatrixTT>
TH2* TQHistogramUtils::convertMatrixToHistogram(const TMatrixTT* matrix, const TString& name){
  // convert a matrix into a 2d histogram
  if(!matrix) return NULL;
  const size_t ncols = matrix->GetNcols();
  const size_t nrows = matrix->GetNrows();
  TH2* hist = new TH2D(name,name,ncols,0,ncols,nrows,0,nrows);
  hist->SetDirectory(NULL);
  for(size_t i=0; i<nrows; ++i){
    for(size_t j=0; j<ncols; ++j){
      size_t bin = hist->GetBin(i+1,j+1);
      hist->SetBinContent(bin,(*matrix)(i,j));
      hist->SetBinError(bin,0);
    }
  }
  hist->SetEntries(ncols*nrows);
  return hist;
}

namespace TQHistogramUtils {
  template TH2* convertMatrixToHistogram<TMatrixT<float > >(const TMatrixT<float >* matrix, const TString& name);
  template TH2* convertMatrixToHistogram<TMatrixT<double> >(const TMatrixT<double>* matrix, const TString& name);
  template TH2* convertMatrixToHistogram<TMatrixTSym<float > >(const TMatrixTSym<float >* matrix, const TString& name);
  template TH2* convertMatrixToHistogram<TMatrixTSym<double> >(const TMatrixTSym<double>* matrix, const TString& name);
}

//____________________________________________________________________________________________________

TMatrixD* TQHistogramUtils::convertHistogramToMatrix(TH2* hist){
  // convert a 2d histogram into a matrix
  if(!hist) return NULL;
  const size_t ncols = hist->GetNbinsX();
  const size_t nrows = hist->GetNbinsY();
  TMatrixD* matrix = new TMatrixD(nrows,ncols);
  for(size_t i=0; i<nrows; ++i){
    for(size_t j=0; j<ncols; ++j){
      size_t bin = hist->GetBin(i+1,j+1);
      (*matrix)(i,j) = hist->GetBinContent(bin);
    }
  }
  return matrix;
}

//____________________________________________________________________________________________________

TMatrixDSym* TQHistogramUtils::convertHistogramToSymMatrix(TH2* hist, double relThreshold, double absThreshold){
  // convert a 2d histogram into a matrix
  if(!hist) return NULL;
  const size_t ncols = hist->GetNbinsX();
  const size_t nrows = hist->GetNbinsY();
  if(ncols != nrows) return NULL;
  TMatrixDSym* matrix = new TMatrixDSym(nrows);
  for(size_t i=0; i<nrows; ++i){
    if(!TQStringUtils::equal(hist->GetYaxis()->GetBinLabel(i+1),hist->GetXaxis()->GetBinLabel(i+1))){
      throw std::runtime_error(TString::Format("unable to convert asymmetric histogram '%s' to symmetric matrix, conflict for bin labels '%s' vs. '%s' at %lu!",hist->GetName(),hist->GetXaxis()->GetBinLabel(i+1),hist->GetYaxis()->GetBinLabel(i+1),i+1).Data());
    }
    for(size_t j=0; j<nrows; ++j){
      const double valxy = hist->GetBinContent(i+1,j+1);
      const double valyx = hist->GetBinContent(j+1,i+1);
      if(!TQHistogramUtils::areEqualRel(valxy,valyx,relThreshold) && !(fabs(valxy+valyx)<absThreshold)){
        throw std::runtime_error(TString::Format("unable to convert asymmetric histogram '%s' to symmetric matrix, conflict for '%s' vs. '%s' at %lu/%lu vs. %lu/%lu: %g vs. %g!",hist->GetName(),hist->GetXaxis()->GetBinLabel(i+1),hist->GetYaxis()->GetBinLabel(j+1),i+1, j+1, j+1, i+1, valxy,valyx).Data());
      } else {
        (*matrix)(i,j) = 0.5*(valxy+valyx);
      }
    }
  }
  return matrix;
}

//____________________________________________________________________________________________________

TMatrixDSym* TQHistogramUtils::convertHistogramToSymMatrix(TH2* hist, const std::vector<TString>& ordering, double relThreshold, double absThreshold){
  // convert a 2d histogram into a matrix
  if(!hist) return NULL;
  if(!TQHistogramUtils::isAlphanumeric(hist->GetXaxis())) return NULL;
  if(!TQHistogramUtils::isAlphanumeric(hist->GetYaxis())) return NULL;
  const size_t nrows = ordering.size();
  TMatrixDSym* matrix = new TMatrixDSym(nrows);
  for(size_t i=0; i<nrows; ++i){
    const TString& pari(ordering[i]);
    size_t binxi = hist->GetXaxis()->FindBin(pari);
    size_t binyi = hist->GetYaxis()->FindBin(pari);
    for(size_t j=0; j<nrows; ++j){
      const TString& parj(ordering[j]);
      size_t binxj = hist->GetXaxis()->FindBin(parj);
      size_t binyj = hist->GetYaxis()->FindBin(parj);
      const double valxy = hist->GetBinContent(binxi,binyj);
      const double valyx = hist->GetBinContent(binxj,binyi);
      if(!TQHistogramUtils::areEqualRel(valxy,valyx,relThreshold) && !(fabs(valxy+valyx)<absThreshold)){
        throw std::runtime_error(TString::Format("unable to convert asymmetric histogram '%s' to symmetric matrix, conflict for '%s' vs. '%s' at %lu/%lu vs. %lu/%lu: %g vs. %g!",hist->GetName(),pari.Data(),parj.Data(),binxi, binyj, binxj, binyi, valxy,valyx).Data());
      } else {
        (*matrix)(i,j) = 0.5*(valxy+valyx);
      }
    }
  }
  return matrix;
}

//____________________________________________________________________________________________________

int TQHistogramUtils::fixHoles1D(TH1* hist, double threshold) {
  // fix holes (empty bins below threshold) in a 1D histogram
  // this function uses simple linear interpolation/extrapolation from the 2 adjacent bins
  // underflow/overflow bins are ignored
  int nDim = TQHistogramUtils::getDimension(hist);
  if(nDim != 1){
    throw std::runtime_error("unable to patch shape systematics for multi-dimensional histograms, skipping!");
  }

  if(hist->GetNbinsX() < 3){
    throw std::runtime_error("unable to patch shape systematics for histograms with less than 3 bins, skipping!");
  }

  int fixed = 0;
  if(hist->GetBinContent(1) < threshold){
    if((fabs(hist->GetBinContent(2)) < threshold) || (fabs(hist->GetBinContent(3)) < threshold)){
      throw std::runtime_error("refusing to fix holes greater than single bins!");
    }
    hist->SetBinContent(1,     2*    hist->GetBinContent(2)    -     hist->GetBinContent(3));
    hist->SetBinError  (1,sqrt(2*pow(hist->GetBinError  (2),2) + pow(hist->GetBinError  (3),2)));
    fixed++;
  }

  int n = hist->GetNbinsX();
  if(hist->GetBinContent(n) < threshold){
    if((fabs(hist->GetBinContent(n-1)) < threshold) || (fabs(hist->GetBinContent(n-2)) < threshold)){
      throw std::runtime_error("refusing to fix holes greater than single bins!");
    }
    hist->SetBinContent(n,     2*    hist->GetBinContent(n-1)    -     hist->GetBinContent(n-2));
    hist->SetBinError  (n,sqrt(2*pow(hist->GetBinError  (n-1),2) + pow(hist->GetBinError  (n-2),2)));
    fixed++;
  }

  // loop over all "internal" bins
  for(int i=2; i<n; ++i){
    if(hist->GetBinContent(i) < threshold){
      if((fabs(hist->GetBinContent(i-1)) < threshold) || (fabs(hist->GetBinContent(i+1)) < threshold)){
        throw std::runtime_error("refusing to fix holes greater than single bins!");
      }
      hist->SetBinContent(i,0.5 *     (    hist->GetBinContent(i-1)    +     hist->GetBinContent(i+1)));
      hist->SetBinError  (i,0.5 * sqrt(pow(hist->GetBinError  (i-1),2) + pow(hist->GetBinError  (i+1),2)));
      fixed++;
    }
  }
  return fixed;
}

//__________________________________________________________________________________|___________

void TQHistogramUtils::scaleErrors(TH1* hist, double scale){
  // scale the errors of a histogram by an arbitrary number
  size_t nbins = TQHistogramUtils::getNbinsGlobal(hist);
  for(size_t i=0; i<nbins; ++i){
    hist->SetBinError(i,scale*hist->GetBinError(i));
  }
}

//__________________________________________________________________________________|___________

bool TQHistogramUtils::transferRelativeErrors(TH1* sourceHist, TH1* targetHist) {
  // set the relative errors of targetHist to the ones of sourceHist

  if (!sourceHist || !targetHist) return 0;

  if (!checkConsistency(sourceHist, targetHist)) return 0;
  int dim = getDimension(sourceHist);

  int binmin = 0;
  if(TQHistogramUtils::hasBinLabels(sourceHist)){
    binmin = 1;
  }

  for(int i=binmin; i<=sourceHist->GetNbinsX()+1; ++i) {
    if (dim == 1) {
      double valSource = sourceHist->GetBinContent(i);
      double errSource = sourceHist->GetBinError(i);
      double valTarget = targetHist->GetBinContent(i);
      if (valSource != 0) {
        targetHist->SetBinError(i, errSource / valSource * valTarget);
      }
    } else {
      for(int j=binmin; j<=sourceHist->GetNbinsY()+1; ++j){
        if (dim == 2) {
          double valSource = sourceHist->GetBinContent(i, j);
          double errSource = sourceHist->GetBinError(i, j);
          double valTarget = targetHist->GetBinContent(i, j);
          if (valSource != 0) {targetHist->SetBinError(i, j, errSource / valSource * valTarget);}
        } else {
          for(int k=binmin; k<=sourceHist->GetNbinsZ()+1; ++k){
            if (dim == 3) {
              double valSource = sourceHist->GetBinContent(i, j, k);
              double errSource = sourceHist->GetBinError(i, j, k);
              double valTarget = targetHist->GetBinContent(i, j, k);
              if (valSource != 0) {targetHist->SetBinError(i, j, k, errSource / valSource * valTarget);}
            }
          }
        }
      }
    }
  }

  return 1;
}

//__________________________________________________________________________________|___________

bool TQHistogramUtils::transferRelativeErrors(TQCounter* source, TQCounter* target) {
  // set the relative errors of target counter to the ones of source counter

  if (!source || !target) return 0;

  double valSource = source->getCounter();
  double errSource = source->getError();
  double valTarget = target->getCounter();
  if (valSource != 0) {target->setError(errSource / valSource * valTarget);}

  return 1;
}


//__________________________________________________________________________________|___________

TH1* TQHistogramUtils::sumHistograms(TCollection* histos) {
  // sums up histograms in input collection and returns the summed histogram
  // if no histogram (instance of TH1) is found a nullptr is returned.
  // if histograms are found to be inconsistent a nullptr is returned.
  if (!histos) return nullptr;
  TH1* sum = nullptr;
  TQTH1Iterator itr(histos);
  while (itr.hasNext()) {
    TH1* nextHist = itr.readNext();
    if (!sum) {
      sum = static_cast<TH1*>(nextHist->Clone("sum"));
    } else {
      if (!TQHistogramUtils::checkConsistency(sum, nextHist, true)) { //check if the histos are compatible and be verbose about problems!
        delete sum;
        return nullptr;
      }
      sum->Add(nextHist);
    }
  }
  return sum;
}

//__________________________________________________________________________________|___________

TH1* TQHistogramUtils::sumHistograms(const std::vector<TH1*>& histos) {
  // sums up histograms in input collection and returns the summed histogram
  // if no histogram (instance of TH1) is found a nullptr is returned.
  // if histograms are found to be inconsistent a nullptr is returned.
  TH1* sum = nullptr;
  for (TH1* nextHist : histos) {
    if (!nextHist) continue;
    if (!sum) {
      sum = static_cast<TH1*>(nextHist->Clone("sum"));
    } else {
      if (!TQHistogramUtils::checkConsistency(sum, nextHist, true)) { //check if the histos are compatible and be verbose about problems!
        delete sum;
        return nullptr;
      }
      sum->Add(nextHist);
    }
  }
  return sum;
}
//__________________________________________________________________________________|___________

TH1* TQHistogramUtils::createEnvelopingHistogram(TCollection* histos) {
  DEBUG("in TQHistogramUtils::createEnvelopingHistogram: checking collection %p with %i entries", histos, histos->GetEntries());
  if (!histos) return nullptr;
  std::vector<TH1*> histograms;
  TQTH1Iterator itr(histos);
  while (itr.hasNext()) {
    histograms.push_back(itr.readNext());
  }
  return createEnvelopingHistogram(histograms);
}

TH1* TQHistogramUtils::createEnvelopingHistogram(const std::vector<TH1*>& histos) {
  DEBUG("in TQHistogramUtils::createEnvelopingHistogram: make envelope of %u histograms", histos.size());
  if (histos.size() == 0) {
    return nullptr;
  }
  
  TH1* envelope = nullptr;
  std::map<size_t, double> bin_maxima;
  std::map<size_t, double> bin_errors;
  for (const TH1* h : histos) {
    if (!envelope) envelope = static_cast<TH1*>(h->Clone());
    for (int i=0; i<=h->GetNbinsX(); ++i) {
      double bin_content = h->GetBinContent(i);
      if (bin_maxima.find(i) == bin_maxima.end()) {
        bin_maxima[i] = bin_content;
        bin_errors[i] = h->GetBinError(i);
      } else if (bin_maxima.at(i) < h->GetBinContent(i)) {
          bin_maxima[i] = h->GetBinContent(i);
          bin_errors[i] = h->GetBinError(i);
      }
    }
  }

  for (int i = 0; i<=envelope->GetNbinsX(); ++i) {
    DEBUG("in TQHistogramUtils::createEnvelopingHistogram: set %i th bin to %f", i, bin_maxima.at(i));
    envelope->SetBinContent(i, bin_maxima.at(i));
    envelope->SetBinError(i, bin_errors.at(i));
  }

  return envelope;
}

//__________________________________________________________________________________|___________


//__________________________________________________________________________________|___________

/*
void TQHistogramUtils::saveAs(TPad* canvas, const TString& filename_) {
  // wraper around TPad::SaveAs which hacks into the ROOT pdf creation to set more
  // usefull meta information
  if (!filename_.EndsWith(".pdf")) { //meta information is only added for pdfs. For other formats we leave things untouched
    canvas->SaveAs(filename_);
    return;
  }
  TString filename = filename_;
  //at this point we should be sure to output as a pdf
  //TPDF* pdf = new TPDF(filename);
  canvas->Print(filename+"(","pdf");
  TSeqCollection* specials = gROOT->GetListOfSpecials();
  if (specials) {
    TPDF* pdf = dynamic_cast<TPDF*>(specials->FindObject(filename.Data()));
    if (!pdf) return;
    //specials->AddLast(pdf);
    pdf->WriteCompressedBuffer(); //otherwise TPDF seems to just ignore the following calls....
    pdf->NewObject(2); //2 is the index root used for the meta information block. We simply create our own, replacing the refference to the original with a refference (toc enty) to our own.
    pdf->PrintStr("<<@"); //@ is a fancy way of denoting a newline character in TPDF. Likely doesn't make a difference, but oh well....
    pdf->PrintStr("/Creator (rgugel using QFramework/CAF)@");
    pdf->PrintStr("/Keywords (Dear ROOT, get hacked!)@");
    pdf->PrintStr(">>@");
    pdf->PrintStr("endobj@");
    canvas->Print(filename.Append("]"),"pdf"); // appended ']' = force close file (we already opened it when creating the TPDF object)
    //we should be done now, so let's clean up a bit
    //specials->Remove(pdf);
    //delete pdf;

  } else { //fallback if something goes wrong (should never happen)
    canvas->SaveAs(filename);
  }

  return;
}
*/
 TQHistogramUtils.cxx:1
 TQHistogramUtils.cxx:2
 TQHistogramUtils.cxx:3
 TQHistogramUtils.cxx:4
 TQHistogramUtils.cxx:5
 TQHistogramUtils.cxx:6
 TQHistogramUtils.cxx:7
 TQHistogramUtils.cxx:8
 TQHistogramUtils.cxx:9
 TQHistogramUtils.cxx:10
 TQHistogramUtils.cxx:11
 TQHistogramUtils.cxx:12
 TQHistogramUtils.cxx:13
 TQHistogramUtils.cxx:14
 TQHistogramUtils.cxx:15
 TQHistogramUtils.cxx:16
 TQHistogramUtils.cxx:17
 TQHistogramUtils.cxx:18
 TQHistogramUtils.cxx:19
 TQHistogramUtils.cxx:20
 TQHistogramUtils.cxx:21
 TQHistogramUtils.cxx:22
 TQHistogramUtils.cxx:23
 TQHistogramUtils.cxx:24
 TQHistogramUtils.cxx:25
 TQHistogramUtils.cxx:26
 TQHistogramUtils.cxx:27
 TQHistogramUtils.cxx:28
 TQHistogramUtils.cxx:29
 TQHistogramUtils.cxx:30
 TQHistogramUtils.cxx:31
 TQHistogramUtils.cxx:32
 TQHistogramUtils.cxx:33
 TQHistogramUtils.cxx:34
 TQHistogramUtils.cxx:35
 TQHistogramUtils.cxx:36
 TQHistogramUtils.cxx:37
 TQHistogramUtils.cxx:38
 TQHistogramUtils.cxx:39
 TQHistogramUtils.cxx:40
 TQHistogramUtils.cxx:41
 TQHistogramUtils.cxx:42
 TQHistogramUtils.cxx:43
 TQHistogramUtils.cxx:44
 TQHistogramUtils.cxx:45
 TQHistogramUtils.cxx:46
 TQHistogramUtils.cxx:47
 TQHistogramUtils.cxx:48
 TQHistogramUtils.cxx:49
 TQHistogramUtils.cxx:50
 TQHistogramUtils.cxx:51
 TQHistogramUtils.cxx:52
 TQHistogramUtils.cxx:53
 TQHistogramUtils.cxx:54
 TQHistogramUtils.cxx:55
 TQHistogramUtils.cxx:56
 TQHistogramUtils.cxx:57
 TQHistogramUtils.cxx:58
 TQHistogramUtils.cxx:59
 TQHistogramUtils.cxx:60
 TQHistogramUtils.cxx:61
 TQHistogramUtils.cxx:62
 TQHistogramUtils.cxx:63
 TQHistogramUtils.cxx:64
 TQHistogramUtils.cxx:65
 TQHistogramUtils.cxx:66
 TQHistogramUtils.cxx:67
 TQHistogramUtils.cxx:68
 TQHistogramUtils.cxx:69
 TQHistogramUtils.cxx:70
 TQHistogramUtils.cxx:71
 TQHistogramUtils.cxx:72
 TQHistogramUtils.cxx:73
 TQHistogramUtils.cxx:74
 TQHistogramUtils.cxx:75
 TQHistogramUtils.cxx:76
 TQHistogramUtils.cxx:77
 TQHistogramUtils.cxx:78
 TQHistogramUtils.cxx:79
 TQHistogramUtils.cxx:80
 TQHistogramUtils.cxx:81
 TQHistogramUtils.cxx:82
 TQHistogramUtils.cxx:83
 TQHistogramUtils.cxx:84
 TQHistogramUtils.cxx:85
 TQHistogramUtils.cxx:86
 TQHistogramUtils.cxx:87
 TQHistogramUtils.cxx:88
 TQHistogramUtils.cxx:89
 TQHistogramUtils.cxx:90
 TQHistogramUtils.cxx:91
 TQHistogramUtils.cxx:92
 TQHistogramUtils.cxx:93
 TQHistogramUtils.cxx:94
 TQHistogramUtils.cxx:95
 TQHistogramUtils.cxx:96
 TQHistogramUtils.cxx:97
 TQHistogramUtils.cxx:98
 TQHistogramUtils.cxx:99
 TQHistogramUtils.cxx:100
 TQHistogramUtils.cxx:101
 TQHistogramUtils.cxx:102
 TQHistogramUtils.cxx:103
 TQHistogramUtils.cxx:104
 TQHistogramUtils.cxx:105
 TQHistogramUtils.cxx:106
 TQHistogramUtils.cxx:107
 TQHistogramUtils.cxx:108
 TQHistogramUtils.cxx:109
 TQHistogramUtils.cxx:110
 TQHistogramUtils.cxx:111
 TQHistogramUtils.cxx:112
 TQHistogramUtils.cxx:113
 TQHistogramUtils.cxx:114
 TQHistogramUtils.cxx:115
 TQHistogramUtils.cxx:116
 TQHistogramUtils.cxx:117
 TQHistogramUtils.cxx:118
 TQHistogramUtils.cxx:119
 TQHistogramUtils.cxx:120
 TQHistogramUtils.cxx:121
 TQHistogramUtils.cxx:122
 TQHistogramUtils.cxx:123
 TQHistogramUtils.cxx:124
 TQHistogramUtils.cxx:125
 TQHistogramUtils.cxx:126
 TQHistogramUtils.cxx:127
 TQHistogramUtils.cxx:128
 TQHistogramUtils.cxx:129
 TQHistogramUtils.cxx:130
 TQHistogramUtils.cxx:131
 TQHistogramUtils.cxx:132
 TQHistogramUtils.cxx:133
 TQHistogramUtils.cxx:134
 TQHistogramUtils.cxx:135
 TQHistogramUtils.cxx:136
 TQHistogramUtils.cxx:137
 TQHistogramUtils.cxx:138
 TQHistogramUtils.cxx:139
 TQHistogramUtils.cxx:140
 TQHistogramUtils.cxx:141
 TQHistogramUtils.cxx:142
 TQHistogramUtils.cxx:143
 TQHistogramUtils.cxx:144
 TQHistogramUtils.cxx:145
 TQHistogramUtils.cxx:146
 TQHistogramUtils.cxx:147
 TQHistogramUtils.cxx:148
 TQHistogramUtils.cxx:149
 TQHistogramUtils.cxx:150
 TQHistogramUtils.cxx:151
 TQHistogramUtils.cxx:152
 TQHistogramUtils.cxx:153
 TQHistogramUtils.cxx:154
 TQHistogramUtils.cxx:155
 TQHistogramUtils.cxx:156
 TQHistogramUtils.cxx:157
 TQHistogramUtils.cxx:158
 TQHistogramUtils.cxx:159
 TQHistogramUtils.cxx:160
 TQHistogramUtils.cxx:161
 TQHistogramUtils.cxx:162
 TQHistogramUtils.cxx:163
 TQHistogramUtils.cxx:164
 TQHistogramUtils.cxx:165
 TQHistogramUtils.cxx:166
 TQHistogramUtils.cxx:167
 TQHistogramUtils.cxx:168
 TQHistogramUtils.cxx:169
 TQHistogramUtils.cxx:170
 TQHistogramUtils.cxx:171
 TQHistogramUtils.cxx:172
 TQHistogramUtils.cxx:173
 TQHistogramUtils.cxx:174
 TQHistogramUtils.cxx:175
 TQHistogramUtils.cxx:176
 TQHistogramUtils.cxx:177
 TQHistogramUtils.cxx:178
 TQHistogramUtils.cxx:179
 TQHistogramUtils.cxx:180
 TQHistogramUtils.cxx:181
 TQHistogramUtils.cxx:182
 TQHistogramUtils.cxx:183
 TQHistogramUtils.cxx:184
 TQHistogramUtils.cxx:185
 TQHistogramUtils.cxx:186
 TQHistogramUtils.cxx:187
 TQHistogramUtils.cxx:188
 TQHistogramUtils.cxx:189
 TQHistogramUtils.cxx:190
 TQHistogramUtils.cxx:191
 TQHistogramUtils.cxx:192
 TQHistogramUtils.cxx:193
 TQHistogramUtils.cxx:194
 TQHistogramUtils.cxx:195
 TQHistogramUtils.cxx:196
 TQHistogramUtils.cxx:197
 TQHistogramUtils.cxx:198
 TQHistogramUtils.cxx:199
 TQHistogramUtils.cxx:200
 TQHistogramUtils.cxx:201
 TQHistogramUtils.cxx:202
 TQHistogramUtils.cxx:203
 TQHistogramUtils.cxx:204
 TQHistogramUtils.cxx:205
 TQHistogramUtils.cxx:206
 TQHistogramUtils.cxx:207
 TQHistogramUtils.cxx:208
 TQHistogramUtils.cxx:209
 TQHistogramUtils.cxx:210
 TQHistogramUtils.cxx:211
 TQHistogramUtils.cxx:212
 TQHistogramUtils.cxx:213
 TQHistogramUtils.cxx:214
 TQHistogramUtils.cxx:215
 TQHistogramUtils.cxx:216
 TQHistogramUtils.cxx:217
 TQHistogramUtils.cxx:218
 TQHistogramUtils.cxx:219
 TQHistogramUtils.cxx:220
 TQHistogramUtils.cxx:221
 TQHistogramUtils.cxx:222
 TQHistogramUtils.cxx:223
 TQHistogramUtils.cxx:224
 TQHistogramUtils.cxx:225
 TQHistogramUtils.cxx:226
 TQHistogramUtils.cxx:227
 TQHistogramUtils.cxx:228
 TQHistogramUtils.cxx:229
 TQHistogramUtils.cxx:230
 TQHistogramUtils.cxx:231
 TQHistogramUtils.cxx:232
 TQHistogramUtils.cxx:233
 TQHistogramUtils.cxx:234
 TQHistogramUtils.cxx:235
 TQHistogramUtils.cxx:236
 TQHistogramUtils.cxx:237
 TQHistogramUtils.cxx:238
 TQHistogramUtils.cxx:239
 TQHistogramUtils.cxx:240
 TQHistogramUtils.cxx:241
 TQHistogramUtils.cxx:242
 TQHistogramUtils.cxx:243
 TQHistogramUtils.cxx:244
 TQHistogramUtils.cxx:245
 TQHistogramUtils.cxx:246
 TQHistogramUtils.cxx:247
 TQHistogramUtils.cxx:248
 TQHistogramUtils.cxx:249
 TQHistogramUtils.cxx:250
 TQHistogramUtils.cxx:251
 TQHistogramUtils.cxx:252
 TQHistogramUtils.cxx:253
 TQHistogramUtils.cxx:254
 TQHistogramUtils.cxx:255
 TQHistogramUtils.cxx:256
 TQHistogramUtils.cxx:257
 TQHistogramUtils.cxx:258
 TQHistogramUtils.cxx:259
 TQHistogramUtils.cxx:260
 TQHistogramUtils.cxx:261
 TQHistogramUtils.cxx:262
 TQHistogramUtils.cxx:263
 TQHistogramUtils.cxx:264
 TQHistogramUtils.cxx:265
 TQHistogramUtils.cxx:266
 TQHistogramUtils.cxx:267
 TQHistogramUtils.cxx:268
 TQHistogramUtils.cxx:269
 TQHistogramUtils.cxx:270
 TQHistogramUtils.cxx:271
 TQHistogramUtils.cxx:272
 TQHistogramUtils.cxx:273
 TQHistogramUtils.cxx:274
 TQHistogramUtils.cxx:275
 TQHistogramUtils.cxx:276
 TQHistogramUtils.cxx:277
 TQHistogramUtils.cxx:278
 TQHistogramUtils.cxx:279
 TQHistogramUtils.cxx:280
 TQHistogramUtils.cxx:281
 TQHistogramUtils.cxx:282
 TQHistogramUtils.cxx:283
 TQHistogramUtils.cxx:284
 TQHistogramUtils.cxx:285
 TQHistogramUtils.cxx:286
 TQHistogramUtils.cxx:287
 TQHistogramUtils.cxx:288
 TQHistogramUtils.cxx:289
 TQHistogramUtils.cxx:290
 TQHistogramUtils.cxx:291
 TQHistogramUtils.cxx:292
 TQHistogramUtils.cxx:293
 TQHistogramUtils.cxx:294
 TQHistogramUtils.cxx:295
 TQHistogramUtils.cxx:296
 TQHistogramUtils.cxx:297
 TQHistogramUtils.cxx:298
 TQHistogramUtils.cxx:299
 TQHistogramUtils.cxx:300
 TQHistogramUtils.cxx:301
 TQHistogramUtils.cxx:302
 TQHistogramUtils.cxx:303
 TQHistogramUtils.cxx:304
 TQHistogramUtils.cxx:305
 TQHistogramUtils.cxx:306
 TQHistogramUtils.cxx:307
 TQHistogramUtils.cxx:308
 TQHistogramUtils.cxx:309
 TQHistogramUtils.cxx:310
 TQHistogramUtils.cxx:311
 TQHistogramUtils.cxx:312
 TQHistogramUtils.cxx:313
 TQHistogramUtils.cxx:314
 TQHistogramUtils.cxx:315
 TQHistogramUtils.cxx:316
 TQHistogramUtils.cxx:317
 TQHistogramUtils.cxx:318
 TQHistogramUtils.cxx:319
 TQHistogramUtils.cxx:320
 TQHistogramUtils.cxx:321
 TQHistogramUtils.cxx:322
 TQHistogramUtils.cxx:323
 TQHistogramUtils.cxx:324
 TQHistogramUtils.cxx:325
 TQHistogramUtils.cxx:326
 TQHistogramUtils.cxx:327
 TQHistogramUtils.cxx:328
 TQHistogramUtils.cxx:329
 TQHistogramUtils.cxx:330
 TQHistogramUtils.cxx:331
 TQHistogramUtils.cxx:332
 TQHistogramUtils.cxx:333
 TQHistogramUtils.cxx:334
 TQHistogramUtils.cxx:335
 TQHistogramUtils.cxx:336
 TQHistogramUtils.cxx:337
 TQHistogramUtils.cxx:338
 TQHistogramUtils.cxx:339
 TQHistogramUtils.cxx:340
 TQHistogramUtils.cxx:341
 TQHistogramUtils.cxx:342
 TQHistogramUtils.cxx:343
 TQHistogramUtils.cxx:344
 TQHistogramUtils.cxx:345
 TQHistogramUtils.cxx:346
 TQHistogramUtils.cxx:347
 TQHistogramUtils.cxx:348
 TQHistogramUtils.cxx:349
 TQHistogramUtils.cxx:350
 TQHistogramUtils.cxx:351
 TQHistogramUtils.cxx:352
 TQHistogramUtils.cxx:353
 TQHistogramUtils.cxx:354
 TQHistogramUtils.cxx:355
 TQHistogramUtils.cxx:356
 TQHistogramUtils.cxx:357
 TQHistogramUtils.cxx:358
 TQHistogramUtils.cxx:359
 TQHistogramUtils.cxx:360
 TQHistogramUtils.cxx:361
 TQHistogramUtils.cxx:362
 TQHistogramUtils.cxx:363
 TQHistogramUtils.cxx:364
 TQHistogramUtils.cxx:365
 TQHistogramUtils.cxx:366
 TQHistogramUtils.cxx:367
 TQHistogramUtils.cxx:368
 TQHistogramUtils.cxx:369
 TQHistogramUtils.cxx:370
 TQHistogramUtils.cxx:371
 TQHistogramUtils.cxx:372
 TQHistogramUtils.cxx:373
 TQHistogramUtils.cxx:374
 TQHistogramUtils.cxx:375
 TQHistogramUtils.cxx:376
 TQHistogramUtils.cxx:377
 TQHistogramUtils.cxx:378
 TQHistogramUtils.cxx:379
 TQHistogramUtils.cxx:380
 TQHistogramUtils.cxx:381
 TQHistogramUtils.cxx:382
 TQHistogramUtils.cxx:383
 TQHistogramUtils.cxx:384
 TQHistogramUtils.cxx:385
 TQHistogramUtils.cxx:386
 TQHistogramUtils.cxx:387
 TQHistogramUtils.cxx:388
 TQHistogramUtils.cxx:389
 TQHistogramUtils.cxx:390
 TQHistogramUtils.cxx:391
 TQHistogramUtils.cxx:392
 TQHistogramUtils.cxx:393
 TQHistogramUtils.cxx:394
 TQHistogramUtils.cxx:395
 TQHistogramUtils.cxx:396
 TQHistogramUtils.cxx:397
 TQHistogramUtils.cxx:398
 TQHistogramUtils.cxx:399
 TQHistogramUtils.cxx:400
 TQHistogramUtils.cxx:401
 TQHistogramUtils.cxx:402
 TQHistogramUtils.cxx:403
 TQHistogramUtils.cxx:404
 TQHistogramUtils.cxx:405
 TQHistogramUtils.cxx:406
 TQHistogramUtils.cxx:407
 TQHistogramUtils.cxx:408
 TQHistogramUtils.cxx:409
 TQHistogramUtils.cxx:410
 TQHistogramUtils.cxx:411
 TQHistogramUtils.cxx:412
 TQHistogramUtils.cxx:413
 TQHistogramUtils.cxx:414
 TQHistogramUtils.cxx:415
 TQHistogramUtils.cxx:416
 TQHistogramUtils.cxx:417
 TQHistogramUtils.cxx:418
 TQHistogramUtils.cxx:419
 TQHistogramUtils.cxx:420
 TQHistogramUtils.cxx:421
 TQHistogramUtils.cxx:422
 TQHistogramUtils.cxx:423
 TQHistogramUtils.cxx:424
 TQHistogramUtils.cxx:425
 TQHistogramUtils.cxx:426
 TQHistogramUtils.cxx:427
 TQHistogramUtils.cxx:428
 TQHistogramUtils.cxx:429
 TQHistogramUtils.cxx:430
 TQHistogramUtils.cxx:431
 TQHistogramUtils.cxx:432
 TQHistogramUtils.cxx:433
 TQHistogramUtils.cxx:434
 TQHistogramUtils.cxx:435
 TQHistogramUtils.cxx:436
 TQHistogramUtils.cxx:437
 TQHistogramUtils.cxx:438
 TQHistogramUtils.cxx:439
 TQHistogramUtils.cxx:440
 TQHistogramUtils.cxx:441
 TQHistogramUtils.cxx:442
 TQHistogramUtils.cxx:443
 TQHistogramUtils.cxx:444
 TQHistogramUtils.cxx:445
 TQHistogramUtils.cxx:446
 TQHistogramUtils.cxx:447
 TQHistogramUtils.cxx:448
 TQHistogramUtils.cxx:449
 TQHistogramUtils.cxx:450
 TQHistogramUtils.cxx:451
 TQHistogramUtils.cxx:452
 TQHistogramUtils.cxx:453
 TQHistogramUtils.cxx:454
 TQHistogramUtils.cxx:455
 TQHistogramUtils.cxx:456
 TQHistogramUtils.cxx:457
 TQHistogramUtils.cxx:458
 TQHistogramUtils.cxx:459
 TQHistogramUtils.cxx:460
 TQHistogramUtils.cxx:461
 TQHistogramUtils.cxx:462
 TQHistogramUtils.cxx:463
 TQHistogramUtils.cxx:464
 TQHistogramUtils.cxx:465
 TQHistogramUtils.cxx:466
 TQHistogramUtils.cxx:467
 TQHistogramUtils.cxx:468
 TQHistogramUtils.cxx:469
 TQHistogramUtils.cxx:470
 TQHistogramUtils.cxx:471
 TQHistogramUtils.cxx:472
 TQHistogramUtils.cxx:473
 TQHistogramUtils.cxx:474
 TQHistogramUtils.cxx:475
 TQHistogramUtils.cxx:476
 TQHistogramUtils.cxx:477
 TQHistogramUtils.cxx:478
 TQHistogramUtils.cxx:479
 TQHistogramUtils.cxx:480
 TQHistogramUtils.cxx:481
 TQHistogramUtils.cxx:482
 TQHistogramUtils.cxx:483
 TQHistogramUtils.cxx:484
 TQHistogramUtils.cxx:485
 TQHistogramUtils.cxx:486
 TQHistogramUtils.cxx:487
 TQHistogramUtils.cxx:488
 TQHistogramUtils.cxx:489
 TQHistogramUtils.cxx:490
 TQHistogramUtils.cxx:491
 TQHistogramUtils.cxx:492
 TQHistogramUtils.cxx:493
 TQHistogramUtils.cxx:494
 TQHistogramUtils.cxx:495
 TQHistogramUtils.cxx:496
 TQHistogramUtils.cxx:497
 TQHistogramUtils.cxx:498
 TQHistogramUtils.cxx:499
 TQHistogramUtils.cxx:500
 TQHistogramUtils.cxx:501
 TQHistogramUtils.cxx:502
 TQHistogramUtils.cxx:503
 TQHistogramUtils.cxx:504
 TQHistogramUtils.cxx:505
 TQHistogramUtils.cxx:506
 TQHistogramUtils.cxx:507
 TQHistogramUtils.cxx:508
 TQHistogramUtils.cxx:509
 TQHistogramUtils.cxx:510
 TQHistogramUtils.cxx:511
 TQHistogramUtils.cxx:512
 TQHistogramUtils.cxx:513
 TQHistogramUtils.cxx:514
 TQHistogramUtils.cxx:515
 TQHistogramUtils.cxx:516
 TQHistogramUtils.cxx:517
 TQHistogramUtils.cxx:518
 TQHistogramUtils.cxx:519
 TQHistogramUtils.cxx:520
 TQHistogramUtils.cxx:521
 TQHistogramUtils.cxx:522
 TQHistogramUtils.cxx:523
 TQHistogramUtils.cxx:524
 TQHistogramUtils.cxx:525
 TQHistogramUtils.cxx:526
 TQHistogramUtils.cxx:527
 TQHistogramUtils.cxx:528
 TQHistogramUtils.cxx:529
 TQHistogramUtils.cxx:530
 TQHistogramUtils.cxx:531
 TQHistogramUtils.cxx:532
 TQHistogramUtils.cxx:533
 TQHistogramUtils.cxx:534
 TQHistogramUtils.cxx:535
 TQHistogramUtils.cxx:536
 TQHistogramUtils.cxx:537
 TQHistogramUtils.cxx:538
 TQHistogramUtils.cxx:539
 TQHistogramUtils.cxx:540
 TQHistogramUtils.cxx:541
 TQHistogramUtils.cxx:542
 TQHistogramUtils.cxx:543
 TQHistogramUtils.cxx:544
 TQHistogramUtils.cxx:545
 TQHistogramUtils.cxx:546
 TQHistogramUtils.cxx:547
 TQHistogramUtils.cxx:548
 TQHistogramUtils.cxx:549
 TQHistogramUtils.cxx:550
 TQHistogramUtils.cxx:551
 TQHistogramUtils.cxx:552
 TQHistogramUtils.cxx:553
 TQHistogramUtils.cxx:554
 TQHistogramUtils.cxx:555
 TQHistogramUtils.cxx:556
 TQHistogramUtils.cxx:557
 TQHistogramUtils.cxx:558
 TQHistogramUtils.cxx:559
 TQHistogramUtils.cxx:560
 TQHistogramUtils.cxx:561
 TQHistogramUtils.cxx:562
 TQHistogramUtils.cxx:563
 TQHistogramUtils.cxx:564
 TQHistogramUtils.cxx:565
 TQHistogramUtils.cxx:566
 TQHistogramUtils.cxx:567
 TQHistogramUtils.cxx:568
 TQHistogramUtils.cxx:569
 TQHistogramUtils.cxx:570
 TQHistogramUtils.cxx:571
 TQHistogramUtils.cxx:572
 TQHistogramUtils.cxx:573
 TQHistogramUtils.cxx:574
 TQHistogramUtils.cxx:575
 TQHistogramUtils.cxx:576
 TQHistogramUtils.cxx:577
 TQHistogramUtils.cxx:578
 TQHistogramUtils.cxx:579
 TQHistogramUtils.cxx:580
 TQHistogramUtils.cxx:581
 TQHistogramUtils.cxx:582
 TQHistogramUtils.cxx:583
 TQHistogramUtils.cxx:584
 TQHistogramUtils.cxx:585
 TQHistogramUtils.cxx:586
 TQHistogramUtils.cxx:587
 TQHistogramUtils.cxx:588
 TQHistogramUtils.cxx:589
 TQHistogramUtils.cxx:590
 TQHistogramUtils.cxx:591
 TQHistogramUtils.cxx:592
 TQHistogramUtils.cxx:593
 TQHistogramUtils.cxx:594
 TQHistogramUtils.cxx:595
 TQHistogramUtils.cxx:596
 TQHistogramUtils.cxx:597
 TQHistogramUtils.cxx:598
 TQHistogramUtils.cxx:599
 TQHistogramUtils.cxx:600
 TQHistogramUtils.cxx:601
 TQHistogramUtils.cxx:602
 TQHistogramUtils.cxx:603
 TQHistogramUtils.cxx:604
 TQHistogramUtils.cxx:605
 TQHistogramUtils.cxx:606
 TQHistogramUtils.cxx:607
 TQHistogramUtils.cxx:608
 TQHistogramUtils.cxx:609
 TQHistogramUtils.cxx:610
 TQHistogramUtils.cxx:611
 TQHistogramUtils.cxx:612
 TQHistogramUtils.cxx:613
 TQHistogramUtils.cxx:614
 TQHistogramUtils.cxx:615
 TQHistogramUtils.cxx:616
 TQHistogramUtils.cxx:617
 TQHistogramUtils.cxx:618
 TQHistogramUtils.cxx:619
 TQHistogramUtils.cxx:620
 TQHistogramUtils.cxx:621
 TQHistogramUtils.cxx:622
 TQHistogramUtils.cxx:623
 TQHistogramUtils.cxx:624
 TQHistogramUtils.cxx:625
 TQHistogramUtils.cxx:626
 TQHistogramUtils.cxx:627
 TQHistogramUtils.cxx:628
 TQHistogramUtils.cxx:629
 TQHistogramUtils.cxx:630
 TQHistogramUtils.cxx:631
 TQHistogramUtils.cxx:632
 TQHistogramUtils.cxx:633
 TQHistogramUtils.cxx:634
 TQHistogramUtils.cxx:635
 TQHistogramUtils.cxx:636
 TQHistogramUtils.cxx:637
 TQHistogramUtils.cxx:638
 TQHistogramUtils.cxx:639
 TQHistogramUtils.cxx:640
 TQHistogramUtils.cxx:641
 TQHistogramUtils.cxx:642
 TQHistogramUtils.cxx:643
 TQHistogramUtils.cxx:644
 TQHistogramUtils.cxx:645
 TQHistogramUtils.cxx:646
 TQHistogramUtils.cxx:647
 TQHistogramUtils.cxx:648
 TQHistogramUtils.cxx:649
 TQHistogramUtils.cxx:650
 TQHistogramUtils.cxx:651
 TQHistogramUtils.cxx:652
 TQHistogramUtils.cxx:653
 TQHistogramUtils.cxx:654
 TQHistogramUtils.cxx:655
 TQHistogramUtils.cxx:656
 TQHistogramUtils.cxx:657
 TQHistogramUtils.cxx:658
 TQHistogramUtils.cxx:659
 TQHistogramUtils.cxx:660
 TQHistogramUtils.cxx:661
 TQHistogramUtils.cxx:662
 TQHistogramUtils.cxx:663
 TQHistogramUtils.cxx:664
 TQHistogramUtils.cxx:665
 TQHistogramUtils.cxx:666
 TQHistogramUtils.cxx:667
 TQHistogramUtils.cxx:668
 TQHistogramUtils.cxx:669
 TQHistogramUtils.cxx:670
 TQHistogramUtils.cxx:671
 TQHistogramUtils.cxx:672
 TQHistogramUtils.cxx:673
 TQHistogramUtils.cxx:674
 TQHistogramUtils.cxx:675
 TQHistogramUtils.cxx:676
 TQHistogramUtils.cxx:677
 TQHistogramUtils.cxx:678
 TQHistogramUtils.cxx:679
 TQHistogramUtils.cxx:680
 TQHistogramUtils.cxx:681
 TQHistogramUtils.cxx:682
 TQHistogramUtils.cxx:683
 TQHistogramUtils.cxx:684
 TQHistogramUtils.cxx:685
 TQHistogramUtils.cxx:686
 TQHistogramUtils.cxx:687
 TQHistogramUtils.cxx:688
 TQHistogramUtils.cxx:689
 TQHistogramUtils.cxx:690
 TQHistogramUtils.cxx:691
 TQHistogramUtils.cxx:692
 TQHistogramUtils.cxx:693
 TQHistogramUtils.cxx:694
 TQHistogramUtils.cxx:695
 TQHistogramUtils.cxx:696
 TQHistogramUtils.cxx:697
 TQHistogramUtils.cxx:698
 TQHistogramUtils.cxx:699
 TQHistogramUtils.cxx:700
 TQHistogramUtils.cxx:701
 TQHistogramUtils.cxx:702
 TQHistogramUtils.cxx:703
 TQHistogramUtils.cxx:704
 TQHistogramUtils.cxx:705
 TQHistogramUtils.cxx:706
 TQHistogramUtils.cxx:707
 TQHistogramUtils.cxx:708
 TQHistogramUtils.cxx:709
 TQHistogramUtils.cxx:710
 TQHistogramUtils.cxx:711
 TQHistogramUtils.cxx:712
 TQHistogramUtils.cxx:713
 TQHistogramUtils.cxx:714
 TQHistogramUtils.cxx:715
 TQHistogramUtils.cxx:716
 TQHistogramUtils.cxx:717
 TQHistogramUtils.cxx:718
 TQHistogramUtils.cxx:719
 TQHistogramUtils.cxx:720
 TQHistogramUtils.cxx:721
 TQHistogramUtils.cxx:722
 TQHistogramUtils.cxx:723
 TQHistogramUtils.cxx:724
 TQHistogramUtils.cxx:725
 TQHistogramUtils.cxx:726
 TQHistogramUtils.cxx:727
 TQHistogramUtils.cxx:728
 TQHistogramUtils.cxx:729
 TQHistogramUtils.cxx:730
 TQHistogramUtils.cxx:731
 TQHistogramUtils.cxx:732
 TQHistogramUtils.cxx:733
 TQHistogramUtils.cxx:734
 TQHistogramUtils.cxx:735
 TQHistogramUtils.cxx:736
 TQHistogramUtils.cxx:737
 TQHistogramUtils.cxx:738
 TQHistogramUtils.cxx:739
 TQHistogramUtils.cxx:740
 TQHistogramUtils.cxx:741
 TQHistogramUtils.cxx:742
 TQHistogramUtils.cxx:743
 TQHistogramUtils.cxx:744
 TQHistogramUtils.cxx:745
 TQHistogramUtils.cxx:746
 TQHistogramUtils.cxx:747
 TQHistogramUtils.cxx:748
 TQHistogramUtils.cxx:749
 TQHistogramUtils.cxx:750
 TQHistogramUtils.cxx:751
 TQHistogramUtils.cxx:752
 TQHistogramUtils.cxx:753
 TQHistogramUtils.cxx:754
 TQHistogramUtils.cxx:755
 TQHistogramUtils.cxx:756
 TQHistogramUtils.cxx:757
 TQHistogramUtils.cxx:758
 TQHistogramUtils.cxx:759
 TQHistogramUtils.cxx:760
 TQHistogramUtils.cxx:761
 TQHistogramUtils.cxx:762
 TQHistogramUtils.cxx:763
 TQHistogramUtils.cxx:764
 TQHistogramUtils.cxx:765
 TQHistogramUtils.cxx:766
 TQHistogramUtils.cxx:767
 TQHistogramUtils.cxx:768
 TQHistogramUtils.cxx:769
 TQHistogramUtils.cxx:770
 TQHistogramUtils.cxx:771
 TQHistogramUtils.cxx:772
 TQHistogramUtils.cxx:773
 TQHistogramUtils.cxx:774
 TQHistogramUtils.cxx:775
 TQHistogramUtils.cxx:776
 TQHistogramUtils.cxx:777
 TQHistogramUtils.cxx:778
 TQHistogramUtils.cxx:779
 TQHistogramUtils.cxx:780
 TQHistogramUtils.cxx:781
 TQHistogramUtils.cxx:782
 TQHistogramUtils.cxx:783
 TQHistogramUtils.cxx:784
 TQHistogramUtils.cxx:785
 TQHistogramUtils.cxx:786
 TQHistogramUtils.cxx:787
 TQHistogramUtils.cxx:788
 TQHistogramUtils.cxx:789
 TQHistogramUtils.cxx:790
 TQHistogramUtils.cxx:791
 TQHistogramUtils.cxx:792
 TQHistogramUtils.cxx:793
 TQHistogramUtils.cxx:794
 TQHistogramUtils.cxx:795
 TQHistogramUtils.cxx:796
 TQHistogramUtils.cxx:797
 TQHistogramUtils.cxx:798
 TQHistogramUtils.cxx:799
 TQHistogramUtils.cxx:800
 TQHistogramUtils.cxx:801
 TQHistogramUtils.cxx:802
 TQHistogramUtils.cxx:803
 TQHistogramUtils.cxx:804
 TQHistogramUtils.cxx:805
 TQHistogramUtils.cxx:806
 TQHistogramUtils.cxx:807
 TQHistogramUtils.cxx:808
 TQHistogramUtils.cxx:809
 TQHistogramUtils.cxx:810
 TQHistogramUtils.cxx:811
 TQHistogramUtils.cxx:812
 TQHistogramUtils.cxx:813
 TQHistogramUtils.cxx:814
 TQHistogramUtils.cxx:815
 TQHistogramUtils.cxx:816
 TQHistogramUtils.cxx:817
 TQHistogramUtils.cxx:818
 TQHistogramUtils.cxx:819
 TQHistogramUtils.cxx:820
 TQHistogramUtils.cxx:821
 TQHistogramUtils.cxx:822
 TQHistogramUtils.cxx:823
 TQHistogramUtils.cxx:824
 TQHistogramUtils.cxx:825
 TQHistogramUtils.cxx:826
 TQHistogramUtils.cxx:827
 TQHistogramUtils.cxx:828
 TQHistogramUtils.cxx:829
 TQHistogramUtils.cxx:830
 TQHistogramUtils.cxx:831
 TQHistogramUtils.cxx:832
 TQHistogramUtils.cxx:833
 TQHistogramUtils.cxx:834
 TQHistogramUtils.cxx:835
 TQHistogramUtils.cxx:836
 TQHistogramUtils.cxx:837
 TQHistogramUtils.cxx:838
 TQHistogramUtils.cxx:839
 TQHistogramUtils.cxx:840
 TQHistogramUtils.cxx:841
 TQHistogramUtils.cxx:842
 TQHistogramUtils.cxx:843
 TQHistogramUtils.cxx:844
 TQHistogramUtils.cxx:845
 TQHistogramUtils.cxx:846
 TQHistogramUtils.cxx:847
 TQHistogramUtils.cxx:848
 TQHistogramUtils.cxx:849
 TQHistogramUtils.cxx:850
 TQHistogramUtils.cxx:851
 TQHistogramUtils.cxx:852
 TQHistogramUtils.cxx:853
 TQHistogramUtils.cxx:854
 TQHistogramUtils.cxx:855
 TQHistogramUtils.cxx:856
 TQHistogramUtils.cxx:857
 TQHistogramUtils.cxx:858
 TQHistogramUtils.cxx:859
 TQHistogramUtils.cxx:860
 TQHistogramUtils.cxx:861
 TQHistogramUtils.cxx:862
 TQHistogramUtils.cxx:863
 TQHistogramUtils.cxx:864
 TQHistogramUtils.cxx:865
 TQHistogramUtils.cxx:866
 TQHistogramUtils.cxx:867
 TQHistogramUtils.cxx:868
 TQHistogramUtils.cxx:869
 TQHistogramUtils.cxx:870
 TQHistogramUtils.cxx:871
 TQHistogramUtils.cxx:872
 TQHistogramUtils.cxx:873
 TQHistogramUtils.cxx:874
 TQHistogramUtils.cxx:875
 TQHistogramUtils.cxx:876
 TQHistogramUtils.cxx:877
 TQHistogramUtils.cxx:878
 TQHistogramUtils.cxx:879
 TQHistogramUtils.cxx:880
 TQHistogramUtils.cxx:881
 TQHistogramUtils.cxx:882
 TQHistogramUtils.cxx:883
 TQHistogramUtils.cxx:884
 TQHistogramUtils.cxx:885
 TQHistogramUtils.cxx:886
 TQHistogramUtils.cxx:887
 TQHistogramUtils.cxx:888
 TQHistogramUtils.cxx:889
 TQHistogramUtils.cxx:890
 TQHistogramUtils.cxx:891
 TQHistogramUtils.cxx:892
 TQHistogramUtils.cxx:893
 TQHistogramUtils.cxx:894
 TQHistogramUtils.cxx:895
 TQHistogramUtils.cxx:896
 TQHistogramUtils.cxx:897
 TQHistogramUtils.cxx:898
 TQHistogramUtils.cxx:899
 TQHistogramUtils.cxx:900
 TQHistogramUtils.cxx:901
 TQHistogramUtils.cxx:902
 TQHistogramUtils.cxx:903
 TQHistogramUtils.cxx:904
 TQHistogramUtils.cxx:905
 TQHistogramUtils.cxx:906
 TQHistogramUtils.cxx:907
 TQHistogramUtils.cxx:908
 TQHistogramUtils.cxx:909
 TQHistogramUtils.cxx:910
 TQHistogramUtils.cxx:911
 TQHistogramUtils.cxx:912
 TQHistogramUtils.cxx:913
 TQHistogramUtils.cxx:914
 TQHistogramUtils.cxx:915
 TQHistogramUtils.cxx:916
 TQHistogramUtils.cxx:917
 TQHistogramUtils.cxx:918
 TQHistogramUtils.cxx:919
 TQHistogramUtils.cxx:920
 TQHistogramUtils.cxx:921
 TQHistogramUtils.cxx:922
 TQHistogramUtils.cxx:923
 TQHistogramUtils.cxx:924
 TQHistogramUtils.cxx:925
 TQHistogramUtils.cxx:926
 TQHistogramUtils.cxx:927
 TQHistogramUtils.cxx:928
 TQHistogramUtils.cxx:929
 TQHistogramUtils.cxx:930
 TQHistogramUtils.cxx:931
 TQHistogramUtils.cxx:932
 TQHistogramUtils.cxx:933
 TQHistogramUtils.cxx:934
 TQHistogramUtils.cxx:935
 TQHistogramUtils.cxx:936
 TQHistogramUtils.cxx:937
 TQHistogramUtils.cxx:938
 TQHistogramUtils.cxx:939
 TQHistogramUtils.cxx:940
 TQHistogramUtils.cxx:941
 TQHistogramUtils.cxx:942
 TQHistogramUtils.cxx:943
 TQHistogramUtils.cxx:944
 TQHistogramUtils.cxx:945
 TQHistogramUtils.cxx:946
 TQHistogramUtils.cxx:947
 TQHistogramUtils.cxx:948
 TQHistogramUtils.cxx:949
 TQHistogramUtils.cxx:950
 TQHistogramUtils.cxx:951
 TQHistogramUtils.cxx:952
 TQHistogramUtils.cxx:953
 TQHistogramUtils.cxx:954
 TQHistogramUtils.cxx:955
 TQHistogramUtils.cxx:956
 TQHistogramUtils.cxx:957
 TQHistogramUtils.cxx:958
 TQHistogramUtils.cxx:959
 TQHistogramUtils.cxx:960
 TQHistogramUtils.cxx:961
 TQHistogramUtils.cxx:962
 TQHistogramUtils.cxx:963
 TQHistogramUtils.cxx:964
 TQHistogramUtils.cxx:965
 TQHistogramUtils.cxx:966
 TQHistogramUtils.cxx:967
 TQHistogramUtils.cxx:968
 TQHistogramUtils.cxx:969
 TQHistogramUtils.cxx:970
 TQHistogramUtils.cxx:971
 TQHistogramUtils.cxx:972
 TQHistogramUtils.cxx:973
 TQHistogramUtils.cxx:974
 TQHistogramUtils.cxx:975
 TQHistogramUtils.cxx:976
 TQHistogramUtils.cxx:977
 TQHistogramUtils.cxx:978
 TQHistogramUtils.cxx:979
 TQHistogramUtils.cxx:980
 TQHistogramUtils.cxx:981
 TQHistogramUtils.cxx:982
 TQHistogramUtils.cxx:983
 TQHistogramUtils.cxx:984
 TQHistogramUtils.cxx:985
 TQHistogramUtils.cxx:986
 TQHistogramUtils.cxx:987
 TQHistogramUtils.cxx:988
 TQHistogramUtils.cxx:989
 TQHistogramUtils.cxx:990
 TQHistogramUtils.cxx:991
 TQHistogramUtils.cxx:992
 TQHistogramUtils.cxx:993
 TQHistogramUtils.cxx:994
 TQHistogramUtils.cxx:995
 TQHistogramUtils.cxx:996
 TQHistogramUtils.cxx:997
 TQHistogramUtils.cxx:998
 TQHistogramUtils.cxx:999
 TQHistogramUtils.cxx:1000
 TQHistogramUtils.cxx:1001
 TQHistogramUtils.cxx:1002
 TQHistogramUtils.cxx:1003
 TQHistogramUtils.cxx:1004
 TQHistogramUtils.cxx:1005
 TQHistogramUtils.cxx:1006
 TQHistogramUtils.cxx:1007
 TQHistogramUtils.cxx:1008
 TQHistogramUtils.cxx:1009
 TQHistogramUtils.cxx:1010
 TQHistogramUtils.cxx:1011
 TQHistogramUtils.cxx:1012
 TQHistogramUtils.cxx:1013
 TQHistogramUtils.cxx:1014
 TQHistogramUtils.cxx:1015
 TQHistogramUtils.cxx:1016
 TQHistogramUtils.cxx:1017
 TQHistogramUtils.cxx:1018
 TQHistogramUtils.cxx:1019
 TQHistogramUtils.cxx:1020
 TQHistogramUtils.cxx:1021
 TQHistogramUtils.cxx:1022
 TQHistogramUtils.cxx:1023
 TQHistogramUtils.cxx:1024
 TQHistogramUtils.cxx:1025
 TQHistogramUtils.cxx:1026
 TQHistogramUtils.cxx:1027
 TQHistogramUtils.cxx:1028
 TQHistogramUtils.cxx:1029
 TQHistogramUtils.cxx:1030
 TQHistogramUtils.cxx:1031
 TQHistogramUtils.cxx:1032
 TQHistogramUtils.cxx:1033
 TQHistogramUtils.cxx:1034
 TQHistogramUtils.cxx:1035
 TQHistogramUtils.cxx:1036
 TQHistogramUtils.cxx:1037
 TQHistogramUtils.cxx:1038
 TQHistogramUtils.cxx:1039
 TQHistogramUtils.cxx:1040
 TQHistogramUtils.cxx:1041
 TQHistogramUtils.cxx:1042
 TQHistogramUtils.cxx:1043
 TQHistogramUtils.cxx:1044
 TQHistogramUtils.cxx:1045
 TQHistogramUtils.cxx:1046
 TQHistogramUtils.cxx:1047
 TQHistogramUtils.cxx:1048
 TQHistogramUtils.cxx:1049
 TQHistogramUtils.cxx:1050
 TQHistogramUtils.cxx:1051
 TQHistogramUtils.cxx:1052
 TQHistogramUtils.cxx:1053
 TQHistogramUtils.cxx:1054
 TQHistogramUtils.cxx:1055
 TQHistogramUtils.cxx:1056
 TQHistogramUtils.cxx:1057
 TQHistogramUtils.cxx:1058
 TQHistogramUtils.cxx:1059
 TQHistogramUtils.cxx:1060
 TQHistogramUtils.cxx:1061
 TQHistogramUtils.cxx:1062
 TQHistogramUtils.cxx:1063
 TQHistogramUtils.cxx:1064
 TQHistogramUtils.cxx:1065
 TQHistogramUtils.cxx:1066
 TQHistogramUtils.cxx:1067
 TQHistogramUtils.cxx:1068
 TQHistogramUtils.cxx:1069
 TQHistogramUtils.cxx:1070
 TQHistogramUtils.cxx:1071
 TQHistogramUtils.cxx:1072
 TQHistogramUtils.cxx:1073
 TQHistogramUtils.cxx:1074
 TQHistogramUtils.cxx:1075
 TQHistogramUtils.cxx:1076
 TQHistogramUtils.cxx:1077
 TQHistogramUtils.cxx:1078
 TQHistogramUtils.cxx:1079
 TQHistogramUtils.cxx:1080
 TQHistogramUtils.cxx:1081
 TQHistogramUtils.cxx:1082
 TQHistogramUtils.cxx:1083
 TQHistogramUtils.cxx:1084
 TQHistogramUtils.cxx:1085
 TQHistogramUtils.cxx:1086
 TQHistogramUtils.cxx:1087
 TQHistogramUtils.cxx:1088
 TQHistogramUtils.cxx:1089
 TQHistogramUtils.cxx:1090
 TQHistogramUtils.cxx:1091
 TQHistogramUtils.cxx:1092
 TQHistogramUtils.cxx:1093
 TQHistogramUtils.cxx:1094
 TQHistogramUtils.cxx:1095
 TQHistogramUtils.cxx:1096
 TQHistogramUtils.cxx:1097
 TQHistogramUtils.cxx:1098
 TQHistogramUtils.cxx:1099
 TQHistogramUtils.cxx:1100
 TQHistogramUtils.cxx:1101
 TQHistogramUtils.cxx:1102
 TQHistogramUtils.cxx:1103
 TQHistogramUtils.cxx:1104
 TQHistogramUtils.cxx:1105
 TQHistogramUtils.cxx:1106
 TQHistogramUtils.cxx:1107
 TQHistogramUtils.cxx:1108
 TQHistogramUtils.cxx:1109
 TQHistogramUtils.cxx:1110
 TQHistogramUtils.cxx:1111
 TQHistogramUtils.cxx:1112
 TQHistogramUtils.cxx:1113
 TQHistogramUtils.cxx:1114
 TQHistogramUtils.cxx:1115
 TQHistogramUtils.cxx:1116
 TQHistogramUtils.cxx:1117
 TQHistogramUtils.cxx:1118
 TQHistogramUtils.cxx:1119
 TQHistogramUtils.cxx:1120
 TQHistogramUtils.cxx:1121
 TQHistogramUtils.cxx:1122
 TQHistogramUtils.cxx:1123
 TQHistogramUtils.cxx:1124
 TQHistogramUtils.cxx:1125
 TQHistogramUtils.cxx:1126
 TQHistogramUtils.cxx:1127
 TQHistogramUtils.cxx:1128
 TQHistogramUtils.cxx:1129
 TQHistogramUtils.cxx:1130
 TQHistogramUtils.cxx:1131
 TQHistogramUtils.cxx:1132
 TQHistogramUtils.cxx:1133
 TQHistogramUtils.cxx:1134
 TQHistogramUtils.cxx:1135
 TQHistogramUtils.cxx:1136
 TQHistogramUtils.cxx:1137
 TQHistogramUtils.cxx:1138
 TQHistogramUtils.cxx:1139
 TQHistogramUtils.cxx:1140
 TQHistogramUtils.cxx:1141
 TQHistogramUtils.cxx:1142
 TQHistogramUtils.cxx:1143
 TQHistogramUtils.cxx:1144
 TQHistogramUtils.cxx:1145
 TQHistogramUtils.cxx:1146
 TQHistogramUtils.cxx:1147
 TQHistogramUtils.cxx:1148
 TQHistogramUtils.cxx:1149
 TQHistogramUtils.cxx:1150
 TQHistogramUtils.cxx:1151
 TQHistogramUtils.cxx:1152
 TQHistogramUtils.cxx:1153
 TQHistogramUtils.cxx:1154
 TQHistogramUtils.cxx:1155
 TQHistogramUtils.cxx:1156
 TQHistogramUtils.cxx:1157
 TQHistogramUtils.cxx:1158
 TQHistogramUtils.cxx:1159
 TQHistogramUtils.cxx:1160
 TQHistogramUtils.cxx:1161
 TQHistogramUtils.cxx:1162
 TQHistogramUtils.cxx:1163
 TQHistogramUtils.cxx:1164
 TQHistogramUtils.cxx:1165
 TQHistogramUtils.cxx:1166
 TQHistogramUtils.cxx:1167
 TQHistogramUtils.cxx:1168
 TQHistogramUtils.cxx:1169
 TQHistogramUtils.cxx:1170
 TQHistogramUtils.cxx:1171
 TQHistogramUtils.cxx:1172
 TQHistogramUtils.cxx:1173
 TQHistogramUtils.cxx:1174
 TQHistogramUtils.cxx:1175
 TQHistogramUtils.cxx:1176
 TQHistogramUtils.cxx:1177
 TQHistogramUtils.cxx:1178
 TQHistogramUtils.cxx:1179
 TQHistogramUtils.cxx:1180
 TQHistogramUtils.cxx:1181
 TQHistogramUtils.cxx:1182
 TQHistogramUtils.cxx:1183
 TQHistogramUtils.cxx:1184
 TQHistogramUtils.cxx:1185
 TQHistogramUtils.cxx:1186
 TQHistogramUtils.cxx:1187
 TQHistogramUtils.cxx:1188
 TQHistogramUtils.cxx:1189
 TQHistogramUtils.cxx:1190
 TQHistogramUtils.cxx:1191
 TQHistogramUtils.cxx:1192
 TQHistogramUtils.cxx:1193
 TQHistogramUtils.cxx:1194
 TQHistogramUtils.cxx:1195
 TQHistogramUtils.cxx:1196
 TQHistogramUtils.cxx:1197
 TQHistogramUtils.cxx:1198
 TQHistogramUtils.cxx:1199
 TQHistogramUtils.cxx:1200
 TQHistogramUtils.cxx:1201
 TQHistogramUtils.cxx:1202
 TQHistogramUtils.cxx:1203
 TQHistogramUtils.cxx:1204
 TQHistogramUtils.cxx:1205
 TQHistogramUtils.cxx:1206
 TQHistogramUtils.cxx:1207
 TQHistogramUtils.cxx:1208
 TQHistogramUtils.cxx:1209
 TQHistogramUtils.cxx:1210
 TQHistogramUtils.cxx:1211
 TQHistogramUtils.cxx:1212
 TQHistogramUtils.cxx:1213
 TQHistogramUtils.cxx:1214
 TQHistogramUtils.cxx:1215
 TQHistogramUtils.cxx:1216
 TQHistogramUtils.cxx:1217
 TQHistogramUtils.cxx:1218
 TQHistogramUtils.cxx:1219
 TQHistogramUtils.cxx:1220
 TQHistogramUtils.cxx:1221
 TQHistogramUtils.cxx:1222
 TQHistogramUtils.cxx:1223
 TQHistogramUtils.cxx:1224
 TQHistogramUtils.cxx:1225
 TQHistogramUtils.cxx:1226
 TQHistogramUtils.cxx:1227
 TQHistogramUtils.cxx:1228
 TQHistogramUtils.cxx:1229
 TQHistogramUtils.cxx:1230
 TQHistogramUtils.cxx:1231
 TQHistogramUtils.cxx:1232
 TQHistogramUtils.cxx:1233
 TQHistogramUtils.cxx:1234
 TQHistogramUtils.cxx:1235
 TQHistogramUtils.cxx:1236
 TQHistogramUtils.cxx:1237
 TQHistogramUtils.cxx:1238
 TQHistogramUtils.cxx:1239
 TQHistogramUtils.cxx:1240
 TQHistogramUtils.cxx:1241
 TQHistogramUtils.cxx:1242
 TQHistogramUtils.cxx:1243
 TQHistogramUtils.cxx:1244
 TQHistogramUtils.cxx:1245
 TQHistogramUtils.cxx:1246
 TQHistogramUtils.cxx:1247
 TQHistogramUtils.cxx:1248
 TQHistogramUtils.cxx:1249
 TQHistogramUtils.cxx:1250
 TQHistogramUtils.cxx:1251
 TQHistogramUtils.cxx:1252
 TQHistogramUtils.cxx:1253
 TQHistogramUtils.cxx:1254
 TQHistogramUtils.cxx:1255
 TQHistogramUtils.cxx:1256
 TQHistogramUtils.cxx:1257
 TQHistogramUtils.cxx:1258
 TQHistogramUtils.cxx:1259
 TQHistogramUtils.cxx:1260
 TQHistogramUtils.cxx:1261
 TQHistogramUtils.cxx:1262
 TQHistogramUtils.cxx:1263
 TQHistogramUtils.cxx:1264
 TQHistogramUtils.cxx:1265
 TQHistogramUtils.cxx:1266
 TQHistogramUtils.cxx:1267
 TQHistogramUtils.cxx:1268
 TQHistogramUtils.cxx:1269
 TQHistogramUtils.cxx:1270
 TQHistogramUtils.cxx:1271
 TQHistogramUtils.cxx:1272
 TQHistogramUtils.cxx:1273
 TQHistogramUtils.cxx:1274
 TQHistogramUtils.cxx:1275
 TQHistogramUtils.cxx:1276
 TQHistogramUtils.cxx:1277
 TQHistogramUtils.cxx:1278
 TQHistogramUtils.cxx:1279
 TQHistogramUtils.cxx:1280
 TQHistogramUtils.cxx:1281
 TQHistogramUtils.cxx:1282
 TQHistogramUtils.cxx:1283
 TQHistogramUtils.cxx:1284
 TQHistogramUtils.cxx:1285
 TQHistogramUtils.cxx:1286
 TQHistogramUtils.cxx:1287
 TQHistogramUtils.cxx:1288
 TQHistogramUtils.cxx:1289
 TQHistogramUtils.cxx:1290
 TQHistogramUtils.cxx:1291
 TQHistogramUtils.cxx:1292
 TQHistogramUtils.cxx:1293
 TQHistogramUtils.cxx:1294
 TQHistogramUtils.cxx:1295
 TQHistogramUtils.cxx:1296
 TQHistogramUtils.cxx:1297
 TQHistogramUtils.cxx:1298
 TQHistogramUtils.cxx:1299
 TQHistogramUtils.cxx:1300
 TQHistogramUtils.cxx:1301
 TQHistogramUtils.cxx:1302
 TQHistogramUtils.cxx:1303
 TQHistogramUtils.cxx:1304
 TQHistogramUtils.cxx:1305
 TQHistogramUtils.cxx:1306
 TQHistogramUtils.cxx:1307
 TQHistogramUtils.cxx:1308
 TQHistogramUtils.cxx:1309
 TQHistogramUtils.cxx:1310
 TQHistogramUtils.cxx:1311
 TQHistogramUtils.cxx:1312
 TQHistogramUtils.cxx:1313
 TQHistogramUtils.cxx:1314
 TQHistogramUtils.cxx:1315
 TQHistogramUtils.cxx:1316
 TQHistogramUtils.cxx:1317
 TQHistogramUtils.cxx:1318
 TQHistogramUtils.cxx:1319
 TQHistogramUtils.cxx:1320
 TQHistogramUtils.cxx:1321
 TQHistogramUtils.cxx:1322
 TQHistogramUtils.cxx:1323
 TQHistogramUtils.cxx:1324
 TQHistogramUtils.cxx:1325
 TQHistogramUtils.cxx:1326
 TQHistogramUtils.cxx:1327
 TQHistogramUtils.cxx:1328
 TQHistogramUtils.cxx:1329
 TQHistogramUtils.cxx:1330
 TQHistogramUtils.cxx:1331
 TQHistogramUtils.cxx:1332
 TQHistogramUtils.cxx:1333
 TQHistogramUtils.cxx:1334
 TQHistogramUtils.cxx:1335
 TQHistogramUtils.cxx:1336
 TQHistogramUtils.cxx:1337
 TQHistogramUtils.cxx:1338
 TQHistogramUtils.cxx:1339
 TQHistogramUtils.cxx:1340
 TQHistogramUtils.cxx:1341
 TQHistogramUtils.cxx:1342
 TQHistogramUtils.cxx:1343
 TQHistogramUtils.cxx:1344
 TQHistogramUtils.cxx:1345
 TQHistogramUtils.cxx:1346
 TQHistogramUtils.cxx:1347
 TQHistogramUtils.cxx:1348
 TQHistogramUtils.cxx:1349
 TQHistogramUtils.cxx:1350
 TQHistogramUtils.cxx:1351
 TQHistogramUtils.cxx:1352
 TQHistogramUtils.cxx:1353
 TQHistogramUtils.cxx:1354
 TQHistogramUtils.cxx:1355
 TQHistogramUtils.cxx:1356
 TQHistogramUtils.cxx:1357
 TQHistogramUtils.cxx:1358
 TQHistogramUtils.cxx:1359
 TQHistogramUtils.cxx:1360
 TQHistogramUtils.cxx:1361
 TQHistogramUtils.cxx:1362
 TQHistogramUtils.cxx:1363
 TQHistogramUtils.cxx:1364
 TQHistogramUtils.cxx:1365
 TQHistogramUtils.cxx:1366
 TQHistogramUtils.cxx:1367
 TQHistogramUtils.cxx:1368
 TQHistogramUtils.cxx:1369
 TQHistogramUtils.cxx:1370
 TQHistogramUtils.cxx:1371
 TQHistogramUtils.cxx:1372
 TQHistogramUtils.cxx:1373
 TQHistogramUtils.cxx:1374
 TQHistogramUtils.cxx:1375
 TQHistogramUtils.cxx:1376
 TQHistogramUtils.cxx:1377
 TQHistogramUtils.cxx:1378
 TQHistogramUtils.cxx:1379
 TQHistogramUtils.cxx:1380
 TQHistogramUtils.cxx:1381
 TQHistogramUtils.cxx:1382
 TQHistogramUtils.cxx:1383
 TQHistogramUtils.cxx:1384
 TQHistogramUtils.cxx:1385
 TQHistogramUtils.cxx:1386
 TQHistogramUtils.cxx:1387
 TQHistogramUtils.cxx:1388
 TQHistogramUtils.cxx:1389
 TQHistogramUtils.cxx:1390
 TQHistogramUtils.cxx:1391
 TQHistogramUtils.cxx:1392
 TQHistogramUtils.cxx:1393
 TQHistogramUtils.cxx:1394
 TQHistogramUtils.cxx:1395
 TQHistogramUtils.cxx:1396
 TQHistogramUtils.cxx:1397
 TQHistogramUtils.cxx:1398
 TQHistogramUtils.cxx:1399
 TQHistogramUtils.cxx:1400
 TQHistogramUtils.cxx:1401
 TQHistogramUtils.cxx:1402
 TQHistogramUtils.cxx:1403
 TQHistogramUtils.cxx:1404
 TQHistogramUtils.cxx:1405
 TQHistogramUtils.cxx:1406
 TQHistogramUtils.cxx:1407
 TQHistogramUtils.cxx:1408
 TQHistogramUtils.cxx:1409
 TQHistogramUtils.cxx:1410
 TQHistogramUtils.cxx:1411
 TQHistogramUtils.cxx:1412
 TQHistogramUtils.cxx:1413
 TQHistogramUtils.cxx:1414
 TQHistogramUtils.cxx:1415
 TQHistogramUtils.cxx:1416
 TQHistogramUtils.cxx:1417
 TQHistogramUtils.cxx:1418
 TQHistogramUtils.cxx:1419
 TQHistogramUtils.cxx:1420
 TQHistogramUtils.cxx:1421
 TQHistogramUtils.cxx:1422
 TQHistogramUtils.cxx:1423
 TQHistogramUtils.cxx:1424
 TQHistogramUtils.cxx:1425
 TQHistogramUtils.cxx:1426
 TQHistogramUtils.cxx:1427
 TQHistogramUtils.cxx:1428
 TQHistogramUtils.cxx:1429
 TQHistogramUtils.cxx:1430
 TQHistogramUtils.cxx:1431
 TQHistogramUtils.cxx:1432
 TQHistogramUtils.cxx:1433
 TQHistogramUtils.cxx:1434
 TQHistogramUtils.cxx:1435
 TQHistogramUtils.cxx:1436
 TQHistogramUtils.cxx:1437
 TQHistogramUtils.cxx:1438
 TQHistogramUtils.cxx:1439
 TQHistogramUtils.cxx:1440
 TQHistogramUtils.cxx:1441
 TQHistogramUtils.cxx:1442
 TQHistogramUtils.cxx:1443
 TQHistogramUtils.cxx:1444
 TQHistogramUtils.cxx:1445
 TQHistogramUtils.cxx:1446
 TQHistogramUtils.cxx:1447
 TQHistogramUtils.cxx:1448
 TQHistogramUtils.cxx:1449
 TQHistogramUtils.cxx:1450
 TQHistogramUtils.cxx:1451
 TQHistogramUtils.cxx:1452
 TQHistogramUtils.cxx:1453
 TQHistogramUtils.cxx:1454
 TQHistogramUtils.cxx:1455
 TQHistogramUtils.cxx:1456
 TQHistogramUtils.cxx:1457
 TQHistogramUtils.cxx:1458
 TQHistogramUtils.cxx:1459
 TQHistogramUtils.cxx:1460
 TQHistogramUtils.cxx:1461
 TQHistogramUtils.cxx:1462
 TQHistogramUtils.cxx:1463
 TQHistogramUtils.cxx:1464
 TQHistogramUtils.cxx:1465
 TQHistogramUtils.cxx:1466
 TQHistogramUtils.cxx:1467
 TQHistogramUtils.cxx:1468
 TQHistogramUtils.cxx:1469
 TQHistogramUtils.cxx:1470
 TQHistogramUtils.cxx:1471
 TQHistogramUtils.cxx:1472
 TQHistogramUtils.cxx:1473
 TQHistogramUtils.cxx:1474
 TQHistogramUtils.cxx:1475
 TQHistogramUtils.cxx:1476
 TQHistogramUtils.cxx:1477
 TQHistogramUtils.cxx:1478
 TQHistogramUtils.cxx:1479
 TQHistogramUtils.cxx:1480
 TQHistogramUtils.cxx:1481
 TQHistogramUtils.cxx:1482
 TQHistogramUtils.cxx:1483
 TQHistogramUtils.cxx:1484
 TQHistogramUtils.cxx:1485
 TQHistogramUtils.cxx:1486
 TQHistogramUtils.cxx:1487
 TQHistogramUtils.cxx:1488
 TQHistogramUtils.cxx:1489
 TQHistogramUtils.cxx:1490
 TQHistogramUtils.cxx:1491
 TQHistogramUtils.cxx:1492
 TQHistogramUtils.cxx:1493
 TQHistogramUtils.cxx:1494
 TQHistogramUtils.cxx:1495
 TQHistogramUtils.cxx:1496
 TQHistogramUtils.cxx:1497
 TQHistogramUtils.cxx:1498
 TQHistogramUtils.cxx:1499
 TQHistogramUtils.cxx:1500
 TQHistogramUtils.cxx:1501
 TQHistogramUtils.cxx:1502
 TQHistogramUtils.cxx:1503
 TQHistogramUtils.cxx:1504
 TQHistogramUtils.cxx:1505
 TQHistogramUtils.cxx:1506
 TQHistogramUtils.cxx:1507
 TQHistogramUtils.cxx:1508
 TQHistogramUtils.cxx:1509
 TQHistogramUtils.cxx:1510
 TQHistogramUtils.cxx:1511
 TQHistogramUtils.cxx:1512
 TQHistogramUtils.cxx:1513
 TQHistogramUtils.cxx:1514
 TQHistogramUtils.cxx:1515
 TQHistogramUtils.cxx:1516
 TQHistogramUtils.cxx:1517
 TQHistogramUtils.cxx:1518
 TQHistogramUtils.cxx:1519
 TQHistogramUtils.cxx:1520
 TQHistogramUtils.cxx:1521
 TQHistogramUtils.cxx:1522
 TQHistogramUtils.cxx:1523
 TQHistogramUtils.cxx:1524
 TQHistogramUtils.cxx:1525
 TQHistogramUtils.cxx:1526
 TQHistogramUtils.cxx:1527
 TQHistogramUtils.cxx:1528
 TQHistogramUtils.cxx:1529
 TQHistogramUtils.cxx:1530
 TQHistogramUtils.cxx:1531
 TQHistogramUtils.cxx:1532
 TQHistogramUtils.cxx:1533
 TQHistogramUtils.cxx:1534
 TQHistogramUtils.cxx:1535
 TQHistogramUtils.cxx:1536
 TQHistogramUtils.cxx:1537
 TQHistogramUtils.cxx:1538
 TQHistogramUtils.cxx:1539
 TQHistogramUtils.cxx:1540
 TQHistogramUtils.cxx:1541
 TQHistogramUtils.cxx:1542
 TQHistogramUtils.cxx:1543
 TQHistogramUtils.cxx:1544
 TQHistogramUtils.cxx:1545
 TQHistogramUtils.cxx:1546
 TQHistogramUtils.cxx:1547
 TQHistogramUtils.cxx:1548
 TQHistogramUtils.cxx:1549
 TQHistogramUtils.cxx:1550
 TQHistogramUtils.cxx:1551
 TQHistogramUtils.cxx:1552
 TQHistogramUtils.cxx:1553
 TQHistogramUtils.cxx:1554
 TQHistogramUtils.cxx:1555
 TQHistogramUtils.cxx:1556
 TQHistogramUtils.cxx:1557
 TQHistogramUtils.cxx:1558
 TQHistogramUtils.cxx:1559
 TQHistogramUtils.cxx:1560
 TQHistogramUtils.cxx:1561
 TQHistogramUtils.cxx:1562
 TQHistogramUtils.cxx:1563
 TQHistogramUtils.cxx:1564
 TQHistogramUtils.cxx:1565
 TQHistogramUtils.cxx:1566
 TQHistogramUtils.cxx:1567
 TQHistogramUtils.cxx:1568
 TQHistogramUtils.cxx:1569
 TQHistogramUtils.cxx:1570
 TQHistogramUtils.cxx:1571
 TQHistogramUtils.cxx:1572
 TQHistogramUtils.cxx:1573
 TQHistogramUtils.cxx:1574
 TQHistogramUtils.cxx:1575
 TQHistogramUtils.cxx:1576
 TQHistogramUtils.cxx:1577
 TQHistogramUtils.cxx:1578
 TQHistogramUtils.cxx:1579
 TQHistogramUtils.cxx:1580
 TQHistogramUtils.cxx:1581
 TQHistogramUtils.cxx:1582
 TQHistogramUtils.cxx:1583
 TQHistogramUtils.cxx:1584
 TQHistogramUtils.cxx:1585
 TQHistogramUtils.cxx:1586
 TQHistogramUtils.cxx:1587
 TQHistogramUtils.cxx:1588
 TQHistogramUtils.cxx:1589
 TQHistogramUtils.cxx:1590
 TQHistogramUtils.cxx:1591
 TQHistogramUtils.cxx:1592
 TQHistogramUtils.cxx:1593
 TQHistogramUtils.cxx:1594
 TQHistogramUtils.cxx:1595
 TQHistogramUtils.cxx:1596
 TQHistogramUtils.cxx:1597
 TQHistogramUtils.cxx:1598
 TQHistogramUtils.cxx:1599
 TQHistogramUtils.cxx:1600
 TQHistogramUtils.cxx:1601
 TQHistogramUtils.cxx:1602
 TQHistogramUtils.cxx:1603
 TQHistogramUtils.cxx:1604
 TQHistogramUtils.cxx:1605
 TQHistogramUtils.cxx:1606
 TQHistogramUtils.cxx:1607
 TQHistogramUtils.cxx:1608
 TQHistogramUtils.cxx:1609
 TQHistogramUtils.cxx:1610
 TQHistogramUtils.cxx:1611
 TQHistogramUtils.cxx:1612
 TQHistogramUtils.cxx:1613
 TQHistogramUtils.cxx:1614
 TQHistogramUtils.cxx:1615
 TQHistogramUtils.cxx:1616
 TQHistogramUtils.cxx:1617
 TQHistogramUtils.cxx:1618
 TQHistogramUtils.cxx:1619
 TQHistogramUtils.cxx:1620
 TQHistogramUtils.cxx:1621
 TQHistogramUtils.cxx:1622
 TQHistogramUtils.cxx:1623
 TQHistogramUtils.cxx:1624
 TQHistogramUtils.cxx:1625
 TQHistogramUtils.cxx:1626
 TQHistogramUtils.cxx:1627
 TQHistogramUtils.cxx:1628
 TQHistogramUtils.cxx:1629
 TQHistogramUtils.cxx:1630
 TQHistogramUtils.cxx:1631
 TQHistogramUtils.cxx:1632
 TQHistogramUtils.cxx:1633
 TQHistogramUtils.cxx:1634
 TQHistogramUtils.cxx:1635
 TQHistogramUtils.cxx:1636
 TQHistogramUtils.cxx:1637
 TQHistogramUtils.cxx:1638
 TQHistogramUtils.cxx:1639
 TQHistogramUtils.cxx:1640
 TQHistogramUtils.cxx:1641
 TQHistogramUtils.cxx:1642
 TQHistogramUtils.cxx:1643
 TQHistogramUtils.cxx:1644
 TQHistogramUtils.cxx:1645
 TQHistogramUtils.cxx:1646
 TQHistogramUtils.cxx:1647
 TQHistogramUtils.cxx:1648
 TQHistogramUtils.cxx:1649
 TQHistogramUtils.cxx:1650
 TQHistogramUtils.cxx:1651
 TQHistogramUtils.cxx:1652
 TQHistogramUtils.cxx:1653
 TQHistogramUtils.cxx:1654
 TQHistogramUtils.cxx:1655
 TQHistogramUtils.cxx:1656
 TQHistogramUtils.cxx:1657
 TQHistogramUtils.cxx:1658
 TQHistogramUtils.cxx:1659
 TQHistogramUtils.cxx:1660
 TQHistogramUtils.cxx:1661
 TQHistogramUtils.cxx:1662
 TQHistogramUtils.cxx:1663
 TQHistogramUtils.cxx:1664
 TQHistogramUtils.cxx:1665
 TQHistogramUtils.cxx:1666
 TQHistogramUtils.cxx:1667
 TQHistogramUtils.cxx:1668
 TQHistogramUtils.cxx:1669
 TQHistogramUtils.cxx:1670
 TQHistogramUtils.cxx:1671
 TQHistogramUtils.cxx:1672
 TQHistogramUtils.cxx:1673
 TQHistogramUtils.cxx:1674
 TQHistogramUtils.cxx:1675
 TQHistogramUtils.cxx:1676
 TQHistogramUtils.cxx:1677
 TQHistogramUtils.cxx:1678
 TQHistogramUtils.cxx:1679
 TQHistogramUtils.cxx:1680
 TQHistogramUtils.cxx:1681
 TQHistogramUtils.cxx:1682
 TQHistogramUtils.cxx:1683
 TQHistogramUtils.cxx:1684
 TQHistogramUtils.cxx:1685
 TQHistogramUtils.cxx:1686
 TQHistogramUtils.cxx:1687
 TQHistogramUtils.cxx:1688
 TQHistogramUtils.cxx:1689
 TQHistogramUtils.cxx:1690
 TQHistogramUtils.cxx:1691
 TQHistogramUtils.cxx:1692
 TQHistogramUtils.cxx:1693
 TQHistogramUtils.cxx:1694
 TQHistogramUtils.cxx:1695
 TQHistogramUtils.cxx:1696
 TQHistogramUtils.cxx:1697
 TQHistogramUtils.cxx:1698
 TQHistogramUtils.cxx:1699
 TQHistogramUtils.cxx:1700
 TQHistogramUtils.cxx:1701
 TQHistogramUtils.cxx:1702
 TQHistogramUtils.cxx:1703
 TQHistogramUtils.cxx:1704
 TQHistogramUtils.cxx:1705
 TQHistogramUtils.cxx:1706
 TQHistogramUtils.cxx:1707
 TQHistogramUtils.cxx:1708
 TQHistogramUtils.cxx:1709
 TQHistogramUtils.cxx:1710
 TQHistogramUtils.cxx:1711
 TQHistogramUtils.cxx:1712
 TQHistogramUtils.cxx:1713
 TQHistogramUtils.cxx:1714
 TQHistogramUtils.cxx:1715
 TQHistogramUtils.cxx:1716
 TQHistogramUtils.cxx:1717
 TQHistogramUtils.cxx:1718
 TQHistogramUtils.cxx:1719
 TQHistogramUtils.cxx:1720
 TQHistogramUtils.cxx:1721
 TQHistogramUtils.cxx:1722
 TQHistogramUtils.cxx:1723
 TQHistogramUtils.cxx:1724
 TQHistogramUtils.cxx:1725
 TQHistogramUtils.cxx:1726
 TQHistogramUtils.cxx:1727
 TQHistogramUtils.cxx:1728
 TQHistogramUtils.cxx:1729
 TQHistogramUtils.cxx:1730
 TQHistogramUtils.cxx:1731
 TQHistogramUtils.cxx:1732
 TQHistogramUtils.cxx:1733
 TQHistogramUtils.cxx:1734
 TQHistogramUtils.cxx:1735
 TQHistogramUtils.cxx:1736
 TQHistogramUtils.cxx:1737
 TQHistogramUtils.cxx:1738
 TQHistogramUtils.cxx:1739
 TQHistogramUtils.cxx:1740
 TQHistogramUtils.cxx:1741
 TQHistogramUtils.cxx:1742
 TQHistogramUtils.cxx:1743
 TQHistogramUtils.cxx:1744
 TQHistogramUtils.cxx:1745
 TQHistogramUtils.cxx:1746
 TQHistogramUtils.cxx:1747
 TQHistogramUtils.cxx:1748
 TQHistogramUtils.cxx:1749
 TQHistogramUtils.cxx:1750
 TQHistogramUtils.cxx:1751
 TQHistogramUtils.cxx:1752
 TQHistogramUtils.cxx:1753
 TQHistogramUtils.cxx:1754
 TQHistogramUtils.cxx:1755
 TQHistogramUtils.cxx:1756
 TQHistogramUtils.cxx:1757
 TQHistogramUtils.cxx:1758
 TQHistogramUtils.cxx:1759
 TQHistogramUtils.cxx:1760
 TQHistogramUtils.cxx:1761
 TQHistogramUtils.cxx:1762
 TQHistogramUtils.cxx:1763
 TQHistogramUtils.cxx:1764
 TQHistogramUtils.cxx:1765
 TQHistogramUtils.cxx:1766
 TQHistogramUtils.cxx:1767
 TQHistogramUtils.cxx:1768
 TQHistogramUtils.cxx:1769
 TQHistogramUtils.cxx:1770
 TQHistogramUtils.cxx:1771
 TQHistogramUtils.cxx:1772
 TQHistogramUtils.cxx:1773
 TQHistogramUtils.cxx:1774
 TQHistogramUtils.cxx:1775
 TQHistogramUtils.cxx:1776
 TQHistogramUtils.cxx:1777
 TQHistogramUtils.cxx:1778
 TQHistogramUtils.cxx:1779
 TQHistogramUtils.cxx:1780
 TQHistogramUtils.cxx:1781
 TQHistogramUtils.cxx:1782
 TQHistogramUtils.cxx:1783
 TQHistogramUtils.cxx:1784
 TQHistogramUtils.cxx:1785
 TQHistogramUtils.cxx:1786
 TQHistogramUtils.cxx:1787
 TQHistogramUtils.cxx:1788
 TQHistogramUtils.cxx:1789
 TQHistogramUtils.cxx:1790
 TQHistogramUtils.cxx:1791
 TQHistogramUtils.cxx:1792
 TQHistogramUtils.cxx:1793
 TQHistogramUtils.cxx:1794
 TQHistogramUtils.cxx:1795
 TQHistogramUtils.cxx:1796
 TQHistogramUtils.cxx:1797
 TQHistogramUtils.cxx:1798
 TQHistogramUtils.cxx:1799
 TQHistogramUtils.cxx:1800
 TQHistogramUtils.cxx:1801
 TQHistogramUtils.cxx:1802
 TQHistogramUtils.cxx:1803
 TQHistogramUtils.cxx:1804
 TQHistogramUtils.cxx:1805
 TQHistogramUtils.cxx:1806
 TQHistogramUtils.cxx:1807
 TQHistogramUtils.cxx:1808
 TQHistogramUtils.cxx:1809
 TQHistogramUtils.cxx:1810
 TQHistogramUtils.cxx:1811
 TQHistogramUtils.cxx:1812
 TQHistogramUtils.cxx:1813
 TQHistogramUtils.cxx:1814
 TQHistogramUtils.cxx:1815
 TQHistogramUtils.cxx:1816
 TQHistogramUtils.cxx:1817
 TQHistogramUtils.cxx:1818
 TQHistogramUtils.cxx:1819
 TQHistogramUtils.cxx:1820
 TQHistogramUtils.cxx:1821
 TQHistogramUtils.cxx:1822
 TQHistogramUtils.cxx:1823
 TQHistogramUtils.cxx:1824
 TQHistogramUtils.cxx:1825
 TQHistogramUtils.cxx:1826
 TQHistogramUtils.cxx:1827
 TQHistogramUtils.cxx:1828
 TQHistogramUtils.cxx:1829
 TQHistogramUtils.cxx:1830
 TQHistogramUtils.cxx:1831
 TQHistogramUtils.cxx:1832
 TQHistogramUtils.cxx:1833
 TQHistogramUtils.cxx:1834
 TQHistogramUtils.cxx:1835
 TQHistogramUtils.cxx:1836
 TQHistogramUtils.cxx:1837
 TQHistogramUtils.cxx:1838
 TQHistogramUtils.cxx:1839
 TQHistogramUtils.cxx:1840
 TQHistogramUtils.cxx:1841
 TQHistogramUtils.cxx:1842
 TQHistogramUtils.cxx:1843
 TQHistogramUtils.cxx:1844
 TQHistogramUtils.cxx:1845
 TQHistogramUtils.cxx:1846
 TQHistogramUtils.cxx:1847
 TQHistogramUtils.cxx:1848
 TQHistogramUtils.cxx:1849
 TQHistogramUtils.cxx:1850
 TQHistogramUtils.cxx:1851
 TQHistogramUtils.cxx:1852
 TQHistogramUtils.cxx:1853
 TQHistogramUtils.cxx:1854
 TQHistogramUtils.cxx:1855
 TQHistogramUtils.cxx:1856
 TQHistogramUtils.cxx:1857
 TQHistogramUtils.cxx:1858
 TQHistogramUtils.cxx:1859
 TQHistogramUtils.cxx:1860
 TQHistogramUtils.cxx:1861
 TQHistogramUtils.cxx:1862
 TQHistogramUtils.cxx:1863
 TQHistogramUtils.cxx:1864
 TQHistogramUtils.cxx:1865
 TQHistogramUtils.cxx:1866
 TQHistogramUtils.cxx:1867
 TQHistogramUtils.cxx:1868
 TQHistogramUtils.cxx:1869
 TQHistogramUtils.cxx:1870
 TQHistogramUtils.cxx:1871
 TQHistogramUtils.cxx:1872
 TQHistogramUtils.cxx:1873
 TQHistogramUtils.cxx:1874
 TQHistogramUtils.cxx:1875
 TQHistogramUtils.cxx:1876
 TQHistogramUtils.cxx:1877
 TQHistogramUtils.cxx:1878
 TQHistogramUtils.cxx:1879
 TQHistogramUtils.cxx:1880
 TQHistogramUtils.cxx:1881
 TQHistogramUtils.cxx:1882
 TQHistogramUtils.cxx:1883
 TQHistogramUtils.cxx:1884
 TQHistogramUtils.cxx:1885
 TQHistogramUtils.cxx:1886
 TQHistogramUtils.cxx:1887
 TQHistogramUtils.cxx:1888
 TQHistogramUtils.cxx:1889
 TQHistogramUtils.cxx:1890
 TQHistogramUtils.cxx:1891
 TQHistogramUtils.cxx:1892
 TQHistogramUtils.cxx:1893
 TQHistogramUtils.cxx:1894
 TQHistogramUtils.cxx:1895
 TQHistogramUtils.cxx:1896
 TQHistogramUtils.cxx:1897
 TQHistogramUtils.cxx:1898
 TQHistogramUtils.cxx:1899
 TQHistogramUtils.cxx:1900
 TQHistogramUtils.cxx:1901
 TQHistogramUtils.cxx:1902
 TQHistogramUtils.cxx:1903
 TQHistogramUtils.cxx:1904
 TQHistogramUtils.cxx:1905
 TQHistogramUtils.cxx:1906
 TQHistogramUtils.cxx:1907
 TQHistogramUtils.cxx:1908
 TQHistogramUtils.cxx:1909
 TQHistogramUtils.cxx:1910
 TQHistogramUtils.cxx:1911
 TQHistogramUtils.cxx:1912
 TQHistogramUtils.cxx:1913
 TQHistogramUtils.cxx:1914
 TQHistogramUtils.cxx:1915
 TQHistogramUtils.cxx:1916
 TQHistogramUtils.cxx:1917
 TQHistogramUtils.cxx:1918
 TQHistogramUtils.cxx:1919
 TQHistogramUtils.cxx:1920
 TQHistogramUtils.cxx:1921
 TQHistogramUtils.cxx:1922
 TQHistogramUtils.cxx:1923
 TQHistogramUtils.cxx:1924
 TQHistogramUtils.cxx:1925
 TQHistogramUtils.cxx:1926
 TQHistogramUtils.cxx:1927
 TQHistogramUtils.cxx:1928
 TQHistogramUtils.cxx:1929
 TQHistogramUtils.cxx:1930
 TQHistogramUtils.cxx:1931
 TQHistogramUtils.cxx:1932
 TQHistogramUtils.cxx:1933
 TQHistogramUtils.cxx:1934
 TQHistogramUtils.cxx:1935
 TQHistogramUtils.cxx:1936
 TQHistogramUtils.cxx:1937
 TQHistogramUtils.cxx:1938
 TQHistogramUtils.cxx:1939
 TQHistogramUtils.cxx:1940
 TQHistogramUtils.cxx:1941
 TQHistogramUtils.cxx:1942
 TQHistogramUtils.cxx:1943
 TQHistogramUtils.cxx:1944
 TQHistogramUtils.cxx:1945
 TQHistogramUtils.cxx:1946
 TQHistogramUtils.cxx:1947
 TQHistogramUtils.cxx:1948
 TQHistogramUtils.cxx:1949
 TQHistogramUtils.cxx:1950
 TQHistogramUtils.cxx:1951
 TQHistogramUtils.cxx:1952
 TQHistogramUtils.cxx:1953
 TQHistogramUtils.cxx:1954
 TQHistogramUtils.cxx:1955
 TQHistogramUtils.cxx:1956
 TQHistogramUtils.cxx:1957
 TQHistogramUtils.cxx:1958
 TQHistogramUtils.cxx:1959
 TQHistogramUtils.cxx:1960
 TQHistogramUtils.cxx:1961
 TQHistogramUtils.cxx:1962
 TQHistogramUtils.cxx:1963
 TQHistogramUtils.cxx:1964
 TQHistogramUtils.cxx:1965
 TQHistogramUtils.cxx:1966
 TQHistogramUtils.cxx:1967
 TQHistogramUtils.cxx:1968
 TQHistogramUtils.cxx:1969
 TQHistogramUtils.cxx:1970
 TQHistogramUtils.cxx:1971
 TQHistogramUtils.cxx:1972
 TQHistogramUtils.cxx:1973
 TQHistogramUtils.cxx:1974
 TQHistogramUtils.cxx:1975
 TQHistogramUtils.cxx:1976
 TQHistogramUtils.cxx:1977
 TQHistogramUtils.cxx:1978
 TQHistogramUtils.cxx:1979
 TQHistogramUtils.cxx:1980
 TQHistogramUtils.cxx:1981
 TQHistogramUtils.cxx:1982
 TQHistogramUtils.cxx:1983
 TQHistogramUtils.cxx:1984
 TQHistogramUtils.cxx:1985
 TQHistogramUtils.cxx:1986
 TQHistogramUtils.cxx:1987
 TQHistogramUtils.cxx:1988
 TQHistogramUtils.cxx:1989
 TQHistogramUtils.cxx:1990
 TQHistogramUtils.cxx:1991
 TQHistogramUtils.cxx:1992
 TQHistogramUtils.cxx:1993
 TQHistogramUtils.cxx:1994
 TQHistogramUtils.cxx:1995
 TQHistogramUtils.cxx:1996
 TQHistogramUtils.cxx:1997
 TQHistogramUtils.cxx:1998
 TQHistogramUtils.cxx:1999
 TQHistogramUtils.cxx:2000
 TQHistogramUtils.cxx:2001
 TQHistogramUtils.cxx:2002
 TQHistogramUtils.cxx:2003
 TQHistogramUtils.cxx:2004
 TQHistogramUtils.cxx:2005
 TQHistogramUtils.cxx:2006
 TQHistogramUtils.cxx:2007
 TQHistogramUtils.cxx:2008
 TQHistogramUtils.cxx:2009
 TQHistogramUtils.cxx:2010
 TQHistogramUtils.cxx:2011
 TQHistogramUtils.cxx:2012
 TQHistogramUtils.cxx:2013
 TQHistogramUtils.cxx:2014
 TQHistogramUtils.cxx:2015
 TQHistogramUtils.cxx:2016
 TQHistogramUtils.cxx:2017
 TQHistogramUtils.cxx:2018
 TQHistogramUtils.cxx:2019
 TQHistogramUtils.cxx:2020
 TQHistogramUtils.cxx:2021
 TQHistogramUtils.cxx:2022
 TQHistogramUtils.cxx:2023
 TQHistogramUtils.cxx:2024
 TQHistogramUtils.cxx:2025
 TQHistogramUtils.cxx:2026
 TQHistogramUtils.cxx:2027
 TQHistogramUtils.cxx:2028
 TQHistogramUtils.cxx:2029
 TQHistogramUtils.cxx:2030
 TQHistogramUtils.cxx:2031
 TQHistogramUtils.cxx:2032
 TQHistogramUtils.cxx:2033
 TQHistogramUtils.cxx:2034
 TQHistogramUtils.cxx:2035
 TQHistogramUtils.cxx:2036
 TQHistogramUtils.cxx:2037
 TQHistogramUtils.cxx:2038
 TQHistogramUtils.cxx:2039
 TQHistogramUtils.cxx:2040
 TQHistogramUtils.cxx:2041
 TQHistogramUtils.cxx:2042
 TQHistogramUtils.cxx:2043
 TQHistogramUtils.cxx:2044
 TQHistogramUtils.cxx:2045
 TQHistogramUtils.cxx:2046
 TQHistogramUtils.cxx:2047
 TQHistogramUtils.cxx:2048
 TQHistogramUtils.cxx:2049
 TQHistogramUtils.cxx:2050
 TQHistogramUtils.cxx:2051
 TQHistogramUtils.cxx:2052
 TQHistogramUtils.cxx:2053
 TQHistogramUtils.cxx:2054
 TQHistogramUtils.cxx:2055
 TQHistogramUtils.cxx:2056
 TQHistogramUtils.cxx:2057
 TQHistogramUtils.cxx:2058
 TQHistogramUtils.cxx:2059
 TQHistogramUtils.cxx:2060
 TQHistogramUtils.cxx:2061
 TQHistogramUtils.cxx:2062
 TQHistogramUtils.cxx:2063
 TQHistogramUtils.cxx:2064
 TQHistogramUtils.cxx:2065
 TQHistogramUtils.cxx:2066
 TQHistogramUtils.cxx:2067
 TQHistogramUtils.cxx:2068
 TQHistogramUtils.cxx:2069
 TQHistogramUtils.cxx:2070
 TQHistogramUtils.cxx:2071
 TQHistogramUtils.cxx:2072
 TQHistogramUtils.cxx:2073
 TQHistogramUtils.cxx:2074
 TQHistogramUtils.cxx:2075
 TQHistogramUtils.cxx:2076
 TQHistogramUtils.cxx:2077
 TQHistogramUtils.cxx:2078
 TQHistogramUtils.cxx:2079
 TQHistogramUtils.cxx:2080
 TQHistogramUtils.cxx:2081
 TQHistogramUtils.cxx:2082
 TQHistogramUtils.cxx:2083
 TQHistogramUtils.cxx:2084
 TQHistogramUtils.cxx:2085
 TQHistogramUtils.cxx:2086
 TQHistogramUtils.cxx:2087
 TQHistogramUtils.cxx:2088
 TQHistogramUtils.cxx:2089
 TQHistogramUtils.cxx:2090
 TQHistogramUtils.cxx:2091
 TQHistogramUtils.cxx:2092
 TQHistogramUtils.cxx:2093
 TQHistogramUtils.cxx:2094
 TQHistogramUtils.cxx:2095
 TQHistogramUtils.cxx:2096
 TQHistogramUtils.cxx:2097
 TQHistogramUtils.cxx:2098
 TQHistogramUtils.cxx:2099
 TQHistogramUtils.cxx:2100
 TQHistogramUtils.cxx:2101
 TQHistogramUtils.cxx:2102
 TQHistogramUtils.cxx:2103
 TQHistogramUtils.cxx:2104
 TQHistogramUtils.cxx:2105
 TQHistogramUtils.cxx:2106
 TQHistogramUtils.cxx:2107
 TQHistogramUtils.cxx:2108
 TQHistogramUtils.cxx:2109
 TQHistogramUtils.cxx:2110
 TQHistogramUtils.cxx:2111
 TQHistogramUtils.cxx:2112
 TQHistogramUtils.cxx:2113
 TQHistogramUtils.cxx:2114
 TQHistogramUtils.cxx:2115
 TQHistogramUtils.cxx:2116
 TQHistogramUtils.cxx:2117
 TQHistogramUtils.cxx:2118
 TQHistogramUtils.cxx:2119
 TQHistogramUtils.cxx:2120
 TQHistogramUtils.cxx:2121
 TQHistogramUtils.cxx:2122
 TQHistogramUtils.cxx:2123
 TQHistogramUtils.cxx:2124
 TQHistogramUtils.cxx:2125
 TQHistogramUtils.cxx:2126
 TQHistogramUtils.cxx:2127
 TQHistogramUtils.cxx:2128
 TQHistogramUtils.cxx:2129
 TQHistogramUtils.cxx:2130
 TQHistogramUtils.cxx:2131
 TQHistogramUtils.cxx:2132
 TQHistogramUtils.cxx:2133
 TQHistogramUtils.cxx:2134
 TQHistogramUtils.cxx:2135
 TQHistogramUtils.cxx:2136
 TQHistogramUtils.cxx:2137
 TQHistogramUtils.cxx:2138
 TQHistogramUtils.cxx:2139
 TQHistogramUtils.cxx:2140
 TQHistogramUtils.cxx:2141
 TQHistogramUtils.cxx:2142
 TQHistogramUtils.cxx:2143
 TQHistogramUtils.cxx:2144
 TQHistogramUtils.cxx:2145
 TQHistogramUtils.cxx:2146
 TQHistogramUtils.cxx:2147
 TQHistogramUtils.cxx:2148
 TQHistogramUtils.cxx:2149
 TQHistogramUtils.cxx:2150
 TQHistogramUtils.cxx:2151
 TQHistogramUtils.cxx:2152
 TQHistogramUtils.cxx:2153
 TQHistogramUtils.cxx:2154
 TQHistogramUtils.cxx:2155
 TQHistogramUtils.cxx:2156
 TQHistogramUtils.cxx:2157
 TQHistogramUtils.cxx:2158
 TQHistogramUtils.cxx:2159
 TQHistogramUtils.cxx:2160
 TQHistogramUtils.cxx:2161
 TQHistogramUtils.cxx:2162
 TQHistogramUtils.cxx:2163
 TQHistogramUtils.cxx:2164
 TQHistogramUtils.cxx:2165
 TQHistogramUtils.cxx:2166
 TQHistogramUtils.cxx:2167
 TQHistogramUtils.cxx:2168
 TQHistogramUtils.cxx:2169
 TQHistogramUtils.cxx:2170
 TQHistogramUtils.cxx:2171
 TQHistogramUtils.cxx:2172
 TQHistogramUtils.cxx:2173
 TQHistogramUtils.cxx:2174
 TQHistogramUtils.cxx:2175
 TQHistogramUtils.cxx:2176
 TQHistogramUtils.cxx:2177
 TQHistogramUtils.cxx:2178
 TQHistogramUtils.cxx:2179
 TQHistogramUtils.cxx:2180
 TQHistogramUtils.cxx:2181
 TQHistogramUtils.cxx:2182
 TQHistogramUtils.cxx:2183
 TQHistogramUtils.cxx:2184
 TQHistogramUtils.cxx:2185
 TQHistogramUtils.cxx:2186
 TQHistogramUtils.cxx:2187
 TQHistogramUtils.cxx:2188
 TQHistogramUtils.cxx:2189
 TQHistogramUtils.cxx:2190
 TQHistogramUtils.cxx:2191
 TQHistogramUtils.cxx:2192
 TQHistogramUtils.cxx:2193
 TQHistogramUtils.cxx:2194
 TQHistogramUtils.cxx:2195
 TQHistogramUtils.cxx:2196
 TQHistogramUtils.cxx:2197
 TQHistogramUtils.cxx:2198
 TQHistogramUtils.cxx:2199
 TQHistogramUtils.cxx:2200
 TQHistogramUtils.cxx:2201
 TQHistogramUtils.cxx:2202
 TQHistogramUtils.cxx:2203
 TQHistogramUtils.cxx:2204
 TQHistogramUtils.cxx:2205
 TQHistogramUtils.cxx:2206
 TQHistogramUtils.cxx:2207
 TQHistogramUtils.cxx:2208
 TQHistogramUtils.cxx:2209
 TQHistogramUtils.cxx:2210
 TQHistogramUtils.cxx:2211
 TQHistogramUtils.cxx:2212
 TQHistogramUtils.cxx:2213
 TQHistogramUtils.cxx:2214
 TQHistogramUtils.cxx:2215
 TQHistogramUtils.cxx:2216
 TQHistogramUtils.cxx:2217
 TQHistogramUtils.cxx:2218
 TQHistogramUtils.cxx:2219
 TQHistogramUtils.cxx:2220
 TQHistogramUtils.cxx:2221
 TQHistogramUtils.cxx:2222
 TQHistogramUtils.cxx:2223
 TQHistogramUtils.cxx:2224
 TQHistogramUtils.cxx:2225
 TQHistogramUtils.cxx:2226
 TQHistogramUtils.cxx:2227
 TQHistogramUtils.cxx:2228
 TQHistogramUtils.cxx:2229
 TQHistogramUtils.cxx:2230
 TQHistogramUtils.cxx:2231
 TQHistogramUtils.cxx:2232
 TQHistogramUtils.cxx:2233
 TQHistogramUtils.cxx:2234
 TQHistogramUtils.cxx:2235
 TQHistogramUtils.cxx:2236
 TQHistogramUtils.cxx:2237
 TQHistogramUtils.cxx:2238
 TQHistogramUtils.cxx:2239
 TQHistogramUtils.cxx:2240
 TQHistogramUtils.cxx:2241
 TQHistogramUtils.cxx:2242
 TQHistogramUtils.cxx:2243
 TQHistogramUtils.cxx:2244
 TQHistogramUtils.cxx:2245
 TQHistogramUtils.cxx:2246
 TQHistogramUtils.cxx:2247
 TQHistogramUtils.cxx:2248
 TQHistogramUtils.cxx:2249
 TQHistogramUtils.cxx:2250
 TQHistogramUtils.cxx:2251
 TQHistogramUtils.cxx:2252
 TQHistogramUtils.cxx:2253
 TQHistogramUtils.cxx:2254
 TQHistogramUtils.cxx:2255
 TQHistogramUtils.cxx:2256
 TQHistogramUtils.cxx:2257
 TQHistogramUtils.cxx:2258
 TQHistogramUtils.cxx:2259
 TQHistogramUtils.cxx:2260
 TQHistogramUtils.cxx:2261
 TQHistogramUtils.cxx:2262
 TQHistogramUtils.cxx:2263
 TQHistogramUtils.cxx:2264
 TQHistogramUtils.cxx:2265
 TQHistogramUtils.cxx:2266
 TQHistogramUtils.cxx:2267
 TQHistogramUtils.cxx:2268
 TQHistogramUtils.cxx:2269
 TQHistogramUtils.cxx:2270
 TQHistogramUtils.cxx:2271
 TQHistogramUtils.cxx:2272
 TQHistogramUtils.cxx:2273
 TQHistogramUtils.cxx:2274
 TQHistogramUtils.cxx:2275
 TQHistogramUtils.cxx:2276
 TQHistogramUtils.cxx:2277
 TQHistogramUtils.cxx:2278
 TQHistogramUtils.cxx:2279
 TQHistogramUtils.cxx:2280
 TQHistogramUtils.cxx:2281
 TQHistogramUtils.cxx:2282
 TQHistogramUtils.cxx:2283
 TQHistogramUtils.cxx:2284
 TQHistogramUtils.cxx:2285
 TQHistogramUtils.cxx:2286
 TQHistogramUtils.cxx:2287
 TQHistogramUtils.cxx:2288
 TQHistogramUtils.cxx:2289
 TQHistogramUtils.cxx:2290
 TQHistogramUtils.cxx:2291
 TQHistogramUtils.cxx:2292
 TQHistogramUtils.cxx:2293
 TQHistogramUtils.cxx:2294
 TQHistogramUtils.cxx:2295
 TQHistogramUtils.cxx:2296
 TQHistogramUtils.cxx:2297
 TQHistogramUtils.cxx:2298
 TQHistogramUtils.cxx:2299
 TQHistogramUtils.cxx:2300
 TQHistogramUtils.cxx:2301
 TQHistogramUtils.cxx:2302
 TQHistogramUtils.cxx:2303
 TQHistogramUtils.cxx:2304
 TQHistogramUtils.cxx:2305
 TQHistogramUtils.cxx:2306
 TQHistogramUtils.cxx:2307
 TQHistogramUtils.cxx:2308
 TQHistogramUtils.cxx:2309
 TQHistogramUtils.cxx:2310
 TQHistogramUtils.cxx:2311
 TQHistogramUtils.cxx:2312
 TQHistogramUtils.cxx:2313
 TQHistogramUtils.cxx:2314
 TQHistogramUtils.cxx:2315
 TQHistogramUtils.cxx:2316
 TQHistogramUtils.cxx:2317
 TQHistogramUtils.cxx:2318
 TQHistogramUtils.cxx:2319
 TQHistogramUtils.cxx:2320
 TQHistogramUtils.cxx:2321
 TQHistogramUtils.cxx:2322
 TQHistogramUtils.cxx:2323
 TQHistogramUtils.cxx:2324
 TQHistogramUtils.cxx:2325
 TQHistogramUtils.cxx:2326
 TQHistogramUtils.cxx:2327
 TQHistogramUtils.cxx:2328
 TQHistogramUtils.cxx:2329
 TQHistogramUtils.cxx:2330
 TQHistogramUtils.cxx:2331
 TQHistogramUtils.cxx:2332
 TQHistogramUtils.cxx:2333
 TQHistogramUtils.cxx:2334
 TQHistogramUtils.cxx:2335
 TQHistogramUtils.cxx:2336
 TQHistogramUtils.cxx:2337
 TQHistogramUtils.cxx:2338
 TQHistogramUtils.cxx:2339
 TQHistogramUtils.cxx:2340
 TQHistogramUtils.cxx:2341
 TQHistogramUtils.cxx:2342
 TQHistogramUtils.cxx:2343
 TQHistogramUtils.cxx:2344
 TQHistogramUtils.cxx:2345
 TQHistogramUtils.cxx:2346
 TQHistogramUtils.cxx:2347
 TQHistogramUtils.cxx:2348
 TQHistogramUtils.cxx:2349
 TQHistogramUtils.cxx:2350
 TQHistogramUtils.cxx:2351
 TQHistogramUtils.cxx:2352
 TQHistogramUtils.cxx:2353
 TQHistogramUtils.cxx:2354
 TQHistogramUtils.cxx:2355
 TQHistogramUtils.cxx:2356
 TQHistogramUtils.cxx:2357
 TQHistogramUtils.cxx:2358
 TQHistogramUtils.cxx:2359
 TQHistogramUtils.cxx:2360
 TQHistogramUtils.cxx:2361
 TQHistogramUtils.cxx:2362
 TQHistogramUtils.cxx:2363
 TQHistogramUtils.cxx:2364
 TQHistogramUtils.cxx:2365
 TQHistogramUtils.cxx:2366
 TQHistogramUtils.cxx:2367
 TQHistogramUtils.cxx:2368
 TQHistogramUtils.cxx:2369
 TQHistogramUtils.cxx:2370
 TQHistogramUtils.cxx:2371
 TQHistogramUtils.cxx:2372
 TQHistogramUtils.cxx:2373
 TQHistogramUtils.cxx:2374
 TQHistogramUtils.cxx:2375
 TQHistogramUtils.cxx:2376
 TQHistogramUtils.cxx:2377
 TQHistogramUtils.cxx:2378
 TQHistogramUtils.cxx:2379
 TQHistogramUtils.cxx:2380
 TQHistogramUtils.cxx:2381
 TQHistogramUtils.cxx:2382
 TQHistogramUtils.cxx:2383
 TQHistogramUtils.cxx:2384
 TQHistogramUtils.cxx:2385
 TQHistogramUtils.cxx:2386
 TQHistogramUtils.cxx:2387
 TQHistogramUtils.cxx:2388
 TQHistogramUtils.cxx:2389
 TQHistogramUtils.cxx:2390
 TQHistogramUtils.cxx:2391
 TQHistogramUtils.cxx:2392
 TQHistogramUtils.cxx:2393
 TQHistogramUtils.cxx:2394
 TQHistogramUtils.cxx:2395
 TQHistogramUtils.cxx:2396
 TQHistogramUtils.cxx:2397
 TQHistogramUtils.cxx:2398
 TQHistogramUtils.cxx:2399
 TQHistogramUtils.cxx:2400
 TQHistogramUtils.cxx:2401
 TQHistogramUtils.cxx:2402
 TQHistogramUtils.cxx:2403
 TQHistogramUtils.cxx:2404
 TQHistogramUtils.cxx:2405
 TQHistogramUtils.cxx:2406
 TQHistogramUtils.cxx:2407
 TQHistogramUtils.cxx:2408
 TQHistogramUtils.cxx:2409
 TQHistogramUtils.cxx:2410
 TQHistogramUtils.cxx:2411
 TQHistogramUtils.cxx:2412
 TQHistogramUtils.cxx:2413
 TQHistogramUtils.cxx:2414
 TQHistogramUtils.cxx:2415
 TQHistogramUtils.cxx:2416
 TQHistogramUtils.cxx:2417
 TQHistogramUtils.cxx:2418
 TQHistogramUtils.cxx:2419
 TQHistogramUtils.cxx:2420
 TQHistogramUtils.cxx:2421
 TQHistogramUtils.cxx:2422
 TQHistogramUtils.cxx:2423
 TQHistogramUtils.cxx:2424
 TQHistogramUtils.cxx:2425
 TQHistogramUtils.cxx:2426
 TQHistogramUtils.cxx:2427
 TQHistogramUtils.cxx:2428
 TQHistogramUtils.cxx:2429
 TQHistogramUtils.cxx:2430
 TQHistogramUtils.cxx:2431
 TQHistogramUtils.cxx:2432
 TQHistogramUtils.cxx:2433
 TQHistogramUtils.cxx:2434
 TQHistogramUtils.cxx:2435
 TQHistogramUtils.cxx:2436
 TQHistogramUtils.cxx:2437
 TQHistogramUtils.cxx:2438
 TQHistogramUtils.cxx:2439
 TQHistogramUtils.cxx:2440
 TQHistogramUtils.cxx:2441
 TQHistogramUtils.cxx:2442
 TQHistogramUtils.cxx:2443
 TQHistogramUtils.cxx:2444
 TQHistogramUtils.cxx:2445
 TQHistogramUtils.cxx:2446
 TQHistogramUtils.cxx:2447
 TQHistogramUtils.cxx:2448
 TQHistogramUtils.cxx:2449
 TQHistogramUtils.cxx:2450
 TQHistogramUtils.cxx:2451
 TQHistogramUtils.cxx:2452
 TQHistogramUtils.cxx:2453
 TQHistogramUtils.cxx:2454
 TQHistogramUtils.cxx:2455
 TQHistogramUtils.cxx:2456
 TQHistogramUtils.cxx:2457
 TQHistogramUtils.cxx:2458
 TQHistogramUtils.cxx:2459
 TQHistogramUtils.cxx:2460
 TQHistogramUtils.cxx:2461
 TQHistogramUtils.cxx:2462
 TQHistogramUtils.cxx:2463
 TQHistogramUtils.cxx:2464
 TQHistogramUtils.cxx:2465
 TQHistogramUtils.cxx:2466
 TQHistogramUtils.cxx:2467
 TQHistogramUtils.cxx:2468
 TQHistogramUtils.cxx:2469
 TQHistogramUtils.cxx:2470
 TQHistogramUtils.cxx:2471
 TQHistogramUtils.cxx:2472
 TQHistogramUtils.cxx:2473
 TQHistogramUtils.cxx:2474
 TQHistogramUtils.cxx:2475
 TQHistogramUtils.cxx:2476
 TQHistogramUtils.cxx:2477
 TQHistogramUtils.cxx:2478
 TQHistogramUtils.cxx:2479
 TQHistogramUtils.cxx:2480
 TQHistogramUtils.cxx:2481
 TQHistogramUtils.cxx:2482
 TQHistogramUtils.cxx:2483
 TQHistogramUtils.cxx:2484
 TQHistogramUtils.cxx:2485
 TQHistogramUtils.cxx:2486
 TQHistogramUtils.cxx:2487
 TQHistogramUtils.cxx:2488
 TQHistogramUtils.cxx:2489
 TQHistogramUtils.cxx:2490
 TQHistogramUtils.cxx:2491
 TQHistogramUtils.cxx:2492
 TQHistogramUtils.cxx:2493
 TQHistogramUtils.cxx:2494
 TQHistogramUtils.cxx:2495
 TQHistogramUtils.cxx:2496
 TQHistogramUtils.cxx:2497
 TQHistogramUtils.cxx:2498
 TQHistogramUtils.cxx:2499
 TQHistogramUtils.cxx:2500
 TQHistogramUtils.cxx:2501
 TQHistogramUtils.cxx:2502
 TQHistogramUtils.cxx:2503
 TQHistogramUtils.cxx:2504
 TQHistogramUtils.cxx:2505
 TQHistogramUtils.cxx:2506
 TQHistogramUtils.cxx:2507
 TQHistogramUtils.cxx:2508
 TQHistogramUtils.cxx:2509
 TQHistogramUtils.cxx:2510
 TQHistogramUtils.cxx:2511
 TQHistogramUtils.cxx:2512
 TQHistogramUtils.cxx:2513
 TQHistogramUtils.cxx:2514
 TQHistogramUtils.cxx:2515
 TQHistogramUtils.cxx:2516
 TQHistogramUtils.cxx:2517
 TQHistogramUtils.cxx:2518
 TQHistogramUtils.cxx:2519
 TQHistogramUtils.cxx:2520
 TQHistogramUtils.cxx:2521
 TQHistogramUtils.cxx:2522
 TQHistogramUtils.cxx:2523
 TQHistogramUtils.cxx:2524
 TQHistogramUtils.cxx:2525
 TQHistogramUtils.cxx:2526
 TQHistogramUtils.cxx:2527
 TQHistogramUtils.cxx:2528
 TQHistogramUtils.cxx:2529
 TQHistogramUtils.cxx:2530
 TQHistogramUtils.cxx:2531
 TQHistogramUtils.cxx:2532
 TQHistogramUtils.cxx:2533
 TQHistogramUtils.cxx:2534
 TQHistogramUtils.cxx:2535
 TQHistogramUtils.cxx:2536
 TQHistogramUtils.cxx:2537
 TQHistogramUtils.cxx:2538
 TQHistogramUtils.cxx:2539
 TQHistogramUtils.cxx:2540
 TQHistogramUtils.cxx:2541
 TQHistogramUtils.cxx:2542
 TQHistogramUtils.cxx:2543
 TQHistogramUtils.cxx:2544
 TQHistogramUtils.cxx:2545
 TQHistogramUtils.cxx:2546
 TQHistogramUtils.cxx:2547
 TQHistogramUtils.cxx:2548
 TQHistogramUtils.cxx:2549
 TQHistogramUtils.cxx:2550
 TQHistogramUtils.cxx:2551
 TQHistogramUtils.cxx:2552
 TQHistogramUtils.cxx:2553
 TQHistogramUtils.cxx:2554
 TQHistogramUtils.cxx:2555
 TQHistogramUtils.cxx:2556
 TQHistogramUtils.cxx:2557
 TQHistogramUtils.cxx:2558
 TQHistogramUtils.cxx:2559
 TQHistogramUtils.cxx:2560
 TQHistogramUtils.cxx:2561
 TQHistogramUtils.cxx:2562
 TQHistogramUtils.cxx:2563
 TQHistogramUtils.cxx:2564
 TQHistogramUtils.cxx:2565
 TQHistogramUtils.cxx:2566
 TQHistogramUtils.cxx:2567
 TQHistogramUtils.cxx:2568
 TQHistogramUtils.cxx:2569
 TQHistogramUtils.cxx:2570
 TQHistogramUtils.cxx:2571
 TQHistogramUtils.cxx:2572
 TQHistogramUtils.cxx:2573
 TQHistogramUtils.cxx:2574
 TQHistogramUtils.cxx:2575
 TQHistogramUtils.cxx:2576
 TQHistogramUtils.cxx:2577
 TQHistogramUtils.cxx:2578
 TQHistogramUtils.cxx:2579
 TQHistogramUtils.cxx:2580
 TQHistogramUtils.cxx:2581
 TQHistogramUtils.cxx:2582
 TQHistogramUtils.cxx:2583
 TQHistogramUtils.cxx:2584
 TQHistogramUtils.cxx:2585
 TQHistogramUtils.cxx:2586
 TQHistogramUtils.cxx:2587
 TQHistogramUtils.cxx:2588
 TQHistogramUtils.cxx:2589
 TQHistogramUtils.cxx:2590
 TQHistogramUtils.cxx:2591
 TQHistogramUtils.cxx:2592
 TQHistogramUtils.cxx:2593
 TQHistogramUtils.cxx:2594
 TQHistogramUtils.cxx:2595
 TQHistogramUtils.cxx:2596
 TQHistogramUtils.cxx:2597
 TQHistogramUtils.cxx:2598
 TQHistogramUtils.cxx:2599
 TQHistogramUtils.cxx:2600
 TQHistogramUtils.cxx:2601
 TQHistogramUtils.cxx:2602
 TQHistogramUtils.cxx:2603
 TQHistogramUtils.cxx:2604
 TQHistogramUtils.cxx:2605
 TQHistogramUtils.cxx:2606
 TQHistogramUtils.cxx:2607
 TQHistogramUtils.cxx:2608
 TQHistogramUtils.cxx:2609
 TQHistogramUtils.cxx:2610
 TQHistogramUtils.cxx:2611
 TQHistogramUtils.cxx:2612
 TQHistogramUtils.cxx:2613
 TQHistogramUtils.cxx:2614
 TQHistogramUtils.cxx:2615
 TQHistogramUtils.cxx:2616
 TQHistogramUtils.cxx:2617
 TQHistogramUtils.cxx:2618
 TQHistogramUtils.cxx:2619
 TQHistogramUtils.cxx:2620
 TQHistogramUtils.cxx:2621
 TQHistogramUtils.cxx:2622
 TQHistogramUtils.cxx:2623
 TQHistogramUtils.cxx:2624
 TQHistogramUtils.cxx:2625
 TQHistogramUtils.cxx:2626
 TQHistogramUtils.cxx:2627
 TQHistogramUtils.cxx:2628
 TQHistogramUtils.cxx:2629
 TQHistogramUtils.cxx:2630
 TQHistogramUtils.cxx:2631
 TQHistogramUtils.cxx:2632
 TQHistogramUtils.cxx:2633
 TQHistogramUtils.cxx:2634
 TQHistogramUtils.cxx:2635
 TQHistogramUtils.cxx:2636
 TQHistogramUtils.cxx:2637
 TQHistogramUtils.cxx:2638
 TQHistogramUtils.cxx:2639
 TQHistogramUtils.cxx:2640
 TQHistogramUtils.cxx:2641
 TQHistogramUtils.cxx:2642
 TQHistogramUtils.cxx:2643
 TQHistogramUtils.cxx:2644
 TQHistogramUtils.cxx:2645
 TQHistogramUtils.cxx:2646
 TQHistogramUtils.cxx:2647
 TQHistogramUtils.cxx:2648
 TQHistogramUtils.cxx:2649
 TQHistogramUtils.cxx:2650
 TQHistogramUtils.cxx:2651
 TQHistogramUtils.cxx:2652
 TQHistogramUtils.cxx:2653
 TQHistogramUtils.cxx:2654
 TQHistogramUtils.cxx:2655
 TQHistogramUtils.cxx:2656
 TQHistogramUtils.cxx:2657
 TQHistogramUtils.cxx:2658
 TQHistogramUtils.cxx:2659
 TQHistogramUtils.cxx:2660
 TQHistogramUtils.cxx:2661
 TQHistogramUtils.cxx:2662
 TQHistogramUtils.cxx:2663
 TQHistogramUtils.cxx:2664
 TQHistogramUtils.cxx:2665
 TQHistogramUtils.cxx:2666
 TQHistogramUtils.cxx:2667
 TQHistogramUtils.cxx:2668
 TQHistogramUtils.cxx:2669
 TQHistogramUtils.cxx:2670
 TQHistogramUtils.cxx:2671
 TQHistogramUtils.cxx:2672
 TQHistogramUtils.cxx:2673
 TQHistogramUtils.cxx:2674
 TQHistogramUtils.cxx:2675
 TQHistogramUtils.cxx:2676
 TQHistogramUtils.cxx:2677
 TQHistogramUtils.cxx:2678
 TQHistogramUtils.cxx:2679
 TQHistogramUtils.cxx:2680
 TQHistogramUtils.cxx:2681
 TQHistogramUtils.cxx:2682
 TQHistogramUtils.cxx:2683
 TQHistogramUtils.cxx:2684
 TQHistogramUtils.cxx:2685
 TQHistogramUtils.cxx:2686
 TQHistogramUtils.cxx:2687
 TQHistogramUtils.cxx:2688
 TQHistogramUtils.cxx:2689
 TQHistogramUtils.cxx:2690
 TQHistogramUtils.cxx:2691
 TQHistogramUtils.cxx:2692
 TQHistogramUtils.cxx:2693
 TQHistogramUtils.cxx:2694
 TQHistogramUtils.cxx:2695
 TQHistogramUtils.cxx:2696
 TQHistogramUtils.cxx:2697
 TQHistogramUtils.cxx:2698
 TQHistogramUtils.cxx:2699
 TQHistogramUtils.cxx:2700
 TQHistogramUtils.cxx:2701
 TQHistogramUtils.cxx:2702
 TQHistogramUtils.cxx:2703
 TQHistogramUtils.cxx:2704
 TQHistogramUtils.cxx:2705
 TQHistogramUtils.cxx:2706
 TQHistogramUtils.cxx:2707
 TQHistogramUtils.cxx:2708
 TQHistogramUtils.cxx:2709
 TQHistogramUtils.cxx:2710
 TQHistogramUtils.cxx:2711
 TQHistogramUtils.cxx:2712
 TQHistogramUtils.cxx:2713
 TQHistogramUtils.cxx:2714
 TQHistogramUtils.cxx:2715
 TQHistogramUtils.cxx:2716
 TQHistogramUtils.cxx:2717
 TQHistogramUtils.cxx:2718
 TQHistogramUtils.cxx:2719
 TQHistogramUtils.cxx:2720
 TQHistogramUtils.cxx:2721
 TQHistogramUtils.cxx:2722
 TQHistogramUtils.cxx:2723
 TQHistogramUtils.cxx:2724
 TQHistogramUtils.cxx:2725
 TQHistogramUtils.cxx:2726
 TQHistogramUtils.cxx:2727
 TQHistogramUtils.cxx:2728
 TQHistogramUtils.cxx:2729
 TQHistogramUtils.cxx:2730
 TQHistogramUtils.cxx:2731
 TQHistogramUtils.cxx:2732
 TQHistogramUtils.cxx:2733
 TQHistogramUtils.cxx:2734
 TQHistogramUtils.cxx:2735
 TQHistogramUtils.cxx:2736
 TQHistogramUtils.cxx:2737
 TQHistogramUtils.cxx:2738
 TQHistogramUtils.cxx:2739
 TQHistogramUtils.cxx:2740
 TQHistogramUtils.cxx:2741
 TQHistogramUtils.cxx:2742
 TQHistogramUtils.cxx:2743
 TQHistogramUtils.cxx:2744
 TQHistogramUtils.cxx:2745
 TQHistogramUtils.cxx:2746
 TQHistogramUtils.cxx:2747
 TQHistogramUtils.cxx:2748
 TQHistogramUtils.cxx:2749
 TQHistogramUtils.cxx:2750
 TQHistogramUtils.cxx:2751
 TQHistogramUtils.cxx:2752
 TQHistogramUtils.cxx:2753
 TQHistogramUtils.cxx:2754
 TQHistogramUtils.cxx:2755
 TQHistogramUtils.cxx:2756
 TQHistogramUtils.cxx:2757
 TQHistogramUtils.cxx:2758
 TQHistogramUtils.cxx:2759
 TQHistogramUtils.cxx:2760
 TQHistogramUtils.cxx:2761
 TQHistogramUtils.cxx:2762
 TQHistogramUtils.cxx:2763
 TQHistogramUtils.cxx:2764
 TQHistogramUtils.cxx:2765
 TQHistogramUtils.cxx:2766
 TQHistogramUtils.cxx:2767
 TQHistogramUtils.cxx:2768
 TQHistogramUtils.cxx:2769
 TQHistogramUtils.cxx:2770
 TQHistogramUtils.cxx:2771
 TQHistogramUtils.cxx:2772
 TQHistogramUtils.cxx:2773
 TQHistogramUtils.cxx:2774
 TQHistogramUtils.cxx:2775
 TQHistogramUtils.cxx:2776
 TQHistogramUtils.cxx:2777
 TQHistogramUtils.cxx:2778
 TQHistogramUtils.cxx:2779
 TQHistogramUtils.cxx:2780
 TQHistogramUtils.cxx:2781
 TQHistogramUtils.cxx:2782
 TQHistogramUtils.cxx:2783
 TQHistogramUtils.cxx:2784
 TQHistogramUtils.cxx:2785
 TQHistogramUtils.cxx:2786
 TQHistogramUtils.cxx:2787
 TQHistogramUtils.cxx:2788
 TQHistogramUtils.cxx:2789
 TQHistogramUtils.cxx:2790
 TQHistogramUtils.cxx:2791
 TQHistogramUtils.cxx:2792
 TQHistogramUtils.cxx:2793
 TQHistogramUtils.cxx:2794
 TQHistogramUtils.cxx:2795
 TQHistogramUtils.cxx:2796
 TQHistogramUtils.cxx:2797
 TQHistogramUtils.cxx:2798
 TQHistogramUtils.cxx:2799
 TQHistogramUtils.cxx:2800
 TQHistogramUtils.cxx:2801
 TQHistogramUtils.cxx:2802
 TQHistogramUtils.cxx:2803
 TQHistogramUtils.cxx:2804
 TQHistogramUtils.cxx:2805
 TQHistogramUtils.cxx:2806
 TQHistogramUtils.cxx:2807
 TQHistogramUtils.cxx:2808
 TQHistogramUtils.cxx:2809
 TQHistogramUtils.cxx:2810
 TQHistogramUtils.cxx:2811
 TQHistogramUtils.cxx:2812
 TQHistogramUtils.cxx:2813
 TQHistogramUtils.cxx:2814
 TQHistogramUtils.cxx:2815
 TQHistogramUtils.cxx:2816
 TQHistogramUtils.cxx:2817
 TQHistogramUtils.cxx:2818
 TQHistogramUtils.cxx:2819
 TQHistogramUtils.cxx:2820
 TQHistogramUtils.cxx:2821
 TQHistogramUtils.cxx:2822
 TQHistogramUtils.cxx:2823
 TQHistogramUtils.cxx:2824
 TQHistogramUtils.cxx:2825
 TQHistogramUtils.cxx:2826
 TQHistogramUtils.cxx:2827
 TQHistogramUtils.cxx:2828
 TQHistogramUtils.cxx:2829
 TQHistogramUtils.cxx:2830
 TQHistogramUtils.cxx:2831
 TQHistogramUtils.cxx:2832
 TQHistogramUtils.cxx:2833
 TQHistogramUtils.cxx:2834
 TQHistogramUtils.cxx:2835
 TQHistogramUtils.cxx:2836
 TQHistogramUtils.cxx:2837
 TQHistogramUtils.cxx:2838
 TQHistogramUtils.cxx:2839
 TQHistogramUtils.cxx:2840
 TQHistogramUtils.cxx:2841
 TQHistogramUtils.cxx:2842
 TQHistogramUtils.cxx:2843
 TQHistogramUtils.cxx:2844
 TQHistogramUtils.cxx:2845
 TQHistogramUtils.cxx:2846
 TQHistogramUtils.cxx:2847
 TQHistogramUtils.cxx:2848
 TQHistogramUtils.cxx:2849
 TQHistogramUtils.cxx:2850
 TQHistogramUtils.cxx:2851
 TQHistogramUtils.cxx:2852
 TQHistogramUtils.cxx:2853
 TQHistogramUtils.cxx:2854
 TQHistogramUtils.cxx:2855
 TQHistogramUtils.cxx:2856
 TQHistogramUtils.cxx:2857
 TQHistogramUtils.cxx:2858
 TQHistogramUtils.cxx:2859
 TQHistogramUtils.cxx:2860
 TQHistogramUtils.cxx:2861
 TQHistogramUtils.cxx:2862
 TQHistogramUtils.cxx:2863
 TQHistogramUtils.cxx:2864
 TQHistogramUtils.cxx:2865
 TQHistogramUtils.cxx:2866
 TQHistogramUtils.cxx:2867
 TQHistogramUtils.cxx:2868
 TQHistogramUtils.cxx:2869
 TQHistogramUtils.cxx:2870
 TQHistogramUtils.cxx:2871
 TQHistogramUtils.cxx:2872
 TQHistogramUtils.cxx:2873
 TQHistogramUtils.cxx:2874
 TQHistogramUtils.cxx:2875
 TQHistogramUtils.cxx:2876
 TQHistogramUtils.cxx:2877
 TQHistogramUtils.cxx:2878
 TQHistogramUtils.cxx:2879
 TQHistogramUtils.cxx:2880
 TQHistogramUtils.cxx:2881
 TQHistogramUtils.cxx:2882
 TQHistogramUtils.cxx:2883
 TQHistogramUtils.cxx:2884
 TQHistogramUtils.cxx:2885
 TQHistogramUtils.cxx:2886
 TQHistogramUtils.cxx:2887
 TQHistogramUtils.cxx:2888
 TQHistogramUtils.cxx:2889
 TQHistogramUtils.cxx:2890
 TQHistogramUtils.cxx:2891
 TQHistogramUtils.cxx:2892
 TQHistogramUtils.cxx:2893
 TQHistogramUtils.cxx:2894
 TQHistogramUtils.cxx:2895
 TQHistogramUtils.cxx:2896
 TQHistogramUtils.cxx:2897
 TQHistogramUtils.cxx:2898
 TQHistogramUtils.cxx:2899
 TQHistogramUtils.cxx:2900
 TQHistogramUtils.cxx:2901
 TQHistogramUtils.cxx:2902
 TQHistogramUtils.cxx:2903
 TQHistogramUtils.cxx:2904
 TQHistogramUtils.cxx:2905
 TQHistogramUtils.cxx:2906
 TQHistogramUtils.cxx:2907
 TQHistogramUtils.cxx:2908
 TQHistogramUtils.cxx:2909
 TQHistogramUtils.cxx:2910
 TQHistogramUtils.cxx:2911
 TQHistogramUtils.cxx:2912
 TQHistogramUtils.cxx:2913
 TQHistogramUtils.cxx:2914
 TQHistogramUtils.cxx:2915
 TQHistogramUtils.cxx:2916
 TQHistogramUtils.cxx:2917
 TQHistogramUtils.cxx:2918
 TQHistogramUtils.cxx:2919
 TQHistogramUtils.cxx:2920
 TQHistogramUtils.cxx:2921
 TQHistogramUtils.cxx:2922
 TQHistogramUtils.cxx:2923
 TQHistogramUtils.cxx:2924
 TQHistogramUtils.cxx:2925
 TQHistogramUtils.cxx:2926
 TQHistogramUtils.cxx:2927
 TQHistogramUtils.cxx:2928
 TQHistogramUtils.cxx:2929
 TQHistogramUtils.cxx:2930
 TQHistogramUtils.cxx:2931
 TQHistogramUtils.cxx:2932
 TQHistogramUtils.cxx:2933
 TQHistogramUtils.cxx:2934
 TQHistogramUtils.cxx:2935
 TQHistogramUtils.cxx:2936
 TQHistogramUtils.cxx:2937
 TQHistogramUtils.cxx:2938
 TQHistogramUtils.cxx:2939
 TQHistogramUtils.cxx:2940
 TQHistogramUtils.cxx:2941
 TQHistogramUtils.cxx:2942
 TQHistogramUtils.cxx:2943
 TQHistogramUtils.cxx:2944
 TQHistogramUtils.cxx:2945
 TQHistogramUtils.cxx:2946
 TQHistogramUtils.cxx:2947
 TQHistogramUtils.cxx:2948
 TQHistogramUtils.cxx:2949
 TQHistogramUtils.cxx:2950
 TQHistogramUtils.cxx:2951
 TQHistogramUtils.cxx:2952
 TQHistogramUtils.cxx:2953
 TQHistogramUtils.cxx:2954
 TQHistogramUtils.cxx:2955
 TQHistogramUtils.cxx:2956
 TQHistogramUtils.cxx:2957
 TQHistogramUtils.cxx:2958
 TQHistogramUtils.cxx:2959
 TQHistogramUtils.cxx:2960
 TQHistogramUtils.cxx:2961
 TQHistogramUtils.cxx:2962
 TQHistogramUtils.cxx:2963
 TQHistogramUtils.cxx:2964
 TQHistogramUtils.cxx:2965
 TQHistogramUtils.cxx:2966
 TQHistogramUtils.cxx:2967
 TQHistogramUtils.cxx:2968
 TQHistogramUtils.cxx:2969
 TQHistogramUtils.cxx:2970
 TQHistogramUtils.cxx:2971
 TQHistogramUtils.cxx:2972
 TQHistogramUtils.cxx:2973
 TQHistogramUtils.cxx:2974
 TQHistogramUtils.cxx:2975
 TQHistogramUtils.cxx:2976
 TQHistogramUtils.cxx:2977
 TQHistogramUtils.cxx:2978
 TQHistogramUtils.cxx:2979
 TQHistogramUtils.cxx:2980
 TQHistogramUtils.cxx:2981
 TQHistogramUtils.cxx:2982
 TQHistogramUtils.cxx:2983
 TQHistogramUtils.cxx:2984
 TQHistogramUtils.cxx:2985
 TQHistogramUtils.cxx:2986
 TQHistogramUtils.cxx:2987
 TQHistogramUtils.cxx:2988
 TQHistogramUtils.cxx:2989
 TQHistogramUtils.cxx:2990
 TQHistogramUtils.cxx:2991
 TQHistogramUtils.cxx:2992
 TQHistogramUtils.cxx:2993
 TQHistogramUtils.cxx:2994
 TQHistogramUtils.cxx:2995
 TQHistogramUtils.cxx:2996
 TQHistogramUtils.cxx:2997
 TQHistogramUtils.cxx:2998
 TQHistogramUtils.cxx:2999
 TQHistogramUtils.cxx:3000
 TQHistogramUtils.cxx:3001
 TQHistogramUtils.cxx:3002
 TQHistogramUtils.cxx:3003
 TQHistogramUtils.cxx:3004
 TQHistogramUtils.cxx:3005
 TQHistogramUtils.cxx:3006
 TQHistogramUtils.cxx:3007
 TQHistogramUtils.cxx:3008
 TQHistogramUtils.cxx:3009
 TQHistogramUtils.cxx:3010
 TQHistogramUtils.cxx:3011
 TQHistogramUtils.cxx:3012
 TQHistogramUtils.cxx:3013
 TQHistogramUtils.cxx:3014
 TQHistogramUtils.cxx:3015
 TQHistogramUtils.cxx:3016
 TQHistogramUtils.cxx:3017
 TQHistogramUtils.cxx:3018
 TQHistogramUtils.cxx:3019
 TQHistogramUtils.cxx:3020
 TQHistogramUtils.cxx:3021
 TQHistogramUtils.cxx:3022
 TQHistogramUtils.cxx:3023
 TQHistogramUtils.cxx:3024
 TQHistogramUtils.cxx:3025
 TQHistogramUtils.cxx:3026
 TQHistogramUtils.cxx:3027
 TQHistogramUtils.cxx:3028
 TQHistogramUtils.cxx:3029
 TQHistogramUtils.cxx:3030
 TQHistogramUtils.cxx:3031
 TQHistogramUtils.cxx:3032
 TQHistogramUtils.cxx:3033
 TQHistogramUtils.cxx:3034
 TQHistogramUtils.cxx:3035
 TQHistogramUtils.cxx:3036
 TQHistogramUtils.cxx:3037
 TQHistogramUtils.cxx:3038
 TQHistogramUtils.cxx:3039
 TQHistogramUtils.cxx:3040
 TQHistogramUtils.cxx:3041
 TQHistogramUtils.cxx:3042
 TQHistogramUtils.cxx:3043
 TQHistogramUtils.cxx:3044
 TQHistogramUtils.cxx:3045
 TQHistogramUtils.cxx:3046
 TQHistogramUtils.cxx:3047
 TQHistogramUtils.cxx:3048
 TQHistogramUtils.cxx:3049
 TQHistogramUtils.cxx:3050
 TQHistogramUtils.cxx:3051
 TQHistogramUtils.cxx:3052
 TQHistogramUtils.cxx:3053
 TQHistogramUtils.cxx:3054
 TQHistogramUtils.cxx:3055
 TQHistogramUtils.cxx:3056
 TQHistogramUtils.cxx:3057
 TQHistogramUtils.cxx:3058
 TQHistogramUtils.cxx:3059
 TQHistogramUtils.cxx:3060
 TQHistogramUtils.cxx:3061
 TQHistogramUtils.cxx:3062
 TQHistogramUtils.cxx:3063
 TQHistogramUtils.cxx:3064
 TQHistogramUtils.cxx:3065
 TQHistogramUtils.cxx:3066
 TQHistogramUtils.cxx:3067
 TQHistogramUtils.cxx:3068
 TQHistogramUtils.cxx:3069
 TQHistogramUtils.cxx:3070
 TQHistogramUtils.cxx:3071
 TQHistogramUtils.cxx:3072
 TQHistogramUtils.cxx:3073
 TQHistogramUtils.cxx:3074
 TQHistogramUtils.cxx:3075
 TQHistogramUtils.cxx:3076
 TQHistogramUtils.cxx:3077
 TQHistogramUtils.cxx:3078
 TQHistogramUtils.cxx:3079
 TQHistogramUtils.cxx:3080
 TQHistogramUtils.cxx:3081
 TQHistogramUtils.cxx:3082
 TQHistogramUtils.cxx:3083
 TQHistogramUtils.cxx:3084
 TQHistogramUtils.cxx:3085
 TQHistogramUtils.cxx:3086
 TQHistogramUtils.cxx:3087
 TQHistogramUtils.cxx:3088
 TQHistogramUtils.cxx:3089
 TQHistogramUtils.cxx:3090
 TQHistogramUtils.cxx:3091
 TQHistogramUtils.cxx:3092
 TQHistogramUtils.cxx:3093
 TQHistogramUtils.cxx:3094
 TQHistogramUtils.cxx:3095
 TQHistogramUtils.cxx:3096
 TQHistogramUtils.cxx:3097
 TQHistogramUtils.cxx:3098
 TQHistogramUtils.cxx:3099
 TQHistogramUtils.cxx:3100
 TQHistogramUtils.cxx:3101
 TQHistogramUtils.cxx:3102
 TQHistogramUtils.cxx:3103
 TQHistogramUtils.cxx:3104
 TQHistogramUtils.cxx:3105
 TQHistogramUtils.cxx:3106
 TQHistogramUtils.cxx:3107
 TQHistogramUtils.cxx:3108
 TQHistogramUtils.cxx:3109
 TQHistogramUtils.cxx:3110
 TQHistogramUtils.cxx:3111
 TQHistogramUtils.cxx:3112
 TQHistogramUtils.cxx:3113
 TQHistogramUtils.cxx:3114
 TQHistogramUtils.cxx:3115
 TQHistogramUtils.cxx:3116
 TQHistogramUtils.cxx:3117
 TQHistogramUtils.cxx:3118
 TQHistogramUtils.cxx:3119
 TQHistogramUtils.cxx:3120
 TQHistogramUtils.cxx:3121
 TQHistogramUtils.cxx:3122
 TQHistogramUtils.cxx:3123
 TQHistogramUtils.cxx:3124
 TQHistogramUtils.cxx:3125
 TQHistogramUtils.cxx:3126
 TQHistogramUtils.cxx:3127
 TQHistogramUtils.cxx:3128
 TQHistogramUtils.cxx:3129
 TQHistogramUtils.cxx:3130
 TQHistogramUtils.cxx:3131
 TQHistogramUtils.cxx:3132
 TQHistogramUtils.cxx:3133
 TQHistogramUtils.cxx:3134
 TQHistogramUtils.cxx:3135
 TQHistogramUtils.cxx:3136
 TQHistogramUtils.cxx:3137
 TQHistogramUtils.cxx:3138
 TQHistogramUtils.cxx:3139
 TQHistogramUtils.cxx:3140
 TQHistogramUtils.cxx:3141
 TQHistogramUtils.cxx:3142
 TQHistogramUtils.cxx:3143
 TQHistogramUtils.cxx:3144
 TQHistogramUtils.cxx:3145
 TQHistogramUtils.cxx:3146
 TQHistogramUtils.cxx:3147
 TQHistogramUtils.cxx:3148
 TQHistogramUtils.cxx:3149
 TQHistogramUtils.cxx:3150
 TQHistogramUtils.cxx:3151
 TQHistogramUtils.cxx:3152
 TQHistogramUtils.cxx:3153
 TQHistogramUtils.cxx:3154
 TQHistogramUtils.cxx:3155
 TQHistogramUtils.cxx:3156
 TQHistogramUtils.cxx:3157
 TQHistogramUtils.cxx:3158
 TQHistogramUtils.cxx:3159
 TQHistogramUtils.cxx:3160
 TQHistogramUtils.cxx:3161
 TQHistogramUtils.cxx:3162
 TQHistogramUtils.cxx:3163
 TQHistogramUtils.cxx:3164
 TQHistogramUtils.cxx:3165
 TQHistogramUtils.cxx:3166
 TQHistogramUtils.cxx:3167
 TQHistogramUtils.cxx:3168
 TQHistogramUtils.cxx:3169
 TQHistogramUtils.cxx:3170
 TQHistogramUtils.cxx:3171
 TQHistogramUtils.cxx:3172
 TQHistogramUtils.cxx:3173
 TQHistogramUtils.cxx:3174
 TQHistogramUtils.cxx:3175
 TQHistogramUtils.cxx:3176
 TQHistogramUtils.cxx:3177
 TQHistogramUtils.cxx:3178
 TQHistogramUtils.cxx:3179
 TQHistogramUtils.cxx:3180
 TQHistogramUtils.cxx:3181
 TQHistogramUtils.cxx:3182
 TQHistogramUtils.cxx:3183
 TQHistogramUtils.cxx:3184
 TQHistogramUtils.cxx:3185
 TQHistogramUtils.cxx:3186
 TQHistogramUtils.cxx:3187
 TQHistogramUtils.cxx:3188
 TQHistogramUtils.cxx:3189
 TQHistogramUtils.cxx:3190
 TQHistogramUtils.cxx:3191
 TQHistogramUtils.cxx:3192
 TQHistogramUtils.cxx:3193
 TQHistogramUtils.cxx:3194
 TQHistogramUtils.cxx:3195
 TQHistogramUtils.cxx:3196
 TQHistogramUtils.cxx:3197
 TQHistogramUtils.cxx:3198
 TQHistogramUtils.cxx:3199
 TQHistogramUtils.cxx:3200
 TQHistogramUtils.cxx:3201
 TQHistogramUtils.cxx:3202
 TQHistogramUtils.cxx:3203
 TQHistogramUtils.cxx:3204
 TQHistogramUtils.cxx:3205
 TQHistogramUtils.cxx:3206
 TQHistogramUtils.cxx:3207
 TQHistogramUtils.cxx:3208
 TQHistogramUtils.cxx:3209
 TQHistogramUtils.cxx:3210
 TQHistogramUtils.cxx:3211
 TQHistogramUtils.cxx:3212
 TQHistogramUtils.cxx:3213
 TQHistogramUtils.cxx:3214
 TQHistogramUtils.cxx:3215
 TQHistogramUtils.cxx:3216
 TQHistogramUtils.cxx:3217
 TQHistogramUtils.cxx:3218
 TQHistogramUtils.cxx:3219
 TQHistogramUtils.cxx:3220
 TQHistogramUtils.cxx:3221
 TQHistogramUtils.cxx:3222
 TQHistogramUtils.cxx:3223
 TQHistogramUtils.cxx:3224
 TQHistogramUtils.cxx:3225
 TQHistogramUtils.cxx:3226
 TQHistogramUtils.cxx:3227
 TQHistogramUtils.cxx:3228
 TQHistogramUtils.cxx:3229
 TQHistogramUtils.cxx:3230
 TQHistogramUtils.cxx:3231
 TQHistogramUtils.cxx:3232
 TQHistogramUtils.cxx:3233
 TQHistogramUtils.cxx:3234
 TQHistogramUtils.cxx:3235
 TQHistogramUtils.cxx:3236
 TQHistogramUtils.cxx:3237
 TQHistogramUtils.cxx:3238
 TQHistogramUtils.cxx:3239
 TQHistogramUtils.cxx:3240
 TQHistogramUtils.cxx:3241
 TQHistogramUtils.cxx:3242
 TQHistogramUtils.cxx:3243
 TQHistogramUtils.cxx:3244
 TQHistogramUtils.cxx:3245
 TQHistogramUtils.cxx:3246
 TQHistogramUtils.cxx:3247
 TQHistogramUtils.cxx:3248
 TQHistogramUtils.cxx:3249
 TQHistogramUtils.cxx:3250
 TQHistogramUtils.cxx:3251
 TQHistogramUtils.cxx:3252
 TQHistogramUtils.cxx:3253
 TQHistogramUtils.cxx:3254
 TQHistogramUtils.cxx:3255
 TQHistogramUtils.cxx:3256
 TQHistogramUtils.cxx:3257
 TQHistogramUtils.cxx:3258
 TQHistogramUtils.cxx:3259
 TQHistogramUtils.cxx:3260
 TQHistogramUtils.cxx:3261
 TQHistogramUtils.cxx:3262
 TQHistogramUtils.cxx:3263
 TQHistogramUtils.cxx:3264
 TQHistogramUtils.cxx:3265
 TQHistogramUtils.cxx:3266
 TQHistogramUtils.cxx:3267
 TQHistogramUtils.cxx:3268
 TQHistogramUtils.cxx:3269
 TQHistogramUtils.cxx:3270
 TQHistogramUtils.cxx:3271
 TQHistogramUtils.cxx:3272
 TQHistogramUtils.cxx:3273
 TQHistogramUtils.cxx:3274
 TQHistogramUtils.cxx:3275
 TQHistogramUtils.cxx:3276
 TQHistogramUtils.cxx:3277
 TQHistogramUtils.cxx:3278
 TQHistogramUtils.cxx:3279
 TQHistogramUtils.cxx:3280
 TQHistogramUtils.cxx:3281
 TQHistogramUtils.cxx:3282
 TQHistogramUtils.cxx:3283
 TQHistogramUtils.cxx:3284
 TQHistogramUtils.cxx:3285
 TQHistogramUtils.cxx:3286
 TQHistogramUtils.cxx:3287
 TQHistogramUtils.cxx:3288
 TQHistogramUtils.cxx:3289
 TQHistogramUtils.cxx:3290
 TQHistogramUtils.cxx:3291
 TQHistogramUtils.cxx:3292
 TQHistogramUtils.cxx:3293
 TQHistogramUtils.cxx:3294
 TQHistogramUtils.cxx:3295
 TQHistogramUtils.cxx:3296
 TQHistogramUtils.cxx:3297
 TQHistogramUtils.cxx:3298
 TQHistogramUtils.cxx:3299
 TQHistogramUtils.cxx:3300
 TQHistogramUtils.cxx:3301
 TQHistogramUtils.cxx:3302
 TQHistogramUtils.cxx:3303
 TQHistogramUtils.cxx:3304
 TQHistogramUtils.cxx:3305
 TQHistogramUtils.cxx:3306
 TQHistogramUtils.cxx:3307
 TQHistogramUtils.cxx:3308
 TQHistogramUtils.cxx:3309
 TQHistogramUtils.cxx:3310
 TQHistogramUtils.cxx:3311
 TQHistogramUtils.cxx:3312
 TQHistogramUtils.cxx:3313
 TQHistogramUtils.cxx:3314
 TQHistogramUtils.cxx:3315
 TQHistogramUtils.cxx:3316
 TQHistogramUtils.cxx:3317
 TQHistogramUtils.cxx:3318
 TQHistogramUtils.cxx:3319
 TQHistogramUtils.cxx:3320
 TQHistogramUtils.cxx:3321
 TQHistogramUtils.cxx:3322
 TQHistogramUtils.cxx:3323
 TQHistogramUtils.cxx:3324
 TQHistogramUtils.cxx:3325
 TQHistogramUtils.cxx:3326
 TQHistogramUtils.cxx:3327
 TQHistogramUtils.cxx:3328
 TQHistogramUtils.cxx:3329
 TQHistogramUtils.cxx:3330
 TQHistogramUtils.cxx:3331
 TQHistogramUtils.cxx:3332
 TQHistogramUtils.cxx:3333
 TQHistogramUtils.cxx:3334
 TQHistogramUtils.cxx:3335
 TQHistogramUtils.cxx:3336
 TQHistogramUtils.cxx:3337
 TQHistogramUtils.cxx:3338
 TQHistogramUtils.cxx:3339
 TQHistogramUtils.cxx:3340
 TQHistogramUtils.cxx:3341
 TQHistogramUtils.cxx:3342
 TQHistogramUtils.cxx:3343
 TQHistogramUtils.cxx:3344
 TQHistogramUtils.cxx:3345
 TQHistogramUtils.cxx:3346
 TQHistogramUtils.cxx:3347
 TQHistogramUtils.cxx:3348
 TQHistogramUtils.cxx:3349
 TQHistogramUtils.cxx:3350
 TQHistogramUtils.cxx:3351
 TQHistogramUtils.cxx:3352
 TQHistogramUtils.cxx:3353
 TQHistogramUtils.cxx:3354
 TQHistogramUtils.cxx:3355
 TQHistogramUtils.cxx:3356
 TQHistogramUtils.cxx:3357
 TQHistogramUtils.cxx:3358
 TQHistogramUtils.cxx:3359
 TQHistogramUtils.cxx:3360
 TQHistogramUtils.cxx:3361
 TQHistogramUtils.cxx:3362
 TQHistogramUtils.cxx:3363
 TQHistogramUtils.cxx:3364
 TQHistogramUtils.cxx:3365
 TQHistogramUtils.cxx:3366
 TQHistogramUtils.cxx:3367
 TQHistogramUtils.cxx:3368
 TQHistogramUtils.cxx:3369
 TQHistogramUtils.cxx:3370
 TQHistogramUtils.cxx:3371
 TQHistogramUtils.cxx:3372
 TQHistogramUtils.cxx:3373
 TQHistogramUtils.cxx:3374
 TQHistogramUtils.cxx:3375
 TQHistogramUtils.cxx:3376
 TQHistogramUtils.cxx:3377
 TQHistogramUtils.cxx:3378
 TQHistogramUtils.cxx:3379
 TQHistogramUtils.cxx:3380
 TQHistogramUtils.cxx:3381
 TQHistogramUtils.cxx:3382
 TQHistogramUtils.cxx:3383
 TQHistogramUtils.cxx:3384
 TQHistogramUtils.cxx:3385
 TQHistogramUtils.cxx:3386
 TQHistogramUtils.cxx:3387
 TQHistogramUtils.cxx:3388
 TQHistogramUtils.cxx:3389
 TQHistogramUtils.cxx:3390
 TQHistogramUtils.cxx:3391
 TQHistogramUtils.cxx:3392
 TQHistogramUtils.cxx:3393
 TQHistogramUtils.cxx:3394
 TQHistogramUtils.cxx:3395
 TQHistogramUtils.cxx:3396
 TQHistogramUtils.cxx:3397
 TQHistogramUtils.cxx:3398
 TQHistogramUtils.cxx:3399
 TQHistogramUtils.cxx:3400
 TQHistogramUtils.cxx:3401
 TQHistogramUtils.cxx:3402
 TQHistogramUtils.cxx:3403
 TQHistogramUtils.cxx:3404
 TQHistogramUtils.cxx:3405
 TQHistogramUtils.cxx:3406
 TQHistogramUtils.cxx:3407
 TQHistogramUtils.cxx:3408
 TQHistogramUtils.cxx:3409
 TQHistogramUtils.cxx:3410
 TQHistogramUtils.cxx:3411
 TQHistogramUtils.cxx:3412
 TQHistogramUtils.cxx:3413
 TQHistogramUtils.cxx:3414
 TQHistogramUtils.cxx:3415
 TQHistogramUtils.cxx:3416
 TQHistogramUtils.cxx:3417
 TQHistogramUtils.cxx:3418
 TQHistogramUtils.cxx:3419
 TQHistogramUtils.cxx:3420
 TQHistogramUtils.cxx:3421
 TQHistogramUtils.cxx:3422
 TQHistogramUtils.cxx:3423
 TQHistogramUtils.cxx:3424
 TQHistogramUtils.cxx:3425
 TQHistogramUtils.cxx:3426
 TQHistogramUtils.cxx:3427
 TQHistogramUtils.cxx:3428
 TQHistogramUtils.cxx:3429
 TQHistogramUtils.cxx:3430
 TQHistogramUtils.cxx:3431
 TQHistogramUtils.cxx:3432
 TQHistogramUtils.cxx:3433
 TQHistogramUtils.cxx:3434
 TQHistogramUtils.cxx:3435
 TQHistogramUtils.cxx:3436
 TQHistogramUtils.cxx:3437
 TQHistogramUtils.cxx:3438
 TQHistogramUtils.cxx:3439
 TQHistogramUtils.cxx:3440
 TQHistogramUtils.cxx:3441
 TQHistogramUtils.cxx:3442
 TQHistogramUtils.cxx:3443
 TQHistogramUtils.cxx:3444
 TQHistogramUtils.cxx:3445
 TQHistogramUtils.cxx:3446
 TQHistogramUtils.cxx:3447
 TQHistogramUtils.cxx:3448
 TQHistogramUtils.cxx:3449
 TQHistogramUtils.cxx:3450
 TQHistogramUtils.cxx:3451
 TQHistogramUtils.cxx:3452
 TQHistogramUtils.cxx:3453
 TQHistogramUtils.cxx:3454
 TQHistogramUtils.cxx:3455
 TQHistogramUtils.cxx:3456
 TQHistogramUtils.cxx:3457
 TQHistogramUtils.cxx:3458
 TQHistogramUtils.cxx:3459
 TQHistogramUtils.cxx:3460
 TQHistogramUtils.cxx:3461
 TQHistogramUtils.cxx:3462
 TQHistogramUtils.cxx:3463
 TQHistogramUtils.cxx:3464
 TQHistogramUtils.cxx:3465
 TQHistogramUtils.cxx:3466
 TQHistogramUtils.cxx:3467
 TQHistogramUtils.cxx:3468
 TQHistogramUtils.cxx:3469
 TQHistogramUtils.cxx:3470
 TQHistogramUtils.cxx:3471
 TQHistogramUtils.cxx:3472
 TQHistogramUtils.cxx:3473
 TQHistogramUtils.cxx:3474
 TQHistogramUtils.cxx:3475
 TQHistogramUtils.cxx:3476
 TQHistogramUtils.cxx:3477
 TQHistogramUtils.cxx:3478
 TQHistogramUtils.cxx:3479
 TQHistogramUtils.cxx:3480
 TQHistogramUtils.cxx:3481
 TQHistogramUtils.cxx:3482
 TQHistogramUtils.cxx:3483
 TQHistogramUtils.cxx:3484
 TQHistogramUtils.cxx:3485
 TQHistogramUtils.cxx:3486
 TQHistogramUtils.cxx:3487
 TQHistogramUtils.cxx:3488
 TQHistogramUtils.cxx:3489
 TQHistogramUtils.cxx:3490
 TQHistogramUtils.cxx:3491
 TQHistogramUtils.cxx:3492
 TQHistogramUtils.cxx:3493
 TQHistogramUtils.cxx:3494
 TQHistogramUtils.cxx:3495
 TQHistogramUtils.cxx:3496
 TQHistogramUtils.cxx:3497
 TQHistogramUtils.cxx:3498
 TQHistogramUtils.cxx:3499
 TQHistogramUtils.cxx:3500
 TQHistogramUtils.cxx:3501
 TQHistogramUtils.cxx:3502
 TQHistogramUtils.cxx:3503
 TQHistogramUtils.cxx:3504
 TQHistogramUtils.cxx:3505
 TQHistogramUtils.cxx:3506
 TQHistogramUtils.cxx:3507
 TQHistogramUtils.cxx:3508
 TQHistogramUtils.cxx:3509
 TQHistogramUtils.cxx:3510
 TQHistogramUtils.cxx:3511
 TQHistogramUtils.cxx:3512
 TQHistogramUtils.cxx:3513
 TQHistogramUtils.cxx:3514
 TQHistogramUtils.cxx:3515
 TQHistogramUtils.cxx:3516
 TQHistogramUtils.cxx:3517
 TQHistogramUtils.cxx:3518
 TQHistogramUtils.cxx:3519
 TQHistogramUtils.cxx:3520
 TQHistogramUtils.cxx:3521
 TQHistogramUtils.cxx:3522
 TQHistogramUtils.cxx:3523
 TQHistogramUtils.cxx:3524
 TQHistogramUtils.cxx:3525
 TQHistogramUtils.cxx:3526
 TQHistogramUtils.cxx:3527
 TQHistogramUtils.cxx:3528
 TQHistogramUtils.cxx:3529
 TQHistogramUtils.cxx:3530
 TQHistogramUtils.cxx:3531
 TQHistogramUtils.cxx:3532
 TQHistogramUtils.cxx:3533
 TQHistogramUtils.cxx:3534
 TQHistogramUtils.cxx:3535
 TQHistogramUtils.cxx:3536
 TQHistogramUtils.cxx:3537
 TQHistogramUtils.cxx:3538
 TQHistogramUtils.cxx:3539
 TQHistogramUtils.cxx:3540
 TQHistogramUtils.cxx:3541
 TQHistogramUtils.cxx:3542
 TQHistogramUtils.cxx:3543
 TQHistogramUtils.cxx:3544
 TQHistogramUtils.cxx:3545
 TQHistogramUtils.cxx:3546
 TQHistogramUtils.cxx:3547
 TQHistogramUtils.cxx:3548
 TQHistogramUtils.cxx:3549
 TQHistogramUtils.cxx:3550
 TQHistogramUtils.cxx:3551
 TQHistogramUtils.cxx:3552
 TQHistogramUtils.cxx:3553
 TQHistogramUtils.cxx:3554
 TQHistogramUtils.cxx:3555
 TQHistogramUtils.cxx:3556
 TQHistogramUtils.cxx:3557
 TQHistogramUtils.cxx:3558
 TQHistogramUtils.cxx:3559
 TQHistogramUtils.cxx:3560
 TQHistogramUtils.cxx:3561
 TQHistogramUtils.cxx:3562
 TQHistogramUtils.cxx:3563
 TQHistogramUtils.cxx:3564
 TQHistogramUtils.cxx:3565
 TQHistogramUtils.cxx:3566
 TQHistogramUtils.cxx:3567
 TQHistogramUtils.cxx:3568
 TQHistogramUtils.cxx:3569
 TQHistogramUtils.cxx:3570
 TQHistogramUtils.cxx:3571
 TQHistogramUtils.cxx:3572
 TQHistogramUtils.cxx:3573
 TQHistogramUtils.cxx:3574
 TQHistogramUtils.cxx:3575
 TQHistogramUtils.cxx:3576
 TQHistogramUtils.cxx:3577
 TQHistogramUtils.cxx:3578
 TQHistogramUtils.cxx:3579
 TQHistogramUtils.cxx:3580
 TQHistogramUtils.cxx:3581
 TQHistogramUtils.cxx:3582
 TQHistogramUtils.cxx:3583
 TQHistogramUtils.cxx:3584
 TQHistogramUtils.cxx:3585
 TQHistogramUtils.cxx:3586
 TQHistogramUtils.cxx:3587
 TQHistogramUtils.cxx:3588
 TQHistogramUtils.cxx:3589
 TQHistogramUtils.cxx:3590
 TQHistogramUtils.cxx:3591
 TQHistogramUtils.cxx:3592
 TQHistogramUtils.cxx:3593
 TQHistogramUtils.cxx:3594
 TQHistogramUtils.cxx:3595
 TQHistogramUtils.cxx:3596
 TQHistogramUtils.cxx:3597
 TQHistogramUtils.cxx:3598
 TQHistogramUtils.cxx:3599
 TQHistogramUtils.cxx:3600
 TQHistogramUtils.cxx:3601
 TQHistogramUtils.cxx:3602
 TQHistogramUtils.cxx:3603
 TQHistogramUtils.cxx:3604
 TQHistogramUtils.cxx:3605
 TQHistogramUtils.cxx:3606
 TQHistogramUtils.cxx:3607
 TQHistogramUtils.cxx:3608
 TQHistogramUtils.cxx:3609
 TQHistogramUtils.cxx:3610
 TQHistogramUtils.cxx:3611
 TQHistogramUtils.cxx:3612
 TQHistogramUtils.cxx:3613
 TQHistogramUtils.cxx:3614
 TQHistogramUtils.cxx:3615
 TQHistogramUtils.cxx:3616
 TQHistogramUtils.cxx:3617
 TQHistogramUtils.cxx:3618
 TQHistogramUtils.cxx:3619
 TQHistogramUtils.cxx:3620
 TQHistogramUtils.cxx:3621
 TQHistogramUtils.cxx:3622
 TQHistogramUtils.cxx:3623
 TQHistogramUtils.cxx:3624
 TQHistogramUtils.cxx:3625
 TQHistogramUtils.cxx:3626
 TQHistogramUtils.cxx:3627
 TQHistogramUtils.cxx:3628
 TQHistogramUtils.cxx:3629
 TQHistogramUtils.cxx:3630
 TQHistogramUtils.cxx:3631
 TQHistogramUtils.cxx:3632
 TQHistogramUtils.cxx:3633
 TQHistogramUtils.cxx:3634
 TQHistogramUtils.cxx:3635
 TQHistogramUtils.cxx:3636
 TQHistogramUtils.cxx:3637
 TQHistogramUtils.cxx:3638
 TQHistogramUtils.cxx:3639
 TQHistogramUtils.cxx:3640
 TQHistogramUtils.cxx:3641
 TQHistogramUtils.cxx:3642
 TQHistogramUtils.cxx:3643
 TQHistogramUtils.cxx:3644
 TQHistogramUtils.cxx:3645
 TQHistogramUtils.cxx:3646
 TQHistogramUtils.cxx:3647
 TQHistogramUtils.cxx:3648
 TQHistogramUtils.cxx:3649
 TQHistogramUtils.cxx:3650
 TQHistogramUtils.cxx:3651
 TQHistogramUtils.cxx:3652
 TQHistogramUtils.cxx:3653
 TQHistogramUtils.cxx:3654
 TQHistogramUtils.cxx:3655
 TQHistogramUtils.cxx:3656
 TQHistogramUtils.cxx:3657
 TQHistogramUtils.cxx:3658
 TQHistogramUtils.cxx:3659
 TQHistogramUtils.cxx:3660
 TQHistogramUtils.cxx:3661
 TQHistogramUtils.cxx:3662
 TQHistogramUtils.cxx:3663
 TQHistogramUtils.cxx:3664
 TQHistogramUtils.cxx:3665
 TQHistogramUtils.cxx:3666
 TQHistogramUtils.cxx:3667
 TQHistogramUtils.cxx:3668
 TQHistogramUtils.cxx:3669
 TQHistogramUtils.cxx:3670
 TQHistogramUtils.cxx:3671
 TQHistogramUtils.cxx:3672
 TQHistogramUtils.cxx:3673
 TQHistogramUtils.cxx:3674
 TQHistogramUtils.cxx:3675
 TQHistogramUtils.cxx:3676
 TQHistogramUtils.cxx:3677
 TQHistogramUtils.cxx:3678
 TQHistogramUtils.cxx:3679
 TQHistogramUtils.cxx:3680
 TQHistogramUtils.cxx:3681
 TQHistogramUtils.cxx:3682
 TQHistogramUtils.cxx:3683
 TQHistogramUtils.cxx:3684
 TQHistogramUtils.cxx:3685
 TQHistogramUtils.cxx:3686
 TQHistogramUtils.cxx:3687
 TQHistogramUtils.cxx:3688
 TQHistogramUtils.cxx:3689
 TQHistogramUtils.cxx:3690
 TQHistogramUtils.cxx:3691
 TQHistogramUtils.cxx:3692
 TQHistogramUtils.cxx:3693
 TQHistogramUtils.cxx:3694
 TQHistogramUtils.cxx:3695
 TQHistogramUtils.cxx:3696
 TQHistogramUtils.cxx:3697
 TQHistogramUtils.cxx:3698
 TQHistogramUtils.cxx:3699
 TQHistogramUtils.cxx:3700
 TQHistogramUtils.cxx:3701
 TQHistogramUtils.cxx:3702
 TQHistogramUtils.cxx:3703
 TQHistogramUtils.cxx:3704
 TQHistogramUtils.cxx:3705
 TQHistogramUtils.cxx:3706
 TQHistogramUtils.cxx:3707
 TQHistogramUtils.cxx:3708
 TQHistogramUtils.cxx:3709
 TQHistogramUtils.cxx:3710
 TQHistogramUtils.cxx:3711
 TQHistogramUtils.cxx:3712
 TQHistogramUtils.cxx:3713
 TQHistogramUtils.cxx:3714
 TQHistogramUtils.cxx:3715
 TQHistogramUtils.cxx:3716
 TQHistogramUtils.cxx:3717
 TQHistogramUtils.cxx:3718
 TQHistogramUtils.cxx:3719
 TQHistogramUtils.cxx:3720
 TQHistogramUtils.cxx:3721
 TQHistogramUtils.cxx:3722
 TQHistogramUtils.cxx:3723
 TQHistogramUtils.cxx:3724
 TQHistogramUtils.cxx:3725
 TQHistogramUtils.cxx:3726
 TQHistogramUtils.cxx:3727
 TQHistogramUtils.cxx:3728
 TQHistogramUtils.cxx:3729
 TQHistogramUtils.cxx:3730
 TQHistogramUtils.cxx:3731
 TQHistogramUtils.cxx:3732
 TQHistogramUtils.cxx:3733
 TQHistogramUtils.cxx:3734
 TQHistogramUtils.cxx:3735
 TQHistogramUtils.cxx:3736
 TQHistogramUtils.cxx:3737
 TQHistogramUtils.cxx:3738
 TQHistogramUtils.cxx:3739
 TQHistogramUtils.cxx:3740
 TQHistogramUtils.cxx:3741
 TQHistogramUtils.cxx:3742
 TQHistogramUtils.cxx:3743
 TQHistogramUtils.cxx:3744
 TQHistogramUtils.cxx:3745
 TQHistogramUtils.cxx:3746
 TQHistogramUtils.cxx:3747
 TQHistogramUtils.cxx:3748
 TQHistogramUtils.cxx:3749
 TQHistogramUtils.cxx:3750
 TQHistogramUtils.cxx:3751
 TQHistogramUtils.cxx:3752
 TQHistogramUtils.cxx:3753
 TQHistogramUtils.cxx:3754
 TQHistogramUtils.cxx:3755
 TQHistogramUtils.cxx:3756
 TQHistogramUtils.cxx:3757
 TQHistogramUtils.cxx:3758
 TQHistogramUtils.cxx:3759
 TQHistogramUtils.cxx:3760
 TQHistogramUtils.cxx:3761
 TQHistogramUtils.cxx:3762
 TQHistogramUtils.cxx:3763
 TQHistogramUtils.cxx:3764
 TQHistogramUtils.cxx:3765
 TQHistogramUtils.cxx:3766
 TQHistogramUtils.cxx:3767
 TQHistogramUtils.cxx:3768
 TQHistogramUtils.cxx:3769
 TQHistogramUtils.cxx:3770
 TQHistogramUtils.cxx:3771
 TQHistogramUtils.cxx:3772
 TQHistogramUtils.cxx:3773
 TQHistogramUtils.cxx:3774
 TQHistogramUtils.cxx:3775
 TQHistogramUtils.cxx:3776
 TQHistogramUtils.cxx:3777
 TQHistogramUtils.cxx:3778
 TQHistogramUtils.cxx:3779
 TQHistogramUtils.cxx:3780
 TQHistogramUtils.cxx:3781
 TQHistogramUtils.cxx:3782
 TQHistogramUtils.cxx:3783
 TQHistogramUtils.cxx:3784
 TQHistogramUtils.cxx:3785
 TQHistogramUtils.cxx:3786
 TQHistogramUtils.cxx:3787
 TQHistogramUtils.cxx:3788
 TQHistogramUtils.cxx:3789
 TQHistogramUtils.cxx:3790
 TQHistogramUtils.cxx:3791
 TQHistogramUtils.cxx:3792
 TQHistogramUtils.cxx:3793
 TQHistogramUtils.cxx:3794
 TQHistogramUtils.cxx:3795
 TQHistogramUtils.cxx:3796
 TQHistogramUtils.cxx:3797
 TQHistogramUtils.cxx:3798
 TQHistogramUtils.cxx:3799
 TQHistogramUtils.cxx:3800
 TQHistogramUtils.cxx:3801
 TQHistogramUtils.cxx:3802
 TQHistogramUtils.cxx:3803
 TQHistogramUtils.cxx:3804
 TQHistogramUtils.cxx:3805
 TQHistogramUtils.cxx:3806
 TQHistogramUtils.cxx:3807
 TQHistogramUtils.cxx:3808
 TQHistogramUtils.cxx:3809
 TQHistogramUtils.cxx:3810
 TQHistogramUtils.cxx:3811
 TQHistogramUtils.cxx:3812
 TQHistogramUtils.cxx:3813
 TQHistogramUtils.cxx:3814
 TQHistogramUtils.cxx:3815
 TQHistogramUtils.cxx:3816
 TQHistogramUtils.cxx:3817
 TQHistogramUtils.cxx:3818
 TQHistogramUtils.cxx:3819
 TQHistogramUtils.cxx:3820
 TQHistogramUtils.cxx:3821
 TQHistogramUtils.cxx:3822
 TQHistogramUtils.cxx:3823
 TQHistogramUtils.cxx:3824
 TQHistogramUtils.cxx:3825
 TQHistogramUtils.cxx:3826
 TQHistogramUtils.cxx:3827
 TQHistogramUtils.cxx:3828
 TQHistogramUtils.cxx:3829
 TQHistogramUtils.cxx:3830
 TQHistogramUtils.cxx:3831
 TQHistogramUtils.cxx:3832
 TQHistogramUtils.cxx:3833
 TQHistogramUtils.cxx:3834
 TQHistogramUtils.cxx:3835
 TQHistogramUtils.cxx:3836
 TQHistogramUtils.cxx:3837
 TQHistogramUtils.cxx:3838
 TQHistogramUtils.cxx:3839
 TQHistogramUtils.cxx:3840
 TQHistogramUtils.cxx:3841
 TQHistogramUtils.cxx:3842
 TQHistogramUtils.cxx:3843
 TQHistogramUtils.cxx:3844
 TQHistogramUtils.cxx:3845
 TQHistogramUtils.cxx:3846
 TQHistogramUtils.cxx:3847
 TQHistogramUtils.cxx:3848
 TQHistogramUtils.cxx:3849
 TQHistogramUtils.cxx:3850
 TQHistogramUtils.cxx:3851
 TQHistogramUtils.cxx:3852
 TQHistogramUtils.cxx:3853
 TQHistogramUtils.cxx:3854
 TQHistogramUtils.cxx:3855
 TQHistogramUtils.cxx:3856
 TQHistogramUtils.cxx:3857
 TQHistogramUtils.cxx:3858
 TQHistogramUtils.cxx:3859
 TQHistogramUtils.cxx:3860
 TQHistogramUtils.cxx:3861
 TQHistogramUtils.cxx:3862
 TQHistogramUtils.cxx:3863
 TQHistogramUtils.cxx:3864
 TQHistogramUtils.cxx:3865
 TQHistogramUtils.cxx:3866
 TQHistogramUtils.cxx:3867
 TQHistogramUtils.cxx:3868
 TQHistogramUtils.cxx:3869
 TQHistogramUtils.cxx:3870
 TQHistogramUtils.cxx:3871
 TQHistogramUtils.cxx:3872
 TQHistogramUtils.cxx:3873
 TQHistogramUtils.cxx:3874
 TQHistogramUtils.cxx:3875
 TQHistogramUtils.cxx:3876
 TQHistogramUtils.cxx:3877
 TQHistogramUtils.cxx:3878
 TQHistogramUtils.cxx:3879
 TQHistogramUtils.cxx:3880
 TQHistogramUtils.cxx:3881
 TQHistogramUtils.cxx:3882
 TQHistogramUtils.cxx:3883
 TQHistogramUtils.cxx:3884
 TQHistogramUtils.cxx:3885
 TQHistogramUtils.cxx:3886
 TQHistogramUtils.cxx:3887
 TQHistogramUtils.cxx:3888
 TQHistogramUtils.cxx:3889
 TQHistogramUtils.cxx:3890
 TQHistogramUtils.cxx:3891
 TQHistogramUtils.cxx:3892
 TQHistogramUtils.cxx:3893
 TQHistogramUtils.cxx:3894
 TQHistogramUtils.cxx:3895
 TQHistogramUtils.cxx:3896
 TQHistogramUtils.cxx:3897
 TQHistogramUtils.cxx:3898
 TQHistogramUtils.cxx:3899
 TQHistogramUtils.cxx:3900
 TQHistogramUtils.cxx:3901
 TQHistogramUtils.cxx:3902
 TQHistogramUtils.cxx:3903
 TQHistogramUtils.cxx:3904
 TQHistogramUtils.cxx:3905
 TQHistogramUtils.cxx:3906
 TQHistogramUtils.cxx:3907
 TQHistogramUtils.cxx:3908
 TQHistogramUtils.cxx:3909
 TQHistogramUtils.cxx:3910
 TQHistogramUtils.cxx:3911
 TQHistogramUtils.cxx:3912
 TQHistogramUtils.cxx:3913
 TQHistogramUtils.cxx:3914
 TQHistogramUtils.cxx:3915
 TQHistogramUtils.cxx:3916
 TQHistogramUtils.cxx:3917
 TQHistogramUtils.cxx:3918
 TQHistogramUtils.cxx:3919
 TQHistogramUtils.cxx:3920
 TQHistogramUtils.cxx:3921
 TQHistogramUtils.cxx:3922
 TQHistogramUtils.cxx:3923
 TQHistogramUtils.cxx:3924
 TQHistogramUtils.cxx:3925
 TQHistogramUtils.cxx:3926
 TQHistogramUtils.cxx:3927
 TQHistogramUtils.cxx:3928
 TQHistogramUtils.cxx:3929
 TQHistogramUtils.cxx:3930
 TQHistogramUtils.cxx:3931
 TQHistogramUtils.cxx:3932
 TQHistogramUtils.cxx:3933
 TQHistogramUtils.cxx:3934
 TQHistogramUtils.cxx:3935
 TQHistogramUtils.cxx:3936
 TQHistogramUtils.cxx:3937
 TQHistogramUtils.cxx:3938
 TQHistogramUtils.cxx:3939
 TQHistogramUtils.cxx:3940
 TQHistogramUtils.cxx:3941
 TQHistogramUtils.cxx:3942
 TQHistogramUtils.cxx:3943
 TQHistogramUtils.cxx:3944
 TQHistogramUtils.cxx:3945
 TQHistogramUtils.cxx:3946
 TQHistogramUtils.cxx:3947
 TQHistogramUtils.cxx:3948
 TQHistogramUtils.cxx:3949
 TQHistogramUtils.cxx:3950
 TQHistogramUtils.cxx:3951
 TQHistogramUtils.cxx:3952
 TQHistogramUtils.cxx:3953
 TQHistogramUtils.cxx:3954
 TQHistogramUtils.cxx:3955
 TQHistogramUtils.cxx:3956
 TQHistogramUtils.cxx:3957
 TQHistogramUtils.cxx:3958
 TQHistogramUtils.cxx:3959
 TQHistogramUtils.cxx:3960
 TQHistogramUtils.cxx:3961
 TQHistogramUtils.cxx:3962
 TQHistogramUtils.cxx:3963
 TQHistogramUtils.cxx:3964
 TQHistogramUtils.cxx:3965
 TQHistogramUtils.cxx:3966
 TQHistogramUtils.cxx:3967
 TQHistogramUtils.cxx:3968
 TQHistogramUtils.cxx:3969
 TQHistogramUtils.cxx:3970
 TQHistogramUtils.cxx:3971
 TQHistogramUtils.cxx:3972
 TQHistogramUtils.cxx:3973
 TQHistogramUtils.cxx:3974
 TQHistogramUtils.cxx:3975
 TQHistogramUtils.cxx:3976
 TQHistogramUtils.cxx:3977
 TQHistogramUtils.cxx:3978
 TQHistogramUtils.cxx:3979
 TQHistogramUtils.cxx:3980
 TQHistogramUtils.cxx:3981
 TQHistogramUtils.cxx:3982
 TQHistogramUtils.cxx:3983
 TQHistogramUtils.cxx:3984
 TQHistogramUtils.cxx:3985
 TQHistogramUtils.cxx:3986
 TQHistogramUtils.cxx:3987
 TQHistogramUtils.cxx:3988
 TQHistogramUtils.cxx:3989
 TQHistogramUtils.cxx:3990
 TQHistogramUtils.cxx:3991
 TQHistogramUtils.cxx:3992
 TQHistogramUtils.cxx:3993
 TQHistogramUtils.cxx:3994
 TQHistogramUtils.cxx:3995
 TQHistogramUtils.cxx:3996
 TQHistogramUtils.cxx:3997
 TQHistogramUtils.cxx:3998
 TQHistogramUtils.cxx:3999
 TQHistogramUtils.cxx:4000
 TQHistogramUtils.cxx:4001
 TQHistogramUtils.cxx:4002
 TQHistogramUtils.cxx:4003
 TQHistogramUtils.cxx:4004
 TQHistogramUtils.cxx:4005
 TQHistogramUtils.cxx:4006
 TQHistogramUtils.cxx:4007
 TQHistogramUtils.cxx:4008
 TQHistogramUtils.cxx:4009
 TQHistogramUtils.cxx:4010
 TQHistogramUtils.cxx:4011
 TQHistogramUtils.cxx:4012
 TQHistogramUtils.cxx:4013
 TQHistogramUtils.cxx:4014
 TQHistogramUtils.cxx:4015
 TQHistogramUtils.cxx:4016
 TQHistogramUtils.cxx:4017
 TQHistogramUtils.cxx:4018
 TQHistogramUtils.cxx:4019
 TQHistogramUtils.cxx:4020
 TQHistogramUtils.cxx:4021
 TQHistogramUtils.cxx:4022
 TQHistogramUtils.cxx:4023
 TQHistogramUtils.cxx:4024
 TQHistogramUtils.cxx:4025
 TQHistogramUtils.cxx:4026
 TQHistogramUtils.cxx:4027
 TQHistogramUtils.cxx:4028
 TQHistogramUtils.cxx:4029
 TQHistogramUtils.cxx:4030
 TQHistogramUtils.cxx:4031
 TQHistogramUtils.cxx:4032
 TQHistogramUtils.cxx:4033
 TQHistogramUtils.cxx:4034
 TQHistogramUtils.cxx:4035
 TQHistogramUtils.cxx:4036
 TQHistogramUtils.cxx:4037
 TQHistogramUtils.cxx:4038
 TQHistogramUtils.cxx:4039
 TQHistogramUtils.cxx:4040
 TQHistogramUtils.cxx:4041
 TQHistogramUtils.cxx:4042
 TQHistogramUtils.cxx:4043
 TQHistogramUtils.cxx:4044
 TQHistogramUtils.cxx:4045
 TQHistogramUtils.cxx:4046
 TQHistogramUtils.cxx:4047
 TQHistogramUtils.cxx:4048
 TQHistogramUtils.cxx:4049
 TQHistogramUtils.cxx:4050
 TQHistogramUtils.cxx:4051
 TQHistogramUtils.cxx:4052
 TQHistogramUtils.cxx:4053
 TQHistogramUtils.cxx:4054
 TQHistogramUtils.cxx:4055
 TQHistogramUtils.cxx:4056
 TQHistogramUtils.cxx:4057
 TQHistogramUtils.cxx:4058
 TQHistogramUtils.cxx:4059
 TQHistogramUtils.cxx:4060
 TQHistogramUtils.cxx:4061
 TQHistogramUtils.cxx:4062
 TQHistogramUtils.cxx:4063
 TQHistogramUtils.cxx:4064
 TQHistogramUtils.cxx:4065
 TQHistogramUtils.cxx:4066
 TQHistogramUtils.cxx:4067
 TQHistogramUtils.cxx:4068
 TQHistogramUtils.cxx:4069
 TQHistogramUtils.cxx:4070
 TQHistogramUtils.cxx:4071
 TQHistogramUtils.cxx:4072
 TQHistogramUtils.cxx:4073
 TQHistogramUtils.cxx:4074
 TQHistogramUtils.cxx:4075
 TQHistogramUtils.cxx:4076
 TQHistogramUtils.cxx:4077
 TQHistogramUtils.cxx:4078
 TQHistogramUtils.cxx:4079
 TQHistogramUtils.cxx:4080
 TQHistogramUtils.cxx:4081
 TQHistogramUtils.cxx:4082
 TQHistogramUtils.cxx:4083
 TQHistogramUtils.cxx:4084
 TQHistogramUtils.cxx:4085
 TQHistogramUtils.cxx:4086
 TQHistogramUtils.cxx:4087
 TQHistogramUtils.cxx:4088
 TQHistogramUtils.cxx:4089
 TQHistogramUtils.cxx:4090
 TQHistogramUtils.cxx:4091
 TQHistogramUtils.cxx:4092
 TQHistogramUtils.cxx:4093
 TQHistogramUtils.cxx:4094
 TQHistogramUtils.cxx:4095
 TQHistogramUtils.cxx:4096
 TQHistogramUtils.cxx:4097
 TQHistogramUtils.cxx:4098
 TQHistogramUtils.cxx:4099
 TQHistogramUtils.cxx:4100
 TQHistogramUtils.cxx:4101
 TQHistogramUtils.cxx:4102
 TQHistogramUtils.cxx:4103
 TQHistogramUtils.cxx:4104
 TQHistogramUtils.cxx:4105
 TQHistogramUtils.cxx:4106
 TQHistogramUtils.cxx:4107
 TQHistogramUtils.cxx:4108
 TQHistogramUtils.cxx:4109
 TQHistogramUtils.cxx:4110
 TQHistogramUtils.cxx:4111
 TQHistogramUtils.cxx:4112
 TQHistogramUtils.cxx:4113
 TQHistogramUtils.cxx:4114
 TQHistogramUtils.cxx:4115
 TQHistogramUtils.cxx:4116
 TQHistogramUtils.cxx:4117
 TQHistogramUtils.cxx:4118
 TQHistogramUtils.cxx:4119
 TQHistogramUtils.cxx:4120
 TQHistogramUtils.cxx:4121
 TQHistogramUtils.cxx:4122
 TQHistogramUtils.cxx:4123
 TQHistogramUtils.cxx:4124
 TQHistogramUtils.cxx:4125
 TQHistogramUtils.cxx:4126
 TQHistogramUtils.cxx:4127
 TQHistogramUtils.cxx:4128
 TQHistogramUtils.cxx:4129
 TQHistogramUtils.cxx:4130
 TQHistogramUtils.cxx:4131
 TQHistogramUtils.cxx:4132
 TQHistogramUtils.cxx:4133
 TQHistogramUtils.cxx:4134
 TQHistogramUtils.cxx:4135
 TQHistogramUtils.cxx:4136
 TQHistogramUtils.cxx:4137
 TQHistogramUtils.cxx:4138
 TQHistogramUtils.cxx:4139
 TQHistogramUtils.cxx:4140
 TQHistogramUtils.cxx:4141
 TQHistogramUtils.cxx:4142
 TQHistogramUtils.cxx:4143
 TQHistogramUtils.cxx:4144
 TQHistogramUtils.cxx:4145
 TQHistogramUtils.cxx:4146
 TQHistogramUtils.cxx:4147
 TQHistogramUtils.cxx:4148
 TQHistogramUtils.cxx:4149
 TQHistogramUtils.cxx:4150
 TQHistogramUtils.cxx:4151
 TQHistogramUtils.cxx:4152
 TQHistogramUtils.cxx:4153
 TQHistogramUtils.cxx:4154
 TQHistogramUtils.cxx:4155
 TQHistogramUtils.cxx:4156
 TQHistogramUtils.cxx:4157
 TQHistogramUtils.cxx:4158
 TQHistogramUtils.cxx:4159
 TQHistogramUtils.cxx:4160
 TQHistogramUtils.cxx:4161
 TQHistogramUtils.cxx:4162
 TQHistogramUtils.cxx:4163
 TQHistogramUtils.cxx:4164
 TQHistogramUtils.cxx:4165
 TQHistogramUtils.cxx:4166
 TQHistogramUtils.cxx:4167
 TQHistogramUtils.cxx:4168
 TQHistogramUtils.cxx:4169
 TQHistogramUtils.cxx:4170
 TQHistogramUtils.cxx:4171
 TQHistogramUtils.cxx:4172
 TQHistogramUtils.cxx:4173
 TQHistogramUtils.cxx:4174
 TQHistogramUtils.cxx:4175
 TQHistogramUtils.cxx:4176
 TQHistogramUtils.cxx:4177
 TQHistogramUtils.cxx:4178
 TQHistogramUtils.cxx:4179
 TQHistogramUtils.cxx:4180
 TQHistogramUtils.cxx:4181
 TQHistogramUtils.cxx:4182
 TQHistogramUtils.cxx:4183
 TQHistogramUtils.cxx:4184
 TQHistogramUtils.cxx:4185
 TQHistogramUtils.cxx:4186
 TQHistogramUtils.cxx:4187
 TQHistogramUtils.cxx:4188
 TQHistogramUtils.cxx:4189
 TQHistogramUtils.cxx:4190
 TQHistogramUtils.cxx:4191
 TQHistogramUtils.cxx:4192
 TQHistogramUtils.cxx:4193
 TQHistogramUtils.cxx:4194
 TQHistogramUtils.cxx:4195
 TQHistogramUtils.cxx:4196
 TQHistogramUtils.cxx:4197
 TQHistogramUtils.cxx:4198
 TQHistogramUtils.cxx:4199
 TQHistogramUtils.cxx:4200
 TQHistogramUtils.cxx:4201
 TQHistogramUtils.cxx:4202
 TQHistogramUtils.cxx:4203
 TQHistogramUtils.cxx:4204
 TQHistogramUtils.cxx:4205
 TQHistogramUtils.cxx:4206
 TQHistogramUtils.cxx:4207
 TQHistogramUtils.cxx:4208
 TQHistogramUtils.cxx:4209
 TQHistogramUtils.cxx:4210
 TQHistogramUtils.cxx:4211
 TQHistogramUtils.cxx:4212
 TQHistogramUtils.cxx:4213
 TQHistogramUtils.cxx:4214
 TQHistogramUtils.cxx:4215
 TQHistogramUtils.cxx:4216
 TQHistogramUtils.cxx:4217
 TQHistogramUtils.cxx:4218
 TQHistogramUtils.cxx:4219
 TQHistogramUtils.cxx:4220
 TQHistogramUtils.cxx:4221
 TQHistogramUtils.cxx:4222
 TQHistogramUtils.cxx:4223
 TQHistogramUtils.cxx:4224
 TQHistogramUtils.cxx:4225
 TQHistogramUtils.cxx:4226
 TQHistogramUtils.cxx:4227
 TQHistogramUtils.cxx:4228
 TQHistogramUtils.cxx:4229
 TQHistogramUtils.cxx:4230
 TQHistogramUtils.cxx:4231
 TQHistogramUtils.cxx:4232
 TQHistogramUtils.cxx:4233
 TQHistogramUtils.cxx:4234
 TQHistogramUtils.cxx:4235
 TQHistogramUtils.cxx:4236
 TQHistogramUtils.cxx:4237
 TQHistogramUtils.cxx:4238
 TQHistogramUtils.cxx:4239
 TQHistogramUtils.cxx:4240
 TQHistogramUtils.cxx:4241
 TQHistogramUtils.cxx:4242
 TQHistogramUtils.cxx:4243
 TQHistogramUtils.cxx:4244
 TQHistogramUtils.cxx:4245
 TQHistogramUtils.cxx:4246
 TQHistogramUtils.cxx:4247
 TQHistogramUtils.cxx:4248
 TQHistogramUtils.cxx:4249
 TQHistogramUtils.cxx:4250
 TQHistogramUtils.cxx:4251
 TQHistogramUtils.cxx:4252
 TQHistogramUtils.cxx:4253
 TQHistogramUtils.cxx:4254
 TQHistogramUtils.cxx:4255
 TQHistogramUtils.cxx:4256
 TQHistogramUtils.cxx:4257
 TQHistogramUtils.cxx:4258
 TQHistogramUtils.cxx:4259
 TQHistogramUtils.cxx:4260
 TQHistogramUtils.cxx:4261
 TQHistogramUtils.cxx:4262
 TQHistogramUtils.cxx:4263
 TQHistogramUtils.cxx:4264
 TQHistogramUtils.cxx:4265
 TQHistogramUtils.cxx:4266
 TQHistogramUtils.cxx:4267
 TQHistogramUtils.cxx:4268
 TQHistogramUtils.cxx:4269
 TQHistogramUtils.cxx:4270
 TQHistogramUtils.cxx:4271
 TQHistogramUtils.cxx:4272
 TQHistogramUtils.cxx:4273
 TQHistogramUtils.cxx:4274
 TQHistogramUtils.cxx:4275
 TQHistogramUtils.cxx:4276
 TQHistogramUtils.cxx:4277
 TQHistogramUtils.cxx:4278
 TQHistogramUtils.cxx:4279
 TQHistogramUtils.cxx:4280
 TQHistogramUtils.cxx:4281
 TQHistogramUtils.cxx:4282
 TQHistogramUtils.cxx:4283
 TQHistogramUtils.cxx:4284
 TQHistogramUtils.cxx:4285
 TQHistogramUtils.cxx:4286
 TQHistogramUtils.cxx:4287
 TQHistogramUtils.cxx:4288
 TQHistogramUtils.cxx:4289
 TQHistogramUtils.cxx:4290
 TQHistogramUtils.cxx:4291
 TQHistogramUtils.cxx:4292
 TQHistogramUtils.cxx:4293
 TQHistogramUtils.cxx:4294
 TQHistogramUtils.cxx:4295
 TQHistogramUtils.cxx:4296
 TQHistogramUtils.cxx:4297
 TQHistogramUtils.cxx:4298
 TQHistogramUtils.cxx:4299
 TQHistogramUtils.cxx:4300
 TQHistogramUtils.cxx:4301
 TQHistogramUtils.cxx:4302
 TQHistogramUtils.cxx:4303
 TQHistogramUtils.cxx:4304
 TQHistogramUtils.cxx:4305
 TQHistogramUtils.cxx:4306
 TQHistogramUtils.cxx:4307
 TQHistogramUtils.cxx:4308
 TQHistogramUtils.cxx:4309
 TQHistogramUtils.cxx:4310
 TQHistogramUtils.cxx:4311
 TQHistogramUtils.cxx:4312
 TQHistogramUtils.cxx:4313
 TQHistogramUtils.cxx:4314
 TQHistogramUtils.cxx:4315
 TQHistogramUtils.cxx:4316
 TQHistogramUtils.cxx:4317
 TQHistogramUtils.cxx:4318
 TQHistogramUtils.cxx:4319
 TQHistogramUtils.cxx:4320
 TQHistogramUtils.cxx:4321
 TQHistogramUtils.cxx:4322
 TQHistogramUtils.cxx:4323
 TQHistogramUtils.cxx:4324
 TQHistogramUtils.cxx:4325
 TQHistogramUtils.cxx:4326
 TQHistogramUtils.cxx:4327
 TQHistogramUtils.cxx:4328
 TQHistogramUtils.cxx:4329
 TQHistogramUtils.cxx:4330
 TQHistogramUtils.cxx:4331
 TQHistogramUtils.cxx:4332
 TQHistogramUtils.cxx:4333
 TQHistogramUtils.cxx:4334
 TQHistogramUtils.cxx:4335
 TQHistogramUtils.cxx:4336
 TQHistogramUtils.cxx:4337
 TQHistogramUtils.cxx:4338
 TQHistogramUtils.cxx:4339
 TQHistogramUtils.cxx:4340
 TQHistogramUtils.cxx:4341
 TQHistogramUtils.cxx:4342
 TQHistogramUtils.cxx:4343
 TQHistogramUtils.cxx:4344
 TQHistogramUtils.cxx:4345
 TQHistogramUtils.cxx:4346
 TQHistogramUtils.cxx:4347
 TQHistogramUtils.cxx:4348
 TQHistogramUtils.cxx:4349
 TQHistogramUtils.cxx:4350
 TQHistogramUtils.cxx:4351
 TQHistogramUtils.cxx:4352
 TQHistogramUtils.cxx:4353
 TQHistogramUtils.cxx:4354
 TQHistogramUtils.cxx:4355
 TQHistogramUtils.cxx:4356
 TQHistogramUtils.cxx:4357
 TQHistogramUtils.cxx:4358
 TQHistogramUtils.cxx:4359
 TQHistogramUtils.cxx:4360
 TQHistogramUtils.cxx:4361
 TQHistogramUtils.cxx:4362
 TQHistogramUtils.cxx:4363
 TQHistogramUtils.cxx:4364
 TQHistogramUtils.cxx:4365
 TQHistogramUtils.cxx:4366
 TQHistogramUtils.cxx:4367
 TQHistogramUtils.cxx:4368
 TQHistogramUtils.cxx:4369
 TQHistogramUtils.cxx:4370
 TQHistogramUtils.cxx:4371
 TQHistogramUtils.cxx:4372
 TQHistogramUtils.cxx:4373
 TQHistogramUtils.cxx:4374
 TQHistogramUtils.cxx:4375
 TQHistogramUtils.cxx:4376
 TQHistogramUtils.cxx:4377
 TQHistogramUtils.cxx:4378
 TQHistogramUtils.cxx:4379
 TQHistogramUtils.cxx:4380
 TQHistogramUtils.cxx:4381
 TQHistogramUtils.cxx:4382
 TQHistogramUtils.cxx:4383
 TQHistogramUtils.cxx:4384
 TQHistogramUtils.cxx:4385
 TQHistogramUtils.cxx:4386
 TQHistogramUtils.cxx:4387
 TQHistogramUtils.cxx:4388
 TQHistogramUtils.cxx:4389
 TQHistogramUtils.cxx:4390
 TQHistogramUtils.cxx:4391
 TQHistogramUtils.cxx:4392
 TQHistogramUtils.cxx:4393
 TQHistogramUtils.cxx:4394
 TQHistogramUtils.cxx:4395
 TQHistogramUtils.cxx:4396
 TQHistogramUtils.cxx:4397
 TQHistogramUtils.cxx:4398
 TQHistogramUtils.cxx:4399
 TQHistogramUtils.cxx:4400
 TQHistogramUtils.cxx:4401
 TQHistogramUtils.cxx:4402
 TQHistogramUtils.cxx:4403
 TQHistogramUtils.cxx:4404
 TQHistogramUtils.cxx:4405
 TQHistogramUtils.cxx:4406
 TQHistogramUtils.cxx:4407
 TQHistogramUtils.cxx:4408
 TQHistogramUtils.cxx:4409
 TQHistogramUtils.cxx:4410
 TQHistogramUtils.cxx:4411
 TQHistogramUtils.cxx:4412
 TQHistogramUtils.cxx:4413
 TQHistogramUtils.cxx:4414
 TQHistogramUtils.cxx:4415
 TQHistogramUtils.cxx:4416
 TQHistogramUtils.cxx:4417
 TQHistogramUtils.cxx:4418
 TQHistogramUtils.cxx:4419
 TQHistogramUtils.cxx:4420
 TQHistogramUtils.cxx:4421
 TQHistogramUtils.cxx:4422
 TQHistogramUtils.cxx:4423
 TQHistogramUtils.cxx:4424
 TQHistogramUtils.cxx:4425
 TQHistogramUtils.cxx:4426
 TQHistogramUtils.cxx:4427
 TQHistogramUtils.cxx:4428
 TQHistogramUtils.cxx:4429
 TQHistogramUtils.cxx:4430
 TQHistogramUtils.cxx:4431
 TQHistogramUtils.cxx:4432
 TQHistogramUtils.cxx:4433
 TQHistogramUtils.cxx:4434
 TQHistogramUtils.cxx:4435
 TQHistogramUtils.cxx:4436
 TQHistogramUtils.cxx:4437
 TQHistogramUtils.cxx:4438
 TQHistogramUtils.cxx:4439
 TQHistogramUtils.cxx:4440
 TQHistogramUtils.cxx:4441
 TQHistogramUtils.cxx:4442
 TQHistogramUtils.cxx:4443
 TQHistogramUtils.cxx:4444
 TQHistogramUtils.cxx:4445
 TQHistogramUtils.cxx:4446
 TQHistogramUtils.cxx:4447
 TQHistogramUtils.cxx:4448
 TQHistogramUtils.cxx:4449
 TQHistogramUtils.cxx:4450
 TQHistogramUtils.cxx:4451
 TQHistogramUtils.cxx:4452
 TQHistogramUtils.cxx:4453
 TQHistogramUtils.cxx:4454
 TQHistogramUtils.cxx:4455
 TQHistogramUtils.cxx:4456
 TQHistogramUtils.cxx:4457
 TQHistogramUtils.cxx:4458
 TQHistogramUtils.cxx:4459
 TQHistogramUtils.cxx:4460
 TQHistogramUtils.cxx:4461
 TQHistogramUtils.cxx:4462
 TQHistogramUtils.cxx:4463
 TQHistogramUtils.cxx:4464
 TQHistogramUtils.cxx:4465
 TQHistogramUtils.cxx:4466
 TQHistogramUtils.cxx:4467
 TQHistogramUtils.cxx:4468
 TQHistogramUtils.cxx:4469
 TQHistogramUtils.cxx:4470
 TQHistogramUtils.cxx:4471
 TQHistogramUtils.cxx:4472
 TQHistogramUtils.cxx:4473
 TQHistogramUtils.cxx:4474
 TQHistogramUtils.cxx:4475
 TQHistogramUtils.cxx:4476
 TQHistogramUtils.cxx:4477
 TQHistogramUtils.cxx:4478
 TQHistogramUtils.cxx:4479
 TQHistogramUtils.cxx:4480
 TQHistogramUtils.cxx:4481
 TQHistogramUtils.cxx:4482
 TQHistogramUtils.cxx:4483
 TQHistogramUtils.cxx:4484
 TQHistogramUtils.cxx:4485
 TQHistogramUtils.cxx:4486
 TQHistogramUtils.cxx:4487
 TQHistogramUtils.cxx:4488
 TQHistogramUtils.cxx:4489
 TQHistogramUtils.cxx:4490
 TQHistogramUtils.cxx:4491
 TQHistogramUtils.cxx:4492
 TQHistogramUtils.cxx:4493
 TQHistogramUtils.cxx:4494
 TQHistogramUtils.cxx:4495
 TQHistogramUtils.cxx:4496
 TQHistogramUtils.cxx:4497
 TQHistogramUtils.cxx:4498
 TQHistogramUtils.cxx:4499
 TQHistogramUtils.cxx:4500
 TQHistogramUtils.cxx:4501
 TQHistogramUtils.cxx:4502
 TQHistogramUtils.cxx:4503
 TQHistogramUtils.cxx:4504
 TQHistogramUtils.cxx:4505
 TQHistogramUtils.cxx:4506
 TQHistogramUtils.cxx:4507
 TQHistogramUtils.cxx:4508
 TQHistogramUtils.cxx:4509
 TQHistogramUtils.cxx:4510
 TQHistogramUtils.cxx:4511
 TQHistogramUtils.cxx:4512
 TQHistogramUtils.cxx:4513
 TQHistogramUtils.cxx:4514
 TQHistogramUtils.cxx:4515
 TQHistogramUtils.cxx:4516
 TQHistogramUtils.cxx:4517
 TQHistogramUtils.cxx:4518
 TQHistogramUtils.cxx:4519
 TQHistogramUtils.cxx:4520
 TQHistogramUtils.cxx:4521
 TQHistogramUtils.cxx:4522
 TQHistogramUtils.cxx:4523
 TQHistogramUtils.cxx:4524
 TQHistogramUtils.cxx:4525
 TQHistogramUtils.cxx:4526
 TQHistogramUtils.cxx:4527
 TQHistogramUtils.cxx:4528
 TQHistogramUtils.cxx:4529
 TQHistogramUtils.cxx:4530
 TQHistogramUtils.cxx:4531
 TQHistogramUtils.cxx:4532
 TQHistogramUtils.cxx:4533
 TQHistogramUtils.cxx:4534
 TQHistogramUtils.cxx:4535
 TQHistogramUtils.cxx:4536
 TQHistogramUtils.cxx:4537
 TQHistogramUtils.cxx:4538
 TQHistogramUtils.cxx:4539
 TQHistogramUtils.cxx:4540
 TQHistogramUtils.cxx:4541
 TQHistogramUtils.cxx:4542
 TQHistogramUtils.cxx:4543
 TQHistogramUtils.cxx:4544
 TQHistogramUtils.cxx:4545
 TQHistogramUtils.cxx:4546
 TQHistogramUtils.cxx:4547
 TQHistogramUtils.cxx:4548
 TQHistogramUtils.cxx:4549
 TQHistogramUtils.cxx:4550
 TQHistogramUtils.cxx:4551
 TQHistogramUtils.cxx:4552
 TQHistogramUtils.cxx:4553
 TQHistogramUtils.cxx:4554
 TQHistogramUtils.cxx:4555
 TQHistogramUtils.cxx:4556
 TQHistogramUtils.cxx:4557
 TQHistogramUtils.cxx:4558
 TQHistogramUtils.cxx:4559
 TQHistogramUtils.cxx:4560
 TQHistogramUtils.cxx:4561
 TQHistogramUtils.cxx:4562
 TQHistogramUtils.cxx:4563
 TQHistogramUtils.cxx:4564
 TQHistogramUtils.cxx:4565
 TQHistogramUtils.cxx:4566
 TQHistogramUtils.cxx:4567
 TQHistogramUtils.cxx:4568
 TQHistogramUtils.cxx:4569
 TQHistogramUtils.cxx:4570
 TQHistogramUtils.cxx:4571
 TQHistogramUtils.cxx:4572
 TQHistogramUtils.cxx:4573
 TQHistogramUtils.cxx:4574
 TQHistogramUtils.cxx:4575
 TQHistogramUtils.cxx:4576
 TQHistogramUtils.cxx:4577
 TQHistogramUtils.cxx:4578
 TQHistogramUtils.cxx:4579
 TQHistogramUtils.cxx:4580
 TQHistogramUtils.cxx:4581
 TQHistogramUtils.cxx:4582
 TQHistogramUtils.cxx:4583
 TQHistogramUtils.cxx:4584
 TQHistogramUtils.cxx:4585
 TQHistogramUtils.cxx:4586
 TQHistogramUtils.cxx:4587
 TQHistogramUtils.cxx:4588
 TQHistogramUtils.cxx:4589
 TQHistogramUtils.cxx:4590
 TQHistogramUtils.cxx:4591
 TQHistogramUtils.cxx:4592
 TQHistogramUtils.cxx:4593
 TQHistogramUtils.cxx:4594
 TQHistogramUtils.cxx:4595
 TQHistogramUtils.cxx:4596
 TQHistogramUtils.cxx:4597
 TQHistogramUtils.cxx:4598
 TQHistogramUtils.cxx:4599
 TQHistogramUtils.cxx:4600
 TQHistogramUtils.cxx:4601
 TQHistogramUtils.cxx:4602
 TQHistogramUtils.cxx:4603
 TQHistogramUtils.cxx:4604
 TQHistogramUtils.cxx:4605
 TQHistogramUtils.cxx:4606
 TQHistogramUtils.cxx:4607
 TQHistogramUtils.cxx:4608
 TQHistogramUtils.cxx:4609
 TQHistogramUtils.cxx:4610
 TQHistogramUtils.cxx:4611
 TQHistogramUtils.cxx:4612
 TQHistogramUtils.cxx:4613
 TQHistogramUtils.cxx:4614
 TQHistogramUtils.cxx:4615
 TQHistogramUtils.cxx:4616
 TQHistogramUtils.cxx:4617
 TQHistogramUtils.cxx:4618
 TQHistogramUtils.cxx:4619
 TQHistogramUtils.cxx:4620
 TQHistogramUtils.cxx:4621
 TQHistogramUtils.cxx:4622
 TQHistogramUtils.cxx:4623
 TQHistogramUtils.cxx:4624
 TQHistogramUtils.cxx:4625
 TQHistogramUtils.cxx:4626
 TQHistogramUtils.cxx:4627
 TQHistogramUtils.cxx:4628
 TQHistogramUtils.cxx:4629
 TQHistogramUtils.cxx:4630
 TQHistogramUtils.cxx:4631
 TQHistogramUtils.cxx:4632
 TQHistogramUtils.cxx:4633
 TQHistogramUtils.cxx:4634
 TQHistogramUtils.cxx:4635
 TQHistogramUtils.cxx:4636
 TQHistogramUtils.cxx:4637
 TQHistogramUtils.cxx:4638
 TQHistogramUtils.cxx:4639
 TQHistogramUtils.cxx:4640
 TQHistogramUtils.cxx:4641
 TQHistogramUtils.cxx:4642
 TQHistogramUtils.cxx:4643
 TQHistogramUtils.cxx:4644
 TQHistogramUtils.cxx:4645
 TQHistogramUtils.cxx:4646
 TQHistogramUtils.cxx:4647
 TQHistogramUtils.cxx:4648
 TQHistogramUtils.cxx:4649
 TQHistogramUtils.cxx:4650
 TQHistogramUtils.cxx:4651
 TQHistogramUtils.cxx:4652
 TQHistogramUtils.cxx:4653
 TQHistogramUtils.cxx:4654
 TQHistogramUtils.cxx:4655
 TQHistogramUtils.cxx:4656
 TQHistogramUtils.cxx:4657
 TQHistogramUtils.cxx:4658
 TQHistogramUtils.cxx:4659
 TQHistogramUtils.cxx:4660
 TQHistogramUtils.cxx:4661
 TQHistogramUtils.cxx:4662
 TQHistogramUtils.cxx:4663
 TQHistogramUtils.cxx:4664
 TQHistogramUtils.cxx:4665
 TQHistogramUtils.cxx:4666
 TQHistogramUtils.cxx:4667
 TQHistogramUtils.cxx:4668
 TQHistogramUtils.cxx:4669
 TQHistogramUtils.cxx:4670
 TQHistogramUtils.cxx:4671
 TQHistogramUtils.cxx:4672
 TQHistogramUtils.cxx:4673
 TQHistogramUtils.cxx:4674
 TQHistogramUtils.cxx:4675
 TQHistogramUtils.cxx:4676
 TQHistogramUtils.cxx:4677
 TQHistogramUtils.cxx:4678
 TQHistogramUtils.cxx:4679
 TQHistogramUtils.cxx:4680
 TQHistogramUtils.cxx:4681
 TQHistogramUtils.cxx:4682
 TQHistogramUtils.cxx:4683
 TQHistogramUtils.cxx:4684
 TQHistogramUtils.cxx:4685
 TQHistogramUtils.cxx:4686
 TQHistogramUtils.cxx:4687
 TQHistogramUtils.cxx:4688
 TQHistogramUtils.cxx:4689
 TQHistogramUtils.cxx:4690
 TQHistogramUtils.cxx:4691
 TQHistogramUtils.cxx:4692
 TQHistogramUtils.cxx:4693
 TQHistogramUtils.cxx:4694
 TQHistogramUtils.cxx:4695
 TQHistogramUtils.cxx:4696
 TQHistogramUtils.cxx:4697
 TQHistogramUtils.cxx:4698
 TQHistogramUtils.cxx:4699
 TQHistogramUtils.cxx:4700
 TQHistogramUtils.cxx:4701
 TQHistogramUtils.cxx:4702
 TQHistogramUtils.cxx:4703
 TQHistogramUtils.cxx:4704
 TQHistogramUtils.cxx:4705
 TQHistogramUtils.cxx:4706
 TQHistogramUtils.cxx:4707
 TQHistogramUtils.cxx:4708
 TQHistogramUtils.cxx:4709
 TQHistogramUtils.cxx:4710
 TQHistogramUtils.cxx:4711
 TQHistogramUtils.cxx:4712
 TQHistogramUtils.cxx:4713
 TQHistogramUtils.cxx:4714
 TQHistogramUtils.cxx:4715
 TQHistogramUtils.cxx:4716
 TQHistogramUtils.cxx:4717
 TQHistogramUtils.cxx:4718
 TQHistogramUtils.cxx:4719
 TQHistogramUtils.cxx:4720
 TQHistogramUtils.cxx:4721
 TQHistogramUtils.cxx:4722
 TQHistogramUtils.cxx:4723
 TQHistogramUtils.cxx:4724
 TQHistogramUtils.cxx:4725
 TQHistogramUtils.cxx:4726
 TQHistogramUtils.cxx:4727
 TQHistogramUtils.cxx:4728
 TQHistogramUtils.cxx:4729
 TQHistogramUtils.cxx:4730
 TQHistogramUtils.cxx:4731
 TQHistogramUtils.cxx:4732
 TQHistogramUtils.cxx:4733
 TQHistogramUtils.cxx:4734
 TQHistogramUtils.cxx:4735
 TQHistogramUtils.cxx:4736
 TQHistogramUtils.cxx:4737
 TQHistogramUtils.cxx:4738
 TQHistogramUtils.cxx:4739
 TQHistogramUtils.cxx:4740
 TQHistogramUtils.cxx:4741
 TQHistogramUtils.cxx:4742
 TQHistogramUtils.cxx:4743
 TQHistogramUtils.cxx:4744
 TQHistogramUtils.cxx:4745
 TQHistogramUtils.cxx:4746
 TQHistogramUtils.cxx:4747
 TQHistogramUtils.cxx:4748
 TQHistogramUtils.cxx:4749
 TQHistogramUtils.cxx:4750
 TQHistogramUtils.cxx:4751
 TQHistogramUtils.cxx:4752
 TQHistogramUtils.cxx:4753
 TQHistogramUtils.cxx:4754
 TQHistogramUtils.cxx:4755
 TQHistogramUtils.cxx:4756
 TQHistogramUtils.cxx:4757
 TQHistogramUtils.cxx:4758
 TQHistogramUtils.cxx:4759
 TQHistogramUtils.cxx:4760
 TQHistogramUtils.cxx:4761
 TQHistogramUtils.cxx:4762
 TQHistogramUtils.cxx:4763
 TQHistogramUtils.cxx:4764
 TQHistogramUtils.cxx:4765
 TQHistogramUtils.cxx:4766
 TQHistogramUtils.cxx:4767
 TQHistogramUtils.cxx:4768
 TQHistogramUtils.cxx:4769
 TQHistogramUtils.cxx:4770
 TQHistogramUtils.cxx:4771
 TQHistogramUtils.cxx:4772
 TQHistogramUtils.cxx:4773
 TQHistogramUtils.cxx:4774
 TQHistogramUtils.cxx:4775
 TQHistogramUtils.cxx:4776
 TQHistogramUtils.cxx:4777
 TQHistogramUtils.cxx:4778
 TQHistogramUtils.cxx:4779
 TQHistogramUtils.cxx:4780
 TQHistogramUtils.cxx:4781
 TQHistogramUtils.cxx:4782
 TQHistogramUtils.cxx:4783
 TQHistogramUtils.cxx:4784
 TQHistogramUtils.cxx:4785
 TQHistogramUtils.cxx:4786
 TQHistogramUtils.cxx:4787
 TQHistogramUtils.cxx:4788
 TQHistogramUtils.cxx:4789
 TQHistogramUtils.cxx:4790
 TQHistogramUtils.cxx:4791
 TQHistogramUtils.cxx:4792
 TQHistogramUtils.cxx:4793
 TQHistogramUtils.cxx:4794
 TQHistogramUtils.cxx:4795
 TQHistogramUtils.cxx:4796
 TQHistogramUtils.cxx:4797
 TQHistogramUtils.cxx:4798
 TQHistogramUtils.cxx:4799
 TQHistogramUtils.cxx:4800
 TQHistogramUtils.cxx:4801
 TQHistogramUtils.cxx:4802
 TQHistogramUtils.cxx:4803
 TQHistogramUtils.cxx:4804
 TQHistogramUtils.cxx:4805
 TQHistogramUtils.cxx:4806
 TQHistogramUtils.cxx:4807
 TQHistogramUtils.cxx:4808
 TQHistogramUtils.cxx:4809
 TQHistogramUtils.cxx:4810
 TQHistogramUtils.cxx:4811
 TQHistogramUtils.cxx:4812
 TQHistogramUtils.cxx:4813
 TQHistogramUtils.cxx:4814
 TQHistogramUtils.cxx:4815
 TQHistogramUtils.cxx:4816
 TQHistogramUtils.cxx:4817
 TQHistogramUtils.cxx:4818
 TQHistogramUtils.cxx:4819
 TQHistogramUtils.cxx:4820
 TQHistogramUtils.cxx:4821
 TQHistogramUtils.cxx:4822
 TQHistogramUtils.cxx:4823
 TQHistogramUtils.cxx:4824
 TQHistogramUtils.cxx:4825
 TQHistogramUtils.cxx:4826
 TQHistogramUtils.cxx:4827
 TQHistogramUtils.cxx:4828
 TQHistogramUtils.cxx:4829
 TQHistogramUtils.cxx:4830
 TQHistogramUtils.cxx:4831
 TQHistogramUtils.cxx:4832
 TQHistogramUtils.cxx:4833
 TQHistogramUtils.cxx:4834
 TQHistogramUtils.cxx:4835
 TQHistogramUtils.cxx:4836
 TQHistogramUtils.cxx:4837
 TQHistogramUtils.cxx:4838
 TQHistogramUtils.cxx:4839
 TQHistogramUtils.cxx:4840
 TQHistogramUtils.cxx:4841
 TQHistogramUtils.cxx:4842
 TQHistogramUtils.cxx:4843
 TQHistogramUtils.cxx:4844
 TQHistogramUtils.cxx:4845
 TQHistogramUtils.cxx:4846
 TQHistogramUtils.cxx:4847
 TQHistogramUtils.cxx:4848
 TQHistogramUtils.cxx:4849
 TQHistogramUtils.cxx:4850
 TQHistogramUtils.cxx:4851
 TQHistogramUtils.cxx:4852
 TQHistogramUtils.cxx:4853
 TQHistogramUtils.cxx:4854
 TQHistogramUtils.cxx:4855
 TQHistogramUtils.cxx:4856
 TQHistogramUtils.cxx:4857
 TQHistogramUtils.cxx:4858
 TQHistogramUtils.cxx:4859
 TQHistogramUtils.cxx:4860
 TQHistogramUtils.cxx:4861
 TQHistogramUtils.cxx:4862
 TQHistogramUtils.cxx:4863
 TQHistogramUtils.cxx:4864
 TQHistogramUtils.cxx:4865
 TQHistogramUtils.cxx:4866
 TQHistogramUtils.cxx:4867
 TQHistogramUtils.cxx:4868
 TQHistogramUtils.cxx:4869
 TQHistogramUtils.cxx:4870
 TQHistogramUtils.cxx:4871
 TQHistogramUtils.cxx:4872
 TQHistogramUtils.cxx:4873
 TQHistogramUtils.cxx:4874
 TQHistogramUtils.cxx:4875
 TQHistogramUtils.cxx:4876
 TQHistogramUtils.cxx:4877
 TQHistogramUtils.cxx:4878
 TQHistogramUtils.cxx:4879
 TQHistogramUtils.cxx:4880
 TQHistogramUtils.cxx:4881
 TQHistogramUtils.cxx:4882
 TQHistogramUtils.cxx:4883
 TQHistogramUtils.cxx:4884
 TQHistogramUtils.cxx:4885
 TQHistogramUtils.cxx:4886
 TQHistogramUtils.cxx:4887
 TQHistogramUtils.cxx:4888
 TQHistogramUtils.cxx:4889
 TQHistogramUtils.cxx:4890
 TQHistogramUtils.cxx:4891
 TQHistogramUtils.cxx:4892
 TQHistogramUtils.cxx:4893
 TQHistogramUtils.cxx:4894
 TQHistogramUtils.cxx:4895
 TQHistogramUtils.cxx:4896
 TQHistogramUtils.cxx:4897
 TQHistogramUtils.cxx:4898
 TQHistogramUtils.cxx:4899
 TQHistogramUtils.cxx:4900
 TQHistogramUtils.cxx:4901
 TQHistogramUtils.cxx:4902
 TQHistogramUtils.cxx:4903
 TQHistogramUtils.cxx:4904
 TQHistogramUtils.cxx:4905
 TQHistogramUtils.cxx:4906
 TQHistogramUtils.cxx:4907
 TQHistogramUtils.cxx:4908
 TQHistogramUtils.cxx:4909
 TQHistogramUtils.cxx:4910
 TQHistogramUtils.cxx:4911
 TQHistogramUtils.cxx:4912
 TQHistogramUtils.cxx:4913
 TQHistogramUtils.cxx:4914
 TQHistogramUtils.cxx:4915
 TQHistogramUtils.cxx:4916
 TQHistogramUtils.cxx:4917
 TQHistogramUtils.cxx:4918
 TQHistogramUtils.cxx:4919
 TQHistogramUtils.cxx:4920
 TQHistogramUtils.cxx:4921
 TQHistogramUtils.cxx:4922
 TQHistogramUtils.cxx:4923
 TQHistogramUtils.cxx:4924
 TQHistogramUtils.cxx:4925
 TQHistogramUtils.cxx:4926
 TQHistogramUtils.cxx:4927
 TQHistogramUtils.cxx:4928
 TQHistogramUtils.cxx:4929
 TQHistogramUtils.cxx:4930
 TQHistogramUtils.cxx:4931
 TQHistogramUtils.cxx:4932
 TQHistogramUtils.cxx:4933
 TQHistogramUtils.cxx:4934
 TQHistogramUtils.cxx:4935
 TQHistogramUtils.cxx:4936
 TQHistogramUtils.cxx:4937
 TQHistogramUtils.cxx:4938
 TQHistogramUtils.cxx:4939
 TQHistogramUtils.cxx:4940
 TQHistogramUtils.cxx:4941
 TQHistogramUtils.cxx:4942
 TQHistogramUtils.cxx:4943
 TQHistogramUtils.cxx:4944
 TQHistogramUtils.cxx:4945
 TQHistogramUtils.cxx:4946
 TQHistogramUtils.cxx:4947
 TQHistogramUtils.cxx:4948
 TQHistogramUtils.cxx:4949
 TQHistogramUtils.cxx:4950
 TQHistogramUtils.cxx:4951
 TQHistogramUtils.cxx:4952
 TQHistogramUtils.cxx:4953
 TQHistogramUtils.cxx:4954
 TQHistogramUtils.cxx:4955
 TQHistogramUtils.cxx:4956
 TQHistogramUtils.cxx:4957
 TQHistogramUtils.cxx:4958
 TQHistogramUtils.cxx:4959
 TQHistogramUtils.cxx:4960
 TQHistogramUtils.cxx:4961
 TQHistogramUtils.cxx:4962
 TQHistogramUtils.cxx:4963
 TQHistogramUtils.cxx:4964
 TQHistogramUtils.cxx:4965
 TQHistogramUtils.cxx:4966
 TQHistogramUtils.cxx:4967
 TQHistogramUtils.cxx:4968
 TQHistogramUtils.cxx:4969
 TQHistogramUtils.cxx:4970
 TQHistogramUtils.cxx:4971
 TQHistogramUtils.cxx:4972
 TQHistogramUtils.cxx:4973
 TQHistogramUtils.cxx:4974
 TQHistogramUtils.cxx:4975
 TQHistogramUtils.cxx:4976
 TQHistogramUtils.cxx:4977
 TQHistogramUtils.cxx:4978
 TQHistogramUtils.cxx:4979
 TQHistogramUtils.cxx:4980
 TQHistogramUtils.cxx:4981
 TQHistogramUtils.cxx:4982
 TQHistogramUtils.cxx:4983
 TQHistogramUtils.cxx:4984
 TQHistogramUtils.cxx:4985
 TQHistogramUtils.cxx:4986
 TQHistogramUtils.cxx:4987
 TQHistogramUtils.cxx:4988
 TQHistogramUtils.cxx:4989
 TQHistogramUtils.cxx:4990
 TQHistogramUtils.cxx:4991
 TQHistogramUtils.cxx:4992
 TQHistogramUtils.cxx:4993
 TQHistogramUtils.cxx:4994
 TQHistogramUtils.cxx:4995
 TQHistogramUtils.cxx:4996
 TQHistogramUtils.cxx:4997
 TQHistogramUtils.cxx:4998
 TQHistogramUtils.cxx:4999
 TQHistogramUtils.cxx:5000
 TQHistogramUtils.cxx:5001
 TQHistogramUtils.cxx:5002
 TQHistogramUtils.cxx:5003
 TQHistogramUtils.cxx:5004
 TQHistogramUtils.cxx:5005
 TQHistogramUtils.cxx:5006
 TQHistogramUtils.cxx:5007
 TQHistogramUtils.cxx:5008
 TQHistogramUtils.cxx:5009
 TQHistogramUtils.cxx:5010
 TQHistogramUtils.cxx:5011
 TQHistogramUtils.cxx:5012
 TQHistogramUtils.cxx:5013
 TQHistogramUtils.cxx:5014
 TQHistogramUtils.cxx:5015
 TQHistogramUtils.cxx:5016
 TQHistogramUtils.cxx:5017
 TQHistogramUtils.cxx:5018
 TQHistogramUtils.cxx:5019
 TQHistogramUtils.cxx:5020
 TQHistogramUtils.cxx:5021
 TQHistogramUtils.cxx:5022
 TQHistogramUtils.cxx:5023
 TQHistogramUtils.cxx:5024
 TQHistogramUtils.cxx:5025
 TQHistogramUtils.cxx:5026
 TQHistogramUtils.cxx:5027
 TQHistogramUtils.cxx:5028
 TQHistogramUtils.cxx:5029
 TQHistogramUtils.cxx:5030
 TQHistogramUtils.cxx:5031
 TQHistogramUtils.cxx:5032
 TQHistogramUtils.cxx:5033
 TQHistogramUtils.cxx:5034
 TQHistogramUtils.cxx:5035
 TQHistogramUtils.cxx:5036
 TQHistogramUtils.cxx:5037
 TQHistogramUtils.cxx:5038
 TQHistogramUtils.cxx:5039
 TQHistogramUtils.cxx:5040
 TQHistogramUtils.cxx:5041
 TQHistogramUtils.cxx:5042
 TQHistogramUtils.cxx:5043
 TQHistogramUtils.cxx:5044
 TQHistogramUtils.cxx:5045
 TQHistogramUtils.cxx:5046
 TQHistogramUtils.cxx:5047
 TQHistogramUtils.cxx:5048
 TQHistogramUtils.cxx:5049
 TQHistogramUtils.cxx:5050
 TQHistogramUtils.cxx:5051
 TQHistogramUtils.cxx:5052
 TQHistogramUtils.cxx:5053
 TQHistogramUtils.cxx:5054
 TQHistogramUtils.cxx:5055
 TQHistogramUtils.cxx:5056
 TQHistogramUtils.cxx:5057
 TQHistogramUtils.cxx:5058
 TQHistogramUtils.cxx:5059
 TQHistogramUtils.cxx:5060
 TQHistogramUtils.cxx:5061
 TQHistogramUtils.cxx:5062
 TQHistogramUtils.cxx:5063
 TQHistogramUtils.cxx:5064
 TQHistogramUtils.cxx:5065
 TQHistogramUtils.cxx:5066
 TQHistogramUtils.cxx:5067
 TQHistogramUtils.cxx:5068
 TQHistogramUtils.cxx:5069
 TQHistogramUtils.cxx:5070
 TQHistogramUtils.cxx:5071
 TQHistogramUtils.cxx:5072
 TQHistogramUtils.cxx:5073
 TQHistogramUtils.cxx:5074
 TQHistogramUtils.cxx:5075
 TQHistogramUtils.cxx:5076
 TQHistogramUtils.cxx:5077
 TQHistogramUtils.cxx:5078
 TQHistogramUtils.cxx:5079
 TQHistogramUtils.cxx:5080
 TQHistogramUtils.cxx:5081
 TQHistogramUtils.cxx:5082
 TQHistogramUtils.cxx:5083
 TQHistogramUtils.cxx:5084
 TQHistogramUtils.cxx:5085
 TQHistogramUtils.cxx:5086
 TQHistogramUtils.cxx:5087
 TQHistogramUtils.cxx:5088
 TQHistogramUtils.cxx:5089
 TQHistogramUtils.cxx:5090
 TQHistogramUtils.cxx:5091
 TQHistogramUtils.cxx:5092
 TQHistogramUtils.cxx:5093
 TQHistogramUtils.cxx:5094
 TQHistogramUtils.cxx:5095
 TQHistogramUtils.cxx:5096
 TQHistogramUtils.cxx:5097
 TQHistogramUtils.cxx:5098
 TQHistogramUtils.cxx:5099
 TQHistogramUtils.cxx:5100
 TQHistogramUtils.cxx:5101
 TQHistogramUtils.cxx:5102
 TQHistogramUtils.cxx:5103
 TQHistogramUtils.cxx:5104
 TQHistogramUtils.cxx:5105
 TQHistogramUtils.cxx:5106
 TQHistogramUtils.cxx:5107
 TQHistogramUtils.cxx:5108
 TQHistogramUtils.cxx:5109
 TQHistogramUtils.cxx:5110
 TQHistogramUtils.cxx:5111
 TQHistogramUtils.cxx:5112
 TQHistogramUtils.cxx:5113
 TQHistogramUtils.cxx:5114
 TQHistogramUtils.cxx:5115
 TQHistogramUtils.cxx:5116
 TQHistogramUtils.cxx:5117
 TQHistogramUtils.cxx:5118
 TQHistogramUtils.cxx:5119
 TQHistogramUtils.cxx:5120
 TQHistogramUtils.cxx:5121
 TQHistogramUtils.cxx:5122
 TQHistogramUtils.cxx:5123
 TQHistogramUtils.cxx:5124
 TQHistogramUtils.cxx:5125
 TQHistogramUtils.cxx:5126
 TQHistogramUtils.cxx:5127
 TQHistogramUtils.cxx:5128
 TQHistogramUtils.cxx:5129
 TQHistogramUtils.cxx:5130
 TQHistogramUtils.cxx:5131
 TQHistogramUtils.cxx:5132
 TQHistogramUtils.cxx:5133
 TQHistogramUtils.cxx:5134
 TQHistogramUtils.cxx:5135
 TQHistogramUtils.cxx:5136
 TQHistogramUtils.cxx:5137
 TQHistogramUtils.cxx:5138
 TQHistogramUtils.cxx:5139
 TQHistogramUtils.cxx:5140
 TQHistogramUtils.cxx:5141
 TQHistogramUtils.cxx:5142
 TQHistogramUtils.cxx:5143
 TQHistogramUtils.cxx:5144
 TQHistogramUtils.cxx:5145
 TQHistogramUtils.cxx:5146
 TQHistogramUtils.cxx:5147
 TQHistogramUtils.cxx:5148
 TQHistogramUtils.cxx:5149
 TQHistogramUtils.cxx:5150
 TQHistogramUtils.cxx:5151
 TQHistogramUtils.cxx:5152
 TQHistogramUtils.cxx:5153
 TQHistogramUtils.cxx:5154
 TQHistogramUtils.cxx:5155
 TQHistogramUtils.cxx:5156
 TQHistogramUtils.cxx:5157
 TQHistogramUtils.cxx:5158
 TQHistogramUtils.cxx:5159
 TQHistogramUtils.cxx:5160
 TQHistogramUtils.cxx:5161
 TQHistogramUtils.cxx:5162
 TQHistogramUtils.cxx:5163
 TQHistogramUtils.cxx:5164
 TQHistogramUtils.cxx:5165
 TQHistogramUtils.cxx:5166
 TQHistogramUtils.cxx:5167
 TQHistogramUtils.cxx:5168
 TQHistogramUtils.cxx:5169
 TQHistogramUtils.cxx:5170
 TQHistogramUtils.cxx:5171
 TQHistogramUtils.cxx:5172
 TQHistogramUtils.cxx:5173
 TQHistogramUtils.cxx:5174
 TQHistogramUtils.cxx:5175
 TQHistogramUtils.cxx:5176
 TQHistogramUtils.cxx:5177
 TQHistogramUtils.cxx:5178
 TQHistogramUtils.cxx:5179
 TQHistogramUtils.cxx:5180
 TQHistogramUtils.cxx:5181
 TQHistogramUtils.cxx:5182
 TQHistogramUtils.cxx:5183
 TQHistogramUtils.cxx:5184
 TQHistogramUtils.cxx:5185
 TQHistogramUtils.cxx:5186
 TQHistogramUtils.cxx:5187
 TQHistogramUtils.cxx:5188
 TQHistogramUtils.cxx:5189
 TQHistogramUtils.cxx:5190
 TQHistogramUtils.cxx:5191
 TQHistogramUtils.cxx:5192
 TQHistogramUtils.cxx:5193
 TQHistogramUtils.cxx:5194
 TQHistogramUtils.cxx:5195
 TQHistogramUtils.cxx:5196
 TQHistogramUtils.cxx:5197
 TQHistogramUtils.cxx:5198
 TQHistogramUtils.cxx:5199
 TQHistogramUtils.cxx:5200
 TQHistogramUtils.cxx:5201
 TQHistogramUtils.cxx:5202
 TQHistogramUtils.cxx:5203
 TQHistogramUtils.cxx:5204
 TQHistogramUtils.cxx:5205
 TQHistogramUtils.cxx:5206
 TQHistogramUtils.cxx:5207
 TQHistogramUtils.cxx:5208
 TQHistogramUtils.cxx:5209
 TQHistogramUtils.cxx:5210
 TQHistogramUtils.cxx:5211
 TQHistogramUtils.cxx:5212
 TQHistogramUtils.cxx:5213
 TQHistogramUtils.cxx:5214
 TQHistogramUtils.cxx:5215
 TQHistogramUtils.cxx:5216
 TQHistogramUtils.cxx:5217
 TQHistogramUtils.cxx:5218
 TQHistogramUtils.cxx:5219
 TQHistogramUtils.cxx:5220
 TQHistogramUtils.cxx:5221
 TQHistogramUtils.cxx:5222
 TQHistogramUtils.cxx:5223
 TQHistogramUtils.cxx:5224
 TQHistogramUtils.cxx:5225
 TQHistogramUtils.cxx:5226
 TQHistogramUtils.cxx:5227
 TQHistogramUtils.cxx:5228
 TQHistogramUtils.cxx:5229
 TQHistogramUtils.cxx:5230
 TQHistogramUtils.cxx:5231
 TQHistogramUtils.cxx:5232
 TQHistogramUtils.cxx:5233
 TQHistogramUtils.cxx:5234
 TQHistogramUtils.cxx:5235
 TQHistogramUtils.cxx:5236
 TQHistogramUtils.cxx:5237
 TQHistogramUtils.cxx:5238
 TQHistogramUtils.cxx:5239
 TQHistogramUtils.cxx:5240
 TQHistogramUtils.cxx:5241
 TQHistogramUtils.cxx:5242
 TQHistogramUtils.cxx:5243
 TQHistogramUtils.cxx:5244
 TQHistogramUtils.cxx:5245
 TQHistogramUtils.cxx:5246
 TQHistogramUtils.cxx:5247
 TQHistogramUtils.cxx:5248
 TQHistogramUtils.cxx:5249
 TQHistogramUtils.cxx:5250
 TQHistogramUtils.cxx:5251
 TQHistogramUtils.cxx:5252
 TQHistogramUtils.cxx:5253
 TQHistogramUtils.cxx:5254
 TQHistogramUtils.cxx:5255
 TQHistogramUtils.cxx:5256
 TQHistogramUtils.cxx:5257
 TQHistogramUtils.cxx:5258
 TQHistogramUtils.cxx:5259
 TQHistogramUtils.cxx:5260
 TQHistogramUtils.cxx:5261
 TQHistogramUtils.cxx:5262
 TQHistogramUtils.cxx:5263
 TQHistogramUtils.cxx:5264
 TQHistogramUtils.cxx:5265
 TQHistogramUtils.cxx:5266
 TQHistogramUtils.cxx:5267
 TQHistogramUtils.cxx:5268
 TQHistogramUtils.cxx:5269
 TQHistogramUtils.cxx:5270
 TQHistogramUtils.cxx:5271
 TQHistogramUtils.cxx:5272
 TQHistogramUtils.cxx:5273
 TQHistogramUtils.cxx:5274
 TQHistogramUtils.cxx:5275
 TQHistogramUtils.cxx:5276
 TQHistogramUtils.cxx:5277
 TQHistogramUtils.cxx:5278
 TQHistogramUtils.cxx:5279
 TQHistogramUtils.cxx:5280
 TQHistogramUtils.cxx:5281
 TQHistogramUtils.cxx:5282
 TQHistogramUtils.cxx:5283
 TQHistogramUtils.cxx:5284
 TQHistogramUtils.cxx:5285
 TQHistogramUtils.cxx:5286
 TQHistogramUtils.cxx:5287
 TQHistogramUtils.cxx:5288
 TQHistogramUtils.cxx:5289
 TQHistogramUtils.cxx:5290
 TQHistogramUtils.cxx:5291
 TQHistogramUtils.cxx:5292
 TQHistogramUtils.cxx:5293
 TQHistogramUtils.cxx:5294
 TQHistogramUtils.cxx:5295
 TQHistogramUtils.cxx:5296
 TQHistogramUtils.cxx:5297
 TQHistogramUtils.cxx:5298
 TQHistogramUtils.cxx:5299
 TQHistogramUtils.cxx:5300
 TQHistogramUtils.cxx:5301
 TQHistogramUtils.cxx:5302
 TQHistogramUtils.cxx:5303
 TQHistogramUtils.cxx:5304
 TQHistogramUtils.cxx:5305
 TQHistogramUtils.cxx:5306
 TQHistogramUtils.cxx:5307
 TQHistogramUtils.cxx:5308
 TQHistogramUtils.cxx:5309
 TQHistogramUtils.cxx:5310
 TQHistogramUtils.cxx:5311
 TQHistogramUtils.cxx:5312
 TQHistogramUtils.cxx:5313
 TQHistogramUtils.cxx:5314
 TQHistogramUtils.cxx:5315
 TQHistogramUtils.cxx:5316
 TQHistogramUtils.cxx:5317
 TQHistogramUtils.cxx:5318
 TQHistogramUtils.cxx:5319
 TQHistogramUtils.cxx:5320
 TQHistogramUtils.cxx:5321
 TQHistogramUtils.cxx:5322
 TQHistogramUtils.cxx:5323
 TQHistogramUtils.cxx:5324
 TQHistogramUtils.cxx:5325
 TQHistogramUtils.cxx:5326
 TQHistogramUtils.cxx:5327
 TQHistogramUtils.cxx:5328
 TQHistogramUtils.cxx:5329
 TQHistogramUtils.cxx:5330
 TQHistogramUtils.cxx:5331
 TQHistogramUtils.cxx:5332
 TQHistogramUtils.cxx:5333
 TQHistogramUtils.cxx:5334
 TQHistogramUtils.cxx:5335
 TQHistogramUtils.cxx:5336
 TQHistogramUtils.cxx:5337
 TQHistogramUtils.cxx:5338
 TQHistogramUtils.cxx:5339
 TQHistogramUtils.cxx:5340
 TQHistogramUtils.cxx:5341
 TQHistogramUtils.cxx:5342
 TQHistogramUtils.cxx:5343
 TQHistogramUtils.cxx:5344
 TQHistogramUtils.cxx:5345
 TQHistogramUtils.cxx:5346
 TQHistogramUtils.cxx:5347
 TQHistogramUtils.cxx:5348
 TQHistogramUtils.cxx:5349
 TQHistogramUtils.cxx:5350
 TQHistogramUtils.cxx:5351
 TQHistogramUtils.cxx:5352
 TQHistogramUtils.cxx:5353
 TQHistogramUtils.cxx:5354
 TQHistogramUtils.cxx:5355
 TQHistogramUtils.cxx:5356
 TQHistogramUtils.cxx:5357
 TQHistogramUtils.cxx:5358
 TQHistogramUtils.cxx:5359
 TQHistogramUtils.cxx:5360
 TQHistogramUtils.cxx:5361
 TQHistogramUtils.cxx:5362
 TQHistogramUtils.cxx:5363
 TQHistogramUtils.cxx:5364
 TQHistogramUtils.cxx:5365
 TQHistogramUtils.cxx:5366
 TQHistogramUtils.cxx:5367
 TQHistogramUtils.cxx:5368
 TQHistogramUtils.cxx:5369
 TQHistogramUtils.cxx:5370
 TQHistogramUtils.cxx:5371
 TQHistogramUtils.cxx:5372
 TQHistogramUtils.cxx:5373
 TQHistogramUtils.cxx:5374
 TQHistogramUtils.cxx:5375
 TQHistogramUtils.cxx:5376
 TQHistogramUtils.cxx:5377
 TQHistogramUtils.cxx:5378
 TQHistogramUtils.cxx:5379
 TQHistogramUtils.cxx:5380
 TQHistogramUtils.cxx:5381
 TQHistogramUtils.cxx:5382
 TQHistogramUtils.cxx:5383
 TQHistogramUtils.cxx:5384
 TQHistogramUtils.cxx:5385
 TQHistogramUtils.cxx:5386
 TQHistogramUtils.cxx:5387
 TQHistogramUtils.cxx:5388
 TQHistogramUtils.cxx:5389
 TQHistogramUtils.cxx:5390
 TQHistogramUtils.cxx:5391
 TQHistogramUtils.cxx:5392
 TQHistogramUtils.cxx:5393
 TQHistogramUtils.cxx:5394
 TQHistogramUtils.cxx:5395
 TQHistogramUtils.cxx:5396
 TQHistogramUtils.cxx:5397
 TQHistogramUtils.cxx:5398
 TQHistogramUtils.cxx:5399
 TQHistogramUtils.cxx:5400
 TQHistogramUtils.cxx:5401
 TQHistogramUtils.cxx:5402
 TQHistogramUtils.cxx:5403
 TQHistogramUtils.cxx:5404
 TQHistogramUtils.cxx:5405
 TQHistogramUtils.cxx:5406
 TQHistogramUtils.cxx:5407
 TQHistogramUtils.cxx:5408
 TQHistogramUtils.cxx:5409
 TQHistogramUtils.cxx:5410
 TQHistogramUtils.cxx:5411
 TQHistogramUtils.cxx:5412
 TQHistogramUtils.cxx:5413
 TQHistogramUtils.cxx:5414
 TQHistogramUtils.cxx:5415
 TQHistogramUtils.cxx:5416
 TQHistogramUtils.cxx:5417
 TQHistogramUtils.cxx:5418
 TQHistogramUtils.cxx:5419
 TQHistogramUtils.cxx:5420
 TQHistogramUtils.cxx:5421
 TQHistogramUtils.cxx:5422
 TQHistogramUtils.cxx:5423
 TQHistogramUtils.cxx:5424
 TQHistogramUtils.cxx:5425
 TQHistogramUtils.cxx:5426
 TQHistogramUtils.cxx:5427
 TQHistogramUtils.cxx:5428
 TQHistogramUtils.cxx:5429
 TQHistogramUtils.cxx:5430
 TQHistogramUtils.cxx:5431
 TQHistogramUtils.cxx:5432
 TQHistogramUtils.cxx:5433
 TQHistogramUtils.cxx:5434
 TQHistogramUtils.cxx:5435
 TQHistogramUtils.cxx:5436
 TQHistogramUtils.cxx:5437
 TQHistogramUtils.cxx:5438
 TQHistogramUtils.cxx:5439
 TQHistogramUtils.cxx:5440
 TQHistogramUtils.cxx:5441
 TQHistogramUtils.cxx:5442
 TQHistogramUtils.cxx:5443
 TQHistogramUtils.cxx:5444
 TQHistogramUtils.cxx:5445
 TQHistogramUtils.cxx:5446
 TQHistogramUtils.cxx:5447
 TQHistogramUtils.cxx:5448
 TQHistogramUtils.cxx:5449
 TQHistogramUtils.cxx:5450
 TQHistogramUtils.cxx:5451
 TQHistogramUtils.cxx:5452
 TQHistogramUtils.cxx:5453
 TQHistogramUtils.cxx:5454
 TQHistogramUtils.cxx:5455
 TQHistogramUtils.cxx:5456
 TQHistogramUtils.cxx:5457
 TQHistogramUtils.cxx:5458
 TQHistogramUtils.cxx:5459
 TQHistogramUtils.cxx:5460
 TQHistogramUtils.cxx:5461
 TQHistogramUtils.cxx:5462
 TQHistogramUtils.cxx:5463
 TQHistogramUtils.cxx:5464
 TQHistogramUtils.cxx:5465
 TQHistogramUtils.cxx:5466
 TQHistogramUtils.cxx:5467
 TQHistogramUtils.cxx:5468
 TQHistogramUtils.cxx:5469
 TQHistogramUtils.cxx:5470
 TQHistogramUtils.cxx:5471
 TQHistogramUtils.cxx:5472
 TQHistogramUtils.cxx:5473
 TQHistogramUtils.cxx:5474
 TQHistogramUtils.cxx:5475
 TQHistogramUtils.cxx:5476
 TQHistogramUtils.cxx:5477
 TQHistogramUtils.cxx:5478
 TQHistogramUtils.cxx:5479
 TQHistogramUtils.cxx:5480
 TQHistogramUtils.cxx:5481
 TQHistogramUtils.cxx:5482
 TQHistogramUtils.cxx:5483
 TQHistogramUtils.cxx:5484
 TQHistogramUtils.cxx:5485
 TQHistogramUtils.cxx:5486
 TQHistogramUtils.cxx:5487
 TQHistogramUtils.cxx:5488
 TQHistogramUtils.cxx:5489
 TQHistogramUtils.cxx:5490
 TQHistogramUtils.cxx:5491
 TQHistogramUtils.cxx:5492
 TQHistogramUtils.cxx:5493
 TQHistogramUtils.cxx:5494
 TQHistogramUtils.cxx:5495
 TQHistogramUtils.cxx:5496
 TQHistogramUtils.cxx:5497
 TQHistogramUtils.cxx:5498
 TQHistogramUtils.cxx:5499
 TQHistogramUtils.cxx:5500
 TQHistogramUtils.cxx:5501
 TQHistogramUtils.cxx:5502
 TQHistogramUtils.cxx:5503
 TQHistogramUtils.cxx:5504
 TQHistogramUtils.cxx:5505
 TQHistogramUtils.cxx:5506
 TQHistogramUtils.cxx:5507
 TQHistogramUtils.cxx:5508
 TQHistogramUtils.cxx:5509
 TQHistogramUtils.cxx:5510
 TQHistogramUtils.cxx:5511
 TQHistogramUtils.cxx:5512
 TQHistogramUtils.cxx:5513
 TQHistogramUtils.cxx:5514
 TQHistogramUtils.cxx:5515
 TQHistogramUtils.cxx:5516
 TQHistogramUtils.cxx:5517
 TQHistogramUtils.cxx:5518
 TQHistogramUtils.cxx:5519
 TQHistogramUtils.cxx:5520
 TQHistogramUtils.cxx:5521
 TQHistogramUtils.cxx:5522
 TQHistogramUtils.cxx:5523
 TQHistogramUtils.cxx:5524
 TQHistogramUtils.cxx:5525
 TQHistogramUtils.cxx:5526
 TQHistogramUtils.cxx:5527
 TQHistogramUtils.cxx:5528
 TQHistogramUtils.cxx:5529
 TQHistogramUtils.cxx:5530
 TQHistogramUtils.cxx:5531
 TQHistogramUtils.cxx:5532
 TQHistogramUtils.cxx:5533
 TQHistogramUtils.cxx:5534
 TQHistogramUtils.cxx:5535
 TQHistogramUtils.cxx:5536
 TQHistogramUtils.cxx:5537
 TQHistogramUtils.cxx:5538
 TQHistogramUtils.cxx:5539
 TQHistogramUtils.cxx:5540
 TQHistogramUtils.cxx:5541
 TQHistogramUtils.cxx:5542
 TQHistogramUtils.cxx:5543
 TQHistogramUtils.cxx:5544
 TQHistogramUtils.cxx:5545
 TQHistogramUtils.cxx:5546
 TQHistogramUtils.cxx:5547
 TQHistogramUtils.cxx:5548
 TQHistogramUtils.cxx:5549
 TQHistogramUtils.cxx:5550
 TQHistogramUtils.cxx:5551
 TQHistogramUtils.cxx:5552
 TQHistogramUtils.cxx:5553
 TQHistogramUtils.cxx:5554
 TQHistogramUtils.cxx:5555
 TQHistogramUtils.cxx:5556
 TQHistogramUtils.cxx:5557
 TQHistogramUtils.cxx:5558
 TQHistogramUtils.cxx:5559
 TQHistogramUtils.cxx:5560
 TQHistogramUtils.cxx:5561
 TQHistogramUtils.cxx:5562
 TQHistogramUtils.cxx:5563
 TQHistogramUtils.cxx:5564
 TQHistogramUtils.cxx:5565
 TQHistogramUtils.cxx:5566
 TQHistogramUtils.cxx:5567
 TQHistogramUtils.cxx:5568
 TQHistogramUtils.cxx:5569
 TQHistogramUtils.cxx:5570
 TQHistogramUtils.cxx:5571
 TQHistogramUtils.cxx:5572
 TQHistogramUtils.cxx:5573
 TQHistogramUtils.cxx:5574
 TQHistogramUtils.cxx:5575
 TQHistogramUtils.cxx:5576
 TQHistogramUtils.cxx:5577
 TQHistogramUtils.cxx:5578
 TQHistogramUtils.cxx:5579
 TQHistogramUtils.cxx:5580
 TQHistogramUtils.cxx:5581
 TQHistogramUtils.cxx:5582
 TQHistogramUtils.cxx:5583
 TQHistogramUtils.cxx:5584
 TQHistogramUtils.cxx:5585
 TQHistogramUtils.cxx:5586
 TQHistogramUtils.cxx:5587
 TQHistogramUtils.cxx:5588
 TQHistogramUtils.cxx:5589
 TQHistogramUtils.cxx:5590
 TQHistogramUtils.cxx:5591
 TQHistogramUtils.cxx:5592
 TQHistogramUtils.cxx:5593
 TQHistogramUtils.cxx:5594
 TQHistogramUtils.cxx:5595
 TQHistogramUtils.cxx:5596
 TQHistogramUtils.cxx:5597
 TQHistogramUtils.cxx:5598
 TQHistogramUtils.cxx:5599
 TQHistogramUtils.cxx:5600
 TQHistogramUtils.cxx:5601
 TQHistogramUtils.cxx:5602
 TQHistogramUtils.cxx:5603
 TQHistogramUtils.cxx:5604
 TQHistogramUtils.cxx:5605
 TQHistogramUtils.cxx:5606
 TQHistogramUtils.cxx:5607
 TQHistogramUtils.cxx:5608
 TQHistogramUtils.cxx:5609
 TQHistogramUtils.cxx:5610
 TQHistogramUtils.cxx:5611
 TQHistogramUtils.cxx:5612
 TQHistogramUtils.cxx:5613
 TQHistogramUtils.cxx:5614
 TQHistogramUtils.cxx:5615
 TQHistogramUtils.cxx:5616
 TQHistogramUtils.cxx:5617
 TQHistogramUtils.cxx:5618
 TQHistogramUtils.cxx:5619
 TQHistogramUtils.cxx:5620
 TQHistogramUtils.cxx:5621
 TQHistogramUtils.cxx:5622
 TQHistogramUtils.cxx:5623
 TQHistogramUtils.cxx:5624
 TQHistogramUtils.cxx:5625
 TQHistogramUtils.cxx:5626
 TQHistogramUtils.cxx:5627
 TQHistogramUtils.cxx:5628
 TQHistogramUtils.cxx:5629
 TQHistogramUtils.cxx:5630
 TQHistogramUtils.cxx:5631
 TQHistogramUtils.cxx:5632
 TQHistogramUtils.cxx:5633
 TQHistogramUtils.cxx:5634
 TQHistogramUtils.cxx:5635
 TQHistogramUtils.cxx:5636
 TQHistogramUtils.cxx:5637
 TQHistogramUtils.cxx:5638
 TQHistogramUtils.cxx:5639
 TQHistogramUtils.cxx:5640
 TQHistogramUtils.cxx:5641
 TQHistogramUtils.cxx:5642
 TQHistogramUtils.cxx:5643
 TQHistogramUtils.cxx:5644
 TQHistogramUtils.cxx:5645
 TQHistogramUtils.cxx:5646
 TQHistogramUtils.cxx:5647
 TQHistogramUtils.cxx:5648
 TQHistogramUtils.cxx:5649
 TQHistogramUtils.cxx:5650
 TQHistogramUtils.cxx:5651
 TQHistogramUtils.cxx:5652
 TQHistogramUtils.cxx:5653
 TQHistogramUtils.cxx:5654
 TQHistogramUtils.cxx:5655
 TQHistogramUtils.cxx:5656
 TQHistogramUtils.cxx:5657
 TQHistogramUtils.cxx:5658
 TQHistogramUtils.cxx:5659
 TQHistogramUtils.cxx:5660
 TQHistogramUtils.cxx:5661
 TQHistogramUtils.cxx:5662
 TQHistogramUtils.cxx:5663
 TQHistogramUtils.cxx:5664
 TQHistogramUtils.cxx:5665
 TQHistogramUtils.cxx:5666
 TQHistogramUtils.cxx:5667
 TQHistogramUtils.cxx:5668
 TQHistogramUtils.cxx:5669
 TQHistogramUtils.cxx:5670
 TQHistogramUtils.cxx:5671
 TQHistogramUtils.cxx:5672
 TQHistogramUtils.cxx:5673
 TQHistogramUtils.cxx:5674
 TQHistogramUtils.cxx:5675
 TQHistogramUtils.cxx:5676
 TQHistogramUtils.cxx:5677
 TQHistogramUtils.cxx:5678
 TQHistogramUtils.cxx:5679
 TQHistogramUtils.cxx:5680
 TQHistogramUtils.cxx:5681
 TQHistogramUtils.cxx:5682
 TQHistogramUtils.cxx:5683
 TQHistogramUtils.cxx:5684
 TQHistogramUtils.cxx:5685
 TQHistogramUtils.cxx:5686
 TQHistogramUtils.cxx:5687
 TQHistogramUtils.cxx:5688
 TQHistogramUtils.cxx:5689
 TQHistogramUtils.cxx:5690
 TQHistogramUtils.cxx:5691
 TQHistogramUtils.cxx:5692
 TQHistogramUtils.cxx:5693
 TQHistogramUtils.cxx:5694
 TQHistogramUtils.cxx:5695
 TQHistogramUtils.cxx:5696
 TQHistogramUtils.cxx:5697
 TQHistogramUtils.cxx:5698
 TQHistogramUtils.cxx:5699
 TQHistogramUtils.cxx:5700
 TQHistogramUtils.cxx:5701
 TQHistogramUtils.cxx:5702
 TQHistogramUtils.cxx:5703
 TQHistogramUtils.cxx:5704
 TQHistogramUtils.cxx:5705
 TQHistogramUtils.cxx:5706
 TQHistogramUtils.cxx:5707
 TQHistogramUtils.cxx:5708
 TQHistogramUtils.cxx:5709
 TQHistogramUtils.cxx:5710
 TQHistogramUtils.cxx:5711
 TQHistogramUtils.cxx:5712
 TQHistogramUtils.cxx:5713
 TQHistogramUtils.cxx:5714
 TQHistogramUtils.cxx:5715
 TQHistogramUtils.cxx:5716
 TQHistogramUtils.cxx:5717
 TQHistogramUtils.cxx:5718
 TQHistogramUtils.cxx:5719
 TQHistogramUtils.cxx:5720
 TQHistogramUtils.cxx:5721
 TQHistogramUtils.cxx:5722
 TQHistogramUtils.cxx:5723
 TQHistogramUtils.cxx:5724
 TQHistogramUtils.cxx:5725
 TQHistogramUtils.cxx:5726
 TQHistogramUtils.cxx:5727
 TQHistogramUtils.cxx:5728
 TQHistogramUtils.cxx:5729
 TQHistogramUtils.cxx:5730
 TQHistogramUtils.cxx:5731
 TQHistogramUtils.cxx:5732
 TQHistogramUtils.cxx:5733
 TQHistogramUtils.cxx:5734
 TQHistogramUtils.cxx:5735
 TQHistogramUtils.cxx:5736
 TQHistogramUtils.cxx:5737
 TQHistogramUtils.cxx:5738
 TQHistogramUtils.cxx:5739
 TQHistogramUtils.cxx:5740
 TQHistogramUtils.cxx:5741
 TQHistogramUtils.cxx:5742
 TQHistogramUtils.cxx:5743
 TQHistogramUtils.cxx:5744
 TQHistogramUtils.cxx:5745
 TQHistogramUtils.cxx:5746
 TQHistogramUtils.cxx:5747
 TQHistogramUtils.cxx:5748
 TQHistogramUtils.cxx:5749
 TQHistogramUtils.cxx:5750
 TQHistogramUtils.cxx:5751
 TQHistogramUtils.cxx:5752
 TQHistogramUtils.cxx:5753
 TQHistogramUtils.cxx:5754
 TQHistogramUtils.cxx:5755
 TQHistogramUtils.cxx:5756
 TQHistogramUtils.cxx:5757
 TQHistogramUtils.cxx:5758
 TQHistogramUtils.cxx:5759
 TQHistogramUtils.cxx:5760
 TQHistogramUtils.cxx:5761
 TQHistogramUtils.cxx:5762
 TQHistogramUtils.cxx:5763
 TQHistogramUtils.cxx:5764
 TQHistogramUtils.cxx:5765
 TQHistogramUtils.cxx:5766
 TQHistogramUtils.cxx:5767
 TQHistogramUtils.cxx:5768
 TQHistogramUtils.cxx:5769
 TQHistogramUtils.cxx:5770
 TQHistogramUtils.cxx:5771
 TQHistogramUtils.cxx:5772
 TQHistogramUtils.cxx:5773
 TQHistogramUtils.cxx:5774
 TQHistogramUtils.cxx:5775
 TQHistogramUtils.cxx:5776
 TQHistogramUtils.cxx:5777
 TQHistogramUtils.cxx:5778
 TQHistogramUtils.cxx:5779
 TQHistogramUtils.cxx:5780
 TQHistogramUtils.cxx:5781
 TQHistogramUtils.cxx:5782
 TQHistogramUtils.cxx:5783
 TQHistogramUtils.cxx:5784
 TQHistogramUtils.cxx:5785
 TQHistogramUtils.cxx:5786
 TQHistogramUtils.cxx:5787
 TQHistogramUtils.cxx:5788
 TQHistogramUtils.cxx:5789
 TQHistogramUtils.cxx:5790
 TQHistogramUtils.cxx:5791
 TQHistogramUtils.cxx:5792
 TQHistogramUtils.cxx:5793
 TQHistogramUtils.cxx:5794
 TQHistogramUtils.cxx:5795
 TQHistogramUtils.cxx:5796
 TQHistogramUtils.cxx:5797
 TQHistogramUtils.cxx:5798
 TQHistogramUtils.cxx:5799
 TQHistogramUtils.cxx:5800
 TQHistogramUtils.cxx:5801
 TQHistogramUtils.cxx:5802
 TQHistogramUtils.cxx:5803
 TQHistogramUtils.cxx:5804
 TQHistogramUtils.cxx:5805
 TQHistogramUtils.cxx:5806
 TQHistogramUtils.cxx:5807
 TQHistogramUtils.cxx:5808
 TQHistogramUtils.cxx:5809
 TQHistogramUtils.cxx:5810
 TQHistogramUtils.cxx:5811
 TQHistogramUtils.cxx:5812
 TQHistogramUtils.cxx:5813
 TQHistogramUtils.cxx:5814
 TQHistogramUtils.cxx:5815
 TQHistogramUtils.cxx:5816
 TQHistogramUtils.cxx:5817
 TQHistogramUtils.cxx:5818
 TQHistogramUtils.cxx:5819
 TQHistogramUtils.cxx:5820
 TQHistogramUtils.cxx:5821
 TQHistogramUtils.cxx:5822
 TQHistogramUtils.cxx:5823
 TQHistogramUtils.cxx:5824
 TQHistogramUtils.cxx:5825
 TQHistogramUtils.cxx:5826
 TQHistogramUtils.cxx:5827
 TQHistogramUtils.cxx:5828
 TQHistogramUtils.cxx:5829
 TQHistogramUtils.cxx:5830
 TQHistogramUtils.cxx:5831
 TQHistogramUtils.cxx:5832
 TQHistogramUtils.cxx:5833
 TQHistogramUtils.cxx:5834
 TQHistogramUtils.cxx:5835
 TQHistogramUtils.cxx:5836
 TQHistogramUtils.cxx:5837
 TQHistogramUtils.cxx:5838
 TQHistogramUtils.cxx:5839
 TQHistogramUtils.cxx:5840
 TQHistogramUtils.cxx:5841
 TQHistogramUtils.cxx:5842
 TQHistogramUtils.cxx:5843
 TQHistogramUtils.cxx:5844
 TQHistogramUtils.cxx:5845
 TQHistogramUtils.cxx:5846
 TQHistogramUtils.cxx:5847
 TQHistogramUtils.cxx:5848
 TQHistogramUtils.cxx:5849
 TQHistogramUtils.cxx:5850
 TQHistogramUtils.cxx:5851
 TQHistogramUtils.cxx:5852
 TQHistogramUtils.cxx:5853
 TQHistogramUtils.cxx:5854
 TQHistogramUtils.cxx:5855
 TQHistogramUtils.cxx:5856
 TQHistogramUtils.cxx:5857
 TQHistogramUtils.cxx:5858
 TQHistogramUtils.cxx:5859
 TQHistogramUtils.cxx:5860
 TQHistogramUtils.cxx:5861
 TQHistogramUtils.cxx:5862
 TQHistogramUtils.cxx:5863
 TQHistogramUtils.cxx:5864
 TQHistogramUtils.cxx:5865
 TQHistogramUtils.cxx:5866
 TQHistogramUtils.cxx:5867
 TQHistogramUtils.cxx:5868
 TQHistogramUtils.cxx:5869
 TQHistogramUtils.cxx:5870
 TQHistogramUtils.cxx:5871
 TQHistogramUtils.cxx:5872
 TQHistogramUtils.cxx:5873
 TQHistogramUtils.cxx:5874
 TQHistogramUtils.cxx:5875
 TQHistogramUtils.cxx:5876
 TQHistogramUtils.cxx:5877
 TQHistogramUtils.cxx:5878
 TQHistogramUtils.cxx:5879
 TQHistogramUtils.cxx:5880
 TQHistogramUtils.cxx:5881
 TQHistogramUtils.cxx:5882
 TQHistogramUtils.cxx:5883
 TQHistogramUtils.cxx:5884
 TQHistogramUtils.cxx:5885
 TQHistogramUtils.cxx:5886
 TQHistogramUtils.cxx:5887
 TQHistogramUtils.cxx:5888
 TQHistogramUtils.cxx:5889
 TQHistogramUtils.cxx:5890
 TQHistogramUtils.cxx:5891
 TQHistogramUtils.cxx:5892
 TQHistogramUtils.cxx:5893
 TQHistogramUtils.cxx:5894
 TQHistogramUtils.cxx:5895
 TQHistogramUtils.cxx:5896
 TQHistogramUtils.cxx:5897
 TQHistogramUtils.cxx:5898
 TQHistogramUtils.cxx:5899
 TQHistogramUtils.cxx:5900
 TQHistogramUtils.cxx:5901
 TQHistogramUtils.cxx:5902
 TQHistogramUtils.cxx:5903
 TQHistogramUtils.cxx:5904
 TQHistogramUtils.cxx:5905
 TQHistogramUtils.cxx:5906
 TQHistogramUtils.cxx:5907
 TQHistogramUtils.cxx:5908
 TQHistogramUtils.cxx:5909
 TQHistogramUtils.cxx:5910
 TQHistogramUtils.cxx:5911
 TQHistogramUtils.cxx:5912
 TQHistogramUtils.cxx:5913
 TQHistogramUtils.cxx:5914
 TQHistogramUtils.cxx:5915
 TQHistogramUtils.cxx:5916
 TQHistogramUtils.cxx:5917
 TQHistogramUtils.cxx:5918
 TQHistogramUtils.cxx:5919
 TQHistogramUtils.cxx:5920
 TQHistogramUtils.cxx:5921
 TQHistogramUtils.cxx:5922
 TQHistogramUtils.cxx:5923
 TQHistogramUtils.cxx:5924
 TQHistogramUtils.cxx:5925
 TQHistogramUtils.cxx:5926
 TQHistogramUtils.cxx:5927
 TQHistogramUtils.cxx:5928
 TQHistogramUtils.cxx:5929
 TQHistogramUtils.cxx:5930
 TQHistogramUtils.cxx:5931
 TQHistogramUtils.cxx:5932
 TQHistogramUtils.cxx:5933
 TQHistogramUtils.cxx:5934
 TQHistogramUtils.cxx:5935
 TQHistogramUtils.cxx:5936
 TQHistogramUtils.cxx:5937
 TQHistogramUtils.cxx:5938
 TQHistogramUtils.cxx:5939
 TQHistogramUtils.cxx:5940
 TQHistogramUtils.cxx:5941
 TQHistogramUtils.cxx:5942
 TQHistogramUtils.cxx:5943
 TQHistogramUtils.cxx:5944
 TQHistogramUtils.cxx:5945
 TQHistogramUtils.cxx:5946
 TQHistogramUtils.cxx:5947
 TQHistogramUtils.cxx:5948
 TQHistogramUtils.cxx:5949
 TQHistogramUtils.cxx:5950
 TQHistogramUtils.cxx:5951
 TQHistogramUtils.cxx:5952
 TQHistogramUtils.cxx:5953
 TQHistogramUtils.cxx:5954
 TQHistogramUtils.cxx:5955
 TQHistogramUtils.cxx:5956
 TQHistogramUtils.cxx:5957
 TQHistogramUtils.cxx:5958
 TQHistogramUtils.cxx:5959
 TQHistogramUtils.cxx:5960
 TQHistogramUtils.cxx:5961
 TQHistogramUtils.cxx:5962
 TQHistogramUtils.cxx:5963
 TQHistogramUtils.cxx:5964
 TQHistogramUtils.cxx:5965
 TQHistogramUtils.cxx:5966
 TQHistogramUtils.cxx:5967
 TQHistogramUtils.cxx:5968
 TQHistogramUtils.cxx:5969
 TQHistogramUtils.cxx:5970
 TQHistogramUtils.cxx:5971
 TQHistogramUtils.cxx:5972
 TQHistogramUtils.cxx:5973
 TQHistogramUtils.cxx:5974
 TQHistogramUtils.cxx:5975
 TQHistogramUtils.cxx:5976
 TQHistogramUtils.cxx:5977
 TQHistogramUtils.cxx:5978
 TQHistogramUtils.cxx:5979
 TQHistogramUtils.cxx:5980
 TQHistogramUtils.cxx:5981
 TQHistogramUtils.cxx:5982
 TQHistogramUtils.cxx:5983
 TQHistogramUtils.cxx:5984
 TQHistogramUtils.cxx:5985
 TQHistogramUtils.cxx:5986
 TQHistogramUtils.cxx:5987
 TQHistogramUtils.cxx:5988
 TQHistogramUtils.cxx:5989
 TQHistogramUtils.cxx:5990
 TQHistogramUtils.cxx:5991
 TQHistogramUtils.cxx:5992
 TQHistogramUtils.cxx:5993
 TQHistogramUtils.cxx:5994
 TQHistogramUtils.cxx:5995
 TQHistogramUtils.cxx:5996
 TQHistogramUtils.cxx:5997
 TQHistogramUtils.cxx:5998
 TQHistogramUtils.cxx:5999
 TQHistogramUtils.cxx:6000
 TQHistogramUtils.cxx:6001
 TQHistogramUtils.cxx:6002
 TQHistogramUtils.cxx:6003
 TQHistogramUtils.cxx:6004
 TQHistogramUtils.cxx:6005
 TQHistogramUtils.cxx:6006
 TQHistogramUtils.cxx:6007
 TQHistogramUtils.cxx:6008
 TQHistogramUtils.cxx:6009
 TQHistogramUtils.cxx:6010
 TQHistogramUtils.cxx:6011
 TQHistogramUtils.cxx:6012
 TQHistogramUtils.cxx:6013
 TQHistogramUtils.cxx:6014
 TQHistogramUtils.cxx:6015
 TQHistogramUtils.cxx:6016
 TQHistogramUtils.cxx:6017
 TQHistogramUtils.cxx:6018
 TQHistogramUtils.cxx:6019
 TQHistogramUtils.cxx:6020
 TQHistogramUtils.cxx:6021
 TQHistogramUtils.cxx:6022
 TQHistogramUtils.cxx:6023
 TQHistogramUtils.cxx:6024
 TQHistogramUtils.cxx:6025
 TQHistogramUtils.cxx:6026
 TQHistogramUtils.cxx:6027
 TQHistogramUtils.cxx:6028
 TQHistogramUtils.cxx:6029
 TQHistogramUtils.cxx:6030
 TQHistogramUtils.cxx:6031
 TQHistogramUtils.cxx:6032
 TQHistogramUtils.cxx:6033
 TQHistogramUtils.cxx:6034
 TQHistogramUtils.cxx:6035
 TQHistogramUtils.cxx:6036
 TQHistogramUtils.cxx:6037
 TQHistogramUtils.cxx:6038
 TQHistogramUtils.cxx:6039
 TQHistogramUtils.cxx:6040
 TQHistogramUtils.cxx:6041
 TQHistogramUtils.cxx:6042
 TQHistogramUtils.cxx:6043
 TQHistogramUtils.cxx:6044
 TQHistogramUtils.cxx:6045
 TQHistogramUtils.cxx:6046
 TQHistogramUtils.cxx:6047
 TQHistogramUtils.cxx:6048
 TQHistogramUtils.cxx:6049
 TQHistogramUtils.cxx:6050
 TQHistogramUtils.cxx:6051
 TQHistogramUtils.cxx:6052
 TQHistogramUtils.cxx:6053
 TQHistogramUtils.cxx:6054
 TQHistogramUtils.cxx:6055
 TQHistogramUtils.cxx:6056
 TQHistogramUtils.cxx:6057
 TQHistogramUtils.cxx:6058
 TQHistogramUtils.cxx:6059
 TQHistogramUtils.cxx:6060
 TQHistogramUtils.cxx:6061
 TQHistogramUtils.cxx:6062
 TQHistogramUtils.cxx:6063
 TQHistogramUtils.cxx:6064
 TQHistogramUtils.cxx:6065
 TQHistogramUtils.cxx:6066
 TQHistogramUtils.cxx:6067
 TQHistogramUtils.cxx:6068
 TQHistogramUtils.cxx:6069
 TQHistogramUtils.cxx:6070
 TQHistogramUtils.cxx:6071
 TQHistogramUtils.cxx:6072
 TQHistogramUtils.cxx:6073
 TQHistogramUtils.cxx:6074
 TQHistogramUtils.cxx:6075
 TQHistogramUtils.cxx:6076
 TQHistogramUtils.cxx:6077
 TQHistogramUtils.cxx:6078
 TQHistogramUtils.cxx:6079
 TQHistogramUtils.cxx:6080
 TQHistogramUtils.cxx:6081
 TQHistogramUtils.cxx:6082
 TQHistogramUtils.cxx:6083
 TQHistogramUtils.cxx:6084
 TQHistogramUtils.cxx:6085
 TQHistogramUtils.cxx:6086
 TQHistogramUtils.cxx:6087
 TQHistogramUtils.cxx:6088
 TQHistogramUtils.cxx:6089
 TQHistogramUtils.cxx:6090
 TQHistogramUtils.cxx:6091
 TQHistogramUtils.cxx:6092
 TQHistogramUtils.cxx:6093
 TQHistogramUtils.cxx:6094
 TQHistogramUtils.cxx:6095
 TQHistogramUtils.cxx:6096
 TQHistogramUtils.cxx:6097
 TQHistogramUtils.cxx:6098
 TQHistogramUtils.cxx:6099
 TQHistogramUtils.cxx:6100
 TQHistogramUtils.cxx:6101
 TQHistogramUtils.cxx:6102
 TQHistogramUtils.cxx:6103
 TQHistogramUtils.cxx:6104
 TQHistogramUtils.cxx:6105
 TQHistogramUtils.cxx:6106
 TQHistogramUtils.cxx:6107
 TQHistogramUtils.cxx:6108
 TQHistogramUtils.cxx:6109
 TQHistogramUtils.cxx:6110
 TQHistogramUtils.cxx:6111
 TQHistogramUtils.cxx:6112
 TQHistogramUtils.cxx:6113
 TQHistogramUtils.cxx:6114
 TQHistogramUtils.cxx:6115
 TQHistogramUtils.cxx:6116
 TQHistogramUtils.cxx:6117
 TQHistogramUtils.cxx:6118
 TQHistogramUtils.cxx:6119
 TQHistogramUtils.cxx:6120
 TQHistogramUtils.cxx:6121
 TQHistogramUtils.cxx:6122
 TQHistogramUtils.cxx:6123
 TQHistogramUtils.cxx:6124
 TQHistogramUtils.cxx:6125
 TQHistogramUtils.cxx:6126
 TQHistogramUtils.cxx:6127
 TQHistogramUtils.cxx:6128
 TQHistogramUtils.cxx:6129
 TQHistogramUtils.cxx:6130
 TQHistogramUtils.cxx:6131
 TQHistogramUtils.cxx:6132
 TQHistogramUtils.cxx:6133
 TQHistogramUtils.cxx:6134
 TQHistogramUtils.cxx:6135
 TQHistogramUtils.cxx:6136
 TQHistogramUtils.cxx:6137
 TQHistogramUtils.cxx:6138
 TQHistogramUtils.cxx:6139
 TQHistogramUtils.cxx:6140
 TQHistogramUtils.cxx:6141
 TQHistogramUtils.cxx:6142
 TQHistogramUtils.cxx:6143
 TQHistogramUtils.cxx:6144
 TQHistogramUtils.cxx:6145
 TQHistogramUtils.cxx:6146
 TQHistogramUtils.cxx:6147
 TQHistogramUtils.cxx:6148
 TQHistogramUtils.cxx:6149
 TQHistogramUtils.cxx:6150
 TQHistogramUtils.cxx:6151
 TQHistogramUtils.cxx:6152
 TQHistogramUtils.cxx:6153
 TQHistogramUtils.cxx:6154
 TQHistogramUtils.cxx:6155
 TQHistogramUtils.cxx:6156
 TQHistogramUtils.cxx:6157
 TQHistogramUtils.cxx:6158
 TQHistogramUtils.cxx:6159
 TQHistogramUtils.cxx:6160
 TQHistogramUtils.cxx:6161
 TQHistogramUtils.cxx:6162
 TQHistogramUtils.cxx:6163
 TQHistogramUtils.cxx:6164
 TQHistogramUtils.cxx:6165
 TQHistogramUtils.cxx:6166
 TQHistogramUtils.cxx:6167
 TQHistogramUtils.cxx:6168
 TQHistogramUtils.cxx:6169
 TQHistogramUtils.cxx:6170
 TQHistogramUtils.cxx:6171
 TQHistogramUtils.cxx:6172
 TQHistogramUtils.cxx:6173
 TQHistogramUtils.cxx:6174
 TQHistogramUtils.cxx:6175
 TQHistogramUtils.cxx:6176
 TQHistogramUtils.cxx:6177
 TQHistogramUtils.cxx:6178
 TQHistogramUtils.cxx:6179
 TQHistogramUtils.cxx:6180
 TQHistogramUtils.cxx:6181
 TQHistogramUtils.cxx:6182
 TQHistogramUtils.cxx:6183
 TQHistogramUtils.cxx:6184
 TQHistogramUtils.cxx:6185
 TQHistogramUtils.cxx:6186
 TQHistogramUtils.cxx:6187
 TQHistogramUtils.cxx:6188
 TQHistogramUtils.cxx:6189
 TQHistogramUtils.cxx:6190
 TQHistogramUtils.cxx:6191
 TQHistogramUtils.cxx:6192
 TQHistogramUtils.cxx:6193
 TQHistogramUtils.cxx:6194
 TQHistogramUtils.cxx:6195
 TQHistogramUtils.cxx:6196
 TQHistogramUtils.cxx:6197
 TQHistogramUtils.cxx:6198
 TQHistogramUtils.cxx:6199
 TQHistogramUtils.cxx:6200
 TQHistogramUtils.cxx:6201
 TQHistogramUtils.cxx:6202
 TQHistogramUtils.cxx:6203
 TQHistogramUtils.cxx:6204
 TQHistogramUtils.cxx:6205
 TQHistogramUtils.cxx:6206
 TQHistogramUtils.cxx:6207
 TQHistogramUtils.cxx:6208
 TQHistogramUtils.cxx:6209
 TQHistogramUtils.cxx:6210
 TQHistogramUtils.cxx:6211
 TQHistogramUtils.cxx:6212
 TQHistogramUtils.cxx:6213
 TQHistogramUtils.cxx:6214
 TQHistogramUtils.cxx:6215
 TQHistogramUtils.cxx:6216
 TQHistogramUtils.cxx:6217
 TQHistogramUtils.cxx:6218
 TQHistogramUtils.cxx:6219
 TQHistogramUtils.cxx:6220
 TQHistogramUtils.cxx:6221
 TQHistogramUtils.cxx:6222
 TQHistogramUtils.cxx:6223
 TQHistogramUtils.cxx:6224
 TQHistogramUtils.cxx:6225
 TQHistogramUtils.cxx:6226
 TQHistogramUtils.cxx:6227
 TQHistogramUtils.cxx:6228
 TQHistogramUtils.cxx:6229
 TQHistogramUtils.cxx:6230
 TQHistogramUtils.cxx:6231
 TQHistogramUtils.cxx:6232
 TQHistogramUtils.cxx:6233
 TQHistogramUtils.cxx:6234
 TQHistogramUtils.cxx:6235
 TQHistogramUtils.cxx:6236
 TQHistogramUtils.cxx:6237
 TQHistogramUtils.cxx:6238
 TQHistogramUtils.cxx:6239
 TQHistogramUtils.cxx:6240
 TQHistogramUtils.cxx:6241
 TQHistogramUtils.cxx:6242
 TQHistogramUtils.cxx:6243
 TQHistogramUtils.cxx:6244
 TQHistogramUtils.cxx:6245
 TQHistogramUtils.cxx:6246
 TQHistogramUtils.cxx:6247
 TQHistogramUtils.cxx:6248
 TQHistogramUtils.cxx:6249
 TQHistogramUtils.cxx:6250
 TQHistogramUtils.cxx:6251
 TQHistogramUtils.cxx:6252
 TQHistogramUtils.cxx:6253
 TQHistogramUtils.cxx:6254
 TQHistogramUtils.cxx:6255
 TQHistogramUtils.cxx:6256
 TQHistogramUtils.cxx:6257
 TQHistogramUtils.cxx:6258
 TQHistogramUtils.cxx:6259
 TQHistogramUtils.cxx:6260
 TQHistogramUtils.cxx:6261
 TQHistogramUtils.cxx:6262
 TQHistogramUtils.cxx:6263
 TQHistogramUtils.cxx:6264
 TQHistogramUtils.cxx:6265
 TQHistogramUtils.cxx:6266
 TQHistogramUtils.cxx:6267
 TQHistogramUtils.cxx:6268
 TQHistogramUtils.cxx:6269
 TQHistogramUtils.cxx:6270
 TQHistogramUtils.cxx:6271
 TQHistogramUtils.cxx:6272
 TQHistogramUtils.cxx:6273
 TQHistogramUtils.cxx:6274
 TQHistogramUtils.cxx:6275
 TQHistogramUtils.cxx:6276
 TQHistogramUtils.cxx:6277
 TQHistogramUtils.cxx:6278
 TQHistogramUtils.cxx:6279
 TQHistogramUtils.cxx:6280
 TQHistogramUtils.cxx:6281
 TQHistogramUtils.cxx:6282
 TQHistogramUtils.cxx:6283
 TQHistogramUtils.cxx:6284
 TQHistogramUtils.cxx:6285
 TQHistogramUtils.cxx:6286
 TQHistogramUtils.cxx:6287
 TQHistogramUtils.cxx:6288
 TQHistogramUtils.cxx:6289
 TQHistogramUtils.cxx:6290
 TQHistogramUtils.cxx:6291
 TQHistogramUtils.cxx:6292
 TQHistogramUtils.cxx:6293
 TQHistogramUtils.cxx:6294
 TQHistogramUtils.cxx:6295
 TQHistogramUtils.cxx:6296
 TQHistogramUtils.cxx:6297
 TQHistogramUtils.cxx:6298
 TQHistogramUtils.cxx:6299
 TQHistogramUtils.cxx:6300
 TQHistogramUtils.cxx:6301
 TQHistogramUtils.cxx:6302
 TQHistogramUtils.cxx:6303
 TQHistogramUtils.cxx:6304
 TQHistogramUtils.cxx:6305
 TQHistogramUtils.cxx:6306
 TQHistogramUtils.cxx:6307
 TQHistogramUtils.cxx:6308
 TQHistogramUtils.cxx:6309
 TQHistogramUtils.cxx:6310
 TQHistogramUtils.cxx:6311
 TQHistogramUtils.cxx:6312
 TQHistogramUtils.cxx:6313
 TQHistogramUtils.cxx:6314
 TQHistogramUtils.cxx:6315
 TQHistogramUtils.cxx:6316
 TQHistogramUtils.cxx:6317
 TQHistogramUtils.cxx:6318
 TQHistogramUtils.cxx:6319
 TQHistogramUtils.cxx:6320
 TQHistogramUtils.cxx:6321
 TQHistogramUtils.cxx:6322
 TQHistogramUtils.cxx:6323
 TQHistogramUtils.cxx:6324
 TQHistogramUtils.cxx:6325
 TQHistogramUtils.cxx:6326
 TQHistogramUtils.cxx:6327
 TQHistogramUtils.cxx:6328
 TQHistogramUtils.cxx:6329
 TQHistogramUtils.cxx:6330
 TQHistogramUtils.cxx:6331
 TQHistogramUtils.cxx:6332
 TQHistogramUtils.cxx:6333
 TQHistogramUtils.cxx:6334
 TQHistogramUtils.cxx:6335
 TQHistogramUtils.cxx:6336
 TQHistogramUtils.cxx:6337
 TQHistogramUtils.cxx:6338
 TQHistogramUtils.cxx:6339
 TQHistogramUtils.cxx:6340
 TQHistogramUtils.cxx:6341
 TQHistogramUtils.cxx:6342
 TQHistogramUtils.cxx:6343
 TQHistogramUtils.cxx:6344
 TQHistogramUtils.cxx:6345
 TQHistogramUtils.cxx:6346
 TQHistogramUtils.cxx:6347
 TQHistogramUtils.cxx:6348
 TQHistogramUtils.cxx:6349
 TQHistogramUtils.cxx:6350
 TQHistogramUtils.cxx:6351
 TQHistogramUtils.cxx:6352
 TQHistogramUtils.cxx:6353
 TQHistogramUtils.cxx:6354
 TQHistogramUtils.cxx:6355
 TQHistogramUtils.cxx:6356
 TQHistogramUtils.cxx:6357
 TQHistogramUtils.cxx:6358
 TQHistogramUtils.cxx:6359
 TQHistogramUtils.cxx:6360
 TQHistogramUtils.cxx:6361
 TQHistogramUtils.cxx:6362
 TQHistogramUtils.cxx:6363
 TQHistogramUtils.cxx:6364
 TQHistogramUtils.cxx:6365
 TQHistogramUtils.cxx:6366
 TQHistogramUtils.cxx:6367
 TQHistogramUtils.cxx:6368
 TQHistogramUtils.cxx:6369
 TQHistogramUtils.cxx:6370
 TQHistogramUtils.cxx:6371
 TQHistogramUtils.cxx:6372
 TQHistogramUtils.cxx:6373
 TQHistogramUtils.cxx:6374
 TQHistogramUtils.cxx:6375
 TQHistogramUtils.cxx:6376
 TQHistogramUtils.cxx:6377
 TQHistogramUtils.cxx:6378
 TQHistogramUtils.cxx:6379
 TQHistogramUtils.cxx:6380
 TQHistogramUtils.cxx:6381
 TQHistogramUtils.cxx:6382
 TQHistogramUtils.cxx:6383
 TQHistogramUtils.cxx:6384
 TQHistogramUtils.cxx:6385
 TQHistogramUtils.cxx:6386
 TQHistogramUtils.cxx:6387
 TQHistogramUtils.cxx:6388
 TQHistogramUtils.cxx:6389
 TQHistogramUtils.cxx:6390
 TQHistogramUtils.cxx:6391
 TQHistogramUtils.cxx:6392
 TQHistogramUtils.cxx:6393
 TQHistogramUtils.cxx:6394
 TQHistogramUtils.cxx:6395
 TQHistogramUtils.cxx:6396
 TQHistogramUtils.cxx:6397
 TQHistogramUtils.cxx:6398
 TQHistogramUtils.cxx:6399
 TQHistogramUtils.cxx:6400
 TQHistogramUtils.cxx:6401
 TQHistogramUtils.cxx:6402
 TQHistogramUtils.cxx:6403
 TQHistogramUtils.cxx:6404
 TQHistogramUtils.cxx:6405
 TQHistogramUtils.cxx:6406
 TQHistogramUtils.cxx:6407
 TQHistogramUtils.cxx:6408
 TQHistogramUtils.cxx:6409
 TQHistogramUtils.cxx:6410
 TQHistogramUtils.cxx:6411
 TQHistogramUtils.cxx:6412
 TQHistogramUtils.cxx:6413
 TQHistogramUtils.cxx:6414
 TQHistogramUtils.cxx:6415
 TQHistogramUtils.cxx:6416
 TQHistogramUtils.cxx:6417
 TQHistogramUtils.cxx:6418
 TQHistogramUtils.cxx:6419
 TQHistogramUtils.cxx:6420
 TQHistogramUtils.cxx:6421
 TQHistogramUtils.cxx:6422
 TQHistogramUtils.cxx:6423
 TQHistogramUtils.cxx:6424
 TQHistogramUtils.cxx:6425
 TQHistogramUtils.cxx:6426
 TQHistogramUtils.cxx:6427
 TQHistogramUtils.cxx:6428
 TQHistogramUtils.cxx:6429
 TQHistogramUtils.cxx:6430
 TQHistogramUtils.cxx:6431
 TQHistogramUtils.cxx:6432
 TQHistogramUtils.cxx:6433
 TQHistogramUtils.cxx:6434
 TQHistogramUtils.cxx:6435
 TQHistogramUtils.cxx:6436
 TQHistogramUtils.cxx:6437
 TQHistogramUtils.cxx:6438
 TQHistogramUtils.cxx:6439
 TQHistogramUtils.cxx:6440
 TQHistogramUtils.cxx:6441
 TQHistogramUtils.cxx:6442
 TQHistogramUtils.cxx:6443
 TQHistogramUtils.cxx:6444
 TQHistogramUtils.cxx:6445
 TQHistogramUtils.cxx:6446
 TQHistogramUtils.cxx:6447
 TQHistogramUtils.cxx:6448
 TQHistogramUtils.cxx:6449
 TQHistogramUtils.cxx:6450
 TQHistogramUtils.cxx:6451
 TQHistogramUtils.cxx:6452
 TQHistogramUtils.cxx:6453
 TQHistogramUtils.cxx:6454
 TQHistogramUtils.cxx:6455
 TQHistogramUtils.cxx:6456
 TQHistogramUtils.cxx:6457
 TQHistogramUtils.cxx:6458
 TQHistogramUtils.cxx:6459
 TQHistogramUtils.cxx:6460
 TQHistogramUtils.cxx:6461
 TQHistogramUtils.cxx:6462
 TQHistogramUtils.cxx:6463
 TQHistogramUtils.cxx:6464
 TQHistogramUtils.cxx:6465
 TQHistogramUtils.cxx:6466
 TQHistogramUtils.cxx:6467
 TQHistogramUtils.cxx:6468
 TQHistogramUtils.cxx:6469
 TQHistogramUtils.cxx:6470
 TQHistogramUtils.cxx:6471
 TQHistogramUtils.cxx:6472
 TQHistogramUtils.cxx:6473
 TQHistogramUtils.cxx:6474
 TQHistogramUtils.cxx:6475
 TQHistogramUtils.cxx:6476
 TQHistogramUtils.cxx:6477
 TQHistogramUtils.cxx:6478
 TQHistogramUtils.cxx:6479
 TQHistogramUtils.cxx:6480
 TQHistogramUtils.cxx:6481
 TQHistogramUtils.cxx:6482
 TQHistogramUtils.cxx:6483
 TQHistogramUtils.cxx:6484
 TQHistogramUtils.cxx:6485
 TQHistogramUtils.cxx:6486
 TQHistogramUtils.cxx:6487
 TQHistogramUtils.cxx:6488
 TQHistogramUtils.cxx:6489
 TQHistogramUtils.cxx:6490
 TQHistogramUtils.cxx:6491
 TQHistogramUtils.cxx:6492
 TQHistogramUtils.cxx:6493
 TQHistogramUtils.cxx:6494
 TQHistogramUtils.cxx:6495
 TQHistogramUtils.cxx:6496
 TQHistogramUtils.cxx:6497
 TQHistogramUtils.cxx:6498
 TQHistogramUtils.cxx:6499
 TQHistogramUtils.cxx:6500
 TQHistogramUtils.cxx:6501
 TQHistogramUtils.cxx:6502
 TQHistogramUtils.cxx:6503
 TQHistogramUtils.cxx:6504
 TQHistogramUtils.cxx:6505
 TQHistogramUtils.cxx:6506
 TQHistogramUtils.cxx:6507
 TQHistogramUtils.cxx:6508
 TQHistogramUtils.cxx:6509
 TQHistogramUtils.cxx:6510
 TQHistogramUtils.cxx:6511
 TQHistogramUtils.cxx:6512
 TQHistogramUtils.cxx:6513
 TQHistogramUtils.cxx:6514
 TQHistogramUtils.cxx:6515
 TQHistogramUtils.cxx:6516
 TQHistogramUtils.cxx:6517
 TQHistogramUtils.cxx:6518
 TQHistogramUtils.cxx:6519
 TQHistogramUtils.cxx:6520
 TQHistogramUtils.cxx:6521
 TQHistogramUtils.cxx:6522
 TQHistogramUtils.cxx:6523
 TQHistogramUtils.cxx:6524
 TQHistogramUtils.cxx:6525
 TQHistogramUtils.cxx:6526
 TQHistogramUtils.cxx:6527
 TQHistogramUtils.cxx:6528
 TQHistogramUtils.cxx:6529
 TQHistogramUtils.cxx:6530
 TQHistogramUtils.cxx:6531
 TQHistogramUtils.cxx:6532
 TQHistogramUtils.cxx:6533
 TQHistogramUtils.cxx:6534
 TQHistogramUtils.cxx:6535
 TQHistogramUtils.cxx:6536
 TQHistogramUtils.cxx:6537
 TQHistogramUtils.cxx:6538
 TQHistogramUtils.cxx:6539
 TQHistogramUtils.cxx:6540
 TQHistogramUtils.cxx:6541
 TQHistogramUtils.cxx:6542
 TQHistogramUtils.cxx:6543
 TQHistogramUtils.cxx:6544
 TQHistogramUtils.cxx:6545
 TQHistogramUtils.cxx:6546
 TQHistogramUtils.cxx:6547
 TQHistogramUtils.cxx:6548
 TQHistogramUtils.cxx:6549
 TQHistogramUtils.cxx:6550
 TQHistogramUtils.cxx:6551
 TQHistogramUtils.cxx:6552
 TQHistogramUtils.cxx:6553
 TQHistogramUtils.cxx:6554
 TQHistogramUtils.cxx:6555
 TQHistogramUtils.cxx:6556
 TQHistogramUtils.cxx:6557
 TQHistogramUtils.cxx:6558
 TQHistogramUtils.cxx:6559
 TQHistogramUtils.cxx:6560
 TQHistogramUtils.cxx:6561
 TQHistogramUtils.cxx:6562
 TQHistogramUtils.cxx:6563
 TQHistogramUtils.cxx:6564
 TQHistogramUtils.cxx:6565
 TQHistogramUtils.cxx:6566
 TQHistogramUtils.cxx:6567
 TQHistogramUtils.cxx:6568
 TQHistogramUtils.cxx:6569
 TQHistogramUtils.cxx:6570
 TQHistogramUtils.cxx:6571
 TQHistogramUtils.cxx:6572
 TQHistogramUtils.cxx:6573
 TQHistogramUtils.cxx:6574
 TQHistogramUtils.cxx:6575
 TQHistogramUtils.cxx:6576
 TQHistogramUtils.cxx:6577
 TQHistogramUtils.cxx:6578
 TQHistogramUtils.cxx:6579
 TQHistogramUtils.cxx:6580
 TQHistogramUtils.cxx:6581
 TQHistogramUtils.cxx:6582
 TQHistogramUtils.cxx:6583
 TQHistogramUtils.cxx:6584
 TQHistogramUtils.cxx:6585
 TQHistogramUtils.cxx:6586
 TQHistogramUtils.cxx:6587
 TQHistogramUtils.cxx:6588
 TQHistogramUtils.cxx:6589
 TQHistogramUtils.cxx:6590
 TQHistogramUtils.cxx:6591
 TQHistogramUtils.cxx:6592
 TQHistogramUtils.cxx:6593
 TQHistogramUtils.cxx:6594
 TQHistogramUtils.cxx:6595
 TQHistogramUtils.cxx:6596
 TQHistogramUtils.cxx:6597
 TQHistogramUtils.cxx:6598
 TQHistogramUtils.cxx:6599
 TQHistogramUtils.cxx:6600
 TQHistogramUtils.cxx:6601
 TQHistogramUtils.cxx:6602
 TQHistogramUtils.cxx:6603
 TQHistogramUtils.cxx:6604
 TQHistogramUtils.cxx:6605
 TQHistogramUtils.cxx:6606
 TQHistogramUtils.cxx:6607
 TQHistogramUtils.cxx:6608
 TQHistogramUtils.cxx:6609
 TQHistogramUtils.cxx:6610
 TQHistogramUtils.cxx:6611
 TQHistogramUtils.cxx:6612
 TQHistogramUtils.cxx:6613
 TQHistogramUtils.cxx:6614
 TQHistogramUtils.cxx:6615
 TQHistogramUtils.cxx:6616
 TQHistogramUtils.cxx:6617
 TQHistogramUtils.cxx:6618
 TQHistogramUtils.cxx:6619
 TQHistogramUtils.cxx:6620
 TQHistogramUtils.cxx:6621
 TQHistogramUtils.cxx:6622
 TQHistogramUtils.cxx:6623
 TQHistogramUtils.cxx:6624
 TQHistogramUtils.cxx:6625
 TQHistogramUtils.cxx:6626
 TQHistogramUtils.cxx:6627
 TQHistogramUtils.cxx:6628
 TQHistogramUtils.cxx:6629
 TQHistogramUtils.cxx:6630
 TQHistogramUtils.cxx:6631
 TQHistogramUtils.cxx:6632
 TQHistogramUtils.cxx:6633
 TQHistogramUtils.cxx:6634
 TQHistogramUtils.cxx:6635
 TQHistogramUtils.cxx:6636
 TQHistogramUtils.cxx:6637
 TQHistogramUtils.cxx:6638
 TQHistogramUtils.cxx:6639
 TQHistogramUtils.cxx:6640
 TQHistogramUtils.cxx:6641
 TQHistogramUtils.cxx:6642
 TQHistogramUtils.cxx:6643
 TQHistogramUtils.cxx:6644
 TQHistogramUtils.cxx:6645
 TQHistogramUtils.cxx:6646
 TQHistogramUtils.cxx:6647
 TQHistogramUtils.cxx:6648
 TQHistogramUtils.cxx:6649
 TQHistogramUtils.cxx:6650
 TQHistogramUtils.cxx:6651
 TQHistogramUtils.cxx:6652
 TQHistogramUtils.cxx:6653
 TQHistogramUtils.cxx:6654
 TQHistogramUtils.cxx:6655
 TQHistogramUtils.cxx:6656
 TQHistogramUtils.cxx:6657
 TQHistogramUtils.cxx:6658
 TQHistogramUtils.cxx:6659
 TQHistogramUtils.cxx:6660
 TQHistogramUtils.cxx:6661
 TQHistogramUtils.cxx:6662
 TQHistogramUtils.cxx:6663
 TQHistogramUtils.cxx:6664
 TQHistogramUtils.cxx:6665
 TQHistogramUtils.cxx:6666
 TQHistogramUtils.cxx:6667
 TQHistogramUtils.cxx:6668
 TQHistogramUtils.cxx:6669
 TQHistogramUtils.cxx:6670
 TQHistogramUtils.cxx:6671
 TQHistogramUtils.cxx:6672
 TQHistogramUtils.cxx:6673
 TQHistogramUtils.cxx:6674
 TQHistogramUtils.cxx:6675
 TQHistogramUtils.cxx:6676
 TQHistogramUtils.cxx:6677
 TQHistogramUtils.cxx:6678
 TQHistogramUtils.cxx:6679
 TQHistogramUtils.cxx:6680
 TQHistogramUtils.cxx:6681
 TQHistogramUtils.cxx:6682
 TQHistogramUtils.cxx:6683
 TQHistogramUtils.cxx:6684
 TQHistogramUtils.cxx:6685
 TQHistogramUtils.cxx:6686
 TQHistogramUtils.cxx:6687
 TQHistogramUtils.cxx:6688
 TQHistogramUtils.cxx:6689
 TQHistogramUtils.cxx:6690
 TQHistogramUtils.cxx:6691
 TQHistogramUtils.cxx:6692
 TQHistogramUtils.cxx:6693
 TQHistogramUtils.cxx:6694
 TQHistogramUtils.cxx:6695
 TQHistogramUtils.cxx:6696
 TQHistogramUtils.cxx:6697
 TQHistogramUtils.cxx:6698
 TQHistogramUtils.cxx:6699
 TQHistogramUtils.cxx:6700
 TQHistogramUtils.cxx:6701
 TQHistogramUtils.cxx:6702
 TQHistogramUtils.cxx:6703
 TQHistogramUtils.cxx:6704
 TQHistogramUtils.cxx:6705
 TQHistogramUtils.cxx:6706
 TQHistogramUtils.cxx:6707
 TQHistogramUtils.cxx:6708
 TQHistogramUtils.cxx:6709
 TQHistogramUtils.cxx:6710
 TQHistogramUtils.cxx:6711
 TQHistogramUtils.cxx:6712
 TQHistogramUtils.cxx:6713
 TQHistogramUtils.cxx:6714
 TQHistogramUtils.cxx:6715
 TQHistogramUtils.cxx:6716
 TQHistogramUtils.cxx:6717
 TQHistogramUtils.cxx:6718
 TQHistogramUtils.cxx:6719
 TQHistogramUtils.cxx:6720
 TQHistogramUtils.cxx:6721
 TQHistogramUtils.cxx:6722
 TQHistogramUtils.cxx:6723
 TQHistogramUtils.cxx:6724
 TQHistogramUtils.cxx:6725
 TQHistogramUtils.cxx:6726
 TQHistogramUtils.cxx:6727
 TQHistogramUtils.cxx:6728
 TQHistogramUtils.cxx:6729
 TQHistogramUtils.cxx:6730
 TQHistogramUtils.cxx:6731
 TQHistogramUtils.cxx:6732
 TQHistogramUtils.cxx:6733
 TQHistogramUtils.cxx:6734
 TQHistogramUtils.cxx:6735
 TQHistogramUtils.cxx:6736
 TQHistogramUtils.cxx:6737
 TQHistogramUtils.cxx:6738
 TQHistogramUtils.cxx:6739
 TQHistogramUtils.cxx:6740
 TQHistogramUtils.cxx:6741
 TQHistogramUtils.cxx:6742
 TQHistogramUtils.cxx:6743
 TQHistogramUtils.cxx:6744
 TQHistogramUtils.cxx:6745
 TQHistogramUtils.cxx:6746
 TQHistogramUtils.cxx:6747
 TQHistogramUtils.cxx:6748
 TQHistogramUtils.cxx:6749
 TQHistogramUtils.cxx:6750
 TQHistogramUtils.cxx:6751
 TQHistogramUtils.cxx:6752
 TQHistogramUtils.cxx:6753
 TQHistogramUtils.cxx:6754
 TQHistogramUtils.cxx:6755
 TQHistogramUtils.cxx:6756
 TQHistogramUtils.cxx:6757
 TQHistogramUtils.cxx:6758
 TQHistogramUtils.cxx:6759
 TQHistogramUtils.cxx:6760
 TQHistogramUtils.cxx:6761
 TQHistogramUtils.cxx:6762
 TQHistogramUtils.cxx:6763
 TQHistogramUtils.cxx:6764
 TQHistogramUtils.cxx:6765
 TQHistogramUtils.cxx:6766
 TQHistogramUtils.cxx:6767
 TQHistogramUtils.cxx:6768
 TQHistogramUtils.cxx:6769
 TQHistogramUtils.cxx:6770
 TQHistogramUtils.cxx:6771
 TQHistogramUtils.cxx:6772
 TQHistogramUtils.cxx:6773
 TQHistogramUtils.cxx:6774
 TQHistogramUtils.cxx:6775
 TQHistogramUtils.cxx:6776
 TQHistogramUtils.cxx:6777
 TQHistogramUtils.cxx:6778
 TQHistogramUtils.cxx:6779
 TQHistogramUtils.cxx:6780
 TQHistogramUtils.cxx:6781
 TQHistogramUtils.cxx:6782
 TQHistogramUtils.cxx:6783
 TQHistogramUtils.cxx:6784
 TQHistogramUtils.cxx:6785
 TQHistogramUtils.cxx:6786
 TQHistogramUtils.cxx:6787
 TQHistogramUtils.cxx:6788
 TQHistogramUtils.cxx:6789
 TQHistogramUtils.cxx:6790
 TQHistogramUtils.cxx:6791
 TQHistogramUtils.cxx:6792
 TQHistogramUtils.cxx:6793
 TQHistogramUtils.cxx:6794
 TQHistogramUtils.cxx:6795
 TQHistogramUtils.cxx:6796
 TQHistogramUtils.cxx:6797
 TQHistogramUtils.cxx:6798
 TQHistogramUtils.cxx:6799
 TQHistogramUtils.cxx:6800
 TQHistogramUtils.cxx:6801
 TQHistogramUtils.cxx:6802
 TQHistogramUtils.cxx:6803
 TQHistogramUtils.cxx:6804
 TQHistogramUtils.cxx:6805
 TQHistogramUtils.cxx:6806
 TQHistogramUtils.cxx:6807
 TQHistogramUtils.cxx:6808
 TQHistogramUtils.cxx:6809
 TQHistogramUtils.cxx:6810
 TQHistogramUtils.cxx:6811
 TQHistogramUtils.cxx:6812
 TQHistogramUtils.cxx:6813
 TQHistogramUtils.cxx:6814
 TQHistogramUtils.cxx:6815
 TQHistogramUtils.cxx:6816
 TQHistogramUtils.cxx:6817
 TQHistogramUtils.cxx:6818
 TQHistogramUtils.cxx:6819
 TQHistogramUtils.cxx:6820
 TQHistogramUtils.cxx:6821
 TQHistogramUtils.cxx:6822
 TQHistogramUtils.cxx:6823
 TQHistogramUtils.cxx:6824
 TQHistogramUtils.cxx:6825
 TQHistogramUtils.cxx:6826
 TQHistogramUtils.cxx:6827
 TQHistogramUtils.cxx:6828
 TQHistogramUtils.cxx:6829
 TQHistogramUtils.cxx:6830
 TQHistogramUtils.cxx:6831
 TQHistogramUtils.cxx:6832
 TQHistogramUtils.cxx:6833
 TQHistogramUtils.cxx:6834
 TQHistogramUtils.cxx:6835
 TQHistogramUtils.cxx:6836
 TQHistogramUtils.cxx:6837
 TQHistogramUtils.cxx:6838
 TQHistogramUtils.cxx:6839
 TQHistogramUtils.cxx:6840
 TQHistogramUtils.cxx:6841
 TQHistogramUtils.cxx:6842
 TQHistogramUtils.cxx:6843
 TQHistogramUtils.cxx:6844
 TQHistogramUtils.cxx:6845
 TQHistogramUtils.cxx:6846
 TQHistogramUtils.cxx:6847
 TQHistogramUtils.cxx:6848
 TQHistogramUtils.cxx:6849
 TQHistogramUtils.cxx:6850
 TQHistogramUtils.cxx:6851
 TQHistogramUtils.cxx:6852
 TQHistogramUtils.cxx:6853
 TQHistogramUtils.cxx:6854
 TQHistogramUtils.cxx:6855
 TQHistogramUtils.cxx:6856
 TQHistogramUtils.cxx:6857
 TQHistogramUtils.cxx:6858
 TQHistogramUtils.cxx:6859
 TQHistogramUtils.cxx:6860
 TQHistogramUtils.cxx:6861
 TQHistogramUtils.cxx:6862
 TQHistogramUtils.cxx:6863
 TQHistogramUtils.cxx:6864
 TQHistogramUtils.cxx:6865
 TQHistogramUtils.cxx:6866
 TQHistogramUtils.cxx:6867
 TQHistogramUtils.cxx:6868
 TQHistogramUtils.cxx:6869
 TQHistogramUtils.cxx:6870
 TQHistogramUtils.cxx:6871
 TQHistogramUtils.cxx:6872
 TQHistogramUtils.cxx:6873
 TQHistogramUtils.cxx:6874
 TQHistogramUtils.cxx:6875
 TQHistogramUtils.cxx:6876
 TQHistogramUtils.cxx:6877
 TQHistogramUtils.cxx:6878
 TQHistogramUtils.cxx:6879
 TQHistogramUtils.cxx:6880
 TQHistogramUtils.cxx:6881
 TQHistogramUtils.cxx:6882
 TQHistogramUtils.cxx:6883
 TQHistogramUtils.cxx:6884
 TQHistogramUtils.cxx:6885
 TQHistogramUtils.cxx:6886
 TQHistogramUtils.cxx:6887
 TQHistogramUtils.cxx:6888
 TQHistogramUtils.cxx:6889
 TQHistogramUtils.cxx:6890
 TQHistogramUtils.cxx:6891
 TQHistogramUtils.cxx:6892
 TQHistogramUtils.cxx:6893
 TQHistogramUtils.cxx:6894
 TQHistogramUtils.cxx:6895
 TQHistogramUtils.cxx:6896
 TQHistogramUtils.cxx:6897
 TQHistogramUtils.cxx:6898
 TQHistogramUtils.cxx:6899
 TQHistogramUtils.cxx:6900
 TQHistogramUtils.cxx:6901
 TQHistogramUtils.cxx:6902
 TQHistogramUtils.cxx:6903
 TQHistogramUtils.cxx:6904
 TQHistogramUtils.cxx:6905
 TQHistogramUtils.cxx:6906
 TQHistogramUtils.cxx:6907
 TQHistogramUtils.cxx:6908
 TQHistogramUtils.cxx:6909
 TQHistogramUtils.cxx:6910
 TQHistogramUtils.cxx:6911
 TQHistogramUtils.cxx:6912
 TQHistogramUtils.cxx:6913
 TQHistogramUtils.cxx:6914
 TQHistogramUtils.cxx:6915
 TQHistogramUtils.cxx:6916
 TQHistogramUtils.cxx:6917
 TQHistogramUtils.cxx:6918
 TQHistogramUtils.cxx:6919
 TQHistogramUtils.cxx:6920
 TQHistogramUtils.cxx:6921
 TQHistogramUtils.cxx:6922
 TQHistogramUtils.cxx:6923
 TQHistogramUtils.cxx:6924
 TQHistogramUtils.cxx:6925
 TQHistogramUtils.cxx:6926
 TQHistogramUtils.cxx:6927
 TQHistogramUtils.cxx:6928
 TQHistogramUtils.cxx:6929
 TQHistogramUtils.cxx:6930
 TQHistogramUtils.cxx:6931
 TQHistogramUtils.cxx:6932
 TQHistogramUtils.cxx:6933
 TQHistogramUtils.cxx:6934
 TQHistogramUtils.cxx:6935
 TQHistogramUtils.cxx:6936
 TQHistogramUtils.cxx:6937
 TQHistogramUtils.cxx:6938
 TQHistogramUtils.cxx:6939
 TQHistogramUtils.cxx:6940
 TQHistogramUtils.cxx:6941
 TQHistogramUtils.cxx:6942
 TQHistogramUtils.cxx:6943
 TQHistogramUtils.cxx:6944
 TQHistogramUtils.cxx:6945
 TQHistogramUtils.cxx:6946
 TQHistogramUtils.cxx:6947
 TQHistogramUtils.cxx:6948
 TQHistogramUtils.cxx:6949
 TQHistogramUtils.cxx:6950
 TQHistogramUtils.cxx:6951
 TQHistogramUtils.cxx:6952
 TQHistogramUtils.cxx:6953
 TQHistogramUtils.cxx:6954
 TQHistogramUtils.cxx:6955
 TQHistogramUtils.cxx:6956
 TQHistogramUtils.cxx:6957
 TQHistogramUtils.cxx:6958
 TQHistogramUtils.cxx:6959
 TQHistogramUtils.cxx:6960
 TQHistogramUtils.cxx:6961
 TQHistogramUtils.cxx:6962
 TQHistogramUtils.cxx:6963
 TQHistogramUtils.cxx:6964
 TQHistogramUtils.cxx:6965
 TQHistogramUtils.cxx:6966
 TQHistogramUtils.cxx:6967
 TQHistogramUtils.cxx:6968
 TQHistogramUtils.cxx:6969
 TQHistogramUtils.cxx:6970
 TQHistogramUtils.cxx:6971
 TQHistogramUtils.cxx:6972
 TQHistogramUtils.cxx:6973
 TQHistogramUtils.cxx:6974
 TQHistogramUtils.cxx:6975
 TQHistogramUtils.cxx:6976
 TQHistogramUtils.cxx:6977
 TQHistogramUtils.cxx:6978
 TQHistogramUtils.cxx:6979
 TQHistogramUtils.cxx:6980
 TQHistogramUtils.cxx:6981
 TQHistogramUtils.cxx:6982
 TQHistogramUtils.cxx:6983
 TQHistogramUtils.cxx:6984
 TQHistogramUtils.cxx:6985
 TQHistogramUtils.cxx:6986
 TQHistogramUtils.cxx:6987
 TQHistogramUtils.cxx:6988
 TQHistogramUtils.cxx:6989
 TQHistogramUtils.cxx:6990
 TQHistogramUtils.cxx:6991
 TQHistogramUtils.cxx:6992
 TQHistogramUtils.cxx:6993
 TQHistogramUtils.cxx:6994
 TQHistogramUtils.cxx:6995
 TQHistogramUtils.cxx:6996
 TQHistogramUtils.cxx:6997
 TQHistogramUtils.cxx:6998
 TQHistogramUtils.cxx:6999
 TQHistogramUtils.cxx:7000
 TQHistogramUtils.cxx:7001
 TQHistogramUtils.cxx:7002
 TQHistogramUtils.cxx:7003
 TQHistogramUtils.cxx:7004
 TQHistogramUtils.cxx:7005
 TQHistogramUtils.cxx:7006
 TQHistogramUtils.cxx:7007
 TQHistogramUtils.cxx:7008
 TQHistogramUtils.cxx:7009
 TQHistogramUtils.cxx:7010
 TQHistogramUtils.cxx:7011
 TQHistogramUtils.cxx:7012
 TQHistogramUtils.cxx:7013
 TQHistogramUtils.cxx:7014
 TQHistogramUtils.cxx:7015
 TQHistogramUtils.cxx:7016
 TQHistogramUtils.cxx:7017
 TQHistogramUtils.cxx:7018
 TQHistogramUtils.cxx:7019
 TQHistogramUtils.cxx:7020
 TQHistogramUtils.cxx:7021
 TQHistogramUtils.cxx:7022
 TQHistogramUtils.cxx:7023
 TQHistogramUtils.cxx:7024
 TQHistogramUtils.cxx:7025
 TQHistogramUtils.cxx:7026
 TQHistogramUtils.cxx:7027
 TQHistogramUtils.cxx:7028
 TQHistogramUtils.cxx:7029
 TQHistogramUtils.cxx:7030
 TQHistogramUtils.cxx:7031
 TQHistogramUtils.cxx:7032
 TQHistogramUtils.cxx:7033
 TQHistogramUtils.cxx:7034
 TQHistogramUtils.cxx:7035
 TQHistogramUtils.cxx:7036
 TQHistogramUtils.cxx:7037
 TQHistogramUtils.cxx:7038
 TQHistogramUtils.cxx:7039
 TQHistogramUtils.cxx:7040
 TQHistogramUtils.cxx:7041
 TQHistogramUtils.cxx:7042
 TQHistogramUtils.cxx:7043
 TQHistogramUtils.cxx:7044
 TQHistogramUtils.cxx:7045
 TQHistogramUtils.cxx:7046
 TQHistogramUtils.cxx:7047
 TQHistogramUtils.cxx:7048
 TQHistogramUtils.cxx:7049
 TQHistogramUtils.cxx:7050
 TQHistogramUtils.cxx:7051
 TQHistogramUtils.cxx:7052
 TQHistogramUtils.cxx:7053
 TQHistogramUtils.cxx:7054
 TQHistogramUtils.cxx:7055
 TQHistogramUtils.cxx:7056
 TQHistogramUtils.cxx:7057
 TQHistogramUtils.cxx:7058
 TQHistogramUtils.cxx:7059
 TQHistogramUtils.cxx:7060
 TQHistogramUtils.cxx:7061
 TQHistogramUtils.cxx:7062
 TQHistogramUtils.cxx:7063
 TQHistogramUtils.cxx:7064
 TQHistogramUtils.cxx:7065
 TQHistogramUtils.cxx:7066
 TQHistogramUtils.cxx:7067
 TQHistogramUtils.cxx:7068
 TQHistogramUtils.cxx:7069
 TQHistogramUtils.cxx:7070
 TQHistogramUtils.cxx:7071
 TQHistogramUtils.cxx:7072
 TQHistogramUtils.cxx:7073
 TQHistogramUtils.cxx:7074
 TQHistogramUtils.cxx:7075
 TQHistogramUtils.cxx:7076
 TQHistogramUtils.cxx:7077
 TQHistogramUtils.cxx:7078
 TQHistogramUtils.cxx:7079
 TQHistogramUtils.cxx:7080
 TQHistogramUtils.cxx:7081
 TQHistogramUtils.cxx:7082
 TQHistogramUtils.cxx:7083
 TQHistogramUtils.cxx:7084
 TQHistogramUtils.cxx:7085
 TQHistogramUtils.cxx:7086
 TQHistogramUtils.cxx:7087
 TQHistogramUtils.cxx:7088
 TQHistogramUtils.cxx:7089
 TQHistogramUtils.cxx:7090
 TQHistogramUtils.cxx:7091
 TQHistogramUtils.cxx:7092
 TQHistogramUtils.cxx:7093
 TQHistogramUtils.cxx:7094
 TQHistogramUtils.cxx:7095
 TQHistogramUtils.cxx:7096
 TQHistogramUtils.cxx:7097
 TQHistogramUtils.cxx:7098
 TQHistogramUtils.cxx:7099
 TQHistogramUtils.cxx:7100
 TQHistogramUtils.cxx:7101
 TQHistogramUtils.cxx:7102
 TQHistogramUtils.cxx:7103
 TQHistogramUtils.cxx:7104
 TQHistogramUtils.cxx:7105
 TQHistogramUtils.cxx:7106
 TQHistogramUtils.cxx:7107
 TQHistogramUtils.cxx:7108
 TQHistogramUtils.cxx:7109
 TQHistogramUtils.cxx:7110
 TQHistogramUtils.cxx:7111
 TQHistogramUtils.cxx:7112
 TQHistogramUtils.cxx:7113
 TQHistogramUtils.cxx:7114
 TQHistogramUtils.cxx:7115
 TQHistogramUtils.cxx:7116
 TQHistogramUtils.cxx:7117
 TQHistogramUtils.cxx:7118
 TQHistogramUtils.cxx:7119
 TQHistogramUtils.cxx:7120
 TQHistogramUtils.cxx:7121
 TQHistogramUtils.cxx:7122
 TQHistogramUtils.cxx:7123
 TQHistogramUtils.cxx:7124
 TQHistogramUtils.cxx:7125
 TQHistogramUtils.cxx:7126
 TQHistogramUtils.cxx:7127
 TQHistogramUtils.cxx:7128
 TQHistogramUtils.cxx:7129
 TQHistogramUtils.cxx:7130
 TQHistogramUtils.cxx:7131
 TQHistogramUtils.cxx:7132
 TQHistogramUtils.cxx:7133
 TQHistogramUtils.cxx:7134
 TQHistogramUtils.cxx:7135
 TQHistogramUtils.cxx:7136
 TQHistogramUtils.cxx:7137
 TQHistogramUtils.cxx:7138
 TQHistogramUtils.cxx:7139
 TQHistogramUtils.cxx:7140
 TQHistogramUtils.cxx:7141
 TQHistogramUtils.cxx:7142
 TQHistogramUtils.cxx:7143
 TQHistogramUtils.cxx:7144
 TQHistogramUtils.cxx:7145
 TQHistogramUtils.cxx:7146
 TQHistogramUtils.cxx:7147
 TQHistogramUtils.cxx:7148
 TQHistogramUtils.cxx:7149
 TQHistogramUtils.cxx:7150
 TQHistogramUtils.cxx:7151
 TQHistogramUtils.cxx:7152
 TQHistogramUtils.cxx:7153
 TQHistogramUtils.cxx:7154
 TQHistogramUtils.cxx:7155
 TQHistogramUtils.cxx:7156
 TQHistogramUtils.cxx:7157
 TQHistogramUtils.cxx:7158
 TQHistogramUtils.cxx:7159
 TQHistogramUtils.cxx:7160
 TQHistogramUtils.cxx:7161
 TQHistogramUtils.cxx:7162
 TQHistogramUtils.cxx:7163
 TQHistogramUtils.cxx:7164
 TQHistogramUtils.cxx:7165
 TQHistogramUtils.cxx:7166
 TQHistogramUtils.cxx:7167
 TQHistogramUtils.cxx:7168
 TQHistogramUtils.cxx:7169
 TQHistogramUtils.cxx:7170
 TQHistogramUtils.cxx:7171
 TQHistogramUtils.cxx:7172
 TQHistogramUtils.cxx:7173
 TQHistogramUtils.cxx:7174
 TQHistogramUtils.cxx:7175
 TQHistogramUtils.cxx:7176
 TQHistogramUtils.cxx:7177
 TQHistogramUtils.cxx:7178
 TQHistogramUtils.cxx:7179
 TQHistogramUtils.cxx:7180
 TQHistogramUtils.cxx:7181
 TQHistogramUtils.cxx:7182
 TQHistogramUtils.cxx:7183
 TQHistogramUtils.cxx:7184
 TQHistogramUtils.cxx:7185
 TQHistogramUtils.cxx:7186
 TQHistogramUtils.cxx:7187
 TQHistogramUtils.cxx:7188
 TQHistogramUtils.cxx:7189
 TQHistogramUtils.cxx:7190
 TQHistogramUtils.cxx:7191
 TQHistogramUtils.cxx:7192
 TQHistogramUtils.cxx:7193
 TQHistogramUtils.cxx:7194
 TQHistogramUtils.cxx:7195
 TQHistogramUtils.cxx:7196
 TQHistogramUtils.cxx:7197
 TQHistogramUtils.cxx:7198
 TQHistogramUtils.cxx:7199
 TQHistogramUtils.cxx:7200
 TQHistogramUtils.cxx:7201
 TQHistogramUtils.cxx:7202
 TQHistogramUtils.cxx:7203
 TQHistogramUtils.cxx:7204
 TQHistogramUtils.cxx:7205
 TQHistogramUtils.cxx:7206
 TQHistogramUtils.cxx:7207
 TQHistogramUtils.cxx:7208
 TQHistogramUtils.cxx:7209
 TQHistogramUtils.cxx:7210
 TQHistogramUtils.cxx:7211
 TQHistogramUtils.cxx:7212
 TQHistogramUtils.cxx:7213
 TQHistogramUtils.cxx:7214
 TQHistogramUtils.cxx:7215
 TQHistogramUtils.cxx:7216
 TQHistogramUtils.cxx:7217
 TQHistogramUtils.cxx:7218
 TQHistogramUtils.cxx:7219
 TQHistogramUtils.cxx:7220
 TQHistogramUtils.cxx:7221
 TQHistogramUtils.cxx:7222
 TQHistogramUtils.cxx:7223
 TQHistogramUtils.cxx:7224
 TQHistogramUtils.cxx:7225
 TQHistogramUtils.cxx:7226
 TQHistogramUtils.cxx:7227
 TQHistogramUtils.cxx:7228
 TQHistogramUtils.cxx:7229
 TQHistogramUtils.cxx:7230
 TQHistogramUtils.cxx:7231
 TQHistogramUtils.cxx:7232
 TQHistogramUtils.cxx:7233
 TQHistogramUtils.cxx:7234
 TQHistogramUtils.cxx:7235
 TQHistogramUtils.cxx:7236
 TQHistogramUtils.cxx:7237
 TQHistogramUtils.cxx:7238
 TQHistogramUtils.cxx:7239
 TQHistogramUtils.cxx:7240
 TQHistogramUtils.cxx:7241
 TQHistogramUtils.cxx:7242
 TQHistogramUtils.cxx:7243
 TQHistogramUtils.cxx:7244
 TQHistogramUtils.cxx:7245
 TQHistogramUtils.cxx:7246
 TQHistogramUtils.cxx:7247
 TQHistogramUtils.cxx:7248
 TQHistogramUtils.cxx:7249
 TQHistogramUtils.cxx:7250
 TQHistogramUtils.cxx:7251
 TQHistogramUtils.cxx:7252
 TQHistogramUtils.cxx:7253
 TQHistogramUtils.cxx:7254
 TQHistogramUtils.cxx:7255
 TQHistogramUtils.cxx:7256
 TQHistogramUtils.cxx:7257
 TQHistogramUtils.cxx:7258
 TQHistogramUtils.cxx:7259
 TQHistogramUtils.cxx:7260
 TQHistogramUtils.cxx:7261
 TQHistogramUtils.cxx:7262
 TQHistogramUtils.cxx:7263
 TQHistogramUtils.cxx:7264
 TQHistogramUtils.cxx:7265
 TQHistogramUtils.cxx:7266
 TQHistogramUtils.cxx:7267
 TQHistogramUtils.cxx:7268
 TQHistogramUtils.cxx:7269
 TQHistogramUtils.cxx:7270
 TQHistogramUtils.cxx:7271
 TQHistogramUtils.cxx:7272
 TQHistogramUtils.cxx:7273
 TQHistogramUtils.cxx:7274
 TQHistogramUtils.cxx:7275
 TQHistogramUtils.cxx:7276
 TQHistogramUtils.cxx:7277
 TQHistogramUtils.cxx:7278
 TQHistogramUtils.cxx:7279
 TQHistogramUtils.cxx:7280
 TQHistogramUtils.cxx:7281
 TQHistogramUtils.cxx:7282
 TQHistogramUtils.cxx:7283
 TQHistogramUtils.cxx:7284
 TQHistogramUtils.cxx:7285
 TQHistogramUtils.cxx:7286
 TQHistogramUtils.cxx:7287
 TQHistogramUtils.cxx:7288
 TQHistogramUtils.cxx:7289
 TQHistogramUtils.cxx:7290
 TQHistogramUtils.cxx:7291
 TQHistogramUtils.cxx:7292
 TQHistogramUtils.cxx:7293
 TQHistogramUtils.cxx:7294
 TQHistogramUtils.cxx:7295
 TQHistogramUtils.cxx:7296
 TQHistogramUtils.cxx:7297
 TQHistogramUtils.cxx:7298
 TQHistogramUtils.cxx:7299
 TQHistogramUtils.cxx:7300
 TQHistogramUtils.cxx:7301
 TQHistogramUtils.cxx:7302
 TQHistogramUtils.cxx:7303
 TQHistogramUtils.cxx:7304
 TQHistogramUtils.cxx:7305
 TQHistogramUtils.cxx:7306
 TQHistogramUtils.cxx:7307
 TQHistogramUtils.cxx:7308
 TQHistogramUtils.cxx:7309
 TQHistogramUtils.cxx:7310
 TQHistogramUtils.cxx:7311
 TQHistogramUtils.cxx:7312
 TQHistogramUtils.cxx:7313
 TQHistogramUtils.cxx:7314
 TQHistogramUtils.cxx:7315
 TQHistogramUtils.cxx:7316
 TQHistogramUtils.cxx:7317
 TQHistogramUtils.cxx:7318
 TQHistogramUtils.cxx:7319
 TQHistogramUtils.cxx:7320
 TQHistogramUtils.cxx:7321
 TQHistogramUtils.cxx:7322
 TQHistogramUtils.cxx:7323
 TQHistogramUtils.cxx:7324
 TQHistogramUtils.cxx:7325
 TQHistogramUtils.cxx:7326
 TQHistogramUtils.cxx:7327
 TQHistogramUtils.cxx:7328
 TQHistogramUtils.cxx:7329
 TQHistogramUtils.cxx:7330
 TQHistogramUtils.cxx:7331
 TQHistogramUtils.cxx:7332
 TQHistogramUtils.cxx:7333
 TQHistogramUtils.cxx:7334
 TQHistogramUtils.cxx:7335
 TQHistogramUtils.cxx:7336
 TQHistogramUtils.cxx:7337
 TQHistogramUtils.cxx:7338
 TQHistogramUtils.cxx:7339
 TQHistogramUtils.cxx:7340
 TQHistogramUtils.cxx:7341
 TQHistogramUtils.cxx:7342
 TQHistogramUtils.cxx:7343
 TQHistogramUtils.cxx:7344
 TQHistogramUtils.cxx:7345
 TQHistogramUtils.cxx:7346
 TQHistogramUtils.cxx:7347
 TQHistogramUtils.cxx:7348
 TQHistogramUtils.cxx:7349
 TQHistogramUtils.cxx:7350
 TQHistogramUtils.cxx:7351
 TQHistogramUtils.cxx:7352
 TQHistogramUtils.cxx:7353
 TQHistogramUtils.cxx:7354
 TQHistogramUtils.cxx:7355
 TQHistogramUtils.cxx:7356
 TQHistogramUtils.cxx:7357
 TQHistogramUtils.cxx:7358
 TQHistogramUtils.cxx:7359
 TQHistogramUtils.cxx:7360
 TQHistogramUtils.cxx:7361
 TQHistogramUtils.cxx:7362
 TQHistogramUtils.cxx:7363
 TQHistogramUtils.cxx:7364
 TQHistogramUtils.cxx:7365
 TQHistogramUtils.cxx:7366
 TQHistogramUtils.cxx:7367
 TQHistogramUtils.cxx:7368
 TQHistogramUtils.cxx:7369
 TQHistogramUtils.cxx:7370
 TQHistogramUtils.cxx:7371
 TQHistogramUtils.cxx:7372
 TQHistogramUtils.cxx:7373
 TQHistogramUtils.cxx:7374
 TQHistogramUtils.cxx:7375
 TQHistogramUtils.cxx:7376
 TQHistogramUtils.cxx:7377
 TQHistogramUtils.cxx:7378
 TQHistogramUtils.cxx:7379
 TQHistogramUtils.cxx:7380
 TQHistogramUtils.cxx:7381
 TQHistogramUtils.cxx:7382
 TQHistogramUtils.cxx:7383
 TQHistogramUtils.cxx:7384
 TQHistogramUtils.cxx:7385
 TQHistogramUtils.cxx:7386
 TQHistogramUtils.cxx:7387
 TQHistogramUtils.cxx:7388
 TQHistogramUtils.cxx:7389
 TQHistogramUtils.cxx:7390
 TQHistogramUtils.cxx:7391
 TQHistogramUtils.cxx:7392
 TQHistogramUtils.cxx:7393
 TQHistogramUtils.cxx:7394
 TQHistogramUtils.cxx:7395
 TQHistogramUtils.cxx:7396
 TQHistogramUtils.cxx:7397
 TQHistogramUtils.cxx:7398
 TQHistogramUtils.cxx:7399
 TQHistogramUtils.cxx:7400
 TQHistogramUtils.cxx:7401
 TQHistogramUtils.cxx:7402
 TQHistogramUtils.cxx:7403
 TQHistogramUtils.cxx:7404
 TQHistogramUtils.cxx:7405
 TQHistogramUtils.cxx:7406
 TQHistogramUtils.cxx:7407
 TQHistogramUtils.cxx:7408
 TQHistogramUtils.cxx:7409
 TQHistogramUtils.cxx:7410
 TQHistogramUtils.cxx:7411
 TQHistogramUtils.cxx:7412
 TQHistogramUtils.cxx:7413
 TQHistogramUtils.cxx:7414
 TQHistogramUtils.cxx:7415
 TQHistogramUtils.cxx:7416
 TQHistogramUtils.cxx:7417
 TQHistogramUtils.cxx:7418
 TQHistogramUtils.cxx:7419
 TQHistogramUtils.cxx:7420
 TQHistogramUtils.cxx:7421
 TQHistogramUtils.cxx:7422
 TQHistogramUtils.cxx:7423
 TQHistogramUtils.cxx:7424
 TQHistogramUtils.cxx:7425
 TQHistogramUtils.cxx:7426
 TQHistogramUtils.cxx:7427
 TQHistogramUtils.cxx:7428
 TQHistogramUtils.cxx:7429
 TQHistogramUtils.cxx:7430
 TQHistogramUtils.cxx:7431
 TQHistogramUtils.cxx:7432
 TQHistogramUtils.cxx:7433
 TQHistogramUtils.cxx:7434
 TQHistogramUtils.cxx:7435
 TQHistogramUtils.cxx:7436
 TQHistogramUtils.cxx:7437
 TQHistogramUtils.cxx:7438
 TQHistogramUtils.cxx:7439
 TQHistogramUtils.cxx:7440
 TQHistogramUtils.cxx:7441
 TQHistogramUtils.cxx:7442
 TQHistogramUtils.cxx:7443
 TQHistogramUtils.cxx:7444
 TQHistogramUtils.cxx:7445
 TQHistogramUtils.cxx:7446
 TQHistogramUtils.cxx:7447
 TQHistogramUtils.cxx:7448
 TQHistogramUtils.cxx:7449
 TQHistogramUtils.cxx:7450
 TQHistogramUtils.cxx:7451
 TQHistogramUtils.cxx:7452
 TQHistogramUtils.cxx:7453
 TQHistogramUtils.cxx:7454
 TQHistogramUtils.cxx:7455
 TQHistogramUtils.cxx:7456
 TQHistogramUtils.cxx:7457
 TQHistogramUtils.cxx:7458
 TQHistogramUtils.cxx:7459
 TQHistogramUtils.cxx:7460
 TQHistogramUtils.cxx:7461
 TQHistogramUtils.cxx:7462
 TQHistogramUtils.cxx:7463
 TQHistogramUtils.cxx:7464
 TQHistogramUtils.cxx:7465
 TQHistogramUtils.cxx:7466
 TQHistogramUtils.cxx:7467
 TQHistogramUtils.cxx:7468
 TQHistogramUtils.cxx:7469
 TQHistogramUtils.cxx:7470
 TQHistogramUtils.cxx:7471
 TQHistogramUtils.cxx:7472
 TQHistogramUtils.cxx:7473
 TQHistogramUtils.cxx:7474
 TQHistogramUtils.cxx:7475
 TQHistogramUtils.cxx:7476
 TQHistogramUtils.cxx:7477
 TQHistogramUtils.cxx:7478
 TQHistogramUtils.cxx:7479
 TQHistogramUtils.cxx:7480
 TQHistogramUtils.cxx:7481
 TQHistogramUtils.cxx:7482
 TQHistogramUtils.cxx:7483
 TQHistogramUtils.cxx:7484
 TQHistogramUtils.cxx:7485
 TQHistogramUtils.cxx:7486
 TQHistogramUtils.cxx:7487
 TQHistogramUtils.cxx:7488
 TQHistogramUtils.cxx:7489
 TQHistogramUtils.cxx:7490
 TQHistogramUtils.cxx:7491
 TQHistogramUtils.cxx:7492
 TQHistogramUtils.cxx:7493
 TQHistogramUtils.cxx:7494
 TQHistogramUtils.cxx:7495
 TQHistogramUtils.cxx:7496
 TQHistogramUtils.cxx:7497
 TQHistogramUtils.cxx:7498
 TQHistogramUtils.cxx:7499
 TQHistogramUtils.cxx:7500
 TQHistogramUtils.cxx:7501
 TQHistogramUtils.cxx:7502
 TQHistogramUtils.cxx:7503
 TQHistogramUtils.cxx:7504
 TQHistogramUtils.cxx:7505
 TQHistogramUtils.cxx:7506
 TQHistogramUtils.cxx:7507
 TQHistogramUtils.cxx:7508
 TQHistogramUtils.cxx:7509
 TQHistogramUtils.cxx:7510
 TQHistogramUtils.cxx:7511
 TQHistogramUtils.cxx:7512
 TQHistogramUtils.cxx:7513
 TQHistogramUtils.cxx:7514
 TQHistogramUtils.cxx:7515
 TQHistogramUtils.cxx:7516
 TQHistogramUtils.cxx:7517
 TQHistogramUtils.cxx:7518
 TQHistogramUtils.cxx:7519
 TQHistogramUtils.cxx:7520
 TQHistogramUtils.cxx:7521
 TQHistogramUtils.cxx:7522
 TQHistogramUtils.cxx:7523
 TQHistogramUtils.cxx:7524
 TQHistogramUtils.cxx:7525
 TQHistogramUtils.cxx:7526
 TQHistogramUtils.cxx:7527
 TQHistogramUtils.cxx:7528
 TQHistogramUtils.cxx:7529
 TQHistogramUtils.cxx:7530
 TQHistogramUtils.cxx:7531
 TQHistogramUtils.cxx:7532
 TQHistogramUtils.cxx:7533
 TQHistogramUtils.cxx:7534
 TQHistogramUtils.cxx:7535
 TQHistogramUtils.cxx:7536
 TQHistogramUtils.cxx:7537
 TQHistogramUtils.cxx:7538
 TQHistogramUtils.cxx:7539
 TQHistogramUtils.cxx:7540
 TQHistogramUtils.cxx:7541
 TQHistogramUtils.cxx:7542
 TQHistogramUtils.cxx:7543
 TQHistogramUtils.cxx:7544
 TQHistogramUtils.cxx:7545
 TQHistogramUtils.cxx:7546
 TQHistogramUtils.cxx:7547
 TQHistogramUtils.cxx:7548
 TQHistogramUtils.cxx:7549
 TQHistogramUtils.cxx:7550
 TQHistogramUtils.cxx:7551
 TQHistogramUtils.cxx:7552
 TQHistogramUtils.cxx:7553
 TQHistogramUtils.cxx:7554
 TQHistogramUtils.cxx:7555
 TQHistogramUtils.cxx:7556
 TQHistogramUtils.cxx:7557
 TQHistogramUtils.cxx:7558
 TQHistogramUtils.cxx:7559
 TQHistogramUtils.cxx:7560
 TQHistogramUtils.cxx:7561
 TQHistogramUtils.cxx:7562
 TQHistogramUtils.cxx:7563
 TQHistogramUtils.cxx:7564
 TQHistogramUtils.cxx:7565
 TQHistogramUtils.cxx:7566
 TQHistogramUtils.cxx:7567
 TQHistogramUtils.cxx:7568
 TQHistogramUtils.cxx:7569
 TQHistogramUtils.cxx:7570
 TQHistogramUtils.cxx:7571
 TQHistogramUtils.cxx:7572
 TQHistogramUtils.cxx:7573
 TQHistogramUtils.cxx:7574
 TQHistogramUtils.cxx:7575
 TQHistogramUtils.cxx:7576
 TQHistogramUtils.cxx:7577
 TQHistogramUtils.cxx:7578
 TQHistogramUtils.cxx:7579
 TQHistogramUtils.cxx:7580
 TQHistogramUtils.cxx:7581
 TQHistogramUtils.cxx:7582
 TQHistogramUtils.cxx:7583
 TQHistogramUtils.cxx:7584
 TQHistogramUtils.cxx:7585
 TQHistogramUtils.cxx:7586
 TQHistogramUtils.cxx:7587
 TQHistogramUtils.cxx:7588
 TQHistogramUtils.cxx:7589
 TQHistogramUtils.cxx:7590
 TQHistogramUtils.cxx:7591
 TQHistogramUtils.cxx:7592
 TQHistogramUtils.cxx:7593
 TQHistogramUtils.cxx:7594
 TQHistogramUtils.cxx:7595
 TQHistogramUtils.cxx:7596
 TQHistogramUtils.cxx:7597
 TQHistogramUtils.cxx:7598
 TQHistogramUtils.cxx:7599
 TQHistogramUtils.cxx:7600
 TQHistogramUtils.cxx:7601
 TQHistogramUtils.cxx:7602
 TQHistogramUtils.cxx:7603
 TQHistogramUtils.cxx:7604
 TQHistogramUtils.cxx:7605
 TQHistogramUtils.cxx:7606
 TQHistogramUtils.cxx:7607
 TQHistogramUtils.cxx:7608
 TQHistogramUtils.cxx:7609
 TQHistogramUtils.cxx:7610
 TQHistogramUtils.cxx:7611
 TQHistogramUtils.cxx:7612
 TQHistogramUtils.cxx:7613
 TQHistogramUtils.cxx:7614
 TQHistogramUtils.cxx:7615
 TQHistogramUtils.cxx:7616
 TQHistogramUtils.cxx:7617
 TQHistogramUtils.cxx:7618
 TQHistogramUtils.cxx:7619
 TQHistogramUtils.cxx:7620
 TQHistogramUtils.cxx:7621
 TQHistogramUtils.cxx:7622
 TQHistogramUtils.cxx:7623
 TQHistogramUtils.cxx:7624
 TQHistogramUtils.cxx:7625
 TQHistogramUtils.cxx:7626
 TQHistogramUtils.cxx:7627
 TQHistogramUtils.cxx:7628
 TQHistogramUtils.cxx:7629
 TQHistogramUtils.cxx:7630
 TQHistogramUtils.cxx:7631
 TQHistogramUtils.cxx:7632
 TQHistogramUtils.cxx:7633
 TQHistogramUtils.cxx:7634
 TQHistogramUtils.cxx:7635
 TQHistogramUtils.cxx:7636
 TQHistogramUtils.cxx:7637
 TQHistogramUtils.cxx:7638
 TQHistogramUtils.cxx:7639
 TQHistogramUtils.cxx:7640
 TQHistogramUtils.cxx:7641
 TQHistogramUtils.cxx:7642
 TQHistogramUtils.cxx:7643
 TQHistogramUtils.cxx:7644
 TQHistogramUtils.cxx:7645
 TQHistogramUtils.cxx:7646
 TQHistogramUtils.cxx:7647
 TQHistogramUtils.cxx:7648
 TQHistogramUtils.cxx:7649
 TQHistogramUtils.cxx:7650
 TQHistogramUtils.cxx:7651
 TQHistogramUtils.cxx:7652
 TQHistogramUtils.cxx:7653
 TQHistogramUtils.cxx:7654
 TQHistogramUtils.cxx:7655
 TQHistogramUtils.cxx:7656
 TQHistogramUtils.cxx:7657
 TQHistogramUtils.cxx:7658
 TQHistogramUtils.cxx:7659
 TQHistogramUtils.cxx:7660
 TQHistogramUtils.cxx:7661
 TQHistogramUtils.cxx:7662
 TQHistogramUtils.cxx:7663
 TQHistogramUtils.cxx:7664
 TQHistogramUtils.cxx:7665
 TQHistogramUtils.cxx:7666
 TQHistogramUtils.cxx:7667
 TQHistogramUtils.cxx:7668
 TQHistogramUtils.cxx:7669
 TQHistogramUtils.cxx:7670
 TQHistogramUtils.cxx:7671
 TQHistogramUtils.cxx:7672
 TQHistogramUtils.cxx:7673
 TQHistogramUtils.cxx:7674
 TQHistogramUtils.cxx:7675
 TQHistogramUtils.cxx:7676
 TQHistogramUtils.cxx:7677
 TQHistogramUtils.cxx:7678
 TQHistogramUtils.cxx:7679
 TQHistogramUtils.cxx:7680
 TQHistogramUtils.cxx:7681
 TQHistogramUtils.cxx:7682
 TQHistogramUtils.cxx:7683
 TQHistogramUtils.cxx:7684
 TQHistogramUtils.cxx:7685
 TQHistogramUtils.cxx:7686
 TQHistogramUtils.cxx:7687
 TQHistogramUtils.cxx:7688
 TQHistogramUtils.cxx:7689
 TQHistogramUtils.cxx:7690
 TQHistogramUtils.cxx:7691
 TQHistogramUtils.cxx:7692
 TQHistogramUtils.cxx:7693
 TQHistogramUtils.cxx:7694
 TQHistogramUtils.cxx:7695
 TQHistogramUtils.cxx:7696
 TQHistogramUtils.cxx:7697
 TQHistogramUtils.cxx:7698
 TQHistogramUtils.cxx:7699
 TQHistogramUtils.cxx:7700
 TQHistogramUtils.cxx:7701
 TQHistogramUtils.cxx:7702
 TQHistogramUtils.cxx:7703
 TQHistogramUtils.cxx:7704
 TQHistogramUtils.cxx:7705
 TQHistogramUtils.cxx:7706
 TQHistogramUtils.cxx:7707
 TQHistogramUtils.cxx:7708
 TQHistogramUtils.cxx:7709
 TQHistogramUtils.cxx:7710
 TQHistogramUtils.cxx:7711
 TQHistogramUtils.cxx:7712
 TQHistogramUtils.cxx:7713
 TQHistogramUtils.cxx:7714
 TQHistogramUtils.cxx:7715
 TQHistogramUtils.cxx:7716
 TQHistogramUtils.cxx:7717
 TQHistogramUtils.cxx:7718
 TQHistogramUtils.cxx:7719
 TQHistogramUtils.cxx:7720
 TQHistogramUtils.cxx:7721
 TQHistogramUtils.cxx:7722
 TQHistogramUtils.cxx:7723
 TQHistogramUtils.cxx:7724
 TQHistogramUtils.cxx:7725
 TQHistogramUtils.cxx:7726
 TQHistogramUtils.cxx:7727
 TQHistogramUtils.cxx:7728
 TQHistogramUtils.cxx:7729
 TQHistogramUtils.cxx:7730
 TQHistogramUtils.cxx:7731
 TQHistogramUtils.cxx:7732
 TQHistogramUtils.cxx:7733
 TQHistogramUtils.cxx:7734
 TQHistogramUtils.cxx:7735
 TQHistogramUtils.cxx:7736
 TQHistogramUtils.cxx:7737
 TQHistogramUtils.cxx:7738
 TQHistogramUtils.cxx:7739
 TQHistogramUtils.cxx:7740
 TQHistogramUtils.cxx:7741
 TQHistogramUtils.cxx:7742
 TQHistogramUtils.cxx:7743
 TQHistogramUtils.cxx:7744
 TQHistogramUtils.cxx:7745
 TQHistogramUtils.cxx:7746
 TQHistogramUtils.cxx:7747
 TQHistogramUtils.cxx:7748
 TQHistogramUtils.cxx:7749
 TQHistogramUtils.cxx:7750
 TQHistogramUtils.cxx:7751
 TQHistogramUtils.cxx:7752
 TQHistogramUtils.cxx:7753
 TQHistogramUtils.cxx:7754
 TQHistogramUtils.cxx:7755
 TQHistogramUtils.cxx:7756
 TQHistogramUtils.cxx:7757
 TQHistogramUtils.cxx:7758
 TQHistogramUtils.cxx:7759
 TQHistogramUtils.cxx:7760
 TQHistogramUtils.cxx:7761
 TQHistogramUtils.cxx:7762
 TQHistogramUtils.cxx:7763
 TQHistogramUtils.cxx:7764
 TQHistogramUtils.cxx:7765
 TQHistogramUtils.cxx:7766
 TQHistogramUtils.cxx:7767
 TQHistogramUtils.cxx:7768
 TQHistogramUtils.cxx:7769
 TQHistogramUtils.cxx:7770
 TQHistogramUtils.cxx:7771
 TQHistogramUtils.cxx:7772
 TQHistogramUtils.cxx:7773
 TQHistogramUtils.cxx:7774
 TQHistogramUtils.cxx:7775
 TQHistogramUtils.cxx:7776
 TQHistogramUtils.cxx:7777
 TQHistogramUtils.cxx:7778
 TQHistogramUtils.cxx:7779
 TQHistogramUtils.cxx:7780
 TQHistogramUtils.cxx:7781
 TQHistogramUtils.cxx:7782
 TQHistogramUtils.cxx:7783
 TQHistogramUtils.cxx:7784
 TQHistogramUtils.cxx:7785
 TQHistogramUtils.cxx:7786
 TQHistogramUtils.cxx:7787
 TQHistogramUtils.cxx:7788
 TQHistogramUtils.cxx:7789
 TQHistogramUtils.cxx:7790
 TQHistogramUtils.cxx:7791
 TQHistogramUtils.cxx:7792
 TQHistogramUtils.cxx:7793
 TQHistogramUtils.cxx:7794
 TQHistogramUtils.cxx:7795
 TQHistogramUtils.cxx:7796
 TQHistogramUtils.cxx:7797
 TQHistogramUtils.cxx:7798
 TQHistogramUtils.cxx:7799
 TQHistogramUtils.cxx:7800
 TQHistogramUtils.cxx:7801
 TQHistogramUtils.cxx:7802
 TQHistogramUtils.cxx:7803
 TQHistogramUtils.cxx:7804
 TQHistogramUtils.cxx:7805
 TQHistogramUtils.cxx:7806
 TQHistogramUtils.cxx:7807
 TQHistogramUtils.cxx:7808
 TQHistogramUtils.cxx:7809
 TQHistogramUtils.cxx:7810
 TQHistogramUtils.cxx:7811
 TQHistogramUtils.cxx:7812
 TQHistogramUtils.cxx:7813
 TQHistogramUtils.cxx:7814
 TQHistogramUtils.cxx:7815
 TQHistogramUtils.cxx:7816
 TQHistogramUtils.cxx:7817
 TQHistogramUtils.cxx:7818
 TQHistogramUtils.cxx:7819
 TQHistogramUtils.cxx:7820
 TQHistogramUtils.cxx:7821
 TQHistogramUtils.cxx:7822
 TQHistogramUtils.cxx:7823
 TQHistogramUtils.cxx:7824
 TQHistogramUtils.cxx:7825
 TQHistogramUtils.cxx:7826
 TQHistogramUtils.cxx:7827
 TQHistogramUtils.cxx:7828
 TQHistogramUtils.cxx:7829
 TQHistogramUtils.cxx:7830
 TQHistogramUtils.cxx:7831
 TQHistogramUtils.cxx:7832
 TQHistogramUtils.cxx:7833
 TQHistogramUtils.cxx:7834
 TQHistogramUtils.cxx:7835
 TQHistogramUtils.cxx:7836
 TQHistogramUtils.cxx:7837
 TQHistogramUtils.cxx:7838
 TQHistogramUtils.cxx:7839
 TQHistogramUtils.cxx:7840
 TQHistogramUtils.cxx:7841
 TQHistogramUtils.cxx:7842
 TQHistogramUtils.cxx:7843
 TQHistogramUtils.cxx:7844
 TQHistogramUtils.cxx:7845
 TQHistogramUtils.cxx:7846
 TQHistogramUtils.cxx:7847
 TQHistogramUtils.cxx:7848
 TQHistogramUtils.cxx:7849
 TQHistogramUtils.cxx:7850
 TQHistogramUtils.cxx:7851
 TQHistogramUtils.cxx:7852
 TQHistogramUtils.cxx:7853
 TQHistogramUtils.cxx:7854
 TQHistogramUtils.cxx:7855
 TQHistogramUtils.cxx:7856
 TQHistogramUtils.cxx:7857
 TQHistogramUtils.cxx:7858
 TQHistogramUtils.cxx:7859
 TQHistogramUtils.cxx:7860
 TQHistogramUtils.cxx:7861
 TQHistogramUtils.cxx:7862
 TQHistogramUtils.cxx:7863
 TQHistogramUtils.cxx:7864
 TQHistogramUtils.cxx:7865
 TQHistogramUtils.cxx:7866
 TQHistogramUtils.cxx:7867
 TQHistogramUtils.cxx:7868
 TQHistogramUtils.cxx:7869
 TQHistogramUtils.cxx:7870
 TQHistogramUtils.cxx:7871
 TQHistogramUtils.cxx:7872
 TQHistogramUtils.cxx:7873
 TQHistogramUtils.cxx:7874
 TQHistogramUtils.cxx:7875
 TQHistogramUtils.cxx:7876
 TQHistogramUtils.cxx:7877
 TQHistogramUtils.cxx:7878
 TQHistogramUtils.cxx:7879
 TQHistogramUtils.cxx:7880
 TQHistogramUtils.cxx:7881
 TQHistogramUtils.cxx:7882
 TQHistogramUtils.cxx:7883
 TQHistogramUtils.cxx:7884
 TQHistogramUtils.cxx:7885
 TQHistogramUtils.cxx:7886
 TQHistogramUtils.cxx:7887
 TQHistogramUtils.cxx:7888
 TQHistogramUtils.cxx:7889
 TQHistogramUtils.cxx:7890
 TQHistogramUtils.cxx:7891
 TQHistogramUtils.cxx:7892
 TQHistogramUtils.cxx:7893
 TQHistogramUtils.cxx:7894
 TQHistogramUtils.cxx:7895
 TQHistogramUtils.cxx:7896
 TQHistogramUtils.cxx:7897
 TQHistogramUtils.cxx:7898
 TQHistogramUtils.cxx:7899
 TQHistogramUtils.cxx:7900
 TQHistogramUtils.cxx:7901
 TQHistogramUtils.cxx:7902
 TQHistogramUtils.cxx:7903
 TQHistogramUtils.cxx:7904
 TQHistogramUtils.cxx:7905
 TQHistogramUtils.cxx:7906
 TQHistogramUtils.cxx:7907
 TQHistogramUtils.cxx:7908
 TQHistogramUtils.cxx:7909
 TQHistogramUtils.cxx:7910
 TQHistogramUtils.cxx:7911
 TQHistogramUtils.cxx:7912
 TQHistogramUtils.cxx:7913
 TQHistogramUtils.cxx:7914
 TQHistogramUtils.cxx:7915
 TQHistogramUtils.cxx:7916
 TQHistogramUtils.cxx:7917
 TQHistogramUtils.cxx:7918
 TQHistogramUtils.cxx:7919
 TQHistogramUtils.cxx:7920
 TQHistogramUtils.cxx:7921
 TQHistogramUtils.cxx:7922
 TQHistogramUtils.cxx:7923
 TQHistogramUtils.cxx:7924
 TQHistogramUtils.cxx:7925
 TQHistogramUtils.cxx:7926
 TQHistogramUtils.cxx:7927
 TQHistogramUtils.cxx:7928
 TQHistogramUtils.cxx:7929
 TQHistogramUtils.cxx:7930
 TQHistogramUtils.cxx:7931
 TQHistogramUtils.cxx:7932
 TQHistogramUtils.cxx:7933
 TQHistogramUtils.cxx:7934
 TQHistogramUtils.cxx:7935
 TQHistogramUtils.cxx:7936
 TQHistogramUtils.cxx:7937
 TQHistogramUtils.cxx:7938
 TQHistogramUtils.cxx:7939
 TQHistogramUtils.cxx:7940
 TQHistogramUtils.cxx:7941
 TQHistogramUtils.cxx:7942
 TQHistogramUtils.cxx:7943
 TQHistogramUtils.cxx:7944
 TQHistogramUtils.cxx:7945
 TQHistogramUtils.cxx:7946
 TQHistogramUtils.cxx:7947
 TQHistogramUtils.cxx:7948
 TQHistogramUtils.cxx:7949
 TQHistogramUtils.cxx:7950
 TQHistogramUtils.cxx:7951
 TQHistogramUtils.cxx:7952
 TQHistogramUtils.cxx:7953
 TQHistogramUtils.cxx:7954
 TQHistogramUtils.cxx:7955
 TQHistogramUtils.cxx:7956
 TQHistogramUtils.cxx:7957
 TQHistogramUtils.cxx:7958
 TQHistogramUtils.cxx:7959
 TQHistogramUtils.cxx:7960
 TQHistogramUtils.cxx:7961
 TQHistogramUtils.cxx:7962
 TQHistogramUtils.cxx:7963
 TQHistogramUtils.cxx:7964
 TQHistogramUtils.cxx:7965
 TQHistogramUtils.cxx:7966
 TQHistogramUtils.cxx:7967
 TQHistogramUtils.cxx:7968
 TQHistogramUtils.cxx:7969
 TQHistogramUtils.cxx:7970
 TQHistogramUtils.cxx:7971
 TQHistogramUtils.cxx:7972
 TQHistogramUtils.cxx:7973
 TQHistogramUtils.cxx:7974
 TQHistogramUtils.cxx:7975
 TQHistogramUtils.cxx:7976
 TQHistogramUtils.cxx:7977
 TQHistogramUtils.cxx:7978
 TQHistogramUtils.cxx:7979
 TQHistogramUtils.cxx:7980
 TQHistogramUtils.cxx:7981
 TQHistogramUtils.cxx:7982
 TQHistogramUtils.cxx:7983
 TQHistogramUtils.cxx:7984
 TQHistogramUtils.cxx:7985
 TQHistogramUtils.cxx:7986
 TQHistogramUtils.cxx:7987
 TQHistogramUtils.cxx:7988
 TQHistogramUtils.cxx:7989
 TQHistogramUtils.cxx:7990
 TQHistogramUtils.cxx:7991
 TQHistogramUtils.cxx:7992
 TQHistogramUtils.cxx:7993
 TQHistogramUtils.cxx:7994
 TQHistogramUtils.cxx:7995
 TQHistogramUtils.cxx:7996
 TQHistogramUtils.cxx:7997
 TQHistogramUtils.cxx:7998
 TQHistogramUtils.cxx:7999
 TQHistogramUtils.cxx:8000
 TQHistogramUtils.cxx:8001
 TQHistogramUtils.cxx:8002
 TQHistogramUtils.cxx:8003
 TQHistogramUtils.cxx:8004
 TQHistogramUtils.cxx:8005
 TQHistogramUtils.cxx:8006
 TQHistogramUtils.cxx:8007
 TQHistogramUtils.cxx:8008
 TQHistogramUtils.cxx:8009
 TQHistogramUtils.cxx:8010
 TQHistogramUtils.cxx:8011
 TQHistogramUtils.cxx:8012
 TQHistogramUtils.cxx:8013
 TQHistogramUtils.cxx:8014
 TQHistogramUtils.cxx:8015
 TQHistogramUtils.cxx:8016
 TQHistogramUtils.cxx:8017
 TQHistogramUtils.cxx:8018
 TQHistogramUtils.cxx:8019
 TQHistogramUtils.cxx:8020
 TQHistogramUtils.cxx:8021
 TQHistogramUtils.cxx:8022
 TQHistogramUtils.cxx:8023
 TQHistogramUtils.cxx:8024
 TQHistogramUtils.cxx:8025
 TQHistogramUtils.cxx:8026
 TQHistogramUtils.cxx:8027
 TQHistogramUtils.cxx:8028
 TQHistogramUtils.cxx:8029
 TQHistogramUtils.cxx:8030
 TQHistogramUtils.cxx:8031
 TQHistogramUtils.cxx:8032
 TQHistogramUtils.cxx:8033
 TQHistogramUtils.cxx:8034
 TQHistogramUtils.cxx:8035
 TQHistogramUtils.cxx:8036
 TQHistogramUtils.cxx:8037
 TQHistogramUtils.cxx:8038
 TQHistogramUtils.cxx:8039
 TQHistogramUtils.cxx:8040
 TQHistogramUtils.cxx:8041
 TQHistogramUtils.cxx:8042
 TQHistogramUtils.cxx:8043
 TQHistogramUtils.cxx:8044
 TQHistogramUtils.cxx:8045
 TQHistogramUtils.cxx:8046
 TQHistogramUtils.cxx:8047
 TQHistogramUtils.cxx:8048
 TQHistogramUtils.cxx:8049
 TQHistogramUtils.cxx:8050
 TQHistogramUtils.cxx:8051
 TQHistogramUtils.cxx:8052
 TQHistogramUtils.cxx:8053
 TQHistogramUtils.cxx:8054
 TQHistogramUtils.cxx:8055
 TQHistogramUtils.cxx:8056
 TQHistogramUtils.cxx:8057
 TQHistogramUtils.cxx:8058
 TQHistogramUtils.cxx:8059
 TQHistogramUtils.cxx:8060
 TQHistogramUtils.cxx:8061
 TQHistogramUtils.cxx:8062
 TQHistogramUtils.cxx:8063
 TQHistogramUtils.cxx:8064
 TQHistogramUtils.cxx:8065
 TQHistogramUtils.cxx:8066
 TQHistogramUtils.cxx:8067
 TQHistogramUtils.cxx:8068
 TQHistogramUtils.cxx:8069
 TQHistogramUtils.cxx:8070
 TQHistogramUtils.cxx:8071
 TQHistogramUtils.cxx:8072
 TQHistogramUtils.cxx:8073
 TQHistogramUtils.cxx:8074
 TQHistogramUtils.cxx:8075
 TQHistogramUtils.cxx:8076
 TQHistogramUtils.cxx:8077
 TQHistogramUtils.cxx:8078
 TQHistogramUtils.cxx:8079
 TQHistogramUtils.cxx:8080
 TQHistogramUtils.cxx:8081
 TQHistogramUtils.cxx:8082
 TQHistogramUtils.cxx:8083
 TQHistogramUtils.cxx:8084
 TQHistogramUtils.cxx:8085
 TQHistogramUtils.cxx:8086
 TQHistogramUtils.cxx:8087
 TQHistogramUtils.cxx:8088
 TQHistogramUtils.cxx:8089
 TQHistogramUtils.cxx:8090
 TQHistogramUtils.cxx:8091
 TQHistogramUtils.cxx:8092
 TQHistogramUtils.cxx:8093
 TQHistogramUtils.cxx:8094
 TQHistogramUtils.cxx:8095
 TQHistogramUtils.cxx:8096
 TQHistogramUtils.cxx:8097
 TQHistogramUtils.cxx:8098
 TQHistogramUtils.cxx:8099
 TQHistogramUtils.cxx:8100
 TQHistogramUtils.cxx:8101
 TQHistogramUtils.cxx:8102
 TQHistogramUtils.cxx:8103
 TQHistogramUtils.cxx:8104
 TQHistogramUtils.cxx:8105
 TQHistogramUtils.cxx:8106
 TQHistogramUtils.cxx:8107
 TQHistogramUtils.cxx:8108
 TQHistogramUtils.cxx:8109
 TQHistogramUtils.cxx:8110
 TQHistogramUtils.cxx:8111
 TQHistogramUtils.cxx:8112
 TQHistogramUtils.cxx:8113
 TQHistogramUtils.cxx:8114
 TQHistogramUtils.cxx:8115
 TQHistogramUtils.cxx:8116
 TQHistogramUtils.cxx:8117
 TQHistogramUtils.cxx:8118
 TQHistogramUtils.cxx:8119
 TQHistogramUtils.cxx:8120
 TQHistogramUtils.cxx:8121
 TQHistogramUtils.cxx:8122
 TQHistogramUtils.cxx:8123
 TQHistogramUtils.cxx:8124
 TQHistogramUtils.cxx:8125
 TQHistogramUtils.cxx:8126
 TQHistogramUtils.cxx:8127
 TQHistogramUtils.cxx:8128
 TQHistogramUtils.cxx:8129
 TQHistogramUtils.cxx:8130
 TQHistogramUtils.cxx:8131
 TQHistogramUtils.cxx:8132
 TQHistogramUtils.cxx:8133
 TQHistogramUtils.cxx:8134
 TQHistogramUtils.cxx:8135
 TQHistogramUtils.cxx:8136
 TQHistogramUtils.cxx:8137
 TQHistogramUtils.cxx:8138
 TQHistogramUtils.cxx:8139
 TQHistogramUtils.cxx:8140
 TQHistogramUtils.cxx:8141
 TQHistogramUtils.cxx:8142
 TQHistogramUtils.cxx:8143
 TQHistogramUtils.cxx:8144
 TQHistogramUtils.cxx:8145
 TQHistogramUtils.cxx:8146
 TQHistogramUtils.cxx:8147
 TQHistogramUtils.cxx:8148
 TQHistogramUtils.cxx:8149
 TQHistogramUtils.cxx:8150
 TQHistogramUtils.cxx:8151
 TQHistogramUtils.cxx:8152
 TQHistogramUtils.cxx:8153
 TQHistogramUtils.cxx:8154
 TQHistogramUtils.cxx:8155
 TQHistogramUtils.cxx:8156
 TQHistogramUtils.cxx:8157
 TQHistogramUtils.cxx:8158
 TQHistogramUtils.cxx:8159
 TQHistogramUtils.cxx:8160
 TQHistogramUtils.cxx:8161
 TQHistogramUtils.cxx:8162
 TQHistogramUtils.cxx:8163
 TQHistogramUtils.cxx:8164
 TQHistogramUtils.cxx:8165
 TQHistogramUtils.cxx:8166
 TQHistogramUtils.cxx:8167
 TQHistogramUtils.cxx:8168
 TQHistogramUtils.cxx:8169
 TQHistogramUtils.cxx:8170
 TQHistogramUtils.cxx:8171
 TQHistogramUtils.cxx:8172
 TQHistogramUtils.cxx:8173
 TQHistogramUtils.cxx:8174
 TQHistogramUtils.cxx:8175
 TQHistogramUtils.cxx:8176
 TQHistogramUtils.cxx:8177
 TQHistogramUtils.cxx:8178
 TQHistogramUtils.cxx:8179
 TQHistogramUtils.cxx:8180
 TQHistogramUtils.cxx:8181
 TQHistogramUtils.cxx:8182
 TQHistogramUtils.cxx:8183
 TQHistogramUtils.cxx:8184
 TQHistogramUtils.cxx:8185
 TQHistogramUtils.cxx:8186
 TQHistogramUtils.cxx:8187
 TQHistogramUtils.cxx:8188
 TQHistogramUtils.cxx:8189
 TQHistogramUtils.cxx:8190
 TQHistogramUtils.cxx:8191
 TQHistogramUtils.cxx:8192
 TQHistogramUtils.cxx:8193
 TQHistogramUtils.cxx:8194
 TQHistogramUtils.cxx:8195
 TQHistogramUtils.cxx:8196
 TQHistogramUtils.cxx:8197
 TQHistogramUtils.cxx:8198
 TQHistogramUtils.cxx:8199
 TQHistogramUtils.cxx:8200
 TQHistogramUtils.cxx:8201
 TQHistogramUtils.cxx:8202
 TQHistogramUtils.cxx:8203
 TQHistogramUtils.cxx:8204
 TQHistogramUtils.cxx:8205
 TQHistogramUtils.cxx:8206
 TQHistogramUtils.cxx:8207
 TQHistogramUtils.cxx:8208
 TQHistogramUtils.cxx:8209
 TQHistogramUtils.cxx:8210
 TQHistogramUtils.cxx:8211
 TQHistogramUtils.cxx:8212
 TQHistogramUtils.cxx:8213
 TQHistogramUtils.cxx:8214
 TQHistogramUtils.cxx:8215
 TQHistogramUtils.cxx:8216
 TQHistogramUtils.cxx:8217
 TQHistogramUtils.cxx:8218
 TQHistogramUtils.cxx:8219
 TQHistogramUtils.cxx:8220
 TQHistogramUtils.cxx:8221
 TQHistogramUtils.cxx:8222
 TQHistogramUtils.cxx:8223
 TQHistogramUtils.cxx:8224
 TQHistogramUtils.cxx:8225
 TQHistogramUtils.cxx:8226
 TQHistogramUtils.cxx:8227
 TQHistogramUtils.cxx:8228
 TQHistogramUtils.cxx:8229
 TQHistogramUtils.cxx:8230
 TQHistogramUtils.cxx:8231
 TQHistogramUtils.cxx:8232
 TQHistogramUtils.cxx:8233
 TQHistogramUtils.cxx:8234
 TQHistogramUtils.cxx:8235
 TQHistogramUtils.cxx:8236
 TQHistogramUtils.cxx:8237
 TQHistogramUtils.cxx:8238
 TQHistogramUtils.cxx:8239
 TQHistogramUtils.cxx:8240
 TQHistogramUtils.cxx:8241
 TQHistogramUtils.cxx:8242
 TQHistogramUtils.cxx:8243
 TQHistogramUtils.cxx:8244
 TQHistogramUtils.cxx:8245
 TQHistogramUtils.cxx:8246
 TQHistogramUtils.cxx:8247
 TQHistogramUtils.cxx:8248
 TQHistogramUtils.cxx:8249
 TQHistogramUtils.cxx:8250
 TQHistogramUtils.cxx:8251
 TQHistogramUtils.cxx:8252
 TQHistogramUtils.cxx:8253
 TQHistogramUtils.cxx:8254
 TQHistogramUtils.cxx:8255
 TQHistogramUtils.cxx:8256
 TQHistogramUtils.cxx:8257
 TQHistogramUtils.cxx:8258
 TQHistogramUtils.cxx:8259
 TQHistogramUtils.cxx:8260
 TQHistogramUtils.cxx:8261
 TQHistogramUtils.cxx:8262
 TQHistogramUtils.cxx:8263
 TQHistogramUtils.cxx:8264
 TQHistogramUtils.cxx:8265
 TQHistogramUtils.cxx:8266
 TQHistogramUtils.cxx:8267
 TQHistogramUtils.cxx:8268
 TQHistogramUtils.cxx:8269
 TQHistogramUtils.cxx:8270
 TQHistogramUtils.cxx:8271
 TQHistogramUtils.cxx:8272
 TQHistogramUtils.cxx:8273
 TQHistogramUtils.cxx:8274
 TQHistogramUtils.cxx:8275
 TQHistogramUtils.cxx:8276
 TQHistogramUtils.cxx:8277
 TQHistogramUtils.cxx:8278
 TQHistogramUtils.cxx:8279
 TQHistogramUtils.cxx:8280
 TQHistogramUtils.cxx:8281
 TQHistogramUtils.cxx:8282
 TQHistogramUtils.cxx:8283
 TQHistogramUtils.cxx:8284
 TQHistogramUtils.cxx:8285
 TQHistogramUtils.cxx:8286
 TQHistogramUtils.cxx:8287
 TQHistogramUtils.cxx:8288
 TQHistogramUtils.cxx:8289
 TQHistogramUtils.cxx:8290
 TQHistogramUtils.cxx:8291
 TQHistogramUtils.cxx:8292
 TQHistogramUtils.cxx:8293
 TQHistogramUtils.cxx:8294
 TQHistogramUtils.cxx:8295
 TQHistogramUtils.cxx:8296
 TQHistogramUtils.cxx:8297
 TQHistogramUtils.cxx:8298
 TQHistogramUtils.cxx:8299
 TQHistogramUtils.cxx:8300
 TQHistogramUtils.cxx:8301
 TQHistogramUtils.cxx:8302
 TQHistogramUtils.cxx:8303
 TQHistogramUtils.cxx:8304
 TQHistogramUtils.cxx:8305
 TQHistogramUtils.cxx:8306
 TQHistogramUtils.cxx:8307
 TQHistogramUtils.cxx:8308
 TQHistogramUtils.cxx:8309
 TQHistogramUtils.cxx:8310
 TQHistogramUtils.cxx:8311
 TQHistogramUtils.cxx:8312
 TQHistogramUtils.cxx:8313
 TQHistogramUtils.cxx:8314
 TQHistogramUtils.cxx:8315
 TQHistogramUtils.cxx:8316
 TQHistogramUtils.cxx:8317
 TQHistogramUtils.cxx:8318
 TQHistogramUtils.cxx:8319
 TQHistogramUtils.cxx:8320
 TQHistogramUtils.cxx:8321
 TQHistogramUtils.cxx:8322
 TQHistogramUtils.cxx:8323
 TQHistogramUtils.cxx:8324
 TQHistogramUtils.cxx:8325
 TQHistogramUtils.cxx:8326
 TQHistogramUtils.cxx:8327
 TQHistogramUtils.cxx:8328
 TQHistogramUtils.cxx:8329
 TQHistogramUtils.cxx:8330
 TQHistogramUtils.cxx:8331
 TQHistogramUtils.cxx:8332
 TQHistogramUtils.cxx:8333
 TQHistogramUtils.cxx:8334
 TQHistogramUtils.cxx:8335
 TQHistogramUtils.cxx:8336
 TQHistogramUtils.cxx:8337
 TQHistogramUtils.cxx:8338
 TQHistogramUtils.cxx:8339
 TQHistogramUtils.cxx:8340
 TQHistogramUtils.cxx:8341
 TQHistogramUtils.cxx:8342
 TQHistogramUtils.cxx:8343
 TQHistogramUtils.cxx:8344
 TQHistogramUtils.cxx:8345
 TQHistogramUtils.cxx:8346
 TQHistogramUtils.cxx:8347
 TQHistogramUtils.cxx:8348
 TQHistogramUtils.cxx:8349
 TQHistogramUtils.cxx:8350
 TQHistogramUtils.cxx:8351
 TQHistogramUtils.cxx:8352
 TQHistogramUtils.cxx:8353
 TQHistogramUtils.cxx:8354
 TQHistogramUtils.cxx:8355
 TQHistogramUtils.cxx:8356
 TQHistogramUtils.cxx:8357
 TQHistogramUtils.cxx:8358
 TQHistogramUtils.cxx:8359
 TQHistogramUtils.cxx:8360
 TQHistogramUtils.cxx:8361
 TQHistogramUtils.cxx:8362
 TQHistogramUtils.cxx:8363
 TQHistogramUtils.cxx:8364
 TQHistogramUtils.cxx:8365
 TQHistogramUtils.cxx:8366
 TQHistogramUtils.cxx:8367
 TQHistogramUtils.cxx:8368
 TQHistogramUtils.cxx:8369
 TQHistogramUtils.cxx:8370
 TQHistogramUtils.cxx:8371
 TQHistogramUtils.cxx:8372
 TQHistogramUtils.cxx:8373
 TQHistogramUtils.cxx:8374
 TQHistogramUtils.cxx:8375
 TQHistogramUtils.cxx:8376
 TQHistogramUtils.cxx:8377
 TQHistogramUtils.cxx:8378
 TQHistogramUtils.cxx:8379
 TQHistogramUtils.cxx:8380
 TQHistogramUtils.cxx:8381
 TQHistogramUtils.cxx:8382
 TQHistogramUtils.cxx:8383
 TQHistogramUtils.cxx:8384
 TQHistogramUtils.cxx:8385
 TQHistogramUtils.cxx:8386
 TQHistogramUtils.cxx:8387
 TQHistogramUtils.cxx:8388
 TQHistogramUtils.cxx:8389
 TQHistogramUtils.cxx:8390
 TQHistogramUtils.cxx:8391
 TQHistogramUtils.cxx:8392
 TQHistogramUtils.cxx:8393
 TQHistogramUtils.cxx:8394
 TQHistogramUtils.cxx:8395
 TQHistogramUtils.cxx:8396
 TQHistogramUtils.cxx:8397
 TQHistogramUtils.cxx:8398
 TQHistogramUtils.cxx:8399
 TQHistogramUtils.cxx:8400
 TQHistogramUtils.cxx:8401
 TQHistogramUtils.cxx:8402
 TQHistogramUtils.cxx:8403
 TQHistogramUtils.cxx:8404
 TQHistogramUtils.cxx:8405
 TQHistogramUtils.cxx:8406
 TQHistogramUtils.cxx:8407
 TQHistogramUtils.cxx:8408
 TQHistogramUtils.cxx:8409
 TQHistogramUtils.cxx:8410
 TQHistogramUtils.cxx:8411
 TQHistogramUtils.cxx:8412
 TQHistogramUtils.cxx:8413
 TQHistogramUtils.cxx:8414
 TQHistogramUtils.cxx:8415
 TQHistogramUtils.cxx:8416
 TQHistogramUtils.cxx:8417
 TQHistogramUtils.cxx:8418
 TQHistogramUtils.cxx:8419
 TQHistogramUtils.cxx:8420
 TQHistogramUtils.cxx:8421
 TQHistogramUtils.cxx:8422
 TQHistogramUtils.cxx:8423
 TQHistogramUtils.cxx:8424
 TQHistogramUtils.cxx:8425
 TQHistogramUtils.cxx:8426
 TQHistogramUtils.cxx:8427
 TQHistogramUtils.cxx:8428
 TQHistogramUtils.cxx:8429
 TQHistogramUtils.cxx:8430
 TQHistogramUtils.cxx:8431
 TQHistogramUtils.cxx:8432
 TQHistogramUtils.cxx:8433
 TQHistogramUtils.cxx:8434
 TQHistogramUtils.cxx:8435
 TQHistogramUtils.cxx:8436
 TQHistogramUtils.cxx:8437
 TQHistogramUtils.cxx:8438
 TQHistogramUtils.cxx:8439
 TQHistogramUtils.cxx:8440
 TQHistogramUtils.cxx:8441
 TQHistogramUtils.cxx:8442
 TQHistogramUtils.cxx:8443
 TQHistogramUtils.cxx:8444
 TQHistogramUtils.cxx:8445
 TQHistogramUtils.cxx:8446
 TQHistogramUtils.cxx:8447
 TQHistogramUtils.cxx:8448
 TQHistogramUtils.cxx:8449
 TQHistogramUtils.cxx:8450
 TQHistogramUtils.cxx:8451
 TQHistogramUtils.cxx:8452
 TQHistogramUtils.cxx:8453
 TQHistogramUtils.cxx:8454
 TQHistogramUtils.cxx:8455
 TQHistogramUtils.cxx:8456
 TQHistogramUtils.cxx:8457
 TQHistogramUtils.cxx:8458
 TQHistogramUtils.cxx:8459
 TQHistogramUtils.cxx:8460
 TQHistogramUtils.cxx:8461
 TQHistogramUtils.cxx:8462
 TQHistogramUtils.cxx:8463
 TQHistogramUtils.cxx:8464
 TQHistogramUtils.cxx:8465
 TQHistogramUtils.cxx:8466
 TQHistogramUtils.cxx:8467
 TQHistogramUtils.cxx:8468
 TQHistogramUtils.cxx:8469
 TQHistogramUtils.cxx:8470
 TQHistogramUtils.cxx:8471
 TQHistogramUtils.cxx:8472
 TQHistogramUtils.cxx:8473
 TQHistogramUtils.cxx:8474
 TQHistogramUtils.cxx:8475
 TQHistogramUtils.cxx:8476
 TQHistogramUtils.cxx:8477
 TQHistogramUtils.cxx:8478
 TQHistogramUtils.cxx:8479
 TQHistogramUtils.cxx:8480
 TQHistogramUtils.cxx:8481
 TQHistogramUtils.cxx:8482
 TQHistogramUtils.cxx:8483
 TQHistogramUtils.cxx:8484
 TQHistogramUtils.cxx:8485
 TQHistogramUtils.cxx:8486
 TQHistogramUtils.cxx:8487
 TQHistogramUtils.cxx:8488
 TQHistogramUtils.cxx:8489
 TQHistogramUtils.cxx:8490
 TQHistogramUtils.cxx:8491
 TQHistogramUtils.cxx:8492
 TQHistogramUtils.cxx:8493
 TQHistogramUtils.cxx:8494
 TQHistogramUtils.cxx:8495
 TQHistogramUtils.cxx:8496
 TQHistogramUtils.cxx:8497
 TQHistogramUtils.cxx:8498
 TQHistogramUtils.cxx:8499
 TQHistogramUtils.cxx:8500
 TQHistogramUtils.cxx:8501
 TQHistogramUtils.cxx:8502
 TQHistogramUtils.cxx:8503
 TQHistogramUtils.cxx:8504
 TQHistogramUtils.cxx:8505
 TQHistogramUtils.cxx:8506
 TQHistogramUtils.cxx:8507
 TQHistogramUtils.cxx:8508
 TQHistogramUtils.cxx:8509
 TQHistogramUtils.cxx:8510
 TQHistogramUtils.cxx:8511
 TQHistogramUtils.cxx:8512
 TQHistogramUtils.cxx:8513
 TQHistogramUtils.cxx:8514
 TQHistogramUtils.cxx:8515
 TQHistogramUtils.cxx:8516
 TQHistogramUtils.cxx:8517
 TQHistogramUtils.cxx:8518
 TQHistogramUtils.cxx:8519
 TQHistogramUtils.cxx:8520
 TQHistogramUtils.cxx:8521
 TQHistogramUtils.cxx:8522
 TQHistogramUtils.cxx:8523
 TQHistogramUtils.cxx:8524
 TQHistogramUtils.cxx:8525
 TQHistogramUtils.cxx:8526
 TQHistogramUtils.cxx:8527
 TQHistogramUtils.cxx:8528
 TQHistogramUtils.cxx:8529
 TQHistogramUtils.cxx:8530
 TQHistogramUtils.cxx:8531
 TQHistogramUtils.cxx:8532
 TQHistogramUtils.cxx:8533
 TQHistogramUtils.cxx:8534
 TQHistogramUtils.cxx:8535
 TQHistogramUtils.cxx:8536
 TQHistogramUtils.cxx:8537
 TQHistogramUtils.cxx:8538
 TQHistogramUtils.cxx:8539
 TQHistogramUtils.cxx:8540
 TQHistogramUtils.cxx:8541
 TQHistogramUtils.cxx:8542
 TQHistogramUtils.cxx:8543
 TQHistogramUtils.cxx:8544
 TQHistogramUtils.cxx:8545
 TQHistogramUtils.cxx:8546
 TQHistogramUtils.cxx:8547
 TQHistogramUtils.cxx:8548
 TQHistogramUtils.cxx:8549
 TQHistogramUtils.cxx:8550
 TQHistogramUtils.cxx:8551
 TQHistogramUtils.cxx:8552
 TQHistogramUtils.cxx:8553
 TQHistogramUtils.cxx:8554
 TQHistogramUtils.cxx:8555
 TQHistogramUtils.cxx:8556
 TQHistogramUtils.cxx:8557
 TQHistogramUtils.cxx:8558
 TQHistogramUtils.cxx:8559
 TQHistogramUtils.cxx:8560
 TQHistogramUtils.cxx:8561
 TQHistogramUtils.cxx:8562
 TQHistogramUtils.cxx:8563
 TQHistogramUtils.cxx:8564
 TQHistogramUtils.cxx:8565
 TQHistogramUtils.cxx:8566
 TQHistogramUtils.cxx:8567
 TQHistogramUtils.cxx:8568
 TQHistogramUtils.cxx:8569
 TQHistogramUtils.cxx:8570
 TQHistogramUtils.cxx:8571
 TQHistogramUtils.cxx:8572
 TQHistogramUtils.cxx:8573
 TQHistogramUtils.cxx:8574
 TQHistogramUtils.cxx:8575
 TQHistogramUtils.cxx:8576
 TQHistogramUtils.cxx:8577
 TQHistogramUtils.cxx:8578
 TQHistogramUtils.cxx:8579
 TQHistogramUtils.cxx:8580
 TQHistogramUtils.cxx:8581
 TQHistogramUtils.cxx:8582
 TQHistogramUtils.cxx:8583
 TQHistogramUtils.cxx:8584
 TQHistogramUtils.cxx:8585
 TQHistogramUtils.cxx:8586
 TQHistogramUtils.cxx:8587
 TQHistogramUtils.cxx:8588
 TQHistogramUtils.cxx:8589
 TQHistogramUtils.cxx:8590
 TQHistogramUtils.cxx:8591
 TQHistogramUtils.cxx:8592
 TQHistogramUtils.cxx:8593
 TQHistogramUtils.cxx:8594
 TQHistogramUtils.cxx:8595
 TQHistogramUtils.cxx:8596
 TQHistogramUtils.cxx:8597
 TQHistogramUtils.cxx:8598
 TQHistogramUtils.cxx:8599
 TQHistogramUtils.cxx:8600
 TQHistogramUtils.cxx:8601
 TQHistogramUtils.cxx:8602
 TQHistogramUtils.cxx:8603
 TQHistogramUtils.cxx:8604
 TQHistogramUtils.cxx:8605
 TQHistogramUtils.cxx:8606
 TQHistogramUtils.cxx:8607
 TQHistogramUtils.cxx:8608
 TQHistogramUtils.cxx:8609
 TQHistogramUtils.cxx:8610
 TQHistogramUtils.cxx:8611
 TQHistogramUtils.cxx:8612
 TQHistogramUtils.cxx:8613
 TQHistogramUtils.cxx:8614
 TQHistogramUtils.cxx:8615
 TQHistogramUtils.cxx:8616
 TQHistogramUtils.cxx:8617
 TQHistogramUtils.cxx:8618
 TQHistogramUtils.cxx:8619
 TQHistogramUtils.cxx:8620
 TQHistogramUtils.cxx:8621
 TQHistogramUtils.cxx:8622
 TQHistogramUtils.cxx:8623
 TQHistogramUtils.cxx:8624
 TQHistogramUtils.cxx:8625
 TQHistogramUtils.cxx:8626
 TQHistogramUtils.cxx:8627
 TQHistogramUtils.cxx:8628
 TQHistogramUtils.cxx:8629
 TQHistogramUtils.cxx:8630
 TQHistogramUtils.cxx:8631
 TQHistogramUtils.cxx:8632
 TQHistogramUtils.cxx:8633
 TQHistogramUtils.cxx:8634
 TQHistogramUtils.cxx:8635
 TQHistogramUtils.cxx:8636
 TQHistogramUtils.cxx:8637
 TQHistogramUtils.cxx:8638
 TQHistogramUtils.cxx:8639
 TQHistogramUtils.cxx:8640
 TQHistogramUtils.cxx:8641
 TQHistogramUtils.cxx:8642
 TQHistogramUtils.cxx:8643
 TQHistogramUtils.cxx:8644
 TQHistogramUtils.cxx:8645
 TQHistogramUtils.cxx:8646
 TQHistogramUtils.cxx:8647
 TQHistogramUtils.cxx:8648
 TQHistogramUtils.cxx:8649
 TQHistogramUtils.cxx:8650
 TQHistogramUtils.cxx:8651
 TQHistogramUtils.cxx:8652
 TQHistogramUtils.cxx:8653
 TQHistogramUtils.cxx:8654
 TQHistogramUtils.cxx:8655
 TQHistogramUtils.cxx:8656
 TQHistogramUtils.cxx:8657
 TQHistogramUtils.cxx:8658
 TQHistogramUtils.cxx:8659
 TQHistogramUtils.cxx:8660
 TQHistogramUtils.cxx:8661
 TQHistogramUtils.cxx:8662
 TQHistogramUtils.cxx:8663
 TQHistogramUtils.cxx:8664
 TQHistogramUtils.cxx:8665
 TQHistogramUtils.cxx:8666
 TQHistogramUtils.cxx:8667
 TQHistogramUtils.cxx:8668
 TQHistogramUtils.cxx:8669
 TQHistogramUtils.cxx:8670
 TQHistogramUtils.cxx:8671
 TQHistogramUtils.cxx:8672
 TQHistogramUtils.cxx:8673
 TQHistogramUtils.cxx:8674
 TQHistogramUtils.cxx:8675
 TQHistogramUtils.cxx:8676
 TQHistogramUtils.cxx:8677
 TQHistogramUtils.cxx:8678
 TQHistogramUtils.cxx:8679
 TQHistogramUtils.cxx:8680
 TQHistogramUtils.cxx:8681
 TQHistogramUtils.cxx:8682
 TQHistogramUtils.cxx:8683
 TQHistogramUtils.cxx:8684
 TQHistogramUtils.cxx:8685
 TQHistogramUtils.cxx:8686
 TQHistogramUtils.cxx:8687
 TQHistogramUtils.cxx:8688
 TQHistogramUtils.cxx:8689
 TQHistogramUtils.cxx:8690
 TQHistogramUtils.cxx:8691
 TQHistogramUtils.cxx:8692
 TQHistogramUtils.cxx:8693
 TQHistogramUtils.cxx:8694
 TQHistogramUtils.cxx:8695
 TQHistogramUtils.cxx:8696
 TQHistogramUtils.cxx:8697
 TQHistogramUtils.cxx:8698
 TQHistogramUtils.cxx:8699
 TQHistogramUtils.cxx:8700
 TQHistogramUtils.cxx:8701
 TQHistogramUtils.cxx:8702
 TQHistogramUtils.cxx:8703
 TQHistogramUtils.cxx:8704
 TQHistogramUtils.cxx:8705
 TQHistogramUtils.cxx:8706
 TQHistogramUtils.cxx:8707
 TQHistogramUtils.cxx:8708
 TQHistogramUtils.cxx:8709
 TQHistogramUtils.cxx:8710
 TQHistogramUtils.cxx:8711
 TQHistogramUtils.cxx:8712
 TQHistogramUtils.cxx:8713
 TQHistogramUtils.cxx:8714
 TQHistogramUtils.cxx:8715
 TQHistogramUtils.cxx:8716
 TQHistogramUtils.cxx:8717
 TQHistogramUtils.cxx:8718
 TQHistogramUtils.cxx:8719
 TQHistogramUtils.cxx:8720
 TQHistogramUtils.cxx:8721
 TQHistogramUtils.cxx:8722
 TQHistogramUtils.cxx:8723
 TQHistogramUtils.cxx:8724
 TQHistogramUtils.cxx:8725
 TQHistogramUtils.cxx:8726
 TQHistogramUtils.cxx:8727
 TQHistogramUtils.cxx:8728
 TQHistogramUtils.cxx:8729
 TQHistogramUtils.cxx:8730
 TQHistogramUtils.cxx:8731
 TQHistogramUtils.cxx:8732
 TQHistogramUtils.cxx:8733
 TQHistogramUtils.cxx:8734
 TQHistogramUtils.cxx:8735
 TQHistogramUtils.cxx:8736
 TQHistogramUtils.cxx:8737
 TQHistogramUtils.cxx:8738
 TQHistogramUtils.cxx:8739
 TQHistogramUtils.cxx:8740
 TQHistogramUtils.cxx:8741
 TQHistogramUtils.cxx:8742
 TQHistogramUtils.cxx:8743
 TQHistogramUtils.cxx:8744
 TQHistogramUtils.cxx:8745
 TQHistogramUtils.cxx:8746
 TQHistogramUtils.cxx:8747
 TQHistogramUtils.cxx:8748
 TQHistogramUtils.cxx:8749
 TQHistogramUtils.cxx:8750
 TQHistogramUtils.cxx:8751
 TQHistogramUtils.cxx:8752
 TQHistogramUtils.cxx:8753
 TQHistogramUtils.cxx:8754
 TQHistogramUtils.cxx:8755
 TQHistogramUtils.cxx:8756
 TQHistogramUtils.cxx:8757
 TQHistogramUtils.cxx:8758
 TQHistogramUtils.cxx:8759
 TQHistogramUtils.cxx:8760
 TQHistogramUtils.cxx:8761
 TQHistogramUtils.cxx:8762
 TQHistogramUtils.cxx:8763
 TQHistogramUtils.cxx:8764
 TQHistogramUtils.cxx:8765
 TQHistogramUtils.cxx:8766
 TQHistogramUtils.cxx:8767
 TQHistogramUtils.cxx:8768
 TQHistogramUtils.cxx:8769
 TQHistogramUtils.cxx:8770
 TQHistogramUtils.cxx:8771
 TQHistogramUtils.cxx:8772
 TQHistogramUtils.cxx:8773
 TQHistogramUtils.cxx:8774
 TQHistogramUtils.cxx:8775
 TQHistogramUtils.cxx:8776
 TQHistogramUtils.cxx:8777
 TQHistogramUtils.cxx:8778
 TQHistogramUtils.cxx:8779
 TQHistogramUtils.cxx:8780
 TQHistogramUtils.cxx:8781
 TQHistogramUtils.cxx:8782
 TQHistogramUtils.cxx:8783
 TQHistogramUtils.cxx:8784
 TQHistogramUtils.cxx:8785
 TQHistogramUtils.cxx:8786
 TQHistogramUtils.cxx:8787
 TQHistogramUtils.cxx:8788
 TQHistogramUtils.cxx:8789
 TQHistogramUtils.cxx:8790
 TQHistogramUtils.cxx:8791
 TQHistogramUtils.cxx:8792
 TQHistogramUtils.cxx:8793
 TQHistogramUtils.cxx:8794
 TQHistogramUtils.cxx:8795
 TQHistogramUtils.cxx:8796
 TQHistogramUtils.cxx:8797
 TQHistogramUtils.cxx:8798
 TQHistogramUtils.cxx:8799
 TQHistogramUtils.cxx:8800
 TQHistogramUtils.cxx:8801
 TQHistogramUtils.cxx:8802
 TQHistogramUtils.cxx:8803
 TQHistogramUtils.cxx:8804
 TQHistogramUtils.cxx:8805
 TQHistogramUtils.cxx:8806
 TQHistogramUtils.cxx:8807
 TQHistogramUtils.cxx:8808
 TQHistogramUtils.cxx:8809
 TQHistogramUtils.cxx:8810
 TQHistogramUtils.cxx:8811
 TQHistogramUtils.cxx:8812
 TQHistogramUtils.cxx:8813
 TQHistogramUtils.cxx:8814
 TQHistogramUtils.cxx:8815
 TQHistogramUtils.cxx:8816
 TQHistogramUtils.cxx:8817
 TQHistogramUtils.cxx:8818
 TQHistogramUtils.cxx:8819
 TQHistogramUtils.cxx:8820
 TQHistogramUtils.cxx:8821
 TQHistogramUtils.cxx:8822
 TQHistogramUtils.cxx:8823
 TQHistogramUtils.cxx:8824
 TQHistogramUtils.cxx:8825
 TQHistogramUtils.cxx:8826
 TQHistogramUtils.cxx:8827
 TQHistogramUtils.cxx:8828
 TQHistogramUtils.cxx:8829
 TQHistogramUtils.cxx:8830
 TQHistogramUtils.cxx:8831
 TQHistogramUtils.cxx:8832
 TQHistogramUtils.cxx:8833
 TQHistogramUtils.cxx:8834
 TQHistogramUtils.cxx:8835
 TQHistogramUtils.cxx:8836
 TQHistogramUtils.cxx:8837
 TQHistogramUtils.cxx:8838
 TQHistogramUtils.cxx:8839
 TQHistogramUtils.cxx:8840
 TQHistogramUtils.cxx:8841
 TQHistogramUtils.cxx:8842
 TQHistogramUtils.cxx:8843
 TQHistogramUtils.cxx:8844
 TQHistogramUtils.cxx:8845
 TQHistogramUtils.cxx:8846
 TQHistogramUtils.cxx:8847
 TQHistogramUtils.cxx:8848
 TQHistogramUtils.cxx:8849
 TQHistogramUtils.cxx:8850
 TQHistogramUtils.cxx:8851
 TQHistogramUtils.cxx:8852
 TQHistogramUtils.cxx:8853
 TQHistogramUtils.cxx:8854
 TQHistogramUtils.cxx:8855
 TQHistogramUtils.cxx:8856
 TQHistogramUtils.cxx:8857
 TQHistogramUtils.cxx:8858
 TQHistogramUtils.cxx:8859
 TQHistogramUtils.cxx:8860
 TQHistogramUtils.cxx:8861
 TQHistogramUtils.cxx:8862
 TQHistogramUtils.cxx:8863
 TQHistogramUtils.cxx:8864
 TQHistogramUtils.cxx:8865
 TQHistogramUtils.cxx:8866
 TQHistogramUtils.cxx:8867
 TQHistogramUtils.cxx:8868
 TQHistogramUtils.cxx:8869
 TQHistogramUtils.cxx:8870
 TQHistogramUtils.cxx:8871
 TQHistogramUtils.cxx:8872
 TQHistogramUtils.cxx:8873
 TQHistogramUtils.cxx:8874
 TQHistogramUtils.cxx:8875
 TQHistogramUtils.cxx:8876
 TQHistogramUtils.cxx:8877
 TQHistogramUtils.cxx:8878
 TQHistogramUtils.cxx:8879
 TQHistogramUtils.cxx:8880
 TQHistogramUtils.cxx:8881
 TQHistogramUtils.cxx:8882
 TQHistogramUtils.cxx:8883
 TQHistogramUtils.cxx:8884
 TQHistogramUtils.cxx:8885
 TQHistogramUtils.cxx:8886
 TQHistogramUtils.cxx:8887
 TQHistogramUtils.cxx:8888
 TQHistogramUtils.cxx:8889
 TQHistogramUtils.cxx:8890
 TQHistogramUtils.cxx:8891
 TQHistogramUtils.cxx:8892
 TQHistogramUtils.cxx:8893
 TQHistogramUtils.cxx:8894
 TQHistogramUtils.cxx:8895
 TQHistogramUtils.cxx:8896
 TQHistogramUtils.cxx:8897
 TQHistogramUtils.cxx:8898
 TQHistogramUtils.cxx:8899
 TQHistogramUtils.cxx:8900
 TQHistogramUtils.cxx:8901
 TQHistogramUtils.cxx:8902
 TQHistogramUtils.cxx:8903
 TQHistogramUtils.cxx:8904
 TQHistogramUtils.cxx:8905
 TQHistogramUtils.cxx:8906
 TQHistogramUtils.cxx:8907
 TQHistogramUtils.cxx:8908
 TQHistogramUtils.cxx:8909
 TQHistogramUtils.cxx:8910
 TQHistogramUtils.cxx:8911
 TQHistogramUtils.cxx:8912
 TQHistogramUtils.cxx:8913
 TQHistogramUtils.cxx:8914
 TQHistogramUtils.cxx:8915
 TQHistogramUtils.cxx:8916
 TQHistogramUtils.cxx:8917
 TQHistogramUtils.cxx:8918
 TQHistogramUtils.cxx:8919
 TQHistogramUtils.cxx:8920
 TQHistogramUtils.cxx:8921
 TQHistogramUtils.cxx:8922
 TQHistogramUtils.cxx:8923
 TQHistogramUtils.cxx:8924
 TQHistogramUtils.cxx:8925
 TQHistogramUtils.cxx:8926
 TQHistogramUtils.cxx:8927
 TQHistogramUtils.cxx:8928
 TQHistogramUtils.cxx:8929
 TQHistogramUtils.cxx:8930
 TQHistogramUtils.cxx:8931
 TQHistogramUtils.cxx:8932
 TQHistogramUtils.cxx:8933
 TQHistogramUtils.cxx:8934
 TQHistogramUtils.cxx:8935
 TQHistogramUtils.cxx:8936
 TQHistogramUtils.cxx:8937
 TQHistogramUtils.cxx:8938
 TQHistogramUtils.cxx:8939
 TQHistogramUtils.cxx:8940
 TQHistogramUtils.cxx:8941
 TQHistogramUtils.cxx:8942
 TQHistogramUtils.cxx:8943
 TQHistogramUtils.cxx:8944
 TQHistogramUtils.cxx:8945
 TQHistogramUtils.cxx:8946
 TQHistogramUtils.cxx:8947
 TQHistogramUtils.cxx:8948
 TQHistogramUtils.cxx:8949
 TQHistogramUtils.cxx:8950
 TQHistogramUtils.cxx:8951
 TQHistogramUtils.cxx:8952
 TQHistogramUtils.cxx:8953
 TQHistogramUtils.cxx:8954
 TQHistogramUtils.cxx:8955
 TQHistogramUtils.cxx:8956
 TQHistogramUtils.cxx:8957
 TQHistogramUtils.cxx:8958
 TQHistogramUtils.cxx:8959
 TQHistogramUtils.cxx:8960
 TQHistogramUtils.cxx:8961
 TQHistogramUtils.cxx:8962
 TQHistogramUtils.cxx:8963
 TQHistogramUtils.cxx:8964
 TQHistogramUtils.cxx:8965
 TQHistogramUtils.cxx:8966
 TQHistogramUtils.cxx:8967
 TQHistogramUtils.cxx:8968
 TQHistogramUtils.cxx:8969
 TQHistogramUtils.cxx:8970
 TQHistogramUtils.cxx:8971
 TQHistogramUtils.cxx:8972
 TQHistogramUtils.cxx:8973
 TQHistogramUtils.cxx:8974
 TQHistogramUtils.cxx:8975
 TQHistogramUtils.cxx:8976
 TQHistogramUtils.cxx:8977
 TQHistogramUtils.cxx:8978
 TQHistogramUtils.cxx:8979
 TQHistogramUtils.cxx:8980
 TQHistogramUtils.cxx:8981
 TQHistogramUtils.cxx:8982
 TQHistogramUtils.cxx:8983
 TQHistogramUtils.cxx:8984
 TQHistogramUtils.cxx:8985
 TQHistogramUtils.cxx:8986
 TQHistogramUtils.cxx:8987
 TQHistogramUtils.cxx:8988
 TQHistogramUtils.cxx:8989
 TQHistogramUtils.cxx:8990
 TQHistogramUtils.cxx:8991
 TQHistogramUtils.cxx:8992
 TQHistogramUtils.cxx:8993
 TQHistogramUtils.cxx:8994
 TQHistogramUtils.cxx:8995
 TQHistogramUtils.cxx:8996
 TQHistogramUtils.cxx:8997
 TQHistogramUtils.cxx:8998
 TQHistogramUtils.cxx:8999
 TQHistogramUtils.cxx:9000
 TQHistogramUtils.cxx:9001
 TQHistogramUtils.cxx:9002
 TQHistogramUtils.cxx:9003
 TQHistogramUtils.cxx:9004
 TQHistogramUtils.cxx:9005
 TQHistogramUtils.cxx:9006
 TQHistogramUtils.cxx:9007
 TQHistogramUtils.cxx:9008
 TQHistogramUtils.cxx:9009
 TQHistogramUtils.cxx:9010
 TQHistogramUtils.cxx:9011
 TQHistogramUtils.cxx:9012
 TQHistogramUtils.cxx:9013
 TQHistogramUtils.cxx:9014
 TQHistogramUtils.cxx:9015
 TQHistogramUtils.cxx:9016
 TQHistogramUtils.cxx:9017
 TQHistogramUtils.cxx:9018
 TQHistogramUtils.cxx:9019
 TQHistogramUtils.cxx:9020
 TQHistogramUtils.cxx:9021
 TQHistogramUtils.cxx:9022
 TQHistogramUtils.cxx:9023
 TQHistogramUtils.cxx:9024
 TQHistogramUtils.cxx:9025
 TQHistogramUtils.cxx:9026
 TQHistogramUtils.cxx:9027
 TQHistogramUtils.cxx:9028
 TQHistogramUtils.cxx:9029
 TQHistogramUtils.cxx:9030
 TQHistogramUtils.cxx:9031
 TQHistogramUtils.cxx:9032
 TQHistogramUtils.cxx:9033
 TQHistogramUtils.cxx:9034
 TQHistogramUtils.cxx:9035
 TQHistogramUtils.cxx:9036
 TQHistogramUtils.cxx:9037
 TQHistogramUtils.cxx:9038
 TQHistogramUtils.cxx:9039
 TQHistogramUtils.cxx:9040
 TQHistogramUtils.cxx:9041
 TQHistogramUtils.cxx:9042
 TQHistogramUtils.cxx:9043
 TQHistogramUtils.cxx:9044
 TQHistogramUtils.cxx:9045
 TQHistogramUtils.cxx:9046
 TQHistogramUtils.cxx:9047
 TQHistogramUtils.cxx:9048
 TQHistogramUtils.cxx:9049
 TQHistogramUtils.cxx:9050
 TQHistogramUtils.cxx:9051
 TQHistogramUtils.cxx:9052
 TQHistogramUtils.cxx:9053
 TQHistogramUtils.cxx:9054
 TQHistogramUtils.cxx:9055
 TQHistogramUtils.cxx:9056
 TQHistogramUtils.cxx:9057
 TQHistogramUtils.cxx:9058
 TQHistogramUtils.cxx:9059
 TQHistogramUtils.cxx:9060
 TQHistogramUtils.cxx:9061
 TQHistogramUtils.cxx:9062
 TQHistogramUtils.cxx:9063
 TQHistogramUtils.cxx:9064
 TQHistogramUtils.cxx:9065
 TQHistogramUtils.cxx:9066
 TQHistogramUtils.cxx:9067
 TQHistogramUtils.cxx:9068
 TQHistogramUtils.cxx:9069
 TQHistogramUtils.cxx:9070
 TQHistogramUtils.cxx:9071
 TQHistogramUtils.cxx:9072
 TQHistogramUtils.cxx:9073
 TQHistogramUtils.cxx:9074
 TQHistogramUtils.cxx:9075
 TQHistogramUtils.cxx:9076
 TQHistogramUtils.cxx:9077
 TQHistogramUtils.cxx:9078
 TQHistogramUtils.cxx:9079
 TQHistogramUtils.cxx:9080
 TQHistogramUtils.cxx:9081
 TQHistogramUtils.cxx:9082
 TQHistogramUtils.cxx:9083
 TQHistogramUtils.cxx:9084
 TQHistogramUtils.cxx:9085
 TQHistogramUtils.cxx:9086
 TQHistogramUtils.cxx:9087
 TQHistogramUtils.cxx:9088
 TQHistogramUtils.cxx:9089
 TQHistogramUtils.cxx:9090
 TQHistogramUtils.cxx:9091
 TQHistogramUtils.cxx:9092
 TQHistogramUtils.cxx:9093
 TQHistogramUtils.cxx:9094
 TQHistogramUtils.cxx:9095
 TQHistogramUtils.cxx:9096
 TQHistogramUtils.cxx:9097
 TQHistogramUtils.cxx:9098
 TQHistogramUtils.cxx:9099
 TQHistogramUtils.cxx:9100
 TQHistogramUtils.cxx:9101
 TQHistogramUtils.cxx:9102
 TQHistogramUtils.cxx:9103
 TQHistogramUtils.cxx:9104
 TQHistogramUtils.cxx:9105
 TQHistogramUtils.cxx:9106
 TQHistogramUtils.cxx:9107
 TQHistogramUtils.cxx:9108
 TQHistogramUtils.cxx:9109
 TQHistogramUtils.cxx:9110
 TQHistogramUtils.cxx:9111
 TQHistogramUtils.cxx:9112
 TQHistogramUtils.cxx:9113
 TQHistogramUtils.cxx:9114
 TQHistogramUtils.cxx:9115
 TQHistogramUtils.cxx:9116
 TQHistogramUtils.cxx:9117
 TQHistogramUtils.cxx:9118
 TQHistogramUtils.cxx:9119
 TQHistogramUtils.cxx:9120
 TQHistogramUtils.cxx:9121
 TQHistogramUtils.cxx:9122
 TQHistogramUtils.cxx:9123
 TQHistogramUtils.cxx:9124
 TQHistogramUtils.cxx:9125
 TQHistogramUtils.cxx:9126
 TQHistogramUtils.cxx:9127
 TQHistogramUtils.cxx:9128
 TQHistogramUtils.cxx:9129
 TQHistogramUtils.cxx:9130
 TQHistogramUtils.cxx:9131
 TQHistogramUtils.cxx:9132
 TQHistogramUtils.cxx:9133
 TQHistogramUtils.cxx:9134
 TQHistogramUtils.cxx:9135
 TQHistogramUtils.cxx:9136
 TQHistogramUtils.cxx:9137
 TQHistogramUtils.cxx:9138
 TQHistogramUtils.cxx:9139
 TQHistogramUtils.cxx:9140
 TQHistogramUtils.cxx:9141
 TQHistogramUtils.cxx:9142
 TQHistogramUtils.cxx:9143
 TQHistogramUtils.cxx:9144
 TQHistogramUtils.cxx:9145
 TQHistogramUtils.cxx:9146
 TQHistogramUtils.cxx:9147
 TQHistogramUtils.cxx:9148
 TQHistogramUtils.cxx:9149
 TQHistogramUtils.cxx:9150
 TQHistogramUtils.cxx:9151
 TQHistogramUtils.cxx:9152
 TQHistogramUtils.cxx:9153
 TQHistogramUtils.cxx:9154
 TQHistogramUtils.cxx:9155
 TQHistogramUtils.cxx:9156
 TQHistogramUtils.cxx:9157
 TQHistogramUtils.cxx:9158
 TQHistogramUtils.cxx:9159
 TQHistogramUtils.cxx:9160
 TQHistogramUtils.cxx:9161
 TQHistogramUtils.cxx:9162
 TQHistogramUtils.cxx:9163
 TQHistogramUtils.cxx:9164
 TQHistogramUtils.cxx:9165
 TQHistogramUtils.cxx:9166
 TQHistogramUtils.cxx:9167
 TQHistogramUtils.cxx:9168
 TQHistogramUtils.cxx:9169
 TQHistogramUtils.cxx:9170
 TQHistogramUtils.cxx:9171
 TQHistogramUtils.cxx:9172
 TQHistogramUtils.cxx:9173
 TQHistogramUtils.cxx:9174
 TQHistogramUtils.cxx:9175
 TQHistogramUtils.cxx:9176