A class to calculate "sWeights" used to create an "sPlot".
An sPlot can reweight a dataset to show different components (e.g. signal / background), but it doesn't use cuts, and therefore doesn't have to sort events into signal/background (or other) categories. Instead of assigning a category to each event in the dataset, all events are weighted. To compute the weights, a PDF with different components is analysed, and the weights are added to the dataset. When plotting the dataset with the weights of the signal or background components, the data looks like "signal", but all events in the dataset are used.
The result is similar to a likelihood projection plot, but without cuts.
- Note
- SPlot needs to fit the pdf to the data once, so make sure that all relevant fit arguments such as the fit range are passed in the constructor.
The code is based on `‘SPlot: A statistical tool to unfold data distributions,’' Nucl. Instrum. Meth. A 555, 356 (2005) [arXiv:physics/0402083].
Creating an SPlot
To use this class, you first must have a pdf that includes yield parameters for (possibly several) different species, for example a signal and background yield. Those yields must be of type RooRealVar / RooLinearVar (or anything that derives from RooAbsRealLValue). This is necessary because RooStats needs to be able to set the yields to 0 and 1 to probe the PDF. After constructing the s weights, the yields will be restored to their original values.
To create an instance of the SPlot, supply a data set, the pdf to analyse, and a list which parameters of the pdf are yields. The SPlot will calculate SWeights, and include these as columns in the RooDataSet. The dataset will have two additional columns for every yield with name "`<varname>`":
L_<varname>
is the likelihood for each event, i.e., the pdf evaluated for the given value of the variable "varname".
<varname>_sw
is the value of the sWeight for the variable "varname" for each event.
In SPlot::SPlot(), one can choose whether columns should be added to an existing dataset or whether a copy of the dataset should be created.
Plotting s-weighted data
After computing the s weights, create a new dataset that uses the s weights of the variable of interest for weighting. If the yield parameter for signal was e.g. "signalYield", the dataset can be constructed as follows:
RooDataSet data_signal(
"<name>",
"<title>", <dataWithSWeights>, <variables>, 0,
"signalYield_sw");
Container class to hold unbinned data.
A complete tutorial with an extensive model is rs301_splot.C
Using ratios as yield parameters
As mentioned, RooStats needs to be able to modify the yield parameters. That means that they have to be a RooRealVar of a RooLinearVar. This allows using ratio parameters as in the following example:
RooRealVar common(
"common",
"common scale", 3., 0, 10);
RooRealVar r1(
"r1",
"ratio of signal events", 0.3, 0, 10);
RooRealVar r2(
"r2",
"ratio of background events", 0.5, 0, 10);
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
Efficient implementation of a sum of PDFs of the form.
RooArgSet is a container object that can hold multiple RooAbsArg objects.
RooLinearVar is the most general form of a derived real-valued object that can be used by RooRealInte...
Variable that can be changed from the outside.
A class to calculate "sWeights" used to create an "sPlot".
RooConstVar & RooConst(double val)
static uint64_t sum(uint64_t i)
Definition at line 32 of file SPlot.h.
|
| SPlot () |
| Default constructor.
|
|
| SPlot (const char *name, const char *title) |
|
| SPlot (const char *name, const char *title, const RooDataSet &data) |
| Constructor from a RooDataSet No sWeighted variables are present.
|
|
| SPlot (const char *name, const char *title, RooDataSet &data, RooAbsPdf *pdf, const RooArgList &yieldsList, const RooArgSet &projDeps=RooArgSet(), bool useWeights=true, bool copyDataSet=false, const char *newName="", const RooCmdArg &fitToarg5={}, const RooCmdArg &fitToarg6={}, const RooCmdArg &fitToarg7={}, const RooCmdArg &fitToarg8={}) |
| Construct a new SPlot instance, calculate sWeights, and include them in the RooDataSet held by this instance.
|
|
| SPlot (const SPlot &other) |
| Copy Constructor from another SPlot.
|
|
| ~SPlot () override |
|
void | AddSWeight (RooAbsPdf *pdf, const RooArgList &yieldsTmp, const RooArgSet &projDeps=RooArgSet(), bool includeWeights=true, const RooCmdArg &fitToarg5={}, const RooCmdArg &fitToarg6={}, const RooCmdArg &fitToarg7={}, const RooCmdArg &fitToarg8={}) |
| Method which adds the sWeights to the dataset.
|
|
Int_t | GetNumSWeightVars () const |
| Return the number of SWeights In other words, return the number of species that we are trying to extract.
|
|
RooDataSet * | GetSDataSet () const |
| Retrieve s-weighted data.
|
|
double | GetSumOfEventSWeight (Int_t numEvent) const |
| Sum the SWeights for a particular event.
|
|
double | GetSWeight (Int_t numEvent, const char *sVariable) const |
| Retrieve an s weight.
|
|
RooArgList | GetSWeightVars () const |
| Return a RooArgList containing all parameters that have s weights.
|
|
double | GetYieldFromSWeight (const char *sVariable) const |
| Sum the SWeights for a particular species over all events.
|
|
TClass * | IsA () const override |
|
RooDataSet * | SetSData (RooDataSet *data) |
| Set dataset (if not passed in constructor).
|
|
void | Streamer (TBuffer &) override |
| Stream an object of class TObject.
|
|
void | StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b) |
|
| TNamed () |
|
| TNamed (const char *name, const char *title) |
|
| TNamed (const TNamed &named) |
| TNamed copy ctor.
|
|
| TNamed (const TString &name, const TString &title) |
|
virtual | ~TNamed () |
| TNamed destructor.
|
|
void | Clear (Option_t *option="") override |
| Set name and title to empty strings ("").
|
|
TObject * | Clone (const char *newname="") const override |
| Make a clone of an object using the Streamer facility.
|
|
Int_t | Compare (const TObject *obj) const override |
| Compare two TNamed objects.
|
|
void | Copy (TObject &named) const override |
| Copy this to obj.
|
|
virtual void | FillBuffer (char *&buffer) |
| Encode TNamed into output buffer.
|
|
const char * | GetName () const override |
| Returns name of object.
|
|
const char * | GetTitle () const override |
| Returns title of object.
|
|
ULong_t | Hash () const override |
| Return hash value for this object.
|
|
TClass * | IsA () const override |
|
Bool_t | IsSortable () const override |
|
void | ls (Option_t *option="") const override |
| List TNamed name and title.
|
|
TNamed & | operator= (const TNamed &rhs) |
| TNamed assignment operator.
|
|
void | Print (Option_t *option="") const override |
| Print TNamed name and title.
|
|
virtual void | SetName (const char *name) |
| Set the name of the TNamed.
|
|
virtual void | SetNameTitle (const char *name, const char *title) |
| Set all the TNamed parameters (name and title).
|
|
virtual void | SetTitle (const char *title="") |
| Set the title of the TNamed.
|
|
virtual Int_t | Sizeof () const |
| Return size of the TNamed part of the TObject.
|
|
void | Streamer (TBuffer &) override |
| Stream an object of class TObject.
|
|
void | StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b) |
|
| TObject () |
| TObject constructor.
|
|
| TObject (const TObject &object) |
| TObject copy ctor.
|
|
virtual | ~TObject () |
| TObject destructor.
|
|
void | AbstractMethod (const char *method) const |
| Use this method to implement an "abstract" method that you don't want to leave purely abstract.
|
|
virtual void | AppendPad (Option_t *option="") |
| Append graphics object to current pad.
|
|
virtual void | Browse (TBrowser *b) |
| Browse object. May be overridden for another default action.
|
|
ULong_t | CheckedHash () |
| Check and record whether this class has a consistent Hash/RecursiveRemove setup (*) and then return the regular Hash value for this object.
|
|
virtual const char * | ClassName () const |
| Returns name of class to which the object belongs.
|
|
virtual void | Delete (Option_t *option="") |
| Delete this object.
|
|
virtual Int_t | DistancetoPrimitive (Int_t px, Int_t py) |
| Computes distance from point (px,py) to the object.
|
|
virtual void | Draw (Option_t *option="") |
| Default Draw method for all objects.
|
|
virtual void | DrawClass () const |
| Draw class inheritance tree of the class to which this object belongs.
|
|
virtual TObject * | DrawClone (Option_t *option="") const |
| Draw a clone of this object in the current selected pad with: gROOT->SetSelectedPad(c1) .
|
|
virtual void | Dump () const |
| Dump contents of object on stdout.
|
|
virtual void | Error (const char *method, const char *msgfmt,...) const |
| Issue error message.
|
|
virtual void | Execute (const char *method, const char *params, Int_t *error=nullptr) |
| Execute method on this object with the given parameter string, e.g.
|
|
virtual void | Execute (TMethod *method, TObjArray *params, Int_t *error=nullptr) |
| Execute method on this object with parameters stored in the TObjArray.
|
|
virtual void | ExecuteEvent (Int_t event, Int_t px, Int_t py) |
| Execute action corresponding to an event at (px,py).
|
|
virtual void | Fatal (const char *method, const char *msgfmt,...) const |
| Issue fatal error message.
|
|
virtual TObject * | FindObject (const char *name) const |
| Must be redefined in derived classes.
|
|
virtual TObject * | FindObject (const TObject *obj) const |
| Must be redefined in derived classes.
|
|
virtual Option_t * | GetDrawOption () const |
| Get option used by the graphics system to draw this object.
|
|
virtual const char * | GetIconName () const |
| Returns mime type name of object.
|
|
virtual char * | GetObjectInfo (Int_t px, Int_t py) const |
| Returns string containing info about the object at position (px,py).
|
|
virtual Option_t * | GetOption () const |
|
virtual UInt_t | GetUniqueID () const |
| Return the unique object id.
|
|
virtual Bool_t | HandleTimer (TTimer *timer) |
| Execute action in response of a timer timing out.
|
|
Bool_t | HasInconsistentHash () const |
| Return true is the type of this object is known to have an inconsistent setup for Hash and RecursiveRemove (i.e.
|
|
virtual void | Info (const char *method, const char *msgfmt,...) const |
| Issue info message.
|
|
virtual Bool_t | InheritsFrom (const char *classname) const |
| Returns kTRUE if object inherits from class "classname".
|
|
virtual Bool_t | InheritsFrom (const TClass *cl) const |
| Returns kTRUE if object inherits from TClass cl.
|
|
virtual void | Inspect () const |
| Dump contents of this object in a graphics canvas.
|
|
void | InvertBit (UInt_t f) |
|
Bool_t | IsDestructed () const |
| IsDestructed.
|
|
virtual Bool_t | IsEqual (const TObject *obj) const |
| Default equal comparison (objects are equal if they have the same address in memory).
|
|
virtual Bool_t | IsFolder () const |
| Returns kTRUE in case object contains browsable objects (like containers or lists of other objects).
|
|
R__ALWAYS_INLINE Bool_t | IsOnHeap () const |
|
R__ALWAYS_INLINE Bool_t | IsZombie () const |
|
void | MayNotUse (const char *method) const |
| Use this method to signal that a method (defined in a base class) may not be called in a derived class (in principle against good design since a child class should not provide less functionality than its parent, however, sometimes it is necessary).
|
|
virtual Bool_t | Notify () |
| This method must be overridden to handle object notification (the base implementation is no-op).
|
|
void | Obsolete (const char *method, const char *asOfVers, const char *removedFromVers) const |
| Use this method to declare a method obsolete.
|
|
void | operator delete (void *ptr) |
| Operator delete.
|
|
void | operator delete (void *ptr, void *vp) |
| Only called by placement new when throwing an exception.
|
|
void | operator delete[] (void *ptr) |
| Operator delete [].
|
|
void | operator delete[] (void *ptr, void *vp) |
| Only called by placement new[] when throwing an exception.
|
|
void * | operator new (size_t sz) |
|
void * | operator new (size_t sz, void *vp) |
|
void * | operator new[] (size_t sz) |
|
void * | operator new[] (size_t sz, void *vp) |
|
TObject & | operator= (const TObject &rhs) |
| TObject assignment operator.
|
|
virtual void | Paint (Option_t *option="") |
| This method must be overridden if a class wants to paint itself.
|
|
virtual void | Pop () |
| Pop on object drawn in a pad to the top of the display list.
|
|
virtual Int_t | Read (const char *name) |
| Read contents of object with specified name from the current directory.
|
|
virtual void | RecursiveRemove (TObject *obj) |
| Recursively remove this object from a list.
|
|
void | ResetBit (UInt_t f) |
|
virtual void | SaveAs (const char *filename="", Option_t *option="") const |
| Save this object in the file specified by filename.
|
|
virtual void | SavePrimitive (std::ostream &out, Option_t *option="") |
| Save a primitive as a C++ statement(s) on output stream "out".
|
|
void | SetBit (UInt_t f) |
|
void | SetBit (UInt_t f, Bool_t set) |
| Set or unset the user status bits as specified in f.
|
|
virtual void | SetDrawOption (Option_t *option="") |
| Set drawing option for object.
|
|
virtual void | SetUniqueID (UInt_t uid) |
| Set the unique object id.
|
|
void | StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b) |
|
virtual void | SysError (const char *method, const char *msgfmt,...) const |
| Issue system error message.
|
|
R__ALWAYS_INLINE Bool_t | TestBit (UInt_t f) const |
|
Int_t | TestBits (UInt_t f) const |
|
virtual void | UseCurrentStyle () |
| Set current style settings in this object This function is called when either TCanvas::UseCurrentStyle or TROOT::ForceStyle have been invoked.
|
|
virtual void | Warning (const char *method, const char *msgfmt,...) const |
| Issue warning message.
|
|
virtual Int_t | Write (const char *name=nullptr, Int_t option=0, Int_t bufsize=0) |
| Write this object to the current directory.
|
|
virtual Int_t | Write (const char *name=nullptr, Int_t option=0, Int_t bufsize=0) const |
| Write this object to the current directory.
|
|