GoF calculators
Interface for the generic Professor goodness of fit (GoF) calculator object, and
commonlyused derivations and concrete implementations of that interface for
various kinds of chi^2 and similar measures.
TODO: make interface sufficiently generic that it can do very specific things
like optimising the difference between sets of histograms (e.g. for observable
optimisation.)

class professor.fitfunctions.SimpleIpolChi2(tunedata, epsilon=0.0, withcorrelation=False)
Bases: professor.fitfunctions.BaseChi2
Calculating chi^2/Ndf from the interpolations.
The parameter point needs to be set before the chi^2 calculation with
setParams().
The use_ref_error and use_mc_error properties determine how the error terms
in the chi^2 are defined. The “epsilon” term is an extra fractional error to
be used as a regulariser, i.e. a minimum possible systematic error beyond
that seen from the reference or statistical plot errors.
TODO: allow the epsilon factors to be set in a distributionspecific way
like the observable weights (including by ranges, by specific bins, etc.)
Methods

calcChi2(params=None)
Calculate and return the chi^2 at the currentlyset parameter point.
When correlation consideration is disabled from command line,
the old code is used where chi2 is calculated cumulatively.
Otherwise, a dictionary for all observables considered in the tuning
is builtup.
From the bins in this dictionary a covariance matrix can be calculated
(from a given correlation file), and later on the chi2 can be obtained
from a matrix relation.

calcNdof()

findCovarianceMatrix(obsname, binval)
Reads covariance matrix from file.
Every line corresponds to one bin in the reference data definition.
Following form has to be followed:
uncorr uncertainties — corr uncertainties
There can be multiple entries for uncertainties separated by whitespace.
Remember to separate correlated from uncorrelated unc. by —.
The files should be created with proflsobs (for correct filename and path)
and filled afterwards.

minimumOverlapCovariance(referr2, err2)
This method is a firstguessmethod if there’s no exact information about correlations.
We assume the covariance between bins i, j to be:
cov_i,j = min(sigma_i, sigma_j)**2
This gives a conservative guess of the correlations and uncertainties.
The method was applied e.g. in CERNPHEP2010089 (OPAL), arXiv:1101.1470.

setParams(params)
Set the parameter point. Argument type should either be a ParameterPoint or a dict.
Returns self to allow chaining for convenience.

class professor.fitfunctions.SimpleMCChi2(tunedata, run)
Bases: professor.fitfunctions.SimpleIpolChi2
Chi2 between MC data from `run’ and ref data.
Methods

calcChi2()

calcNdof()
Calculate the Ndof as sum of weights.

setParams(*args, **kwargs)
Overwrite setParams method of SimpleIpolChi2.
Overwrite setParams to make programming errors more obvious.

class professor.fitfunctions.SingleSimpleIpolChi2(tunedata, obs)
Bases: professor.fitfunctions.SimpleIpolChi2
Class for calculating GoF of a single observable.
Obs is a string with the observable name.
Methods

calcChi2()

calcChi2PerBin()
Return the chi2 per bin measure.

calcNdof()
This returns the number of bins  number of parameters are
unaccounted for, should be sensible in case of 1Bin observables.

getNumBins()
The number of bins in self.obs.

numbins
Number of bins in observable self.obs

obs
observable path to calculate chi2 for.

setObs(newobs)
Set the observable to calculate the GoF for.

class professor.fitfunctions.SingleSimpleMCChi2(tunedata, obs, run)
Bases: professor.fitfunctions.SingleSimpleIpolChi2

calcChi2()

setParams(*args, **kwargs)
Overwrite setParams method of SimpleIpolChi2.
Overwrite setParams to make programming errors more obvious.