40using std::cout, std::endl, std::string;
72 coutW(Plotting) <<
"Empty sampling distribution given to plot. Skipping." << endl;
92 coutW(Plotting) <<
"Could not determine xmin and xmax of sampling distribution that was given to plot." << endl;
101 double xlow =
xmin - 1.5*binWidth;
102 double xup =
xmax + 1.5*binWidth;
107 fHist->SetDirectory(
nullptr);
114 for (
int w_idx = 0; valuesIt !=
fSamplingDistr.end(); ++valuesIt, ++w_idx) {
116 else fHist->Fill(*valuesIt);
121 double weightSum = 1.0;
123 weightSum =
fHist->Integral(
"width");
124 fHist->Scale(1./weightSum);
139 fHist->SetStats(
false);
153 coutW(Plotting) <<
"Empty sampling distribution given to plot. Skipping." << endl;
158 TH1F *shaded =
static_cast<TH1F*
>(
fHist->Clone((
string(samplingDist->
GetName())+
string(
"_shaded")).c_str()));
184 line->SetLineWidth(3);
197 TH1 * hcopy =
static_cast<TH1*
>(
h->Clone());
231 std::cerr <<
fName <<
"::addObject: called with a null pointer" << std::endl;
235 fItems.Add(obj,drawOptions);
249 coutE(InputArguments) <<
fName <<
"::addOtherObject: called with a null pointer" << std::endl;
268 double theYMin(std::numeric_limits<float>::quiet_NaN());
287 coutE(InputArguments) <<
"invalid variable to plot" << std::endl;
303 TH1 * cloneObj =
static_cast<TH1*
>(obj->Clone());
317 TObject * cloneObj = otherObj->Clone();
325 if(!
fApplyStyle)
coutW(Plotting) <<
"gStyle will be changed to adjust SetOptLogx(...)" << endl;
329 if(!
fApplyStyle)
coutW(Plotting) <<
"gStyle will be changed to adjust SetOptLogy(...)" << endl;
349 gStyle->SetFrameBorderMode( icol );
350 gStyle->SetCanvasBorderMode( icol );
351 gStyle->SetPadBorderMode( icol );
352 gStyle->SetPadColor( icol );
353 gStyle->SetCanvasColor( icol );
354 gStyle->SetStatColor( icol );
355 gStyle->SetFrameFillStyle( 0 );
358 gStyle->SetPaperSize( 20, 26 );
376 if(obj->GetXaxis()->GetXmin() < tmpmin) tmpmin = obj->GetXaxis()->GetXmin();
377 if(obj->GetXaxis()->GetXmax() > tmpmax) tmpmax = obj->GetXaxis()->GetXmax();
378 if(obj->GetMaximum() > tmpYmax) tmpYmax = obj->GetMaximum() + 0.1*obj->GetMaximum();
393 if (samplDist ==
nullptr) {
394 fHist->SetLineColor(color);
397 shadedName +=
"_shaded";
400 if (!strcmp(obj->GetName(), shadedName.
Data())) {
401 obj->SetLineColor(color);
402 obj->SetFillColor(color);
409 shadedName +=
"_shaded";
412 if (!strcmp(obj->GetName(), samplDist->
GetName())) {
413 obj->SetLineColor(color);
416 if (!strcmp(obj->GetName(), shadedName.
Data())) {
417 obj->SetLineColor(color);
418 obj->SetFillColor(color);
431 if(samplDist ==
nullptr){
432 fHist->SetLineWidth(lwidth);
436 if(!strcmp(obj->GetName(),samplDist->
GetName())){
437 obj->SetLineWidth(lwidth);
450 if(samplDist ==
nullptr){
455 if(!strcmp(obj->GetName(),samplDist->
GetName())){
456 obj->SetLineStyle(
style);
469 if(samplDist ==
nullptr){
474 if(!strcmp(obj->GetName(),samplDist->
GetName())){
475 obj->SetMarkerStyle(
style);
488 if(samplDist ==
nullptr){
489 fHist->SetMarkerColor(color);
493 if(!strcmp(obj->GetName(),samplDist->
GetName())){
494 obj->SetMarkerColor(color);
507 if(samplDist ==
nullptr){
512 if(!strcmp(obj->GetName(),samplDist->
GetName())){
513 obj->SetMarkerSize(
size);
526 if(samplDist ==
nullptr){
530 if(!strcmp(obj->GetName(),samplDist->
GetName())){
543 if(samplDist ==
nullptr){
544 fHist->Rebin(rebinFactor);
548 if(!strcmp(obj->GetName(),samplDist->
GetName())){
549 obj->Rebin(rebinFactor);
565 cout <<
"Plot was not drawn yet. Dump can only be saved after it was drawn with Draw()." << endl;
569 TFile ofile(RootFileName,
option, ftitle, compress);
ROOT::RRangeCast< T, false, Range_t > static_range_cast(Range_t &&coll)
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
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 TPoint TPoint const char y1
R__EXTERN TStyle * gStyle
RooPlot * frame(const RooCmdArg &arg1, const RooCmdArg &arg2={}, const RooCmdArg &arg3={}, const RooCmdArg &arg4={}, const RooCmdArg &arg5={}, const RooCmdArg &arg6={}, const RooCmdArg &arg7={}, const RooCmdArg &arg8={}) const
Create a new RooPlot on the heap with a drawing frame initialized for this object,...
static bool addDirectoryStatus()
Query whether new instances of RooPlot will add themselves to gDirectory.
static bool setAddDirectoryStatus(bool flag)
Configure whether new instances of RooPlot will add themselves to gDirectory.
Variable that can be changed from the outside.
This class provides simple and straightforward utilities to plot SamplingDistribution objects.
void SetSampleWeights(const SamplingDistribution *samplingDist)
Determine if the sampling distribution has weights and store them.
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
void RebinDistribution(Int_t rebinFactor, const SamplingDistribution *samplDist=nullptr)
~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
void SetLineWidth(Width_t lwidth, const SamplingDistribution *samplDist=nullptr)
void SetLineStyle(Style_t style, const SamplingDistribution *samplDist=nullptr)
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 *samplDist=nullptr)
std::vector< double > fSampleWeights
void AddLine(double x1, double y1, double x2, double y2, const char *title=nullptr)
add a line
void SetLineColor(Color_t color, const SamplingDistribution *samplDist=nullptr)
Sets line color for given sampling distribution and fill color for the associated shaded TH1F.
void ApplyDefaultStyle(void)
Applies a predefined style if fApplyStyle is true (default).
void AddTH1(TH1 *h, Option_t *drawOptions="")
add a TH1
std::vector< double > fSamplingDistr
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
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 SetMarkerSize(Size_t size, const SamplingDistribution *samplDist=nullptr)
TH1F * GetTH1F(const SamplingDistribution *samplDist=nullptr)
Returns the TH1F associated with the give SamplingDistribution.
SamplingDistPlot(Int_t nbins=100)
Constructors for SamplingDistribution.
void SetXRange(double mi, double ma)
change x range
void SetMarkerStyle(Style_t style, const SamplingDistribution *samplDist=nullptr)
TList fOtherItems
other objects to be drawn like TLine etc.
This class simply holds a sampling distribution of some test statistic.
const std::vector< double > & GetSampleWeights() const
Get the sampling weights.
const TString GetVarName() const
const std::vector< double > & GetSamplingDistribution() const
Get test statistics values.
virtual void SetFillStyle(Style_t fstyle)
Set the fill area style.
virtual void SetLineWidth(Width_t lwidth)
Set the line width.
Bool_t cd() override
Change current directory to "this" directory.
A file, usually with extension .root, that stores data and code in the form of serialized objects in ...
void Close(Option_t *option="") override
Close a file.
1-D histogram with a float per channel (see TH1 documentation)
TH1 is the base class of all histogram classes in ROOT.
virtual void SetDirectory(TDirectory *dir)
By default, when a histogram is created, it is added to the list of histogram objects in the current ...
virtual Double_t GetBinCenter(Int_t bin) const
Return bin center for 1D histogram.
Option_t * GetOption() const override
virtual Int_t GetNbinsX() const
virtual void SetMaximum(Double_t maximum=-1111)
virtual void SetMinimum(Double_t minimum=-1111)
virtual void SetBinContent(Int_t bin, Double_t content)
Set bin content see convention for numbering bins in TH1::GetBin In case the bin number is greater th...
Use the TLine constructor to create a simple line.
const char * GetName() const override
Returns name of object.
const char * GetTitle() const override
Returns title of object.
virtual Option_t * GetOption() const
TObject()
TObject constructor.
TSubString Strip(EStripType s=kTrailing, char c=' ') const
Return a substring of self stripped at beginning and/or end.
const char * Data() const
TString & ReplaceAll(const TString &s1, const TString &s2)
void ToUpper()
Change string to upper case.
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
Namespace for the RooStats classes.
Double_t Infinity()
Returns an infinity as defined by the IEEE standard.