// @(#)root/roostats:$Id:  cranmer $
// Author: Kyle Cranmer, George Lewis 
/*************************************************************************
 * Copyright (C) 1995-2008, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

//_________________________________________________
/*
BEGIN_HTML
<p>
</p>
END_HTML
*/
//


#include <sstream>
#include <math.h>
#include <stdexcept>

#include "TMath.h"
#include "TH1.h"

#include "Riostream.h"
#include "Riostream.h"


#include "RooFit.h"
#include "RooStats/HistFactory/ParamHistFunc.h"
#include "RooAbsReal.h"
#include "RooAbsPdf.h"

#include "RooConstVar.h"
#include "RooBinning.h"
#include "RooErrorHandler.h"

#include "RooGaussian.h"
#include "RooHistFunc.h"
#include "RooArgSet.h"
#include "RooNLLVar.h"
#include "RooChi2Var.h"
#include "RooMsgService.h"

// Forward declared:
#include "RooRealVar.h"
#include "RooArgList.h"
#include "RooWorkspace.h"
#include "RooBinning.h"

//using namespace std;

ClassImp(ParamHistFunc);


/*
  
  A class which maps the current values of a RooRealVar
  (or a set of RooRealVars) to one of a number of RooRealVars:

  ParamHistFunc: {val1, val2, ...} -> {gamma (RooRealVar)}
  
  The intended interpretation is that each parameter in the
  range represent the height of a bin over the domain
  space.

  The 'createParamSet' is an easy way to create these
  parameters from a set of observables.  They are
  stored using the "TH1" ordering convention (as compared
  to the RooDataHist convention, which is used internally
  and one must map between the two).

  All indices include '0'

  gamma_i_j = paramSet[ size(i)*j + i ]

  ie assuming the dimensions are 5*5:
  gamma_2_1 = paramSet[ 5*1 + 2 ] = paramSet[7]

 */


//_____________________________________________________________________________
ParamHistFunc::ParamHistFunc() : _numBins(0)
{
  ;
}


//_____________________________________________________________________________
ParamHistFunc::ParamHistFunc(const char* name, const char* title, 
			     const RooArgList& vars, const RooArgList& paramSet) :
  RooAbsReal(name, title),
  _dataVars("!dataVars","data Vars",       this),
  _paramSet("!paramSet","bin parameters",  this),
  _numBins(0),
  _dataSet( (std::string(name)+"_dataSet").c_str(), "", vars)
{
  
  // Create a function which returns binewise-values
  // This class contains N RooRealVar's, one for each
  // bin from the given RooRealVar.
  //
  // The value of the function in the ith bin is 
  // given by:
  //
  // F(i) = gamma_i * nominal(i)
  //
  // Where the nominal values are simply fixed
  // numbers (default = 1.0 for all i)

  // Create the dataset that stores the binning info:
  
  //  _dataSet = RooDataSet("

  // Set the binning
  // //_binning = var.getBinning().clone() ;
  
  // Create the set of parameters
  // controlling the height of each bin

  // Get the number of bins
  _numBins = GetNumBins( vars );

  // Add the parameters (with checking)
  addVarSet( vars );
  addParamSet( paramSet );

  
}


//_____________________________________________________________________________
ParamHistFunc::ParamHistFunc(const char* name, const char* title, 
			     const RooArgList& vars, const RooArgList& paramSet,
			     const TH1* Hist ) :
  RooAbsReal(name, title),
  //  _dataVar("!dataVar","data Var", this, (RooRealVar&) var),
  _dataVars("!dataVars","data Vars",       this),
  _paramSet("!paramSet","bin parameters",  this),
  _numBins(0),
  _dataSet( (std::string(name)+"_dataSet").c_str(), "", vars, Hist)
{

  // Create a function which returns binewise-values
  // This class contains N RooRealVar's, one for each
  // bin from the given RooRealVar.
  //
  // The value of the function in the ith bin is 
  // given by:
  //
  // F(i) = gamma_i * nominal(i)
  //
  // Where the nominal values are simply fixed
  // numbers (default = 1.0 for all i)

  // Get the number of bins
  _numBins = GetNumBins( vars );

  // Add the parameters (with checking)
  addVarSet( vars );
  addParamSet( paramSet );
 
}


Int_t ParamHistFunc::GetNumBins( const RooArgSet& vars ) {
  
  // A helper method to get the number of bins
  
  if( vars.getSize() == 0 ) return 0;
    
  Int_t numBins = 1;

  RooFIter varIter = vars.fwdIterator() ;
  RooAbsArg* comp ;
  while((comp = (RooAbsArg*) varIter.next())) {
    if (!dynamic_cast<RooRealVar*>(comp)) {
      std::cout << "ParamHistFunc::GetNumBins" << vars.GetName() << ") ERROR: component " 
	   << comp->GetName() 
	   << " in vars list is not of type RooRealVar" << std::endl ;
      RooErrorHandler::softAbort() ;
      return -1;
    }
    RooRealVar* var = (RooRealVar*) comp;

    Int_t varNumBins = var->numBins();
    numBins *= varNumBins;
  }
    
  return numBins;

}


//_____________________________________________________________________________
ParamHistFunc::ParamHistFunc(const ParamHistFunc& other, const char* name) :
  RooAbsReal(other, name), 
  _dataVars("!dataVars", this, other._dataVars ),
  _paramSet("!paramSet", this, other._paramSet),
  _numBins( other._numBins ),
  _binMap( other._binMap ),
  _dataSet( other._dataSet )
{
  ;
  // Copy constructor
  // Member _ownedList is intentionally not copy-constructed -- ownership is not transferred
}


//_____________________________________________________________________________
ParamHistFunc::~ParamHistFunc() 
{
  ;
}


//_____________________________________________________________________________
Int_t ParamHistFunc::getCurrentBin() const {

  // Get the index of the gamma parameter associated
  // with the current bin
  // This number is the "RooDataSet" style index
  // and it must be because it uses the RooDataSet method directly
  // This is intended to be fed into the getParameter(Int_t) method:
  //
  // RooRealVar currentParam = getParameter( getCurrentBin() );

  Int_t dataSetIndex = _dataSet.getIndex( _dataVars ); // calcTreeIndex();
  return dataSetIndex;

}


//_____________________________________________________________________________
RooRealVar& ParamHistFunc::getParameter( Int_t index ) const {

  // Get the parameter associate with the the
  // input RooDataHist style index
  // It uses the binMap to convert the RooDataSet style index
  // into the TH1 style index (which is how they are stored
  // internally in the '_paramSet' vector

  Int_t gammaIndex = -1;
  if( _binMap.find( index ) != _binMap.end() ) {
    gammaIndex = _binMap[ index ];
  }
  else {
    std::cout << "Error: ParamHistFunc internal bin index map "
	      << "not properly configured" << std::endl;
    throw -1;
  }

  return (RooRealVar&) _paramSet[gammaIndex];
}


//_____________________________________________________________________________
RooRealVar& ParamHistFunc::getParameter() const {
  Int_t index = getCurrentBin();
  return getParameter( index );
}


void ParamHistFunc::setParamConst( Int_t index, Bool_t varConst ) {
  RooRealVar& var = getParameter( index );
  var.setConstant( varConst );
}


void ParamHistFunc::setConstant( bool constant ) {
  for( int i=0; i < numBins(); ++i) {
    setParamConst(i, constant);
  }
}


//_____________________________________________________________________________
void ParamHistFunc::setShape( TH1* shape ) {
  
  int num_hist_bins = shape->GetNbinsX()*shape->GetNbinsY()*shape->GetNbinsZ();

  if( num_hist_bins != numBins() ) {
    std::cout << "Error - ParamHistFunc: cannot set Shape of ParamHistFunc: " << GetName()
	      << " using histogram: " << shape->GetName()
	      << ". Bins don't match" << std::endl;
    throw std::runtime_error("setShape");
  }


  Int_t TH1BinNumber = 0;
  for( Int_t i = 0; i < numBins(); ++i) {
    
    TH1BinNumber++;
    
    while( shape->IsBinUnderflow(TH1BinNumber) || shape->IsBinOverflow(TH1BinNumber) ){
      TH1BinNumber++;
    }

    //RooRealVar& var = dynamic_cast<RooRealVar&>(getParameter(i));
    RooRealVar& var = dynamic_cast<RooRealVar&>(_paramSet[i]);
    var.setVal( shape->GetBinContent(TH1BinNumber) );
  }

}


//_____________________________________________________________________________
RooArgList ParamHistFunc::createParamSet(RooWorkspace& w, const std::string& Prefix, 
					 const RooArgList& vars) {
  
  // Create the list of RooRealVar
  // parameters which represent the
  // height of the histogram bins.
  // The list 'vars' represents the 
  // observables (corresponding to histogram bins)
  // that these newly created parameters will 
  // be mapped to. (ie, we create one parameter
  // per observable in vars and per bin in each observable)

  // Store them in a list using:
  // _paramSet.add( createParamSet() );
  // This list is stored in the "TH1" index order

  // Get the number of bins
  // in the nominal histogram

  RooArgList paramSet;

  Int_t numVars = vars.getSize();
  Int_t numBins = GetNumBins( vars );

  if( numVars == 0 ) {
    std::cout << "Warning - ParamHistFunc::createParamSet() :"
	 << " No Variables provided.  Not making constraint terms." 
	 << std::endl;
    return paramSet;
  }

  else if( numVars == 1 ) {
 
    // For each bin, create a RooRealVar
    for( Int_t i = 0; i < numBins; ++i) {

      std::stringstream VarNameStream;
      VarNameStream << Prefix << "_bin_" << i;
      std::string VarName = VarNameStream.str();

      RooRealVar gamma( VarName.c_str(), VarName.c_str(), 1.0 ); 
      // "Hard-Code" a minimum of 0.0
      gamma.setMin( 0.0 );
      gamma.setConstant( false );

      w.import( gamma, RooFit::RecycleConflictNodes() );
      RooRealVar* gamma_wspace = (RooRealVar*) w.var( VarName.c_str() );

      paramSet.add( *gamma_wspace );

    }
  }

  else if( numVars == 2 ) {
 
    // Create a vector of indices
    // all starting at 0
    std::vector< Int_t > Indices(numVars, 0);

    RooRealVar* varx = (RooRealVar*) vars.at(0);
    RooRealVar* vary = (RooRealVar*) vars.at(1);
    
    // For each bin, create a RooRealVar
    for( Int_t j = 0; j < vary->numBins(); ++j) {
      for( Int_t i = 0; i < varx->numBins(); ++i) {

	// Ordering is important:
	// To match TH1, list goes over x bins
	// first, then y

	std::stringstream VarNameStream;
	VarNameStream << Prefix << "_bin_" << i << "_" << j;
	std::string VarName = VarNameStream.str();

	RooRealVar gamma( VarName.c_str(), VarName.c_str(), 1.0 ); 
	// "Hard-Code" a minimum of 0.0
	gamma.setMin( 0.0 );
	gamma.setConstant( false );
	  
	w.import( gamma, RooFit::RecycleConflictNodes() );
	RooRealVar* gamma_wspace = (RooRealVar*) w.var( VarName.c_str() );
	  
	paramSet.add( *gamma_wspace );
	  
      }
    }
  }

  else if( numVars == 3 ) {
 
    // Create a vector of indices
    // all starting at 0
    std::vector< Int_t > Indices(numVars, 0);

    RooRealVar* varx = (RooRealVar*) vars.at(0);
    RooRealVar* vary = (RooRealVar*) vars.at(1);
    RooRealVar* varz = (RooRealVar*) vars.at(2);
    
    // For each bin, create a RooRealVar
    for( Int_t k = 0; k < varz->numBins(); ++k) {
      for( Int_t j = 0; j < vary->numBins(); ++j) {
	for( Int_t i = 0; i < varx->numBins(); ++i) {
	  
	  // Ordering is important:
	  // To match TH1, list goes over x bins
	  // first, then y, then z

	  std::stringstream VarNameStream;
	  VarNameStream << Prefix << "_bin_" << i << "_" << j << "_" << k;
	  std::string VarName = VarNameStream.str();
	
	  RooRealVar gamma( VarName.c_str(), VarName.c_str(), 1.0 ); 
	  // "Hard-Code" a minimum of 0.0
	  gamma.setMin( 0.0 );
	  gamma.setConstant( false );
	  
	  w.import( gamma, RooFit::RecycleConflictNodes() );
	  RooRealVar* gamma_wspace = (RooRealVar*) w.var( VarName.c_str() );
	  
	  paramSet.add( *gamma_wspace );
	
	}
      }
    }
  }

  else {
    std::cout << " Error: ParamHistFunc doesn't support dimensions > 3D " <<  std::endl;
  }

  return paramSet;  

}


//_____________________________________________________________________________
RooArgList ParamHistFunc::createParamSet(RooWorkspace& w, const std::string& Prefix, 
					 const RooArgList& vars, 
					 Double_t gamma_min, Double_t gamma_max) {

  // Create the list of RooRealVar
  // parameters which represent the
  // height of the histogram bins.
  // The list 'vars' represents the 
  // observables (corresponding to histogram bins)
  // that these newly created parameters will 
  // be mapped to. (ie, we create one parameter
  // per observable in vars and per bin in each observable)

  // Store them in a list using:
  // _paramSet.add( createParamSet() );
  // This list is stored in the "TH1" index order

  // Get the number of bins
  // in the nominal histogram

  // We also set the parameters to have nominal min and max values

  RooArgList params = ParamHistFunc::createParamSet( w, Prefix, vars );

  RooFIter paramIter = params.fwdIterator() ;
  RooAbsArg* comp ;
  while((comp = (RooAbsArg*) paramIter.next())) {
    
    RooRealVar* var = (RooRealVar*) comp;

    var->setMin( gamma_min );
    var->setMax( gamma_max );
  }

  return params;

}


//_____________________________________________________________________________
RooArgList ParamHistFunc::createParamSet(const std::string& Prefix, Int_t numBins, 
					 Double_t gamma_min, Double_t gamma_max) {

  // Create the list of RooRealVar
  // parameters which represent the
  // height of the histogram bins.
  // Store them in a list

  // _paramSet.add( createParamSet() );

  // Get the number of bins
  // in the nominal histogram

  RooArgList paramSet;

  if( gamma_max <= gamma_min ) {

    std::cout << "Warming: gamma_min <= gamma_max: Using default values (0, 10)" << std::endl;

    gamma_min = 0.0;
    gamma_max = 10.0;

  }

  Double_t gamma_nominal = 1.0;

  if( gamma_nominal < gamma_min ) {
    gamma_nominal = gamma_min;
  }

  if( gamma_nominal > gamma_max ) {
    gamma_nominal = gamma_max;
  }

  // For each bin, create a RooRealVar
  for( Int_t i = 0; i < numBins; ++i) {

    std::stringstream VarNameStream;
    VarNameStream << Prefix << "_bin_" << i;
    std::string VarName = VarNameStream.str();

    RooRealVar* gamma = new RooRealVar( VarName.c_str(), VarName.c_str(), 
					gamma_nominal, gamma_min, gamma_max );
    gamma->setConstant( false );
    paramSet.add( *gamma );

  }

  return paramSet;

}


//_____________________________________________________________________________
Int_t ParamHistFunc::addVarSet( const RooArgList& vars ) {
  
  // return 0 for success
  // return 1 for failure
  
  // Check that the elements 
  // are actually RooRealVar's
  // If so, add them to the 
  // list of vars

  int numVars = 0;

  RooFIter varIter = vars.fwdIterator() ;
  RooAbsArg* comp ;
  while((comp = (RooAbsArg*) varIter.next())) {
    if (!dynamic_cast<RooRealVar*>(comp)) {
      coutE(InputArguments) << "ParamHistFunc::(" << GetName() << ") ERROR: component " 
			    << comp->GetName() << " in variables list is not of type RooRealVar" 
			    << std::endl;
      RooErrorHandler::softAbort() ;
      return 1;
    }

    _dataVars.add( *comp );
    numVars++;

  }

  Int_t numBinsX = 1;
  Int_t numBinsY = 1;
  Int_t numBinsZ = 1;

  if( numVars == 1 ) {
    RooRealVar* varX = (RooRealVar*) _dataVars.at(0);
    numBinsX = varX->numBins();
    numBinsY = 1;
    numBinsZ = 1;
  } else  if( numVars == 2 ) {
    RooRealVar* varX = (RooRealVar*) _dataVars.at(0);
    RooRealVar* varY = (RooRealVar*) _dataVars.at(1);
    numBinsX = varX->numBins();
    numBinsY = varY->numBins();
    numBinsZ = 1;
  } else  if( numVars == 3 ) {
    RooRealVar* varX = (RooRealVar*) _dataVars.at(0);
    RooRealVar* varY = (RooRealVar*) _dataVars.at(1);
    RooRealVar* varZ = (RooRealVar*) _dataVars.at(2);
    numBinsX = varX->numBins();
    numBinsY = varY->numBins();
    numBinsZ = varZ->numBins();
  } else {
    std::cout << "ParamHistFunc() - Only works for 1-3 variables (1d-3d)" << std::endl;
    throw -1;  
  }

  // Fill the mapping between
  // RooDataHist bins and TH1 Bins:

  // Clear the map
  _binMap.clear();

  // Fill the map
  for( Int_t i = 0; i < numBinsX; ++i ) {
    for( Int_t j = 0; j < numBinsY; ++j ) {
      for( Int_t k = 0; k < numBinsZ; ++k ) {
	
	Int_t RooDataSetBin = k + j*numBinsZ + i*numBinsY*numBinsZ; 
	Int_t TH1HistBin    = i + j*numBinsX + k*numBinsX*numBinsY; 
	  
	_binMap[RooDataSetBin] = TH1HistBin;
	
      }
    }
  }
  
  return 0;

}


//_____________________________________________________________________________
Int_t ParamHistFunc::addParamSet( const RooArgList& params ) {
  
  // return 0 for success
  // return 1 for failure

  // Check that the supplied list has
  // the right number of arguments:

  Int_t numVarBins  = _numBins;
  Int_t numElements = params.getSize();

  if( numVarBins != numElements ) {
    std::cout << "ParamHistFunc::addParamSet - ERROR - " 
	      << "Supplied list of parameters " << params.GetName()
	      << " has " << numElements << " elements but the ParamHistFunc"
	      << GetName() << " has " << numVarBins << " bins."
	      << std::endl;
    return 1;

  }
  
  // Check that the elements 
  // are actually RooRealVar's
  // If so, add them to the 
  // list of params

  RooFIter paramIter = params.fwdIterator() ;
  RooAbsArg* comp ;
  while((comp = (RooAbsArg*) paramIter.next())) {
    if (!dynamic_cast<RooRealVar*>(comp)) {
      coutE(InputArguments) << "ParamHistFunc::(" << GetName() << ") ERROR: component " 
			    << comp->GetName() << " in paramater list is not of type RooRealVar" 
			    << std::endl;
      RooErrorHandler::softAbort() ;
      return 1;
    }

    _paramSet.add( *comp );

  }
  
  return 0;

}


//_____________________________________________________________________________
Double_t ParamHistFunc::evaluate() const 
{

  // Find the bin cooresponding to the current
  // value of the RooRealVar:

  RooRealVar* param = (RooRealVar*) &(getParameter());
  Double_t value = param->getVal();
  return value;
  
}


//_____________________________________________________________________________
Int_t ParamHistFunc::getAnalyticalIntegralWN(RooArgSet& allVars, RooArgSet& analVars, 
					     const RooArgSet* normSet, 
					     const char* /*rangeName*/) const 
{
  // Advertise that all integrals can be handled internally.

  // Handle trivial no-integration scenario
  if (allVars.getSize()==0) return 0 ;
  if (_forceNumInt) return 0 ;


  // Select subset of allVars that are actual dependents
  analVars.add(allVars) ;

  // Check if this configuration was created before
  Int_t sterileIdx(-1) ;
  CacheElem* cache = (CacheElem*) _normIntMgr.getObj(normSet,&analVars,&sterileIdx,(const char*)0) ;
  if (cache) {
    return _normIntMgr.lastIndex()+1 ;
  }
  
  // Create new cache element
  cache = new CacheElem ;

  // Store cache element
  Int_t code = _normIntMgr.setObj(normSet,&analVars,(RooAbsCacheElement*)cache,0) ;

  return code+1 ; 

}


//_____________________________________________________________________________
Double_t ParamHistFunc::analyticalIntegralWN(Int_t /*code*/, const RooArgSet* /*normSet2*/,
					     const char* /*rangeName*/) const 
{
  // Implement analytical integrations by doing appropriate weighting from  component integrals
  // functions to integrators of components

  Double_t value(0) ;

  // Simply loop over bins, 
  // get the height, and
  // multiply by the bind width
  
  RooFIter paramIter = _paramSet.fwdIterator();
  RooRealVar* param = NULL;
  Int_t nominalItr = 0;
  while((param = (RooRealVar*) paramIter.next())) {

    // Get the gamma's value
    Double_t paramVal  = (*param).getVal();
    
    // Get the bin volume
    _dataSet.get( nominalItr );
    Double_t binVolumeDS  = _dataSet.binVolume(); //_binning->binWidth( nominalItr );
    
    // Finally, get the subtotal
    value += paramVal*binVolumeDS;

    ++nominalItr;

    /*
    std::cout << "Integrating : "
	      << " bin: "  << nomValue
	      << " binVolume:  "  << binVolumeDS
	      << " paramValue:  "  << paramVal
	      << " nomValue:  "  << nomValue
	      << " subTotal:  "  << value
	      << std::endl;
    */

  }

  return value;

}



//_____________________________________________________________________________
std::list<Double_t>* ParamHistFunc::plotSamplingHint(RooAbsRealLValue& /*obs*/, Double_t /*xlo*/, 
						Double_t /*xhi*/) const
{
  // Return sampling hint for making curves of (projections) of this function
  // as the recursive division strategy of RooCurve cannot deal efficiently
  // with the vertical lines that occur in a non-interpolated histogram

  return 0;

  /*
  // copied and edited from RooHistFunc
  RooAbsLValue* lvarg = &obs;

  // Retrieve position of all bin boundaries
  const RooAbsBinning* binning = lvarg->getBinningPtr(0) ;
  Double_t* boundaries = binning->array() ;

  list<Double_t>* hint = new list<Double_t> ;

  // Widen range slighty
  xlo = xlo - 0.01*(xhi-xlo) ;
  xhi = xhi + 0.01*(xhi-xlo) ;

  Double_t delta = (xhi-xlo)*1e-8 ;
 
  // Construct array with pairs of points positioned epsilon to the left and
  // right of the bin boundaries
  for (Int_t i=0 ; i<binning->numBoundaries() ; i++) {
    if (boundaries[i]>=xlo && boundaries[i]<=xhi) {
      hint->push_back(boundaries[i]-delta) ;
      hint->push_back(boundaries[i]+delta) ;
    }
  }

  return hint ;
  */
}


//______________________________________________________________________________
std::list<Double_t>* ParamHistFunc::binBoundaries(RooAbsRealLValue& /*obs*/, Double_t /*xlo*/, 
						  Double_t /*xhi*/) const 
{
  // Return sampling hint for making curves of (projections) of this function
  // as the recursive division strategy of RooCurve cannot deal efficiently
  // with the vertical lines that occur in a non-interpolated histogram

  return 0;

  /*
  // copied and edited from RooHistFunc
  RooAbsLValue* lvarg = &obs;

  // Retrieve position of all bin boundaries
  const RooAbsBinning* binning = lvarg->getBinningPtr(0) ;
  Double_t* boundaries = binning->array() ;

  list<Double_t>* hint = new list<Double_t> ;

  // Construct array with pairs of points positioned epsilon to the left and
  // right of the bin boundaries
  for (Int_t i=0 ; i<binning->numBoundaries() ; i++) {
    if (boundaries[i]>=xlo && boundaries[i]<=xhi) {
      hint->push_back(boundaries[i]) ;
    }
  }

  return hint ;
  */
}
 ParamHistFunc.cxx:1
 ParamHistFunc.cxx:2
 ParamHistFunc.cxx:3
 ParamHistFunc.cxx:4
 ParamHistFunc.cxx:5
 ParamHistFunc.cxx:6
 ParamHistFunc.cxx:7
 ParamHistFunc.cxx:8
 ParamHistFunc.cxx:9
 ParamHistFunc.cxx:10
 ParamHistFunc.cxx:11
 ParamHistFunc.cxx:12
 ParamHistFunc.cxx:13
 ParamHistFunc.cxx:14
 ParamHistFunc.cxx:15
 ParamHistFunc.cxx:16
 ParamHistFunc.cxx:17
 ParamHistFunc.cxx:18
 ParamHistFunc.cxx:19
 ParamHistFunc.cxx:20
 ParamHistFunc.cxx:21
 ParamHistFunc.cxx:22
 ParamHistFunc.cxx:23
 ParamHistFunc.cxx:24
 ParamHistFunc.cxx:25
 ParamHistFunc.cxx:26
 ParamHistFunc.cxx:27
 ParamHistFunc.cxx:28
 ParamHistFunc.cxx:29
 ParamHistFunc.cxx:30
 ParamHistFunc.cxx:31
 ParamHistFunc.cxx:32
 ParamHistFunc.cxx:33
 ParamHistFunc.cxx:34
 ParamHistFunc.cxx:35
 ParamHistFunc.cxx:36
 ParamHistFunc.cxx:37
 ParamHistFunc.cxx:38
 ParamHistFunc.cxx:39
 ParamHistFunc.cxx:40
 ParamHistFunc.cxx:41
 ParamHistFunc.cxx:42
 ParamHistFunc.cxx:43
 ParamHistFunc.cxx:44
 ParamHistFunc.cxx:45
 ParamHistFunc.cxx:46
 ParamHistFunc.cxx:47
 ParamHistFunc.cxx:48
 ParamHistFunc.cxx:49
 ParamHistFunc.cxx:50
 ParamHistFunc.cxx:51
 ParamHistFunc.cxx:52
 ParamHistFunc.cxx:53
 ParamHistFunc.cxx:54
 ParamHistFunc.cxx:55
 ParamHistFunc.cxx:56
 ParamHistFunc.cxx:57
 ParamHistFunc.cxx:58
 ParamHistFunc.cxx:59
 ParamHistFunc.cxx:60
 ParamHistFunc.cxx:61
 ParamHistFunc.cxx:62
 ParamHistFunc.cxx:63
 ParamHistFunc.cxx:64
 ParamHistFunc.cxx:65
 ParamHistFunc.cxx:66
 ParamHistFunc.cxx:67
 ParamHistFunc.cxx:68
 ParamHistFunc.cxx:69
 ParamHistFunc.cxx:70
 ParamHistFunc.cxx:71
 ParamHistFunc.cxx:72
 ParamHistFunc.cxx:73
 ParamHistFunc.cxx:74
 ParamHistFunc.cxx:75
 ParamHistFunc.cxx:76
 ParamHistFunc.cxx:77
 ParamHistFunc.cxx:78
 ParamHistFunc.cxx:79
 ParamHistFunc.cxx:80
 ParamHistFunc.cxx:81
 ParamHistFunc.cxx:82
 ParamHistFunc.cxx:83
 ParamHistFunc.cxx:84
 ParamHistFunc.cxx:85
 ParamHistFunc.cxx:86
 ParamHistFunc.cxx:87
 ParamHistFunc.cxx:88
 ParamHistFunc.cxx:89
 ParamHistFunc.cxx:90
 ParamHistFunc.cxx:91
 ParamHistFunc.cxx:92
 ParamHistFunc.cxx:93
 ParamHistFunc.cxx:94
 ParamHistFunc.cxx:95
 ParamHistFunc.cxx:96
 ParamHistFunc.cxx:97
 ParamHistFunc.cxx:98
 ParamHistFunc.cxx:99
 ParamHistFunc.cxx:100
 ParamHistFunc.cxx:101
 ParamHistFunc.cxx:102
 ParamHistFunc.cxx:103
 ParamHistFunc.cxx:104
 ParamHistFunc.cxx:105
 ParamHistFunc.cxx:106
 ParamHistFunc.cxx:107
 ParamHistFunc.cxx:108
 ParamHistFunc.cxx:109
 ParamHistFunc.cxx:110
 ParamHistFunc.cxx:111
 ParamHistFunc.cxx:112
 ParamHistFunc.cxx:113
 ParamHistFunc.cxx:114
 ParamHistFunc.cxx:115
 ParamHistFunc.cxx:116
 ParamHistFunc.cxx:117
 ParamHistFunc.cxx:118
 ParamHistFunc.cxx:119
 ParamHistFunc.cxx:120
 ParamHistFunc.cxx:121
 ParamHistFunc.cxx:122
 ParamHistFunc.cxx:123
 ParamHistFunc.cxx:124
 ParamHistFunc.cxx:125
 ParamHistFunc.cxx:126
 ParamHistFunc.cxx:127
 ParamHistFunc.cxx:128
 ParamHistFunc.cxx:129
 ParamHistFunc.cxx:130
 ParamHistFunc.cxx:131
 ParamHistFunc.cxx:132
 ParamHistFunc.cxx:133
 ParamHistFunc.cxx:134
 ParamHistFunc.cxx:135
 ParamHistFunc.cxx:136
 ParamHistFunc.cxx:137
 ParamHistFunc.cxx:138
 ParamHistFunc.cxx:139
 ParamHistFunc.cxx:140
 ParamHistFunc.cxx:141
 ParamHistFunc.cxx:142
 ParamHistFunc.cxx:143
 ParamHistFunc.cxx:144
 ParamHistFunc.cxx:145
 ParamHistFunc.cxx:146
 ParamHistFunc.cxx:147
 ParamHistFunc.cxx:148
 ParamHistFunc.cxx:149
 ParamHistFunc.cxx:150
 ParamHistFunc.cxx:151
 ParamHistFunc.cxx:152
 ParamHistFunc.cxx:153
 ParamHistFunc.cxx:154
 ParamHistFunc.cxx:155
 ParamHistFunc.cxx:156
 ParamHistFunc.cxx:157
 ParamHistFunc.cxx:158
 ParamHistFunc.cxx:159
 ParamHistFunc.cxx:160
 ParamHistFunc.cxx:161
 ParamHistFunc.cxx:162
 ParamHistFunc.cxx:163
 ParamHistFunc.cxx:164
 ParamHistFunc.cxx:165
 ParamHistFunc.cxx:166
 ParamHistFunc.cxx:167
 ParamHistFunc.cxx:168
 ParamHistFunc.cxx:169
 ParamHistFunc.cxx:170
 ParamHistFunc.cxx:171
 ParamHistFunc.cxx:172
 ParamHistFunc.cxx:173
 ParamHistFunc.cxx:174
 ParamHistFunc.cxx:175
 ParamHistFunc.cxx:176
 ParamHistFunc.cxx:177
 ParamHistFunc.cxx:178
 ParamHistFunc.cxx:179
 ParamHistFunc.cxx:180
 ParamHistFunc.cxx:181
 ParamHistFunc.cxx:182
 ParamHistFunc.cxx:183
 ParamHistFunc.cxx:184
 ParamHistFunc.cxx:185
 ParamHistFunc.cxx:186
 ParamHistFunc.cxx:187
 ParamHistFunc.cxx:188
 ParamHistFunc.cxx:189
 ParamHistFunc.cxx:190
 ParamHistFunc.cxx:191
 ParamHistFunc.cxx:192
 ParamHistFunc.cxx:193
 ParamHistFunc.cxx:194
 ParamHistFunc.cxx:195
 ParamHistFunc.cxx:196
 ParamHistFunc.cxx:197
 ParamHistFunc.cxx:198
 ParamHistFunc.cxx:199
 ParamHistFunc.cxx:200
 ParamHistFunc.cxx:201
 ParamHistFunc.cxx:202
 ParamHistFunc.cxx:203
 ParamHistFunc.cxx:204
 ParamHistFunc.cxx:205
 ParamHistFunc.cxx:206
 ParamHistFunc.cxx:207
 ParamHistFunc.cxx:208
 ParamHistFunc.cxx:209
 ParamHistFunc.cxx:210
 ParamHistFunc.cxx:211
 ParamHistFunc.cxx:212
 ParamHistFunc.cxx:213
 ParamHistFunc.cxx:214
 ParamHistFunc.cxx:215
 ParamHistFunc.cxx:216
 ParamHistFunc.cxx:217
 ParamHistFunc.cxx:218
 ParamHistFunc.cxx:219
 ParamHistFunc.cxx:220
 ParamHistFunc.cxx:221
 ParamHistFunc.cxx:222
 ParamHistFunc.cxx:223
 ParamHistFunc.cxx:224
 ParamHistFunc.cxx:225
 ParamHistFunc.cxx:226
 ParamHistFunc.cxx:227
 ParamHistFunc.cxx:228
 ParamHistFunc.cxx:229
 ParamHistFunc.cxx:230
 ParamHistFunc.cxx:231
 ParamHistFunc.cxx:232
 ParamHistFunc.cxx:233
 ParamHistFunc.cxx:234
 ParamHistFunc.cxx:235
 ParamHistFunc.cxx:236
 ParamHistFunc.cxx:237
 ParamHistFunc.cxx:238
 ParamHistFunc.cxx:239
 ParamHistFunc.cxx:240
 ParamHistFunc.cxx:241
 ParamHistFunc.cxx:242
 ParamHistFunc.cxx:243
 ParamHistFunc.cxx:244
 ParamHistFunc.cxx:245
 ParamHistFunc.cxx:246
 ParamHistFunc.cxx:247
 ParamHistFunc.cxx:248
 ParamHistFunc.cxx:249
 ParamHistFunc.cxx:250
 ParamHistFunc.cxx:251
 ParamHistFunc.cxx:252
 ParamHistFunc.cxx:253
 ParamHistFunc.cxx:254
 ParamHistFunc.cxx:255
 ParamHistFunc.cxx:256
 ParamHistFunc.cxx:257
 ParamHistFunc.cxx:258
 ParamHistFunc.cxx:259
 ParamHistFunc.cxx:260
 ParamHistFunc.cxx:261
 ParamHistFunc.cxx:262
 ParamHistFunc.cxx:263
 ParamHistFunc.cxx:264
 ParamHistFunc.cxx:265
 ParamHistFunc.cxx:266
 ParamHistFunc.cxx:267
 ParamHistFunc.cxx:268
 ParamHistFunc.cxx:269
 ParamHistFunc.cxx:270
 ParamHistFunc.cxx:271
 ParamHistFunc.cxx:272
 ParamHistFunc.cxx:273
 ParamHistFunc.cxx:274
 ParamHistFunc.cxx:275
 ParamHistFunc.cxx:276
 ParamHistFunc.cxx:277
 ParamHistFunc.cxx:278
 ParamHistFunc.cxx:279
 ParamHistFunc.cxx:280
 ParamHistFunc.cxx:281
 ParamHistFunc.cxx:282
 ParamHistFunc.cxx:283
 ParamHistFunc.cxx:284
 ParamHistFunc.cxx:285
 ParamHistFunc.cxx:286
 ParamHistFunc.cxx:287
 ParamHistFunc.cxx:288
 ParamHistFunc.cxx:289
 ParamHistFunc.cxx:290
 ParamHistFunc.cxx:291
 ParamHistFunc.cxx:292
 ParamHistFunc.cxx:293
 ParamHistFunc.cxx:294
 ParamHistFunc.cxx:295
 ParamHistFunc.cxx:296
 ParamHistFunc.cxx:297
 ParamHistFunc.cxx:298
 ParamHistFunc.cxx:299
 ParamHistFunc.cxx:300
 ParamHistFunc.cxx:301
 ParamHistFunc.cxx:302
 ParamHistFunc.cxx:303
 ParamHistFunc.cxx:304
 ParamHistFunc.cxx:305
 ParamHistFunc.cxx:306
 ParamHistFunc.cxx:307
 ParamHistFunc.cxx:308
 ParamHistFunc.cxx:309
 ParamHistFunc.cxx:310
 ParamHistFunc.cxx:311
 ParamHistFunc.cxx:312
 ParamHistFunc.cxx:313
 ParamHistFunc.cxx:314
 ParamHistFunc.cxx:315
 ParamHistFunc.cxx:316
 ParamHistFunc.cxx:317
 ParamHistFunc.cxx:318
 ParamHistFunc.cxx:319
 ParamHistFunc.cxx:320
 ParamHistFunc.cxx:321
 ParamHistFunc.cxx:322
 ParamHistFunc.cxx:323
 ParamHistFunc.cxx:324
 ParamHistFunc.cxx:325
 ParamHistFunc.cxx:326
 ParamHistFunc.cxx:327
 ParamHistFunc.cxx:328
 ParamHistFunc.cxx:329
 ParamHistFunc.cxx:330
 ParamHistFunc.cxx:331
 ParamHistFunc.cxx:332
 ParamHistFunc.cxx:333
 ParamHistFunc.cxx:334
 ParamHistFunc.cxx:335
 ParamHistFunc.cxx:336
 ParamHistFunc.cxx:337
 ParamHistFunc.cxx:338
 ParamHistFunc.cxx:339
 ParamHistFunc.cxx:340
 ParamHistFunc.cxx:341
 ParamHistFunc.cxx:342
 ParamHistFunc.cxx:343
 ParamHistFunc.cxx:344
 ParamHistFunc.cxx:345
 ParamHistFunc.cxx:346
 ParamHistFunc.cxx:347
 ParamHistFunc.cxx:348
 ParamHistFunc.cxx:349
 ParamHistFunc.cxx:350
 ParamHistFunc.cxx:351
 ParamHistFunc.cxx:352
 ParamHistFunc.cxx:353
 ParamHistFunc.cxx:354
 ParamHistFunc.cxx:355
 ParamHistFunc.cxx:356
 ParamHistFunc.cxx:357
 ParamHistFunc.cxx:358
 ParamHistFunc.cxx:359
 ParamHistFunc.cxx:360
 ParamHistFunc.cxx:361
 ParamHistFunc.cxx:362
 ParamHistFunc.cxx:363
 ParamHistFunc.cxx:364
 ParamHistFunc.cxx:365
 ParamHistFunc.cxx:366
 ParamHistFunc.cxx:367
 ParamHistFunc.cxx:368
 ParamHistFunc.cxx:369
 ParamHistFunc.cxx:370
 ParamHistFunc.cxx:371
 ParamHistFunc.cxx:372
 ParamHistFunc.cxx:373
 ParamHistFunc.cxx:374
 ParamHistFunc.cxx:375
 ParamHistFunc.cxx:376
 ParamHistFunc.cxx:377
 ParamHistFunc.cxx:378
 ParamHistFunc.cxx:379
 ParamHistFunc.cxx:380
 ParamHistFunc.cxx:381
 ParamHistFunc.cxx:382
 ParamHistFunc.cxx:383
 ParamHistFunc.cxx:384
 ParamHistFunc.cxx:385
 ParamHistFunc.cxx:386
 ParamHistFunc.cxx:387
 ParamHistFunc.cxx:388
 ParamHistFunc.cxx:389
 ParamHistFunc.cxx:390
 ParamHistFunc.cxx:391
 ParamHistFunc.cxx:392
 ParamHistFunc.cxx:393
 ParamHistFunc.cxx:394
 ParamHistFunc.cxx:395
 ParamHistFunc.cxx:396
 ParamHistFunc.cxx:397
 ParamHistFunc.cxx:398
 ParamHistFunc.cxx:399
 ParamHistFunc.cxx:400
 ParamHistFunc.cxx:401
 ParamHistFunc.cxx:402
 ParamHistFunc.cxx:403
 ParamHistFunc.cxx:404
 ParamHistFunc.cxx:405
 ParamHistFunc.cxx:406
 ParamHistFunc.cxx:407
 ParamHistFunc.cxx:408
 ParamHistFunc.cxx:409
 ParamHistFunc.cxx:410
 ParamHistFunc.cxx:411
 ParamHistFunc.cxx:412
 ParamHistFunc.cxx:413
 ParamHistFunc.cxx:414
 ParamHistFunc.cxx:415
 ParamHistFunc.cxx:416
 ParamHistFunc.cxx:417
 ParamHistFunc.cxx:418
 ParamHistFunc.cxx:419
 ParamHistFunc.cxx:420
 ParamHistFunc.cxx:421
 ParamHistFunc.cxx:422
 ParamHistFunc.cxx:423
 ParamHistFunc.cxx:424
 ParamHistFunc.cxx:425
 ParamHistFunc.cxx:426
 ParamHistFunc.cxx:427
 ParamHistFunc.cxx:428
 ParamHistFunc.cxx:429
 ParamHistFunc.cxx:430
 ParamHistFunc.cxx:431
 ParamHistFunc.cxx:432
 ParamHistFunc.cxx:433
 ParamHistFunc.cxx:434
 ParamHistFunc.cxx:435
 ParamHistFunc.cxx:436
 ParamHistFunc.cxx:437
 ParamHistFunc.cxx:438
 ParamHistFunc.cxx:439
 ParamHistFunc.cxx:440
 ParamHistFunc.cxx:441
 ParamHistFunc.cxx:442
 ParamHistFunc.cxx:443
 ParamHistFunc.cxx:444
 ParamHistFunc.cxx:445
 ParamHistFunc.cxx:446
 ParamHistFunc.cxx:447
 ParamHistFunc.cxx:448
 ParamHistFunc.cxx:449
 ParamHistFunc.cxx:450
 ParamHistFunc.cxx:451
 ParamHistFunc.cxx:452
 ParamHistFunc.cxx:453
 ParamHistFunc.cxx:454
 ParamHistFunc.cxx:455
 ParamHistFunc.cxx:456
 ParamHistFunc.cxx:457
 ParamHistFunc.cxx:458
 ParamHistFunc.cxx:459
 ParamHistFunc.cxx:460
 ParamHistFunc.cxx:461
 ParamHistFunc.cxx:462
 ParamHistFunc.cxx:463
 ParamHistFunc.cxx:464
 ParamHistFunc.cxx:465
 ParamHistFunc.cxx:466
 ParamHistFunc.cxx:467
 ParamHistFunc.cxx:468
 ParamHistFunc.cxx:469
 ParamHistFunc.cxx:470
 ParamHistFunc.cxx:471
 ParamHistFunc.cxx:472
 ParamHistFunc.cxx:473
 ParamHistFunc.cxx:474
 ParamHistFunc.cxx:475
 ParamHistFunc.cxx:476
 ParamHistFunc.cxx:477
 ParamHistFunc.cxx:478
 ParamHistFunc.cxx:479
 ParamHistFunc.cxx:480
 ParamHistFunc.cxx:481
 ParamHistFunc.cxx:482
 ParamHistFunc.cxx:483
 ParamHistFunc.cxx:484
 ParamHistFunc.cxx:485
 ParamHistFunc.cxx:486
 ParamHistFunc.cxx:487
 ParamHistFunc.cxx:488
 ParamHistFunc.cxx:489
 ParamHistFunc.cxx:490
 ParamHistFunc.cxx:491
 ParamHistFunc.cxx:492
 ParamHistFunc.cxx:493
 ParamHistFunc.cxx:494
 ParamHistFunc.cxx:495
 ParamHistFunc.cxx:496
 ParamHistFunc.cxx:497
 ParamHistFunc.cxx:498
 ParamHistFunc.cxx:499
 ParamHistFunc.cxx:500
 ParamHistFunc.cxx:501
 ParamHistFunc.cxx:502
 ParamHistFunc.cxx:503
 ParamHistFunc.cxx:504
 ParamHistFunc.cxx:505
 ParamHistFunc.cxx:506
 ParamHistFunc.cxx:507
 ParamHistFunc.cxx:508
 ParamHistFunc.cxx:509
 ParamHistFunc.cxx:510
 ParamHistFunc.cxx:511
 ParamHistFunc.cxx:512
 ParamHistFunc.cxx:513
 ParamHistFunc.cxx:514
 ParamHistFunc.cxx:515
 ParamHistFunc.cxx:516
 ParamHistFunc.cxx:517
 ParamHistFunc.cxx:518
 ParamHistFunc.cxx:519
 ParamHistFunc.cxx:520
 ParamHistFunc.cxx:521
 ParamHistFunc.cxx:522
 ParamHistFunc.cxx:523
 ParamHistFunc.cxx:524
 ParamHistFunc.cxx:525
 ParamHistFunc.cxx:526
 ParamHistFunc.cxx:527
 ParamHistFunc.cxx:528
 ParamHistFunc.cxx:529
 ParamHistFunc.cxx:530
 ParamHistFunc.cxx:531
 ParamHistFunc.cxx:532
 ParamHistFunc.cxx:533
 ParamHistFunc.cxx:534
 ParamHistFunc.cxx:535
 ParamHistFunc.cxx:536
 ParamHistFunc.cxx:537
 ParamHistFunc.cxx:538
 ParamHistFunc.cxx:539
 ParamHistFunc.cxx:540
 ParamHistFunc.cxx:541
 ParamHistFunc.cxx:542
 ParamHistFunc.cxx:543
 ParamHistFunc.cxx:544
 ParamHistFunc.cxx:545
 ParamHistFunc.cxx:546
 ParamHistFunc.cxx:547
 ParamHistFunc.cxx:548
 ParamHistFunc.cxx:549
 ParamHistFunc.cxx:550
 ParamHistFunc.cxx:551
 ParamHistFunc.cxx:552
 ParamHistFunc.cxx:553
 ParamHistFunc.cxx:554
 ParamHistFunc.cxx:555
 ParamHistFunc.cxx:556
 ParamHistFunc.cxx:557
 ParamHistFunc.cxx:558
 ParamHistFunc.cxx:559
 ParamHistFunc.cxx:560
 ParamHistFunc.cxx:561
 ParamHistFunc.cxx:562
 ParamHistFunc.cxx:563
 ParamHistFunc.cxx:564
 ParamHistFunc.cxx:565
 ParamHistFunc.cxx:566
 ParamHistFunc.cxx:567
 ParamHistFunc.cxx:568
 ParamHistFunc.cxx:569
 ParamHistFunc.cxx:570
 ParamHistFunc.cxx:571
 ParamHistFunc.cxx:572
 ParamHistFunc.cxx:573
 ParamHistFunc.cxx:574
 ParamHistFunc.cxx:575
 ParamHistFunc.cxx:576
 ParamHistFunc.cxx:577
 ParamHistFunc.cxx:578
 ParamHistFunc.cxx:579
 ParamHistFunc.cxx:580
 ParamHistFunc.cxx:581
 ParamHistFunc.cxx:582
 ParamHistFunc.cxx:583
 ParamHistFunc.cxx:584
 ParamHistFunc.cxx:585
 ParamHistFunc.cxx:586
 ParamHistFunc.cxx:587
 ParamHistFunc.cxx:588
 ParamHistFunc.cxx:589
 ParamHistFunc.cxx:590
 ParamHistFunc.cxx:591
 ParamHistFunc.cxx:592
 ParamHistFunc.cxx:593
 ParamHistFunc.cxx:594
 ParamHistFunc.cxx:595
 ParamHistFunc.cxx:596
 ParamHistFunc.cxx:597
 ParamHistFunc.cxx:598
 ParamHistFunc.cxx:599
 ParamHistFunc.cxx:600
 ParamHistFunc.cxx:601
 ParamHistFunc.cxx:602
 ParamHistFunc.cxx:603
 ParamHistFunc.cxx:604
 ParamHistFunc.cxx:605
 ParamHistFunc.cxx:606
 ParamHistFunc.cxx:607
 ParamHistFunc.cxx:608
 ParamHistFunc.cxx:609
 ParamHistFunc.cxx:610
 ParamHistFunc.cxx:611
 ParamHistFunc.cxx:612
 ParamHistFunc.cxx:613
 ParamHistFunc.cxx:614
 ParamHistFunc.cxx:615
 ParamHistFunc.cxx:616
 ParamHistFunc.cxx:617
 ParamHistFunc.cxx:618
 ParamHistFunc.cxx:619
 ParamHistFunc.cxx:620
 ParamHistFunc.cxx:621
 ParamHistFunc.cxx:622
 ParamHistFunc.cxx:623
 ParamHistFunc.cxx:624
 ParamHistFunc.cxx:625
 ParamHistFunc.cxx:626
 ParamHistFunc.cxx:627
 ParamHistFunc.cxx:628
 ParamHistFunc.cxx:629
 ParamHistFunc.cxx:630
 ParamHistFunc.cxx:631
 ParamHistFunc.cxx:632
 ParamHistFunc.cxx:633
 ParamHistFunc.cxx:634
 ParamHistFunc.cxx:635
 ParamHistFunc.cxx:636
 ParamHistFunc.cxx:637
 ParamHistFunc.cxx:638
 ParamHistFunc.cxx:639
 ParamHistFunc.cxx:640
 ParamHistFunc.cxx:641
 ParamHistFunc.cxx:642
 ParamHistFunc.cxx:643
 ParamHistFunc.cxx:644
 ParamHistFunc.cxx:645
 ParamHistFunc.cxx:646
 ParamHistFunc.cxx:647
 ParamHistFunc.cxx:648
 ParamHistFunc.cxx:649
 ParamHistFunc.cxx:650
 ParamHistFunc.cxx:651
 ParamHistFunc.cxx:652
 ParamHistFunc.cxx:653
 ParamHistFunc.cxx:654
 ParamHistFunc.cxx:655
 ParamHistFunc.cxx:656
 ParamHistFunc.cxx:657
 ParamHistFunc.cxx:658
 ParamHistFunc.cxx:659
 ParamHistFunc.cxx:660
 ParamHistFunc.cxx:661
 ParamHistFunc.cxx:662
 ParamHistFunc.cxx:663
 ParamHistFunc.cxx:664
 ParamHistFunc.cxx:665
 ParamHistFunc.cxx:666
 ParamHistFunc.cxx:667
 ParamHistFunc.cxx:668
 ParamHistFunc.cxx:669
 ParamHistFunc.cxx:670
 ParamHistFunc.cxx:671
 ParamHistFunc.cxx:672
 ParamHistFunc.cxx:673
 ParamHistFunc.cxx:674
 ParamHistFunc.cxx:675
 ParamHistFunc.cxx:676
 ParamHistFunc.cxx:677
 ParamHistFunc.cxx:678
 ParamHistFunc.cxx:679
 ParamHistFunc.cxx:680
 ParamHistFunc.cxx:681
 ParamHistFunc.cxx:682
 ParamHistFunc.cxx:683
 ParamHistFunc.cxx:684
 ParamHistFunc.cxx:685
 ParamHistFunc.cxx:686
 ParamHistFunc.cxx:687
 ParamHistFunc.cxx:688
 ParamHistFunc.cxx:689
 ParamHistFunc.cxx:690
 ParamHistFunc.cxx:691
 ParamHistFunc.cxx:692
 ParamHistFunc.cxx:693
 ParamHistFunc.cxx:694
 ParamHistFunc.cxx:695
 ParamHistFunc.cxx:696
 ParamHistFunc.cxx:697
 ParamHistFunc.cxx:698
 ParamHistFunc.cxx:699
 ParamHistFunc.cxx:700
 ParamHistFunc.cxx:701
 ParamHistFunc.cxx:702
 ParamHistFunc.cxx:703
 ParamHistFunc.cxx:704
 ParamHistFunc.cxx:705
 ParamHistFunc.cxx:706
 ParamHistFunc.cxx:707
 ParamHistFunc.cxx:708
 ParamHistFunc.cxx:709
 ParamHistFunc.cxx:710
 ParamHistFunc.cxx:711
 ParamHistFunc.cxx:712
 ParamHistFunc.cxx:713
 ParamHistFunc.cxx:714
 ParamHistFunc.cxx:715
 ParamHistFunc.cxx:716
 ParamHistFunc.cxx:717
 ParamHistFunc.cxx:718
 ParamHistFunc.cxx:719
 ParamHistFunc.cxx:720
 ParamHistFunc.cxx:721
 ParamHistFunc.cxx:722
 ParamHistFunc.cxx:723
 ParamHistFunc.cxx:724
 ParamHistFunc.cxx:725
 ParamHistFunc.cxx:726
 ParamHistFunc.cxx:727
 ParamHistFunc.cxx:728
 ParamHistFunc.cxx:729
 ParamHistFunc.cxx:730
 ParamHistFunc.cxx:731
 ParamHistFunc.cxx:732
 ParamHistFunc.cxx:733
 ParamHistFunc.cxx:734
 ParamHistFunc.cxx:735
 ParamHistFunc.cxx:736
 ParamHistFunc.cxx:737
 ParamHistFunc.cxx:738
 ParamHistFunc.cxx:739
 ParamHistFunc.cxx:740
 ParamHistFunc.cxx:741
 ParamHistFunc.cxx:742
 ParamHistFunc.cxx:743
 ParamHistFunc.cxx:744
 ParamHistFunc.cxx:745
 ParamHistFunc.cxx:746
 ParamHistFunc.cxx:747
 ParamHistFunc.cxx:748
 ParamHistFunc.cxx:749
 ParamHistFunc.cxx:750
 ParamHistFunc.cxx:751
 ParamHistFunc.cxx:752
 ParamHistFunc.cxx:753
 ParamHistFunc.cxx:754
 ParamHistFunc.cxx:755
 ParamHistFunc.cxx:756
 ParamHistFunc.cxx:757
 ParamHistFunc.cxx:758
 ParamHistFunc.cxx:759
 ParamHistFunc.cxx:760
 ParamHistFunc.cxx:761
 ParamHistFunc.cxx:762
 ParamHistFunc.cxx:763
 ParamHistFunc.cxx:764
 ParamHistFunc.cxx:765
 ParamHistFunc.cxx:766
 ParamHistFunc.cxx:767
 ParamHistFunc.cxx:768
 ParamHistFunc.cxx:769
 ParamHistFunc.cxx:770
 ParamHistFunc.cxx:771
 ParamHistFunc.cxx:772
 ParamHistFunc.cxx:773
 ParamHistFunc.cxx:774
 ParamHistFunc.cxx:775
 ParamHistFunc.cxx:776
 ParamHistFunc.cxx:777
 ParamHistFunc.cxx:778
 ParamHistFunc.cxx:779
 ParamHistFunc.cxx:780
 ParamHistFunc.cxx:781
 ParamHistFunc.cxx:782
 ParamHistFunc.cxx:783
 ParamHistFunc.cxx:784
 ParamHistFunc.cxx:785
 ParamHistFunc.cxx:786
 ParamHistFunc.cxx:787
 ParamHistFunc.cxx:788
 ParamHistFunc.cxx:789
 ParamHistFunc.cxx:790
 ParamHistFunc.cxx:791
 ParamHistFunc.cxx:792
 ParamHistFunc.cxx:793
 ParamHistFunc.cxx:794
 ParamHistFunc.cxx:795
 ParamHistFunc.cxx:796
 ParamHistFunc.cxx:797
 ParamHistFunc.cxx:798
 ParamHistFunc.cxx:799
 ParamHistFunc.cxx:800
 ParamHistFunc.cxx:801
 ParamHistFunc.cxx:802
 ParamHistFunc.cxx:803
 ParamHistFunc.cxx:804
 ParamHistFunc.cxx:805
 ParamHistFunc.cxx:806
 ParamHistFunc.cxx:807
 ParamHistFunc.cxx:808
 ParamHistFunc.cxx:809
 ParamHistFunc.cxx:810
 ParamHistFunc.cxx:811
 ParamHistFunc.cxx:812
 ParamHistFunc.cxx:813
 ParamHistFunc.cxx:814
 ParamHistFunc.cxx:815
 ParamHistFunc.cxx:816
 ParamHistFunc.cxx:817
 ParamHistFunc.cxx:818
 ParamHistFunc.cxx:819
 ParamHistFunc.cxx:820
 ParamHistFunc.cxx:821
 ParamHistFunc.cxx:822
 ParamHistFunc.cxx:823
 ParamHistFunc.cxx:824
 ParamHistFunc.cxx:825
 ParamHistFunc.cxx:826
 ParamHistFunc.cxx:827
 ParamHistFunc.cxx:828
 ParamHistFunc.cxx:829
 ParamHistFunc.cxx:830
 ParamHistFunc.cxx:831
 ParamHistFunc.cxx:832
 ParamHistFunc.cxx:833
 ParamHistFunc.cxx:834