Logo ROOT   6.10/09
Reference Guide
RooAbsNumGenerator.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * Project: RooFit *
3  * Package: RooFitCore *
4  * File: $Id$
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_NUM_GENERATOR
17 #define ROO_ABS_NUM_GENERATOR
18 
19 #include "TNamed.h"
20 #include "RooPrintable.h"
21 #include "RooArgSet.h"
22 #include "RooArgList.h"
23 
24 class RooAbsReal;
25 class RooRealVar;
26 class RooDataSet;
27 class RooRealBinding;
28 class RooNumGenConfig ;
29 
30 class RooAbsNumGenerator : public TNamed, public RooPrintable {
31 public:
33  RooAbsNumGenerator(const RooAbsReal &func, const RooArgSet &genVars, Bool_t verbose=kFALSE, const RooAbsReal* maxFuncVal=0);
34  virtual RooAbsNumGenerator* clone(const RooAbsReal&, const RooArgSet& genVars, const RooArgSet& condVars,
35  const RooNumGenConfig& config, Bool_t verbose=kFALSE, const RooAbsReal* maxFuncVal=0) const = 0 ;
36 
37  Bool_t isValid() const {
38  // If true, generator is in a valid state
39  return _isValid;
40  }
41  virtual ~RooAbsNumGenerator();
42 
43  inline void setVerbose(Bool_t verbose= kTRUE) {
44  // If flag is true, verbose messaging will be active during generation
45  _verbose= verbose;
46  }
47  inline Bool_t isVerbose() const {
48  // Return status of verbose messaging flag
49  return _verbose;
50  }
51 
52  virtual const RooArgSet *generateEvent(UInt_t remaining, Double_t& resampleRatio) = 0;
53  virtual Double_t getFuncMax() { return 0 ; }
54 
55  inline virtual void Print(Option_t *options= 0) const {
56  // ascii printing interface
58  }
59 
60  virtual void printName(std::ostream& os) const ;
61  virtual void printTitle(std::ostream& os) const ;
62  virtual void printClassName(std::ostream& os) const ;
63  virtual void printArgs(std::ostream& os) const ;
64 
65  void attachParameters(const RooArgSet& vars) ;
66 
67  // Advertisement of capabilities
68  virtual Bool_t canSampleCategories() const { return kFALSE ; }
69  virtual Bool_t canSampleConditional() const { return kFALSE ; } // Must implement getFuncMax()
70 
71 protected:
72 
73  RooArgSet *_cloneSet; // Set owning clone of input function
74  RooAbsReal *_funcClone; // Pointer to top level node of cloned function
75  const RooAbsReal *_funcMaxVal ; // Container for maximum function value
76  RooArgSet _catVars,_realVars ; // Sets of discrete and real valued observabeles
77  Bool_t _verbose, _isValid; // Verbose and valid flag
78  RooRealVar *_funcValStore,*_funcValPtr; // RRVs storing function value in context and in output dataset
79 
80  RooDataSet *_cache; // Dataset holding generared values of observables
81 
82  ClassDef(RooAbsNumGenerator,0) // Abstract base class for numeric event generator algorithms
83 };
84 
85 #endif
virtual void printStream(std::ostream &os, Int_t contents, StyleOption style, TString indent="") const
Print description of object on ostream, printing contents set by contents integer, which is interpreted as an OR of 'enum ContentsOptions' values and in the style given by 'enum StyleOption'.
virtual ~RooAbsNumGenerator()
Destructor.
Bool_t isVerbose() const
virtual RooAbsNumGenerator * clone(const RooAbsReal &, const RooArgSet &genVars, const RooArgSet &condVars, const RooNumGenConfig &config, Bool_t verbose=kFALSE, const RooAbsReal *maxFuncVal=0) const =0
const char Option_t
Definition: RtypesCore.h:62
virtual Bool_t canSampleConditional() const
virtual void printArgs(std::ostream &os) const
Print the arguments of the generator.
bool Bool_t
Definition: RtypesCore.h:59
const RooAbsReal * _funcMaxVal
virtual void Print(Option_t *options=0) const
Print TNamed name and title.
#define ClassDef(name, id)
Definition: Rtypes.h:297
RooPlotable is a 'mix-in' base class that define the standard RooFit plotting and printing methods...
Definition: RooPrintable.h:25
The TNamed class is the base class for all named ROOT classes.
Definition: TNamed.h:29
void attachParameters(const RooArgSet &vars)
Reattach original parameters to function clone.
virtual Bool_t canSampleCategories() const
RooRealVar represents a fundamental (non-derived) real valued object.
Definition: RooRealVar.h:36
RooRealVar * _funcValStore
void setVerbose(Bool_t verbose=kTRUE)
virtual Double_t getFuncMax()
RooRealVar * _funcValPtr
virtual const RooArgSet * generateEvent(UInt_t remaining, Double_t &resampleRatio)=0
unsigned int UInt_t
Definition: RtypesCore.h:42
bool verbose
virtual void printClassName(std::ostream &os) const
Print the class name of the generator.
Class RooAbsNumGenerator is the abstract base class for MC event generator implementations like RooAc...
virtual Int_t defaultPrintContents(Option_t *opt) const
Default choice of contents to be printed (name and value)
RooDataSet is a container class to hold unbinned data.
Definition: RooDataSet.h:29
const Bool_t kFALSE
Definition: RtypesCore.h:92
static std::ostream & defaultPrintStream(std::ostream *os=0)
Return a reference to the current default stream to use in Print().
double Double_t
Definition: RtypesCore.h:55
RooAbsReal is the common abstract base class for objects that represent a real value and implements f...
Definition: RooAbsReal.h:53
Bool_t isValid() const
virtual void printTitle(std::ostream &os) const
Print the title of the generator.
double func(double *x, double *p)
Definition: stressTF1.cxx:213
virtual StyleOption defaultPrintStyle(Option_t *opt) const
virtual void printName(std::ostream &os) const
Print name of the generator.
RooNumGenConfig holds the configuration parameters of the various numeric integrators used by RooReal...
Lightweight interface adaptor that binds a RooAbsReal object to a subset of its servers and present i...
const Bool_t kTRUE
Definition: RtypesCore.h:91