Logo ROOT  
Reference Guide
Loading...
Searching...
No Matches
RooDataSet.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Project: RooFit *
3 * Package: RooFitCore *
4 * File: $Id: RooDataSet.h,v 1.59 2007/05/11 09:11:30 verkerke Exp $
5 * Authors: *
6 * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu *
7 * DK, David Kirkby, UC Irvine, dkirkby@uci.edu *
8 * *
9 * Copyright (c) 2000-2005, Regents of the University of California *
10 * and Stanford University. All rights reserved. *
11 * *
12 * Redistribution and use in source and binary forms, *
13 * with or without modification, are permitted according to the terms *
14 * listed in LICENSE (http://roofit.sourceforge.net/license.txt) *
15 *****************************************************************************/
16#ifndef ROO_DATA_SET
17#define ROO_DATA_SET
18
20class RooCategory;
21class RooDataHist;
22class RooRealVar;
23
24class TDirectory;
25
26#include "RooAbsData.h"
27#include "RooDirItem.h"
28
29#include <list>
30#include <string_view>
31
32class RooDataSet : public RooAbsData, public RooDirItem {
33public:
34
35 // Constructors, factory methods etc.
36 RooDataSet() ;
37
38 // Universal constructor
39 RooDataSet(RooStringView name, RooStringView title, const RooArgSet& vars, const RooCmdArg& arg1={}, const RooCmdArg& arg2={},
40 const RooCmdArg& arg3={}, const RooCmdArg& arg4={},const RooCmdArg& arg5={},
41 const RooCmdArg& arg6={},const RooCmdArg& arg7={},const RooCmdArg& arg8={}) ;
42
43 RooDataSet(RooDataSet const & other, const char* newname=nullptr) ;
44 TObject* Clone(const char* newname = "") const override {
45 return new RooDataSet(*this, newname && newname[0] != '\0' ? newname : GetName());
46 }
47 ~RooDataSet() override ;
48
49 RooFit::OwningPtr<RooAbsData> emptyClone(const char* newName=nullptr, const char* newTitle=nullptr, const RooArgSet* vars=nullptr, const char* wgtVarName=nullptr) const override;
50
51 RooFit::OwningPtr<RooDataHist> binnedClone(const char* newName=nullptr, const char* newTitle=nullptr) const ;
52
53 double sumEntries() const override;
54 double sumEntries(const char* cutSpec, const char* cutRange=nullptr) const override;
55
56 virtual RooPlot* plotOnXY(RooPlot* frame,
57 const RooCmdArg& arg1={}, const RooCmdArg& arg2={},
58 const RooCmdArg& arg3={}, const RooCmdArg& arg4={},
59 const RooCmdArg& arg5={}, const RooCmdArg& arg6={},
60 const RooCmdArg& arg7={}, const RooCmdArg& arg8={}) const ;
61
62
63 /// Read data from a text file and create a dataset from it.
64 /// The possible options are: (D)ebug, (Q)uiet.
65 static RooDataSet *read(const char *filename, const RooArgList &variables,
66 const char *opts= "", const char* commonPath="",
67 const char *indexCatName=nullptr) ;
68 bool write(const char* filename) const;
69 bool write(std::ostream & ofs) const;
70
71
72 bool isWeighted() const override;
73 bool isNonPoissonWeighted() const override;
74
75 double weight() const override;
76 /// Returns a pointer to the weight variable (if set).
77 RooRealVar* weightVar() const { return _wgtVar; }
78 double weightSquared() const override;
79 void weightError(double& lo, double& hi,ErrorType etype=SumW2) const override;
80 double weightError(ErrorType etype=SumW2) const override;
81
82 const RooArgSet* get(Int_t index) const override;
83 const RooArgSet* get() const override;
84
85 std::span<const double> getWeightBatch(std::size_t first, std::size_t len, bool sumW2) const override;
86
87 /// Add one ore more rows of data
88 void add(const RooArgSet& row, double weight, double weightError);
89 void add(const RooArgSet& row, double weight=1.0) override { add(row, weight, 0.0); }
90 virtual void add(const RooArgSet& row, double weight, double weightErrorLo, double weightErrorHi);
91
92 virtual void addFast(const RooArgSet& row, double weight=1.0, double weightError=0.0);
93
94 void append(RooDataSet& data) ;
95 bool merge(RooDataSet* data1, RooDataSet* data2=nullptr, RooDataSet* data3=nullptr,
96 RooDataSet* data4=nullptr, RooDataSet* data5=nullptr, RooDataSet* data6=nullptr) ;
97 bool merge(std::list<RooDataSet*> dsetList) ;
98
99 virtual RooAbsArg* addColumn(RooAbsArg& var, bool adjustRange=true) ;
100
101 void printMultiline(std::ostream& os, Int_t contents, bool verbose=false, TString indent="") const override;
102 void printArgs(std::ostream& os) const override;
103 void printValue(std::ostream& os) const override;
104
105 /// Print the contents of the dataset to the specified output stream.
106 void printContents(std::ostream& os = std::cout) const override;
107
108 void SetName(const char *name) override;
109 void SetNameTitle(const char *name, const char* title) override;
110
111 static void cleanup();
112
113 void convertToTreeStore() override;
114
115protected:
116
117 friend class RooProdGenContext ;
118
119 void initialize(const char* wgtVarName) ;
120
121 // Cache copy feature is not publicly accessible
122 std::unique_ptr<RooAbsData> reduceEng(const RooArgSet& varSubset, const RooFormulaVar* cutVar, const char* cutRange=nullptr,
123 std::size_t nStart=0, std::size_t nStop = std::numeric_limits<std::size_t>::max()) const override;
124
125 RooArgSet _varsNoWgt; ///< Vars without weight variable
126 RooRealVar *_wgtVar = nullptr; ///< Pointer to weight variable (if set)
127
128private:
129
130 void loadValuesFromSlices(RooCategory &indexCat, std::map<std::string, RooAbsData *> const &slices,
131 const char *rangeName, RooFormulaVar const *cutVar, const char *cutSpec);
132
133 unsigned short _errorMsgCount{0}; ///<! Counter to silence error messages when filling dataset.
134 bool _doWeightErrorCheck{true}; ///<! When adding events with weights, check that weights can actually be stored.
135
136 mutable std::unique_ptr<std::vector<double>> _sumW2Buffer; ///<! Buffer for sumW2 in case a batch of values is requested.
137
138 ClassDefOverride(RooDataSet,2) // Unbinned data set
139};
140
141#endif
void initialize()
int Int_t
Signed integer 4 bytes (int).
Definition RtypesCore.h:59
#define ClassDefOverride(name, id)
Definition Rtypes.h:348
static void indent(ostringstream &buf, int indent_level)
char name[80]
Definition TGX11.cxx:148
#define hi
Common abstract base class for objects that represent a value and a "shape" in RooFit.
Definition RooAbsArg.h:76
RooAbsData()
Default constructor.
Abstract base class for objects that represent a real value that may appear on the left hand side of ...
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Definition RooArgSet.h:24
Object to represent discrete states.
Definition RooCategory.h:28
Named container for two doubles, two integers two object points and three string pointers that can be...
Definition RooCmdArg.h:26
Container class to hold N-dimensional binned data.
Definition RooDataHist.h:40
Container class to hold unbinned data.
Definition RooDataSet.h:32
RooFit::OwningPtr< RooAbsData > emptyClone(const char *newName=nullptr, const char *newTitle=nullptr, const RooArgSet *vars=nullptr, const char *wgtVarName=nullptr) const override
Return an empty clone of this dataset.
TObject * Clone(const char *newname="") const override
Make a clone of an object using the Streamer facility.
Definition RooDataSet.h:44
RooRealVar * _wgtVar
Pointer to weight variable (if set).
Definition RooDataSet.h:126
bool _doWeightErrorCheck
! When adding events with weights, check that weights can actually be stored.
Definition RooDataSet.h:134
static void cleanup()
RooArgSet _varsNoWgt
Vars without weight variable.
Definition RooDataSet.h:125
void loadValuesFromSlices(RooCategory &indexCat, std::map< std::string, RooAbsData * > const &slices, const char *rangeName, RooFormulaVar const *cutVar, const char *cutSpec)
RooFit::OwningPtr< RooDataHist > binnedClone(const char *newName=nullptr, const char *newTitle=nullptr) const
Return binned clone of this dataset.
void weightError(double &lo, double &hi, ErrorType etype=SumW2) const override
Return the asymmetric errors on the current weight.
const RooArgSet * get() const override
Return a RooArgSet with the coordinates of the current event.
void printContents(std::ostream &os=std::cout) const override
Print the contents of the dataset to the specified output stream.
virtual RooPlot * plotOnXY(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
Special plot method for 'X-Y' datasets used in fitting.
void printArgs(std::ostream &os) const override
Print argument of dataset, i.e. the observable names.
void SetName(const char *name) override
Change the name of this dataset into the given name.
virtual void addFast(const RooArgSet &row, double weight=1.0, double weightError=0.0)
Add a data point, with its coordinates specified in the 'data' argset, to the data set.
bool merge(RooDataSet *data1, RooDataSet *data2=nullptr, RooDataSet *data3=nullptr, RooDataSet *data4=nullptr, RooDataSet *data5=nullptr, RooDataSet *data6=nullptr)
virtual RooAbsArg * addColumn(RooAbsArg &var, bool adjustRange=true)
Add a column with the values of the given (function) argument to this dataset.
bool write(const char *filename) const
Write the contents of this dataset to an ASCII file with the specified name.
double sumEntries() const override
Return effective number of entries in dataset, i.e., sum all weights.
std::span< const double > getWeightBatch(std::size_t first, std::size_t len, bool sumW2) const override
RooRealVar * weightVar() const
Returns a pointer to the weight variable (if set).
Definition RooDataSet.h:77
~RooDataSet() override
Destructor.
bool isNonPoissonWeighted() const override
Returns true if histogram contains bins with entries with a non-integer weight.
void SetNameTitle(const char *name, const char *title) override
Change the title of this dataset into the given name.
void printValue(std::ostream &os) const override
Print value of the dataset, i.e. the sum of weights contained in the dataset.
void append(RooDataSet &data)
Add all data points of given data set to this data set.
RooDataSet()
Default constructor for persistence.
friend class RooProdGenContext
Definition RooDataSet.h:117
std::unique_ptr< std::vector< double > > _sumW2Buffer
! Buffer for sumW2 in case a batch of values is requested.
Definition RooDataSet.h:136
void add(const RooArgSet &row, double weight, double weightError)
Add one ore more rows of data.
unsigned short _errorMsgCount
! Counter to silence error messages when filling dataset.
Definition RooDataSet.h:133
std::unique_ptr< RooAbsData > reduceEng(const RooArgSet &varSubset, const RooFormulaVar *cutVar, const char *cutRange=nullptr, std::size_t nStart=0, std::size_t nStop=std::numeric_limits< std::size_t >::max()) const override
Implementation of RooAbsData virtual method that drives the RooAbsData::reduce() methods.
void convertToTreeStore() override
Convert vector-based storage to tree-based storage.
void add(const RooArgSet &row, double weight=1.0) override
Definition RooDataSet.h:89
void printMultiline(std::ostream &os, Int_t contents, bool verbose=false, TString indent="") const override
Print info about this dataset to the specified output stream.
double weightSquared() const override
Return squared event weight of the current event.
double weight() const override
Return event weight of current event.
static RooDataSet * read(const char *filename, const RooArgList &variables, const char *opts="", const char *commonPath="", const char *indexCatName=nullptr)
Read data from a text file and create a dataset from it.
bool isWeighted() const override
Return true if dataset contains weighted events.
A RooFormulaVar is a generic implementation of a real-valued object, which takes a RooArgList of serv...
Plot frame and a container for graphics objects within that frame.
Definition RooPlot.h:43
Variable that can be changed from the outside.
Definition RooRealVar.h:37
The RooStringView is a wrapper around a C-style string that can also be constructed from a std::strin...
Describe directory structure in memory.
Definition TDirectory.h:45
const char * GetName() const override
Returns name of object.
Definition TNamed.h:49
TObject()
TObject constructor.
Definition TObject.h:259
Basic string class.
Definition TString.h:138
T * OwningPtr
An alias for raw pointers for indicating that the return type of a RooFit function is an owning point...
Definition Config.h:35