ROOT logo
/*****************************************************************************
 * 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
// RooAbsTestStatistic is the abstract base class for all test
// statistics. Test statistics that evaluate the PDF at each data
// point should inherit from the RooAbsOptTestStatistic class which
// implements several generic optimizations that can be done for such
// quantities.
//
// This test statistic base class organizes calculation of test
// statistic values for RooSimultaneous PDF as a combination of test
// statistic values for the PDF components of the simultaneous PDF and
// organizes multi-processor parallel calculation of test statistic
// values. For the latter, the test statistic value is calculated in
// partitions in parallel executing processes and a posteriori
// combined in the main thread.
// END_HTML
//


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

#include "RooAbsTestStatistic.h"
#include "RooAbsPdf.h"
#include "RooSimultaneous.h"
#include "RooAbsData.h"
#include "RooArgSet.h"
#include "RooRealVar.h"
#include "RooNLLVar.h"
#include "RooRealMPFE.h"
#include "RooErrorHandler.h"
#include "RooMsgService.h"
#include "TTimeStamp.h"
#include "RooProdPdf.h"
#include "RooRealSumPdf.h"

#include <string>

using namespace std;

ClassImp(RooAbsTestStatistic)
;


//_____________________________________________________________________________
RooAbsTestStatistic::RooAbsTestStatistic() :
  _func(0), _data(0), _projDeps(0), _splitRange(0), _simCount(0),
  _verbose(kFALSE), _init(kFALSE), _gofOpMode(Slave), _nEvents(0), _setNum(0),
  _numSets(0), _extSet(0), _nGof(0), _gofArray(0), _nCPU(1), _mpfeArray(0),
  _mpinterl(RooFit::BulkPartition), _doOffset(kFALSE), _offset(0),
  _offsetCarry(0), _evalCarry(0)
{
      // Default constructor
}



//_____________________________________________________________________________
RooAbsTestStatistic::RooAbsTestStatistic(const char *name, const char *title, RooAbsReal& real, RooAbsData& data,
					 const RooArgSet& projDeps, const char* rangeName, const char* addCoefRangeName,
					 Int_t nCPU, RooFit::MPSplit interleave, Bool_t verbose, Bool_t splitCutRange) :
  RooAbsReal(name,title),
  _paramSet("paramSet","Set of parameters",this),
  _func(&real),
  _data(&data),
  _projDeps((RooArgSet*)projDeps.Clone()),
  _rangeName(rangeName?rangeName:""),
  _addCoefRangeName(addCoefRangeName?addCoefRangeName:""),
  _splitRange(splitCutRange),
  _simCount(1),
  _verbose(verbose),
  _nGof(0),
  _gofArray(0),
  _nCPU(nCPU),
  _mpfeArray(0),
  _mpinterl(interleave),
  _doOffset(kFALSE),
  _offset(0),
  _offsetCarry(0),
  _evalCarry(0)
{
  // Constructor taking function (real), a dataset (data), a set of projected observables (projSet). If
  // rangeName is not null, only events in the dataset inside the range will be used in the test
  // statistic calculation. If addCoefRangeName is not null, all RooAddPdf component of 'real' will be
  // instructed to fix their fraction definitions to the given named range. If nCPU is greater than
  // 1 the test statistic calculation will be paralellized over multiple processes. By default the data
  // is split with 'bulk' partitioning (each process calculates a contigious block of fraction 1/nCPU
  // of the data). For binned data this approach may be suboptimal as the number of bins with >0 entries
  // in each processing block many vary greatly thereby distributing the workload rather unevenly.
  // If interleave is set to true, the interleave partitioning strategy is used where each partition
  // i takes all bins for which (ibin % ncpu == i) which is more likely to result in an even workload.
  // If splitCutRange is true, a different rangeName constructed as rangeName_{catName} will be used
  // as range definition for each index state of a RooSimultaneous

  // Register all parameters as servers
  RooArgSet* params = real.getParameters(&data) ;
  _paramSet.add(*params) ;
  delete params ;

  if (_nCPU>1 || _nCPU==-1) {

    if (_nCPU==-1) {
      _nCPU=1 ;
    }

    _gofOpMode = MPMaster ;

  } else {

    // Determine if RooAbsReal is a RooSimultaneous
    Bool_t simMode = dynamic_cast<RooSimultaneous*>(&real)?kTRUE:kFALSE ;

    if (simMode) {
      _gofOpMode = SimMaster ;
    } else {
      _gofOpMode = Slave ;
    }
  }

  _setNum = 0 ;
  _extSet = 0 ;
  _numSets = 1 ;
  _init = kFALSE ;
  _nEvents = data.numEntries() ;
}



//_____________________________________________________________________________
RooAbsTestStatistic::RooAbsTestStatistic(const RooAbsTestStatistic& other, const char* name) :
  RooAbsReal(other,name),
  _paramSet("paramSet","Set of parameters",this),
  _func(other._func),
  _data(other._data),
  _projDeps((RooArgSet*)other._projDeps->Clone()),
  _rangeName(other._rangeName),
  _addCoefRangeName(other._addCoefRangeName),
  _splitRange(other._splitRange),
  _simCount(1),
  _verbose(other._verbose),
  _nGof(0),
  _gofArray(0),
  _gofSplitMode(other._gofSplitMode),
  _nCPU(other._nCPU),
  _mpfeArray(0),
  _mpinterl(other._mpinterl),
  _doOffset(other._doOffset),
  _offset(other._offset),
  _offsetCarry(other._offsetCarry),
  _evalCarry(other._evalCarry)
{
  // Copy constructor

  // Our parameters are those of original
  _paramSet.add(other._paramSet) ;

  if (_nCPU>1 || _nCPU==-1) {

    if (_nCPU==-1) {
      _nCPU=1 ;
    }
      
    _gofOpMode = MPMaster ;

  } else {

    // Determine if RooAbsReal is a RooSimultaneous
    Bool_t simMode = dynamic_cast<RooSimultaneous*>(_func)?kTRUE:kFALSE ;

    if (simMode) {
      _gofOpMode = SimMaster ;
    } else {
      _gofOpMode = Slave ;
    }
  }

  _setNum = 0 ;
  _extSet = 0 ;
  _numSets = 1 ;
  _init = kFALSE ;
  _nEvents = _data->numEntries() ;


}



//_____________________________________________________________________________
RooAbsTestStatistic::~RooAbsTestStatistic()
{
  // Destructor

  if (MPMaster == _gofOpMode && _init) {
    for (Int_t i = 0; i < _nCPU; ++i) delete _mpfeArray[i];
    delete[] _mpfeArray ;
  }

  if (SimMaster == _gofOpMode && _init) {
    for (Int_t i = 0; i < _nGof; ++i) delete _gofArray[i];
    delete[] _gofArray ;
  }

  delete _projDeps ;

}



//_____________________________________________________________________________
Double_t RooAbsTestStatistic::evaluate() const
{
  // Calculates and return value of test statistic. If the test statistic
  // is calculated from on a RooSimultaneous, the test statistic calculation
  // is performed separately on each simultaneous p.d.f component and associated
  // data and then combined. If the test statistic calculation is parallelized
  // partitions are calculated in nCPU processes and a posteriori combined.

  // One-time Initialization
  if (!_init) {
    const_cast<RooAbsTestStatistic*>(this)->initialize() ;
  }

  if (SimMaster == _gofOpMode) {
    // Evaluate array of owned GOF objects
    Double_t ret = 0.;

    if (_mpinterl == RooFit::BulkPartition || _mpinterl == RooFit::Interleave ) {
      ret = combinedValue((RooAbsReal**)_gofArray,_nGof);
    } else {
      Double_t sum = 0., carry = 0.;
      for (Int_t i = 0 ; i < _nGof; ++i) {
	if (i % _numSets == _setNum || (_mpinterl==RooFit::Hybrid && _gofSplitMode[i] != RooFit::SimComponents )) {
	  Double_t y = _gofArray[i]->getValV();
	  carry += _gofArray[i]->getCarry();
	  y -= carry;
	  const Double_t t = sum + y;
	  carry = (t - sum) - y;
	  sum = t;
	}
      }
      ret = sum ;
      _evalCarry = carry;
    }

    // Only apply global normalization if SimMaster doesn't have MP master
    if (numSets()==1) {
      const Double_t norm = globalNormalization();
      ret /= norm;
      _evalCarry /= norm;
    }

    return ret ;

  } else if (MPMaster == _gofOpMode) {
    
    // Start calculations in parallel
    for (Int_t i = 0; i < _nCPU; ++i) _mpfeArray[i]->calculate();


    Double_t sum(0), carry = 0.;
    for (Int_t i = 0; i < _nCPU; ++i) {
      Double_t y = _mpfeArray[i]->getValV();
      carry += _mpfeArray[i]->getCarry();
      y -= carry;
      const Double_t t = sum + y;
      carry = (t - sum) - y;
      sum = t;
    }

    Double_t ret = sum ;
    _evalCarry = carry;
    return ret ;

  } else {

    // Evaluate as straight FUNC
    Int_t nFirst(0), nLast(_nEvents), nStep(1) ;
    
    switch (_mpinterl) {
    case RooFit::BulkPartition:
      nFirst = _nEvents * _setNum / _numSets ;
      nLast  = _nEvents * (_setNum+1) / _numSets ;
      nStep  = 1 ;
      break;
      
    case RooFit::Interleave:
      nFirst = _setNum ;
      nLast  = _nEvents ;
      nStep  = _numSets ;
      break ;
      
    case RooFit::SimComponents:
      nFirst = 0 ;
      nLast  = _nEvents ;
      nStep  = 1 ;
      break ;
      
    case RooFit::Hybrid:
      throw(std::string("this should never happen")) ;
      break ;
    }

    Double_t ret = evaluatePartition(nFirst,nLast,nStep);

    if (numSets()==1) {
      const Double_t norm = globalNormalization();
      ret /= norm;
      _evalCarry /= norm;
    }
    
    return ret ;

  }
}



//_____________________________________________________________________________
Bool_t RooAbsTestStatistic::initialize()
{
  // One-time initialization of the test statistic. Setup
  // infrastructure for simultaneous p.d.f processing and/or
  // parallelized processing if requested
  
  if (_init) return kFALSE;
  
  if (MPMaster == _gofOpMode) {
    initMPMode(_func,_data,_projDeps,_rangeName.size()?_rangeName.c_str():0,_addCoefRangeName.size()?_addCoefRangeName.c_str():0) ;
  } else if (SimMaster == _gofOpMode) {
    initSimMode((RooSimultaneous*)_func,_data,_projDeps,_rangeName.size()?_rangeName.c_str():0,_addCoefRangeName.size()?_addCoefRangeName.c_str():0) ;
  }
  _init = kTRUE;
  return kFALSE;
}



//_____________________________________________________________________________
Bool_t RooAbsTestStatistic::redirectServersHook(const RooAbsCollection& newServerList, Bool_t mustReplaceAll, Bool_t nameChange, Bool_t)
{
  // Forward server redirect calls to component test statistics
  if (SimMaster == _gofOpMode && _gofArray) {
    // Forward to slaves
    for (Int_t i = 0; i < _nGof; ++i) {
      if (_gofArray[i]) {
	_gofArray[i]->recursiveRedirectServers(newServerList,mustReplaceAll,nameChange);
      }
    }
  } else if (MPMaster == _gofOpMode&& _mpfeArray) {
    // Forward to slaves
    for (Int_t i = 0; i < _nCPU; ++i) {
      if (_mpfeArray[i]) {
	_mpfeArray[i]->recursiveRedirectServers(newServerList,mustReplaceAll,nameChange);
// 	cout << "redirecting servers on " << _mpfeArray[i]->GetName() << endl;
      }
    }
  }
  return kFALSE;
}



//_____________________________________________________________________________
void RooAbsTestStatistic::printCompactTreeHook(ostream& os, const char* indent)
{
  // Add extra information on component test statistics when printing
  // itself as part of a tree structure
  if (SimMaster == _gofOpMode) {
    // Forward to slaves
    os << indent << "RooAbsTestStatistic begin GOF contents" << endl ;
    for (Int_t i = 0; i < _nGof; ++i) {
      if (_gofArray[i]) {
	TString indent2(indent);
	indent2 += Form("[%d] ",i);
	_gofArray[i]->printCompactTreeHook(os,indent2);
      }
    }
    os << indent << "RooAbsTestStatistic end GOF contents" << endl;
  } else if (MPMaster == _gofOpMode) {
    // WVE implement this
  }
}



//_____________________________________________________________________________
void RooAbsTestStatistic::constOptimizeTestStatistic(ConstOpCode opcode, Bool_t doAlsoTrackingOpt)
{
  // Forward constant term optimization management calls to component
  // test statistics
  initialize();
  if (SimMaster == _gofOpMode) {
    // Forward to slaves
    for (Int_t i = 0; i < _nGof; ++i) {
      // In SimComponents Splitting strategy only constOptimize the terms that are actually used
      RooFit::MPSplit effSplit = (_mpinterl!=RooFit::Hybrid) ? _mpinterl : _gofSplitMode[i];
      if ( (i % _numSets == _setNum) || (effSplit != RooFit::SimComponents) ) {
	if (_gofArray[i]) _gofArray[i]->constOptimizeTestStatistic(opcode,doAlsoTrackingOpt);
      }
    }
  } else if (MPMaster == _gofOpMode) {
    for (Int_t i = 0; i < _nCPU; ++i) {
      _mpfeArray[i]->constOptimizeTestStatistic(opcode,doAlsoTrackingOpt);
    }
  }
}



//_____________________________________________________________________________
void RooAbsTestStatistic::setMPSet(Int_t inSetNum, Int_t inNumSets)
{
  // Set MultiProcessor set number identification of this instance
  _setNum = inSetNum; _numSets = inNumSets;
  _extSet = _mpinterl==RooFit::SimComponents ? _setNum : (_numSets - 1);
  
  if (SimMaster == _gofOpMode) {
    // Forward to slaves
    initialize();
    for (Int_t i = 0; i < _nGof; ++i) {
      if (_gofArray[i]) _gofArray[i]->setMPSet(inSetNum,inNumSets);
    }
  }
}



//_____________________________________________________________________________
void RooAbsTestStatistic::initMPMode(RooAbsReal* real, RooAbsData* data, const RooArgSet* projDeps, const char* rangeName, const char* addCoefRangeName)
{
  // Initialize multi-processor calculation mode. Create component test statistics in separate
  // processed that are connected to this process through a RooAbsRealMPFE front-end class.

  _mpfeArray = new pRooRealMPFE[_nCPU];

  // Create proto-goodness-of-fit
  RooAbsTestStatistic* gof = create(GetName(),GetTitle(),*real,*data,*projDeps,rangeName,addCoefRangeName,1,_mpinterl,_verbose,_splitRange);
  gof->recursiveRedirectServers(_paramSet);

  for (Int_t i = 0; i < _nCPU; ++i) {
    gof->setMPSet(i,_nCPU);
    gof->SetName(Form("%s_GOF%d",GetName(),i));
    gof->SetTitle(Form("%s_GOF%d",GetTitle(),i));

    ccoutD(Eval) << "RooAbsTestStatistic::initMPMode: starting remote server process #" << i << endl;
    _mpfeArray[i] = new RooRealMPFE(Form("%s_%lx_MPFE%d",GetName(),(ULong_t)this,i),Form("%s_%lx_MPFE%d",GetTitle(),(ULong_t)this,i),*gof,false);
    //_mpfeArray[i]->setVerbose(kTRUE,kTRUE);
    _mpfeArray[i]->initialize();
    if (i > 0) {
      _mpfeArray[i]->followAsSlave(*_mpfeArray[0]);
    }
  }
  _mpfeArray[_nCPU - 1]->addOwnedComponents(*gof);
  coutI(Eval) << "RooAbsTestStatistic::initMPMode: started " << _nCPU << " remote server process." << endl;
  //cout << "initMPMode --- done" << endl ;
  return ;
}



//_____________________________________________________________________________
void RooAbsTestStatistic::initSimMode(RooSimultaneous* simpdf, RooAbsData* data,
				      const RooArgSet* projDeps, const char* rangeName, const char* addCoefRangeName)
{
  // Initialize simultaneous p.d.f processing mode. Strip simultaneous
  // p.d.f into individual components, split dataset in subset
  // matching each component and create component test statistics for
  // each of them.


  RooAbsCategoryLValue& simCat = (RooAbsCategoryLValue&) simpdf->indexCat();

  TString simCatName(simCat.GetName());
  TList* dsetList = const_cast<RooAbsData*>(data)->split(simCat,processEmptyDataSets());
  if (!dsetList) {
    coutE(Fitting) << "RooAbsTestStatistic::initSimMode(" << GetName() << ") ERROR: index category of simultaneous pdf is missing in dataset, aborting" << endl;
    throw std::string("RooAbsTestStatistic::initSimMode() ERROR, index category of simultaneous pdf is missing in dataset, aborting");
    //RooErrorHandler::softAbort() ;
  }

  // Count number of used states
  Int_t n = 0;
  _nGof = 0;
  RooCatType* type;
  TIterator* catIter = simCat.typeIterator();
  while ((type = (RooCatType*) catIter->Next())) {
    // Retrieve the PDF for this simCat state
    RooAbsPdf* pdf = simpdf->getPdf(type->GetName());
    RooAbsData* dset = (RooAbsData*) dsetList->FindObject(type->GetName());

    if (pdf && dset && (0. != dset->sumEntries() || processEmptyDataSets())) {
      ++_nGof;
    }
  }

  // Allocate arrays
  _gofArray = new pRooAbsTestStatistic[_nGof];
  _gofSplitMode.resize(_nGof);

  // Create array of regular fit contexts, containing subset of data and single fitCat PDF
  catIter->Reset();
  while ((type = (RooCatType*) catIter->Next())) {
    // Retrieve the PDF for this simCat state
    RooAbsPdf* pdf = simpdf->getPdf(type->GetName());
    RooAbsData* dset = (RooAbsData*) dsetList->FindObject(type->GetName());

    if (pdf && dset && (0. != dset->sumEntries() || processEmptyDataSets())) {
      ccoutI(Fitting) << "RooAbsTestStatistic::initSimMode: creating slave calculator #" << n << " for state " << type->GetName()
		     << " (" << dset->numEntries() << " dataset entries)" << endl;

      
      // *** START HERE
      // WVE HACK determine if we have a RooRealSumPdf and then treat it like a binned likelihood
      RooAbsPdf* binnedPdf = 0 ;
      Bool_t binnedL = kFALSE ;
      if (pdf->getAttribute("BinnedLikelihood") && pdf->IsA()->InheritsFrom(RooRealSumPdf::Class())) {
	// Simplest case: top-level of component is a RRSP
	binnedPdf = pdf ;
	binnedL = kTRUE ;
      } else if (pdf->IsA()->InheritsFrom(RooProdPdf::Class())) {
	// Default case: top-level pdf is a product of RRSP and other pdfs
	RooFIter iter = ((RooProdPdf*)pdf)->pdfList().fwdIterator() ;
	RooAbsArg* component ;
	while ((component = iter.next())) {
	  if (component->getAttribute("BinnedLikelihood") && component->IsA()->InheritsFrom(RooRealSumPdf::Class())) {
	    binnedPdf = (RooAbsPdf*) component ;
	    binnedL = kTRUE ;
	  }
	  if (component->getAttribute("MAIN_MEASUREMENT")) {
	    // not really a binned pdf, but this prevents a (potentially) long list of subsidiary measurements to be passed to the slave calculator
	    binnedPdf = (RooAbsPdf*) component ;
	  }
	}
      }
      // WVE END HACK
      // Below here directly pass binnedPdf instead of PROD(binnedPdf,constraints) as constraints are evaluated elsewhere anyway
      // and omitting them reduces model complexity and associated handling/cloning times
      if (_splitRange && rangeName) {
	_gofArray[n] = create(type->GetName(),type->GetName(),(binnedPdf?*binnedPdf:*pdf),*dset,*projDeps,
			      Form("%s_%s",rangeName,type->GetName()),addCoefRangeName,_nCPU*(_mpinterl?-1:1),_mpinterl,_verbose,_splitRange,binnedL);
      } else {
	_gofArray[n] = create(type->GetName(),type->GetName(),(binnedPdf?*binnedPdf:*pdf),*dset,*projDeps,
			      rangeName,addCoefRangeName,_nCPU,_mpinterl,_verbose,_splitRange,binnedL);
      }
      _gofArray[n]->setSimCount(_nGof);
      // *** END HERE

      // Fill per-component split mode with Bulk Partition for now so that Auto will map to bulk-splitting of all components
      if (_mpinterl==RooFit::Hybrid) {
	if (dset->numEntries()<10) {
	  //cout << "RAT::initSim("<< GetName() << ") MP mode is auto, setting split mode for component "<< n << " to SimComponents"<< endl ;
	  _gofSplitMode[n] = RooFit::SimComponents;
	  _gofArray[n]->_mpinterl = RooFit::SimComponents;
	} else {
	  //cout << "RAT::initSim("<< GetName() << ") MP mode is auto, setting split mode for component "<< n << " to BulkPartition"<< endl ;
	  _gofSplitMode[n] = RooFit::BulkPartition;
	  _gofArray[n]->_mpinterl = RooFit::BulkPartition;
	}
      }

      // Servers may have been redirected between instantiation and (deferred) initialization
      RooArgSet* actualParams = pdf->getParameters(dset);
      RooArgSet* selTargetParams = (RooArgSet*) _paramSet.selectCommon(*actualParams);

      _gofArray[n]->recursiveRedirectServers(*selTargetParams);

      delete selTargetParams;
      delete actualParams;

      ++n;

    } else {
      if ((!dset || (0. != dset->sumEntries() && !processEmptyDataSets())) && pdf) {
	if (_verbose) {
	  ccoutD(Fitting) << "RooAbsTestStatistic::initSimMode: state " << type->GetName()
			 << " has no data entries, no slave calculator created" << endl;
	}
      }
    }
  }
  coutI(Fitting) << "RooAbsTestStatistic::initSimMode: created " << n << " slave calculators." << endl;
  
  // Delete datasets by hand as TList::Delete() doesn't see our datasets as 'on the heap'...
  TIterator* iter = dsetList->MakeIterator();
  TObject* ds;
  while((ds = iter->Next())) {
    delete ds;
  }
  delete iter;

  delete dsetList;
  delete catIter;
}


//_____________________________________________________________________________
Bool_t RooAbsTestStatistic::setData(RooAbsData& indata, Bool_t cloneData) 
{ 
  // Change dataset that is used to given one. If cloneData is kTRUE, a clone of
  // in the input dataset is made.  If the test statistic was constructed with
  // a range specification on the data, the cloneData argument is ignore and
  // the data is always cloned.

  // Trigger refresh of likelihood offsets 
  if (isOffsetting()) {
    enableOffsetting(kFALSE);
    enableOffsetting(kTRUE);
  }

  switch(operMode()) {
  case Slave:
    // Delegate to implementation
    return setDataSlave(indata, cloneData);
  case SimMaster:
    // Forward to slaves
    //     cout << "RATS::setData(" << GetName() << ") SimMaster, calling setDataSlave() on slave nodes" << endl;
    if (indata.canSplitFast()) {
      for (Int_t i = 0; i < _nGof; ++i) {
	RooAbsData* compData = indata.getSimData(_gofArray[i]->GetName());
	_gofArray[i]->setDataSlave(*compData, cloneData);
      }
    } else if (0 == indata.numEntries()) {
      // For an unsplit empty dataset, simply assign empty dataset to each component
      for (Int_t i = 0; i < _nGof; ++i) {
	_gofArray[i]->setDataSlave(indata, cloneData);
      }
    } else {
//       cout << "NONEMPTY DATASET WITHOUT FAST SPLIT SUPPORT! "<< indata.GetName() << endl;
      const RooAbsCategoryLValue* indexCat = & ((RooSimultaneous*)_func)->indexCat();
      TList* dlist = indata.split(*indexCat, kTRUE);
      for (Int_t i = 0; i < _nGof; ++i) {
	RooAbsData* compData = (RooAbsData*) dlist->FindObject(_gofArray[i]->GetName());
	// 	cout << "component data for index " << _gofArray[i]->GetName() << " is " << compData << endl;
	if (compData) {
	  _gofArray[i]->setDataSlave(*compData,kFALSE,kTRUE);
	} else {
	  coutE(DataHandling) << "RooAbsTestStatistic::setData(" << GetName() << ") ERROR: Cannot find component data for state " << _gofArray[i]->GetName() << endl;
	}
      }
    }
    break;
  case MPMaster:
    // Not supported
    coutF(DataHandling) << "RooAbsTestStatistic::setData(" << GetName() << ") FATAL: setData() is not supported in multi-processor mode" << endl;
    throw string("RooAbsTestStatistic::setData is not supported in MPMaster mode");
    break;
  }

  return kTRUE;
}



void RooAbsTestStatistic::enableOffsetting(Bool_t flag) 
{
  // Apply internal value offsetting to control numeric precision
  if (!_init) {
    const_cast<RooAbsTestStatistic*>(this)->initialize() ;
  }
  
  switch(operMode()) {
  case Slave:
    _doOffset = flag ;
    // Clear offset if feature is disabled to that it is recalculated next time it is enabled
    if (!_doOffset) {
      _offset = 0 ;
      _offsetCarry = 0;
    }
    setValueDirty() ;
    break ;
  case SimMaster:
    _doOffset = flag;
    for (Int_t i = 0; i < _nGof; ++i) {
      _gofArray[i]->enableOffsetting(flag);
    }
    break ;
  case MPMaster:    
    _doOffset = flag;
    for (Int_t i = 0; i < _nCPU; ++i) {
      _mpfeArray[i]->enableOffsetting(flag);
    }
    break;
  }
}


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