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)