/*****************************************************************************
 * Project: RooFit                                                           *
 * Package: RooFitCore                                                       *
 * @(#)root/roofitcore:$Id$
 * Authors:                                                                  *
 *   WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu       *
 *   DK, David Kirkby,    UC Irvine,         dkirkby@uci.edu                 *
 *                                                                           *
 * Copyright (c) 2000-2005, Regents of the University of California          *
 *                          and Stanford University. All rights reserved.    *
 *                                                                           *
 * Redistribution and use in source and binary forms,                        *
 * with or without modification, are permitted according to the terms        *
 * listed in LICENSE (http://roofit.sourceforge.net/license.txt)             *
 *****************************************************************************/

//////////////////////////////////////////////////////////////////////////////
//
// BEGIN_HTML
// RooTreeDataStore is the abstract base class for data collection that
// use a TTree as internal storage mechanism
// END_HTML
//

#include "RooFit.h"
#include "RooMsgService.h"
#include "RooTreeDataStore.h"

#include "Riostream.h"
#include "TTree.h"
#include "TChain.h"
#include "TDirectory.h"
#include "TROOT.h"
#include "RooFormulaVar.h"
#include "RooRealVar.h"
#include "RooHistError.h"

#include <iomanip>
using namespace std ;

ClassImp(RooTreeDataStore)
;


Int_t RooTreeDataStore::_defTreeBufSize = 4096 ;



//_____________________________________________________________________________
RooTreeDataStore::RooTreeDataStore() :
  _tree(0),
  _cacheTree(0),
  _cacheOwner(0),
  _defCtor(kTRUE),
  _wgtVar(0),
  _extWgtArray(0),
  _extWgtErrLoArray(0),
  _extWgtErrHiArray(0),
  _extSumW2Array(0),
  _curWgt(1),
  _curWgtErrLo(0),
  _curWgtErrHi(0),
  _curWgtErr(0)
{
}



//_____________________________________________________________________________
RooTreeDataStore::RooTreeDataStore(TTree* t, const RooArgSet& vars, const char* wgtVarName) :
  RooAbsDataStore("blah","blah",varsNoWeight(vars,wgtVarName)),
  _tree(t),
  _cacheTree(0),
  _cacheOwner(0),
  _defCtor(kTRUE),
  _varsww(vars),
  _wgtVar(weightVar(vars,wgtVarName)),
  _extWgtArray(0),
  _extWgtErrLoArray(0),
  _extWgtErrHiArray(0),
  _extSumW2Array(0),
  _curWgt(1)
{
  // Constructor to facilitate reading of legacy RooDataSets
}




//_____________________________________________________________________________
RooTreeDataStore::RooTreeDataStore(const char* name, const char* title, const RooArgSet& vars, const char* wgtVarName) :
  RooAbsDataStore(name,title,varsNoWeight(vars,wgtVarName)),
  _tree(0),
  _cacheTree(0), 
  _cacheOwner(0),
  _defCtor(kFALSE),
  _varsww(vars),
  _wgtVar(weightVar(vars,wgtVarName)),
  _extWgtArray(0),
  _extWgtErrLoArray(0),
  _extWgtErrHiArray(0),
  _extSumW2Array(0),
  _curWgt(1),
  _curWgtErrLo(0),
  _curWgtErrHi(0),
  _curWgtErr(0)
{
  initialize() ;  
}




//_____________________________________________________________________________
RooTreeDataStore::RooTreeDataStore(const char* name, const char* title, const RooArgSet& vars, TTree& t, const RooFormulaVar& select, const char* wgtVarName) :
  RooAbsDataStore(name,title,varsNoWeight(vars,wgtVarName)),
  _tree(0),
  _cacheTree(0),
  _cacheOwner(0),
  _defCtor(kFALSE),
  _varsww(vars),
  _wgtVar(weightVar(vars,wgtVarName)),
  _extWgtArray(0),
  _extWgtErrLoArray(0),
  _extWgtErrHiArray(0),
  _extSumW2Array(0),
  _curWgt(1),
  _curWgtErrLo(0),
  _curWgtErrHi(0),
  _curWgtErr(0)
{
  initialize() ;  
  loadValues(&t,&select) ;
}



//_____________________________________________________________________________
RooTreeDataStore::RooTreeDataStore(const char* name, const char* title, const RooArgSet& vars, TTree& t, const char* selExpr, const char* wgtVarName) :
  RooAbsDataStore(name,title,varsNoWeight(vars,wgtVarName)),
  _tree(0),
  _cacheTree(0),
  _cacheOwner(0),
  _defCtor(kFALSE),
  _varsww(vars),
  _wgtVar(weightVar(vars,wgtVarName)),
  _extWgtArray(0),
  _extWgtErrLoArray(0),
  _extWgtErrHiArray(0),
  _extSumW2Array(0),
  _curWgt(1),
  _curWgtErrLo(0),
  _curWgtErrHi(0),
  _curWgtErr(0)
{
  initialize() ;  

  if (selExpr && *selExpr) {
    // Create a RooFormulaVar cut from given cut expression
    RooFormulaVar select(selExpr,selExpr,_vars) ;
    loadValues(&t,&select);
  } else {
    loadValues(&t);
  }
}



//_____________________________________________________________________________
RooTreeDataStore::RooTreeDataStore(const char* name, const char* title, const RooArgSet& vars, const RooAbsDataStore& tds, const RooFormulaVar& select, const char* wgtVarName) :
  RooAbsDataStore(name,title,varsNoWeight(vars,wgtVarName)),
  _tree(0),
  _cacheTree(0),
  _cacheOwner(0),
  _defCtor(kFALSE),
  _varsww(vars),
  _wgtVar(weightVar(vars,wgtVarName)),
  _extWgtArray(0),
  _extWgtErrLoArray(0),
  _extWgtErrHiArray(0),
  _extSumW2Array(0),
  _curWgt(1),
  _curWgtErrLo(0),
  _curWgtErrHi(0),
  _curWgtErr(0)
{
  initialize() ;  
  loadValues(&tds,&select) ;
}



//_____________________________________________________________________________
RooTreeDataStore::RooTreeDataStore(const char* name, const char* title, const RooArgSet& vars, const RooAbsDataStore& ads, const char* selExpr, const char* wgtVarName) :
  RooAbsDataStore(name,title,varsNoWeight(vars,wgtVarName)),
  _tree(0),
  _cacheTree(0),
  _cacheOwner(0),
  _defCtor(kFALSE),
  _varsww(vars),
  _wgtVar(weightVar(vars,wgtVarName)),
  _extWgtArray(0),
  _extWgtErrLoArray(0),
  _extWgtErrHiArray(0),
  _extSumW2Array(0),
  _curWgt(1),
  _curWgtErrLo(0),
  _curWgtErrHi(0),
  _curWgtErr(0)
{
  initialize() ;  

  if (selExpr && *selExpr) {
    // Create a RooFormulaVar cut from given cut expression
    RooFormulaVar select(selExpr,selExpr,_vars) ;
    loadValues(&ads,&select);
  } else {
    loadValues(&ads);
  }
}




//_____________________________________________________________________________
RooTreeDataStore::RooTreeDataStore(const char *name, const char *title, RooAbsDataStore& tds, 
			 const RooArgSet& vars, const RooFormulaVar* cutVar, const char* cutRange,
			 Int_t nStart, Int_t nStop, Bool_t /*copyCache*/, const char* wgtVarName) :
  RooAbsDataStore(name,title,varsNoWeight(vars,wgtVarName)), _defCtor(kFALSE),
  _varsww(vars),
  _wgtVar(weightVar(vars,wgtVarName)),
  _extWgtArray(0),
  _extWgtErrLoArray(0),
  _extWgtErrHiArray(0),
  _extSumW2Array(0),
  _curWgt(1),
  _curWgtErrLo(0),
  _curWgtErrHi(0),
  _curWgtErr(0)
{

  // WVE NEED TO ADJUST THIS FOR WEIGHTS

  // Protected constructor for internal use only
  _tree = 0 ;
  _cacheTree = 0 ;
  createTree(name,title) ;

  // Deep clone cutVar and attach clone to this dataset
  RooFormulaVar* cloneVar = 0;
  if (cutVar) {    
    cloneVar = (RooFormulaVar*) cutVar->cloneTree() ;
    cloneVar->attachDataStore(tds) ;
  }

  // Constructor from existing data set with list of variables that preserves the cache
  initialize();

  attachCache(0,((RooTreeDataStore&)tds)._cachedVars) ;

  // WVE copy values of cached variables here!!!
  _cacheTree->CopyEntries(((RooTreeDataStore&)tds)._cacheTree) ;
  _cacheOwner = 0 ;
  
  loadValues(&tds,cloneVar,cutRange,nStart,nStop);

  if (cloneVar) delete cloneVar ;
}



//_____________________________________________________________________________
RooArgSet RooTreeDataStore::varsNoWeight(const RooArgSet& allVars, const char* wgtName) 
{
  // Utility function for constructors
  // Return RooArgSet that is copy of allVars minus variable matching wgtName if specified

  RooArgSet ret(allVars) ;
  if(wgtName) {
    RooAbsArg* wgt = allVars.find(wgtName) ;
    if (wgt) {
      ret.remove(*wgt,kTRUE,kTRUE) ;
    }
  }
  return ret ;
}



//_____________________________________________________________________________
RooRealVar* RooTreeDataStore::weightVar(const RooArgSet& allVars, const char* wgtName) 
{
  // Utility function for constructors
  // Return pointer to weight variable if it is defined

  if(wgtName) {
    RooRealVar* wgt = dynamic_cast<RooRealVar*>(allVars.find(wgtName)) ;
    return wgt ;
  } 
  return 0 ;
}




//_____________________________________________________________________________
void RooTreeDataStore::attachCache(const RooAbsArg* newOwner, const RooArgSet& cachedVarsIn) 
{
  // Initialize cache of dataset: attach variables of cache ArgSet
  // to the corresponding TTree branches

  // iterate over the cache variables for this dataset
  _cachedVars.removeAll() ;
  TIterator* iter = cachedVarsIn.createIterator() ;
  RooAbsArg *var;
  while((0 != (var= (RooAbsArg*)iter->Next()))) {    
    var->attachToTree(*_cacheTree,_defTreeBufSize) ;
    _cachedVars.add(*var) ;
  }
  delete iter ;
  _cacheOwner = newOwner ;

}






//_____________________________________________________________________________
RooTreeDataStore::RooTreeDataStore(const RooTreeDataStore& other, const char* newname) :
  RooAbsDataStore(other,newname),
  _tree(0),
  _cacheTree(0),
  _defCtor(kFALSE),
  _varsww(other._varsww),
  _wgtVar(other._wgtVar),
  _extWgtArray(other._extWgtArray),
  _extWgtErrLoArray(other._extWgtErrLoArray),
  _extWgtErrHiArray(other._extWgtErrHiArray),
  _extSumW2Array(other._extSumW2Array),
  _curWgt(other._curWgt),
  _curWgtErrLo(other._curWgtErrLo),
  _curWgtErrHi(other._curWgtErrHi),
  _curWgtErr(other._curWgtErr)
{
  initialize() ;  
  loadValues(&other) ;
}


//_____________________________________________________________________________
RooTreeDataStore::RooTreeDataStore(const RooTreeDataStore& other, const RooArgSet& vars, const char* newname) :
  RooAbsDataStore(other,varsNoWeight(vars,other._wgtVar?other._wgtVar->GetName():0),newname),
  _tree(0),
  _cacheTree(0),
  _defCtor(kFALSE),
  _varsww(vars),
  _wgtVar(other._wgtVar?weightVar(vars,other._wgtVar->GetName()):0),
  _extWgtArray(other._extWgtArray),
  _extWgtErrLoArray(other._extWgtErrLoArray),
  _extWgtErrHiArray(other._extWgtErrHiArray),
  _extSumW2Array(other._extSumW2Array),
  _curWgt(other._curWgt),
  _curWgtErrLo(other._curWgtErrLo),
  _curWgtErrHi(other._curWgtErrHi),
  _curWgtErr(other._curWgtErr)
{
  initialize() ;  
  loadValues(&other) ;
}




//_____________________________________________________________________________
RooTreeDataStore::~RooTreeDataStore()
{
  // Destructor
  if (_tree) {
    delete _tree ;
  }
  if (_cacheTree) {
    delete _cacheTree ;
  }
}



//_____________________________________________________________________________
void RooTreeDataStore::initialize() 
{
  // One-time initialization common to all constructor forms.  Attach
  // variables of internal ArgSet to the corresponding TTree branches

  // Recreate (empty) cache tree
  createTree(GetName(),GetTitle()) ;

  // Attach each variable to the dataset
  TIterator* iter = _varsww.createIterator() ;
  RooAbsArg *var;
  while((0 != (var= (RooAbsArg*)iter->Next()))) {
    var->attachToTree(*_tree,_defTreeBufSize) ;
  }
  delete iter ;
}





//_____________________________________________________________________________
void RooTreeDataStore::createTree(const char* name, const char* title)
{
  // Create TTree object that lives in memory, independent of current
  // location of gDirectory

  TString pwd(gDirectory->GetPath()) ;
  TString memDir(gROOT->GetName()) ;
  memDir.Append(":/") ;
  Bool_t notInMemNow= (pwd!=memDir) ;

  // cout << "RooTreeData::createTree pwd=" << pwd << " memDir=" << memDir << " notInMemNow = " << (notInMemNow?"T":"F") << endl ;

  if (notInMemNow) {
    gDirectory->cd(memDir) ;
  }

  if (!_tree) {
    _tree = new TTree(name,title) ;
    _tree->SetDirectory(0) ;
    gDirectory->RecursiveRemove(_tree) ;
  }
  if (!_cacheTree) {
    _cacheTree = new TTree(name,title) ;
    _cacheTree->SetDirectory(0) ;
    gDirectory->RecursiveRemove(_cacheTree) ;
  }

  if (notInMemNow) {
    gDirectory->cd(pwd) ;
  }
  
}




//_____________________________________________________________________________
void RooTreeDataStore::loadValues(const TTree *t, const RooFormulaVar* select, const char* /*rangeName*/, Int_t /*nStart*/, Int_t /*nStop*/) 
{
  // Load values from tree 't' into this data collection, optionally
  // selecting events using 'select' RooFormulaVar
  //
  // The source tree 't' is first clone as not disturb its branch
  // structure when retrieving information from it.

  // Clone source tree
  // WVE Clone() crashes on trees, CloneTree() crashes on tchains :-(

  // Change directory to memory dir before cloning tree to avoid ROOT errors
  TString pwd(gDirectory->GetPath()) ;
  TString memDir(gROOT->GetName()) ;
  memDir.Append(":/") ;
  Bool_t notInMemNow= (pwd!=memDir) ;

  if (notInMemNow) {
    gDirectory->cd(memDir) ;
  }

  TTree* tClone ;
  if (dynamic_cast<const TChain*>(t)) {
    tClone = (TTree*) t->Clone() ; 
  } else {
    tClone = ((TTree*)t)->CloneTree() ;
  }

  // Change directory back to original directory
  tClone->SetDirectory(0) ;

  if (notInMemNow) {
    gDirectory->cd(pwd) ;
  }
    
  // Clone list of variables  
  RooArgSet *sourceArgSet = (RooArgSet*) _varsww.snapshot(kFALSE) ;
  
  // Attach args in cloned list to cloned source tree
  TIterator* sourceIter =  sourceArgSet->createIterator() ;
  RooAbsArg* sourceArg = 0;
  while ((sourceArg=(RooAbsArg*)sourceIter->Next())) {
    sourceArg->attachToTree(*tClone,_defTreeBufSize) ;
  }

  // Redirect formula servers to sourceArgSet
  RooFormulaVar* selectClone(0) ;
  if (select) {
    selectClone = (RooFormulaVar*) select->cloneTree() ;
    selectClone->recursiveRedirectServers(*sourceArgSet) ;
    selectClone->setOperMode(RooAbsArg::ADirty,kTRUE) ;
  }

  // Loop over events in source tree   
  RooAbsArg* destArg = 0;
  TIterator* destIter = _varsww.createIterator() ;
  Int_t numInvalid(0) ;
  Int_t nevent= (Int_t)tClone->GetEntries();
  for(Int_t i=0; i < nevent; ++i) {
    Int_t entryNumber=tClone->GetEntryNumber(i);
    if (entryNumber<0) break;
    tClone->GetEntry(entryNumber,1);
 
    // Copy from source to destination
     destIter->Reset() ;
     sourceIter->Reset() ;
     Bool_t allOK(kTRUE) ;
     while ((destArg = (RooAbsArg*)destIter->Next())) {              
       sourceArg = (RooAbsArg*) sourceIter->Next() ;
       destArg->copyCache(sourceArg) ;
       sourceArg->copyCache(destArg) ;
       if (!destArg->isValid()) {
	 numInvalid++ ;
	 allOK=kFALSE ;
	 break ;
       }       
     }   

     // Does this event pass the cuts?
     if (!allOK || (selectClone && selectClone->getVal()==0)) {
       continue ; 
     }

     fill() ;
  }
  delete destIter ;

  if (numInvalid>0) {
    coutI(Eval) << "RooTreeDataStore::loadValues(" << GetName() << ") Ignored " << numInvalid << " out of range events" << endl ;
  }
  
  SetTitle(t->GetTitle());

  delete sourceIter ;
  delete sourceArgSet ;
  delete selectClone ;
  delete tClone ;
}






//_____________________________________________________________________________
void RooTreeDataStore::loadValues(const RooAbsDataStore *ads, const RooFormulaVar* select, 
				  const char* rangeName, Int_t nStart, Int_t nStop)  
{
  // Load values from dataset 't' into this data collection, optionally
  // selecting events using 'select' RooFormulaVar
  //

  // Redirect formula servers to source data row
  RooFormulaVar* selectClone(0) ;
  if (select) {
    selectClone = (RooFormulaVar*) select->cloneTree() ;
    selectClone->recursiveRedirectServers(*ads->get()) ;
    selectClone->setOperMode(RooAbsArg::ADirty,kTRUE) ;
  }

  // Force RDS internal initialization
  ads->get(0) ;

  // Loop over events in source tree   
  RooAbsArg* arg = 0;
  TIterator* destIter = _varsww.createIterator() ;
  Int_t nevent = nStop < ads->numEntries() ? nStop : ads->numEntries() ;
  Bool_t allValid ;

  Bool_t isTDS = dynamic_cast<const RooTreeDataStore*>(ads) ;
  if (isTDS) {
    ((RooTreeDataStore*)(ads))->resetBuffers() ;
  }
  for(Int_t i=nStart; i < nevent ; ++i) {
    ads->get(i) ;

    // Does this event pass the cuts?
    if (selectClone && selectClone->getVal()==0) {
      continue ; 
    }


    if (isTDS) {
      _varsww.assignValueOnly(((RooTreeDataStore*)ads)->_varsww) ;
    } else {
      _varsww.assignValueOnly(*ads->get()) ;
    }

    destIter->Reset() ;
    // Check that all copied values are valid
    allValid=kTRUE ;
    while((arg=(RooAbsArg*)destIter->Next())) {
      if (!arg->isValid() || (rangeName && !arg->inRange(rangeName))) {
	//cout << "arg " << arg->GetName() << " is not valid" << endl ;
	//arg->Print("v") ;
	allValid=kFALSE ;
	break ;
      }
    }
    //cout << "RooTreeData::loadValues(" << GetName() << ") allValid = " << (allValid?"T":"F") << endl ;
    if (!allValid) {
      continue ;
    }
    
    _cachedVars = ((RooTreeDataStore*)ads)->_cachedVars ;
    fill() ;
   }
  delete destIter ;
  if (isTDS) {
    ((RooTreeDataStore*)(ads))->restoreAlternateBuffers() ;
  }
  
  delete selectClone ;
  SetTitle(ads->GetTitle());
}



//_____________________________________________________________________________
Bool_t RooTreeDataStore::valid() const 
{
  // Return true if currently loaded coordinate is considered valid within
  // the current range definitions of all observables
  return kTRUE ;
}




//_____________________________________________________________________________
Int_t RooTreeDataStore::fill()
{
   // Interface function to TTree::Fill
   return _tree->Fill() ;
}
 


//_____________________________________________________________________________
const RooArgSet* RooTreeDataStore::get(Int_t index) const 
{
  // Load the n-th data point (n='index') in memory
  // and return a pointer to the internal RooArgSet
  // holding its coordinates.

  checkInit() ;

  Int_t ret = ((RooTreeDataStore*)this)->GetEntry(index, 1) ;

  if(!ret) return 0;

  if (_doDirtyProp) {
    // Raise all dirty flags 
    _iterator->Reset() ;
    RooAbsArg* var = 0;
    while ((var=(RooAbsArg*)_iterator->Next())) {
      var->setValueDirty() ; // This triggers recalculation of all clients
    } 
    
    _cacheIter->Reset() ;
    while ((var=(RooAbsArg*)_cacheIter->Next())) {
      var->setValueDirty()  ; // This triggers recalculation of all clients, but doesn't recalculate self
      var->clearValueDirty() ; 
    } 
  }
  
  // Update current weight cache
  if (_extWgtArray) {

    // If external array is specified use that  
    _curWgt = _extWgtArray[index] ;
    _curWgtErrLo = _extWgtErrLoArray[index] ;
    _curWgtErrHi = _extWgtErrHiArray[index] ;
    _curWgtErr   = sqrt(_extSumW2Array[index]) ;

  } else if (_wgtVar) {

    // Otherwise look for weight variable
    _curWgt = _wgtVar->getVal() ;
    _curWgtErrLo = _wgtVar->getAsymErrorLo() ;
    _curWgtErrHi = _wgtVar->getAsymErrorHi() ;
    _curWgtErr   = _wgtVar->hasAsymError() ? ((_wgtVar->getAsymErrorHi() - _wgtVar->getAsymErrorLo())/2)  : _wgtVar->getError() ;

  } else {

    // Otherwise return 1 
    _curWgt=1.0 ;
    _curWgtErrLo = 0 ;
    _curWgtErrHi = 0 ;
    _curWgtErr = 0 ;
    
  }

  return &_vars;
}



//_____________________________________________________________________________
Double_t RooTreeDataStore::weight(Int_t index) const 
{
  // Return the weight of the n-th data point (n='index') in memory
  get(index) ;
  return weight() ;
}



//_____________________________________________________________________________
Double_t RooTreeDataStore::weight() const 
{
  // Return the weight of the n-th data point (n='index') in memory
  return _curWgt ;
}


//_____________________________________________________________________________
Double_t RooTreeDataStore::weightError(RooAbsData::ErrorType etype) const 
{
  if (_extWgtArray) {

    // We have a weight array, use that info

    // Return symmetric error on current bin calculated either from Poisson statistics or from SumOfWeights
    Double_t lo,hi ;
    weightError(lo,hi,etype) ;
    return (lo+hi)/2 ;

   } else if (_wgtVar) {

    // We have a a weight variable, use that info
    if (_wgtVar->hasAsymError()) {
      return ( _wgtVar->getAsymErrorHi() - _wgtVar->getAsymErrorLo() ) / 2 ;
    } else {
      return _wgtVar->getError() ;    
    }

  } else {

    // We have no weights
    return 0 ;

  }
}



//_____________________________________________________________________________
void RooTreeDataStore::weightError(Double_t& lo, Double_t& hi, RooAbsData::ErrorType etype) const
{
  if (_extWgtArray) {
    
    // We have a weight array, use that info
    switch (etype) {
      
    case RooAbsData::Auto:
      throw string(Form("RooDataHist::weightError(%s) error type Auto not allowed here",GetName())) ;
      break ;
      
    case RooAbsData::Expected:
      throw string(Form("RooDataHist::weightError(%s) error type Expected not allowed here",GetName())) ;
      break ;
      
    case RooAbsData::Poisson:
      // Weight may be preset or precalculated    
      if (_curWgtErrLo>=0) {
	lo = _curWgtErrLo ;
	hi = _curWgtErrHi ;
	return ;
      }
      
      // Otherwise Calculate poisson errors
      Double_t ym,yp ;  
      RooHistError::instance().getPoissonInterval(Int_t(weight()+0.5),ym,yp,1) ;
      lo = weight()-ym ;
      hi = yp-weight() ;
      return ;
      
    case RooAbsData::SumW2:
      lo = _curWgtErr ;
      hi = _curWgtErr ;
      return ;
      
    case RooAbsData::None:
      lo = 0 ;
      hi = 0 ;
      return ;
    }    
    
  } else if (_wgtVar) {

    // We have a a weight variable, use that info
    if (_wgtVar->hasAsymError()) {
      hi = _wgtVar->getAsymErrorHi() ;
      lo = _wgtVar->getAsymErrorLo() ;
    } else {
      hi = _wgtVar->getError() ;
      lo = _wgtVar->getError() ;
    }  

  } else {

    // We are unweighted
    lo=0 ;
    hi=0 ;

  }
}


//_____________________________________________________________________________
Bool_t RooTreeDataStore::changeObservableName(const char* from, const char* to) 
{
  // Change name of internal observable named 'from' into 'to'

  // Find observable to be changed
  RooAbsArg* var = _vars.find(from) ;

  // Check that we found it
  if (!var) {
    coutE(InputArguments) << "RooTreeDataStore::changeObservableName(" << GetName() << " no observable " << from << " in this dataset" << endl ;
    return kTRUE ;
  }

  // Process name change
  TString oldBranchName = var->cleanBranchName() ;
  var->SetName(to) ;  

  // Change the branch name as well 
  if (_tree->GetBranch(oldBranchName.Data())) {

    // Simple case varName = branchName
    _tree->GetBranch(oldBranchName.Data())->SetName(var->cleanBranchName().Data()) ;

    // Process any error branch if existing
    if (_tree->GetBranch(Form("%s_err",oldBranchName.Data()))) {
      _tree->GetBranch(Form("%s_err",oldBranchName.Data()))->SetName(Form("%s_err",var->cleanBranchName().Data())) ;
    }
    if (_tree->GetBranch(Form("%s_aerr_lo",oldBranchName.Data()))) {
      _tree->GetBranch(Form("%s_aerr_lo",oldBranchName.Data()))->SetName(Form("%s_aerr_lo",var->cleanBranchName().Data())) ;
    }
    if (_tree->GetBranch(Form("%s_aerr_hi",oldBranchName.Data()))) {
      _tree->GetBranch(Form("%s_aerr_hi",oldBranchName.Data()))->SetName(Form("%s_aerr_hi",var->cleanBranchName().Data())) ;
    }

  } else {

    // Native category case branchNames = varName_idx and varName_lbl
    if (_tree->GetBranch(Form("%s_idx",oldBranchName.Data()))) {
      _tree->GetBranch(Form("%s_idx",oldBranchName.Data()))->SetName(Form("%s_idx",var->cleanBranchName().Data())) ;
    }
    if (_tree->GetBranch(Form("%s_lbl",oldBranchName.Data()))) {
      _tree->GetBranch(Form("%s_lbl",oldBranchName.Data()))->SetName(Form("%s_lb",var->cleanBranchName().Data())) ;
    }
    
  }

  return kFALSE ;
}

  

//_____________________________________________________________________________
RooAbsArg* RooTreeDataStore::addColumn(RooAbsArg& newVar, Bool_t adjustRange)
{
  // Add a new column to the data set which holds the pre-calculated values
  // of 'newVar'. This operation is only meaningful if 'newVar' is a derived
  // value.
  //
  // The return value points to the added element holding 'newVar's value
  // in the data collection. The element is always the corresponding fundamental
  // type of 'newVar' (e.g. a RooRealVar if 'newVar' is a RooFormulaVar)
  //
  // Note: This function is explicitly NOT intended as a speed optimization
  //       opportunity for the user. Components of complex PDFs that can be
  //       precalculated with the dataset are automatically identified as such
  //       and will be precalculated when fitting to a dataset
  // 
  //       By forcibly precalculating functions with non-trivial Jacobians,
  //       or functions of multiple variables occurring in the data set,
  //       using addColumn(), you may alter the outcome of the fit. 
  //
  //       Only in cases where such a modification of fit behaviour is intentional, 
  //       this function should be used. 

  checkInit() ;

  // Create a fundamental object of the right type to hold newVar values
  RooAbsArg* valHolder= newVar.createFundamental();
  // Sanity check that the holder really is fundamental
  if(!valHolder->isFundamental()) {
    coutE(InputArguments) << GetName() << "::addColumn: holder argument is not fundamental: \""
	 << valHolder->GetName() << "\"" << endl;
    return 0;
  }

  // WVE need to reset TTRee buffers to original datamembers here
  resetBuffers() ;

  // Clone variable and attach to cloned tree 
  RooAbsArg* newVarClone = newVar.cloneTree() ;
  newVarClone->recursiveRedirectServers(_vars,kFALSE) ;

  // Attach value place holder to this tree
  ((RooAbsArg*)valHolder)->attachToTree(*_tree,_defTreeBufSize) ;
  _vars.add(*valHolder) ;
  _varsww.add(*valHolder) ;


  // Fill values of of placeholder
  for (int i=0 ; i<GetEntries() ; i++) {
    get(i) ;

    newVarClone->syncCache(&_vars) ;
    valHolder->copyCache(newVarClone) ;
    valHolder->fillTreeBranch(*_tree) ;
  }

  // WVE need to restore TTRee buffers to previous values here
  restoreAlternateBuffers() ;

  if (adjustRange) {
//     // Set range of valHolder to (just) bracket all values stored in the dataset
//     Double_t vlo,vhi ;
//     RooRealVar* rrvVal = dynamic_cast<RooRealVar*>(valHolder) ;
//     if (rrvVal) {
//       getRange(*rrvVal,vlo,vhi,0.05) ;
//       rrvVal->setRange(vlo,vhi) ;  
//     }
  }



  delete newVarClone ;  
  return valHolder ;
}



//_____________________________________________________________________________
RooArgSet* RooTreeDataStore::addColumns(const RooArgList& varList)
{
  // Utility function to add multiple columns in one call
  // See addColumn() for details

  TIterator* vIter = varList.createIterator() ;
  RooAbsArg* var ;

  checkInit() ;

  TList cloneSetList ;
  RooArgSet cloneSet ;
  RooArgSet* holderSet = new RooArgSet ;

  // WVE need to reset TTRee buffers to original datamembers here
  resetBuffers() ;


  while((var=(RooAbsArg*)vIter->Next())) {
    // Create a fundamental object of the right type to hold newVar values
    RooAbsArg* valHolder= var->createFundamental();
    holderSet->add(*valHolder) ;

    // Sanity check that the holder really is fundamental
    if(!valHolder->isFundamental()) {
      coutE(InputArguments) << GetName() << "::addColumn: holder argument is not fundamental: \""
	   << valHolder->GetName() << "\"" << endl;
      return 0;
    }
    
    // Clone variable and attach to cloned tree 
    RooArgSet* newVarCloneList = (RooArgSet*) RooArgSet(*var).snapshot() ;  
    if (!newVarCloneList) {
      coutE(InputArguments) << "RooTreeDataStore::RooTreeData(" << GetName() 
			    << ") Couldn't deep-clone variable " << var->GetName() << ", abort." << endl ;
      return 0 ;
    }
    RooAbsArg* newVarClone = newVarCloneList->find(var->GetName()) ;   
    newVarClone->recursiveRedirectServers(_vars,kFALSE) ;
    newVarClone->recursiveRedirectServers(*holderSet,kFALSE) ;

    cloneSetList.Add(newVarCloneList) ;
    cloneSet.add(*newVarClone) ;

    // Attach value place holder to this tree
    ((RooAbsArg*)valHolder)->attachToTree(*_tree,_defTreeBufSize) ;
    _vars.addOwned(*valHolder) ;
  }
  delete vIter ;


  TIterator* cIter = cloneSet.createIterator() ;
  TIterator* hIter = holderSet->createIterator() ;
  RooAbsArg *cloneArg, *holder ;
  // Fill values of of placeholder
  for (int i=0 ; i<GetEntries() ; i++) {
    get(i) ;

    cIter->Reset() ;
    hIter->Reset() ;
    while((cloneArg=(RooAbsArg*)cIter->Next())) {
      holder = (RooAbsArg*)hIter->Next() ;

      cloneArg->syncCache(&_vars) ;
      holder->copyCache(cloneArg) ;
      holder->fillTreeBranch(*_tree) ;
    }
  }

  // WVE need to restore TTRee buffers to previous values here
  restoreAlternateBuffers() ;
  
  delete cIter ;
  delete hIter ;

  cloneSetList.Delete() ;
  return holderSet ;
}




//_____________________________________________________________________________
RooAbsDataStore* RooTreeDataStore::merge(const RooArgSet& allVars, list<RooAbsDataStore*> dstoreList)
{
  // Merge columns of supplied data set(s) with this data set.  All
  // data sets must have equal number of entries.  In case of
  // duplicate columns the column of the last dataset in the list
  // prevails
    
  RooTreeDataStore* mergedStore = new RooTreeDataStore("merged","merged",allVars) ;

  Int_t nevt = dstoreList.front()->numEntries() ;
  for (int i=0 ; i<nevt ; i++) {

    // Cope data from self
    mergedStore->_vars = *get(i) ;
      
    // Copy variables from merge sets
    for (list<RooAbsDataStore*>::iterator iter = dstoreList.begin() ; iter!=dstoreList.end() ; iter++) {
      const RooArgSet* partSet = (*iter)->get(i) ;
      mergedStore->_vars = *partSet ;
    }

    mergedStore->fill() ;
  }
  return mergedStore ;
}





//_____________________________________________________________________________
void RooTreeDataStore::append(RooAbsDataStore& other) 
{
  Int_t nevt = other.numEntries() ;
  for (int i=0 ; i<nevt ; i++) {  
    _vars = *other.get(i) ;
    if (_wgtVar) {
      _wgtVar->setVal(other.weight()) ;
    }
    
    fill() ;
  }
}


//_____________________________________________________________________________
Double_t RooTreeDataStore::sumEntries() const 
{
  if (_wgtVar) {

    Double_t sum(0), carry(0);
    Int_t nevt = numEntries() ;
    for (int i=0 ; i<nevt ; i++) {  
      get(i) ;
      // Kahan's algorithm for summing to avoid loss of precision
      Double_t y = _wgtVar->getVal() - carry;
      Double_t t = sum + y;
      carry = (t - sum) - y;
      sum = t;
    }    
    return sum ;

  } else if (_extWgtArray) {
    
    Double_t sum(0) , carry(0);
    Int_t nevt = numEntries() ;
    for (int i=0 ; i<nevt ; i++) {  
      // Kahan's algorithm for summing to avoid loss of precision
      Double_t y = _extWgtArray[i] - carry;
      Double_t t = sum + y;
      carry = (t - sum) - y;
      sum = t;
    }    
    return sum ;
    
  } else {

    return numEntries() ;

  }
}




//_____________________________________________________________________________
Int_t RooTreeDataStore::numEntries() const 
{
  return _tree->GetEntries() ;
}



//_____________________________________________________________________________
void RooTreeDataStore::reset() 
{
  Reset() ;
}



//_____________________________________________________________________________
void RooTreeDataStore::cacheArgs(const RooAbsArg* owner, RooArgSet& newVarSet, const RooArgSet* nset, Bool_t /*skipZeroWeights*/) 
{
  // Cache given RooAbsArgs with this tree: The tree is
  // given direct write access of the args internal cache
  // the args values is pre-calculated for all data points
  // in this data collection. Upon a get() call, the
  // internal cache of 'newVar' will be loaded with the
  // precalculated value and it's dirty flag will be cleared.

  checkInit() ;

  _cacheOwner = owner ;

  RooArgSet* constExprVarSet = (RooArgSet*) newVarSet.selectByAttrib("ConstantExpression",kTRUE) ;
  TIterator *iter = constExprVarSet->createIterator() ;
  RooAbsArg *arg ;

  Bool_t doTreeFill = (_cachedVars.getSize()==0) ;

  while ((arg=(RooAbsArg*)iter->Next())) {
    // Attach original newVar to this tree
    arg->attachToTree(*_cacheTree,_defTreeBufSize) ;
    //arg->recursiveRedirectServers(_vars) ;
    _cachedVars.add(*arg) ;
  }

  // WVE need to reset TTRee buffers to original datamembers here
  //resetBuffers() ;

  // Refill regular and cached variables of current tree from clone
  for (int i=0 ; i<GetEntries() ; i++) {
    get(i) ;
    
    // Evaluate the cached variables and store the results
    iter->Reset() ;
    while ((arg=(RooAbsArg*)iter->Next())) {
      arg->setValueDirty() ;
      arg->syncCache(nset) ;
      if (!doTreeFill) {
	arg->fillTreeBranch(*_cacheTree) ;
      }
    }

    if (doTreeFill) {
      _cacheTree->Fill() ;
    }
  }

  // WVE need to restore TTRee buffers to previous values here
  //restoreAlternateBuffers() ;

  delete iter ;
  delete constExprVarSet ;
}




//_____________________________________________________________________________
void RooTreeDataStore::setArgStatus(const RooArgSet& set, Bool_t active) 
{
  // Activate or deactivate the branch status of the TTree branch associated
  // with the given set of dataset observables

  TIterator* iter = set.createIterator() ;
  RooAbsArg* arg ;
  while ((arg=(RooAbsArg*)iter->Next())) {
    RooAbsArg* depArg = _vars.find(arg->GetName()) ;
    if (!depArg) {
      coutE(InputArguments) << "RooTreeDataStore::setArgStatus(" << GetName() 
			    << ") dataset doesn't contain variable " << arg->GetName() << endl ;
      continue ;
    }
    depArg->setTreeBranchStatus(*_tree,active) ;
  }
  delete iter ;
}



//_____________________________________________________________________________
void RooTreeDataStore::resetCache() 
{
  // Remove tree with values of cached observables
  // and clear list of cached observables

  // Empty list of cached functions
  _cachedVars.removeAll() ;

  // Delete & recreate cache tree 
  delete _cacheTree ;
  _cacheTree = 0 ;
  createTree(GetName(),GetTitle()) ;

  return ;
}




//_____________________________________________________________________________
void RooTreeDataStore::attachBuffers(const RooArgSet& extObs) 
{
  _attachedBuffers.removeAll() ;
  RooFIter iter = _varsww.fwdIterator() ;
  RooAbsArg* arg ;
  while((arg=iter.next())) {
    RooAbsArg* extArg = extObs.find(arg->GetName()) ;
    if (extArg) {
      if (arg->getAttribute("StoreError")) {
	extArg->setAttribute("StoreError") ;
      }
      if (arg->getAttribute("StoreAsymError")) {
	extArg->setAttribute("StoreAsymError") ;
      }
      extArg->attachToTree(*_tree) ;
      _attachedBuffers.add(*extArg) ;
    }
  }
}



//_____________________________________________________________________________
void RooTreeDataStore::resetBuffers() 
{ 
  RooFIter iter = _varsww.fwdIterator() ;
  RooAbsArg* arg ;
  while((arg=iter.next())) {
    arg->attachToTree(*_tree) ;
  }
}  



//_____________________________________________________________________________
void RooTreeDataStore::restoreAlternateBuffers() 
{ 
  RooFIter iter = _attachedBuffers.fwdIterator() ;
  RooAbsArg* arg ;
  while((arg=iter.next())) {
    arg->attachToTree(*_tree) ;
  }
}  



//_____________________________________________________________________________
void RooTreeDataStore::checkInit() const
{
  if (_defCtor) {
    const_cast<RooTreeDataStore*>(this)->initialize() ;
    _defCtor = kFALSE ;    
  }
}





//_____________________________________________________________________________
Stat_t RooTreeDataStore::GetEntries() const
{
   // Interface function to TTree::GetEntries
   return _tree->GetEntries() ;
}
 

//_____________________________________________________________________________
void RooTreeDataStore::Reset(Option_t* option)
{
   // Interface function to TTree::Reset
   _tree->Reset(option) ;
}
 

//_____________________________________________________________________________
Int_t RooTreeDataStore::Fill()
{
   // Interface function to TTree::Fill
   return _tree->Fill() ;
}
 

//_____________________________________________________________________________
Int_t RooTreeDataStore::GetEntry(Int_t entry, Int_t getall)
{
   // Interface function to TTree::GetEntry
   Int_t ret1 = _tree->GetEntry(entry,getall) ; 
   if (!ret1) return 0 ;
   _cacheTree->GetEntry(entry,getall) ; 
   return ret1 ;
}


//_____________________________________________________________________________
void RooTreeDataStore::Draw(Option_t* option) 
{ 
  _tree->Draw(option) ; 
}

//______________________________________________________________________________
void RooTreeDataStore::Streamer(TBuffer &R__b)
{
   // Stream an object of class RooTreeDataStore.

   if (R__b.IsReading()) {
      R__b.ReadClassBuffer(RooTreeDataStore::Class(),this);
      initialize() ;
   } else {
      R__b.WriteClassBuffer(RooTreeDataStore::Class(),this);
   }
}

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