#include <iomanip>
#include <sstream>

#include "TFile.h"
#include "TRegexp.h"
#include "TCanvas.h"
#include "TLegend.h"
#include "TMath.h"

#include "RooRealSumPdf.h"
#include "RooProduct.h"
#include "RooMsgService.h"
#include "RooCategory.h"
#include "RooSimultaneous.h"
#include "RooWorkspace.h"

#include "RooStats/HistFactory/HistFactoryNavigation.h"
#include "RooStats/HistFactory/HistFactoryException.h"


ClassImp(RooStats::HistFactory::HistFactoryNavigation);


namespace RooStats {
  namespace HistFactory {


    // CONSTRUCTOR
    HistFactoryNavigation::HistFactoryNavigation(ModelConfig* mc) 
      : _minBinToPrint(-1), _maxBinToPrint(-1), 
	_label_print_width(20), _bin_print_width(12) {

      if( !mc ) {
	std::cout << "Error: The supplied ModelConfig is NULL " << std::endl;
	throw hf_exc();
      }

      // Save the model pointer
      RooAbsPdf* pdf_in_mc = mc->GetPdf();
      if( !pdf_in_mc ) {
	std::cout << "Error: The pdf found in the ModelConfig: " << mc->GetName()
		  << " is NULL" << std::endl;
	throw hf_exc();
      }

      // Set the PDF member
      fModel = mc->GetPdf();

      // Get the observables
      RooArgSet* observables_in_mc = const_cast<RooArgSet*>(mc->GetObservables());
      if( !observables_in_mc ) {
	std::cout << "Error: Observable set in the ModelConfig: " << mc->GetName()
		  << " is NULL" << std::endl;
	throw hf_exc();
      }
      if( observables_in_mc->getSize() == 0 ) {
	std::cout << "Error: Observable list: " << observables_in_mc->GetName()
		  << " found in ModelConfig: " << mc->GetName()
		  << " has no entries." << std::endl;
	throw hf_exc();
      }

      // Set the observables member
      fObservables = observables_in_mc;
      
      // Initialize the rest of the members
      _GetNodes(fModel, fObservables);

    }


    // CONSTRUCTOR
    HistFactoryNavigation::HistFactoryNavigation(const std::string& FileName,
						 const std::string& WorkspaceName,
						 const std::string& ModelConfigName) :
      _minBinToPrint(-1), _maxBinToPrint(-1), 
      _label_print_width(20), _bin_print_width(12) {
      
      // Open the File
      TFile* file = new TFile(FileName.c_str());
      if( !file ) {
	std::cout << "Error: Failed to open file: " << FileName << std::endl;
	throw hf_exc();
      }

      // Get the workspace
      RooWorkspace* wspace = (RooWorkspace*) file->Get(WorkspaceName.c_str());
      if( !wspace ) {
	std::cout << "Error: Failed to get workspace: " << WorkspaceName
		  << " from file: " << FileName << std::endl;
	throw hf_exc();
      }

      // Get the ModelConfig
      ModelConfig* mc = (ModelConfig*) wspace->obj(ModelConfigName.c_str());
      if( !mc ) {
	std::cout << "Error: Failed to find ModelConfig: " << ModelConfigName
		  << " from workspace: " << WorkspaceName
		  << " in file: " << FileName << std::endl;
	throw hf_exc();
      }

      // Save the model pointer
      RooAbsPdf* pdf_in_mc = mc->GetPdf();
      if( !pdf_in_mc ) {
	std::cout << "Error: The pdf found in the ModelConfig: " << ModelConfigName
		  << " is NULL" << std::endl;
	throw hf_exc();
      }

      // Set the PDF member
      fModel = pdf_in_mc;

      // Get the observables
      RooArgSet* observables_in_mc = const_cast<RooArgSet*>(mc->GetObservables());
      if( !observables_in_mc ) {
	std::cout << "Error: Observable set in the ModelConfig: " << ModelConfigName
		  << " is NULL" << std::endl;
	throw hf_exc();
      }
      if( observables_in_mc->getSize() == 0 ) {
	std::cout << "Error: Observable list: " << observables_in_mc->GetName()
		  << " found in ModelConfig: " << ModelConfigName
		  << " in file: " << FileName
		  << " has no entries." << std::endl;
	throw hf_exc();
      }

      // Set the observables member
      fObservables = observables_in_mc;
      
      // Initialize the rest of the members
      _GetNodes(fModel, fObservables);

    }


    // CONSTRUCTOR
    HistFactoryNavigation::HistFactoryNavigation(RooAbsPdf* model, RooArgSet* observables) :
      _minBinToPrint(-1), _maxBinToPrint(-1), 
      _label_print_width(20), _bin_print_width(12) {

      // Save the model pointer
      if( !model ) {
	std::cout << "Error: The supplied pdf is NULL" << std::endl;
	throw hf_exc();
      }

      // Set the PDF member
      fModel = model;
      fObservables = observables; 

      // Get the observables
      if( !observables ) {
	std::cout << "Error: Supplied Observable set is NULL" << std::endl;
	throw hf_exc();
      }
      if( observables->getSize() == 0 ) {
	std::cout << "Error: Observable list: " << observables->GetName()
		  << " has no entries." << std::endl;
	throw hf_exc();
      }

      // Initialize the rest of the members
      _GetNodes(fModel, fObservables);

    }


    void HistFactoryNavigation::PrintMultiDimHist(TH1* hist, int bin_print_width) {

      // This is how ROOT makes us loop over histograms :(
      int current_bin = 0;
      int num_bins = hist->GetNbinsX()*hist->GetNbinsY()*hist->GetNbinsZ();
      for(int i = 0; i < num_bins; ++i) {
	// Avoid the overflow/underflow
	current_bin++;
	while( hist->IsBinUnderflow(current_bin) ||
	       hist->IsBinOverflow(current_bin) ) {
	  current_bin++;
	}
	// Check that we should print this bin
	if( _minBinToPrint != -1 && i < _minBinToPrint) continue;
	if( _maxBinToPrint != -1 && i > _maxBinToPrint) break;
	std::cout << std::setw(bin_print_width) << hist->GetBinContent(current_bin);
      }
      std::cout << std::endl;

    }



    RooAbsPdf* HistFactoryNavigation::GetChannelPdf(const std::string& channel) {

      std::map< std::string, RooAbsPdf* >::iterator itr;
      itr = fChannelPdfMap.find(channel);
      
      if( itr == fChannelPdfMap.end() ) {
	std::cout << "Warning: Could not find channel: " << channel
		  << " in pdf: " << fModel->GetName() << std::endl;
	return NULL;
      }
      
      RooAbsPdf* pdf = itr->second;
      if( pdf == NULL ) {
	std::cout << "Warning: Pdf associated with channel: " << channel
		  << " is NULL" << std::endl;
	return NULL;
      }

      return pdf;

    }

    void HistFactoryNavigation::PrintState(const std::string& channel) {

      //int label_print_width = 20;
      //int bin_print_width = 12;
      std::cout << std::endl << channel << ":" << std::endl;

      // Get the map of Samples for this channel
      std::map< std::string, RooAbsReal*> SampleFunctionMap = GetSampleFunctionMap(channel);      

      // Set the size of the print width if necessary
      /*
      for( std::map< std::string, RooAbsReal*>::iterator itr = SampleFunctionMap.begin(); 
	   itr != SampleFunctionMap.end(); ++itr) {
	std::string sample_name = itr->first;
	label_print_width = TMath::Max(label_print_width, (int)sample_name.size()+2);
      }
      */

      // Loop over the SampleFunctionMap and print the individual histograms
      // to get the total histogram for the channel
      int num_bins = 0;
      std::map< std::string, RooAbsReal*>::iterator itr = SampleFunctionMap.begin();
      for( ; itr != SampleFunctionMap.end(); ++itr) {

	std::string sample_name = itr->first;
	std::string tmp_name = sample_name + channel + "_pretty_tmp";
	TH1* sample_hist = GetSampleHist(channel, sample_name, tmp_name);
	num_bins = sample_hist->GetNbinsX()*sample_hist->GetNbinsY()*sample_hist->GetNbinsZ();
	std::cout << std::setw(_label_print_width) << sample_name;

	// Print the content of the histogram
	PrintMultiDimHist(sample_hist, _bin_print_width);
	delete sample_hist;

      }

      // Make the line break as a set of "===============" ...
      std::string line_break;
      int high_bin = _maxBinToPrint==-1 ? num_bins : TMath::Min(_maxBinToPrint, (int)num_bins);
      int low_bin = _minBinToPrint==-1 ? 1 : _minBinToPrint;
      int break_length = (high_bin - low_bin + 1) * _bin_print_width;
      break_length += _label_print_width;
      for(int i = 0; i < break_length; ++i) {
	line_break += "=";
      }
      std::cout << line_break << std::endl;

      std::string tmp_name = channel + "_pretty_tmp";
      TH1* channel_hist = GetChannelHist(channel, tmp_name);
      std::cout << std::setw(_label_print_width) << "TOTAL:";

      // Print the Histogram
      PrintMultiDimHist(channel_hist, _bin_print_width);
      delete channel_hist;

      return;

    }


    void HistFactoryNavigation::PrintState() {
      // Loop over channels and print their states, one after another
      for(unsigned int i = 0; i < fChannelNameVec.size(); ++i) {
	PrintState(fChannelNameVec.at(i));
      }
    }

    
    void HistFactoryNavigation::SetPrintWidths(const std::string& channel) {

      // Get the map of Samples for this channel
      std::map< std::string, RooAbsReal*> SampleFunctionMap = GetSampleFunctionMap(channel);      

      // Get the max of the samples
      for( std::map< std::string, RooAbsReal*>::iterator itr = SampleFunctionMap.begin(); 
	   itr != SampleFunctionMap.end(); ++itr) {
	std::string sample_name = itr->first;
	_label_print_width = TMath::Max(_label_print_width, (int)sample_name.size()+2);
      }

      _label_print_width = TMath::Max( _label_print_width, (int)channel.size() + 7); 
    }


    void HistFactoryNavigation::PrintDataSet(RooDataSet* data, 
					     const std::string& channel_to_print) {
      
      // Print the contents of a 'HistFactory' RooDataset
      // These are stored in a somewhat odd way that makes
      // them difficult to inspect for humans.
      // They have the following layout:
      // =====================================================
      // ChannelA      ChannelB     ChannelCat   Weight
      // -----------------------------------------------------
      // bin_1_center   0           ChannelA     bin_1_height
      // bin_2_center   0           ChannelA     bin_2_height
      //      0        bin_1_center ChannelB     bin_1_height
      //      0        bin_2_center ChannelB     bin_2_height
      //                        ...etc...
      // =====================================================

      // int label_print_width = 20;
      // int bin_print_width = 12;

      // Get the Data Histogram for this channel
      for( unsigned int i_chan=0; i_chan < fChannelNameVec.size(); ++i_chan) {

	std::string channel_name = fChannelNameVec.at(i_chan);

	// If we pass a channel string, we only print that one channel
	if( channel_to_print != "" && channel_name != channel_to_print) continue;

	TH1* data_hist = GetDataHist(data, channel_name, channel_name+"_tmp");
	std::cout << std::setw(_label_print_width) << channel_name + " (data)";

	// Print the Histogram
	PrintMultiDimHist(data_hist, _bin_print_width);
	delete data_hist;
      }
    }


    void HistFactoryNavigation::PrintModelAndData(RooDataSet* data) {
      // Loop over all channels and print model
      // (including all samples) and compare
      // it to the supplied dataset

      for( unsigned int i = 0; i < fChannelNameVec.size(); ++i) {
	std::string channel = fChannelNameVec.at(i);
	SetPrintWidths(channel);
	PrintState(channel);
	PrintDataSet(data, channel);
      }
      
      std::cout << std::endl;

    }


    void HistFactoryNavigation::PrintParameters(bool IncludeConstantParams) {

      // Get the list of parameters
      RooArgSet* params = fModel->getParameters(*fObservables);
      
      std::cout << std::endl;

      // Create the title row
      std::cout << std::setw(30) << "Parameter";
      std::cout << std::setw(15) << "Value"
		<< std::setw(15) << "Error Low" 
		<< std::setw(15) << "Error High"
		<< std::endl;
      
      // Loop over the parameters and print their values, etc
      TIterator* paramItr = params->createIterator();
      RooRealVar* param = NULL;
      while( (param=(RooRealVar*)paramItr->Next()) ) {

	if( !IncludeConstantParams && param->isConstant() ) continue;

	std::cout << std::setw(30) << param->GetName();
	std::cout << std::setw(15) << param->getVal();
	if( !param->isConstant() ) {
	  std::cout << std::setw(15) << param->getErrorLo() << std::setw(15) << param->getErrorHi();
	}
	std::cout<< std::endl;
      }
      
      std::cout << std::endl;

      return;
    }

    void HistFactoryNavigation::PrintChannelParameters(const std::string& channel,
						       bool IncludeConstantParams) {

      // Get the list of parameters
      RooArgSet* params = fModel->getParameters(*fObservables);

      // Get the pdf for this channel
      RooAbsPdf* channel_pdf = GetChannelPdf(channel);

      std::cout << std::endl;

      // Create the title row
      std::cout << std::setw(30) << "Parameter";
      std::cout << std::setw(15) << "Value"
		<< std::setw(15) << "Error Low" 
		<< std::setw(15) << "Error High"
		<< std::endl;
      
      // Loop over the parameters and print their values, etc
      TIterator* paramItr = params->createIterator();
      RooRealVar* param = NULL;
      while( (param=(RooRealVar*)paramItr->Next()) ) {

	if( !IncludeConstantParams && param->isConstant() ) continue;

	if( findChild(param->GetName(), channel_pdf)==NULL ) continue;

	std::cout << std::setw(30) << param->GetName();
	std::cout << std::setw(15) << param->getVal();
	if( !param->isConstant() ) {
	  std::cout << std::setw(15) << param->getErrorLo() << std::setw(15) << param->getErrorHi();
	}
	std::cout<< std::endl;
      }
      
      std::cout << std::endl;

      return;
    }


    void HistFactoryNavigation::PrintSampleParameters(const std::string& channel,
						      const std::string& sample,
						      bool IncludeConstantParams) {

      // Get the list of parameters
      RooArgSet* params = fModel->getParameters(*fObservables);

      // Get the pdf for this channel
      RooAbsReal* sample_func = SampleFunction(channel, sample);
      
      std::cout << std::endl;

      // Create the title row
      std::cout << std::setw(30) << "Parameter";
      std::cout << std::setw(15) << "Value"
		<< std::setw(15) << "Error Low" 
		<< std::setw(15) << "Error High"
		<< std::endl;
      
      // Loop over the parameters and print their values, etc
      TIterator* paramItr = params->createIterator();
      RooRealVar* param = NULL;
      while( (param=(RooRealVar*)paramItr->Next()) ) {

	if( !IncludeConstantParams && param->isConstant() ) continue;

	if( findChild(param->GetName(), sample_func)==NULL ) continue;

	std::cout << std::setw(30) << param->GetName();
	std::cout << std::setw(15) << param->getVal();
	if( !param->isConstant() ) {
	  std::cout << std::setw(15) << param->getErrorLo() << std::setw(15) << param->getErrorHi();
	}
	std::cout<< std::endl;
      }
      
      std::cout << std::endl;

      return;
    }



    double HistFactoryNavigation::GetBinValue(int bin, const std::string& channel) {
      // Get the total bin height for the ith bin (ROOT indexing convention)
      // in channel 'channel'
      // (Could be optimized, it uses an intermediate histogram for now...)
      
      // Get the histogram, fetch the bin content, and return
      TH1* channel_hist_tmp = GetChannelHist(channel, (channel+"_tmp").c_str());
      double val = channel_hist_tmp->GetBinContent(bin);
      delete channel_hist_tmp;
      return val;
    }


    double HistFactoryNavigation::GetBinValue(int bin, const std::string& channel, const std::string& sample){  
      // Get the total bin height for the ith bin (ROOT indexing convention)
      // in channel 'channel'
      // (This will be slow if you plan on looping over it.
      //  Could be optimized, it uses an intermediate histogram for now...)

      // Get the histogram, fetch the bin content, and return
      TH1* sample_hist_tmp = GetSampleHist(channel, sample,  (channel+"_tmp").c_str());
      double val = sample_hist_tmp->GetBinContent(bin);
      delete sample_hist_tmp;
      return val;
    }


    std::map< std::string, RooAbsReal*> HistFactoryNavigation::GetSampleFunctionMap(const std::string& channel) {
      // Get a map of strings to function pointers, 
      // which each function cooresponds to a sample

      std::map< std::string, std::map< std::string, RooAbsReal*> >::iterator channel_itr;
      channel_itr = fChannelSampleFunctionMap.find(channel);
      if( channel_itr==fChannelSampleFunctionMap.end() ){
	std::cout << "Error: Channel: " << channel << " not found in Navigation" << std::endl;
	throw hf_exc();
      }

      return channel_itr->second;
    }


    RooAbsReal* HistFactoryNavigation::SampleFunction(const std::string& channel, const std::string& sample){
      // Return the function object pointer cooresponding
      // to a particular sample in a particular channel

      std::map< std::string, std::map< std::string, RooAbsReal*> >::iterator channel_itr;
      channel_itr = fChannelSampleFunctionMap.find(channel);
      if( channel_itr==fChannelSampleFunctionMap.end() ){
	std::cout << "Error: Channel: " << channel << " not found in Navigation" << std::endl;
	throw hf_exc();
      }

      std::map< std::string, RooAbsReal*>& SampleMap = channel_itr->second;
      std::map< std::string, RooAbsReal*>::iterator sample_itr;
      sample_itr = SampleMap.find(sample);
      if( sample_itr==SampleMap.end() ){
	std::cout << "Error: Sample: " << sample << " not found in Navigation" << std::endl;
	throw hf_exc();
      }
      
      return sample_itr->second;

    }


    RooArgSet* HistFactoryNavigation::GetObservableSet(const std::string& channel) {
      // Get the observables for a particular channel

      std::map< std::string, RooArgSet*>::iterator channel_itr;
      channel_itr = fChannelObservMap.find(channel);
      if( channel_itr==fChannelObservMap.end() ){
	std::cout << "Error: Channel: " << channel << " not found in Navigation" << std::endl;
	throw hf_exc();
      }
      
      return channel_itr->second;

    }


    TH1* HistFactoryNavigation::GetSampleHist(const std::string& channel, const std::string& sample,
					      const std::string& hist_name) {
      // Get a histogram of the expected values for
      // a particular sample in a particular channel
      // Give a name, or a default one will be used

      RooArgList observable_list( *GetObservableSet(channel) );
      
      std::string name = hist_name;
      if(hist_name=="") name = channel + "_" + sample + "_hist";

      RooAbsReal* sample_function = SampleFunction(channel, sample);

      return MakeHistFromRooFunction( sample_function, observable_list, name );
				     
    }


    TH1* HistFactoryNavigation::GetChannelHist(const std::string& channel, const std::string& hist_name) {
      // Get a histogram of the total expected value
      // per bin for this channel
      // Give a name, or a default one will be used

      RooArgList observable_list( *GetObservableSet(channel) );
      
      std::map< std::string, RooAbsReal*> SampleFunctionMap = GetSampleFunctionMap(channel);

      // Okay, 'loop' once 
      TH1* total_hist=NULL;
      std::map< std::string, RooAbsReal*>::iterator itr = SampleFunctionMap.begin();
      for( ; itr != SampleFunctionMap.end(); ++itr) {
	std::string sample_name = itr->first;
	std::string tmp_hist_name = sample_name + "_hist_tmp";
	RooAbsReal* sample_function = itr->second;
	TH1* sample_hist = MakeHistFromRooFunction(sample_function, observable_list, 
						   tmp_hist_name);
	total_hist = (TH1*) sample_hist->Clone("TotalHist");
	delete sample_hist;
	break;
      }
      total_hist->Reset();

      // Loop over the SampleFunctionMap and add up all the histograms
      // to get the total histogram for the channel
      itr = SampleFunctionMap.begin();
      for( ; itr != SampleFunctionMap.end(); ++itr) {
	std::string sample_name = itr->first;
	std::string tmp_hist_name = sample_name + "_hist_tmp";
	RooAbsReal* sample_function = itr->second;
	TH1* sample_hist = MakeHistFromRooFunction(sample_function, observable_list, 
						   tmp_hist_name);
	total_hist->Add(sample_hist);
	delete sample_hist;
      }

      if(hist_name=="") total_hist->SetName(hist_name.c_str());
      else total_hist->SetName( (channel + "_hist").c_str() ); 

      return total_hist;

    }


    std::vector< std::string > HistFactoryNavigation::GetChannelSampleList(const std::string& channel) {
      
      std::vector<std::string> sample_list;

      std::map< std::string, RooAbsReal*> sample_map = fChannelSampleFunctionMap[channel];
      std::map< std::string, RooAbsReal*>::iterator itr = sample_map.begin();;
      for( ; itr != sample_map.end(); ++itr) {
	sample_list.push_back( itr->first );
      }

      return sample_list;

    }

    
    THStack* HistFactoryNavigation::GetChannelStack(const std::string& channel, 
						    const std::string& name) {
    
      THStack* stack = new THStack(name.c_str(), "");

      std::vector< std::string > samples = GetChannelSampleList(channel);

      // Add the histograms
      for( unsigned int i=0; i < samples.size(); ++i) {
	std::string sample_name = samples.at(i);
	TH1* hist = GetSampleHist(channel, sample_name, sample_name+"_tmp");
	hist->SetLineColor(2+i);
	hist->SetFillColor(2+i);
	stack->Add(hist);
      }

      return stack;

    }

  
    TH1* HistFactoryNavigation::GetDataHist(RooDataSet* data, const std::string& channel, 
					    const std::string& name) {
					    
      // TO DO:
      // MAINTAIN THE ACTUAL RANGE, USING THE OBSERVABLES
      // MAKE IT WORK FOR MULTI-DIMENSIONAL
      // 

      // If the dataset covers multiple categories,
      // Split the dataset based on the categories
      if(strcmp(fModel->ClassName(),"RooSimultaneous")==0){

	// If so, get a list of the component pdf's:
	RooSimultaneous* simPdf = (RooSimultaneous*) fModel;
	RooCategory* channelCat = (RooCategory*) (&simPdf->indexCat());

	TList* dataset_list = data->split(*channelCat);

	data = dynamic_cast<RooDataSet*>( dataset_list->FindObject(channel.c_str()) );
	
      }

      RooArgList vars( *GetObservableSet(channel) );

      int dim = vars.getSize();

      TH1* hist = NULL;

      if( dim==1 ) {
	RooRealVar* varX = (RooRealVar*) vars.at(0);
	hist = data->createHistogram( name.c_str(),*varX, RooFit::Binning(varX->getBinning()) );
      }
      else if( dim==2 ) {
	RooRealVar* varX = (RooRealVar*) vars.at(0);
	RooRealVar* varY = (RooRealVar*) vars.at(1);
	hist = data->createHistogram( name.c_str(),*varX, RooFit::Binning(varX->getBinning()),
				      RooFit::YVar(*varY, RooFit::Binning(varY->getBinning())) );
      }
      else if( dim==3 ) {
	RooRealVar* varX = (RooRealVar*) vars.at(0);
	RooRealVar* varY = (RooRealVar*) vars.at(1);
	RooRealVar* varZ = (RooRealVar*) vars.at(2);
	hist = data->createHistogram( name.c_str(),*varX, RooFit::Binning(varX->getBinning()), 
				      RooFit::YVar(*varY, RooFit::Binning(varY->getBinning())),
				      RooFit::YVar(*varZ, RooFit::Binning(varZ->getBinning())) );
      }
      else {
	std::cout << "Error: To Create Histogram from RooDataSet, Dimension must be 1, 2, or 3" << std::endl;
	std::cout << "Observables: " << std::endl;
	vars.Print("V");
	throw hf_exc();
      }

      return hist;

    }


    void HistFactoryNavigation::DrawChannel(const std::string& channel, RooDataSet* data) {
    
      // Get the stack
      THStack* stack = GetChannelStack(channel, channel+"_stack_tmp");

      stack->Draw();
      
      if( data!=NULL ) {
	TH1* data_hist = GetDataHist(data, channel, channel+"_data_tmp");
	data_hist->Draw("SAME");
      }

    }
  


    RooArgSet HistFactoryNavigation::_GetAllProducts(RooProduct* node) {

      // An internal method to recursively get all products,
      // including if a RooProduct is a Product of RooProducts
      // etc

      RooArgSet allTerms;

      // Get All Subnodes of this product
      RooArgSet productComponents = node->components();
      
      // Loop over the subnodes and add
      TIterator* itr = productComponents.createIterator();
      RooAbsArg* arg = NULL;
      while( (arg=(RooAbsArg*)itr->Next()) ) {
	std::string ClassName = arg->ClassName();
	if( ClassName == "RooProduct" ) {
	  RooProduct* prod = dynamic_cast<RooProduct*>(arg);
	  allTerms.add( _GetAllProducts(prod) );
	}
	else {
	  allTerms.add(*arg);
	}
      }
      delete itr;

      return allTerms;

    }




    void HistFactoryNavigation::_GetNodes(RooAbsPdf* modelPdf, const RooArgSet* observables) {

      // Get the pdf from the ModelConfig
      //RooAbsPdf* modelPdf = mc->GetPdf();
      //RooArgSet* observables = mc->GetObservables();

      // Create vectors to hold the channel pdf's
      // as well as the set of observables for each channel
      //std::map< std::string, RooAbsPdf* >  channelPdfMap;
      //std::map< std::string, RooArgSet* >  channelObservMap;
      
      // Check if it is a simultaneous pdf or not
      // (if it's an individual channel, it won't be, if it's
      // combined, it's simultaneous)
      // Fill the channel vectors based on the structure
      // (Obviously, if it's not simultaneous, there will be
      // only one entry in the vector for the single channel)
      if(strcmp(modelPdf->ClassName(),"RooSimultaneous")==0){

	// If so, get a list of the component pdf's:
	RooSimultaneous* simPdf = (RooSimultaneous*) modelPdf;
	RooCategory* channelCat = (RooCategory*) (&simPdf->indexCat());

	// Iterate over the categories and get the
	// pdf and observables for each category
	TIterator* iter = channelCat->typeIterator() ;
	RooCatType* tt = NULL;
        while((tt=(RooCatType*) iter->Next())) {
	  std::string ChannelName = tt->GetName();
	  fChannelNameVec.push_back( ChannelName );
	  RooAbsPdf* pdftmp = simPdf->getPdf(ChannelName.c_str()) ;
	  RooArgSet* obstmp = pdftmp->getObservables(*observables) ;
	  fChannelPdfMap[ChannelName] = pdftmp;
	  fChannelObservMap[ChannelName] =  obstmp;
	}

      } else { 
	RooArgSet* obstmp = modelPdf->getObservables(*observables) ;	
	// The channel name is model_CHANNEL
	std::string ChannelName = modelPdf->GetName();
	ChannelName = ChannelName.replace(0, 6, "");
	fChannelNameVec.push_back(ChannelName);
	fChannelPdfMap[ChannelName] = modelPdf;
	fChannelObservMap[ChannelName] = obstmp;

      }

      // Okay, now we have maps of the pdfs 
      // and the observable list per channel
      // We then loop over the channel pdfs:
      // and find their RooRealSumPdfs
      // std::map< std::string, RooRealSumPdf* > channelSumNodeMap;

      for( unsigned int i = 0; i < fChannelNameVec.size(); ++i ) {

	std::string ChannelName = fChannelNameVec.at(i);
	RooAbsPdf* pdf = fChannelPdfMap[ChannelName];
	//std::string Name = fChannelNameMap[ChannelName];

	// Loop over the pdf's components and find
	// the (one) that is a RooRealSumPdf
	// Based on the mode, we assume that node is 
	// the "unconstrained" pdf node for that channel
	RooArgSet* components = pdf->getComponents();
	TIterator* argItr = components->createIterator();
	RooAbsArg* arg = NULL;
	while( (arg=(RooAbsArg*)argItr->Next()) ) {
	  std::string ClassName = arg->ClassName();
	  if( ClassName == "RooRealSumPdf" ) {
	    fChannelSumNodeMap[ChannelName] = (RooRealSumPdf*) arg;
	    break;
	  }
	}
      }
      
      // Okay, now we have all necessary
      // nodes filled for each channel.
      for( unsigned int i = 0; i < fChannelNameVec.size(); ++i ) {

	std::string ChannelName = fChannelNameVec.at(i);
	RooRealSumPdf* sumPdf = dynamic_cast<RooRealSumPdf*>(fChannelSumNodeMap[ChannelName]);
	
	// We now take the RooRealSumPdf and loop over
	// its component functions.  The RooRealSumPdf turns
	// a list of functions (expected events or bin heights
	// per sample) and turns it into a pdf.
	// Therefore, we loop over it to find the expected
	// height for the various samples

	// First, create a map to store the function nodes
	// for each sample in this channel
	std::map< std::string, RooAbsReal*> sampleFunctionMap;

	// Loop over the sample nodes in this
	// channel's RooRealSumPdf
	RooArgList nodes = sumPdf->funcList();
	TIterator* sampleItr = nodes.createIterator();
	RooAbsArg* sample;
	while( (sample=(RooAbsArg*)sampleItr->Next()) ) {

	  // Cast this node as a function
	  RooAbsReal* func = (RooAbsReal*) sample;

	  // Do a bit of work to get the name of each sample
	  std::string SampleName = sample->GetName();
	  if( SampleName.find("L_x_") != std::string::npos ) {
	    size_t index = SampleName.find("L_x_");
	    SampleName.replace( index, 4, "" );
	  }
	  if( SampleName.find(ChannelName.c_str()) != std::string::npos ) {
	    size_t index = SampleName.find(ChannelName.c_str());
	    SampleName = SampleName.substr(0, index-1);
	  }

	  // And simply save this node into our map
	  sampleFunctionMap[SampleName] = func;

	}

	fChannelSampleFunctionMap[ChannelName] = sampleFunctionMap;

	// Okay, now we have a list of histograms
	// representing the samples for this channel.

      }

    }


    RooAbsArg* HistFactoryNavigation::findChild(const std::string& name, RooAbsReal* parent) const {
      
      RooAbsArg* term=NULL;

      // Check if it is a "component",
      // ie a sub node:
      RooArgSet* components = parent->getComponents();
      TIterator* argItr = components->createIterator();
      RooAbsArg* arg = NULL;
      while( (arg=(RooAbsArg*)argItr->Next()) ) {
	std::string ArgName = arg->GetName();
	if( ArgName == name ) {
	  term = arg; //dynamic_cast<RooAbsReal*>(arg);
	  break;
	}
      }
      delete components;
      delete argItr;

      if( term != NULL ) return term;

      // If that failed, 
      // Check if it's a Parameter
      // (ie a RooRealVar)
      RooArgSet* args = new RooArgSet();
      RooArgSet* paramSet = parent->getParameters(args);
      TIterator* paramItr = paramSet->createIterator();
      RooAbsArg* param = NULL;
      while( (param=(RooAbsArg*)paramItr->Next()) ) {
	std::string ParamName = param->GetName();
	if( ParamName == name ) {
	  term = param; //dynamic_cast<RooAbsReal*>(arg);
	  break;
	}
      }
      delete args;
      delete paramSet;
      delete paramItr;

      /* Not sure if we want to be silent
	 But since we're returning a pointer which can be NULL,
	 I think it's the user's job to do checks on it.
	 A dereference will always cause a crash, so it won't
	 be silent for long...
	 if( term==NULL ) {
	 std::cout << "Error: Failed to find node: " << name
	 << " as a child of: " << parent->GetName()
	 << std::endl;
	 }
      */

      return term;

    }


    RooAbsReal* HistFactoryNavigation::GetConstraintTerm(const std::string& parameter) {
     
      std::string ConstraintTermName = parameter + "Constraint";

      // First, as a sanity check, let's see if the parameter
      // itself actually exists and if the model depends on it:
      RooRealVar* param = dynamic_cast<RooRealVar*>(findChild(parameter, fModel));
      if( param==NULL ) {
	std::cout << "Error: Couldn't Find parameter: " << parameter << " in model."
		  << std::endl;
	return NULL;
      }

      // The "gamma"'s use a different constraint term name
      if( parameter.find("gamma_stat_") != std::string::npos ) { 
	ConstraintTermName = parameter + "_constraint";
      }

      // Now, get the constraint itself
      RooAbsReal* term = dynamic_cast<RooAbsReal*>(findChild(ConstraintTermName, fModel));

      if( term==NULL ) {
	std::cout << "Error: Couldn't Find constraint term for parameter: " << parameter
		  << " (Looked for '" << ConstraintTermName << "')" << std::endl;
	return NULL;
      }

      return term;

    }


    double HistFactoryNavigation::GetConstraintUncertainty(const std::string& parameter) {
      
      RooAbsReal* constraintTerm = GetConstraintTerm(parameter);
      if( constraintTerm==NULL ) {
	std::cout << "Error: Cannot get uncertainty because parameter: " << parameter
		  << " has no constraint term" << std::endl;
	throw hf_exc();
      }

      // Get the type of constraint
      std::string ConstraintType = constraintTerm->IsA()->GetName();

      // Find its value
      double sigma = 0.0;

      if( ConstraintType == "" ) {
	std::cout << "Error: Constraint type is an empty string."  
		  << " This simply should not be." << std::endl;
	throw hf_exc();
      }
      else if( ConstraintType == "RooGaussian" ){
	
	// Gaussian errors are the 'sigma' in the constraint term

	// Get the name of the 'sigma' for the gaussian
	// (I don't know of a way of doing RooGaussian::GetSigma() )
	// For alpha's, the sigma points to a global RooConstVar
	// with the name "1"
	// For gamma_stat_*, the sigma is named *_sigma
	std::string sigmaName = "";
	if( parameter.find("alpha_")!=std::string::npos ) {
	  sigmaName = "1";;
	}
	else if( parameter.find("gamma_stat_")!=std::string::npos ) {
	  sigmaName = parameter + "_sigma";
	}

	// Get the sigma and its value
	RooAbsReal* sigmaVar = dynamic_cast<RooAbsReal*>(constraintTerm->findServer(sigmaName.c_str()));
	if( sigmaVar==NULL ) {
	  std::cout << "Error: Failed to find the 'sigma' node: " << sigmaName
		    << " in the RooGaussian: " << constraintTerm->GetName() << std::endl;
	  throw hf_exc();
	}
	// If we find the uncertainty:
	sigma = sigmaVar->getVal();
      }
      else if( ConstraintType == "RooPoisson" ){
	// Poisson errors are given by inverting: tau = 1 / (sigma*sigma)
	std::string tauName = "nom_" + parameter;
	RooAbsReal* tauVar = dynamic_cast<RooAbsReal*>( constraintTerm->findServer(tauName.c_str()) );
	if( tauVar==NULL ) {
	  std::cout << "Error: Failed to find the nominal 'tau' node: " << tauName
		    << " for the RooPoisson: " << constraintTerm->GetName() << std::endl;
	  throw hf_exc();
	}
	double tau_val = tauVar->getVal();
	sigma = 1.0 / TMath::Sqrt( tau_val );
      } 
      else {
	std::cout << "Error: Encountered unknown constraint type for Stat Uncertainties: " 
		  << ConstraintType << std::endl;
	throw hf_exc();
      }

      return sigma;

    }

    void HistFactoryNavigation::ReplaceNode(const std::string& ToReplace, RooAbsArg* ReplaceWith) {

      // First, check that the node to replace is actually a node:
      RooAbsArg* nodeToReplace = findChild(ToReplace, fModel);
      if( nodeToReplace==NULL ) {
	std::cout << "Error: Cannot replace node: " << ToReplace
		  << " because this node wasn't found in: " << fModel->GetName()
		  << std::endl;
	throw hf_exc();
      }

      // Now that we have the node we want to replace, we have to 
      // get its parent node
      
      // Do this by looping over the clients and replacing their servers
      // (NOTE: This happens for ALL clients across the pdf)
      TIterator* clientItr = nodeToReplace->clientIterator();
      RooAbsArg* client=NULL;
      while((client=(RooAbsArg*)clientItr->Next())) {
	
	// Check if this client is a member of our pdf
	// (We probably don't want to mess with clients
	// if they aren't...)
	if( findChild(client->GetName(), fModel)==NULL ) continue;
	
	// Now, do the replacement:
	bool valueProp=false;
	bool shapeProp=false;
	client->replaceServer( *nodeToReplace, *ReplaceWith, valueProp, shapeProp );
	std::cout << "Replaced: " << ToReplace << " with: " << ReplaceWith->GetName()
		  << " in node: " << client->GetName() << std::endl;

      }
      delete clientItr;

      return;

    }


    void HistFactoryNavigation::PrintSampleComponents(const std::string& channel, 
						      const std::string& sample) {
      
      // Get the Sample Node
      RooAbsReal* sampleNode = SampleFunction(channel, sample);

      // Get the observables for this channel
      RooArgList observable_list( *GetObservableSet(channel) );

      // Make the total histogram for this sample
      std::string total_Name = sampleNode->GetName();
      TH1* total_hist= MakeHistFromRooFunction( sampleNode, observable_list, total_Name + "_tmp");
      unsigned int num_bins = total_hist->GetNbinsX()*total_hist->GetNbinsY()*total_hist->GetNbinsZ();

      RooArgSet components;
      
      // Let's see what it is...
      int label_print_width = 30;  
      int bin_print_width = 12;
      if( strcmp(sampleNode->ClassName(),"RooProduct")==0){
	RooProduct* prod = dynamic_cast<RooProduct*>(sampleNode);
	components.add( _GetAllProducts(prod) );
      }
      else {
	components.add(*sampleNode);
      }
      
      /////// NODE SIZE
      {
	TIterator* itr = components.createIterator();
	RooAbsArg* arg = NULL;
	while( (arg=(RooAbsArg*)itr->Next()) ) {
	  RooAbsReal* component = dynamic_cast<RooAbsReal*>(arg);
	  std::string NodeName = component->GetName();
	  label_print_width = TMath::Max(label_print_width, (int)NodeName.size()+2);
	}
      }

      // Now, loop over the components and print them out:
      std::cout << std::endl;
      std::cout << "Channel: " << channel << " Sample: " << sample << std::endl;
      std::cout << std::setw(label_print_width) << "Factor";

      for(unsigned int i=0; i < num_bins; ++i) {
	if( _minBinToPrint != -1 && (int)i < _minBinToPrint) continue;
	if( _maxBinToPrint != -1 && (int)i > _maxBinToPrint) break;
	std::stringstream sstr;
	sstr << "Bin" << i;
	std::cout << std::setw(bin_print_width) << sstr.str();
      }
      std::cout << std::endl;

      TIterator* itr = components.createIterator();
      RooAbsArg* arg = NULL;
      while( (arg=(RooAbsArg*)itr->Next()) ) {
	RooAbsReal* component = dynamic_cast<RooAbsReal*>(arg);
	std::string NodeName = component->GetName();

	// Make a histogram for this node	
	// Do some horrible things to prevent some really
	// annoying messages from being printed
	RooFit::MsgLevel levelBefore = RooMsgService::instance().globalKillBelow();
	RooMsgService::instance().setGlobalKillBelow(RooFit::FATAL);
	TH1* hist=NULL;
	try {
	  hist = MakeHistFromRooFunction( component, observable_list, NodeName+"_tmp");
	} catch(...) {
	  RooMsgService::instance().setGlobalKillBelow(levelBefore);
	  throw;
	}
	RooMsgService::instance().setGlobalKillBelow(levelBefore);

	// Print the hist
	std::cout << std::setw(label_print_width) << NodeName;

	// Print the Histogram
	PrintMultiDimHist(hist, bin_print_width);
	delete hist;
      }
      /////
      std::string line_break;
      int high_bin = _maxBinToPrint==-1 ? num_bins : TMath::Min(_maxBinToPrint, (int)num_bins);
      int low_bin = _minBinToPrint==-1 ? 1 : _minBinToPrint;
      int break_length = (high_bin - low_bin + 1) * bin_print_width;
      break_length += label_print_width;
      for(int i = 0; i < break_length; ++i) {
	line_break += "=";
      }
      std::cout << line_break << std::endl;

      std::cout << std::setw(label_print_width) << "TOTAL:";
      PrintMultiDimHist(total_hist, bin_print_width);
      /*
      for(unsigned int i = 0; i < num_bins; ++i) {
	if( _minBinToPrint != -1 && (int)i < _minBinToPrint) continue;
	if( _maxBinToPrint != -1 && (int)i > _maxBinToPrint) break;
	std::cout << std::setw(bin_print_width) << total_hist->GetBinContent(i+1);
      }
      std::cout << std::endl << std::endl;
      */
      delete total_hist;
      
      return;

    }


    TH1* HistFactoryNavigation::MakeHistFromRooFunction( RooAbsReal* func, RooArgList vars, 
							 std::string name ) {

      // Turn a RooAbsReal* into a TH1* based 
      // on a template histogram.  
      // The 'vars' arg list defines the x (and y and z variables)
      // Loop over the bins of the Template,
      // find the bin centers, 
      // Scan the input Var over those bin centers,
      // and use the value of the function
      // to make the new histogram

      // Make the new histogram
      // Cone and empty the template
      //      TH1* hist = (TH1*) histTemplate.Clone( name.c_str() );

      int dim = vars.getSize();

      TH1* hist=NULL;

      if( dim==1 ) {
	RooRealVar* varX = (RooRealVar*) vars.at(0);
	hist = func->createHistogram( name.c_str(),*varX, RooFit::Binning(varX->getBinning()), RooFit::Scaling(false) );
      }
      else if( dim==2 ) {
	RooRealVar* varX = (RooRealVar*) vars.at(0);
	RooRealVar* varY = (RooRealVar*) vars.at(1);
	hist = func->createHistogram( name.c_str(),*varX, RooFit::Binning(varX->getBinning()), RooFit::Scaling(false),
				      RooFit::YVar(*varY, RooFit::Binning(varY->getBinning())) );
      }
      else if( dim==3 ) {
	RooRealVar* varX = (RooRealVar*) vars.at(0);
	RooRealVar* varY = (RooRealVar*) vars.at(1);
	RooRealVar* varZ = (RooRealVar*) vars.at(2);
	hist = func->createHistogram( name.c_str(),*varX, RooFit::Binning(varX->getBinning()), RooFit::Scaling(false),
				      RooFit::YVar(*varY, RooFit::Binning(varY->getBinning())),
				      RooFit::YVar(*varZ, RooFit::Binning(varZ->getBinning())) );
      }
      else {
	std::cout << "Error: To Create Histogram from RooAbsReal function, Dimension must be 1, 2, or 3" << std::endl;
	throw hf_exc();
      }

      return hist;
    }

    // A simple wrapper to use a ModelConfig
    void HistFactoryNavigation::_GetNodes(ModelConfig* mc) {
      RooAbsPdf* modelPdf = mc->GetPdf();
      const RooArgSet* observables = mc->GetObservables();
      _GetNodes(modelPdf, observables);
    }


    void HistFactoryNavigation::SetConstant(const std::string& regExpr, bool constant) {

      // Regex FTW
      
      TString RegexTString(regExpr);
      TRegexp theRegExpr(RegexTString);

      // Now, loop over all variables and 
      // set the constant as 

      // Get the list of parameters
      RooArgSet* params = fModel->getParameters(*fObservables);
      
      std::cout << std::endl;

      // Create the title row
      std::cout << std::setw(30) << "Parameter";
      std::cout << std::setw(15) << "Value"
		<< std::setw(15) << "Error Low" 
		<< std::setw(15) << "Error High"
		<< std::endl;
      
      // Loop over the parameters and print their values, etc
      TIterator* paramItr = params->createIterator();
      RooRealVar* param = NULL;
      while( (param=(RooRealVar*)paramItr->Next()) ) {

	std::string ParamName = param->GetName();
	TString ParamNameTString(ParamName);

	// Use the Regex to skip all parameters that don't match
	//if( theRegExpr.Index(ParamNameTString, ParamName.size()) == -1 ) continue;
	Ssiz_t dummy;
	if( theRegExpr.Index(ParamNameTString, &dummy) == -1 ) continue;
	
	param->setConstant( constant );
	std::cout << "Setting param: " << ParamName << " constant" 
		  << " (matches regex: " << regExpr << ")" << std::endl;
      }
    }

    RooRealVar* HistFactoryNavigation::var(const std::string& varName) const {
      
      RooAbsArg* arg = findChild(varName, fModel);
      if( !arg ) return NULL;

      RooRealVar* var_obj = dynamic_cast<RooRealVar*>(arg);
      return var_obj;

    }

    /*
      void HistFactoryNavigation::AddChannel(const std::string& channel, RooAbsPdf* pdf, 
      RooDataSet* data=NULL) {

      }
    */

  } // namespace HistFactory
} // namespace RooStats




 HistFactoryNavigation.cxx:1
 HistFactoryNavigation.cxx:2
 HistFactoryNavigation.cxx:3
 HistFactoryNavigation.cxx:4
 HistFactoryNavigation.cxx:5
 HistFactoryNavigation.cxx:6
 HistFactoryNavigation.cxx:7
 HistFactoryNavigation.cxx:8
 HistFactoryNavigation.cxx:9
 HistFactoryNavigation.cxx:10
 HistFactoryNavigation.cxx:11
 HistFactoryNavigation.cxx:12
 HistFactoryNavigation.cxx:13
 HistFactoryNavigation.cxx:14
 HistFactoryNavigation.cxx:15
 HistFactoryNavigation.cxx:16
 HistFactoryNavigation.cxx:17
 HistFactoryNavigation.cxx:18
 HistFactoryNavigation.cxx:19
 HistFactoryNavigation.cxx:20
 HistFactoryNavigation.cxx:21
 HistFactoryNavigation.cxx:22
 HistFactoryNavigation.cxx:23
 HistFactoryNavigation.cxx:24
 HistFactoryNavigation.cxx:25
 HistFactoryNavigation.cxx:26
 HistFactoryNavigation.cxx:27
 HistFactoryNavigation.cxx:28
 HistFactoryNavigation.cxx:29
 HistFactoryNavigation.cxx:30
 HistFactoryNavigation.cxx:31
 HistFactoryNavigation.cxx:32
 HistFactoryNavigation.cxx:33
 HistFactoryNavigation.cxx:34
 HistFactoryNavigation.cxx:35
 HistFactoryNavigation.cxx:36
 HistFactoryNavigation.cxx:37
 HistFactoryNavigation.cxx:38
 HistFactoryNavigation.cxx:39
 HistFactoryNavigation.cxx:40
 HistFactoryNavigation.cxx:41
 HistFactoryNavigation.cxx:42
 HistFactoryNavigation.cxx:43
 HistFactoryNavigation.cxx:44
 HistFactoryNavigation.cxx:45
 HistFactoryNavigation.cxx:46
 HistFactoryNavigation.cxx:47
 HistFactoryNavigation.cxx:48
 HistFactoryNavigation.cxx:49
 HistFactoryNavigation.cxx:50
 HistFactoryNavigation.cxx:51
 HistFactoryNavigation.cxx:52
 HistFactoryNavigation.cxx:53
 HistFactoryNavigation.cxx:54
 HistFactoryNavigation.cxx:55
 HistFactoryNavigation.cxx:56
 HistFactoryNavigation.cxx:57
 HistFactoryNavigation.cxx:58
 HistFactoryNavigation.cxx:59
 HistFactoryNavigation.cxx:60
 HistFactoryNavigation.cxx:61
 HistFactoryNavigation.cxx:62
 HistFactoryNavigation.cxx:63
 HistFactoryNavigation.cxx:64
 HistFactoryNavigation.cxx:65
 HistFactoryNavigation.cxx:66
 HistFactoryNavigation.cxx:67
 HistFactoryNavigation.cxx:68
 HistFactoryNavigation.cxx:69
 HistFactoryNavigation.cxx:70
 HistFactoryNavigation.cxx:71
 HistFactoryNavigation.cxx:72
 HistFactoryNavigation.cxx:73
 HistFactoryNavigation.cxx:74
 HistFactoryNavigation.cxx:75
 HistFactoryNavigation.cxx:76
 HistFactoryNavigation.cxx:77
 HistFactoryNavigation.cxx:78
 HistFactoryNavigation.cxx:79
 HistFactoryNavigation.cxx:80
 HistFactoryNavigation.cxx:81
 HistFactoryNavigation.cxx:82
 HistFactoryNavigation.cxx:83
 HistFactoryNavigation.cxx:84
 HistFactoryNavigation.cxx:85
 HistFactoryNavigation.cxx:86
 HistFactoryNavigation.cxx:87
 HistFactoryNavigation.cxx:88
 HistFactoryNavigation.cxx:89
 HistFactoryNavigation.cxx:90
 HistFactoryNavigation.cxx:91
 HistFactoryNavigation.cxx:92
 HistFactoryNavigation.cxx:93
 HistFactoryNavigation.cxx:94
 HistFactoryNavigation.cxx:95
 HistFactoryNavigation.cxx:96
 HistFactoryNavigation.cxx:97
 HistFactoryNavigation.cxx:98
 HistFactoryNavigation.cxx:99
 HistFactoryNavigation.cxx:100
 HistFactoryNavigation.cxx:101
 HistFactoryNavigation.cxx:102
 HistFactoryNavigation.cxx:103
 HistFactoryNavigation.cxx:104
 HistFactoryNavigation.cxx:105
 HistFactoryNavigation.cxx:106
 HistFactoryNavigation.cxx:107
 HistFactoryNavigation.cxx:108
 HistFactoryNavigation.cxx:109
 HistFactoryNavigation.cxx:110
 HistFactoryNavigation.cxx:111
 HistFactoryNavigation.cxx:112
 HistFactoryNavigation.cxx:113
 HistFactoryNavigation.cxx:114
 HistFactoryNavigation.cxx:115
 HistFactoryNavigation.cxx:116
 HistFactoryNavigation.cxx:117
 HistFactoryNavigation.cxx:118
 HistFactoryNavigation.cxx:119
 HistFactoryNavigation.cxx:120
 HistFactoryNavigation.cxx:121
 HistFactoryNavigation.cxx:122
 HistFactoryNavigation.cxx:123
 HistFactoryNavigation.cxx:124
 HistFactoryNavigation.cxx:125
 HistFactoryNavigation.cxx:126
 HistFactoryNavigation.cxx:127
 HistFactoryNavigation.cxx:128
 HistFactoryNavigation.cxx:129
 HistFactoryNavigation.cxx:130
 HistFactoryNavigation.cxx:131
 HistFactoryNavigation.cxx:132
 HistFactoryNavigation.cxx:133
 HistFactoryNavigation.cxx:134
 HistFactoryNavigation.cxx:135
 HistFactoryNavigation.cxx:136
 HistFactoryNavigation.cxx:137
 HistFactoryNavigation.cxx:138
 HistFactoryNavigation.cxx:139
 HistFactoryNavigation.cxx:140
 HistFactoryNavigation.cxx:141
 HistFactoryNavigation.cxx:142
 HistFactoryNavigation.cxx:143
 HistFactoryNavigation.cxx:144
 HistFactoryNavigation.cxx:145
 HistFactoryNavigation.cxx:146
 HistFactoryNavigation.cxx:147
 HistFactoryNavigation.cxx:148
 HistFactoryNavigation.cxx:149
 HistFactoryNavigation.cxx:150
 HistFactoryNavigation.cxx:151
 HistFactoryNavigation.cxx:152
 HistFactoryNavigation.cxx:153
 HistFactoryNavigation.cxx:154
 HistFactoryNavigation.cxx:155
 HistFactoryNavigation.cxx:156
 HistFactoryNavigation.cxx:157
 HistFactoryNavigation.cxx:158
 HistFactoryNavigation.cxx:159
 HistFactoryNavigation.cxx:160
 HistFactoryNavigation.cxx:161
 HistFactoryNavigation.cxx:162
 HistFactoryNavigation.cxx:163
 HistFactoryNavigation.cxx:164
 HistFactoryNavigation.cxx:165
 HistFactoryNavigation.cxx:166
 HistFactoryNavigation.cxx:167
 HistFactoryNavigation.cxx:168
 HistFactoryNavigation.cxx:169
 HistFactoryNavigation.cxx:170
 HistFactoryNavigation.cxx:171
 HistFactoryNavigation.cxx:172
 HistFactoryNavigation.cxx:173
 HistFactoryNavigation.cxx:174
 HistFactoryNavigation.cxx:175
 HistFactoryNavigation.cxx:176
 HistFactoryNavigation.cxx:177
 HistFactoryNavigation.cxx:178
 HistFactoryNavigation.cxx:179
 HistFactoryNavigation.cxx:180
 HistFactoryNavigation.cxx:181
 HistFactoryNavigation.cxx:182
 HistFactoryNavigation.cxx:183
 HistFactoryNavigation.cxx:184
 HistFactoryNavigation.cxx:185
 HistFactoryNavigation.cxx:186
 HistFactoryNavigation.cxx:187
 HistFactoryNavigation.cxx:188
 HistFactoryNavigation.cxx:189
 HistFactoryNavigation.cxx:190
 HistFactoryNavigation.cxx:191
 HistFactoryNavigation.cxx:192
 HistFactoryNavigation.cxx:193
 HistFactoryNavigation.cxx:194
 HistFactoryNavigation.cxx:195
 HistFactoryNavigation.cxx:196
 HistFactoryNavigation.cxx:197
 HistFactoryNavigation.cxx:198
 HistFactoryNavigation.cxx:199
 HistFactoryNavigation.cxx:200
 HistFactoryNavigation.cxx:201
 HistFactoryNavigation.cxx:202
 HistFactoryNavigation.cxx:203
 HistFactoryNavigation.cxx:204
 HistFactoryNavigation.cxx:205
 HistFactoryNavigation.cxx:206
 HistFactoryNavigation.cxx:207
 HistFactoryNavigation.cxx:208
 HistFactoryNavigation.cxx:209
 HistFactoryNavigation.cxx:210
 HistFactoryNavigation.cxx:211
 HistFactoryNavigation.cxx:212
 HistFactoryNavigation.cxx:213
 HistFactoryNavigation.cxx:214
 HistFactoryNavigation.cxx:215
 HistFactoryNavigation.cxx:216
 HistFactoryNavigation.cxx:217
 HistFactoryNavigation.cxx:218
 HistFactoryNavigation.cxx:219
 HistFactoryNavigation.cxx:220
 HistFactoryNavigation.cxx:221
 HistFactoryNavigation.cxx:222
 HistFactoryNavigation.cxx:223
 HistFactoryNavigation.cxx:224
 HistFactoryNavigation.cxx:225
 HistFactoryNavigation.cxx:226
 HistFactoryNavigation.cxx:227
 HistFactoryNavigation.cxx:228
 HistFactoryNavigation.cxx:229
 HistFactoryNavigation.cxx:230
 HistFactoryNavigation.cxx:231
 HistFactoryNavigation.cxx:232
 HistFactoryNavigation.cxx:233
 HistFactoryNavigation.cxx:234
 HistFactoryNavigation.cxx:235
 HistFactoryNavigation.cxx:236
 HistFactoryNavigation.cxx:237
 HistFactoryNavigation.cxx:238
 HistFactoryNavigation.cxx:239
 HistFactoryNavigation.cxx:240
 HistFactoryNavigation.cxx:241
 HistFactoryNavigation.cxx:242
 HistFactoryNavigation.cxx:243
 HistFactoryNavigation.cxx:244
 HistFactoryNavigation.cxx:245
 HistFactoryNavigation.cxx:246
 HistFactoryNavigation.cxx:247
 HistFactoryNavigation.cxx:248
 HistFactoryNavigation.cxx:249
 HistFactoryNavigation.cxx:250
 HistFactoryNavigation.cxx:251
 HistFactoryNavigation.cxx:252
 HistFactoryNavigation.cxx:253
 HistFactoryNavigation.cxx:254
 HistFactoryNavigation.cxx:255
 HistFactoryNavigation.cxx:256
 HistFactoryNavigation.cxx:257
 HistFactoryNavigation.cxx:258
 HistFactoryNavigation.cxx:259
 HistFactoryNavigation.cxx:260
 HistFactoryNavigation.cxx:261
 HistFactoryNavigation.cxx:262
 HistFactoryNavigation.cxx:263
 HistFactoryNavigation.cxx:264
 HistFactoryNavigation.cxx:265
 HistFactoryNavigation.cxx:266
 HistFactoryNavigation.cxx:267
 HistFactoryNavigation.cxx:268
 HistFactoryNavigation.cxx:269
 HistFactoryNavigation.cxx:270
 HistFactoryNavigation.cxx:271
 HistFactoryNavigation.cxx:272
 HistFactoryNavigation.cxx:273
 HistFactoryNavigation.cxx:274
 HistFactoryNavigation.cxx:275
 HistFactoryNavigation.cxx:276
 HistFactoryNavigation.cxx:277
 HistFactoryNavigation.cxx:278
 HistFactoryNavigation.cxx:279
 HistFactoryNavigation.cxx:280
 HistFactoryNavigation.cxx:281
 HistFactoryNavigation.cxx:282
 HistFactoryNavigation.cxx:283
 HistFactoryNavigation.cxx:284
 HistFactoryNavigation.cxx:285
 HistFactoryNavigation.cxx:286
 HistFactoryNavigation.cxx:287
 HistFactoryNavigation.cxx:288
 HistFactoryNavigation.cxx:289
 HistFactoryNavigation.cxx:290
 HistFactoryNavigation.cxx:291
 HistFactoryNavigation.cxx:292
 HistFactoryNavigation.cxx:293
 HistFactoryNavigation.cxx:294
 HistFactoryNavigation.cxx:295
 HistFactoryNavigation.cxx:296
 HistFactoryNavigation.cxx:297
 HistFactoryNavigation.cxx:298
 HistFactoryNavigation.cxx:299
 HistFactoryNavigation.cxx:300
 HistFactoryNavigation.cxx:301
 HistFactoryNavigation.cxx:302
 HistFactoryNavigation.cxx:303
 HistFactoryNavigation.cxx:304
 HistFactoryNavigation.cxx:305
 HistFactoryNavigation.cxx:306
 HistFactoryNavigation.cxx:307
 HistFactoryNavigation.cxx:308
 HistFactoryNavigation.cxx:309
 HistFactoryNavigation.cxx:310
 HistFactoryNavigation.cxx:311
 HistFactoryNavigation.cxx:312
 HistFactoryNavigation.cxx:313
 HistFactoryNavigation.cxx:314
 HistFactoryNavigation.cxx:315
 HistFactoryNavigation.cxx:316
 HistFactoryNavigation.cxx:317
 HistFactoryNavigation.cxx:318
 HistFactoryNavigation.cxx:319
 HistFactoryNavigation.cxx:320
 HistFactoryNavigation.cxx:321
 HistFactoryNavigation.cxx:322
 HistFactoryNavigation.cxx:323
 HistFactoryNavigation.cxx:324
 HistFactoryNavigation.cxx:325
 HistFactoryNavigation.cxx:326
 HistFactoryNavigation.cxx:327
 HistFactoryNavigation.cxx:328
 HistFactoryNavigation.cxx:329
 HistFactoryNavigation.cxx:330
 HistFactoryNavigation.cxx:331
 HistFactoryNavigation.cxx:332
 HistFactoryNavigation.cxx:333
 HistFactoryNavigation.cxx:334
 HistFactoryNavigation.cxx:335
 HistFactoryNavigation.cxx:336
 HistFactoryNavigation.cxx:337
 HistFactoryNavigation.cxx:338
 HistFactoryNavigation.cxx:339
 HistFactoryNavigation.cxx:340
 HistFactoryNavigation.cxx:341
 HistFactoryNavigation.cxx:342
 HistFactoryNavigation.cxx:343
 HistFactoryNavigation.cxx:344
 HistFactoryNavigation.cxx:345
 HistFactoryNavigation.cxx:346
 HistFactoryNavigation.cxx:347
 HistFactoryNavigation.cxx:348
 HistFactoryNavigation.cxx:349
 HistFactoryNavigation.cxx:350
 HistFactoryNavigation.cxx:351
 HistFactoryNavigation.cxx:352
 HistFactoryNavigation.cxx:353
 HistFactoryNavigation.cxx:354
 HistFactoryNavigation.cxx:355
 HistFactoryNavigation.cxx:356
 HistFactoryNavigation.cxx:357
 HistFactoryNavigation.cxx:358
 HistFactoryNavigation.cxx:359
 HistFactoryNavigation.cxx:360
 HistFactoryNavigation.cxx:361
 HistFactoryNavigation.cxx:362
 HistFactoryNavigation.cxx:363
 HistFactoryNavigation.cxx:364
 HistFactoryNavigation.cxx:365
 HistFactoryNavigation.cxx:366
 HistFactoryNavigation.cxx:367
 HistFactoryNavigation.cxx:368
 HistFactoryNavigation.cxx:369
 HistFactoryNavigation.cxx:370
 HistFactoryNavigation.cxx:371
 HistFactoryNavigation.cxx:372
 HistFactoryNavigation.cxx:373
 HistFactoryNavigation.cxx:374
 HistFactoryNavigation.cxx:375
 HistFactoryNavigation.cxx:376
 HistFactoryNavigation.cxx:377
 HistFactoryNavigation.cxx:378
 HistFactoryNavigation.cxx:379
 HistFactoryNavigation.cxx:380
 HistFactoryNavigation.cxx:381
 HistFactoryNavigation.cxx:382
 HistFactoryNavigation.cxx:383
 HistFactoryNavigation.cxx:384
 HistFactoryNavigation.cxx:385
 HistFactoryNavigation.cxx:386
 HistFactoryNavigation.cxx:387
 HistFactoryNavigation.cxx:388
 HistFactoryNavigation.cxx:389
 HistFactoryNavigation.cxx:390
 HistFactoryNavigation.cxx:391
 HistFactoryNavigation.cxx:392
 HistFactoryNavigation.cxx:393
 HistFactoryNavigation.cxx:394
 HistFactoryNavigation.cxx:395
 HistFactoryNavigation.cxx:396
 HistFactoryNavigation.cxx:397
 HistFactoryNavigation.cxx:398
 HistFactoryNavigation.cxx:399
 HistFactoryNavigation.cxx:400
 HistFactoryNavigation.cxx:401
 HistFactoryNavigation.cxx:402
 HistFactoryNavigation.cxx:403
 HistFactoryNavigation.cxx:404
 HistFactoryNavigation.cxx:405
 HistFactoryNavigation.cxx:406
 HistFactoryNavigation.cxx:407
 HistFactoryNavigation.cxx:408
 HistFactoryNavigation.cxx:409
 HistFactoryNavigation.cxx:410
 HistFactoryNavigation.cxx:411
 HistFactoryNavigation.cxx:412
 HistFactoryNavigation.cxx:413
 HistFactoryNavigation.cxx:414
 HistFactoryNavigation.cxx:415
 HistFactoryNavigation.cxx:416
 HistFactoryNavigation.cxx:417
 HistFactoryNavigation.cxx:418
 HistFactoryNavigation.cxx:419
 HistFactoryNavigation.cxx:420
 HistFactoryNavigation.cxx:421
 HistFactoryNavigation.cxx:422
 HistFactoryNavigation.cxx:423
 HistFactoryNavigation.cxx:424
 HistFactoryNavigation.cxx:425
 HistFactoryNavigation.cxx:426
 HistFactoryNavigation.cxx:427
 HistFactoryNavigation.cxx:428
 HistFactoryNavigation.cxx:429
 HistFactoryNavigation.cxx:430
 HistFactoryNavigation.cxx:431
 HistFactoryNavigation.cxx:432
 HistFactoryNavigation.cxx:433
 HistFactoryNavigation.cxx:434
 HistFactoryNavigation.cxx:435
 HistFactoryNavigation.cxx:436
 HistFactoryNavigation.cxx:437
 HistFactoryNavigation.cxx:438
 HistFactoryNavigation.cxx:439
 HistFactoryNavigation.cxx:440
 HistFactoryNavigation.cxx:441
 HistFactoryNavigation.cxx:442
 HistFactoryNavigation.cxx:443
 HistFactoryNavigation.cxx:444
 HistFactoryNavigation.cxx:445
 HistFactoryNavigation.cxx:446
 HistFactoryNavigation.cxx:447
 HistFactoryNavigation.cxx:448
 HistFactoryNavigation.cxx:449
 HistFactoryNavigation.cxx:450
 HistFactoryNavigation.cxx:451
 HistFactoryNavigation.cxx:452
 HistFactoryNavigation.cxx:453
 HistFactoryNavigation.cxx:454
 HistFactoryNavigation.cxx:455
 HistFactoryNavigation.cxx:456
 HistFactoryNavigation.cxx:457
 HistFactoryNavigation.cxx:458
 HistFactoryNavigation.cxx:459
 HistFactoryNavigation.cxx:460
 HistFactoryNavigation.cxx:461
 HistFactoryNavigation.cxx:462
 HistFactoryNavigation.cxx:463
 HistFactoryNavigation.cxx:464
 HistFactoryNavigation.cxx:465
 HistFactoryNavigation.cxx:466
 HistFactoryNavigation.cxx:467
 HistFactoryNavigation.cxx:468
 HistFactoryNavigation.cxx:469
 HistFactoryNavigation.cxx:470
 HistFactoryNavigation.cxx:471
 HistFactoryNavigation.cxx:472
 HistFactoryNavigation.cxx:473
 HistFactoryNavigation.cxx:474
 HistFactoryNavigation.cxx:475
 HistFactoryNavigation.cxx:476
 HistFactoryNavigation.cxx:477
 HistFactoryNavigation.cxx:478
 HistFactoryNavigation.cxx:479
 HistFactoryNavigation.cxx:480
 HistFactoryNavigation.cxx:481
 HistFactoryNavigation.cxx:482
 HistFactoryNavigation.cxx:483
 HistFactoryNavigation.cxx:484
 HistFactoryNavigation.cxx:485
 HistFactoryNavigation.cxx:486
 HistFactoryNavigation.cxx:487
 HistFactoryNavigation.cxx:488
 HistFactoryNavigation.cxx:489
 HistFactoryNavigation.cxx:490
 HistFactoryNavigation.cxx:491
 HistFactoryNavigation.cxx:492
 HistFactoryNavigation.cxx:493
 HistFactoryNavigation.cxx:494
 HistFactoryNavigation.cxx:495
 HistFactoryNavigation.cxx:496
 HistFactoryNavigation.cxx:497
 HistFactoryNavigation.cxx:498
 HistFactoryNavigation.cxx:499
 HistFactoryNavigation.cxx:500
 HistFactoryNavigation.cxx:501
 HistFactoryNavigation.cxx:502
 HistFactoryNavigation.cxx:503
 HistFactoryNavigation.cxx:504
 HistFactoryNavigation.cxx:505
 HistFactoryNavigation.cxx:506
 HistFactoryNavigation.cxx:507
 HistFactoryNavigation.cxx:508
 HistFactoryNavigation.cxx:509
 HistFactoryNavigation.cxx:510
 HistFactoryNavigation.cxx:511
 HistFactoryNavigation.cxx:512
 HistFactoryNavigation.cxx:513
 HistFactoryNavigation.cxx:514
 HistFactoryNavigation.cxx:515
 HistFactoryNavigation.cxx:516
 HistFactoryNavigation.cxx:517
 HistFactoryNavigation.cxx:518
 HistFactoryNavigation.cxx:519
 HistFactoryNavigation.cxx:520
 HistFactoryNavigation.cxx:521
 HistFactoryNavigation.cxx:522
 HistFactoryNavigation.cxx:523
 HistFactoryNavigation.cxx:524
 HistFactoryNavigation.cxx:525
 HistFactoryNavigation.cxx:526
 HistFactoryNavigation.cxx:527
 HistFactoryNavigation.cxx:528
 HistFactoryNavigation.cxx:529
 HistFactoryNavigation.cxx:530
 HistFactoryNavigation.cxx:531
 HistFactoryNavigation.cxx:532
 HistFactoryNavigation.cxx:533
 HistFactoryNavigation.cxx:534
 HistFactoryNavigation.cxx:535
 HistFactoryNavigation.cxx:536
 HistFactoryNavigation.cxx:537
 HistFactoryNavigation.cxx:538
 HistFactoryNavigation.cxx:539
 HistFactoryNavigation.cxx:540
 HistFactoryNavigation.cxx:541
 HistFactoryNavigation.cxx:542
 HistFactoryNavigation.cxx:543
 HistFactoryNavigation.cxx:544
 HistFactoryNavigation.cxx:545
 HistFactoryNavigation.cxx:546
 HistFactoryNavigation.cxx:547
 HistFactoryNavigation.cxx:548
 HistFactoryNavigation.cxx:549
 HistFactoryNavigation.cxx:550
 HistFactoryNavigation.cxx:551
 HistFactoryNavigation.cxx:552
 HistFactoryNavigation.cxx:553
 HistFactoryNavigation.cxx:554
 HistFactoryNavigation.cxx:555
 HistFactoryNavigation.cxx:556
 HistFactoryNavigation.cxx:557
 HistFactoryNavigation.cxx:558
 HistFactoryNavigation.cxx:559
 HistFactoryNavigation.cxx:560
 HistFactoryNavigation.cxx:561
 HistFactoryNavigation.cxx:562
 HistFactoryNavigation.cxx:563
 HistFactoryNavigation.cxx:564
 HistFactoryNavigation.cxx:565
 HistFactoryNavigation.cxx:566
 HistFactoryNavigation.cxx:567
 HistFactoryNavigation.cxx:568
 HistFactoryNavigation.cxx:569
 HistFactoryNavigation.cxx:570
 HistFactoryNavigation.cxx:571
 HistFactoryNavigation.cxx:572
 HistFactoryNavigation.cxx:573
 HistFactoryNavigation.cxx:574
 HistFactoryNavigation.cxx:575
 HistFactoryNavigation.cxx:576
 HistFactoryNavigation.cxx:577
 HistFactoryNavigation.cxx:578
 HistFactoryNavigation.cxx:579
 HistFactoryNavigation.cxx:580
 HistFactoryNavigation.cxx:581
 HistFactoryNavigation.cxx:582
 HistFactoryNavigation.cxx:583
 HistFactoryNavigation.cxx:584
 HistFactoryNavigation.cxx:585
 HistFactoryNavigation.cxx:586
 HistFactoryNavigation.cxx:587
 HistFactoryNavigation.cxx:588
 HistFactoryNavigation.cxx:589
 HistFactoryNavigation.cxx:590
 HistFactoryNavigation.cxx:591
 HistFactoryNavigation.cxx:592
 HistFactoryNavigation.cxx:593
 HistFactoryNavigation.cxx:594
 HistFactoryNavigation.cxx:595
 HistFactoryNavigation.cxx:596
 HistFactoryNavigation.cxx:597
 HistFactoryNavigation.cxx:598
 HistFactoryNavigation.cxx:599
 HistFactoryNavigation.cxx:600
 HistFactoryNavigation.cxx:601
 HistFactoryNavigation.cxx:602
 HistFactoryNavigation.cxx:603
 HistFactoryNavigation.cxx:604
 HistFactoryNavigation.cxx:605
 HistFactoryNavigation.cxx:606
 HistFactoryNavigation.cxx:607
 HistFactoryNavigation.cxx:608
 HistFactoryNavigation.cxx:609
 HistFactoryNavigation.cxx:610
 HistFactoryNavigation.cxx:611
 HistFactoryNavigation.cxx:612
 HistFactoryNavigation.cxx:613
 HistFactoryNavigation.cxx:614
 HistFactoryNavigation.cxx:615
 HistFactoryNavigation.cxx:616
 HistFactoryNavigation.cxx:617
 HistFactoryNavigation.cxx:618
 HistFactoryNavigation.cxx:619
 HistFactoryNavigation.cxx:620
 HistFactoryNavigation.cxx:621
 HistFactoryNavigation.cxx:622
 HistFactoryNavigation.cxx:623
 HistFactoryNavigation.cxx:624
 HistFactoryNavigation.cxx:625
 HistFactoryNavigation.cxx:626
 HistFactoryNavigation.cxx:627
 HistFactoryNavigation.cxx:628
 HistFactoryNavigation.cxx:629
 HistFactoryNavigation.cxx:630
 HistFactoryNavigation.cxx:631
 HistFactoryNavigation.cxx:632
 HistFactoryNavigation.cxx:633
 HistFactoryNavigation.cxx:634
 HistFactoryNavigation.cxx:635
 HistFactoryNavigation.cxx:636
 HistFactoryNavigation.cxx:637
 HistFactoryNavigation.cxx:638
 HistFactoryNavigation.cxx:639
 HistFactoryNavigation.cxx:640
 HistFactoryNavigation.cxx:641
 HistFactoryNavigation.cxx:642
 HistFactoryNavigation.cxx:643
 HistFactoryNavigation.cxx:644
 HistFactoryNavigation.cxx:645
 HistFactoryNavigation.cxx:646
 HistFactoryNavigation.cxx:647
 HistFactoryNavigation.cxx:648
 HistFactoryNavigation.cxx:649
 HistFactoryNavigation.cxx:650
 HistFactoryNavigation.cxx:651
 HistFactoryNavigation.cxx:652
 HistFactoryNavigation.cxx:653
 HistFactoryNavigation.cxx:654
 HistFactoryNavigation.cxx:655
 HistFactoryNavigation.cxx:656
 HistFactoryNavigation.cxx:657
 HistFactoryNavigation.cxx:658
 HistFactoryNavigation.cxx:659
 HistFactoryNavigation.cxx:660
 HistFactoryNavigation.cxx:661
 HistFactoryNavigation.cxx:662
 HistFactoryNavigation.cxx:663
 HistFactoryNavigation.cxx:664
 HistFactoryNavigation.cxx:665
 HistFactoryNavigation.cxx:666
 HistFactoryNavigation.cxx:667
 HistFactoryNavigation.cxx:668
 HistFactoryNavigation.cxx:669
 HistFactoryNavigation.cxx:670
 HistFactoryNavigation.cxx:671
 HistFactoryNavigation.cxx:672
 HistFactoryNavigation.cxx:673
 HistFactoryNavigation.cxx:674
 HistFactoryNavigation.cxx:675
 HistFactoryNavigation.cxx:676
 HistFactoryNavigation.cxx:677
 HistFactoryNavigation.cxx:678
 HistFactoryNavigation.cxx:679
 HistFactoryNavigation.cxx:680
 HistFactoryNavigation.cxx:681
 HistFactoryNavigation.cxx:682
 HistFactoryNavigation.cxx:683
 HistFactoryNavigation.cxx:684
 HistFactoryNavigation.cxx:685
 HistFactoryNavigation.cxx:686
 HistFactoryNavigation.cxx:687
 HistFactoryNavigation.cxx:688
 HistFactoryNavigation.cxx:689
 HistFactoryNavigation.cxx:690
 HistFactoryNavigation.cxx:691
 HistFactoryNavigation.cxx:692
 HistFactoryNavigation.cxx:693
 HistFactoryNavigation.cxx:694
 HistFactoryNavigation.cxx:695
 HistFactoryNavigation.cxx:696
 HistFactoryNavigation.cxx:697
 HistFactoryNavigation.cxx:698
 HistFactoryNavigation.cxx:699
 HistFactoryNavigation.cxx:700
 HistFactoryNavigation.cxx:701
 HistFactoryNavigation.cxx:702
 HistFactoryNavigation.cxx:703
 HistFactoryNavigation.cxx:704
 HistFactoryNavigation.cxx:705
 HistFactoryNavigation.cxx:706
 HistFactoryNavigation.cxx:707
 HistFactoryNavigation.cxx:708
 HistFactoryNavigation.cxx:709
 HistFactoryNavigation.cxx:710
 HistFactoryNavigation.cxx:711
 HistFactoryNavigation.cxx:712
 HistFactoryNavigation.cxx:713
 HistFactoryNavigation.cxx:714
 HistFactoryNavigation.cxx:715
 HistFactoryNavigation.cxx:716
 HistFactoryNavigation.cxx:717
 HistFactoryNavigation.cxx:718
 HistFactoryNavigation.cxx:719
 HistFactoryNavigation.cxx:720
 HistFactoryNavigation.cxx:721
 HistFactoryNavigation.cxx:722
 HistFactoryNavigation.cxx:723
 HistFactoryNavigation.cxx:724
 HistFactoryNavigation.cxx:725
 HistFactoryNavigation.cxx:726
 HistFactoryNavigation.cxx:727
 HistFactoryNavigation.cxx:728
 HistFactoryNavigation.cxx:729
 HistFactoryNavigation.cxx:730
 HistFactoryNavigation.cxx:731
 HistFactoryNavigation.cxx:732
 HistFactoryNavigation.cxx:733
 HistFactoryNavigation.cxx:734
 HistFactoryNavigation.cxx:735
 HistFactoryNavigation.cxx:736
 HistFactoryNavigation.cxx:737
 HistFactoryNavigation.cxx:738
 HistFactoryNavigation.cxx:739
 HistFactoryNavigation.cxx:740
 HistFactoryNavigation.cxx:741
 HistFactoryNavigation.cxx:742
 HistFactoryNavigation.cxx:743
 HistFactoryNavigation.cxx:744
 HistFactoryNavigation.cxx:745
 HistFactoryNavigation.cxx:746
 HistFactoryNavigation.cxx:747
 HistFactoryNavigation.cxx:748
 HistFactoryNavigation.cxx:749
 HistFactoryNavigation.cxx:750
 HistFactoryNavigation.cxx:751
 HistFactoryNavigation.cxx:752
 HistFactoryNavigation.cxx:753
 HistFactoryNavigation.cxx:754
 HistFactoryNavigation.cxx:755
 HistFactoryNavigation.cxx:756
 HistFactoryNavigation.cxx:757
 HistFactoryNavigation.cxx:758
 HistFactoryNavigation.cxx:759
 HistFactoryNavigation.cxx:760
 HistFactoryNavigation.cxx:761
 HistFactoryNavigation.cxx:762
 HistFactoryNavigation.cxx:763
 HistFactoryNavigation.cxx:764
 HistFactoryNavigation.cxx:765
 HistFactoryNavigation.cxx:766
 HistFactoryNavigation.cxx:767
 HistFactoryNavigation.cxx:768
 HistFactoryNavigation.cxx:769
 HistFactoryNavigation.cxx:770
 HistFactoryNavigation.cxx:771
 HistFactoryNavigation.cxx:772
 HistFactoryNavigation.cxx:773
 HistFactoryNavigation.cxx:774
 HistFactoryNavigation.cxx:775
 HistFactoryNavigation.cxx:776
 HistFactoryNavigation.cxx:777
 HistFactoryNavigation.cxx:778
 HistFactoryNavigation.cxx:779
 HistFactoryNavigation.cxx:780
 HistFactoryNavigation.cxx:781
 HistFactoryNavigation.cxx:782
 HistFactoryNavigation.cxx:783
 HistFactoryNavigation.cxx:784
 HistFactoryNavigation.cxx:785
 HistFactoryNavigation.cxx:786
 HistFactoryNavigation.cxx:787
 HistFactoryNavigation.cxx:788
 HistFactoryNavigation.cxx:789
 HistFactoryNavigation.cxx:790
 HistFactoryNavigation.cxx:791
 HistFactoryNavigation.cxx:792
 HistFactoryNavigation.cxx:793
 HistFactoryNavigation.cxx:794
 HistFactoryNavigation.cxx:795
 HistFactoryNavigation.cxx:796
 HistFactoryNavigation.cxx:797
 HistFactoryNavigation.cxx:798
 HistFactoryNavigation.cxx:799
 HistFactoryNavigation.cxx:800
 HistFactoryNavigation.cxx:801
 HistFactoryNavigation.cxx:802
 HistFactoryNavigation.cxx:803
 HistFactoryNavigation.cxx:804
 HistFactoryNavigation.cxx:805
 HistFactoryNavigation.cxx:806
 HistFactoryNavigation.cxx:807
 HistFactoryNavigation.cxx:808
 HistFactoryNavigation.cxx:809
 HistFactoryNavigation.cxx:810
 HistFactoryNavigation.cxx:811
 HistFactoryNavigation.cxx:812
 HistFactoryNavigation.cxx:813
 HistFactoryNavigation.cxx:814
 HistFactoryNavigation.cxx:815
 HistFactoryNavigation.cxx:816
 HistFactoryNavigation.cxx:817
 HistFactoryNavigation.cxx:818
 HistFactoryNavigation.cxx:819
 HistFactoryNavigation.cxx:820
 HistFactoryNavigation.cxx:821
 HistFactoryNavigation.cxx:822
 HistFactoryNavigation.cxx:823
 HistFactoryNavigation.cxx:824
 HistFactoryNavigation.cxx:825
 HistFactoryNavigation.cxx:826
 HistFactoryNavigation.cxx:827
 HistFactoryNavigation.cxx:828
 HistFactoryNavigation.cxx:829
 HistFactoryNavigation.cxx:830
 HistFactoryNavigation.cxx:831
 HistFactoryNavigation.cxx:832
 HistFactoryNavigation.cxx:833
 HistFactoryNavigation.cxx:834
 HistFactoryNavigation.cxx:835
 HistFactoryNavigation.cxx:836
 HistFactoryNavigation.cxx:837
 HistFactoryNavigation.cxx:838
 HistFactoryNavigation.cxx:839
 HistFactoryNavigation.cxx:840
 HistFactoryNavigation.cxx:841
 HistFactoryNavigation.cxx:842
 HistFactoryNavigation.cxx:843
 HistFactoryNavigation.cxx:844
 HistFactoryNavigation.cxx:845
 HistFactoryNavigation.cxx:846
 HistFactoryNavigation.cxx:847
 HistFactoryNavigation.cxx:848
 HistFactoryNavigation.cxx:849
 HistFactoryNavigation.cxx:850
 HistFactoryNavigation.cxx:851
 HistFactoryNavigation.cxx:852
 HistFactoryNavigation.cxx:853
 HistFactoryNavigation.cxx:854
 HistFactoryNavigation.cxx:855
 HistFactoryNavigation.cxx:856
 HistFactoryNavigation.cxx:857
 HistFactoryNavigation.cxx:858
 HistFactoryNavigation.cxx:859
 HistFactoryNavigation.cxx:860
 HistFactoryNavigation.cxx:861
 HistFactoryNavigation.cxx:862
 HistFactoryNavigation.cxx:863
 HistFactoryNavigation.cxx:864
 HistFactoryNavigation.cxx:865
 HistFactoryNavigation.cxx:866
 HistFactoryNavigation.cxx:867
 HistFactoryNavigation.cxx:868
 HistFactoryNavigation.cxx:869
 HistFactoryNavigation.cxx:870
 HistFactoryNavigation.cxx:871
 HistFactoryNavigation.cxx:872
 HistFactoryNavigation.cxx:873
 HistFactoryNavigation.cxx:874
 HistFactoryNavigation.cxx:875
 HistFactoryNavigation.cxx:876
 HistFactoryNavigation.cxx:877
 HistFactoryNavigation.cxx:878
 HistFactoryNavigation.cxx:879
 HistFactoryNavigation.cxx:880
 HistFactoryNavigation.cxx:881
 HistFactoryNavigation.cxx:882
 HistFactoryNavigation.cxx:883
 HistFactoryNavigation.cxx:884
 HistFactoryNavigation.cxx:885
 HistFactoryNavigation.cxx:886
 HistFactoryNavigation.cxx:887
 HistFactoryNavigation.cxx:888
 HistFactoryNavigation.cxx:889
 HistFactoryNavigation.cxx:890
 HistFactoryNavigation.cxx:891
 HistFactoryNavigation.cxx:892
 HistFactoryNavigation.cxx:893
 HistFactoryNavigation.cxx:894
 HistFactoryNavigation.cxx:895
 HistFactoryNavigation.cxx:896
 HistFactoryNavigation.cxx:897
 HistFactoryNavigation.cxx:898
 HistFactoryNavigation.cxx:899
 HistFactoryNavigation.cxx:900
 HistFactoryNavigation.cxx:901
 HistFactoryNavigation.cxx:902
 HistFactoryNavigation.cxx:903
 HistFactoryNavigation.cxx:904
 HistFactoryNavigation.cxx:905
 HistFactoryNavigation.cxx:906
 HistFactoryNavigation.cxx:907
 HistFactoryNavigation.cxx:908
 HistFactoryNavigation.cxx:909
 HistFactoryNavigation.cxx:910
 HistFactoryNavigation.cxx:911
 HistFactoryNavigation.cxx:912
 HistFactoryNavigation.cxx:913
 HistFactoryNavigation.cxx:914
 HistFactoryNavigation.cxx:915
 HistFactoryNavigation.cxx:916
 HistFactoryNavigation.cxx:917
 HistFactoryNavigation.cxx:918
 HistFactoryNavigation.cxx:919
 HistFactoryNavigation.cxx:920
 HistFactoryNavigation.cxx:921
 HistFactoryNavigation.cxx:922
 HistFactoryNavigation.cxx:923
 HistFactoryNavigation.cxx:924
 HistFactoryNavigation.cxx:925
 HistFactoryNavigation.cxx:926
 HistFactoryNavigation.cxx:927
 HistFactoryNavigation.cxx:928
 HistFactoryNavigation.cxx:929
 HistFactoryNavigation.cxx:930
 HistFactoryNavigation.cxx:931
 HistFactoryNavigation.cxx:932
 HistFactoryNavigation.cxx:933
 HistFactoryNavigation.cxx:934
 HistFactoryNavigation.cxx:935
 HistFactoryNavigation.cxx:936
 HistFactoryNavigation.cxx:937
 HistFactoryNavigation.cxx:938
 HistFactoryNavigation.cxx:939
 HistFactoryNavigation.cxx:940
 HistFactoryNavigation.cxx:941
 HistFactoryNavigation.cxx:942
 HistFactoryNavigation.cxx:943
 HistFactoryNavigation.cxx:944
 HistFactoryNavigation.cxx:945
 HistFactoryNavigation.cxx:946
 HistFactoryNavigation.cxx:947
 HistFactoryNavigation.cxx:948
 HistFactoryNavigation.cxx:949
 HistFactoryNavigation.cxx:950
 HistFactoryNavigation.cxx:951
 HistFactoryNavigation.cxx:952
 HistFactoryNavigation.cxx:953
 HistFactoryNavigation.cxx:954
 HistFactoryNavigation.cxx:955
 HistFactoryNavigation.cxx:956
 HistFactoryNavigation.cxx:957
 HistFactoryNavigation.cxx:958
 HistFactoryNavigation.cxx:959
 HistFactoryNavigation.cxx:960
 HistFactoryNavigation.cxx:961
 HistFactoryNavigation.cxx:962
 HistFactoryNavigation.cxx:963
 HistFactoryNavigation.cxx:964
 HistFactoryNavigation.cxx:965
 HistFactoryNavigation.cxx:966
 HistFactoryNavigation.cxx:967
 HistFactoryNavigation.cxx:968
 HistFactoryNavigation.cxx:969
 HistFactoryNavigation.cxx:970
 HistFactoryNavigation.cxx:971
 HistFactoryNavigation.cxx:972
 HistFactoryNavigation.cxx:973
 HistFactoryNavigation.cxx:974
 HistFactoryNavigation.cxx:975
 HistFactoryNavigation.cxx:976
 HistFactoryNavigation.cxx:977
 HistFactoryNavigation.cxx:978
 HistFactoryNavigation.cxx:979
 HistFactoryNavigation.cxx:980
 HistFactoryNavigation.cxx:981
 HistFactoryNavigation.cxx:982
 HistFactoryNavigation.cxx:983
 HistFactoryNavigation.cxx:984
 HistFactoryNavigation.cxx:985
 HistFactoryNavigation.cxx:986
 HistFactoryNavigation.cxx:987
 HistFactoryNavigation.cxx:988
 HistFactoryNavigation.cxx:989
 HistFactoryNavigation.cxx:990
 HistFactoryNavigation.cxx:991
 HistFactoryNavigation.cxx:992
 HistFactoryNavigation.cxx:993
 HistFactoryNavigation.cxx:994
 HistFactoryNavigation.cxx:995
 HistFactoryNavigation.cxx:996
 HistFactoryNavigation.cxx:997
 HistFactoryNavigation.cxx:998
 HistFactoryNavigation.cxx:999
 HistFactoryNavigation.cxx:1000
 HistFactoryNavigation.cxx:1001
 HistFactoryNavigation.cxx:1002
 HistFactoryNavigation.cxx:1003
 HistFactoryNavigation.cxx:1004
 HistFactoryNavigation.cxx:1005
 HistFactoryNavigation.cxx:1006
 HistFactoryNavigation.cxx:1007
 HistFactoryNavigation.cxx:1008
 HistFactoryNavigation.cxx:1009
 HistFactoryNavigation.cxx:1010
 HistFactoryNavigation.cxx:1011
 HistFactoryNavigation.cxx:1012
 HistFactoryNavigation.cxx:1013
 HistFactoryNavigation.cxx:1014
 HistFactoryNavigation.cxx:1015
 HistFactoryNavigation.cxx:1016
 HistFactoryNavigation.cxx:1017
 HistFactoryNavigation.cxx:1018
 HistFactoryNavigation.cxx:1019
 HistFactoryNavigation.cxx:1020
 HistFactoryNavigation.cxx:1021
 HistFactoryNavigation.cxx:1022
 HistFactoryNavigation.cxx:1023
 HistFactoryNavigation.cxx:1024
 HistFactoryNavigation.cxx:1025
 HistFactoryNavigation.cxx:1026
 HistFactoryNavigation.cxx:1027
 HistFactoryNavigation.cxx:1028
 HistFactoryNavigation.cxx:1029
 HistFactoryNavigation.cxx:1030
 HistFactoryNavigation.cxx:1031
 HistFactoryNavigation.cxx:1032
 HistFactoryNavigation.cxx:1033
 HistFactoryNavigation.cxx:1034
 HistFactoryNavigation.cxx:1035
 HistFactoryNavigation.cxx:1036
 HistFactoryNavigation.cxx:1037
 HistFactoryNavigation.cxx:1038
 HistFactoryNavigation.cxx:1039
 HistFactoryNavigation.cxx:1040
 HistFactoryNavigation.cxx:1041
 HistFactoryNavigation.cxx:1042
 HistFactoryNavigation.cxx:1043
 HistFactoryNavigation.cxx:1044
 HistFactoryNavigation.cxx:1045
 HistFactoryNavigation.cxx:1046
 HistFactoryNavigation.cxx:1047
 HistFactoryNavigation.cxx:1048
 HistFactoryNavigation.cxx:1049
 HistFactoryNavigation.cxx:1050
 HistFactoryNavigation.cxx:1051
 HistFactoryNavigation.cxx:1052
 HistFactoryNavigation.cxx:1053
 HistFactoryNavigation.cxx:1054
 HistFactoryNavigation.cxx:1055
 HistFactoryNavigation.cxx:1056
 HistFactoryNavigation.cxx:1057
 HistFactoryNavigation.cxx:1058
 HistFactoryNavigation.cxx:1059
 HistFactoryNavigation.cxx:1060
 HistFactoryNavigation.cxx:1061
 HistFactoryNavigation.cxx:1062
 HistFactoryNavigation.cxx:1063
 HistFactoryNavigation.cxx:1064
 HistFactoryNavigation.cxx:1065
 HistFactoryNavigation.cxx:1066
 HistFactoryNavigation.cxx:1067
 HistFactoryNavigation.cxx:1068
 HistFactoryNavigation.cxx:1069
 HistFactoryNavigation.cxx:1070
 HistFactoryNavigation.cxx:1071
 HistFactoryNavigation.cxx:1072
 HistFactoryNavigation.cxx:1073
 HistFactoryNavigation.cxx:1074
 HistFactoryNavigation.cxx:1075
 HistFactoryNavigation.cxx:1076
 HistFactoryNavigation.cxx:1077
 HistFactoryNavigation.cxx:1078
 HistFactoryNavigation.cxx:1079
 HistFactoryNavigation.cxx:1080
 HistFactoryNavigation.cxx:1081
 HistFactoryNavigation.cxx:1082
 HistFactoryNavigation.cxx:1083
 HistFactoryNavigation.cxx:1084
 HistFactoryNavigation.cxx:1085
 HistFactoryNavigation.cxx:1086
 HistFactoryNavigation.cxx:1087
 HistFactoryNavigation.cxx:1088
 HistFactoryNavigation.cxx:1089
 HistFactoryNavigation.cxx:1090
 HistFactoryNavigation.cxx:1091
 HistFactoryNavigation.cxx:1092
 HistFactoryNavigation.cxx:1093
 HistFactoryNavigation.cxx:1094
 HistFactoryNavigation.cxx:1095
 HistFactoryNavigation.cxx:1096
 HistFactoryNavigation.cxx:1097
 HistFactoryNavigation.cxx:1098
 HistFactoryNavigation.cxx:1099
 HistFactoryNavigation.cxx:1100
 HistFactoryNavigation.cxx:1101
 HistFactoryNavigation.cxx:1102
 HistFactoryNavigation.cxx:1103
 HistFactoryNavigation.cxx:1104
 HistFactoryNavigation.cxx:1105
 HistFactoryNavigation.cxx:1106
 HistFactoryNavigation.cxx:1107
 HistFactoryNavigation.cxx:1108
 HistFactoryNavigation.cxx:1109
 HistFactoryNavigation.cxx:1110
 HistFactoryNavigation.cxx:1111
 HistFactoryNavigation.cxx:1112
 HistFactoryNavigation.cxx:1113
 HistFactoryNavigation.cxx:1114
 HistFactoryNavigation.cxx:1115
 HistFactoryNavigation.cxx:1116
 HistFactoryNavigation.cxx:1117
 HistFactoryNavigation.cxx:1118
 HistFactoryNavigation.cxx:1119
 HistFactoryNavigation.cxx:1120
 HistFactoryNavigation.cxx:1121
 HistFactoryNavigation.cxx:1122
 HistFactoryNavigation.cxx:1123
 HistFactoryNavigation.cxx:1124
 HistFactoryNavigation.cxx:1125
 HistFactoryNavigation.cxx:1126
 HistFactoryNavigation.cxx:1127
 HistFactoryNavigation.cxx:1128
 HistFactoryNavigation.cxx:1129
 HistFactoryNavigation.cxx:1130
 HistFactoryNavigation.cxx:1131
 HistFactoryNavigation.cxx:1132
 HistFactoryNavigation.cxx:1133
 HistFactoryNavigation.cxx:1134
 HistFactoryNavigation.cxx:1135
 HistFactoryNavigation.cxx:1136
 HistFactoryNavigation.cxx:1137
 HistFactoryNavigation.cxx:1138
 HistFactoryNavigation.cxx:1139
 HistFactoryNavigation.cxx:1140
 HistFactoryNavigation.cxx:1141
 HistFactoryNavigation.cxx:1142
 HistFactoryNavigation.cxx:1143
 HistFactoryNavigation.cxx:1144
 HistFactoryNavigation.cxx:1145
 HistFactoryNavigation.cxx:1146
 HistFactoryNavigation.cxx:1147
 HistFactoryNavigation.cxx:1148
 HistFactoryNavigation.cxx:1149
 HistFactoryNavigation.cxx:1150
 HistFactoryNavigation.cxx:1151
 HistFactoryNavigation.cxx:1152
 HistFactoryNavigation.cxx:1153
 HistFactoryNavigation.cxx:1154
 HistFactoryNavigation.cxx:1155
 HistFactoryNavigation.cxx:1156
 HistFactoryNavigation.cxx:1157
 HistFactoryNavigation.cxx:1158
 HistFactoryNavigation.cxx:1159
 HistFactoryNavigation.cxx:1160
 HistFactoryNavigation.cxx:1161
 HistFactoryNavigation.cxx:1162
 HistFactoryNavigation.cxx:1163
 HistFactoryNavigation.cxx:1164
 HistFactoryNavigation.cxx:1165
 HistFactoryNavigation.cxx:1166
 HistFactoryNavigation.cxx:1167
 HistFactoryNavigation.cxx:1168
 HistFactoryNavigation.cxx:1169
 HistFactoryNavigation.cxx:1170
 HistFactoryNavigation.cxx:1171
 HistFactoryNavigation.cxx:1172
 HistFactoryNavigation.cxx:1173
 HistFactoryNavigation.cxx:1174
 HistFactoryNavigation.cxx:1175
 HistFactoryNavigation.cxx:1176
 HistFactoryNavigation.cxx:1177
 HistFactoryNavigation.cxx:1178
 HistFactoryNavigation.cxx:1179
 HistFactoryNavigation.cxx:1180
 HistFactoryNavigation.cxx:1181
 HistFactoryNavigation.cxx:1182
 HistFactoryNavigation.cxx:1183
 HistFactoryNavigation.cxx:1184
 HistFactoryNavigation.cxx:1185
 HistFactoryNavigation.cxx:1186
 HistFactoryNavigation.cxx:1187
 HistFactoryNavigation.cxx:1188
 HistFactoryNavigation.cxx:1189
 HistFactoryNavigation.cxx:1190
 HistFactoryNavigation.cxx:1191
 HistFactoryNavigation.cxx:1192
 HistFactoryNavigation.cxx:1193
 HistFactoryNavigation.cxx:1194
 HistFactoryNavigation.cxx:1195
 HistFactoryNavigation.cxx:1196
 HistFactoryNavigation.cxx:1197
 HistFactoryNavigation.cxx:1198
 HistFactoryNavigation.cxx:1199
 HistFactoryNavigation.cxx:1200
 HistFactoryNavigation.cxx:1201
 HistFactoryNavigation.cxx:1202
 HistFactoryNavigation.cxx:1203
 HistFactoryNavigation.cxx:1204
 HistFactoryNavigation.cxx:1205
 HistFactoryNavigation.cxx:1206
 HistFactoryNavigation.cxx:1207
 HistFactoryNavigation.cxx:1208
 HistFactoryNavigation.cxx:1209
 HistFactoryNavigation.cxx:1210
 HistFactoryNavigation.cxx:1211
 HistFactoryNavigation.cxx:1212
 HistFactoryNavigation.cxx:1213
 HistFactoryNavigation.cxx:1214
 HistFactoryNavigation.cxx:1215
 HistFactoryNavigation.cxx:1216
 HistFactoryNavigation.cxx:1217
 HistFactoryNavigation.cxx:1218
 HistFactoryNavigation.cxx:1219
 HistFactoryNavigation.cxx:1220
 HistFactoryNavigation.cxx:1221
 HistFactoryNavigation.cxx:1222
 HistFactoryNavigation.cxx:1223
 HistFactoryNavigation.cxx:1224
 HistFactoryNavigation.cxx:1225
 HistFactoryNavigation.cxx:1226
 HistFactoryNavigation.cxx:1227
 HistFactoryNavigation.cxx:1228
 HistFactoryNavigation.cxx:1229
 HistFactoryNavigation.cxx:1230
 HistFactoryNavigation.cxx:1231
 HistFactoryNavigation.cxx:1232
 HistFactoryNavigation.cxx:1233
 HistFactoryNavigation.cxx:1234
 HistFactoryNavigation.cxx:1235
 HistFactoryNavigation.cxx:1236
 HistFactoryNavigation.cxx:1237
 HistFactoryNavigation.cxx:1238
 HistFactoryNavigation.cxx:1239
 HistFactoryNavigation.cxx:1240
 HistFactoryNavigation.cxx:1241
 HistFactoryNavigation.cxx:1242
 HistFactoryNavigation.cxx:1243
 HistFactoryNavigation.cxx:1244
 HistFactoryNavigation.cxx:1245
 HistFactoryNavigation.cxx:1246
 HistFactoryNavigation.cxx:1247
 HistFactoryNavigation.cxx:1248
 HistFactoryNavigation.cxx:1249
 HistFactoryNavigation.cxx:1250
 HistFactoryNavigation.cxx:1251
 HistFactoryNavigation.cxx:1252
 HistFactoryNavigation.cxx:1253
 HistFactoryNavigation.cxx:1254
 HistFactoryNavigation.cxx:1255
 HistFactoryNavigation.cxx:1256
 HistFactoryNavigation.cxx:1257
 HistFactoryNavigation.cxx:1258
 HistFactoryNavigation.cxx:1259
 HistFactoryNavigation.cxx:1260
 HistFactoryNavigation.cxx:1261
 HistFactoryNavigation.cxx:1262
 HistFactoryNavigation.cxx:1263
 HistFactoryNavigation.cxx:1264
 HistFactoryNavigation.cxx:1265
 HistFactoryNavigation.cxx:1266
 HistFactoryNavigation.cxx:1267
 HistFactoryNavigation.cxx:1268
 HistFactoryNavigation.cxx:1269
 HistFactoryNavigation.cxx:1270
 HistFactoryNavigation.cxx:1271
 HistFactoryNavigation.cxx:1272
 HistFactoryNavigation.cxx:1273
 HistFactoryNavigation.cxx:1274
 HistFactoryNavigation.cxx:1275
 HistFactoryNavigation.cxx:1276
 HistFactoryNavigation.cxx:1277
 HistFactoryNavigation.cxx:1278
 HistFactoryNavigation.cxx:1279
 HistFactoryNavigation.cxx:1280
 HistFactoryNavigation.cxx:1281
 HistFactoryNavigation.cxx:1282
 HistFactoryNavigation.cxx:1283
 HistFactoryNavigation.cxx:1284
 HistFactoryNavigation.cxx:1285
 HistFactoryNavigation.cxx:1286
 HistFactoryNavigation.cxx:1287
 HistFactoryNavigation.cxx:1288
 HistFactoryNavigation.cxx:1289
 HistFactoryNavigation.cxx:1290
 HistFactoryNavigation.cxx:1291
 HistFactoryNavigation.cxx:1292
 HistFactoryNavigation.cxx:1293
 HistFactoryNavigation.cxx:1294
 HistFactoryNavigation.cxx:1295
 HistFactoryNavigation.cxx:1296
 HistFactoryNavigation.cxx:1297
 HistFactoryNavigation.cxx:1298
 HistFactoryNavigation.cxx:1299
 HistFactoryNavigation.cxx:1300
 HistFactoryNavigation.cxx:1301
 HistFactoryNavigation.cxx:1302
 HistFactoryNavigation.cxx:1303
 HistFactoryNavigation.cxx:1304
 HistFactoryNavigation.cxx:1305
 HistFactoryNavigation.cxx:1306
 HistFactoryNavigation.cxx:1307
 HistFactoryNavigation.cxx:1308
 HistFactoryNavigation.cxx:1309
 HistFactoryNavigation.cxx:1310