34using std::cout, std::endl, std::ostream;
70 if(
_verbosedebug) { cout <<
"Roo2DKeysPdf::Roo2DKeysPdf copy ctor" << endl; }
117 if(
_verbosedebug) { cout <<
"Roo2DKeysPdf::Roo2KeysPdf dtor" << endl; }
133 if(
_verbosedebug) { cout <<
"Roo2DKeysPdf::loadDataSet" << endl; }
137 if(
_verbosedebug) { cout <<
"Roo2DKeysPdf::loadDataSet(RooDataSet& data, TString options)" << endl; }
144 cout <<
"ERROR: Roo2DKeysPdf::loadDataSet The input data set is empty. Unable to begin generating the PDF" << endl;
172 cout <<
"Roo2DKeysPdf::Roo2DKeysPdf invalid RooAbsReal name: "<<
xx.GetName()<<
" not in the data set" <<endl;
177 cout <<
"Roo2DKeysPdf::Roo2DKeysPdf invalid RooAbsReal name: "<<
yy.GetName()<<
" not in the data set" << endl;
182 cout <<
"Roo2DKeysPdf::Roo2DKeysPdf Unable to initialize object; incompatible RooDataSet doesn't contain"<<endl;
183 cout <<
" all of the RooAbsReal arguments"<<endl;
196 _x[
j] =
X->getVal() ;
197 _y[
j] = Y->getVal() ;
208 cout <<
"Roo2DKeysPdf::Roo2DKeysPdf Empty data set was used; can't generate a PDF"<<endl;
228 if(
_verbosedebug) { cout <<
"Roo2DKeysPdf::setOptions" << endl; }
246 cout <<
"Roo2DKeysPdf::setOptions(TString options) options = "<< options << endl;
249 cout <<
"\t_debug = " <<
_debug << endl;
260 cout <<
"Roo2DKeysPdf::getOptions(void)" << endl;
263 cout <<
"\t_debug = " <<
_debug << endl;
275 if(
_verbosedebug) { cout <<
"Roo2DKeysPdf::calculateBandWidth(Int_t kernel)" << endl; }
289 cout <<
"Roo2DKeysPdf::calculateBandWidth The sqr(variance sum) == 0.0. " <<
" Your dataset represents a delta function."<<endl;
303 cout <<
"Roo2DKeysPdf::calculateBandWidth Using a normal bandwidth (same for a given dimension) based on"<<endl;
304 cout <<
" h_j = n^{-1/6}*sigma_j for the j^th dimension and n events * "<<
_widthScaleFactor<<endl;
317 cout <<
"Roo2DKeysPdf::calculateBandWidth Using an adaptive bandwidth (in general different for all events) [default]"<<endl;
344 if(
_vverbosedebug) { cout <<
"Roo2DKeysPdf::evaluate()" << endl; }
360 if(
_vverbosedebug ) { cout <<
"Roo2DKeysPdf::evaluateFull()" << endl; }
416 if(
_vverbosedebug) { cout <<
"Roo2DKeysPdf::highBoundaryCorrection" << endl; }
418 if(
thisH == 0.0)
return 0.0;
428 if(
_vverbosedebug) { cout <<
"Roo2DKeysPdf::lowBoundaryCorrection" << endl; }
430 if(
thisH == 0.0)
return 0.0;
470 if(
_BandWidthType == 1) cout <<
"The Bandwidth Type selected is Trivial" << endl;
471 else cout <<
"The Bandwidth Type selected is Adaptive" << endl;
485 cout <<
"Roo2DKeysPdf::getMean unknown axis "<<axis<<endl;
499 cout <<
"Roo2DKeysPdf::getSigma unknown axis "<<axis<<endl;
527 cout <<
"Roo2DKeysPdf::writeHistToFile This member function is temporarily disabled" <<endl;
532 cout <<
"Roo2DKeysPdf::writeHistToFile unable to open file "<<
outputFile <<endl;
561 TFile * file =
nullptr;
567 cout <<
"Roo2DKeysPdf::writeNTupleToFile unable to open file "<<
outputFile <<endl;
577 label +=
" the source data for 2D Keys PDF";
579 if(!
_theTree) { cout <<
"Unable to get a TTree for output" << endl;
return; }
612 out <<
"Roo2DKeysPDF instance domain information:"<<endl;
613 out <<
"\tX_min = " <<
_lox <<endl;
614 out <<
"\tX_max = " <<
_hix <<endl;
615 out <<
"\tY_min = " <<
_loy <<endl;
616 out <<
"\tY_max = " <<
_hiy <<endl;
618 out <<
"Data information:" << endl;
619 out <<
"\t<x> = " <<
_xMean <<endl;
620 out <<
"\tsigma(x) = " <<
_xSigma <<endl;
621 out <<
"\t<y> = " <<
_yMean <<endl;
622 out <<
"\tsigma(y) = " <<
_ySigma <<endl;
624 out <<
"END of info for Roo2DKeys pdf instance"<< endl;
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
Option_t Option_t TPoint TPoint const char x1
Option_t Option_t TPoint TPoint const char y1
Two-dimensional kernel estimation PDF.
double getMean(const char *axis) const
Roo2DKeysPdf(const char *name, const char *title, RooAbsReal &xx, RooAbsReal &yy, RooDataSet &data, TString options="a", double widthScaleFactor=1.0)
Constructor.
void writeNTupleToFile(char *outputFile, const char *name) const
Saves the data and calculated bandwidths to a file, as a record of what produced the PDF and to give ...
void writeToFile(char *outputFile, const char *name) const
double lowBoundaryCorrection(double thisVar, double thisH, double low, double tVar) const
double evaluate() const override
Evaluates the kernel estimation for x,y, interpolating between the points if necessary.
Int_t getBandWidthType() const
void PrintInfo(std::ostream &) const
Prints out _p[_nPoints][_nPoints] indicating the domain limits.
Int_t loadDataSet(RooDataSet &data, TString options)
Loads a new data set into the class instance.
double g(double var1, double *_var1, double sigma1, double var2, double *_var2, double sigma2) const
Calculates f(t_i) for the bandwidths.
double getSigma(const char *axis) const
~Roo2DKeysPdf() override
Destructor.
void setWidthScaleFactor(double widthScaleFactor)
double highBoundaryCorrection(double thisVar, double thisH, double high, double tVar) const
Apply the mirror at boundary correction to a dimension given the space position to evaluate at (thisV...
void writeHistToFile(char *outputFile, const char *histName) const
Plots the PDF as a histogram and saves it to a file, so that it can be loaded in as a Roo2DHist PDF i...
Int_t calculateBandWidth(Int_t kernel=-999)
Calculates the kernel bandwidth for x & y and the probability look up table _p[i][j].
void setOptions(TString options)
void getOptions(void) const
double evaluateFull(double thisX, double thisY) const
Evaluates the sum of the product of the 2D kernels for use in calculating the fixed kernel estimate,...
R__DEPRECATED(6, 36, "Use getObservables().") RooFit R__DEPRECATED(6, 36, "Use getObservables().") RooFit R__DEPRECATED(6, 36, "Use getObservables().") RooFit const RooAbsArg &testArg const
RooAbsArg * find(const char *name) const
Find object with given name in list.
Abstract interface for all probability density functions.
Abstract base class for objects that represent a real value and implements functionality common to al...
TH1 * fillHistogram(TH1 *hist, const RooArgList &plotVars, double scaleFactor=1, const RooArgSet *projectedVars=nullptr, bool scaling=true, const RooArgSet *condObs=nullptr, bool setError=true) const
Fill the ROOT histogram 'hist' with values sampled from this function at the bin centers.
RooArgList is a container object that can hold multiple RooAbsArg objects.
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Container class to hold unbinned data.
Variable that can be changed from the outside.
A ROOT file is an on-disk file, usually with extension .root, that stores objects in a file-system-li...
static TFile * Open(const char *name, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault, Int_t netopt=0)
Create / open a file.
Int_t Write(const char *name=nullptr, Int_t opt=0, Int_t bufsiz=0) override
Write memory objects to this file.
void Close(Option_t *option="") override
Close a file.
void SetName(const char *name) override
Change the name of this histogram.
2-D histogram with a float per channel (see TH1 documentation)
const char * GetName() const override
Returns name of object.
void ToLower()
Change string to lower-case.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
A TTree represents a columnar dataset.