```/*****************************************************************************
* 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          *
*                                                                           *
* Redistribution and use in source and binary forms,                        *
* with or without modification, are permitted according to the terms        *
*****************************************************************************/

//////////////////////////////////////////////////////////////////////////////
//
// Class RooXYChi2Var implements a simple chi^2 calculation from a unbinned
// dataset with values x,y with errors on y (and optionally on x) and a function.
// The function can be either a RooAbsReal, or an extended RooAbsPdf where
// the function value is calculated as the probability density times the
// expected number of events
// The chi^2 is calculated as
//
//              / (Data[y]-) - func \+2
//  Sum[point] |  ------------------ |
//              \     Data[ErrY]    /
//
//

#include "RooFit.h"

#include "RooXYChi2Var.h"
#include "RooDataSet.h"
#include "RooAbsReal.h"

#include "Riostream.h"

#include "RooRealVar.h"

#include "RooGaussKronrodIntegrator1D.h"
#include "RooAbsDataStore.h"
#include "RooRealBinding.h"
#include "RooNumIntFactory.h"

using namespace std;

ClassImp(RooXYChi2Var)
;

//_____________________________________________________________________________
RooXYChi2Var::RooXYChi2Var()
{
// coverity[UNINIT_CTOR]
_funcInt = 0 ;
_rrvIter = _rrvArgs.createIterator() ;
}

//_____________________________________________________________________________
RooXYChi2Var::RooXYChi2Var(const char *name, const char* title, RooAbsReal& func, RooDataSet& xydata, Bool_t integrate) :
RooAbsOptTestStatistic(name,title,func,xydata,RooArgSet(),0,0,1,RooFit::Interleave,0,0),
_extended(kFALSE),
_integrate(integrate),
_intConfig(*defaultIntegratorConfig()),
_funcInt(0)
{
//
//  RooXYChi2Var constructor with function and X-Y values dataset
//
// An X-Y dataset is a weighted dataset with one or more observables X where the weight is interpreted
// as the Y value and the weight error is interpreted as the Y value error. The weight must have an
// non-zero error defined at each point for the chi^2 calculation to be meaningful.
//
// To store errors associated with the x and y values in a RooDataSet, call RooRealVar::setAttribute("StoreError")
// on each X-type observable for which the error should be stored and add datapoints to the dataset as follows
//
// RooDataSet::add(xset,yval,yerr) where xset is the RooArgSet of x observables (with or without errors) and yval and yerr
//                                 are the Double_t values that correspond to the Y and its error
//
_extended = kFALSE ;
_yvar = 0 ;

initialize() ;
}

//_____________________________________________________________________________
RooXYChi2Var::RooXYChi2Var(const char *name, const char* title, RooAbsReal& func, RooDataSet& xydata, RooRealVar& yvar, Bool_t integrate) :
RooAbsOptTestStatistic(name,title,func,xydata,RooArgSet(),0,0,1,RooFit::Interleave,0,0),
_extended(kFALSE),
_integrate(integrate),
_intConfig(*defaultIntegratorConfig()),
_funcInt(0)
{
//
//  RooXYChi2Var constructor with function and X-Y values dataset
//
// An X-Y dataset is a weighted dataset with one or more observables X where given yvar is interpreted
// as the Y value. The Y variable must have a non-zero error defined at each point for the chi^2 calculation to be meaningful.
//
// To store errors associated with the x and y values in a RooDataSet, call RooRealVar::setAttribute("StoreError")
// on each X-type observable for which the error should be stored and add datapoints to the dataset as follows
//
// RooDataSet::add(xset,yval,yerr) where xset is the RooArgSet of x observables (with or without errors) and yval and yerr
//                                 are the Double_t values that correspond to the Y and its error
//
_extended = kFALSE ;
_yvar = (RooRealVar*) _dataClone->get()->find(yvar.GetName()) ;

initialize() ;
}

//_____________________________________________________________________________
RooXYChi2Var::RooXYChi2Var(const char *name, const char* title, RooAbsPdf& extPdf, RooDataSet& xydata, Bool_t integrate) :
RooAbsOptTestStatistic(name,title,extPdf,xydata,RooArgSet(),0,0,1,RooFit::Interleave,0,0),
_extended(kTRUE),
_integrate(integrate),
_intConfig(*defaultIntegratorConfig()),
_funcInt(0)
{
//
// RooXYChi2Var constructor with an extended p.d.f. and X-Y values dataset
// The value of the function that defines the chi^2 in this form is takes as
// the p.d.f. times the expected number of events
//
// An X-Y dataset is a weighted dataset with one or more observables X where the weight is interpreted
// as the Y value and the weight error is interpreted as the Y value error. The weight must have an
// non-zero error defined at each point for the chi^2 calculation to be meaningful.
//
// To store errors associated with the x and y values in a RooDataSet, call RooRealVar::setAttribute("StoreError")
// on each X-type observable for which the error should be stored and add datapoints to the dataset as follows
//
// RooDataSet::add(xset,yval,yerr) where xset is the RooArgSet of x observables (with or without errors) and yval and yerr
//                                 are the Double_t values that correspond to the Y and its error
//
if (!extPdf.canBeExtended()) {
throw(string(Form("RooXYChi2Var::ctor(%s) ERROR: Input p.d.f. must be an extendible",GetName()))) ;
}
_yvar = 0 ;
initialize() ;
}

//_____________________________________________________________________________
RooXYChi2Var::RooXYChi2Var(const char *name, const char* title, RooAbsPdf& extPdf, RooDataSet& xydata, RooRealVar& yvar, Bool_t integrate) :
RooAbsOptTestStatistic(name,title,extPdf,xydata,RooArgSet(),0,0,1,RooFit::Interleave,0,0),
_extended(kTRUE),
_integrate(integrate),
_intConfig(*defaultIntegratorConfig()),
_funcInt(0)
{
//
// RooXYChi2Var constructor with an extended p.d.f. and X-Y values dataset
// The value of the function that defines the chi^2 in this form is takes as
// the p.d.f. times the expected number of events
//
// An X-Y dataset is a weighted dataset with one or more observables X where the weight is interpreted
// as the Y value and the weight error is interpreted as the Y value error. The weight must have an
// non-zero error defined at each point for the chi^2 calculation to be meaningful.
//
// To store errors associated with the x and y values in a RooDataSet, call RooRealVar::setAttribute("StoreError")
// on each X-type observable for which the error should be stored and add datapoints to the dataset as follows
//
// RooDataSet::add(xset,yval,yerr) where xset is the RooArgSet of x observables (with or without errors) and yval and yerr
//                                 are the Double_t values that correspond to the Y and its error
//
if (!extPdf.canBeExtended()) {
throw(string(Form("RooXYChi2Var::ctor(%s) ERROR: Input p.d.f. must be an extendible",GetName()))) ;
}
_yvar = (RooRealVar*) _dataClone->get()->find(yvar.GetName()) ;
initialize() ;
}

//_____________________________________________________________________________
RooXYChi2Var::RooXYChi2Var(const RooXYChi2Var& other, const char* name) :
RooAbsOptTestStatistic(other,name),
_extended(other._extended),
_integrate(other._integrate),
_intConfig(other._intConfig),
_funcInt(0)
{
// Copy constructor

_yvar = other._yvar ? (RooRealVar*) _dataClone->get()->find(other._yvar->GetName()) : 0 ;
initialize() ;

}

//_____________________________________________________________________________
void RooXYChi2Var::initialize()
{
// Common constructor initialization

TIterator* iter = _funcObsSet->createIterator() ;
RooAbsArg* arg ;
while((arg=(RooAbsArg*)iter->Next())) {
RooRealVar* var = dynamic_cast<RooRealVar*>(arg) ;
if (var) {
}
}
if (_yvar) {
}
delete iter ;
_rrvIter = _rrvArgs.createIterator() ;

// Define alternate numeric integrator configuration for bin integration
// We expect bin contents to very only very slowly so a non-adaptive
// Gauss-Kronrod integrator is expected to perform well.
_intConfig.setEpsRel(1e-7) ;
_intConfig.setEpsAbs(1e-7) ;
_intConfig.method1D().setLabel("RooGaussKronrodIntegrator1D") ;

initIntegrator() ;

}

//_____________________________________________________________________________
void RooXYChi2Var::initIntegrator()
{
// Initialize bin content integrator

if (!_funcInt) {
_funcInt = _funcClone->createIntegral(_rrvArgs,_rrvArgs,_intConfig,"bin") ;
_rrvIter->Reset() ;
RooRealVar* x ;
while((x=(RooRealVar*)_rrvIter->Next())) {
_binList.push_back(&x->getBinning("bin",kFALSE,kTRUE)) ;
}
}

}

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

delete _rrvIter ;
if (_funcInt) delete _funcInt ;
}

//_____________________________________________________________________________
Double_t RooXYChi2Var::xErrorContribution(Double_t ydata) const
{
// Calculate contribution to internal error due to error on 'x' coordinates
// at point i

RooRealVar* var ;
Double_t ret(0) ;

_rrvIter->Reset() ;
while((var=(RooRealVar*)_rrvIter->Next())) {

if (var->hasAsymError()) {

// Get value at central X
Double_t cxval = var->getVal() ;
Double_t xerrLo = -var->getAsymErrorLo() ;
Double_t xerrHi = var->getAsymErrorHi() ;
Double_t xerr = (xerrLo+xerrHi)/2 ;

// Get value at X-eps
var->setVal(cxval - xerr/100) ;
Double_t fxmin = fy() ;

// Get value at X+eps
var->setVal(cxval + xerr/100) ;
Double_t fxmax = fy() ;

// Calculate slope
Double_t slope = (fxmax-fxmin)/(2*xerr/100.) ;

//       cout << "xerrHi = " << xerrHi << " xerrLo = " << xerrLo << " slope = " << slope << endl ;

// Asymmetric X error, decide which one to use
if ((ydata>cxval && fxmax>fxmin) || (ydata<=cxval && fxmax<=fxmin)) {
// Use right X error
ret += pow(xerrHi*slope,2) ;
} else {
// Use left X error
ret += pow(xerrLo*slope,2) ;
}

} else if (var->hasError()) {

// Get value at central X
Double_t cxval = var->getVal() ;
Double_t xerr = var->getError() ;

// Get value at X-eps
var->setVal(cxval - xerr/100) ;
Double_t fxmin = fy() ;

// Get value at X+eps
var->setVal(cxval + xerr/100) ;
Double_t fxmax = fy() ;

// Calculate slope
Double_t slope = (fxmax-fxmin)/(2*xerr/100.) ;

//       cout << var << " " ;
//       var->Print() ;

//       cout << var->GetName() << " xerr = " << xerr << " slope = " << slope << endl ;

// Symmetric X error
ret += pow(xerr*slope,2) ;
}
}
return ret ;
}

//_____________________________________________________________________________
Double_t RooXYChi2Var::fy() const
{
// Return function value requested bu present configuration
//
// If integration is required, the function value integrated
// over the bin volume divided by the bin volume is returned,
// otherwise the value at the bin center is returned.
// The bin volume is defined by the error on the 'X' coordinates
//
// If an extended p.d.f. is used as function, its value is
// also multiplied by the expected number of events here

// Get function value
Double_t yfunc ;
if (!_integrate) {
yfunc = _funcClone->getVal(_dataClone->get()) ;
} else {
Double_t volume(1) ;
_rrvIter->Reset() ;
for (list<RooAbsBinning*>::const_iterator iter = _binList.begin() ; iter != _binList.end() ; iter++) {
RooRealVar* x = (RooRealVar*) _rrvIter->Next() ;
Double_t xmin = x->getVal() + x->getErrorLo() ;
Double_t xmax = x->getVal() + x->getErrorHi() ;
(*iter)->setRange(xmin,xmax) ;
x->setShapeDirty() ;
volume *= (xmax - xmin) ;
}
Double_t ret = _funcInt->getVal() ;
return ret / volume ;
}
if (_extended) {
RooAbsPdf* pdf = (RooAbsPdf*) _funcClone ;
// Multiply with expected number of events
yfunc *= pdf->expectedEvents(_dataClone->get()) ;
}
return yfunc ;
}

//_____________________________________________________________________________
Double_t RooXYChi2Var::evaluatePartition(Int_t firstEvent, Int_t lastEvent, Int_t stepSize) const
{
// Calculate chi^2 in partition from firstEvent to lastEvent using given stepSize

Double_t result(0), carry(0);

// Loop over bins of dataset
RooDataSet* xydata = (RooDataSet*) _dataClone ;

_dataClone->store()->recalculateCache( _projDeps, firstEvent, lastEvent, stepSize,kFALSE ) ;

for (Int_t i=firstEvent ; i<lastEvent ; i+=stepSize) {

// get the data values for this event
xydata->get(i);

if (!xydata->valid()) {
continue ;
}

//     cout << "xydata = " << endl ;
//     xydata->get()->Print("v") ;
//xydata->store()->dump() ;

// Get function value
Double_t yfunc = fy() ;

// Get data value and error
Double_t ydata ;
Double_t eylo,eyhi ;
if (_yvar) {
ydata = _yvar->getVal() ;
eylo = -1*_yvar->getErrorLo() ;
eyhi = _yvar->getErrorHi() ;
} else {
ydata = xydata->weight() ;
xydata->weightError(eylo,eyhi) ;
}

// Calculate external error
Double_t eExt = yfunc-ydata ;

// Pick upper or lower error bar depending on sign of external error
Double_t eInt = (eExt>0) ? eyhi : eylo ;

// Add contributions due to error in x coordinates
Double_t eIntX2 = _integrate ? 0 : xErrorContribution(ydata) ;

//     cout << "fy = " << yfunc << " eExt = " << eExt << " eInt = " << eInt << " eIntX2 = " << eIntX2 << endl ;

// Return 0 if eInt=0, special handling in MINUIT will follow
if (eInt==0.) {
coutE(Eval) << "RooXYChi2Var::RooXYChi2Var(" << GetName() << ") INFINITY ERROR: data point " << i
<< " has zero error, but function is not zero (f=" << yfunc << ")" << endl ;
return 0 ;
}

// Add chi2 term
Double_t term = eExt*eExt/(eInt*eInt+ eIntX2);
Double_t y = term - carry;
Double_t t = result + y;
carry = (t - result) - y;
result = t;
}

_evalCarry = carry;
return result ;
}

RooArgSet RooXYChi2Var::requiredExtraObservables() const
{
// Inform base class that observable yvar cannot be optimized away from the dataset
if (_yvar) return RooArgSet(*_yvar) ;
return RooArgSet() ;
}

```
RooXYChi2Var.cxx:1
RooXYChi2Var.cxx:2
RooXYChi2Var.cxx:3
RooXYChi2Var.cxx:4
RooXYChi2Var.cxx:5
RooXYChi2Var.cxx:6
RooXYChi2Var.cxx:7
RooXYChi2Var.cxx:8
RooXYChi2Var.cxx:9
RooXYChi2Var.cxx:10
RooXYChi2Var.cxx:11
RooXYChi2Var.cxx:12
RooXYChi2Var.cxx:13
RooXYChi2Var.cxx:14
RooXYChi2Var.cxx:15
RooXYChi2Var.cxx:16
RooXYChi2Var.cxx:17
RooXYChi2Var.cxx:18
RooXYChi2Var.cxx:19
RooXYChi2Var.cxx:20
RooXYChi2Var.cxx:21
RooXYChi2Var.cxx:22
RooXYChi2Var.cxx:23
RooXYChi2Var.cxx:24
RooXYChi2Var.cxx:25
RooXYChi2Var.cxx:26
RooXYChi2Var.cxx:27
RooXYChi2Var.cxx:28
RooXYChi2Var.cxx:29
RooXYChi2Var.cxx:30
RooXYChi2Var.cxx:31
RooXYChi2Var.cxx:32
RooXYChi2Var.cxx:33
RooXYChi2Var.cxx:34
RooXYChi2Var.cxx:35
RooXYChi2Var.cxx:36
RooXYChi2Var.cxx:37
RooXYChi2Var.cxx:38
RooXYChi2Var.cxx:39
RooXYChi2Var.cxx:40
RooXYChi2Var.cxx:41
RooXYChi2Var.cxx:42
RooXYChi2Var.cxx:43
RooXYChi2Var.cxx:44
RooXYChi2Var.cxx:45
RooXYChi2Var.cxx:46
RooXYChi2Var.cxx:47
RooXYChi2Var.cxx:48
RooXYChi2Var.cxx:49
RooXYChi2Var.cxx:50
RooXYChi2Var.cxx:51
RooXYChi2Var.cxx:52
RooXYChi2Var.cxx:53
RooXYChi2Var.cxx:54
RooXYChi2Var.cxx:55
RooXYChi2Var.cxx:56
RooXYChi2Var.cxx:57
RooXYChi2Var.cxx:58
RooXYChi2Var.cxx:59
RooXYChi2Var.cxx:60
RooXYChi2Var.cxx:61
RooXYChi2Var.cxx:62
RooXYChi2Var.cxx:63
RooXYChi2Var.cxx:64
RooXYChi2Var.cxx:65
RooXYChi2Var.cxx:66
RooXYChi2Var.cxx:67
RooXYChi2Var.cxx:68
RooXYChi2Var.cxx:69
RooXYChi2Var.cxx:70
RooXYChi2Var.cxx:71
RooXYChi2Var.cxx:72
RooXYChi2Var.cxx:73
RooXYChi2Var.cxx:74
RooXYChi2Var.cxx:75
RooXYChi2Var.cxx:76
RooXYChi2Var.cxx:77
RooXYChi2Var.cxx:78
RooXYChi2Var.cxx:79
RooXYChi2Var.cxx:80
RooXYChi2Var.cxx:81
RooXYChi2Var.cxx:82
RooXYChi2Var.cxx:83
RooXYChi2Var.cxx:84
RooXYChi2Var.cxx:85
RooXYChi2Var.cxx:86
RooXYChi2Var.cxx:87
RooXYChi2Var.cxx:88
RooXYChi2Var.cxx:89
RooXYChi2Var.cxx:90
RooXYChi2Var.cxx:91
RooXYChi2Var.cxx:92
RooXYChi2Var.cxx:93
RooXYChi2Var.cxx:94
RooXYChi2Var.cxx:95
RooXYChi2Var.cxx:96
RooXYChi2Var.cxx:97
RooXYChi2Var.cxx:98
RooXYChi2Var.cxx:99
RooXYChi2Var.cxx:100
RooXYChi2Var.cxx:101
RooXYChi2Var.cxx:102
RooXYChi2Var.cxx:103
RooXYChi2Var.cxx:104
RooXYChi2Var.cxx:105
RooXYChi2Var.cxx:106
RooXYChi2Var.cxx:107
RooXYChi2Var.cxx:108
RooXYChi2Var.cxx:109
RooXYChi2Var.cxx:110
RooXYChi2Var.cxx:111
RooXYChi2Var.cxx:112
RooXYChi2Var.cxx:113
RooXYChi2Var.cxx:114
RooXYChi2Var.cxx:115
RooXYChi2Var.cxx:116
RooXYChi2Var.cxx:117
RooXYChi2Var.cxx:118
RooXYChi2Var.cxx:119
RooXYChi2Var.cxx:120
RooXYChi2Var.cxx:121
RooXYChi2Var.cxx:122
RooXYChi2Var.cxx:123
RooXYChi2Var.cxx:124
RooXYChi2Var.cxx:125
RooXYChi2Var.cxx:126
RooXYChi2Var.cxx:127
RooXYChi2Var.cxx:128
RooXYChi2Var.cxx:129
RooXYChi2Var.cxx:130
RooXYChi2Var.cxx:131
RooXYChi2Var.cxx:132
RooXYChi2Var.cxx:133
RooXYChi2Var.cxx:134
RooXYChi2Var.cxx:135
RooXYChi2Var.cxx:136
RooXYChi2Var.cxx:137
RooXYChi2Var.cxx:138
RooXYChi2Var.cxx:139
RooXYChi2Var.cxx:140
RooXYChi2Var.cxx:141
RooXYChi2Var.cxx:142
RooXYChi2Var.cxx:143
RooXYChi2Var.cxx:144
RooXYChi2Var.cxx:145
RooXYChi2Var.cxx:146
RooXYChi2Var.cxx:147
RooXYChi2Var.cxx:148
RooXYChi2Var.cxx:149
RooXYChi2Var.cxx:150
RooXYChi2Var.cxx:151
RooXYChi2Var.cxx:152
RooXYChi2Var.cxx:153
RooXYChi2Var.cxx:154
RooXYChi2Var.cxx:155
RooXYChi2Var.cxx:156
RooXYChi2Var.cxx:157
RooXYChi2Var.cxx:158
RooXYChi2Var.cxx:159
RooXYChi2Var.cxx:160
RooXYChi2Var.cxx:161
RooXYChi2Var.cxx:162
RooXYChi2Var.cxx:163
RooXYChi2Var.cxx:164
RooXYChi2Var.cxx:165
RooXYChi2Var.cxx:166
RooXYChi2Var.cxx:167
RooXYChi2Var.cxx:168
RooXYChi2Var.cxx:169
RooXYChi2Var.cxx:170
RooXYChi2Var.cxx:171
RooXYChi2Var.cxx:172
RooXYChi2Var.cxx:173
RooXYChi2Var.cxx:174
RooXYChi2Var.cxx:175
RooXYChi2Var.cxx:176
RooXYChi2Var.cxx:177
RooXYChi2Var.cxx:178
RooXYChi2Var.cxx:179
RooXYChi2Var.cxx:180
RooXYChi2Var.cxx:181
RooXYChi2Var.cxx:182
RooXYChi2Var.cxx:183
RooXYChi2Var.cxx:184
RooXYChi2Var.cxx:185
RooXYChi2Var.cxx:186
RooXYChi2Var.cxx:187
RooXYChi2Var.cxx:188
RooXYChi2Var.cxx:189
RooXYChi2Var.cxx:190
RooXYChi2Var.cxx:191
RooXYChi2Var.cxx:192
RooXYChi2Var.cxx:193
RooXYChi2Var.cxx:194
RooXYChi2Var.cxx:195
RooXYChi2Var.cxx:196
RooXYChi2Var.cxx:197
RooXYChi2Var.cxx:198
RooXYChi2Var.cxx:199
RooXYChi2Var.cxx:200
RooXYChi2Var.cxx:201
RooXYChi2Var.cxx:202
RooXYChi2Var.cxx:203
RooXYChi2Var.cxx:204
RooXYChi2Var.cxx:205
RooXYChi2Var.cxx:206
RooXYChi2Var.cxx:207
RooXYChi2Var.cxx:208
RooXYChi2Var.cxx:209
RooXYChi2Var.cxx:210
RooXYChi2Var.cxx:211
RooXYChi2Var.cxx:212
RooXYChi2Var.cxx:213
RooXYChi2Var.cxx:214
RooXYChi2Var.cxx:215
RooXYChi2Var.cxx:216
RooXYChi2Var.cxx:217
RooXYChi2Var.cxx:218
RooXYChi2Var.cxx:219
RooXYChi2Var.cxx:220
RooXYChi2Var.cxx:221
RooXYChi2Var.cxx:222
RooXYChi2Var.cxx:223
RooXYChi2Var.cxx:224
RooXYChi2Var.cxx:225
RooXYChi2Var.cxx:226
RooXYChi2Var.cxx:227
RooXYChi2Var.cxx:228
RooXYChi2Var.cxx:229
RooXYChi2Var.cxx:230
RooXYChi2Var.cxx:231
RooXYChi2Var.cxx:232
RooXYChi2Var.cxx:233
RooXYChi2Var.cxx:234
RooXYChi2Var.cxx:235
RooXYChi2Var.cxx:236
RooXYChi2Var.cxx:237
RooXYChi2Var.cxx:238
RooXYChi2Var.cxx:239
RooXYChi2Var.cxx:240
RooXYChi2Var.cxx:241
RooXYChi2Var.cxx:242
RooXYChi2Var.cxx:243
RooXYChi2Var.cxx:244
RooXYChi2Var.cxx:245
RooXYChi2Var.cxx:246
RooXYChi2Var.cxx:247
RooXYChi2Var.cxx:248
RooXYChi2Var.cxx:249
RooXYChi2Var.cxx:250
RooXYChi2Var.cxx:251
RooXYChi2Var.cxx:252
RooXYChi2Var.cxx:253
RooXYChi2Var.cxx:254
RooXYChi2Var.cxx:255
RooXYChi2Var.cxx:256
RooXYChi2Var.cxx:257
RooXYChi2Var.cxx:258
RooXYChi2Var.cxx:259
RooXYChi2Var.cxx:260
RooXYChi2Var.cxx:261
RooXYChi2Var.cxx:262
RooXYChi2Var.cxx:263
RooXYChi2Var.cxx:264
RooXYChi2Var.cxx:265
RooXYChi2Var.cxx:266
RooXYChi2Var.cxx:267
RooXYChi2Var.cxx:268
RooXYChi2Var.cxx:269
RooXYChi2Var.cxx:270
RooXYChi2Var.cxx:271
RooXYChi2Var.cxx:272
RooXYChi2Var.cxx:273
RooXYChi2Var.cxx:274
RooXYChi2Var.cxx:275
RooXYChi2Var.cxx:276
RooXYChi2Var.cxx:277
RooXYChi2Var.cxx:278
RooXYChi2Var.cxx:279
RooXYChi2Var.cxx:280
RooXYChi2Var.cxx:281
RooXYChi2Var.cxx:282
RooXYChi2Var.cxx:283
RooXYChi2Var.cxx:284
RooXYChi2Var.cxx:285
RooXYChi2Var.cxx:286
RooXYChi2Var.cxx:287
RooXYChi2Var.cxx:288
RooXYChi2Var.cxx:289
RooXYChi2Var.cxx:290
RooXYChi2Var.cxx:291
RooXYChi2Var.cxx:292
RooXYChi2Var.cxx:293
RooXYChi2Var.cxx:294
RooXYChi2Var.cxx:295
RooXYChi2Var.cxx:296
RooXYChi2Var.cxx:297
RooXYChi2Var.cxx:298
RooXYChi2Var.cxx:299
RooXYChi2Var.cxx:300
RooXYChi2Var.cxx:301
RooXYChi2Var.cxx:302
RooXYChi2Var.cxx:303
RooXYChi2Var.cxx:304
RooXYChi2Var.cxx:305
RooXYChi2Var.cxx:306
RooXYChi2Var.cxx:307
RooXYChi2Var.cxx:308
RooXYChi2Var.cxx:309
RooXYChi2Var.cxx:310
RooXYChi2Var.cxx:311
RooXYChi2Var.cxx:312
RooXYChi2Var.cxx:313
RooXYChi2Var.cxx:314
RooXYChi2Var.cxx:315
RooXYChi2Var.cxx:316
RooXYChi2Var.cxx:317
RooXYChi2Var.cxx:318
RooXYChi2Var.cxx:319
RooXYChi2Var.cxx:320
RooXYChi2Var.cxx:321
RooXYChi2Var.cxx:322
RooXYChi2Var.cxx:323
RooXYChi2Var.cxx:324
RooXYChi2Var.cxx:325
RooXYChi2Var.cxx:326
RooXYChi2Var.cxx:327
RooXYChi2Var.cxx:328
RooXYChi2Var.cxx:329
RooXYChi2Var.cxx:330
RooXYChi2Var.cxx:331
RooXYChi2Var.cxx:332
RooXYChi2Var.cxx:333
RooXYChi2Var.cxx:334
RooXYChi2Var.cxx:335
RooXYChi2Var.cxx:336
RooXYChi2Var.cxx:337
RooXYChi2Var.cxx:338
RooXYChi2Var.cxx:339
RooXYChi2Var.cxx:340
RooXYChi2Var.cxx:341
RooXYChi2Var.cxx:342
RooXYChi2Var.cxx:343
RooXYChi2Var.cxx:344
RooXYChi2Var.cxx:345
RooXYChi2Var.cxx:346
RooXYChi2Var.cxx:347
RooXYChi2Var.cxx:348
RooXYChi2Var.cxx:349
RooXYChi2Var.cxx:350
RooXYChi2Var.cxx:351
RooXYChi2Var.cxx:352
RooXYChi2Var.cxx:353
RooXYChi2Var.cxx:354
RooXYChi2Var.cxx:355
RooXYChi2Var.cxx:356
RooXYChi2Var.cxx:357
RooXYChi2Var.cxx:358
RooXYChi2Var.cxx:359
RooXYChi2Var.cxx:360
RooXYChi2Var.cxx:361
RooXYChi2Var.cxx:362
RooXYChi2Var.cxx:363
RooXYChi2Var.cxx:364
RooXYChi2Var.cxx:365
RooXYChi2Var.cxx:366
RooXYChi2Var.cxx:367
RooXYChi2Var.cxx:368
RooXYChi2Var.cxx:369
RooXYChi2Var.cxx:370
RooXYChi2Var.cxx:371
RooXYChi2Var.cxx:372
RooXYChi2Var.cxx:373
RooXYChi2Var.cxx:374
RooXYChi2Var.cxx:375
RooXYChi2Var.cxx:376
RooXYChi2Var.cxx:377
RooXYChi2Var.cxx:378
RooXYChi2Var.cxx:379
RooXYChi2Var.cxx:380
RooXYChi2Var.cxx:381
RooXYChi2Var.cxx:382
RooXYChi2Var.cxx:383
RooXYChi2Var.cxx:384
RooXYChi2Var.cxx:385
RooXYChi2Var.cxx:386
RooXYChi2Var.cxx:387
RooXYChi2Var.cxx:388
RooXYChi2Var.cxx:389
RooXYChi2Var.cxx:390
RooXYChi2Var.cxx:391
RooXYChi2Var.cxx:392
RooXYChi2Var.cxx:393
RooXYChi2Var.cxx:394
RooXYChi2Var.cxx:395
RooXYChi2Var.cxx:396
RooXYChi2Var.cxx:397
RooXYChi2Var.cxx:398
RooXYChi2Var.cxx:399
RooXYChi2Var.cxx:400
RooXYChi2Var.cxx:401
RooXYChi2Var.cxx:402
RooXYChi2Var.cxx:403
RooXYChi2Var.cxx:404
RooXYChi2Var.cxx:405
RooXYChi2Var.cxx:406
RooXYChi2Var.cxx:407
RooXYChi2Var.cxx:408
RooXYChi2Var.cxx:409
RooXYChi2Var.cxx:410
RooXYChi2Var.cxx:411
RooXYChi2Var.cxx:412
RooXYChi2Var.cxx:413
RooXYChi2Var.cxx:414
RooXYChi2Var.cxx:415
RooXYChi2Var.cxx:416
RooXYChi2Var.cxx:417
RooXYChi2Var.cxx:418
RooXYChi2Var.cxx:419
RooXYChi2Var.cxx:420
RooXYChi2Var.cxx:421
RooXYChi2Var.cxx:422
RooXYChi2Var.cxx:423
RooXYChi2Var.cxx:424
RooXYChi2Var.cxx:425
RooXYChi2Var.cxx:426
RooXYChi2Var.cxx:427
RooXYChi2Var.cxx:428
RooXYChi2Var.cxx:429
RooXYChi2Var.cxx:430
RooXYChi2Var.cxx:431
RooXYChi2Var.cxx:432
RooXYChi2Var.cxx:433
RooXYChi2Var.cxx:434
RooXYChi2Var.cxx:435
RooXYChi2Var.cxx:436
RooXYChi2Var.cxx:437
RooXYChi2Var.cxx:438
RooXYChi2Var.cxx:439
RooXYChi2Var.cxx:440
RooXYChi2Var.cxx:441
RooXYChi2Var.cxx:442
RooXYChi2Var.cxx:443
RooXYChi2Var.cxx:444
RooXYChi2Var.cxx:445
RooXYChi2Var.cxx:446
RooXYChi2Var.cxx:447
RooXYChi2Var.cxx:448
RooXYChi2Var.cxx:449
RooXYChi2Var.cxx:450
RooXYChi2Var.cxx:451
RooXYChi2Var.cxx:452
RooXYChi2Var.cxx:453
RooXYChi2Var.cxx:454
RooXYChi2Var.cxx:455
RooXYChi2Var.cxx:456
RooXYChi2Var.cxx:457
RooXYChi2Var.cxx:458
RooXYChi2Var.cxx:459