Logo ROOT  
Reference Guide
 
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Loading...
Searching...
No Matches
SamplingDistPlot.cxx
Go to the documentation of this file.
1// @(#)root/roostats:$Id$
2// Authors: Sven Kreiss June 2010
3// Authors: Kyle Cranmer, Lorenzo Moneta, Gregory Schott, Wouter Verkerke
4/*************************************************************************
5 * Copyright (C) 1995-2008, Rene Brun and Fons Rademakers. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12/** \class RooStats::SamplingDistPlot
13 \ingroup Roostats
14
15This class provides simple and straightforward utilities to plot SamplingDistribution
16objects.
17*/
18
20
22
23#include "RooRealVar.h"
24#include "TStyle.h"
25#include "TLine.h"
26#include "TFile.h"
27#include "TVirtualPad.h" // for gPad
28
29#include <algorithm>
30#include <iostream>
31
32
33#include "RooMsgService.h"
34
35#include "TMath.h"
36
37
38using namespace RooStats;
39using std::string;
40
41////////////////////////////////////////////////////////////////////////////////
42/// SamplingDistPlot default constructor with bin size
43
45
46////////////////////////////////////////////////////////////////////////////////
47/// SamplingDistPlot constructor with bin size, min and max
48
49SamplingDistPlot::SamplingDistPlot(Int_t nbins, double min, double max) : fBins{nbins}
50{
51 SetXRange(min, max);
52}
53
54////////////////////////////////////////////////////////////////////////////////
55/// destructors - delete objects contained in the list
56
63
64
65////////////////////////////////////////////////////////////////////////////////
66/// adds sampling distribution (and normalizes if "NORMALIZE" is given as an option)
67
69 fSamplingDistr = samplingDist->GetSamplingDistribution();
70 if( fSamplingDistr.empty() ) {
71 coutW(Plotting) << "Empty sampling distribution given to plot. Skipping." << std::endl;
72 return 0.0;
73 }
75
76 TString options(drawOptions);
77 options.ToUpper();
78
79 double xmin(TMath::Infinity());
80 double xmax(-TMath::Infinity());
81 // remove cases where xmin and xmax are +/- inf
82 for( unsigned int i=0; i < fSamplingDistr.size(); i++ ) {
83 if( fSamplingDistr[i] < xmin && fSamplingDistr[i] != -TMath::Infinity() ) {
85 }
88 }
89 }
90 if( xmin >= xmax ) {
91 coutW(Plotting) << "Could not determine xmin and xmax of sampling distribution that was given to plot." << std::endl;
92 xmin = -1.0;
93 xmax = 1.0;
94 }
95
96
97 // add 1.5 bins left and right
98 assert(fBins > 1);
99 double binWidth = (xmax-xmin)/(fBins);
100 double xlow = xmin - 1.5*binWidth;
101 double xup = xmax + 1.5*binWidth;
102 if( !TMath::IsNaN(fXMin) ) xlow = fXMin;
103 if( !TMath::IsNaN(fXMax) ) xup = fXMax;
104
105 fHist = new TH1F(samplingDist->GetName(), samplingDist->GetTitle(), fBins, xlow, xup);
106 fHist->SetDirectory(nullptr); // make the object managed by this class
107
108 if( fVarName.Length() == 0 ) fVarName = samplingDist->GetVarName();
110
111
112 std::vector<double>::iterator valuesIt = fSamplingDistr.begin();
113 for (int w_idx = 0; valuesIt != fSamplingDistr.end(); ++valuesIt, ++w_idx) {
115 else fHist->Fill(*valuesIt);
116 }
117
118 // NORMALIZATION
119 fHist->Sumw2();
120 double weightSum = 1.0;
121 if(options.Contains("NORMALIZE")) {
122 weightSum = fHist->Integral("width");
123 fHist->Scale(1./weightSum);
124
125 options.ReplaceAll("NORMALIZE", "");
126 options.Strip();
127 }
128
129
130 //some basic aesthetics
134
135 fMarkerType++;
136 fColor++;
137
138 fHist->SetStats(false);
139
140 addObject(fHist, options.Data());
141
142 TString title = samplingDist->GetTitle();
143 if(fLegend && title.Length() > 0) fLegend->AddEntry(fHist, title, "L");
144
145 return 1./weightSum;
146}
147
148////////////////////////////////////////////////////////////////////////////////
149
151 if( samplingDist->GetSamplingDistribution().empty() ) {
152 coutW(Plotting) << "Empty sampling distribution given to plot. Skipping." << std::endl;
153 return 0.0;
154 }
155 double scaleFactor = AddSamplingDistribution(samplingDist, drawOptions);
156
157 TH1F *shaded = static_cast<TH1F*>(fHist->Clone((string(samplingDist->GetName())+string("_shaded")).c_str()));
158 shaded->SetDirectory(nullptr);
159 shaded->SetFillStyle(fFillStyle++);
160 shaded->SetLineWidth(1);
161
162 for (int i=0; i<shaded->GetNbinsX(); ++i) {
163 if (shaded->GetBinCenter(i) < minShaded || shaded->GetBinCenter(i) > maxShaded){
164 shaded->SetBinContent(i,0);
165 }
166 }
167
168 TString options(drawOptions);
169 options.ToUpper();
170 if(options.Contains("NORMALIZE")) {
171 options.ReplaceAll("NORMALIZE", "");
172 options.Strip();
173 }
174 addObject(shaded, options.Data());
175
176 return scaleFactor;
177}
178
179////////////////////////////////////////////////////////////////////////////////
180
181void SamplingDistPlot::AddLine(double x1, double y1, double x2, double y2, const char* title) {
182 TLine *line = new TLine(x1, y1, x2, y2);
183 line->SetLineWidth(3);
185
186 if(fLegend && title) fLegend->AddEntry(line, title, "L");
187
188 addOtherObject(line, ""); // no options
189}
190
191////////////////////////////////////////////////////////////////////////////////
192/// add an histogram (it will be cloned);
193
195 if(fLegend && h->GetTitle()) fLegend->AddEntry(h, h->GetTitle(), "L");
196 TH1 * hcopy = static_cast<TH1*>(h->Clone());
197 hcopy->SetDirectory(nullptr);
198 addObject(hcopy, drawOptions);
199}
200void SamplingDistPlot::AddTF1(TF1* f, const char* title, Option_t *drawOptions) {
201 if(fLegend && title) fLegend->AddEntry(f, title, "L");
202 addOtherObject(f->Clone(), drawOptions);
203}
204
205////////////////////////////////////////////////////////////////////////////////
206///Determine if the sampling distribution has weights and store them
207
209{
210 fIsWeighted = false;
211
212 if(!samplingDist->GetSampleWeights().empty()){
213 fIsWeighted = true;
214 fSampleWeights = samplingDist->GetSampleWeights();
215 }
216
217 return;
218}
219
220////////////////////////////////////////////////////////////////////////////////
221/// Add a generic object to this plot. The specified options will be
222/// used to Draw() this object later. The caller transfers ownership
223/// of the object with this call, and the object will be deleted
224/// when its containing plot object is destroyed.
225
227{
228
229 if(nullptr == obj) {
230 std::cerr << fName << "::addObject: called with a null pointer" << std::endl;
231 return;
232 }
233
234 fItems.Add(obj,drawOptions);
235
236 return;
237}
238
239////////////////////////////////////////////////////////////////////////////////
240/// Add a generic object to this plot. The specified options will be
241/// used to Draw() this object later. The caller transfers ownership
242/// of the object with this call, and the object will be deleted
243/// when its containing plot object is destroyed.
244
246{
247 if(nullptr == obj) {
248 coutE(InputArguments) << fName << "::addOtherObject: called with a null pointer" << std::endl;
249 return;
250 }
251
252 fOtherItems.Add(obj,drawOptions);
253
254 return;
255}
256
257////////////////////////////////////////////////////////////////////////////////
258/// Draw this plot and all of the elements it contains. The specified options
259/// only apply to the drawing of our frame. The options specified in our add...()
260/// methods will be used to draw each object we contain.
261
262void SamplingDistPlot::Draw(Option_t * /*options */) {
264
265 double theMin(0.);
266 double theMax(0.);
267 double theYMin(std::numeric_limits<float>::quiet_NaN());
268 double theYMax(0.);
270 if( !TMath::IsNaN(fXMin) ) theMin = fXMin;
271 if( !TMath::IsNaN(fXMax) ) theMax = fXMax;
274
276
277 //L.M. by drawing many times we create a memory leak ???
278 if (fRooPlot) delete fRooPlot;
279
281 // make the RooPlot managed by this class
283 fRooPlot = xaxis.frame();
285 if (!fRooPlot) {
286 coutE(InputArguments) << "invalid variable to plot" << std::endl;
287 return;
288 }
289 fRooPlot->SetTitle("");
290 if( !TMath::IsNaN(theYMax) ) {
291 //coutI(InputArguments) << "Setting maximum to " << theYMax << std::endl;
293 }
294 if( !TMath::IsNaN(theYMin) ) {
295 //coutI(InputArguments) << "Setting minimum to " << theYMin << std::endl;
297 }
298
299 for(auto * obj : static_range_cast<TH1F*>(fItems)) {
300 //obj->Draw(fIterator->GetOption());
301 // add cloned objects to avoid mem leaks
302 TH1 * cloneObj = static_cast<TH1*>(obj->Clone());
303 if( !TMath::IsNaN(theYMax) ) {
304 //coutI(InputArguments) << "Setting maximum of TH1 to " << theYMax << std::endl;
305 cloneObj->SetMaximum(theYMax);
306 }
307 if( !TMath::IsNaN(theYMin) ) {
308 //coutI(InputArguments) << "Setting minimum of TH1 to " << theYMin << std::endl;
309 cloneObj->SetMinimum(theYMin);
310 }
311 cloneObj->SetDirectory(nullptr); // transfer ownership of the object
312 fRooPlot->addTH1(cloneObj, obj->GetOption());
313 }
314
315 for(TObject * otherObj : fOtherItems) {
316 TObject * cloneObj = otherObj->Clone();
317 fRooPlot->addObject(cloneObj, otherObj->GetOption());
318 }
319
320
322
323 if(bool(gStyle->GetOptLogx()) != fLogXaxis) {
324 if(!fApplyStyle) coutW(Plotting) << "gStyle will be changed to adjust SetOptLogx(...)" << std::endl;
326 }
327 if(bool(gStyle->GetOptLogy()) != fLogYaxis) {
328 if(!fApplyStyle) coutW(Plotting) << "gStyle will be changed to adjust SetOptLogy(...)" << std::endl;
330 }
331 fRooPlot->Draw();
332
333 // apply this since gStyle does not work for RooPlot
334 if (gPad) {
335 gPad->SetLogx(fLogXaxis);
336 gPad->SetLogy(fLogYaxis);
337 }
338
339 return;
340}
341
342////////////////////////////////////////////////////////////////////////////////
343
345 if(fApplyStyle) {
346 // use plain black on white colors
347 Int_t icol = 0;
355
356 // set the paper & margin sizes
357 gStyle->SetPaperSize( 20, 26 );
358
359 if(fLegend) {
362 }
363 }
364}
365
366////////////////////////////////////////////////////////////////////////////////
367
368void SamplingDistPlot::GetAbsoluteInterval(double &theMin, double &theMax, double &theYMax) const
369{
370 double tmpmin = TMath::Infinity();
371 double tmpmax = -TMath::Infinity();
372 double tmpYmax = -TMath::Infinity();
373
374 for(auto * obj : static_range_cast<TH1F*>(fItems)) {
375 if(obj->GetXaxis()->GetXmin() < tmpmin) tmpmin = obj->GetXaxis()->GetXmin();
376 if(obj->GetXaxis()->GetXmax() > tmpmax) tmpmax = obj->GetXaxis()->GetXmax();
377 if(obj->GetMaximum() > tmpYmax) tmpYmax = obj->GetMaximum() + 0.1*obj->GetMaximum();
378 }
379
380 theMin = tmpmin;
381 theMax = tmpmax;
383
384 return;
385}
386
387////////////////////////////////////////////////////////////////////////////////
388/// Sets line color for given sampling distribution and
389/// fill color for the associated shaded TH1F.
390
392 if (sampleDist == nullptr) {
393 fHist->SetLineColor(color);
394
396 shadedName += "_shaded";
397
398 for(auto * obj : static_range_cast<TH1F*>(fItems)) {
399 if (!strcmp(obj->GetName(), shadedName.Data())) {
400 obj->SetLineColor(color);
401 obj->SetFillColor(color);
402 //break;
403 }
404 }
405 } else {
406
407 TString shadedName(sampleDist->GetName());
408 shadedName += "_shaded";
409
410 for(auto * obj : static_range_cast<TH1F*>(fItems)) {
411 if (!strcmp(obj->GetName(), sampleDist->GetName())) {
412 obj->SetLineColor(color);
413 //break;
414 }
415 if (!strcmp(obj->GetName(), shadedName.Data())) {
416 obj->SetLineColor(color);
417 obj->SetFillColor(color);
418 //break;
419 }
420 }
421 }
422
423 return;
424}
425
426////////////////////////////////////////////////////////////////////////////////
427
429{
430 if(sampleDist == nullptr){
432 }
433 else{
434 for(auto * obj : static_range_cast<TH1F*>(fItems)) {
435 if(!strcmp(obj->GetName(),sampleDist->GetName())){
436 obj->SetLineWidth(lwidth);
437 break;
438 }
439 }
440 }
441
442 return;
443}
444
445////////////////////////////////////////////////////////////////////////////////
446
448{
449 if(sampleDist == nullptr){
451 }
452 else{
453 for(auto * obj : static_range_cast<TH1F*>(fItems)) {
454 if(!strcmp(obj->GetName(),sampleDist->GetName())){
455 obj->SetLineStyle(style);
456 break;
457 }
458 }
459 }
460
461 return;
462}
463
464////////////////////////////////////////////////////////////////////////////////
465
467{
468 if(sampleDist == nullptr){
470 }
471 else{
472 for(auto * obj : static_range_cast<TH1F*>(fItems)) {
473 if(!strcmp(obj->GetName(),sampleDist->GetName())){
474 obj->SetMarkerStyle(style);
475 break;
476 }
477 }
478 }
479
480 return;
481}
482
483////////////////////////////////////////////////////////////////////////////////
484
486{
487 if(sampleDist == nullptr){
488 fHist->SetMarkerColor(color);
489 }
490 else{
491 for(auto * obj : static_range_cast<TH1F*>(fItems)) {
492 if(!strcmp(obj->GetName(),sampleDist->GetName())){
493 obj->SetMarkerColor(color);
494 break;
495 }
496 }
497 }
498
499 return;
500}
501
502////////////////////////////////////////////////////////////////////////////////
503
505{
506 if(sampleDist == nullptr){
508 }
509 else{
510 for(auto * obj : static_range_cast<TH1F*>(fItems)) {
511 if(!strcmp(obj->GetName(),sampleDist->GetName())){
512 obj->SetMarkerSize(size);
513 break;
514 }
515 }
516 }
517
518 return;
519}
520
521////////////////////////////////////////////////////////////////////////////////
522
524{
525 if(sampleDist == nullptr){
526 return fHist;
527 }else{
528 for(auto * obj : static_range_cast<TH1F*>(fItems)) {
529 if(!strcmp(obj->GetName(),sampleDist->GetName())){
530 return obj;
531 }
532 }
533 }
534
535 return nullptr;
536}
537
538////////////////////////////////////////////////////////////////////////////////
539
541{
542 if(sampleDist == nullptr){
544 }
545 else{
546 for(auto * obj : static_range_cast<TH1F*>(fItems)) {
547 if(!strcmp(obj->GetName(),sampleDist->GetName())){
548 obj->Rebin(rebinFactor);
549 break;
550 }
551 }
552 }
553
554 return;
555}
556
557////////////////////////////////////////////////////////////////////////////////
558/// TODO test
559
561 // All the objects are written to rootfile
562
563 if(!fRooPlot) {
564 std::cout << "Plot was not drawn yet. Dump can only be saved after it was drawn with Draw()." << std::endl;
565 return;
566 }
567
569 ofile.cd();
570 fRooPlot->Write();
571 ofile.Close();
572}
#define f(i)
Definition RSha256.hxx:104
#define h(i)
Definition RSha256.hxx:106
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
#define coutW(a)
#define coutE(a)
short Style_t
Definition RtypesCore.h:82
short Color_t
Definition RtypesCore.h:85
float Size_t
Definition RtypesCore.h:89
short Width_t
Definition RtypesCore.h:84
const char Option_t
Definition RtypesCore.h:66
@ kBlack
Definition Rtypes.h:65
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
Option_t Option_t option
Option_t Option_t TPoint TPoint const char x2
Option_t Option_t TPoint TPoint const char x1
Option_t Option_t TPoint TPoint const char y2
Option_t Option_t style
Option_t Option_t TPoint TPoint const char y1
float xmin
float xmax
R__EXTERN TStyle * gStyle
Definition TStyle.h:442
#define gPad
void SetTitle(const char *name) override
Set the title of the RooPlot to 'title'.
Definition RooPlot.cxx:1202
void addObject(TObject *obj, Option_t *drawOptions="", bool invisible=false)
Add a generic object to this plot.
Definition RooPlot.cxx:325
void addTH1(TH1 *hist, Option_t *drawOptions="", bool invisible=false)
Add a TH1 histogram object to this plot.
Definition RooPlot.cxx:344
virtual void SetMinimum(double minimum=-1111)
Set minimum value of Y axis.
Definition RooPlot.cxx:1006
static bool addDirectoryStatus()
Query whether new instances of RooPlot will add themselves to gDirectory.
Definition RooPlot.cxx:76
virtual void SetMaximum(double maximum=-1111)
Set maximum value of Y axis.
Definition RooPlot.cxx:996
void Draw(Option_t *options=nullptr) override
Draw this plot and all of the elements it contains.
Definition RooPlot.cxx:596
static bool setAddDirectoryStatus(bool flag)
Configure whether new instances of RooPlot will add themselves to gDirectory.
Definition RooPlot.cxx:77
Variable that can be changed from the outside.
Definition RooRealVar.h:37
void SetSampleWeights(const SamplingDistribution *samplingDist)
Determine if the sampling distribution has weights and store them.
void SetMarkerSize(Size_t size, const SamplingDistribution *sampleDist=nullptr)
TList fItems
holds TH1Fs only
void DumpToFile(const char *RootFileName, Option_t *option="", const char *ftitle="", Int_t compress=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault)
write to Root file
~SamplingDistPlot() override
Destructor of SamplingDistribution.
void Draw(Option_t *options=nullptr) override
Draw this plot and all of the elements it contains.
void GetAbsoluteInterval(double &theMin, double &theMax, double &theYMax) const
double AddSamplingDistributionShaded(const SamplingDistribution *samplingDist, double minShaded, double maxShaded, Option_t *drawOptions="NORMALIZE HIST")
Like AddSamplingDistribution, but also sets a shaded area in the minShaded and maxShaded boundaries.
void SetMarkerColor(Color_t color, const SamplingDistribution *sampleDist=nullptr)
void SetLineWidth(Width_t lwidth, const SamplingDistribution *sampleDist=nullptr)
std::vector< double > fSampleWeights
void AddLine(double x1, double y1, double x2, double y2, const char *title=nullptr)
add a line
void ApplyDefaultStyle(void)
Applies a predefined style if fApplyStyle is true (default).
void AddTH1(TH1 *h, Option_t *drawOptions="")
add a TH1
void SetMarkerStyle(Style_t style, const SamplingDistribution *sampleDist=nullptr)
std::vector< double > fSamplingDistr
void SetLineColor(Color_t color, const SamplingDistribution *sampleDist=nullptr)
Sets line color for given sampling distribution and fill color for the associated shaded TH1F.
void RebinDistribution(Int_t rebinFactor, const SamplingDistribution *sampleDist=nullptr)
void AddTF1(TF1 *f, const char *title=nullptr, Option_t *drawOptions="SAME")
add a TF1
double AddSamplingDistribution(const SamplingDistribution *samplingDist, Option_t *drawOptions="NORMALIZE HIST")
adds the sampling distribution and returns the scale factor
TH1F * GetTH1F(const SamplingDistribution *sampleDist=nullptr)
Returns the TH1F associated with the give SamplingDistribution.
void addOtherObject(TObject *obj, Option_t *drawOptions=nullptr)
Add a generic object to this plot.
void addObject(TObject *obj, Option_t *drawOptions=nullptr)
Add a generic object to this plot.
void SetLineStyle(Style_t style, const SamplingDistribution *sampleDist=nullptr)
SamplingDistPlot(Int_t nbins=100)
Constructors for SamplingDistribution.
void SetXRange(double mi, double ma)
change x range
TList fOtherItems
other objects to be drawn like TLine etc.
This class simply holds a sampling distribution of some test statistic.
virtual void SetFillColor(Color_t fcolor)
Set the fill area color.
Definition TAttFill.h:38
virtual void SetLineStyle(Style_t lstyle)
Set the line style.
Definition TAttLine.h:44
virtual void SetLineWidth(Width_t lwidth)
Set the line width.
Definition TAttLine.h:45
virtual void SetLineColor(Color_t lcolor)
Set the line color.
Definition TAttLine.h:42
virtual void SetMarkerColor(Color_t mcolor=1)
Set the marker color.
Definition TAttMarker.h:39
virtual void SetMarkerStyle(Style_t mstyle=1)
Set the marker style.
Definition TAttMarker.h:41
virtual void SetMarkerSize(Size_t msize=1)
Set the marker size.
Definition TAttMarker.h:46
1-Dim function class
Definition TF1.h:234
A ROOT file is an on-disk file, usually with extension .root, that stores objects in a file-system-li...
Definition TFile.h:131
1-D histogram with a float per channel (see TH1 documentation)
Definition TH1.h:650
TH1 is the base class of all histogram classes in ROOT.
Definition TH1.h:59
virtual void SetDirectory(TDirectory *dir)
By default, when a histogram is created, it is added to the list of histogram objects in the current ...
Definition TH1.cxx:8933
TAxis * GetXaxis()
Definition TH1.h:344
virtual Int_t Fill(Double_t x)
Increment bin with abscissa X by 1.
Definition TH1.cxx:3316
virtual Double_t Integral(Option_t *option="") const
Return integral of bin contents.
Definition TH1.cxx:7937
virtual TH1 * Rebin(Int_t ngroup=2, const char *newname="", const Double_t *xbins=nullptr)
Rebin this histogram.
Definition TH1.cxx:6278
virtual void Scale(Double_t c1=1, Option_t *option="")
Multiply this histogram by a constant c1.
Definition TH1.cxx:6607
TObject * Clone(const char *newname="") const override
Make a complete copy of the underlying object.
Definition TH1.cxx:2724
virtual void Sumw2(Bool_t flag=kTRUE)
Create structure to store sum of squares of weights.
Definition TH1.cxx:9016
virtual void SetStats(Bool_t stats=kTRUE)
Set statistics option on/off.
Definition TH1.cxx:8986
TLegendEntry * AddEntry(const TObject *obj, const char *label="", Option_t *option="lpf")
Add a new entry to this legend.
Definition TLegend.cxx:320
Use the TLine constructor to create a simple line.
Definition TLine.h:22
void Add(TObject *obj) override
Definition TList.h:81
void Delete(Option_t *option="") override
Remove all objects from the list AND delete all heap based objects.
Definition TList.cxx:468
virtual void SetTitle(const char *title="")
Set the title of the TNamed.
Definition TNamed.cxx:174
const char * GetName() const override
Returns name of object.
Definition TNamed.h:49
TString fName
Definition TNamed.h:32
Mother of all ROOT objects.
Definition TObject.h:41
virtual Int_t Write(const char *name=nullptr, Int_t option=0, Int_t bufsize=0)
Write this object to the current directory.
Definition TObject.cxx:964
virtual const char * GetTitle() const
Returns title of object.
Definition TObject.cxx:501
virtual void SetBorderSize(Int_t bordersize=4)
Sets the border size of the TPave box and shadow.
Definition TPave.h:79
Basic string class.
Definition TString.h:139
Ssiz_t Length() const
Definition TString.h:417
TSubString Strip(EStripType s=kTrailing, char c=' ') const
Return a substring of self stripped at beginning and/or end.
Definition TString.cxx:1163
const char * Data() const
Definition TString.h:376
TString & ReplaceAll(const TString &s1, const TString &s2)
Definition TString.h:704
void ToUpper()
Change string to upper case.
Definition TString.cxx:1195
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
Definition TString.h:632
Int_t GetOptLogy() const
Definition TStyle.h:250
void SetPadBorderMode(Int_t mode=1)
Definition TStyle.h:361
void SetOptLogx(Int_t logx=1)
Definition TStyle.h:333
void SetCanvasColor(Color_t color=19)
Definition TStyle.h:347
void SetCanvasBorderMode(Int_t mode=1)
Definition TStyle.h:349
void SetFrameFillStyle(Style_t styl=0)
Definition TStyle.h:378
void SetFrameBorderMode(Int_t mode=1)
Definition TStyle.h:382
void SetOptLogy(Int_t logy=1)
Definition TStyle.h:334
void SetPaperSize(EPaperSize size)
Set paper size for PostScript output.
Definition TStyle.cxx:1706
void SetStatColor(Color_t color=19)
Definition TStyle.h:394
void SetPadColor(Color_t color=19)
Definition TStyle.h:359
Int_t GetOptLogx() const
Definition TStyle.h:249
TLine * line
Namespace for the RooStats classes.
Definition CodegenImpl.h:58
Bool_t IsNaN(Double_t x)
Definition TMath.h:896
Double_t Infinity()
Returns an infinity as defined by the IEEE standard.
Definition TMath.h:921