Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
RooAbsPdf.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Project: RooFit *
3 * Package: RooFitCore *
4 * File: $Id: RooAbsPdf.h,v 1.90 2007/07/21 21:32:52 wouter 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_ABS_PDF
17#define ROO_ABS_PDF
18
19#include "RooAbsReal.h"
20#include "RooObjCacheManager.h"
21#include "RooGlobalFunc.h"
22#include "RooFit/UniqueId.h"
23
24class RooDataSet;
25class RooDataHist ;
26class RooArgSet ;
27class RooAbsGenContext ;
28class RooFitResult ;
29class RooExtendPdf ;
30class RooCategory ;
31class TPaveText;
32class TH1F;
33class TH2F;
34class TList ;
35class RooMinimizer ;
36class RooNumGenConfig ;
37class RooRealIntegral ;
38
39namespace RooBatchCompute {
40struct RunContext;
41}
42
43class RooAbsPdf : public RooAbsReal {
44public:
45
46 // Constructors, assignment etc
47 RooAbsPdf() ;
48 RooAbsPdf(const char *name, const char *title=nullptr) ;
49 RooAbsPdf(const char *name, const char *title, double minVal, double maxVal) ;
50 // RooAbsPdf(const RooAbsPdf& other, const char* name=nullptr);
51 ~RooAbsPdf() override;
52
53 // Toy MC generation
54
55 ////////////////////////////////////////////////////////////////////////////////
56 /// See RooAbsPdf::generate(const RooArgSet&,const RooCmdArg&,const RooCmdArg&,const RooCmdArg&,const RooCmdArg&,const RooCmdArg&,const RooCmdArg&)
57 /// \param[in] whatVars Set of observables to generate for each event according to this model.
58 /// \param[in] nEvents How many events to generate
59 /// \param arg1,arg2,arg3,arg4,arg5 Optional command arguments.
60 RooDataSet *generate(const RooArgSet &whatVars, Int_t nEvents, const RooCmdArg& arg1,
61 const RooCmdArg& arg2=RooCmdArg::none(), const RooCmdArg& arg3=RooCmdArg::none(),
62 const RooCmdArg& arg4=RooCmdArg::none(), const RooCmdArg& arg5=RooCmdArg::none()) {
63 return generate(whatVars,RooFit::NumEvents(nEvents),arg1,arg2,arg3,arg4,arg5) ;
64 }
65 RooDataSet *generate(const RooArgSet &whatVars,
66 const RooCmdArg& arg1=RooCmdArg::none(),const RooCmdArg& arg2=RooCmdArg::none(),
67 const RooCmdArg& arg3=RooCmdArg::none(),const RooCmdArg& arg4=RooCmdArg::none(),
68 const RooCmdArg& arg5=RooCmdArg::none(),const RooCmdArg& arg6=RooCmdArg::none()) ;
69 RooDataSet *generate(const RooArgSet &whatVars, double nEvents = 0, bool verbose=false, bool autoBinned=true,
70 const char* binnedTag="", bool expectedData=false, bool extended = false) const;
71 RooDataSet *generate(const RooArgSet &whatVars, const RooDataSet &prototype, Int_t nEvents= 0,
72 bool verbose=false, bool randProtoOrder=false, bool resampleProto=false) const;
73
74
75 class GenSpec {
76 public:
77 virtual ~GenSpec() ;
78 GenSpec() { _genContext = nullptr ; _protoData = nullptr ; _init = false ; _extended=false, _nGen=0 ; _randProto = false ; _resampleProto=false ; }
79 private:
80 GenSpec(RooAbsGenContext* context, const RooArgSet& whatVars, RooDataSet* protoData, Int_t nGen, bool extended,
81 bool randProto, bool resampleProto, TString dsetName, bool init=false) ;
82 GenSpec(const GenSpec& other) ;
83
84 friend class RooAbsPdf ;
89 bool _extended ;
93 bool _init ;
94
95 ClassDef(GenSpec,0) // Generation specification
96 } ;
97
98 ///Prepare GenSpec configuration object for efficient generation of multiple datasets from identical specification.
99 GenSpec* prepareMultiGen(const RooArgSet &whatVars,
100 const RooCmdArg& arg1=RooCmdArg::none(),const RooCmdArg& arg2=RooCmdArg::none(),
101 const RooCmdArg& arg3=RooCmdArg::none(),const RooCmdArg& arg4=RooCmdArg::none(),
102 const RooCmdArg& arg5=RooCmdArg::none(),const RooCmdArg& arg6=RooCmdArg::none()) ;
103 ///Generate according to GenSpec obtained from prepareMultiGen().
104 RooDataSet* generate(GenSpec&) const ;
105
106
107 ////////////////////////////////////////////////////////////////////////////////
108 /// As RooAbsPdf::generateBinned(const RooArgSet&, const RooCmdArg&,const RooCmdArg&, const RooCmdArg&,const RooCmdArg&, const RooCmdArg&,const RooCmdArg&) const.
109 /// \param[in] whatVars set
110 /// \param[in] nEvents How many events to generate
111 /// \param arg1,arg2,arg3,arg4,arg5 ordered arguments
112 virtual RooDataHist *generateBinned(const RooArgSet &whatVars, double nEvents, const RooCmdArg& arg1,
113 const RooCmdArg& arg2=RooCmdArg::none(), const RooCmdArg& arg3=RooCmdArg::none(),
114 const RooCmdArg& arg4=RooCmdArg::none(), const RooCmdArg& arg5=RooCmdArg::none()) const {
115 return generateBinned(whatVars,RooFit::NumEvents(nEvents),arg1,arg2,arg3,arg4,arg5);
116 }
117 virtual RooDataHist *generateBinned(const RooArgSet &whatVars,
118 const RooCmdArg& arg1=RooCmdArg::none(),const RooCmdArg& arg2=RooCmdArg::none(),
119 const RooCmdArg& arg3=RooCmdArg::none(),const RooCmdArg& arg4=RooCmdArg::none(),
120 const RooCmdArg& arg5=RooCmdArg::none(),const RooCmdArg& arg6=RooCmdArg::none()) const;
121 virtual RooDataHist *generateBinned(const RooArgSet &whatVars, double nEvents, bool expectedData=false, bool extended=false) const;
122
123 virtual RooDataSet* generateSimGlobal(const RooArgSet& whatVars, Int_t nEvents) ;
124
125 ///Helper calling plotOn(RooPlot*, RooLinkedList&) const
127 const RooCmdArg& arg1=RooCmdArg::none(), const RooCmdArg& arg2=RooCmdArg::none(),
128 const RooCmdArg& arg3=RooCmdArg::none(), const RooCmdArg& arg4=RooCmdArg::none(),
129 const RooCmdArg& arg5=RooCmdArg::none(), const RooCmdArg& arg6=RooCmdArg::none(),
130 const RooCmdArg& arg7=RooCmdArg::none(), const RooCmdArg& arg8=RooCmdArg::none(),
131 const RooCmdArg& arg9=RooCmdArg::none(), const RooCmdArg& arg10=RooCmdArg::none()
132 ) const override {
133 return RooAbsReal::plotOn(frame,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10) ;
134 }
135 RooPlot* plotOn(RooPlot* frame, RooLinkedList& cmdList) const override ;
136
137 /// Add a box with parameter values (and errors) to the specified frame
138 virtual RooPlot* paramOn(RooPlot* frame,
139 const RooCmdArg& arg1=RooCmdArg::none(), const RooCmdArg& arg2=RooCmdArg::none(),
140 const RooCmdArg& arg3=RooCmdArg::none(), const RooCmdArg& arg4=RooCmdArg::none(),
141 const RooCmdArg& arg5=RooCmdArg::none(), const RooCmdArg& arg6=RooCmdArg::none(),
142 const RooCmdArg& arg7=RooCmdArg::none(), const RooCmdArg& arg8=RooCmdArg::none()) ;
143
144 // Built-in generator support
145 virtual Int_t getGenerator(const RooArgSet& directVars, RooArgSet &generateVars, bool staticInitOK=true) const;
146 virtual void initGenerator(Int_t code) ;
147 virtual void generateEvent(Int_t code);
148 virtual bool isDirectGenSafe(const RooAbsArg& arg) const ;
149
150 // Configuration of MC generators used for this pdf
151 const RooNumGenConfig* getGeneratorConfig() const ;
154 RooNumGenConfig* specialGeneratorConfig(bool createOnTheFly) ;
155 void setGeneratorConfig() ;
156 void setGeneratorConfig(const RooNumGenConfig& config) ;
157
158 // -log(L) fits to binned and unbinned data
160 /// Takes an arbitrary number of RooCmdArg command options and calls
161 /// RooAbsPdf::fitTo(RooAbsData& data, const RooLinkedList& cmdList).
162 template <typename... Args>
164 {
165 return fitTo(data, *RooFit::Detail::createCmdList(&arg1, &args...));
166 }
167
168 /// Configuration struct for RooAbsPdf::minimizeNLL with all the default
169 //values that also should be taked as the default values for
170 //RooAbsPdf::fitTo.
172 double recoverFromNaN = 10.;
173 int optConst = 2;
174 int verbose = 0;
175 int doSave = 0;
176 int doTimer = 0;
177 int printLevel = 1;
178 int strat = 1;
179 int initHesse = 0;
180 int hesse = 1;
181 int minos = 0;
182 int numee = 10;
183 int doEEWall = 1;
184 int doWarn = 1;
185 int doSumW2 = -1;
186 int doAsymptotic = -1;
187 int maxCalls = -1;
188 int doOffset = -1;
189 int parallelize = 0;
192 bool timingAnalysis = false;
193 const RooArgSet* minosSet = nullptr;
194 std::string minType;
195 std::string minAlg = "minuit";
196 };
197 std::unique_ptr<RooFitResult> minimizeNLL(RooAbsReal & nll, RooAbsData const& data, MinimizerConfig const& cfg);
198
200 /// Takes an arbitrary number of RooCmdArg command options and calls
201 /// RooAbsPdf::createNLL(RooAbsData& data, const RooLinkedList& cmdList).
202 template <typename... Args>
204 {
205 return createNLL(data, *RooFit::Detail::createCmdList(&arg1, &args...));
206 }
207
208 // Chi^2 fits to histograms
211 RooFitResult* chi2FitTo(RooDataHist& data, const RooLinkedList& cmdList) override ;
213 const RooCmdArg& arg3=RooCmdArg::none(), const RooCmdArg& arg4=RooCmdArg::none(), const RooCmdArg& arg5=RooCmdArg::none(),
214 const RooCmdArg& arg6=RooCmdArg::none(), const RooCmdArg& arg7=RooCmdArg::none(), const RooCmdArg& arg8=RooCmdArg::none()) override ;
215
216 // Chi^2 fits to X-Y datasets
217 RooAbsReal* createChi2(RooDataSet& data, const RooLinkedList& cmdList) override ;
218
219
220 // Constraint management
221 virtual RooArgSet* getConstraints(const RooArgSet& /*observables*/, RooArgSet& /*constrainedParams*/,
222 bool /*stripDisconnected*/, bool /*removeConstraintsFromPdf*/=false) const
223 {
224 // Interface to retrieve constraint terms on this pdf. Default implementation returns null
225 return nullptr ;
226 }
227 RooArgSet* getAllConstraints(const RooArgSet& observables, RooArgSet& constrainedParams,
228 bool stripDisconnected=true, bool removeConstraintsFromPdf=false) const ;
229
230 // Project p.d.f into lower dimensional p.d.f
231 virtual RooAbsPdf* createProjection(const RooArgSet& iset) ;
232
233 // Create cumulative density function from p.d.f
236 const RooCmdArg& arg3=RooCmdArg::none(), const RooCmdArg& arg4=RooCmdArg::none(),
237 const RooCmdArg& arg5=RooCmdArg::none(), const RooCmdArg& arg6=RooCmdArg::none(),
238 const RooCmdArg& arg7=RooCmdArg::none(), const RooCmdArg& arg8=RooCmdArg::none()) ;
239 RooFit::OwningPtr<RooAbsReal> createScanCdf(const RooArgSet& iset, const RooArgSet& nset, Int_t numScanBins, Int_t intOrder) ;
240
241 // Function evaluation support
242 double getValV(const RooArgSet* set=nullptr) const override ;
243 virtual double getLogVal(const RooArgSet* set=nullptr) const ;
244
245 void getLogProbabilities(RooSpan<const double> pdfValues, double * output) const;
246
247 /// \copydoc getNorm(const RooArgSet*) const
248 double getNorm(const RooArgSet& nset) const {
249 return getNorm(&nset) ;
250 }
251 virtual double getNorm(const RooArgSet* set=nullptr) const ;
252
253 virtual void resetErrorCounters(Int_t resetValue=10) ;
254 void setTraceCounter(Int_t value, bool allNodes=false) ;
255
256 double analyticalIntegralWN(Int_t code, const RooArgSet* normSet, const char* rangeName=nullptr) const override ;
257
258 /// Shows if a PDF is self-normalized, which means that no attempt is made to add a normalization term.
259 /// Always returns false, unless a PDF overrides this function.
260 virtual bool selfNormalized() const {
261 return false ;
262 }
263
264 // Support for extended maximum likelihood, switched off by default
266 /// Returns ability of PDF to provide extended likelihood terms. Possible
267 /// answers are in the enumerator RooAbsPdf::ExtendMode.
268 /// This default implementation always returns CanNotBeExtended.
269 virtual ExtendMode extendMode() const { return CanNotBeExtended; }
270 /// If true, PDF can provide extended likelihood term.
271 inline bool canBeExtended() const {
272 return (extendMode() != CanNotBeExtended) ;
273 }
274 /// If true PDF must provide extended likelihood term.
275 inline bool mustBeExtended() const {
276 return (extendMode() == MustBeExtended) ;
277 }
278 /// Return expected number of events to be used in calculation of extended
279 /// likelihood.
280 virtual double expectedEvents(const RooArgSet* nset) const ;
281 /// Return expected number of events to be used in calculation of extended
282 /// likelihood. This function should not be overridden, as it just redirects
283 /// to the actual virtual function but takes a RooArgSet reference instead of
284 /// pointer (\see expectedEvents(const RooArgSet*) const).
285 double expectedEvents(const RooArgSet& nset) const {
286 return expectedEvents(&nset) ;
287 }
288
289 // Printing interface (human readable)
290 void printValue(std::ostream& os) const override ;
291 void printMultiline(std::ostream& os, Int_t contents, bool verbose=false, TString indent="") const override ;
292
293 static void verboseEval(Int_t stat) ;
294 static int verboseEval() ;
295
296 double extendedTerm(double sumEntries, double expected, double sumEntriesW2=0.0, bool doOffset=false) const;
297 double extendedTerm(double sumEntries, RooArgSet const* nset, double sumEntriesW2=0.0, bool doOffset=false) const;
298 double extendedTerm(RooAbsData const& data, bool weightSquared, bool doOffset=false) const;
299
300 void setNormRange(const char* rangeName) ;
301 const char* normRange() const {
302 return _normRange.Length()>0 ? _normRange.Data() : nullptr ;
303 }
304 void setNormRangeOverride(const char* rangeName) ;
305
306 const RooAbsReal* getNormIntegral(const RooArgSet& nset) const { return getNormObj(nullptr,&nset,nullptr) ; }
307
308 virtual const RooAbsReal* getNormObj(const RooArgSet* set, const RooArgSet* iset, const TNamed* rangeName=nullptr) const ;
309
310 virtual RooAbsGenContext* binnedGenContext(const RooArgSet &vars, bool verbose= false) const ;
311
312 virtual RooAbsGenContext* genContext(const RooArgSet &vars, const RooDataSet *prototype=nullptr,
313 const RooArgSet* auxProto=nullptr, bool verbose= false) const ;
314
315 virtual RooAbsGenContext* autoGenContext(const RooArgSet &vars, const RooDataSet* prototype=nullptr, const RooArgSet* auxProto=nullptr,
316 bool verbose=false, bool autoBinned=true, const char* binnedTag="") const ;
317
318 std::unique_ptr<RooAbsArg> compileForNormSet(RooArgSet const &normSet, RooFit::Detail::CompileContext & ctx) const override;
319
320private:
321
322 RooDataSet *generate(RooAbsGenContext& context, const RooArgSet& whatVars, const RooDataSet* prototype,
323 double nEvents, bool verbose, bool randProtoOrder, bool resampleProto, bool skipInit=false,
324 bool extended=false) const ;
325
326 // Implementation version
327 virtual RooPlot* paramOn(RooPlot* frame, const RooArgSet& params, bool showConstants=false,
328 const char *label= "", double xmin=0.65,
329 double xmax= 0.99,double ymax=0.95, const RooCmdArg* formatCmd=nullptr) ;
330
331 void logBatchComputationErrors(RooSpan<const double>& outputs, std::size_t begin) const;
332 bool traceEvalPdf(double value) const;
333
334 /// Setter for the _normSet member, which should never be set directly.
335 inline void setActiveNormSet(RooArgSet const* normSet) const {
336 _normSet = normSet;
337 // Also store the unique ID of the _normSet. This makes it possible to
338 // detect if the pointer was invalidated.
340 }
341
342protected:
343
344 /// Checks if `normSet` is the currently active normalization set of this
345 /// PDF, meaning is exactly the same object as the one the `_normSet` member
346 /// points to (or both are `nullptr`).
347 inline bool isActiveNormSet(RooArgSet const* normSet) const {
348 return RooFit::getUniqueId(normSet).value() == _normSetId;
349 }
350
351 double normalizeWithNaNPacking(double rawVal, double normVal) const;
352
353 RooPlot *plotOn(RooPlot *frame, PlotOpt o) const override;
354
355 friend class RooMCStudy ;
356
357 Int_t* randomizeProtoOrder(Int_t nProto,Int_t nGen,bool resample=false) const ;
358
359 // This also forces the definition of a copy ctor in derived classes
360 RooAbsPdf(const RooAbsPdf& other, const char* name = nullptr);
361
363
364 virtual bool syncNormalization(const RooArgSet* dset, bool adjustProxies=true) const ;
365
366 mutable double _rawValue ;
367 mutable RooAbsReal* _norm = nullptr; //! Normalization integral (owned by _normMgr)
368 mutable RooArgSet const* _normSet = nullptr; //! Normalization set with for above integral
369
371 public:
372 CacheElem(RooAbsReal& norm) : _norm(&norm) {} ;
373 ~CacheElem() override ;
376 } ;
377 mutable RooObjCacheManager _normMgr ; //! The cache manager
378
379 bool redirectServersHook(const RooAbsCollection & newServerList, bool mustReplaceAll,
380 bool nameChange, bool isRecursiveStep) override;
381
382
383 mutable Int_t _errorCount ; ///< Number of errors remaining to print
384 mutable Int_t _traceCount ; ///< Number of traces remaining to print
385 mutable Int_t _negCount ; ///< Number of negative probablities remaining to print
386
387 bool _selectComp ; ///< Component selection flag for RooAbsPdf::plotCompOn
388
389 std::unique_ptr<RooNumGenConfig> _specGeneratorConfig ; ///<! MC generator configuration specific for this object
390
391 TString _normRange ; ///< Normalization range
393
394private:
395 mutable RooFit::UniqueId<RooArgSet>::Value_t _normSetId = RooFit::UniqueId<RooArgSet>::nullval; ///<! Unique ID of the currently-active normalization set
396
398 int calcSumW2CorrectedCovariance(RooMinimizer& minimizer, RooAbsReal & nll) const;
399
400 ClassDefOverride(RooAbsPdf,5) // Abstract PDF with normalization support
401};
402
403
404
405
406#endif
#define ClassDef(name, id)
Definition Rtypes.h:337
#define ClassDefOverride(name, id)
Definition Rtypes.h:341
static void indent(ostringstream &buf, int indent_level)
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void data
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void value
char name[80]
Definition TGX11.cxx:110
float xmin
float xmax
float ymax
RooAbsArg is the common abstract base class for objects that represent a value and a "shape" in RooFi...
Definition RooAbsArg.h:79
RooAbsCacheElement is the abstract base class for objects to be stored in RooAbsCache cache manager o...
RooAbsCollection is an abstract container object that can hold multiple RooAbsArg objects.
RooAbsData is the common abstract base class for binned and unbinned datasets.
Definition RooAbsData.h:58
RooAbsGenContext is the abstract base class for generator contexts of RooAbsPdf objects.
Normalization set with for above integral.
Definition RooAbsPdf.h:370
~CacheElem() override
Destructor of normalization cache element.
CacheElem(RooAbsReal &norm)
Definition RooAbsPdf.h:372
RooAbsReal * _norm
Definition RooAbsPdf.h:375
RooArgList containedArgs(Action) override
Definition RooAbsPdf.h:374
RooArgSet _whatVars
Definition RooAbsPdf.h:86
RooAbsGenContext * _genContext
Definition RooAbsPdf.h:85
GenSpec(const GenSpec &other)
RooDataSet * _protoData
Definition RooAbsPdf.h:87
GenSpec * prepareMultiGen(const RooArgSet &whatVars, 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())
Prepare GenSpec configuration object for efficient generation of multiple datasets from identical spe...
virtual bool syncNormalization(const RooArgSet *dset, bool adjustProxies=true) const
Verify that the normalization integral cached with this PDF is valid for given set of normalization o...
int calcSumW2CorrectedCovariance(RooMinimizer &minimizer, RooAbsReal &nll) const
Apply correction to errors and covariance matrix.
double getNorm(const RooArgSet &nset) const
Get normalisation term needed to normalise the raw values returned by getVal().
Definition RooAbsPdf.h:248
std::unique_ptr< RooAbsArg > compileForNormSet(RooArgSet const &normSet, RooFit::Detail::CompileContext &ctx) const override
RooObjCacheManager _normMgr
Definition RooAbsPdf.h:377
RooFit::UniqueId< RooArgSet >::Value_t _normSetId
! Unique ID of the currently-active normalization set
Definition RooAbsPdf.h:395
std::unique_ptr< RooNumGenConfig > _specGeneratorConfig
! MC generator configuration specific for this object
Definition RooAbsPdf.h:389
void getLogProbabilities(RooSpan< const double > pdfValues, double *output) const
double getValV(const RooArgSet *set=nullptr) const override
Return current value, normalized by integrating over the observables in nset.
RooAbsReal * createChi2(RooDataHist &data, 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()) override
Create a from a histogram and this function.
bool _selectComp
Component selection flag for RooAbsPdf::plotCompOn.
Definition RooAbsPdf.h:387
virtual void generateEvent(Int_t code)
Interface for generation of an event using the algorithm corresponding to the specified code.
RooFit::OwningPtr< RooAbsReal > createScanCdf(const RooArgSet &iset, const RooArgSet &nset, Int_t numScanBins, Int_t intOrder)
double expectedEvents(const RooArgSet &nset) const
Return expected number of events to be used in calculation of extended likelihood.
Definition RooAbsPdf.h:285
void logBatchComputationErrors(RooSpan< const double > &outputs, std::size_t begin) const
Scan through outputs and fix+log all nans and negative values.
void setGeneratorConfig()
Remove the specialized numeric MC generator configuration associated with this object.
virtual void resetErrorCounters(Int_t resetValue=10)
Reset error counter to given value, limiting the number of future error messages for this pdf to 'res...
static int verboseEval()
Return global level of verbosity for p.d.f. evaluations.
RooFit::OwningPtr< RooAbsReal > createCdf(const RooArgSet &iset, const RooArgSet &nset=RooArgSet())
Create a cumulative distribution function of this p.d.f in terms of the observables listed in iset.
bool isActiveNormSet(RooArgSet const *normSet) const
Checks if normSet is the currently active normalization set of this PDF, meaning is exactly the same ...
Definition RooAbsPdf.h:347
RooFit::OwningPtr< RooAbsReal > createNLL(RooAbsData &data, RooCmdArg const &arg1, Args const &... args)
Takes an arbitrary number of RooCmdArg command options and calls RooAbsPdf::createNLL(RooAbsData& dat...
Definition RooAbsPdf.h:203
virtual double expectedEvents(const RooArgSet *nset) const
Return expected number of events to be used in calculation of extended likelihood.
virtual RooAbsGenContext * binnedGenContext(const RooArgSet &vars, bool verbose=false) const
Return a binned generator context.
TString _normRange
Normalization range.
Definition RooAbsPdf.h:391
virtual bool isDirectGenSafe(const RooAbsArg &arg) const
Check if given observable can be safely generated using the pdfs internal generator mechanism (if tha...
virtual RooFit::OwningPtr< RooAbsReal > createNLL(RooAbsData &data, const RooLinkedList &cmdList={})
Construct representation of -log(L) of PDF with given dataset.
Int_t * randomizeProtoOrder(Int_t nProto, Int_t nGen, bool resample=false) const
Return lookup table with randomized order for nProto prototype events.
virtual RooFit::OwningPtr< RooFitResult > fitTo(RooAbsData &data, const RooLinkedList &cmdList={})
Fit PDF to given dataset.
void setNormRange(const char *rangeName)
const RooAbsReal * getNormIntegral(const RooArgSet &nset) const
Definition RooAbsPdf.h:306
~RooAbsPdf() override
Destructor.
bool mustBeExtended() const
If true PDF must provide extended likelihood term.
Definition RooAbsPdf.h:275
RooArgSet const * _normSet
Normalization integral (owned by _normMgr)
Definition RooAbsPdf.h:368
RooFitResult * chi2FitTo(RooDataHist &data, const RooLinkedList &cmdList) override
Calls RooAbsPdf::createChi2(RooDataSet& data, const RooLinkedList& cmdList) and returns fit result.
RooNumGenConfig * specialGeneratorConfig() const
Returns the specialized integrator configuration for this RooAbsReal.
virtual RooPlot * paramOn(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())
Add a box with parameter values (and errors) to the specified frame.
RooDataSet * generate(const RooArgSet &whatVars, Int_t nEvents, const RooCmdArg &arg1, const RooCmdArg &arg2=RooCmdArg::none(), const RooCmdArg &arg3=RooCmdArg::none(), const RooCmdArg &arg4=RooCmdArg::none(), const RooCmdArg &arg5=RooCmdArg::none())
See RooAbsPdf::generate(const RooArgSet&,const RooCmdArg&,const RooCmdArg&,const RooCmdArg&,...
Definition RooAbsPdf.h:60
virtual bool selfNormalized() const
Shows if a PDF is self-normalized, which means that no attempt is made to add a normalization term.
Definition RooAbsPdf.h:260
void printMultiline(std::ostream &os, Int_t contents, bool verbose=false, TString indent="") const override
Print multi line detailed information of this RooAbsPdf.
virtual RooDataHist * generateBinned(const RooArgSet &whatVars, double nEvents, const RooCmdArg &arg1, const RooCmdArg &arg2=RooCmdArg::none(), const RooCmdArg &arg3=RooCmdArg::none(), const RooCmdArg &arg4=RooCmdArg::none(), const RooCmdArg &arg5=RooCmdArg::none()) const
As RooAbsPdf::generateBinned(const RooArgSet&, const RooCmdArg&,const RooCmdArg&, const RooCmdArg&,...
Definition RooAbsPdf.h:112
Int_t _traceCount
Number of traces remaining to print.
Definition RooAbsPdf.h:384
bool canBeExtended() const
If true, PDF can provide extended likelihood term.
Definition RooAbsPdf.h:271
RooAbsReal * _norm
Definition RooAbsPdf.h:367
int calcAsymptoticCorrectedCovariance(RooMinimizer &minimizer, RooAbsData const &data)
Use the asymptotically correct approach to estimate errors in the presence of weights.
void setTraceCounter(Int_t value, bool allNodes=false)
Reset trace counter to given value, limiting the number of future trace messages for this pdf to 'val...
Int_t _errorCount
Number of errors remaining to print.
Definition RooAbsPdf.h:383
@ CanBeExtended
Definition RooAbsPdf.h:265
@ MustBeExtended
Definition RooAbsPdf.h:265
@ CanNotBeExtended
Definition RooAbsPdf.h:265
double _rawValue
Definition RooAbsPdf.h:366
const char * normRange() const
Definition RooAbsPdf.h:301
Int_t _negCount
Number of negative probablities remaining to print.
Definition RooAbsPdf.h:385
std::unique_ptr< RooFitResult > minimizeNLL(RooAbsReal &nll, RooAbsData const &data, MinimizerConfig const &cfg)
Minimizes a given NLL variable by finding the optimal parameters with the RooMinimzer.
RooFit::OwningPtr< RooFitResult > fitTo(RooAbsData &data, RooCmdArg const &arg1, Args const &... args)
Takes an arbitrary number of RooCmdArg command options and calls RooAbsPdf::fitTo(RooAbsData& data,...
Definition RooAbsPdf.h:163
virtual const RooAbsReal * getNormObj(const RooArgSet *set, const RooArgSet *iset, const TNamed *rangeName=nullptr) const
Return pointer to RooAbsReal object that implements calculation of integral over observables iset in ...
void setActiveNormSet(RooArgSet const *normSet) const
Setter for the _normSet member, which should never be set directly.
Definition RooAbsPdf.h:335
double analyticalIntegralWN(Int_t code, const RooArgSet *normSet, const char *rangeName=nullptr) const override
Analytical integral with normalization (see RooAbsReal::analyticalIntegralWN() for further informatio...
void setNormRangeOverride(const char *rangeName)
virtual RooDataSet * generateSimGlobal(const RooArgSet &whatVars, Int_t nEvents)
Special generator interface for generation of 'global observables' – for RooStats tools.
double normalizeWithNaNPacking(double rawVal, double normVal) const
virtual RooAbsGenContext * autoGenContext(const RooArgSet &vars, const RooDataSet *prototype=nullptr, const RooArgSet *auxProto=nullptr, bool verbose=false, bool autoBinned=true, const char *binnedTag="") const
RooArgSet * getAllConstraints(const RooArgSet &observables, RooArgSet &constrainedParams, bool stripDisconnected=true, bool removeConstraintsFromPdf=false) const
This helper function finds and collects all constraints terms of all component p.d....
const RooNumGenConfig * getGeneratorConfig() const
Return the numeric MC generator configuration used for this object.
virtual void initGenerator(Int_t code)
Interface for one-time initialization to setup the generator for the specified code.
virtual ExtendMode extendMode() const
Returns ability of PDF to provide extended likelihood terms.
Definition RooAbsPdf.h:269
RooAbsPdf()
Default constructor.
virtual RooArgSet * getConstraints(const RooArgSet &, RooArgSet &, bool, bool=false) const
Definition RooAbsPdf.h:221
bool traceEvalPdf(double value) const
Check that passed value is positive and not 'not-a-number'.
static RooNumGenConfig * defaultGeneratorConfig()
Returns the default numeric MC generator configuration for all RooAbsReals.
bool redirectServersHook(const RooAbsCollection &newServerList, bool mustReplaceAll, bool nameChange, bool isRecursiveStep) override
The cache manager.
void printValue(std::ostream &os) const override
Print value of p.d.f, also print normalization integral that was last used, if any.
virtual RooAbsGenContext * genContext(const RooArgSet &vars, const RooDataSet *prototype=nullptr, const RooArgSet *auxProto=nullptr, bool verbose=false) const
Interface function to create a generator context from a p.d.f.
static TString _normRangeOverride
Definition RooAbsPdf.h:392
static Int_t _verboseEval
Definition RooAbsPdf.h:362
double extendedTerm(double sumEntries, double expected, double sumEntriesW2=0.0, bool doOffset=false) const
virtual Int_t getGenerator(const RooArgSet &directVars, RooArgSet &generateVars, bool staticInitOK=true) const
Load generatedVars with the subset of directVars that we can generate events for, and return a code t...
virtual RooAbsPdf * createProjection(const RooArgSet &iset)
Return a p.d.f that represent a projection of this p.d.f integrated over given observables.
virtual double getLogVal(const RooArgSet *set=nullptr) const
Return the log of the current value with given normalization An error message is printed if the argum...
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 RooCmdArg &arg9=RooCmdArg::none(), const RooCmdArg &arg10=RooCmdArg::none()) const override
Helper calling plotOn(RooPlot*, RooLinkedList&) const.
Definition RooAbsPdf.h:126
RooAbsReal is the common abstract base class for objects that represent a real value and implements f...
Definition RooAbsReal.h:61
virtual RooAbsReal * createChi2(RooDataHist &data, const RooLinkedList &cmdList)
virtual RooPlot * plotOn(RooPlot *frame, const RooCmdArg &arg1=RooCmdArg(), const RooCmdArg &arg2=RooCmdArg(), const RooCmdArg &arg3=RooCmdArg(), const RooCmdArg &arg4=RooCmdArg(), const RooCmdArg &arg5=RooCmdArg(), const RooCmdArg &arg6=RooCmdArg(), const RooCmdArg &arg7=RooCmdArg(), const RooCmdArg &arg8=RooCmdArg(), const RooCmdArg &arg9=RooCmdArg(), const RooCmdArg &arg10=RooCmdArg()) const
Plot (project) PDF on specified frame.
virtual RooFitResult * chi2FitTo(RooDataHist &data, 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())
Perform a fit to given histogram.
virtual double maxVal(Int_t code) const
Return maximum value for set of observables identified by code assigned in getMaxVal.
RooArgList is a container object that can hold multiple RooAbsArg objects.
Definition RooArgList.h:22
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Definition RooArgSet.h:55
RooCategory is an object to represent discrete states.
Definition RooCategory.h:28
RooCmdArg is a named container for two doubles, two integers two object points and three string point...
Definition RooCmdArg.h:26
static const RooCmdArg & none()
Return reference to null argument.
Definition RooCmdArg.cxx:51
The RooDataHist is a container class to hold N-dimensional binned data.
Definition RooDataHist.h:39
RooDataSet is a container class to hold unbinned data.
Definition RooDataSet.h:57
RooExtendPdf is a wrapper around an existing PDF that adds a parameteric extended likelihood term to ...
RooFitResult is a container class to hold the input and output of a PDF fit to a dataset.
RooLinkedList is an collection class for internal use, storing a collection of RooAbsArg pointers in ...
RooMCStudy is a helper class to facilitate Monte Carlo studies such as 'goodness-of-fit' studies,...
Definition RooMCStudy.h:32
RooMinimizer is a wrapper class around ROOT::Fit:Fitter that provides a seamless interface between th...
RooNumGenConfig holds the configuration parameters of the various numeric integrators used by RooReal...
Class RooObjCacheManager is an implementation of class RooCacheManager<RooAbsCacheElement> and specia...
A RooPlot is a plot frame and a container for graphics objects within that frame.
Definition RooPlot.h:43
RooRealIntegral performs hybrid numerical/analytical integrals of RooAbsReal objects.
A simple container to hold a batch of data values.
Definition RooSpan.h:34
1-D histogram with a float per channel (see TH1 documentation)}
Definition TH1.h:577
2-D histogram with a float per channel (see TH1 documentation)}
Definition TH2.h:257
A doubly linked list.
Definition TList.h:38
The TNamed class is the base class for all named ROOT classes.
Definition TNamed.h:29
A Pave (see TPave) with text, lines or/and boxes inside.
Definition TPaveText.h:21
Basic string class.
Definition TString.h:139
Ssiz_t Length() const
Definition TString.h:421
const char * Data() const
Definition TString.h:380
RooCmdArg NumEvents(Int_t numEvents)
Namespace for dispatching RooFit computations to various backends.
std::unique_ptr< RooLinkedList > createCmdList(Args &&... args)
UniqueId_t const & getUniqueId(Class const *ptr)
A helper function to replace pointer comparisons with UniqueId comparisons.
Definition UniqueId.h:89
T * OwningPtr
An alias for raw pointers for indicating that the return type of a RooFit function is an owning point...
Definition Config.h:43
Configuration struct for RooAbsPdf::minimizeNLL with all the default.
Definition RooAbsPdf.h:171
const RooArgSet * minosSet
Definition RooAbsPdf.h:193
A UniqueId can be added as a class member to enhance any class with a unique identifier for each inst...
Definition UniqueId.h:39
unsigned long Value_t
Definition UniqueId.h:41
static void output()