/usr/include/root/Roo2DKeysPdf.h is in libroot-roofit-dev 5.34.30-0ubuntu8.
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 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 | /*****************************************************************************
* Project: RooFit *
* Package: RooFitModels *
* File: $Id: Roo2DKeysPdf.h,v 1.12 2007/05/11 09:13:07 verkerke Exp $
* Authors: *
* AB, Adrian Bevan, Liverpool University, bevan@slac.stanford.edu *
* *
* Copyright (c) 2000-2005, Regents of the University of California, *
* Liverpool University, *
* 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) *
*****************************************************************************/
#ifndef ROO_2DKEYS
#define ROO_2DKEYS
#include "RooAbsPdf.h"
#include "RooRealProxy.h"
#include "RooAbsReal.h"
#include "RooDataSet.h"
////////////////////////////////////////////////////////////////////////////////////
class Roo2DKeysPdf : public RooAbsPdf
{
public:
Roo2DKeysPdf(const char *name, const char *title,
RooAbsReal& xx, RooAbsReal &yy, RooDataSet& data, TString options = "a", Double_t widthScaleFactor = 1.0);
Roo2DKeysPdf(const Roo2DKeysPdf& other, const char* name=0);
virtual TObject* clone(const char* newname) const { return new Roo2DKeysPdf(*this,newname); }
virtual ~Roo2DKeysPdf();
//load in a new dataset and re-calculate the PDF
//return 0 if sucessful
Int_t loadDataSet(RooDataSet& data, TString options);
// The Roo2DKeys options available are:
// a = select an adaptove bandwidth [default]
// n = select a normal bandwidth
// m = mirror kernal contributions at edges [fold gaussians back into the x,y plane]
// d = print debug statements [useful for development only; default is off]
// v = print verbose debug statements [useful for development only; default is off]
// vv = print ludicrously verbose debug statements [useful for development only; default is off]
void setOptions(TString options);
void getOptions(void) const;
// Set the value of a scale factor to modify the bandwidth by. The default value for this is unity.
// Modification of 'normal' bandwidths is useful when the data are not 'normally distributed',
// otherwise one expects little departure from that behavior. Note that both the normal and adaptive
// bandwidth selections are modified by this factor. Useful for systematic studies.
// ***********
// *IMPORTANT* The kernel is proportional to 1/widthScaleFactor.
// ***********
inline void setWidthScaleFactor(Double_t widthScaleFactor);
// choose the kernel bandwith to use. The default is 0
// 0 = use adaptive kernel estimator (uses local population to vary with of kernels)
// 1 = use trivial kernel estimator (uses all data and sigma to estimate uniform kernel bandwidth)
Int_t calculateBandWidth(Int_t kernel = -999);
Int_t getBandWidthType() const;
Double_t getMean(const char * axis) const;
Double_t getSigma(const char * axis) const;
// print content and basic information about the data
void PrintInfo(std::ostream &) const;
// save PDF to a file as a TH2F *, TTree * or both
// this is so that you only need to compute the PDF once and
// are free to use the much faster Roo2DHistPdf class in order
// to perform fits/do toy studies etc.
void writeToFile(char * outputFile, const char * name) const;
void writeHistToFile(char * outputFile, const char * histName) const;
void writeNTupleToFile(char * outputFile, const char * name) const;
RooRealProxy x;
RooRealProxy y;
Double_t evaluate() const;
protected:
private:
// these are used in calculating bandwidths for x and y
Double_t evaluateFull(Double_t thisX, Double_t thisY) const;
Double_t g(Double_t var1, Double_t * _var1, Double_t sigma1, Double_t var2,
Double_t * _var2, Double_t sigma2) const;
//mirror corrections for the boundaries
Double_t highBoundaryCorrection(Double_t thisVar, Double_t thisH, Double_t high, Double_t tVar) const;
Double_t lowBoundaryCorrection(Double_t thisVar, Double_t thisH, Double_t low, Double_t tVar) const;
Double_t * _x;
Double_t * _hx;
Double_t * _y;
Double_t * _hy;
Double_t _norm;
Double_t _xMean; // the (x,y) mean and sigma are properties of the data, not of the PDF
Double_t _xSigma;
Double_t _yMean;
Double_t _ySigma;
Double_t _n; //coefficient of the kernel estimation sum
Double_t _n16; //pow(_nEvents, -1/6)
Double_t _sqrt2pi;
Double_t _2pi; // = M_PI*2
Double_t _lox,_hix;
Double_t _loy,_hiy;
Double_t _xoffset;
Double_t _yoffset;
Double_t _widthScaleFactor; //allow manipulation of the bandwidth by a scale factor
Int_t _nEvents;
Int_t _BandWidthType;
Int_t _MirrorAtBoundary;
Int_t _debug;
Int_t _verbosedebug;
Int_t _vverbosedebug;
ClassDef(Roo2DKeysPdf,0) // Two-dimensional kernel estimation p.d.f.
};
inline void Roo2DKeysPdf::setWidthScaleFactor(Double_t widthScaleFactor) { _widthScaleFactor = widthScaleFactor; }
#endif
|