Logo ROOT   6.16/01
Reference Guide
rf405_realtocatfuncs.C
Go to the documentation of this file.
1/// \file
2/// \ingroup tutorial_roofit
3/// \notebook -js
4/// 'DATA AND CATEGORIES' RooFit tutorial macro #405
5///
6/// Demonstration of real-->discrete mapping functions
7///
8/// \macro_image
9/// \macro_output
10/// \macro_code
11/// \author 07/2008 - Wouter Verkerke
12
13
14#include "RooRealVar.h"
15#include "RooDataSet.h"
16#include "RooGaussian.h"
17#include "RooConstVar.h"
18#include "RooCategory.h"
20#include "RooBinningCategory.h"
21#include "Roo1DTable.h"
22#include "RooArgusBG.h"
23#include "TCanvas.h"
24#include "TAxis.h"
25#include "RooPlot.h"
26using namespace RooFit ;
27
28
30{
31
32 // D e f i n e p d f i n x , s a m p l e d a t a s e t i n x
33 // ------------------------------------------------------------------------
34
35
36 // Define a dummy PDF in x
37 RooRealVar x("x","x",0,10) ;
38 RooArgusBG a("a","argus(x)",x,RooConst(10),RooConst(-1)) ;
39
40 // Generate a dummy dataset
41 RooDataSet *data = a.generate(x,10000) ;
42
43
44
45 // C r e a t e a t h r e s h o l d r e a l - > c a t f u n c t i o n
46 // --------------------------------------------------------------------------
47
48 // A RooThresholdCategory is a category function that maps regions in a real-valued
49 // input observable observables to state names. At construction time a 'default'
50 // state name must be specified to which all values of x are mapped that are not
51 // otherwise assigned
52 RooThresholdCategory xRegion("xRegion","region of x",x,"Background") ;
53
54 // Specify thresholds and state assignments one-by-one.
55 // Each statement specifies that all values _below_ the given value
56 // (and above any lower specified threshold) are mapped to the
57 // category state with the given name
58 //
59 // Background | SideBand | Signal | SideBand | Background
60 // 4.23 5.23 8.23 9.23
61 xRegion.addThreshold(4.23,"Background") ;
62 xRegion.addThreshold(5.23,"SideBand") ;
63 xRegion.addThreshold(8.23,"Signal") ;
64 xRegion.addThreshold(9.23,"SideBand") ;
65
66
67
68 // U s e t h r e s h o l d f u n c t i o n t o p l o t d a t a r e g i o n s
69 // -------------------------------------------------------------------------------------
70
71 // Add values of threshold function to dataset so that it can be used as observable
72 data->addColumn(xRegion) ;
73
74 // Make plot of data in x
75 RooPlot* xframe = x.frame(Title("Demo of threshold and binning mapping functions")) ;
76 data->plotOn(xframe) ;
77
78 // Use calculated category to select sideband data
79 data->plotOn(xframe,Cut("xRegion==xRegion::SideBand"),MarkerColor(kRed),LineColor(kRed)) ;
80
81
82
83 // C r e a t e a b i n n i n g r e a l - > c a t f u n c t i o n
84 // ----------------------------------------------------------------------
85
86 // A RooBinningCategory is a category function that maps bins of a (named) binning definition
87 // in a real-valued input observable observables to state names. The state names are automatically
88 // constructed from the variable name, the binning name and the bin number. If no binning name
89 // is specified the default binning is mapped
90
91 x.setBins(10,"coarse") ;
92 RooBinningCategory xBins("xBins","coarse bins in x",x,"coarse") ;
93
94
95
96 // U s e b i n n i n g f u n c t i o n f o r t a b u l a t i o n a n d p l o t t i n g
97 // -----------------------------------------------------------------------------------------------
98
99 // Print table of xBins state multiplicity. Note that xBins does not need to be an observable in data
100 // it can be a function of observables in data as well
101 Roo1DTable* xbtable = data->table(xBins) ;
102 xbtable->Print("v") ;
103
104 // Add values of xBins function to dataset so that it can be used as observable
105 RooCategory* xb = (RooCategory*) data->addColumn(xBins) ;
106
107 // Define range "alt" as including bins 1,3,5,7,9
108 xb->setRange("alt","x_coarse_bin1,x_coarse_bin3,x_coarse_bin5,x_coarse_bin7,x_coarse_bin9") ;
109
110 // Construct subset of data matching range "alt" but only for the first 5000 events and plot it on the frame
111 RooDataSet* dataSel = (RooDataSet*) data->reduce(CutRange("alt"),EventRange(0,5000)) ;
112 dataSel->plotOn(xframe,MarkerColor(kGreen),LineColor(kGreen)) ;
113
114
115
116 new TCanvas("rf405_realtocatfuncs","rf405_realtocatfuncs",600,600) ;
117 xframe->SetMinimum(0.01) ;
118 gPad->SetLeftMargin(0.15) ; xframe->GetYaxis()->SetTitleOffset(1.4) ; xframe->Draw() ;
119
120
121}
@ kRed
Definition: Rtypes.h:63
@ kGreen
Definition: Rtypes.h:63
#define gPad
Definition: TVirtualPad.h:286
Roo1DTable implements a one-dimensional table.
Definition: Roo1DTable.h:24
virtual void Print(Option_t *options=0) const
Print TNamed name and title.
Definition: Roo1DTable.h:51
virtual RooPlot * plotOn(RooPlot *frame, const RooCmdArg &arg1=RooCmdArg::none(), const RooCmdArg &arg2=RooCmdArg::none(), const RooCmdArg &arg3=RooCmdArg::none(), const RooCmdArg &arg4=RooCmdArg::none(), const RooCmdArg &arg5=RooCmdArg::none(), const RooCmdArg &arg6=RooCmdArg::none(), const RooCmdArg &arg7=RooCmdArg::none(), const RooCmdArg &arg8=RooCmdArg::none()) const
Calls RooPlot* plotOn(RooPlot* frame, const RooLinkedList& cmdList) const ;.
Definition: RooAbsData.cxx:531
RooArgusBG is a RooAbsPdf implementation describing the ARGUS background shape.
Definition: RooArgusBG.h:25
Class RooBinningCategory provides a real-to-category mapping defined by a series of thresholds.
RooCategory represents a fundamental (non-derived) discrete value object.
Definition: RooCategory.h:24
void setRange(const char *rangeName, const char *stateNameList)
RooDataSet is a container class to hold unbinned data.
Definition: RooDataSet.h:31
A RooPlot is a plot frame and a container for graphics objects within that frame.
Definition: RooPlot.h:41
virtual void SetMinimum(Double_t minimum=-1111)
Set minimum value of Y axis.
Definition: RooPlot.cxx:958
TAxis * GetYaxis() const
Definition: RooPlot.cxx:1123
virtual void Draw(Option_t *options=0)
Draw this plot and all of the elements it contains.
Definition: RooPlot.cxx:558
RooRealVar represents a fundamental (non-derived) real valued object.
Definition: RooRealVar.h:36
Class RooThresholdCategory provides a real-to-category mapping defined by a series of thresholds.
virtual void SetTitleOffset(Float_t offset=1)
Set distance between the axis and the axis title Offset is a correction factor with respect to the "s...
Definition: TAttAxis.cxx:294
The Canvas class.
Definition: TCanvas.h:31
Double_t x[n]
Definition: legend1.C:17
RooCmdArg MarkerColor(Color_t color)
RooConstVar & RooConst(Double_t val)
RooCmdArg CutRange(const char *rangeName)
RooCmdArg EventRange(Int_t nStart, Int_t nStop)
RooCmdArg Cut(const char *cutSpec)
RooCmdArg LineColor(Color_t color)
const char * Title
Definition: TXMLSetup.cxx:67
auto * a
Definition: textangle.C:12