// @(#)root/roostats:$Id:  cranmer $
// Author: Kyle Cranmer, Akira Shibata
/*************************************************************************
 * 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
*/
//


#ifndef __CINT__
#include "RooGlobalFunc.h"
#endif

// Roofit/Roostat include
#include "RooDataSet.h"
#include "RooRealVar.h"
#include "RooConstVar.h"
#include "RooAddition.h"
#include "RooProduct.h"
#include "RooProdPdf.h"
#include "RooAddPdf.h"
#include "RooGaussian.h"
#include "RooExponential.h"
#include "RooRandom.h"
#include "RooCategory.h"
#include "RooSimultaneous.h"
#include "RooMultiVarGaussian.h"
#include "RooNumIntConfig.h"
#include "RooMinuit.h"
#include "RooNLLVar.h"
#include "RooProfileLL.h"
#include "RooFitResult.h"
#include "RooDataHist.h"
#include "RooHistPdf.h"
#include "RooProduct.h"
#include "RooWorkspace.h"
#include "RooCustomizer.h"
#include "RooPlot.h"
#include "RooMsgService.h"
#include "RooStats/RooStatsUtils.h"
#include "RooStats/ModelConfig.h"

#include "TH2F.h"
#include "TH3F.h"
#include "TFile.h"
#include "TCanvas.h"
#include "TH1.h"
#include "TLine.h"
#include "TTree.h"
#include "TMarker.h"
#include "TStopwatch.h"
#include "TROOT.h"
#include "TStyle.h"
#include "TVectorD.h"
#include "TMatrixDSym.h"

// specific to this package
//#include "RooStats/HistFactory/Helper.h"
#include "RooStats/HistFactory/LinInterpVar.h"
#include "RooStats/HistFactory/HistoToWorkspaceFactory.h"
#include "Helper.h"

#define VERBOSE

#define alpha_Low "-5"
#define alpha_High "5"
#define NoHistConst_Low "0"
#define NoHistConst_High "2000"

// use this order for safety on library loading
using namespace RooFit ;
using namespace RooStats ;
using namespace std ;
//using namespace RooMsgService ;

ClassImp(RooStats::HistFactory::HistoToWorkspaceFactory)

namespace RooStats{
namespace HistFactory{

  HistoToWorkspaceFactory::HistoToWorkspaceFactory() :
    fNomLumi(0),
    fLumiError(0),
    fLowBin(0),
    fHighBin(0),   
    fOut_f(0),
    pFile(0)
  {
  }

  HistoToWorkspaceFactory::~HistoToWorkspaceFactory(){
    fclose(pFile);
  }

  HistoToWorkspaceFactory::HistoToWorkspaceFactory(string filePrefix, string row, vector<string> syst, double nomL, double lumiE, int low, int high, TFile* f):
      fFileNamePrefix(filePrefix),
      fRowTitle(row),
      fSystToFix(syst),
      fNomLumi(nomL),
      fLumiError(lumiE),
      fLowBin(low),
      fHighBin(high),
      fOut_f(f) {

    //    fResultsPrefixStr<<"results" << "_" << fNomLumi<< "_" << fLumiError<< "_" << fLowBin<< "_" << fHighBin;
    fResultsPrefixStr<< "_" << fRowTitle;
    while(fRowTitle.find("\\ ")!=string::npos){
      int pos=fRowTitle.find("\\ ");
      fRowTitle.replace(pos, 1, "");
    }
    pFile = fopen ((filePrefix+"_results.table").c_str(),"a"); 
    //RooMsgService::instance().setGlobalKillBelow(RooFit::ERROR) ;

  }

  string HistoToWorkspaceFactory::FilePrefixStr(string prefix){

    stringstream ss;
    ss << prefix << "_" << fNomLumi<< "_" << fLumiError<< "_" << fLowBin<< "_" << fHighBin<< "_"<<fRowTitle;

    return ss.str();
  }

  void HistoToWorkspaceFactory::ProcessExpectedHisto(TH1* hist,RooWorkspace* proto, string prefix, string productPrefix, string systTerm, double low, double high, int lowBin, int highBin){
    if(hist)
      cout << "processing hist " << hist->GetName() << endl;
    else
      cout << "hist is empty" << endl;
    RooArgSet argset(prefix.c_str());
    string highStr = "inf";
    for(Int_t i=lowBin; i<highBin; ++i){
      std::stringstream str;
      std::stringstream range;
      str<<"_"<<i;
      if(hist)
        range<<"["<<hist->GetBinContent(i+1) << "," << low << "," << highStr << "]";
      else
        range<<"["<< low << "," << high << "]";
      cout << "for bin N"+str.str() << " var " << prefix+str.str()+" with range " << range.str() << endl;
      RooRealVar* var = (RooRealVar*) proto->factory((prefix+str.str()+range.str()).c_str());

      // now create the product of the overall efficiency times the sigma(params) for this estimate
      if(! (productPrefix.empty() || systTerm.empty()) )
         proto->factory(("prod:"+productPrefix+str.str()+"("+prefix+str.str()+","+systTerm+")").c_str() );

      var->setConstant();
      argset.add(* var );
    }
    proto->defineSet(prefix.c_str(),argset);
    // proto->Print();
  }

  void HistoToWorkspaceFactory::AddMultiVarGaussConstraint(RooWorkspace* proto, string prefix,int lowBin, int highBin, vector<string>& likelihoodTermNames){
    // these are the nominal predictions: eg. the mean of some space of variations
    // later fill these in a loop over histogram bins
    TVectorD mean(highBin-lowBin);
    cout << "a" << endl;
    for(Int_t i=lowBin; i<highBin; ++i){
      std::stringstream str;
      str<<"_"<<i;
      RooRealVar* temp = proto->var((prefix+str.str()).c_str());
      mean(i) = temp->getVal();
    }

    TMatrixDSym Cov(highBin-lowBin);
    for(int i=lowBin; i<highBin; ++i){
      for(int j=0; j<highBin-lowBin; ++j){
        if(i==j) 
    Cov(i,j) = sqrt(mean(i));
        else
    Cov(i,j) = 0;
      }
    }
    // can't make MultiVarGaussian with factory yet, do it by hand
    RooArgList floating( *(proto->set(prefix.c_str() ) ) );
    RooMultiVarGaussian constraint((prefix+"Constraint").c_str(),"",
             floating, mean, Cov);
             
    proto->import(constraint);

    likelihoodTermNames.push_back(constraint.GetName());

  }


  void HistoToWorkspaceFactory::LinInterpWithConstraint(RooWorkspace* proto, TH1* nominal, vector<TH1*> lowHist, vector<TH1*> highHist, 
             vector<string> sourceName, string prefix, string productPrefix, string systTerm, 
             int lowBin, int highBin, vector<string>& likelihoodTermNames){
    // these are the nominal predictions: eg. the mean of some space of variations
    // later fill these in a loop over histogram bins

    // make list of abstract parameters that interpolate in space of variations
    RooArgList params( ("alpha_Hist") );
    // range is set using defined macro (see top of the page)
    string range=string("[")+alpha_Low+","+alpha_High+"]";
    for(unsigned int j=0; j<lowHist.size(); ++j){
      std::stringstream str;
      str<<"_"<<j;

      RooRealVar* temp = (RooRealVar*) proto->var(("alpha_"+sourceName.at(j)).c_str());
      if(!temp){
        temp = (RooRealVar*) proto->factory(("alpha_"+sourceName.at(j)+range).c_str());

        // now add a constraint term for these parameters
        string command=("Gaussian::alpha_"+sourceName.at(j)+"Constraint(alpha_"+sourceName.at(j)+",nom_"+sourceName.at(j)+"[0.,-10,10],1.)");
        cout << command << endl;
        likelihoodTermNames.push_back(  proto->factory( command.c_str() )->GetName() );
	proto->var(("nom_"+sourceName.at(j)).c_str())->setConstant();
	const_cast<RooArgSet*>(proto->set("globalObservables"))->add(*proto->var(("nom_"+sourceName.at(j)).c_str()));

      } 

      params.add(* temp );

    }

    // now make function that linearly interpolates expectation between variations
    for(Int_t i=lowBin; i<highBin; ++i){
      std::stringstream str;
      str<<"_"<<i;

      // get low/high variations to interpolate between
      vector<double> low, high;
      for(unsigned int j=0; j<lowHist.size(); ++j){
        low.push_back( lowHist.at(j)->GetBinContent(i+1) );
        high.push_back( highHist.at(j)->GetBinContent(i+1) );
        cout << "for "+prefix+" bin "+str.str()+" creating linear interp of nominal " << nominal->GetBinContent(i+1) 
       << " in parameter " << sourceName.at(j)
       << " between " << low.back() << " - " <<  high.back() 
       << " about " <<  100.*fabs(low.back() -  high.back() )/nominal->GetBinContent(i+1) << " % error" 
       << endl;
      }
     
      // this is sigma(params), a piece-wise linear interpolation
      LinInterpVar interp( (prefix+str.str()).c_str(), "", params, nominal->GetBinContent(i+1), low, high);

      //    cout << "check: " << interp.getVal() << endl;
      proto->import(interp); // individual params have already been imported in first loop of this function
      
      // now create the product of the overall efficiency times the sigma(params) for this estimate
      proto->factory(("prod:"+productPrefix+str.str()+"("+prefix+str.str()+","+systTerm+")").c_str() );
         
    }				   

  }

  string HistoToWorkspaceFactory::AddNormFactor(RooWorkspace * proto, string & channel, string & sigmaEpsilon, EstimateSummary & es, bool doRatio){
    string overallNorm_times_sigmaEpsilon ;
    string prodNames;
    vector<EstimateSummary::NormFactor> norm=es.normFactor;
    if(norm.size()){
      for(vector<EstimateSummary::NormFactor>::iterator itr=norm.begin(); itr!=norm.end(); ++itr){
        cout << "making normFactor: " << itr->name << endl;
        // remove "doRatio" and name can be changed when ws gets imported to the combined model.
        std::stringstream range;
        range<<"["<<itr->val<<","<<itr->low<<","<<itr->high<<"]";
        //RooRealVar* var = 0;

        string varname;
        if(!prodNames.empty()) prodNames+=",";
        if(doRatio) {
          varname=itr->name+"_"+channel;
        }
        else {
          varname=itr->name;
        }
	proto->factory((varname+range.str()).c_str());
	if(itr->constant){
	  //	  proto->var(varname.c_str())->setConstant();
	  //	  cout <<"setting " << varname << " constant"<<endl;
	  cout <<"WARNING: Const attribute to <NormFactor> tag is deprecated, will ignore."<<
	    " Instead, add \n\t<ParamSetting Const=\"True\">"<<varname<<"</ParamSetting>\n"<<
	    " to your top-level XML's <Measurment> entry"<< endl;
	}
        prodNames+=varname;
      }
      overallNorm_times_sigmaEpsilon = es.name+"_"+channel+"_overallNorm_x_sigma_epsilon";
      proto->factory(("prod::"+overallNorm_times_sigmaEpsilon+"("+prodNames+","+sigmaEpsilon+")").c_str());
    }

    if(!overallNorm_times_sigmaEpsilon.empty())
      return overallNorm_times_sigmaEpsilon;
    else
      return sigmaEpsilon;
  }        


  void HistoToWorkspaceFactory::AddEfficiencyTerms(RooWorkspace* proto, string prefix, string interpName,
        map<string,pair<double,double> > systMap, 
        vector<string>& likelihoodTermNames, vector<string>& totSystTermNames){
    // add variables for all the relative overall uncertainties we expect
    
    // range is set using defined macro (see top of the page)
    string range=string("[0,")+alpha_Low+","+alpha_High+"]";
    //string range="[0,-1,1]";
    totSystTermNames.push_back(prefix);
    //bool first=true;
    RooArgSet params(prefix.c_str());
    vector<double> lowVec, highVec;
    for(map<string,pair<double,double> >::iterator it=systMap.begin(); it!=systMap.end(); ++it){
      // add efficiency term
      RooRealVar* temp = (RooRealVar*) proto->var((prefix+ it->first).c_str());
      if(!temp){
        temp = (RooRealVar*) proto->factory((prefix+ it->first +range).c_str());

        string command=("Gaussian::"+prefix+it->first+"Constraint("+prefix+it->first+",nom_"+prefix+it->first+"[0.,-10,10],1.)");
        cout << command << endl;
        likelihoodTermNames.push_back(  proto->factory( command.c_str() )->GetName() );
	proto->var(("nom_"+prefix+it->first).c_str())->setConstant();
	const_cast<RooArgSet*>(proto->set("globalObservables"))->add(*proto->var(("nom_"+prefix+it->first).c_str()));

      } 
      params.add(*temp);

      // add constraint in terms of bifrucated gauss with low/high as sigmas
      std::stringstream lowhigh;
      double low = it->second.first; 
      double high = it->second.second;
      lowVec.push_back(low);
      highVec.push_back(high);
      
    }
    if(systMap.size()>0){
      // this is epsilon(alpha_j), a piece-wise linear interpolation
      LinInterpVar interp( (interpName).c_str(), "", params, 1., lowVec, highVec);
      proto->import(interp); // params have already been imported in first loop of this function
    } else{
      // some strange behavior if params,lowVec,highVec are empty.  
      //cout << "WARNING: No OverallSyst terms" << endl;
      RooConstVar interp( (interpName).c_str(), "", 1.);
      proto->import(interp); // params have already been imported in first loop of this function
    }
    
  }


  void  HistoToWorkspaceFactory::MakeTotalExpected(RooWorkspace* proto, string totName, string /**/, string /**/, 
        int lowBin, int highBin, vector<string>& syst_x_expectedPrefixNames, 
        vector<string>& normByNames){

    // for ith bin calculate totN_i =  lumi * sum_j expected_j * syst_j 

    for(Int_t i=lowBin; i<highBin; ++i){
      std::stringstream str;
      str<<"_"<<i;
      string command="sum::"+totName+str.str()+"(";
      //vector<string>::iterator it=syst_x_expectedPrefixNames.begin();
      string prepend="";
      for(unsigned int j=0; j<syst_x_expectedPrefixNames.size();++j){
        command+=prepend+normByNames.at(j)+"*"+syst_x_expectedPrefixNames.at(j)+str.str();
        prepend=",";
      }
      command+=")";
      cout << "function to calculate total: " << command << endl;
      proto->factory(command.c_str());
    }
  }

  void HistoToWorkspaceFactory::AddPoissonTerms(RooWorkspace* proto, string prefix, string obsPrefix, string expPrefix, int lowBin, int highBin, 
           vector<string>& likelihoodTermNames){
    /////////////////////////////////
    // Relate observables to expected for each bin
    // later modify variable named expPrefix_i to be product of terms
    RooArgSet Pois(prefix.c_str());
    for(Int_t i=lowBin; i<highBin; ++i){
      std::stringstream str;
      str<<"_"<<i;
      //string command("Poisson::"+prefix+str.str()+"("+obsPrefix+str.str()+","+expPrefix+str.str()+")");
      string command("Poisson::"+prefix+str.str()+"("+obsPrefix+str.str()+","+expPrefix+str.str()+",1)");//for no rounding
      RooAbsArg* temp = (proto->factory( command.c_str() ) );

      // output
      cout << "Poisson Term " << command << endl;
      ((RooAbsPdf*) temp)->setEvalErrorLoggingMode(RooAbsReal::PrintErrors);
      //cout << temp << endl;

      likelihoodTermNames.push_back( temp->GetName() );
      Pois.add(* temp );
    }  
    proto->defineSet(prefix.c_str(),Pois); // add argset to workspace
  }

   void HistoToWorkspaceFactory::SetObsToExpected(RooWorkspace* proto, string obsPrefix, string expPrefix, int lowBin, int highBin){ 
    /////////////////////////////////
    // set observed to expected
     TTree* tree = new TTree();
     Double_t* obsForTree = new Double_t[highBin-lowBin];
     RooArgList obsList("obsList");

     for(Int_t i=lowBin; i<highBin; ++i){
       std::stringstream str;
       str<<"_"<<i;
       RooRealVar* obs = (RooRealVar*) proto->var((obsPrefix+str.str()).c_str());
       cout << "expected number of events called: " << expPrefix << endl;
       RooAbsReal* exp = proto->function((expPrefix+str.str()).c_str());
       if(obs && exp){
         
         //proto->Print();
         obs->setVal(  exp->getVal() );
         cout << "setting obs"+str.str()+" to expected = " << exp->getVal() << " check: " << obs->getVal() << endl;
         
         // add entry to array and attach to tree
         obsForTree[i] = exp->getVal();
         tree->Branch((obsPrefix+str.str()).c_str(), obsForTree+i ,(obsPrefix+str.str()+"/D").c_str());
         obsList.add(*obs);
       }else{
         cout << "problem retrieving obs or exp " << obsPrefix+str.str() << obs << " " << expPrefix+str.str() << exp << endl;
       }
     }  
     tree->Fill();
     RooDataSet* data = new RooDataSet("expData","", tree, obsList); // one experiment

     proto->import(*data);

  }

  void HistoToWorkspaceFactory::Customize(RooWorkspace* proto, const char* pdfNameChar, map<string,string> renameMap) {
    cout << "in customizations" << endl;
    string pdfName(pdfNameChar);
    map<string,string>::iterator it;
    string edit="EDIT::customized("+pdfName+",";
    string precede="";
    for(it=renameMap.begin(); it!=renameMap.end(); ++it) {
      cout << it->first + "=" + it->second << endl;
      edit+=precede + it->first + "=" + it->second;
      precede=",";
    }
    edit+=")";
    cout << edit<< endl;
    proto->factory( edit.c_str() );
  }

  //_____________________________________________________________
  void HistoToWorkspaceFactory::EditSyst(RooWorkspace* proto, const char* pdfNameChar, map<string,double> gammaSyst, map<string,double> uniformSyst,map<string,double> logNormSyst) {
    //    cout << "in edit, gammamap.size = " << gammaSyst.size() << ", unimap.size = " << uniformSyst.size() << endl;
    string pdfName(pdfNameChar);

    ModelConfig * combined_config = (ModelConfig *) proto->obj("ModelConfig");
    //    const RooArgSet * constrainedParams=combined_config->GetNuisanceParameters();
    //    RooArgSet temp(*constrainedParams);
    string edit="EDIT::newSimPdf("+pdfName+",";
    string editList;
    string lastPdf=pdfName;
    string precede="";
    unsigned int numReplacements = 0;
    unsigned int nskipped = 0;
    map<string,double>::iterator it;

    // add gamma terms and their constraints
    for(it=gammaSyst.begin(); it!=gammaSyst.end(); ++it) {
      //cout << "edit for " << it->first << "with rel uncert = " << it->second << endl;
      if(! proto->var(("alpha_"+it->first).c_str())){
	//cout << "systematic not there" << endl;
	nskipped++; 
	continue;
      }
      numReplacements++;      

      double relativeUncertainty = it->second;
      double scale = 1/sqrt((1+1/pow(relativeUncertainty,2)));
      
      // this is the Gamma PDF and in a form that doesn't have roundoff problems like the Poisson does
      proto->factory(Form("beta_%s[1,0,10]",it->first.c_str()));
      proto->factory(Form("y_%s[%f]",it->first.c_str(),1./pow(relativeUncertainty,2))) ;
      proto->factory(Form("theta_%s[%f]",it->first.c_str(),pow(relativeUncertainty,2))) ;
      proto->factory(Form("Gamma::beta_%sConstraint(beta_%s,sum::k_%s(y_%s,one[1]),theta_%s,zero[0])",
			  it->first.c_str(),
			  it->first.c_str(),
			  it->first.c_str(),
			  it->first.c_str(),
			  it->first.c_str())) ;

      /*
      // this has some problems because N in poisson is rounded to nearest integer     
      proto->factory(Form("Poisson::beta_%sConstraint(y_%s[%f],prod::taub_%s(taus_%s[%f],beta_%s[1,0,5]))",
			  it->first.c_str(),
			  it->first.c_str(),
			  1./pow(relativeUncertainty,2),
			  it->first.c_str(),
			    it->first.c_str(),
			  1./pow(relativeUncertainty,2),
			  it->first.c_str()
			  ) ) ;
      */
      //	combined->factory(Form("expr::alphaOfBeta('(beta-1)/%f',beta)",scale));
      //	combined->factory(Form("expr::alphaOfBeta_%s('(beta_%s-1)/%f',beta_%s)",it->first.c_str(),it->first.c_str(),scale,it->first.c_str()));
      proto->factory(Form("PolyVar::alphaOfBeta_%s(beta_%s,{%f,%f})",it->first.c_str(),it->first.c_str(),-1./scale,1./scale));
	
      // set beta const status to be same as alpha
      if(proto->var(Form("alpha_%s",it->first.c_str()))->isConstant())
	proto->var(Form("beta_%s",it->first.c_str()))->setConstant(true);
      else
	proto->var(Form("beta_%s",it->first.c_str()))->setConstant(false);
      // set alpha const status to true
      //      proto->var(Form("alpha_%s",it->first.c_str()))->setConstant(true);

      // replace alphas with alphaOfBeta and replace constraints
      //cout <<         "alpha_"+it->first+"Constraint=beta_" + it->first+ "Constraint" << endl;
      editList+=precede + "alpha_"+it->first+"Constraint=beta_" + it->first+ "Constraint";
      precede=",";
      //      cout <<         "alpha_"+it->first+"=alphaOfBeta_"+ it->first << endl;
      editList+=precede + "alpha_"+it->first+"=alphaOfBeta_"+ it->first;

      /*
      if( proto->pdf(("alpha_"+it->first+"Constraint").c_str()) && proto->var(("alpha_"+it->first).c_str()) )
      cout << " checked they are there" << proto->pdf(("alpha_"+it->first+"Constraint").c_str()) << " " << proto->var(("alpha_"+it->first).c_str()) << endl;
      else
	cout << "NOT THERE" << endl;
      */

      // EDIT seems to die if the list of edits is too long.  So chunck them up.
      if(numReplacements%10 == 0 && numReplacements+nskipped!=gammaSyst.size()){
	edit="EDIT::"+lastPdf+"_("+lastPdf+","+editList+")";
	lastPdf+="_"; // append an underscore for the edit
	editList=""; // reset edit list
	precede="";
	cout << "Going to issue this edit command\n" << edit<< endl;
	proto->factory( edit.c_str() );
	RooAbsPdf* newOne = proto->pdf(lastPdf.c_str());
	if(!newOne)
	  cout << "\n\n ---------------------\n WARNING: failed to make EDIT\n\n" << endl;
	
      }
    }

    // add uniform terms and their constraints
    for(it=uniformSyst.begin(); it!=uniformSyst.end(); ++it) {
      cout << "edit for " << it->first << "with rel uncert = " << it->second << endl;
      if(! proto->var(("alpha_"+it->first).c_str())){
	cout << "systematic not there" << endl;
	nskipped++; 
	continue;
      }
      numReplacements++;      

      // this is the Uniform PDF
      proto->factory(Form("beta_%s[1,0,10]",it->first.c_str()));
      proto->factory(Form("Uniform::beta_%sConstraint(beta_%s)",it->first.c_str(),it->first.c_str()));
      proto->factory(Form("PolyVar::alphaOfBeta_%s(beta_%s,{-1,1})",it->first.c_str(),it->first.c_str()));
      
      // set beta const status to be same as alpha
      if(proto->var(Form("alpha_%s",it->first.c_str()))->isConstant())
	proto->var(Form("beta_%s",it->first.c_str()))->setConstant(true);
      else
	proto->var(Form("beta_%s",it->first.c_str()))->setConstant(false);
      // set alpha const status to true
      //      proto->var(Form("alpha_%s",it->first.c_str()))->setConstant(true);

      // replace alphas with alphaOfBeta and replace constraints
      cout <<         "alpha_"+it->first+"Constraint=beta_" + it->first+ "Constraint" << endl;
      editList+=precede + "alpha_"+it->first+"Constraint=beta_" + it->first+ "Constraint";
      precede=",";
      cout <<         "alpha_"+it->first+"=alphaOfBeta_"+ it->first << endl;
      editList+=precede + "alpha_"+it->first+"=alphaOfBeta_"+ it->first;

      if( proto->pdf(("alpha_"+it->first+"Constraint").c_str()) && proto->var(("alpha_"+it->first).c_str()) )
	cout << " checked they are there" << proto->pdf(("alpha_"+it->first+"Constraint").c_str()) << " " << proto->var(("alpha_"+it->first).c_str()) << endl;
      else
	cout << "NOT THERE" << endl;

      // EDIT seems to die if the list of edits is too long.  So chunck them up.
      if(numReplacements%10 == 0 && numReplacements+nskipped!=gammaSyst.size()){
	edit="EDIT::"+lastPdf+"_("+lastPdf+","+editList+")";
	lastPdf+="_"; // append an underscore for the edit
	editList=""; // reset edit list
	precede="";
	cout << edit<< endl;
	proto->factory( edit.c_str() );
	RooAbsPdf* newOne = proto->pdf(lastPdf.c_str());
	if(!newOne)
	  cout << "\n\n ---------------------\n WARNING: failed to make EDIT\n\n" << endl;
	
      }
    }

    /////////////////////////////////////////
    ////////////////////////////////////


    // add lognormal terms and their constraints
    for(it=logNormSyst.begin(); it!=logNormSyst.end(); ++it) {
      cout << "edit for " << it->first << "with rel uncert = " << it->second << endl;
      if(! proto->var(("alpha_"+it->first).c_str())){
	cout << "systematic not there" << endl;
	nskipped++; 
	continue;
      }
      numReplacements++;      

      double relativeUncertainty = it->second;
      double kappa = 1+relativeUncertainty;
      // when transforming beta -> alpha, need alpha=1 to be +1sigma value.
      // the P(beta>kappa*\hat(beta)) = 16%
      // and \hat(beta) is 1, thus
      double scale = relativeUncertainty;
      //double scale = kappa; 

      // this is the LogNormal
      proto->factory(Form("beta_%s[1,0,10]",it->first.c_str()));
      proto->factory(Form("kappa_%s[%f]",it->first.c_str(),kappa));
      proto->factory(Form("Lognormal::beta_%sConstraint(beta_%s,one[1],kappa_%s)",
			  it->first.c_str(),
			  it->first.c_str(),
			  it->first.c_str())) ;
      proto->factory(Form("PolyVar::alphaOfBeta_%s(beta_%s,{%f,%f})",it->first.c_str(),it->first.c_str(),-1./scale,1./scale));
      //      proto->factory(Form("PolyVar::alphaOfBeta_%s(beta_%s,{%f,%f})",it->first.c_str(),it->first.c_str(),-1.,1./scale));
      
      // set beta const status to be same as alpha
      if(proto->var(Form("alpha_%s",it->first.c_str()))->isConstant())
	proto->var(Form("beta_%s",it->first.c_str()))->setConstant(true);
      else
	proto->var(Form("beta_%s",it->first.c_str()))->setConstant(false);
      // set alpha const status to true
      //      proto->var(Form("alpha_%s",it->first.c_str()))->setConstant(true);

      // replace alphas with alphaOfBeta and replace constraints
      cout <<         "alpha_"+it->first+"Constraint=beta_" + it->first+ "Constraint" << endl;
      editList+=precede + "alpha_"+it->first+"Constraint=beta_" + it->first+ "Constraint";
      precede=",";
      cout <<         "alpha_"+it->first+"=alphaOfBeta_"+ it->first << endl;
      editList+=precede + "alpha_"+it->first+"=alphaOfBeta_"+ it->first;

      if( proto->pdf(("alpha_"+it->first+"Constraint").c_str()) && proto->var(("alpha_"+it->first).c_str()) )
	cout << " checked they are there" << proto->pdf(("alpha_"+it->first+"Constraint").c_str()) << " " << proto->var(("alpha_"+it->first).c_str()) << endl;
      else
	cout << "NOT THERE" << endl;

      // EDIT seems to die if the list of edits is too long.  So chunck them up.
      if(numReplacements%10 == 0 && numReplacements+nskipped!=gammaSyst.size()){
	edit="EDIT::"+lastPdf+"_("+lastPdf+","+editList+")";
	lastPdf+="_"; // append an underscore for the edit
	editList=""; // reset edit list
	precede="";
	cout << edit<< endl;
	proto->factory( edit.c_str() );
	RooAbsPdf* newOne = proto->pdf(lastPdf.c_str());
	if(!newOne)
	  cout << "\n\n ---------------------\n WARNING: failed to make EDIT\n\n" << endl;
	
      }
    }

    /////////////////////////////////////////
    ////////////////////////////////////

    // commit last bunch of edits
    edit="EDIT::newSimPdf("+lastPdf+","+editList+")";
    cout << edit<< endl;
    proto->factory( edit.c_str() );
    //    proto->writeToFile(("results/model_"+fRowTitle+"_edited.root").c_str());
    RooAbsPdf* newOne = proto->pdf("newSimPdf");
    if(newOne){
      // newOne->graphVizTree(("results/"+pdfName+"_"+fRowTitle+"newSimPdf.dot").c_str());
      combined_config->SetPdf(*newOne);
    }
    else{
      cout << "\n\n ---------------------\n WARNING: failed to make EDIT\n\n" << endl;
    }
  }

  void HistoToWorkspaceFactory::PrintCovarianceMatrix(RooFitResult* result, RooArgSet* params, string filename){
    //    FILE * pFile;
    pFile = fopen ((filename).c_str(),"w"); 


    TIter iti = params->createIterator();
    TIter itj = params->createIterator();
    RooRealVar *myargi, *myargj; 
    fprintf(pFile," ") ;
    while ((myargi = (RooRealVar *)iti.Next())) { 
      if(myargi->isConstant()) continue;
      fprintf(pFile," & %s",  myargi->GetName());
    }
    fprintf(pFile,"\\\\ \\hline \n" );
    iti.Reset();
    while ((myargi = (RooRealVar *)iti.Next())) { 
      if(myargi->isConstant()) continue;
      fprintf(pFile,"%s", myargi->GetName());
      itj.Reset();
      while ((myargj = (RooRealVar *)itj.Next())) { 
        if(myargj->isConstant()) continue;
        cout << myargi->GetName() << "," << myargj->GetName();
        fprintf(pFile, " & %.2f", result->correlation(*myargi, *myargj));
      }
      cout << endl;
      fprintf(pFile, " \\\\\n");
    }
    fclose(pFile);
    
  }


  ///////////////////////////////////////////////
  RooWorkspace* HistoToWorkspaceFactory::MakeSingleChannelModel(vector<EstimateSummary> summary, vector<string> systToFix, bool doRatio)
  {

     if (summary.empty() ) {
        Error("MakeSingleChannelModel","vector of EstimateSummry is empty - return a nullptr");
        return 0; 
     }
    
    // to time the macro
    TStopwatch t;
    t.Start();
    string channel=summary[0].channel;
    cout << "\n\n-------------------\nStarting to process " << channel << " channel" << endl;

    //
    // our main workspace that we are using to construct the model
    //
    RooWorkspace* proto = new RooWorkspace("proto","proto workspace");
    ModelConfig * proto_config = new ModelConfig("ModelConfig", proto);
    proto_config->SetWorkspace(*proto);

    RooArgSet likelihoodTerms("likelihoodTerms");
    vector<string> likelihoodTermNames, totSystTermNames,syst_x_expectedPrefixNames, normalizationNames;

    string prefix, range;

    /////////////////////////////
    // Make observables, set values to observed data if data is specified,
    // otherwise use expected "Asimov" data
    if (summary.at(0).name=="Data") {
      ProcessExpectedHisto(summary.at(0).nominal,proto,"obsN","","",0,100000,fLowBin,fHighBin);
    } else {
      cout << "Will use expected (\"Asimov\") data set" << endl;
      ProcessExpectedHisto(NULL,proto,"obsN","","",0,100000,fLowBin,fHighBin);
    }



    /////////////////////////////
    // shared parameters
    // this is ratio of lumi to nominal lumi.  We will include relative uncertainty in model
    std::stringstream lumiStr;
    // lumi range
    lumiStr<<"["<<fNomLumi<<",0,"<<10.*fNomLumi<<"]";
    proto->factory(("Lumi"+lumiStr.str()).c_str());
    cout << "lumi str = " << lumiStr.str() << endl;
    
    std::stringstream lumiErrorStr;
    //    lumiErrorStr << "nominalLumi["<<fNomLumi << "]," << fLumiError ;
    lumiErrorStr << "nominalLumi["<<fNomLumi << ",0,"<<fNomLumi+10*fLumiError<<"]," << fLumiError ;
    proto->factory(("Gaussian::lumiConstraint(Lumi,"+lumiErrorStr.str()+")").c_str());
    proto->var("nominalLumi")->setConstant();
    proto->defineSet("globalObservables","nominalLumi");
    likelihoodTermNames.push_back("lumiConstraint");
    cout << "lumi Error str = " << lumiErrorStr.str() << endl;
    
    //proto->factory((string("SigXsecOverSM[1.,0.5,1..8]").c_str()));
    ///////////////////////////////////
    // loop through estimates, add expectation, floating bin predictions, 
    // and terms that constrain floating to expectation via uncertainties
    vector<EstimateSummary>::iterator it = summary.begin();
    for(; it!=summary.end(); ++it){
      if(it->name=="Data") continue;

      string overallSystName = it->name+"_"+it->channel+"_epsilon"; 
      string systSourcePrefix = "alpha_";
      AddEfficiencyTerms(proto,systSourcePrefix, overallSystName,
             it->overallSyst, 
             likelihoodTermNames, totSystTermNames);    

      overallSystName=AddNormFactor(proto, channel, overallSystName, *it, doRatio); 
      // get histogram
      TH1* nominal = it->nominal;
      if(it->lowHists.size() == 0){
        cout << it->name+"_"+it->channel+" has no variation histograms " <<endl;
        string expPrefix=it->name+"_"+it->channel+"_expN";
        string syst_x_expectedPrefix=it->name+"_"+it->channel+"_overallSyst_x_Exp";
        ProcessExpectedHisto(nominal,proto,expPrefix,syst_x_expectedPrefix,overallSystName,atoi(NoHistConst_Low),atoi(NoHistConst_High),fLowBin,fHighBin);
        syst_x_expectedPrefixNames.push_back(syst_x_expectedPrefix);
      } else if(it->lowHists.size() != it->highHists.size()){
        cout << "problem in "+it->name+"_"+it->channel 
       << " number of low & high variation histograms don't match" << endl;
        return 0;
      } else {
        string constraintPrefix = it->name+"_"+it->channel+"_Hist_alpha"; // name of source for variation
        string syst_x_expectedPrefix = it->name+"_"+it->channel+"_overallSyst_x_HistSyst";
        LinInterpWithConstraint(proto, nominal, it->lowHists, it->highHists, it->systSourceForHist,
              constraintPrefix, syst_x_expectedPrefix, overallSystName, 
              fLowBin, fHighBin, likelihoodTermNames);
        syst_x_expectedPrefixNames.push_back(syst_x_expectedPrefix);
      }

      //    AddMultiVarGaussConstraint(proto, "exp"+it->first+"N", fLowBin, fHighBin, likelihoodTermNames);

      if(it->normName=="")
        normalizationNames.push_back( "Lumi" );
      else
        normalizationNames.push_back( it->normName);
    }
    //proto->Print();

    ///////////////////////////////////
    // for ith bin calculate totN_i =  lumi * sum_j expected_j * syst_j 
    MakeTotalExpected(proto,channel+"_totN",channel+"_expN","Lumi",fLowBin,fHighBin, 
          syst_x_expectedPrefixNames, normalizationNames);

    /////////////////////////////////
    // Relate observables to expected for each bin
    AddPoissonTerms(proto, "Pois_"+channel, "obsN", channel+"_totN", fLowBin, fHighBin, likelihoodTermNames);

    /////////////////////////////////
    // if no data histogram provided, make asimov data
    if(summary.at(0).name!="Data"){
      SetObsToExpected(proto, "obsN",channel+"_totN", fLowBin, fHighBin);
      cout << " using asimov data" << endl;
    }  else{
      SetObsToExpected(proto, "obsN","obsN", fLowBin, fHighBin);
      cout << " using input data histogram" << endl;
    }

    //////////////////////////////////////
    // fix specified parameters
    for(unsigned int i=0; i<systToFix.size(); ++i){
      RooRealVar* temp = proto->var((systToFix.at(i)).c_str());
      if(temp) temp->setConstant();
      else cout << "could not find variable " << systToFix.at(i) << " could not set it to constant" << endl;
    }

    //////////////////////////////////////
    // final proto model
    for(unsigned int i=0; i<likelihoodTermNames.size(); ++i){
      //    cout << likelihoodTermNames[i] << endl;
      likelihoodTerms.add(* (proto->arg(likelihoodTermNames[i].c_str())) );
    }
    //  likelihoodTerms.Print();

    proto->defineSet("likelihoodTerms",likelihoodTerms);
    //  proto->Print();

    cout <<"-----------------------------------------"<<endl;
    cout <<"import model into workspace" << endl;
    RooProdPdf* model = new RooProdPdf(("model_"+channel).c_str(),
               "product of Poissons accross bins for a single channel",
               likelihoodTerms);
    proto->import(*model,RecycleConflictNodes());

    proto_config->SetPdf(*model);
    proto_config->SetGlobalObservables(*proto->set("globalObservables"));

    proto->import(*proto_config,proto_config->GetName());
    proto->importClassCode();
    //    proto->writeToFile(("results/model_"+channel+".root").c_str());

    return proto;
  }

  RooWorkspace* HistoToWorkspaceFactory::MakeCombinedModel(vector<string> ch_names, vector<RooWorkspace*> chs)
  {

    //
    /// These things were used for debugging. Maybe useful in the future
    //
    //  RooAbsReal::defaultIntegratorConfig()->setEpsAbs(1e-8) ;
    //  RooAbsReal::defaultIntegratorConfig()->setEpsRel(1e-8) ;
    //  RooMsgService::instance().setGlobalKillBelow(RooMsgService::WARNING);
    //  RooMsgService::instance().setGlobalKillBelow(RooMsgService::WARNING) ;
    //  cout << "MsgSvc: " << RooMsgService::instance().globalKillBelow() << " INFO " 
    //       << RooMsgService::INFO << " WARNING " << RooMsgService::WARNING << endl;

    //    RooArgSet* constrainedParams= new RooArgSet("constrainedParams");

     // check inputs (see JIRA-6890)
     if (ch_names.empty() || chs.empty() ) {
        Error("MakeCombinedModel","Input vectors are empty - return a nullptr");
        return 0;
     }
     if (chs.size()  <  ch_names.size() ) {
        Error("MakeCombinedModel","Input vector of workspace has an invalid size - return a nullptr");
        return 0;
     }
     
    map<string, RooAbsPdf*> pdfMap;
    vector<RooAbsPdf*> models;
    stringstream ss;

    RooArgSet globalObs;
    for(unsigned int i = 0; i< ch_names.size(); ++i){
      string channel_name=ch_names[i];

      if (ss.str().empty()) ss << channel_name ;
      else ss << ',' << channel_name ;
      RooWorkspace * ch=chs[i];
      
      RooAbsPdf* model = ch->pdf(("model_"+channel_name).c_str());
      models.push_back(model);
      globalObs.add(*ch->set("globalObservables"));

      //      constrainedParams->add( * ch->set("constrainedParams") );
      pdfMap[channel_name]=model;
    }
    //constrainedParams->Print();

    cout << "\n\n------------------\n Entering combination" << endl;
    RooWorkspace* combined = new RooWorkspace("combined");

    RooCategory* channelCat = (RooCategory*) combined->factory(("channelCat["+ss.str()+"]").c_str());
    RooSimultaneous * simPdf= new RooSimultaneous("simPdf","",pdfMap, *channelCat);
    ModelConfig * combined_config = new ModelConfig("ModelConfig", combined);
    combined_config->SetWorkspace(*combined);
    //    combined_config->SetNuisanceParameters(*constrainedParams);
    combined->import(globalObs);
    combined->defineSet("globalObservables",globalObs);
    combined_config->SetGlobalObservables(*combined->set("globalObservables"));

    ////////////////////////////////////////////
    // Make toy simultaneous dataset
    cout <<"-----------------------------------------"<<endl;
    cout << "create toy data for " << ss.str() << endl;
    
    const RooArgSet* obsN = chs[0]->set("obsN");

    RooDataSet * simData=new RooDataSet("simData","master dataset", *obsN, 
            Index(*channelCat), Import(ch_names[0].c_str(),*((RooDataSet*)chs[0]->data("expData"))));
    for(unsigned int i = 1; i< ch_names.size(); ++i){
      RooDataSet * simData_ch=new RooDataSet("simData","master dataset", *obsN, 
              Index(*channelCat), Import(ch_names[i].c_str(),*((RooDataSet*)chs[i]->data("expData"))));
      simData->append(*simData_ch);
    }
    //for(int i=0; i<simData->numEntries(); ++i)
    //  simData->get(i)->Print("v");

    combined->import(*simData,RecycleConflictNodes());

    cout << "\n\n----------------\n Importing combined model" << endl;
    combined->import(*simPdf,RecycleConflictNodes());
    //combined->import(*simPdf, RenameVariable("SigXsecOverSM","SigXsecOverSM_comb"));
    cout << "check pointer " << simPdf << endl;

    for(unsigned int i=0; i<fSystToFix.size(); ++i){
      // make sure they are fixed
      RooRealVar* temp = combined->var((fSystToFix.at(i)).c_str());
      if(temp) {
        temp->setConstant();
        cout <<"setting " << fSystToFix.at(i) << " constant" << endl;
      }
      else cout << "could not find variable " << fSystToFix.at(i) << " could not set it to constant" << endl;
    }

    ///
    /// writing out the model in graphViz
    /// 
    //    RooAbsPdf* customized=combined->pdf("simPdf"); 
    //combined_config->SetPdf(*customized);
    combined_config->SetPdf(*simPdf);
    //    customized->graphVizTree(("results/"+fResultsPrefixStr.str()+"_simul.dot").c_str());
    combined->import(*combined_config,combined_config->GetName());
    combined->importClassCode();
    //    combined->writeToFile("results/model_combined.root");

    return combined;
  }

  ///////////////////////////////////////////////
   void HistoToWorkspaceFactory::FitModel(RooWorkspace * combined, string channel, string /*model_name*/, string data_name, bool /*doParamInspect*/)
  {

    ModelConfig * combined_config = (ModelConfig *) combined->obj("ModelConfig");
    RooDataSet * simData = (RooDataSet *) combined->obj(data_name.c_str());
    //    const RooArgSet * constrainedParams=combined_config->GetNuisanceParameters();
    const RooArgSet * POIs=combined_config->GetParametersOfInterest();

    /*
          RooRealVar* poi = (RooRealVar*) combined->var("SigXsecOverSM");
          RooArgSet * params= new RooArgSet;
          params->add(*poi);
          combined_config->SetParameters(*params);

          RooAbsData* expData = combined->data("expData");
          RooArgSet* temp =  (RooArgSet*) combined->set("obsN")->Clone("temp");
          temp->add(*poi);
          RooAbsPdf* model=combined_config->GetPdf();
          RooArgSet* constrainedParams = model->getParameters(temp);
          combined->defineSet("constrainedParams", *constrainedParams);
    */

    //RooAbsPdf* model=combined->pdf(model_name.c_str()); 
    RooAbsPdf* model=combined_config->GetPdf();
    //    RooArgSet* allParams = model->getParameters(*simData);

    ///////////////////////////////////////
    //Do combined fit
    //RooMsgService::instance().setGlobalKillBelow(RooMsgService::INFO) ;
    cout << "\n\n---------------" << endl;
    cout << "---------------- Doing "<< channel << " Fit" << endl;
    cout << "---------------\n\n" << endl;
    //    RooFitResult* result = model->fitTo(*simData, Minos(kTRUE), Save(kTRUE), PrintLevel(1));
    model->fitTo(*simData, Minos(kTRUE), PrintLevel(1));
    //    PrintCovarianceMatrix(result, allParams, "results/"+FilePrefixStr(channel)+"_corrMatrix.table" );

    //
    // assuming there is only on poi
    // 
    RooRealVar* poi = 0; // (RooRealVar*) POIs->first();
    // for results tables
    TIterator* params_itr=POIs->createIterator();
    TObject* params_obj=0;
    while((params_obj=params_itr->Next())){
      poi = (RooRealVar*) params_obj;
      cout << "printing results for " << poi->GetName() << " at " << poi->getVal()<< " high " << poi->getErrorLo() << " low " << poi->getErrorHi()<<endl;
    }
    fprintf(pFile, " %.4f / %.4f  ", poi->getErrorLo(), poi->getErrorHi());

    RooAbsReal* nll = model->createNLL(*simData);
    RooAbsReal* profile = nll->createProfile(*poi);
    RooPlot* frame = poi->frame();
    FormatFrameForLikelihood(frame);
    TCanvas* c1 = new TCanvas( channel.c_str(), "",800,600);
    nll->plotOn(frame, ShiftToZero(), LineColor(kRed), LineStyle(kDashed));
    profile->plotOn(frame);
    frame->SetMinimum(0);
    frame->SetMaximum(2.);
    frame->Draw();
    //    c1->SaveAs( ("results/"+FilePrefixStr(channel)+"_profileLR.eps").c_str() );
    c1->SaveAs( (fFileNamePrefix+"_"+channel+"_"+fRowTitle+"_profileLR.eps").c_str() );

    fOut_f->mkdir(channel.c_str())->mkdir("Summary")->cd();

    // an example of calculating profile for a nuisance parameter not poi
    /*
    RooRealVar* alpha_isrfsr = (RooRealVar*) combined->var("alpha_isrfsr");
    RooAbsReal* profile_isrfsr = nll->createProfile(*alpha_isrfsr);
    poi->setVal(0.55);
    poi->setConstant();

    RooPlot* frame_isrfsr = alpha_isrfsr->frame();
    profile_isrfsr->plotOn(frame_isrfsr, Precision(0.1));
    TCanvas c_isrfsr = new TCanvas( "combined", "",800,600);
    FormatFrameForLikelihood(frame_isrfsr, "alpha_{isrfsr}");
    frame_isrfsr->Draw();
    fOut_f->cd("Summary");
    c1->Write((FilePrefixStr(channel).str()+"_profileLR_alpha_isrfsr").c_str() );
    delete frame; delete c1;
    poi->setConstant(kFALSE);
    */

    RooCurve* curve=frame->getCurve();
    Int_t curve_N=curve->GetN();
    Double_t* curve_x=curve->GetX();
    delete frame; delete c1;

    //
    // Verbose output from MINUIT
    //
    /*
    RooMsgService::instance().setGlobalKillBelow(RooFit::DEBUG) ;
    profile->getVal();
    RooMinuit* minuit = ((RooProfileLL*) profile)->minuit();
    minuit->setPrintLevel(5) ; // Print MINUIT messages
    minuit->setVerbose(5) ; // Print RooMinuit messages with parameter 
                                // changes (corresponds to the Verbose() option of fitTo()
    */
  
    Double_t * x_arr = new Double_t[curve_N];
    Double_t * y_arr_nll = new Double_t[curve_N];
//     Double_t y_arr_prof_nll[curve_N];
//     Double_t y_arr_prof[curve_N];

    for(int i=0; i<curve_N; i++){
      double f=curve_x[i];
      poi->setVal(f);
      x_arr[i]=f;
      y_arr_nll[i]=nll->getVal();
    }
    TGraph * g = new TGraph(curve_N, x_arr, y_arr_nll);
    g->SetName((FilePrefixStr(channel)+"_nll").c_str());
    g->Write(); 
    delete g;
    delete [] x_arr;
    delete [] y_arr_nll;

    /** find out what's inside the workspace **/
    //combined->Print();

  }


void HistoToWorkspaceFactory::FormatFrameForLikelihood(RooPlot* frame, string /*XTitle*/, string YTitle){

      gStyle->SetCanvasBorderMode(0);
      gStyle->SetPadBorderMode(0);
      gStyle->SetPadColor(0);
      gStyle->SetCanvasColor(255);
      gStyle->SetTitleFillColor(255);
      gStyle->SetFrameFillColor(0);  
      gStyle->SetStatColor(255);
      
      RooAbsRealLValue* var = frame->getPlotVar();
      double xmin = var->getMin();
      double xmax = var->getMax();
      
      frame->SetTitle("");
      //      frame->GetXaxis()->SetTitle(XTitle.c_str());
      frame->GetXaxis()->SetTitle(var->GetTitle());
      frame->GetYaxis()->SetTitle(YTitle.c_str());
      frame->SetMaximum(2.);
      frame->SetMinimum(0.);
      TLine * line = new TLine(xmin,.5,xmax,.5);
      line->SetLineColor(kGreen);
      TLine * line90 = new TLine(xmin,2.71/2.,xmax,2.71/2.);
      line90->SetLineColor(kGreen);
      TLine * line95 = new TLine(xmin,3.84/2.,xmax,3.84/2.);
      line95->SetLineColor(kGreen);
      frame->addObject(line);
      frame->addObject(line90);
      frame->addObject(line95);
  }

  TDirectory * HistoToWorkspaceFactory::Makedirs( TDirectory * file, vector<string> names ){
    if(! file) return file;
    string path="";
    TDirectory* ptr=0;
    for(vector<string>::iterator itr=names.begin(); itr != names.end(); ++itr){
      if( ! path.empty() ) path+="/";
      path+=(*itr);
      ptr=file->GetDirectory(path.c_str());
      if( ! ptr ) ptr=file->mkdir((*itr).c_str());
      file=file->GetDirectory(path.c_str());
    }
    return ptr;
  }
  TDirectory * HistoToWorkspaceFactory::Mkdir( TDirectory * file, string name ){
    if(! file) return file;
    TDirectory* ptr=0;
    ptr=file->GetDirectory(name.c_str());
    if( ! ptr )  ptr=file->mkdir(name.c_str());
    return ptr;
  }

}
}

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