/usr/include/root/RooAbsPdf.h is in libroot-roofit-dev 5.34.19+dfsg-1.2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 | /*****************************************************************************
* Project: RooFit *
* Package: RooFitCore *
* File: $Id: RooAbsPdf.h,v 1.90 2007/07/21 21:32:52 wouter Exp $
* Authors: *
* WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu *
* DK, David Kirkby, UC Irvine, dkirkby@uci.edu *
* *
* Copyright (c) 2000-2005, Regents of the University of California *
* and Stanford University. All rights reserved. *
* *
* Redistribution and use in source and binary forms, *
* with or without modification, are permitted according to the terms *
* listed in LICENSE (http://roofit.sourceforge.net/license.txt) *
*****************************************************************************/
#ifndef ROO_ABS_PDF
#define ROO_ABS_PDF
#include "RooAbsReal.h"
//#include "RooRealIntegral.h"
#include "RooNameSet.h"
#include "RooObjCacheManager.h"
#include "RooCmdArg.h"
class RooDataSet;
class RooDataHist ;
class RooArgSet ;
class RooRealProxy ;
class RooAbsGenContext ;
class RooFitResult ;
class RooExtendPdf ;
class RooCategory ;
class TPaveText;
class TH1F;
class TH2F;
class TList ;
class RooLinkedList ;
class RooNumGenConfig ;
class RooRealIntegral ;
class RooAbsPdf : public RooAbsReal {
public:
// Constructors, assignment etc
RooAbsPdf() ;
RooAbsPdf(const char *name, const char *title=0) ;
RooAbsPdf(const char *name, const char *title, Double_t minVal, Double_t maxVal) ;
// RooAbsPdf(const RooAbsPdf& other, const char* name=0);
virtual ~RooAbsPdf();
// Toy MC generation
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()) ;
RooDataSet *generate(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()) ;
RooDataSet *generate(const RooArgSet &whatVars, Double_t nEvents = 0, Bool_t verbose=kFALSE, Bool_t autoBinned=kTRUE,
const char* binnedTag="", Bool_t expectedData=kFALSE, Bool_t extended = kFALSE) const;
RooDataSet *generate(const RooArgSet &whatVars, const RooDataSet &prototype, Int_t nEvents= 0,
Bool_t verbose=kFALSE, Bool_t randProtoOrder=kFALSE, Bool_t resampleProto=kFALSE) const;
class GenSpec {
public:
virtual ~GenSpec() ;
GenSpec() { _genContext = 0 ; _protoData = 0 ; _init = kFALSE ; _extended=kFALSE, _nGen=0 ; _randProto = kFALSE ; _resampleProto=kFALSE ; }
private:
GenSpec(RooAbsGenContext* context, const RooArgSet& whatVars, RooDataSet* protoData, Int_t nGen, Bool_t extended,
Bool_t randProto, Bool_t resampleProto, TString dsetName, Bool_t init=kFALSE) ;
GenSpec(const GenSpec& other) ;
friend class RooAbsPdf ;
RooAbsGenContext* _genContext ;
RooArgSet _whatVars ;
RooDataSet* _protoData ;
Int_t _nGen ;
Bool_t _extended ;
Bool_t _randProto ;
Bool_t _resampleProto ;
TString _dsetName ;
Bool_t _init ;
ClassDef(GenSpec,0) // Generation specification
} ;
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()) ;
RooDataSet* generate(GenSpec&) const ;
virtual RooDataHist *generateBinned(const RooArgSet &whatVars, Double_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()) ;
virtual RooDataHist *generateBinned(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()) ;
virtual RooDataHist *generateBinned(const RooArgSet &whatVars, Double_t nEvents, Bool_t expectedData=kFALSE, Bool_t extended=kFALSE) const;
virtual RooDataSet* generateSimGlobal(const RooArgSet& whatVars, Int_t nEvents) ;
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 RooCmdArg& arg9=RooCmdArg::none(), const RooCmdArg& arg10=RooCmdArg::none()
) const {
return RooAbsReal::plotOn(frame,arg1,arg2,arg3,arg4,arg5,arg6,arg7,arg8,arg9,arg10) ;
}
virtual RooPlot* plotOn(RooPlot* frame, RooLinkedList& cmdList) const ;
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()) ;
virtual RooPlot* paramOn(RooPlot* frame, const RooAbsData* data, const char *label= "", Int_t sigDigits = 2,
Option_t *options = "NELU", Double_t xmin=0.50,
Double_t xmax= 0.99,Double_t ymax=0.95) ;
// Built-in generator support
virtual Int_t getGenerator(const RooArgSet& directVars, RooArgSet &generateVars, Bool_t staticInitOK=kTRUE) const;
virtual void initGenerator(Int_t code) ;
virtual void generateEvent(Int_t code);
virtual Bool_t isDirectGenSafe(const RooAbsArg& arg) const ;
// Configuration of MC generators used for this pdf
const RooNumGenConfig* getGeneratorConfig() const ;
static RooNumGenConfig* defaultGeneratorConfig() ;
RooNumGenConfig* specialGeneratorConfig() const ;
RooNumGenConfig* specialGeneratorConfig(Bool_t createOnTheFly) ;
void setGeneratorConfig() ;
void setGeneratorConfig(const RooNumGenConfig& config) ;
// -log(L) fits to binned and unbinned data
virtual RooFitResult* fitTo(RooAbsData& 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()) ;
virtual RooFitResult* fitTo(RooAbsData& data, const RooLinkedList& cmdList) ;
virtual RooAbsReal* createNLL(RooAbsData& data, const RooLinkedList& cmdList) ;
virtual RooAbsReal* createNLL(RooAbsData& 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()) ;
// Chi^2 fits to histograms
using RooAbsReal::chi2FitTo ;
using RooAbsReal::createChi2 ;
virtual RooFitResult* chi2FitTo(RooDataHist& data, const RooLinkedList& cmdList) ;
virtual 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()) ;
// Chi^2 fits to X-Y datasets
virtual RooAbsReal* createChi2(RooDataSet& data, const RooLinkedList& cmdList) ;
// Constraint management
virtual RooArgSet* getConstraints(const RooArgSet& /*observables*/, RooArgSet& /*constrainedParams*/, Bool_t /*stripDisconnected*/) const {
// Interface to retrieve constraint terms on this pdf. Default implementation returns null
return 0 ;
}
virtual RooArgSet* getAllConstraints(const RooArgSet& observables, RooArgSet& constrainedParams, Bool_t stripDisconnected=kTRUE) const ;
// Project p.d.f into lower dimensional p.d.f
virtual RooAbsPdf* createProjection(const RooArgSet& iset) ;
// Create cumulative density function from p.d.f
RooAbsReal* createCdf(const RooArgSet& iset, const RooArgSet& nset=RooArgSet()) ;
RooAbsReal* createCdf(const RooArgSet& iset, const RooCmdArg& arg1, 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()) ;
RooAbsReal* createScanCdf(const RooArgSet& iset, const RooArgSet& nset, Int_t numScanBins, Int_t intOrder) ;
// Function evaluation support
virtual Bool_t traceEvalHook(Double_t value) const ;
virtual Double_t getValV(const RooArgSet* set=0) const ;
virtual Double_t getLogVal(const RooArgSet* set=0) const ;
Double_t getNorm(const RooArgSet& nset) const {
// Get p.d.f normalization term needed for observables 'nset'
return getNorm(&nset) ;
}
virtual Double_t getNorm(const RooArgSet* set=0) const ;
virtual void resetErrorCounters(Int_t resetValue=10) ;
void setTraceCounter(Int_t value, Bool_t allNodes=kFALSE) ;
Bool_t traceEvalPdf(Double_t value) const ;
Double_t analyticalIntegralWN(Int_t code, const RooArgSet* normSet, const char* rangeName=0) const ;
virtual Bool_t selfNormalized() const {
// If true, p.d.f is taken as self-normalized and no attempt is made to add a normalization term
// This default implementation return false
return kFALSE ;
}
// Support for extended maximum likelihood, switched off by default
enum ExtendMode { CanNotBeExtended, CanBeExtended, MustBeExtended } ;
virtual ExtendMode extendMode() const {
// Returns ability of p.d.f to provided extended likelihood terms. Possible
// answers are CanNotBeExtended, CanBeExtended or MustBeExtended. This
// default implementation always return CanNotBeExtended
return CanNotBeExtended ;
}
inline Bool_t canBeExtended() const {
// If true p.d.f can provide extended likelihood term
return (extendMode() != CanNotBeExtended) ;
}
inline Bool_t mustBeExtended() const {
// If true p.d.f must extended likelihood term
return (extendMode() == MustBeExtended) ;
}
virtual Double_t expectedEvents(const RooArgSet* nset) const ;
virtual Double_t expectedEvents(const RooArgSet& nset) const {
// Return expecteded number of p.d.fs to be used in calculated of extended likelihood
return expectedEvents(&nset) ;
}
// Printing interface (human readable)
virtual void printValue(std::ostream& os) const ;
virtual void printMultiline(std::ostream& os, Int_t contents, Bool_t verbose=kFALSE, TString indent="") const ;
static void verboseEval(Int_t stat) ;
static int verboseEval() ;
virtual Double_t extendedTerm(Double_t observedEvents, const RooArgSet* nset=0) const ;
static void clearEvalError() ;
static Bool_t evalError() ;
void setNormRange(const char* rangeName) ;
const char* normRange() const {
return _normRange.Length()>0 ? _normRange.Data() : 0 ;
}
void setNormRangeOverride(const char* rangeName) ;
const RooAbsReal* getNormIntegral(const RooArgSet& nset) const { return getNormObj(0,&nset,0) ; }
protected:
public:
virtual const RooAbsReal* getNormObj(const RooArgSet* set, const RooArgSet* iset, const TNamed* rangeName=0) const ;
protected:
RooDataSet *generate(RooAbsGenContext& context, const RooArgSet& whatVars, const RooDataSet* prototype,
Double_t nEvents, Bool_t verbose, Bool_t randProtoOrder, Bool_t resampleProto, Bool_t skipInit=kFALSE,
Bool_t extended=kFALSE) const ;
// Implementation version
virtual RooPlot* paramOn(RooPlot* frame, const RooArgSet& params, Bool_t showConstants=kFALSE,
const char *label= "", Int_t sigDigits = 2, Option_t *options = "NELU", Double_t xmin=0.65,
Double_t xmax= 0.99,Double_t ymax=0.95, const RooCmdArg* formatCmd=0) ;
virtual RooPlot *plotOn(RooPlot *frame, PlotOpt o) const;
friend class RooEffGenContext ;
friend class RooAddGenContext ;
friend class RooProdGenContext ;
friend class RooSimGenContext ;
friend class RooSimSplitGenContext ;
friend class RooConvGenContext ;
friend class RooSimultaneous ;
friend class RooAddGenContextOrig ;
friend class RooProdPdf ;
friend class RooMCStudy ;
Int_t* randomizeProtoOrder(Int_t nProto,Int_t nGen,Bool_t resample=kFALSE) const ;
virtual RooAbsGenContext* binnedGenContext(const RooArgSet &vars, Bool_t verbose= kFALSE) const ;
virtual RooAbsGenContext* genContext(const RooArgSet &vars, const RooDataSet *prototype=0,
const RooArgSet* auxProto=0, Bool_t verbose= kFALSE) const ;
virtual RooAbsGenContext* autoGenContext(const RooArgSet &vars, const RooDataSet* prototype=0, const RooArgSet* auxProto=0,
Bool_t verbose=kFALSE, Bool_t autoBinned=kTRUE, const char* binnedTag="") const ;
friend class RooExtendPdf ;
// This also forces the definition of a copy ctor in derived classes
RooAbsPdf(const RooAbsPdf& other, const char* name = 0);
friend class RooRealIntegral ;
static Int_t _verboseEval ;
virtual Bool_t syncNormalization(const RooArgSet* dset, Bool_t adjustProxies=kTRUE) const ;
friend class RooAbsAnaConvPdf ;
mutable Double_t _rawValue ;
mutable RooAbsReal* _norm ; //! Normalization integral (owned by _normMgr)
mutable RooArgSet* _normSet ; //! Normalization set with for above integral
class CacheElem : public RooAbsCacheElement {
public:
CacheElem(RooAbsReal& norm) : _norm(&norm) {} ;
void operModeHook(RooAbsArg::OperMode) ;
virtual ~CacheElem() ;
virtual RooArgList containedArgs(Action) { return RooArgList(*_norm) ; }
RooAbsReal* _norm ;
} ;
mutable RooObjCacheManager _normMgr ; // The cache manager
friend class CacheElem ; // Cache needs to be able to clear _norm pointer
virtual Bool_t redirectServersHook(const RooAbsCollection&, Bool_t, Bool_t, Bool_t) {
// Hook function intercepting redirectServer calls. Discard current normalization
// object if any server is redirected
// Object is own by _normCacheManager that will delete object as soon as cache
// is sterilized by server redirect
_norm = 0 ;
return kFALSE ;
} ;
mutable Int_t _errorCount ; // Number of errors remaining to print
mutable Int_t _traceCount ; // Number of traces remaining to print
mutable Int_t _negCount ; // Number of negative probablities remaining to print
Bool_t _selectComp ; // Component selection flag for RooAbsPdf::plotCompOn
static void raiseEvalError() ;
static Bool_t _evalError ;
RooNumGenConfig* _specGeneratorConfig ; //! MC generator configuration specific for this object
TString _normRange ; // Normalization range
static TString _normRangeOverride ;
ClassDef(RooAbsPdf,4) // Abstract PDF with normalization support
};
#endif
|