28 class RooAbsGenContext ;
37 class RooNumGenConfig ;
38 class RooRealIntegral ;
40 class RooAbsPdf :
public RooAbsReal {
45 RooAbsPdf(
const char *name,
const char *title=0) ;
46 RooAbsPdf(
const char *name,
const char *title, Double_t minVal, Double_t maxVal) ;
55 RooDataSet *generate(
const RooArgSet &whatVars, Int_t nEvents,
const RooCmdArg& arg1,
56 const RooCmdArg& arg2=RooCmdArg::none(),
const RooCmdArg& arg3=RooCmdArg::none(),
57 const RooCmdArg& arg4=RooCmdArg::none(),
const RooCmdArg& arg5=RooCmdArg::none()) {
58 return generate(whatVars,RooFit::NumEvents(nEvents),arg1,arg2,arg3,arg4,arg5) ;
60 RooDataSet *generate(
const RooArgSet &whatVars,
61 const RooCmdArg& arg1=RooCmdArg::none(),
const RooCmdArg& arg2=RooCmdArg::none(),
62 const RooCmdArg& arg3=RooCmdArg::none(),
const RooCmdArg& arg4=RooCmdArg::none(),
63 const RooCmdArg& arg5=RooCmdArg::none(),
const RooCmdArg& arg6=RooCmdArg::none()) ;
64 RooDataSet *generate(
const RooArgSet &whatVars, Double_t nEvents = 0, Bool_t verbose=kFALSE, Bool_t autoBinned=kTRUE,
65 const char* binnedTag=
"", Bool_t expectedData=kFALSE, Bool_t extended = kFALSE)
const;
66 RooDataSet *generate(
const RooArgSet &whatVars,
const RooDataSet &prototype, Int_t nEvents= 0,
67 Bool_t verbose=kFALSE, Bool_t randProtoOrder=kFALSE, Bool_t resampleProto=kFALSE)
const;
73 GenSpec() { _genContext = 0 ; _protoData = 0 ; _init = kFALSE ; _extended=kFALSE, _nGen=0 ; _randProto = kFALSE ; _resampleProto=kFALSE ; }
75 GenSpec(RooAbsGenContext* context,
const RooArgSet& whatVars, RooDataSet* protoData, Int_t nGen, Bool_t extended,
76 Bool_t randProto, Bool_t resampleProto, TString dsetName, Bool_t init=kFALSE) ;
77 GenSpec(
const GenSpec& other) ;
79 friend class RooAbsPdf ;
80 RooAbsGenContext* _genContext ;
82 RooDataSet* _protoData ;
86 Bool_t _resampleProto ;
93 GenSpec* prepareMultiGen(
const RooArgSet &whatVars,
94 const RooCmdArg& arg1=RooCmdArg::none(),
const RooCmdArg& arg2=RooCmdArg::none(),
95 const RooCmdArg& arg3=RooCmdArg::none(),
const RooCmdArg& arg4=RooCmdArg::none(),
96 const RooCmdArg& arg5=RooCmdArg::none(),
const RooCmdArg& arg6=RooCmdArg::none()) ;
98 RooDataSet* generate(GenSpec&)
const ;
104 virtual RooDataHist *generateBinned(
const RooArgSet &whatVars, Double_t nEvents,
const RooCmdArg& arg1,
105 const RooCmdArg& arg2=RooCmdArg::none(),
const RooCmdArg& arg3=RooCmdArg::none(),
106 const RooCmdArg& arg4=RooCmdArg::none(),
const RooCmdArg& arg5=RooCmdArg::none())
const {
107 return generateBinned(whatVars,RooFit::NumEvents(nEvents),arg1,arg2,arg3,arg4,arg5);
109 virtual RooDataHist *generateBinned(
const RooArgSet &whatVars,
110 const RooCmdArg& arg1=RooCmdArg::none(),
const RooCmdArg& arg2=RooCmdArg::none(),
111 const RooCmdArg& arg3=RooCmdArg::none(),
const RooCmdArg& arg4=RooCmdArg::none(),
112 const RooCmdArg& arg5=RooCmdArg::none(),
const RooCmdArg& arg6=RooCmdArg::none())
const;
113 virtual RooDataHist *generateBinned(
const RooArgSet &whatVars, Double_t nEvents, Bool_t expectedData=kFALSE, Bool_t extended=kFALSE)
const;
115 virtual RooDataSet* generateSimGlobal(
const RooArgSet& whatVars, Int_t nEvents) ;
118 virtual RooPlot* plotOn(RooPlot* frame,
119 const RooCmdArg& arg1=RooCmdArg::none(),
const RooCmdArg& arg2=RooCmdArg::none(),
120 const RooCmdArg& arg3=RooCmdArg::none(),
const RooCmdArg& arg4=RooCmdArg::none(),
121 const RooCmdArg& arg5=RooCmdArg::none(),
const RooCmdArg& arg6=RooCmdArg::none(),
122 const RooCmdArg& arg7=RooCmdArg::none(),
const RooCmdArg& arg8=RooCmdArg::none(),
123 const RooCmdArg& arg9=RooCmdArg::none(),
const RooCmdArg& arg10=RooCmdArg::none()
125 return RooAbsReal::plotOn(frame,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10) ;
127 virtual RooPlot* plotOn(RooPlot* frame, RooLinkedList& cmdList)
const ;
130 virtual RooPlot* paramOn(RooPlot* frame,
131 const RooCmdArg& arg1=RooCmdArg::none(),
const RooCmdArg& arg2=RooCmdArg::none(),
132 const RooCmdArg& arg3=RooCmdArg::none(),
const RooCmdArg& arg4=RooCmdArg::none(),
133 const RooCmdArg& arg5=RooCmdArg::none(),
const RooCmdArg& arg6=RooCmdArg::none(),
134 const RooCmdArg& arg7=RooCmdArg::none(),
const RooCmdArg& arg8=RooCmdArg::none()) ;
136 virtual RooPlot* paramOn(RooPlot* frame,
const RooAbsData* data,
const char *label=
"", Int_t sigDigits = 2,
137 Option_t *options =
"NELU", Double_t xmin=0.50,
138 Double_t xmax= 0.99,Double_t ymax=0.95) ;
141 virtual Int_t getGenerator(
const RooArgSet& directVars, RooArgSet &generateVars, Bool_t staticInitOK=kTRUE)
const;
142 virtual void initGenerator(Int_t code) ;
143 virtual void generateEvent(Int_t code);
144 virtual Bool_t isDirectGenSafe(
const RooAbsArg& arg)
const ;
147 const RooNumGenConfig* getGeneratorConfig()
const ;
148 static RooNumGenConfig* defaultGeneratorConfig() ;
149 RooNumGenConfig* specialGeneratorConfig()
const ;
150 RooNumGenConfig* specialGeneratorConfig(Bool_t createOnTheFly) ;
151 void setGeneratorConfig() ;
152 void setGeneratorConfig(
const RooNumGenConfig& config) ;
155 virtual RooFitResult* fitTo(RooAbsData& data,
const RooCmdArg& arg1=RooCmdArg::none(),
const RooCmdArg& arg2=RooCmdArg::none(),
156 const RooCmdArg& arg3=RooCmdArg::none(),
const RooCmdArg& arg4=RooCmdArg::none(),
const RooCmdArg& arg5=RooCmdArg::none(),
157 const RooCmdArg& arg6=RooCmdArg::none(),
const RooCmdArg& arg7=RooCmdArg::none(),
const RooCmdArg& arg8=RooCmdArg::none()) ;
158 virtual RooFitResult* fitTo(RooAbsData& data,
const RooLinkedList& cmdList) ;
160 virtual RooAbsReal* createNLL(RooAbsData& data,
const RooLinkedList& cmdList) ;
161 virtual RooAbsReal* createNLL(RooAbsData& data,
const RooCmdArg& arg1=RooCmdArg::none(),
const RooCmdArg& arg2=RooCmdArg::none(),
162 const RooCmdArg& arg3=RooCmdArg::none(),
const RooCmdArg& arg4=RooCmdArg::none(),
const RooCmdArg& arg5=RooCmdArg::none(),
163 const RooCmdArg& arg6=RooCmdArg::none(),
const RooCmdArg& arg7=RooCmdArg::none(),
const RooCmdArg& arg8=RooCmdArg::none()) ;
166 using RooAbsReal::chi2FitTo ;
167 using RooAbsReal::createChi2 ;
168 virtual RooFitResult* chi2FitTo(RooDataHist& data,
const RooLinkedList& cmdList) ;
169 virtual RooAbsReal* createChi2(RooDataHist& data,
const RooCmdArg& arg1=RooCmdArg::none(),
const RooCmdArg& arg2=RooCmdArg::none(),
170 const RooCmdArg& arg3=RooCmdArg::none(),
const RooCmdArg& arg4=RooCmdArg::none(),
const RooCmdArg& arg5=RooCmdArg::none(),
171 const RooCmdArg& arg6=RooCmdArg::none(),
const RooCmdArg& arg7=RooCmdArg::none(),
const RooCmdArg& arg8=RooCmdArg::none()) ;
174 virtual RooAbsReal* createChi2(RooDataSet& data,
const RooLinkedList& cmdList) ;
181 virtual RooArgSet* getConstraints(
const RooArgSet& , RooArgSet& , Bool_t )
const {
185 virtual RooArgSet* getAllConstraints(
const RooArgSet& observables, RooArgSet& constrainedParams, Bool_t stripDisconnected=kTRUE)
const ;
188 virtual RooAbsPdf* createProjection(
const RooArgSet& iset) ;
191 RooAbsReal* createCdf(
const RooArgSet& iset,
const RooArgSet& nset=RooArgSet()) ;
192 RooAbsReal* createCdf(
const RooArgSet& iset,
const RooCmdArg& arg1,
const RooCmdArg& arg2=RooCmdArg::none(),
193 const RooCmdArg& arg3=RooCmdArg::none(),
const RooCmdArg& arg4=RooCmdArg::none(),
194 const RooCmdArg& arg5=RooCmdArg::none(),
const RooCmdArg& arg6=RooCmdArg::none(),
195 const RooCmdArg& arg7=RooCmdArg::none(),
const RooCmdArg& arg8=RooCmdArg::none()) ;
196 RooAbsReal* createScanCdf(
const RooArgSet& iset,
const RooArgSet& nset, Int_t numScanBins, Int_t intOrder) ;
199 virtual Bool_t R__DEPRECATED(6,22,
"Call traceEvalPdf() instead.") traceEvalHook(Double_t value) const ;
200 virtual Double_t getValV(const RooArgSet* set=0) const ;
201 virtual Double_t getLogVal(const RooArgSet* set=0) const ;
203 virtual RooSpan<const
double> getValBatch(std::
size_t begin, std::
size_t batchSize,
204 const RooArgSet* normSet =
nullptr) const;
205 RooSpan<const
double> getLogValBatch(std::
size_t begin, std::
size_t batchSize,
206 const RooArgSet* normSet =
nullptr) const;
208 Double_t getNorm(const RooArgSet& nset)
const {
210 return getNorm(&nset) ;
212 virtual Double_t getNorm(
const RooArgSet* set=0)
const ;
214 virtual void resetErrorCounters(Int_t resetValue=10) ;
215 void setTraceCounter(Int_t value, Bool_t allNodes=kFALSE) ;
217 Bool_t traceEvalPdf(Double_t value)
const;
221 Double_t analyticalIntegralWN(Int_t code,
const RooArgSet* normSet,
const char* rangeName=0)
const ;
223 virtual Bool_t selfNormalized()
const {
230 enum ExtendMode { CanNotBeExtended, CanBeExtended, MustBeExtended } ;
231 virtual ExtendMode extendMode()
const {
235 return CanNotBeExtended ;
237 inline Bool_t canBeExtended()
const {
239 return (extendMode() != CanNotBeExtended) ;
241 inline Bool_t mustBeExtended()
const {
243 return (extendMode() == MustBeExtended) ;
245 virtual Double_t expectedEvents(
const RooArgSet* nset)
const ;
246 virtual Double_t expectedEvents(
const RooArgSet& nset)
const {
248 return expectedEvents(&nset) ;
252 virtual void printValue(std::ostream& os)
const ;
253 virtual void printMultiline(std::ostream& os, Int_t contents, Bool_t verbose=kFALSE, TString indent=
"")
const ;
255 static void verboseEval(Int_t stat) ;
256 static int verboseEval() ;
258 virtual Double_t extendedTerm(Double_t observedEvents,
const RooArgSet* nset=0)
const ;
260 void setNormRange(
const char* rangeName) ;
261 const char* normRange()
const {
262 return _normRange.Length()>0 ? _normRange.Data() : 0 ;
264 void setNormRangeOverride(
const char* rangeName) ;
266 const RooAbsReal* getNormIntegral(
const RooArgSet& nset)
const {
return getNormObj(0,&nset,0) ; }
271 virtual const RooAbsReal* getNormObj(
const RooArgSet* set,
const RooArgSet* iset,
const TNamed* rangeName=0)
const ;
273 virtual RooAbsGenContext* binnedGenContext(
const RooArgSet &vars, Bool_t verbose= kFALSE)
const ;
275 virtual RooAbsGenContext* genContext(
const RooArgSet &vars,
const RooDataSet *prototype=0,
276 const RooArgSet* auxProto=0, Bool_t verbose= kFALSE)
const ;
278 virtual RooAbsGenContext* autoGenContext(
const RooArgSet &vars,
const RooDataSet* prototype=0,
const RooArgSet* auxProto=0,
279 Bool_t verbose=kFALSE, Bool_t autoBinned=kTRUE,
const char* binnedTag=
"")
const ;
283 RooDataSet *generate(RooAbsGenContext& context,
const RooArgSet& whatVars,
const RooDataSet* prototype,
284 Double_t nEvents, Bool_t verbose, Bool_t randProtoOrder, Bool_t resampleProto, Bool_t skipInit=kFALSE,
285 Bool_t extended=kFALSE)
const ;
288 virtual RooPlot* paramOn(RooPlot* frame,
const RooArgSet& params, Bool_t showConstants=kFALSE,
289 const char *label=
"", Int_t sigDigits = 2, Option_t *options =
"NELU", Double_t xmin=0.65,
290 Double_t xmax= 0.99,Double_t ymax=0.95,
const RooCmdArg* formatCmd=0) ;
292 void logBatchComputationErrors(RooSpan<const double>& outputs, std::size_t begin)
const;
295 virtual RooPlot *plotOn(RooPlot *frame, PlotOpt o)
const;
297 friend class RooEffGenContext ;
298 friend class RooAddGenContext ;
299 friend class RooProdGenContext ;
300 friend class RooSimGenContext ;
301 friend class RooSimSplitGenContext ;
302 friend class RooConvGenContext ;
303 friend class RooSimultaneous ;
304 friend class RooAddGenContextOrig ;
305 friend class RooProdPdf ;
306 friend class RooMCStudy ;
308 Int_t* randomizeProtoOrder(Int_t nProto,Int_t nGen,Bool_t resample=kFALSE)
const ;
310 friend class RooExtendPdf ;
312 RooAbsPdf(
const RooAbsPdf& other,
const char* name = 0);
314 friend class RooRealIntegral ;
315 static Int_t _verboseEval ;
317 virtual Bool_t syncNormalization(
const RooArgSet* dset, Bool_t adjustProxies=kTRUE)
const ;
319 friend class RooAbsAnaConvPdf ;
320 mutable Double_t _rawValue ;
321 mutable RooAbsReal* _norm ;
322 mutable RooArgSet* _normSet ;
324 class CacheElem :
public RooAbsCacheElement {
326 CacheElem(RooAbsReal& norm) : _norm(&norm) {} ;
327 void operModeHook(RooAbsArg::OperMode) ;
328 virtual ~CacheElem() ;
329 virtual RooArgList containedArgs(Action) {
return RooArgList(*_norm) ; }
332 mutable RooObjCacheManager _normMgr ;
334 friend class CacheElem ;
336 virtual Bool_t redirectServersHook(
const RooAbsCollection&, Bool_t, Bool_t, Bool_t) {
347 mutable Int_t _errorCount ;
348 mutable Int_t _traceCount ;
349 mutable Int_t _negCount ;
353 RooNumGenConfig* _specGeneratorConfig ;
356 static TString _normRangeOverride ;
358 ClassDef(RooAbsPdf,4)