/*****************************************************************************
 * 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
// RooRealVar represents a fundamental (non-derived) real valued object
// 
// This class also holds an (asymmetic) error, a default range and
// a optionally series of alternate named ranges.
// END_HTML
//


#include "RooFit.h"
#include "Riostream.h"
#include "RooTrace.h"

#include <math.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <iomanip>
#include "TObjString.h"
#include "TTree.h"
#include "RooRealVar.h"
#include "RooStreamParser.h"
#include "RooErrorVar.h"
#include "RooRangeBinning.h"
#include "RooCmdConfig.h"
#include "RooMsgService.h"
#include "RooParamBinning.h"
#include "RooVectorDataStore.h"


using namespace std;

ClassImp(RooRealVar)
;

Bool_t RooRealVar::_printScientific(kFALSE) ;
Int_t  RooRealVar::_printSigDigits(5) ;
RooSharedPropertiesList RooRealVar::_sharedPropList ;
RooRealVarSharedProperties RooRealVar::_nullProp("00000000-0000-0000-0000-000000000000") ;


//_____________________________________________________________________________
RooRealVar::RooRealVar()  :  _error(0), _asymErrLo(0), _asymErrHi(0), _binning(0), _sharedProp(0)
{  
  // Default constructor
  _fast = kTRUE ;
  TRACE_CREATE
}


//_____________________________________________________________________________
RooRealVar::RooRealVar(const char *name, const char *title,
		       Double_t value, const char *unit) :
  RooAbsRealLValue(name, title, unit), _error(-1), _asymErrLo(1), _asymErrHi(-1), _sharedProp(0)
{
  // Constructor with value and unit

  // _instanceList.registerInstance(this) ;
  _binning = new RooUniformBinning(-1,1,100) ;
  _value = value ;
  _fast = kTRUE ;
  removeRange();
  setConstant(kTRUE) ;
  TRACE_CREATE
}  


//_____________________________________________________________________________
RooRealVar::RooRealVar(const char *name, const char *title,
		       Double_t minValue, Double_t maxValue,
		       const char *unit) :
  RooAbsRealLValue(name, title, unit), _error(-1), _asymErrLo(1), _asymErrHi(-1), _sharedProp(0)
{
  // Constructor with range and unit. Initial value is center of range

  _binning = new RooUniformBinning(minValue,maxValue,100) ;
  _fast = kTRUE ;

  if (RooNumber::isInfinite(minValue)) {
    if (RooNumber::isInfinite(maxValue)) {
      // [-inf,inf]
      _value = 0 ;
    } else {
      // [-inf,X]
      _value= maxValue ;
    }
  } else {
    if (RooNumber::isInfinite(maxValue)) {
      // [X,inf]
      _value = minValue ;
    } else {
      // [X,X]
      _value= 0.5*(minValue + maxValue);
    }
  }

  //   setPlotRange(minValue,maxValue) ;
  setRange(minValue,maxValue) ;
  TRACE_CREATE
}  


//_____________________________________________________________________________
RooRealVar::RooRealVar(const char *name, const char *title,
		       Double_t value, Double_t minValue, Double_t maxValue,
		       const char *unit) :
  RooAbsRealLValue(name, title, unit), _error(-1), _asymErrLo(1), _asymErrHi(-1), _sharedProp(0)
{
  // Constructor with value, range and unit

  _value = value ;
  _fast = kTRUE ;

  _binning = new RooUniformBinning(minValue,maxValue,100) ;
  setRange(minValue,maxValue) ;
  TRACE_CREATE
}  


//_____________________________________________________________________________
RooRealVar::RooRealVar(const RooRealVar& other, const char* name) :
  RooAbsRealLValue(other,name), 
  _error(other._error),
  _asymErrLo(other._asymErrLo),
  _asymErrHi(other._asymErrHi)
{
  // Copy Constructor

  _sharedProp =  (RooRealVarSharedProperties*) _sharedPropList.registerProperties(other.sharedProp()) ;
  _binning = other._binning->clone() ;
  _binning->insertHook(*this) ;
  _fast = kTRUE ;

  //cout << "RooRealVar::cctor(this = " << this << " name = " << GetName() << ", other = " << &other << ")" << endl ;
  
  RooAbsBinning* ab ;
  TIterator* iter = other._altNonSharedBinning.MakeIterator() ;
  while((ab=(RooAbsBinning*)iter->Next())) {
    RooAbsBinning* abc = ab->clone() ;
    //cout << "cloning binning " << ab << " into " << abc << endl ;
    _altNonSharedBinning.Add(abc) ;
    abc->insertHook(*this) ;
  }
  delete iter ;
  
  TRACE_CREATE
  
}



//_____________________________________________________________________________
RooRealVar::~RooRealVar() 
{
  // Destructor
//   cout << "RooRealVar::dtor(" << this << ")" << endl ;

  delete _binning ;
  _altNonSharedBinning.Delete() ;

  if (_sharedProp) {
    _sharedPropList.unregisterProperties(_sharedProp) ;
  }

  TRACE_DESTROY
}


//_____________________________________________________________________________
Double_t RooRealVar::getValV(const RooArgSet*) const 
{ 
  // Return value of variable

  return _value ; 
}



//_____________________________________________________________________________
void RooRealVar::setVal(Double_t value) 
{
  // Set value of variable to 'value'. If 'value' is outside
  // range of object, clip value into range

  Double_t clipValue ;
  inRange(value,0,&clipValue) ;

  if (clipValue != _value) {
    setValueDirty() ;
    _value = clipValue;
  }
}



//_____________________________________________________________________________
void RooRealVar::setVal(Double_t value, const char* rangeName) 
{
  // Set value of variable to 'value'. If 'value' is outside
  // range named 'rangeName' of object, clip value into that range

  Double_t clipValue ;
  inRange(value,rangeName,&clipValue) ;

  if (clipValue != _value) {
    setValueDirty() ;
    _value = clipValue;
  }
}



//_____________________________________________________________________________
RooErrorVar* RooRealVar::errorVar() const 
{
  // Return a RooAbsRealLValue representing the error associated
  // with this variable. The callers takes ownership of the
  // return object

  TString name(GetName()), title(GetTitle()) ;
  name.Append("err") ;
  title.Append(" Error") ;

  return new RooErrorVar(name,title,*this) ;
}



//_____________________________________________________________________________
Bool_t RooRealVar::hasBinning(const char* name) const
{
  // Returns true if variable has a binning with 'name'

  return sharedProp()->_altBinning.FindObject(name) ? kTRUE : kFALSE ;
}



//_____________________________________________________________________________
const RooAbsBinning& RooRealVar::getBinning(const char* name, Bool_t verbose, Bool_t createOnTheFly) const 
{
  // Return binning definition with name. If binning with 'name' is not found it is created
  // on the fly as a clone of the default binning if createOnTheFly is true, otherwise
  // a reference to the default binning is returned. If verbose is true a message
  // is printed if a binning is created on the gly

  return const_cast<RooRealVar*>(this)->getBinning(name, verbose, createOnTheFly) ;
}



//_____________________________________________________________________________
RooAbsBinning& RooRealVar::getBinning(const char* name, Bool_t verbose, Bool_t createOnTheFly) 
{
  // Return binning definition with name. If binning with 'name' is not found it is created
  // on the fly as a clone of the default binning if createOnTheFly is true, otherwise
  // a reference to the default binning is returned. If verbose is true a message
  // is printed if a binning is created on the gly

  // Return default (normalization) binning and range if no name is specified
  if (name==0) {
    return *_binning ;
  }
  
  // Check if non-shared binning with this name has been created already
  RooAbsBinning* binning = (RooAbsBinning*) _altNonSharedBinning.FindObject(name) ;
  if (binning) {
    return *binning ;
  }

  // Check if binning with this name has been created already
  binning = (RooAbsBinning*) (sharedProp()->_altBinning).FindObject(name) ;
  if (binning) {
    return *binning ;
  }


  // Return default binning if requested binning doesn't exist
  if (!createOnTheFly) {
    return *_binning ;
  }  

  // Create a new RooRangeBinning with this name with default range
  binning = new RooRangeBinning(getMin(),getMax(),name) ;
  if (verbose) {
    coutI(Eval) << "RooRealVar::getBinning(" << GetName() << ") new range named '" 
		<< name << "' created with default bounds" << endl ;
  }
  sharedProp()->_altBinning.Add(binning) ;
  
  return *binning ;
}

//_____________________________________________________________________________
std::list<std::string> RooRealVar::getBinningNames() const
{
  // Get a list of all binning names. An empty name implies the default binning and
  // a NULL pointer should be passed to getBinning in this case.
  std::list<std::string> binningNames;
  if (_binning) {
    binningNames.push_back("");
  }

  RooFIter iter = _altNonSharedBinning.fwdIterator();
  const RooAbsArg* binning = 0;
  while((binning = iter.next())) {
    const char* name = binning->GetName();
    binningNames.push_back(string(name));
  }
  iter = sharedProp()->_altBinning.fwdIterator();
  binning = 0;
  while((binning = iter.next())) {
    const char* name = binning->GetName();
    binningNames.push_back(string(name));
  }
  return binningNames;
}

//_____________________________________________________________________________
void RooRealVar::setBinning(const RooAbsBinning& binning, const char* name) 
{
  // Add given binning under name 'name' with this variable. If name is null
  // the binning is installed as the default binning

  // Process insert hooks required for parameterized binnings
  if (!name) {
    RooAbsBinning* newBinning = binning.clone() ;
    if (_binning) {
      _binning->removeHook(*this) ;
      delete _binning ;
    }
    newBinning->insertHook(*this) ;
    _binning = newBinning ;
  } else {

    RooLinkedList* altBinning = binning.isShareable() ? &(sharedProp()->_altBinning) : &_altNonSharedBinning ;

    RooAbsBinning* newBinning = binning.clone() ;

    // Remove any old binning with this name
    RooAbsBinning* oldBinning = (RooAbsBinning*) altBinning->FindObject(name) ;
    if (oldBinning) {
      altBinning->Remove(oldBinning) ;
      oldBinning->removeHook(*this) ;
      delete oldBinning ;
    }

    // Insert new binning in list of alternative binnings
    newBinning->SetName(name) ;
    newBinning->SetTitle(name) ;
    newBinning->insertHook(*this) ;
    altBinning->Add(newBinning) ;
    
  }
  

}



//_____________________________________________________________________________
void RooRealVar::setMin(const char* name, Double_t value) 
{
  // Set minimum of name range to given value. If name is null
  // minimum of default range is set

  // Set new minimum of fit range 
  RooAbsBinning& binning = getBinning(name,kTRUE,kTRUE) ;

  // Check if new limit is consistent
  if (value >= getMax()) {
    coutW(InputArguments) << "RooRealVar::setMin(" << GetName() 
			  << "): Proposed new fit min. larger than max., setting min. to max." << endl ;
    binning.setMin(getMax()) ;
  } else {
    binning.setMin(value) ;
  }

  // Clip current value in window if it fell out
  if (!name) {
    Double_t clipValue ;
    if (!inRange(_value,0,&clipValue)) {
      setVal(clipValue) ;
    }
  }
    
  setShapeDirty() ;
}


//_____________________________________________________________________________
void RooRealVar::setMax(const char* name, Double_t value)
{
  // Set maximum of name range to given value. If name is null
  // maximum of default range is set

  // Set new maximum of fit range 
  RooAbsBinning& binning = getBinning(name,kTRUE,kTRUE) ;

  // Check if new limit is consistent
  if (value < getMin()) {
    coutW(InputArguments) << "RooRealVar::setMax(" << GetName() 
			  << "): Proposed new fit max. smaller than min., setting max. to min." << endl ;
    binning.setMax(getMin()) ;
  } else {
    binning.setMax(value) ;
  }

  // Clip current value in window if it fell out
  if (!name) {
    Double_t clipValue ;
    if (!inRange(_value,0,&clipValue)) {
      setVal(clipValue) ;
    }
  }

  setShapeDirty() ;
}


//_____________________________________________________________________________
void RooRealVar::setRange(const char* name, Double_t min, Double_t max) 
{
  // Set range named 'name to [min,max]. If name is null
  // range of default range is adjusted. If no range with
  // 'name' exists it is created on the fly

  Bool_t exists = name ? (sharedProp()->_altBinning.FindObject(name)?kTRUE:kFALSE) : kTRUE ;

  // Set new fit range 
  RooAbsBinning& binning = getBinning(name,kFALSE,kTRUE) ;

  // Check if new limit is consistent
  if (min>max) {
    coutW(InputArguments) << "RooRealVar::setRange(" << GetName() 
			  << "): Proposed new fit max. smaller than min., setting max. to min." << endl ;
    binning.setRange(min,min) ;
  } else {
    binning.setRange(min,max) ;
  }

  if (!exists) {
    coutI(Eval) << "RooRealVar::setRange(" << GetName() 
		<< ") new range named '" << name << "' created with bounds [" 
		<< min << "," << max << "]" << endl ;
  }

  setShapeDirty() ;  
}



//_____________________________________________________________________________
void RooRealVar::setRange(const char* name, RooAbsReal& min, RooAbsReal& max) 
{
  // Create or modify a parameterized range named 'name' that has external functions
  // min and max parameterizing its boundaries.

  RooParamBinning pb(min,max,100) ;
  setBinning(pb,name) ;
}



//_____________________________________________________________________________
Bool_t RooRealVar::readFromStream(istream& is, Bool_t compact, Bool_t verbose) 
{
  // Read object contents from given stream

  TString token,errorPrefix("RooRealVar::readFromStream(") ;
  errorPrefix.Append(GetName()) ;
  errorPrefix.Append(")") ;
  RooStreamParser parser(is,errorPrefix) ;
  Double_t value(0) ;

  if (compact) {
    // Compact mode: Read single token
    if (parser.readDouble(value,verbose)) return kTRUE ;
    if (isValidReal(value,verbose)) {
      setVal(value) ;
      return kFALSE ;
    } else {
      return kTRUE ;
    }

  } else {
    // Extended mode: Read multiple tokens on a single line   
    Bool_t haveValue(kFALSE) ;
    Bool_t haveConstant(kFALSE) ;
    removeError() ;
    removeAsymError() ;

    Bool_t reprocessToken = kFALSE ;
    while(1) {      
      if (parser.atEOL() || parser.atEOF()) break ;

      if (!reprocessToken) {
	token=parser.readToken() ;
      }
      reprocessToken = kFALSE ;

      if (!token.CompareTo("+")) {
	
	// Expect +/- as 3-token sequence
	if (parser.expectToken("/",kTRUE) ||
	    parser.expectToken("-",kTRUE)) {
	  break ;
	}

	// Next token is error or asymmetric error, check if first char of token is a '('
	TString tmp = parser.readToken() ;
	if (tmp.CompareTo("(")) {
	  // Symmetric error, convert token do double

	  Double_t error ;
	  parser.convertToDouble(tmp,error) ;
	  setError(error) ;

	} else {
	  // Have error
	  Double_t asymErrLo=0., asymErrHi=0.;
	  if (parser.readDouble(asymErrLo,kTRUE) ||
	      parser.expectToken(",",kTRUE) || 
	      parser.readDouble(asymErrHi,kTRUE) ||
	      parser.expectToken(")",kTRUE)) break ;		      
	  setAsymError(asymErrLo,asymErrHi) ;
	}

      } else if (!token.CompareTo("C")) {

	// Set constant
	setConstant(kTRUE) ;
	haveConstant = kTRUE ;

      } else if (!token.CompareTo("P")) {

	// Next tokens are plot limits
	Double_t plotMin(0), plotMax(0) ;
        Int_t plotBins(0) ;
	if (parser.expectToken("(",kTRUE) ||
	    parser.readDouble(plotMin,kTRUE) ||
	    parser.expectToken("-",kTRUE) ||
	    parser.readDouble(plotMax,kTRUE) ||
            parser.expectToken(":",kTRUE) ||
            parser.readInteger(plotBins,kTRUE) || 
	    parser.expectToken(")",kTRUE)) break ;
//   	setPlotRange(plotMin,plotMax) ;
	coutW(Eval) << "RooRealVar::readFromStrem(" << GetName() 
	     << ") WARNING: plot range deprecated, removed P(...) token" << endl ;

      } else if (!token.CompareTo("F")) {

	// Next tokens are fit limits
	Double_t fitMin, fitMax ;
	Int_t fitBins ;
	if (parser.expectToken("(",kTRUE) ||
	    parser.readDouble(fitMin,kTRUE) ||
	    parser.expectToken("-",kTRUE) ||
	    parser.readDouble(fitMax,kTRUE) ||
	    parser.expectToken(":",kTRUE) ||
	    parser.readInteger(fitBins,kTRUE) ||
	    parser.expectToken(")",kTRUE)) break ;
	//setBins(fitBins) ;
	//setRange(fitMin,fitMax) ;
	coutW(Eval) << "RooRealVar::readFromStream(" << GetName() 
	     << ") WARNING: F(lo-hi:bins) token deprecated, use L(lo-hi) B(bins)" << endl ;	
	if (!haveConstant) setConstant(kFALSE) ;

      } else if (!token.CompareTo("L")) {

	// Next tokens are fit limits
	Double_t fitMin = 0.0, fitMax = 0.0;
//	Int_t fitBins ;
	if (parser.expectToken("(",kTRUE) ||
	    parser.readDouble(fitMin,kTRUE) ||
	    parser.expectToken("-",kTRUE) ||
	    parser.readDouble(fitMax,kTRUE) ||
	    parser.expectToken(")",kTRUE)) break ;
	setRange(fitMin,fitMax) ;
	if (!haveConstant) setConstant(kFALSE) ;

      } else if (!token.CompareTo("B")) { 

	// Next tokens are fit limits
	Int_t fitBins = 0;
	if (parser.expectToken("(",kTRUE) ||
	    parser.readInteger(fitBins,kTRUE) ||
	    parser.expectToken(")",kTRUE)) break ;
	setBins(fitBins) ;
	
      } else {
	// Token is value
	if (parser.convertToDouble(token,value)) { parser.zapToEnd() ; break ; }
	haveValue = kTRUE ;
	// Defer value assignment to end
      }
    }    
    if (haveValue) setVal(value) ;
    return kFALSE ;
  }
}


//_____________________________________________________________________________
void RooRealVar::writeToStream(ostream& os, Bool_t compact) const
{
  // Write object contents to given stream

  if (compact) {
    // Write value only
    os << getVal() ;
  } else {    

    // Write value with error (if not zero)    
    if (_printScientific) {
      char fmtVal[16], fmtErr[16] ;
      snprintf(fmtVal,16,"%%.%de",_printSigDigits) ;
      snprintf(fmtErr,16,"%%.%de",(_printSigDigits+1)/2) ;
      if (_value>=0) os << " " ;
      os << Form(fmtVal,_value) ;

      if (hasAsymError()) {
	os << " +/- (" << Form(fmtErr,getAsymErrorLo())
	   << ", " << Form(fmtErr,getAsymErrorHi()) << ")" ;
      } else  if (hasError()) {
	os << " +/- " << Form(fmtErr,getError()) ;
      } 

      os << " " ;
    } else {
      TString* tmp = format(_printSigDigits,"EFA") ;
      os << tmp->Data() << " " ;
      delete tmp ;
    }

    // Append limits if not constants
    if (isConstant()) {
      os << "C " ;
    }      

    // Append fit limits
    os << "L(" ;
    if(hasMin()) {
      os << getMin();
    }
    else {
      os << "-INF";
    }
    if(hasMax()) {
      os << " - " << getMax() ;
    }
    else {
      os << " - +INF";
    }
    os << ") " ;

    if (getBins()!=100) {
      os << "B(" << getBins() << ") " ;
    }

    // Add comment with unit, if unit exists
    if (!_unit.IsNull())
      os << "// [" << getUnit() << "]" ;
  }
}



//_____________________________________________________________________________
void RooRealVar::printValue(ostream& os) const 
{
  // Print value of variable
  os << getVal() ;

  if(hasError() && !hasAsymError()) {
    os << " +/- " << getError() ;
  } else if (hasAsymError()) {
    os << " +/- (" << getAsymErrorLo() << "," << getAsymErrorHi() << ")" ;
  }

}


//_____________________________________________________________________________
void RooRealVar::printExtras(ostream& os) const
{
  // Print extras of variable: (asymmetric) error, constant flag, limits and binning

  // Append limits if not constants
  if (isConstant()) {
    os << "C " ;
  }      

  // Append fit limits
  os << " L(" ;
  if(hasMin()) {
    os << getMin();
  }
  else {
    os << "-INF";
  }
  if(hasMax()) {
    os << " - " << getMax() ;
  }
  else {
    os << " - +INF";
  }
  os << ") " ;
  
  if (getBins()!=100) {
    os << "B(" << getBins() << ") " ;
  }
  
  // Add comment with unit, if unit exists
  if (!_unit.IsNull())
    os << "// [" << getUnit() << "]" ;

//   cout << " _value = " << &_value << " _error = " << &_error ;

  
}


//_____________________________________________________________________________
Int_t RooRealVar::defaultPrintContents(Option_t* opt) const 
{
  // Mapping of Print() option string to RooPrintable contents specifications

  if (opt && TString(opt)=="I") {
    return kName|kClassName|kValue ;
  }
  return kName|kClassName|kValue|kExtras ;
}


//_____________________________________________________________________________
void RooRealVar::printMultiline(ostream& os, Int_t contents, Bool_t verbose, TString indent) const
{
  // Detailed printing interface

  RooAbsRealLValue::printMultiline(os,contents,verbose,indent);
  os << indent << "--- RooRealVar ---" << endl;
  TString unit(_unit);
  if(!unit.IsNull()) unit.Prepend(' ');
  os << indent << "  Error = " << getError() << unit << endl;
}



//_____________________________________________________________________________
TString* RooRealVar::format(const RooCmdArg& formatArg) const 
{
  // Format contents of RooRealVar for pretty printing on RooPlot
  // parameter boxes. This function processes the named arguments
  // taken by paramOn() and translates them to an option string
  // parsed by RooRealVar::format(Int_t sigDigits, const char *options) 

  RooCmdArg tmp(formatArg) ;
  tmp.setProcessRecArgs(kTRUE) ;

  RooCmdConfig pc(Form("RooRealVar::format(%s)",GetName())) ;
  pc.defineString("what","FormatArgs",0,"") ;
  pc.defineInt("autop","FormatArgs::AutoPrecision",0,2) ;
  pc.defineInt("fixedp","FormatArgs::FixedPrecision",0,2) ;
  pc.defineInt("tlatex","FormatArgs::TLatexStyle",0,0) ;
  pc.defineInt("latex","FormatArgs::LatexStyle",0,0) ;
  pc.defineInt("latext","FormatArgs::LatexTableStyle",0,0) ;
  pc.defineInt("verbn","FormatArgs::VerbatimName",0,0) ;
  pc.defineMutex("FormatArgs::TLatexStyle","FormatArgs::LatexStyle","FormatArgs::LatexTableStyle") ;
  pc.defineMutex("FormatArgs::AutoPrecision","FormatArgs::FixedPrecision") ;

  // Process & check varargs 
  pc.process(tmp) ;
  if (!pc.ok(kTRUE)) {
    return 0 ;
  }

  // Extract values from named arguments
  TString options ;
  options = pc.getString("what") ;
  
  if (pc.getInt("tlatex")) {
    options += "L" ;
  } else if (pc.getInt("latex")) {
    options += "X" ;
  } else if (pc.getInt("latext")) {
    options += "Y" ;
  }   

  if (pc.getInt("verbn")) options += "V" ;
  Int_t sigDigits = 2 ;
  if (pc.hasProcessed("FormatArgs::AutoPrecision")) {
    options += "P" ;
    sigDigits = pc.getInt("autop") ;
  } else if (pc.hasProcessed("FormatArgs::FixedPrecision")) {
    options += "F" ;
    sigDigits = pc.getInt("fixedp") ;
  }
  
  return format(sigDigits,options) ;
}




//_____________________________________________________________________________
TString *RooRealVar::format(Int_t sigDigits, const char *options) const 
{
  // Format numeric value of RooRealVar and its error in a variety of ways
  //
  // To control what is shown use the following options
  // N = show name
  // H = hide value
  // E = show error
  // A = show asymmetric error instead of parabolic error (if available)
  // U = show unit
  //
  // To control how it is shown use these options
  // L = TLatex mode
  // X = Latex mode
  // Y = Latex table mode ( '=' replaced by '&' )
  // V = Make name \verbatim in Latex mode
  // P = use error to control shown precision
  // F = force fixed precision
  //
  
  //cout << "format = " << options << endl ;

  // parse the options string
  TString opts(options);
  opts.ToLower();
  Bool_t showName= opts.Contains("n");
  Bool_t hideValue= opts.Contains("h");
  Bool_t showError= opts.Contains("e");
  Bool_t showUnit= opts.Contains("u");
  Bool_t tlatexMode= opts.Contains("l");
  Bool_t latexMode= opts.Contains("x");
  Bool_t latexTableMode = opts.Contains("y") ;
  Bool_t latexVerbatimName = opts.Contains("v") ;

  if (latexTableMode) latexMode = kTRUE ;
  Bool_t asymError= opts.Contains("a") ;
  Bool_t useErrorForPrecision= (((showError && hasError(kFALSE) && !isConstant()) || opts.Contains("p")) && !opts.Contains("f")) ;
  // calculate the precision to use
  if(sigDigits < 1) sigDigits= 1;
  Int_t leadingDigitVal = 0;
  if (useErrorForPrecision) {    
    leadingDigitVal = (Int_t)floor(log10(fabs(_error+1e-10)));
    if (_value==0&&_error==0) leadingDigitVal=0 ;
  } else {
    leadingDigitVal = (Int_t)floor(log10(fabs(_value+1e-10)));
    if (_value==0) leadingDigitVal=0 ;
  }
  Int_t leadingDigitErr= (Int_t)floor(log10(fabs(_error+1e-10)));
  Int_t whereVal= leadingDigitVal - sigDigits + 1;
  Int_t whereErr= leadingDigitErr - sigDigits + 1;
  char fmtVal[16], fmtErr[16];

  if (_value<0) whereVal -= 1 ;
  snprintf(fmtVal,16,"%%.%df", whereVal < 0 ? -whereVal : 0);
  snprintf(fmtErr,16,"%%.%df", whereErr < 0 ? -whereErr : 0);
  TString *text= new TString();
  if(latexMode) text->Append("$");
  // begin the string with "<name> = " if requested
  if(showName) {
    if (latexTableMode && latexVerbatimName) {
      text->Append("\\verb+") ;
    }
    text->Append(getPlotLabel());
    if (latexVerbatimName) text->Append("+") ;

    if (!latexTableMode) {
      text->Append(" = ");
    } else {
      text->Append(" $ & $ ");
    }
  }

  // Add leading space if value is positive
  if (_value>=0) text->Append(" ") ;

  // append our value if requested
  char buffer[256];
  if(!hideValue) {
    chopAt(_value, whereVal);
    snprintf(buffer, 256,fmtVal, _value);
    text->Append(buffer);
  }

  // append our error if requested and this variable is not constant
  if(hasError(kFALSE) && showError && !(asymError && hasAsymError(kFALSE))) {
    if(tlatexMode) {
      text->Append(" #pm ");
    }
    else if(latexMode) {
      text->Append("\\pm ");
    }
    else {
      text->Append(" +/- ");
    }
    snprintf(buffer, 256,fmtErr, getError());
    text->Append(buffer);
  }
  
  if (asymError && hasAsymError() && showError) {
    if(tlatexMode) {
      text->Append(" #pm ");
      text->Append("_{") ;      
      snprintf(buffer, 256,fmtErr, getAsymErrorLo());
      text->Append(buffer);
      text->Append("}^{+") ;
      snprintf(buffer, 256,fmtErr, getAsymErrorHi());
      text->Append(buffer);
      text->Append("}") ;
    }
    else if(latexMode) {
      text->Append("\\pm ");
      text->Append("_{") ;      
      snprintf(buffer, 256,fmtErr, getAsymErrorLo());
      text->Append(buffer);
      text->Append("}^{+") ;
      snprintf(buffer, 256,fmtErr, getAsymErrorHi());
      text->Append(buffer);
      text->Append("}") ;
    }
    else {
      text->Append(" +/- ");
      text->Append(" (") ;      
      snprintf(buffer, 256, fmtErr, getAsymErrorLo());
      text->Append(buffer);
      text->Append(", ") ;
      snprintf(buffer, 256, fmtErr, getAsymErrorHi());
      text->Append(buffer);
      text->Append(")") ;
    }

  }

  // append our units if requested
  if(!_unit.IsNull() && showUnit) {
    text->Append(' ');
    text->Append(_unit);
  }
  if(latexMode) text->Append("$");
  return text;
}



//_____________________________________________________________________________
Double_t RooRealVar::chopAt(Double_t what, Int_t where) const 
{
  // Utility to calculate number of decimals to show
  // based on magnitude of error

  Double_t scale= pow(10.0,where);
  Int_t trunc= (Int_t)floor(what/scale + 0.5);
  return (Double_t)trunc*scale;
}



//_____________________________________________________________________________
void RooRealVar::attachToVStore(RooVectorDataStore& vstore) 
{
  // Overload RooAbsReal::attachToTree to also attach
  // branches for errors  and/or asymmetric errors
  // attribute StoreError and/or StoreAsymError are set

  // Follow usual procedure for value
 
  if (getAttribute("StoreError") || getAttribute("StoreAsymError") || vstore.isFullReal(this) ) {
    
    RooVectorDataStore::RealFullVector* rfv = vstore.addRealFull(this) ;
    rfv->setBuffer(this,&_value) ;
  
    // Attach/create additional branch for error
    if (getAttribute("StoreError") || vstore.hasError(this) ) {
      rfv->setErrorBuffer(&_error) ;
    }
    
    // Attach/create additional branches for asymmetric error
    if (getAttribute("StoreAsymError") || vstore.hasAsymError(this)) {
      rfv->setAsymErrorBuffer(&_asymErrLo,&_asymErrHi) ;
    }

  } else {

    RooAbsReal::attachToVStore(vstore) ;

  }
}



//_____________________________________________________________________________
void RooRealVar::attachToTree(TTree& t, Int_t bufSize)
{
  // Overload RooAbsReal::attachToTree to also attach
  // branches for errors  and/or asymmetric errors
  // attribute StoreError and/or StoreAsymError are set

  // Follow usual procedure for value
  RooAbsReal::attachToTree(t,bufSize) ;
//   cout << "RooRealVar::attachToTree(" << this << ") name = " << GetName() 
//        << " StoreError = " << (getAttribute("StoreError")?"T":"F") << endl ;

  // Attach/create additional branch for error
  if (getAttribute("StoreError")) {
    TString errName(GetName()) ;
    errName.Append("_err") ;
    TBranch* branch = t.GetBranch(errName) ;
    if (branch) {     
      t.SetBranchAddress(errName,&_error) ;
    } else {
      TString format2(errName);
      format2.Append("/D");
      t.Branch(errName, &_error, (const Text_t*)format2, bufSize);
    }
  }

  // Attach/create additional branches for asymmetric error
  if (getAttribute("StoreAsymError")) {
    TString loName(GetName()) ;
    loName.Append("_aerr_lo") ;
    TBranch* lobranch = t.GetBranch(loName) ;
    if (lobranch) {     
      t.SetBranchAddress(loName,&_asymErrLo) ;
    } else {
      TString format2(loName);
      format2.Append("/D");
      t.Branch(loName, &_asymErrLo, (const Text_t*)format2, bufSize);
    }

    TString hiName(GetName()) ;
    hiName.Append("_aerr_hi") ;
    TBranch* hibranch = t.GetBranch(hiName) ;
    if (hibranch) {     
      t.SetBranchAddress(hiName,&_asymErrHi) ;
    } else {
      TString format2(hiName);
      format2.Append("/D");
      t.Branch(hiName, &_asymErrHi, (const Text_t*)format2, bufSize);
    }
  }
}


//_____________________________________________________________________________
void RooRealVar::fillTreeBranch(TTree& t) 
{
  // Overload RooAbsReal::fillTreeBranch to also
  // fill tree branches with (asymmetric) errors
  // if requested.

  // First determine if branch is taken
  TString cleanName(cleanBranchName()) ;
  TBranch* valBranch = t.GetBranch(cleanName) ;
  if (!valBranch) { 
    coutE(Eval) << "RooAbsReal::fillTreeBranch(" << GetName() << ") ERROR: not attached to tree" << endl ;
    assert(0) ;
  }
  valBranch->Fill() ;

  if (getAttribute("StoreError")) {
    TString errName(GetName()) ;
    errName.Append("_err") ;
    TBranch* errBranch = t.GetBranch(errName) ;
    if (errBranch) errBranch->Fill() ;
  }

  if (getAttribute("StoreAsymError")) {
    TString loName(GetName()) ;
    loName.Append("_aerr_lo") ;
    TBranch* loBranch = t.GetBranch(loName) ;
    if (loBranch) loBranch->Fill() ;

    TString hiName(GetName()) ;
    hiName.Append("_aerr_hi") ;
    TBranch* hiBranch = t.GetBranch(hiName) ;
    if (hiBranch) hiBranch->Fill() ;
  }
}



//_____________________________________________________________________________
void RooRealVar::copyCache(const RooAbsArg* source, Bool_t valueOnly, Bool_t setValDirty) 
{
  // Copy the cached value of another RooAbsArg to our cache
  // Warning: This function copies the cached values of source,
  //          it is the callers responsibility to make sure the cache is clean

  // Follow usual procedure for valueklog
  RooAbsReal::copyCache(source,valueOnly,setValDirty) ;

  if (valueOnly) return ;

  // Copy error too, if source has one
  RooRealVar* other = dynamic_cast<RooRealVar*>(const_cast<RooAbsArg*>(source)) ;
  if (other) {
    // Copy additional error value
    _error = other->_error ;
    _asymErrLo = other->_asymErrLo ;
    _asymErrHi = other->_asymErrHi ;
  }
}



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

  UInt_t R__s, R__c;
  if (R__b.IsReading()) {
    
    Version_t R__v = R__b.ReadVersion(&R__s, &R__c); if (R__v) { }
    RooAbsRealLValue::Streamer(R__b);
    if (R__v==1) {
      coutI(Eval) << "RooRealVar::Streamer(" << GetName() << ") converting version 1 data format" << endl ;
      Double_t fitMin, fitMax ;
      Int_t fitBins ; 
      R__b >> fitMin;
      R__b >> fitMax;
      R__b >> fitBins;
      _binning = new RooUniformBinning(fitMin,fitMax,fitBins) ;
    }
    R__b >> _error;
    R__b >> _asymErrLo;
    R__b >> _asymErrHi;
    if (R__v>=2) {
      R__b >> _binning;
    }
    if (R__v==3) {
      R__b >> _sharedProp ;
      _sharedProp = (RooRealVarSharedProperties*) _sharedPropList.registerProperties(_sharedProp,kFALSE) ;
    }
    if (R__v>=4) {
      RooRealVarSharedProperties* tmpSharedProp = new RooRealVarSharedProperties() ;
      tmpSharedProp->Streamer(R__b) ;
      if (!(_nullProp==*tmpSharedProp)) {
	_sharedProp = (RooRealVarSharedProperties*) _sharedPropList.registerProperties(tmpSharedProp,kFALSE) ;
      } else {
	delete tmpSharedProp ;
	_sharedProp = 0 ;
      }
    }
    
    R__b.CheckByteCount(R__s, R__c, RooRealVar::IsA());
    
  } else {
    
    R__c = R__b.WriteVersion(RooRealVar::IsA(), kTRUE);
    RooAbsRealLValue::Streamer(R__b);
    R__b << _error;
    R__b << _asymErrLo;
    R__b << _asymErrHi;
    R__b << _binning;      
    if (_sharedProp) {
      _sharedProp->Streamer(R__b) ;
    } else {
      _nullProp.Streamer(R__b) ;
    }
    R__b.SetByteCount(R__c, kTRUE);      
    
  }
}



//_____________________________________________________________________________
void RooRealVar::deleteSharedProperties()
{
  // No longer used?

  if (_sharedProp) {
    _sharedPropList.unregisterProperties(_sharedProp) ;
    _sharedProp = 0 ;
  }  
}


//_____________________________________________________________________________
void RooRealVar::printScientific(Bool_t flag) 
{ 
  // If true, contents of RooRealVars will be printed in scientific notation

  _printScientific = flag ; 
}


//_____________________________________________________________________________
void RooRealVar::printSigDigits(Int_t ndig) 
{ 
  // Set number of digits to show when printing RooRealVars

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