/usr/include/root/TUnfoldSys.h is in libroot-hist-dev 5.34.14-1build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | // @(#)root/hist:$Id$
// Author: Stefan Schmitt
// DESY, 23/01/09
// Version 16, parallel to changes in TUnfold
//
// History:
// Version 15, fix bugs with uncorr. uncertainties, add backgnd subtraction
// Version 14, with changes in TUnfoldSys.cxx
// Version 13, support for systematic errors
#ifndef ROOT_TUnfoldSys
#define ROOT_TUnfoldSys
#include <TUnfold.h>
class TMap;
class TUnfoldSys : public TUnfold {
private:
void InitTUnfoldSys(void); // initialize all data members
protected:
TMatrixDSparse *fDAinRelSq; // Input: normalized errors from input matrix
TMatrixD* fDAinColRelSq; // Input: normalized column err.sq. (inp.matr.)
TMatrixD* fAoutside; // Input: underflow/overflow bins
TMap *fSysIn; // Input: correlated errors
TMap *fBgrIn; // Input: size of background sources
TMap *fBgrErrUncorrIn; // Input: uncorrelated error from bgr sources
TMap *fBgrErrCorrIn; // Input: background sources correlated error
Double_t fDtau; // Input: error on tau
TMatrixD *fYData; // Input: fY prior to bgr subtraction
TMatrixDSparse *fVyyData; // Input: error on fY prior to bgr subtraction
TMatrixDSparse *fEmatUncorrX; // Result: syst.error from fDA2 on fX
TMatrixDSparse *fEmatUncorrAx; // Result: syst.error from fDA2 on fAx
TMap *fDeltaCorrX; // Result: syst.shift from fSysIn on fX
TMap *fDeltaCorrAx; // Result: syst.shift from fSysIn on fAx
TMatrixDSparse *fDeltaSysTau; // Result: systematic shift from tau
protected:
TUnfoldSys(void); // for derived classes
virtual void ClearResults(void); // clear all results
virtual void PrepareSysError(void); // common calculations for syst.errors
virtual TMatrixDSparse *PrepareUncorrEmat(const TMatrixDSparse *m1,const TMatrixDSparse *m2); // calculate uncorrelated error matrix
virtual TMatrixDSparse *PrepareCorrEmat(const TMatrixDSparse *m1,const TMatrixDSparse *m2,const TMatrixDSparse *dsys); // calculate correlated error matrix
void ScaleColumnsByVector(TMatrixDSparse *m,const TMatrixTBase<Double_t> *v) const; // scale columns of m by the corresponding rows of v
void VectorMapToHist(TH1 *hist_delta,const TMatrixDSparse *delta,const Int_t *binMap); // map and sum vector delta, save in hist_delta
void GetEmatrixFromVyy(const TMatrixDSparse *vyy,TH2 *ematrix,const Int_t *binMap,Bool_t clearEmat); // propagate error matrix vyy to the result
void DoBackgroundSubtraction(void);
public:
enum ESysErrMode { // meaning of the argument to AddSysError()
kSysErrModeMatrix=0, // matrix is an alternative to the default matrix, the errors are the difference to the original matrix
kSysErrModeShift=1, // matrix gives the absolute shifts
kSysErrModeRelative=2 // matrix gives the relative shifts
};
TUnfoldSys(const TH2 *hist_A, EHistMap histmap, ERegMode regmode = kRegModeSize,
EConstraint constraint=kEConstraintNone); // constructor
virtual ~ TUnfoldSys(void); // delete data members
void AddSysError(const TH2 *sysError,const char *name, EHistMap histmap,
ESysErrMode mode); // add a systematic error source
void GetDeltaSysSource(TH1 *hist_delta,const char *source,
const Int_t *binMap=0); // get systematic shifts from one systematic source
void SubtractBackground(const TH1 *hist_bgr,const char *name,
Double_t scale=1.0,
Double_t scale_error=0.0); // subtract background prior to unfolding
virtual Int_t SetInput(const TH1 *hist_y,Double_t scaleBias=0.0,Double_t oneOverZeroError=0.0); // define input consistently in case of background subtraction
void GetDeltaSysBackgroundScale(TH1 *delta,const char *source,
const Int_t *binMap=0); // get correlated uncertainty induced by the scale uncertainty of a background source
void SetTauError(Double_t delta_tau); // set uncertainty on tau
void GetDeltaSysTau(TH1 *delta,const Int_t *binMap=0); // get correlated uncertainty from varying tau
void GetEmatrixSysUncorr(TH2 *ematrix,const Int_t *binMap=0,Bool_t clearEmat=kTRUE); // get error matrix contribution from uncorrelated errors on the matrix A
void GetEmatrixSysSource(TH2 *ematrix,const char *source,
const Int_t *binMap=0,Bool_t clearEmat=kTRUE); // get error matrix from one systematic source
void GetEmatrixSysBackgroundUncorr(TH2 *ematrix,const char *source,
const Int_t *binMap=0,Bool_t clearEmat=kTRUE); // get error matrix from uncorrelated error of one background source
void GetEmatrixSysBackgroundScale(TH2 *ematrix,const char *source,
const Int_t *binMap=0,Bool_t clearEmat=kTRUE); // get error matrix from the scale error of one background source
void GetEmatrixSysTau(TH2 *ematrix,
const Int_t *binMap=0,Bool_t clearEmat=kTRUE); // get error matrix from tau variation
void GetEmatrixInput(TH2 *ematrix,const Int_t *binMap=0,Bool_t clearEmat=kTRUE); // get error contribution from input vector
void GetEmatrixTotal(TH2 *ematrix,const Int_t *binMap=0); // get total error including systematic,statistical,background,tau errors
Double_t GetChi2Sys(void); // get total chi**2 including all systematic errors
ClassDef(TUnfoldSys, 0) //Unfolding with support for systematic error propagation
};
#endif
|