Logo ROOT   master
Reference Guide
RooAbsGenContext.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * Project: RooFit *
3  * Package: RooFitCore *
4  * File: $Id: RooAbsGenContext.h,v 1.15 2007/05/11 09:11:30 verkerke 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_GEN_CONTEXT
17 #define ROO_ABS_GEN_CONTEXT
18 
19 #include "TNamed.h"
20 #include "RooPrintable.h"
21 #include "RooArgSet.h"
22 #include "RooAbsPdf.h"
23 
24 class RooDataSet;
25 
26 class RooAbsGenContext : public TNamed, public RooPrintable {
27 public:
28  RooAbsGenContext(const RooAbsPdf &model, const RooArgSet &vars, const RooDataSet *prototype= 0, const RooArgSet* auxProto=0,
30  virtual ~RooAbsGenContext();
31 
32  virtual RooDataSet *generate(Double_t nEvents= 0, Bool_t skipInit=kFALSE, Bool_t extendedMode=kFALSE);
33 
34  Bool_t isValid() const {
35  // If true generator context is in a valid state
36  return _isValid;
37  }
38 
39  inline void setVerbose(Bool_t verbose= kTRUE) {
40  // Set/clear verbose messaging
41  _verbose= verbose;
42  }
43  inline Bool_t isVerbose() const {
44  // If true verbose messaging is active
45  return _verbose;
46  }
47 
48  virtual void setProtoDataOrder(Int_t* lut) ;
49 
50  inline virtual void Print(Option_t *options= 0) const {
51  // Print context information on stdout
53  }
54 
55  virtual void attach(const RooArgSet& params) ;
56 
57  virtual void printName(std::ostream& os) const ;
58  virtual void printTitle(std::ostream& os) const ;
59  virtual void printClassName(std::ostream& os) const ;
60  virtual void printArgs(std::ostream& os) const ;
61  virtual void printMultiline(std::ostream& os, Int_t contents, Bool_t verbose=kFALSE, TString indent="") const;
62 
63  virtual Int_t defaultPrintContents(Option_t* opt) const ;
64  virtual StyleOption defaultPrintStyle(Option_t* opt) const ;
65 
66  virtual void setExpectedData(Bool_t) {} ;
67 
68  virtual void generateEvent(RooArgSet &theEvent, Int_t remaining) = 0;
69  virtual void initGenerator(const RooArgSet &theEvent);
70 
71 protected:
72 
73  virtual RooDataSet* createDataSet(const char* name, const char* title, const RooArgSet& obs) ;
74 
75  void resampleData(Double_t& ratio) ;
76 
77  const RooDataSet *_prototype; // Pointer to prototype dataset
78  RooArgSet *_theEvent; // Pointer to observable event being generated
79  Bool_t _isValid; // Is context in valid state?
80  Bool_t _verbose; // Verbose messaging?
81  UInt_t _expectedEvents; // Number of expected events from extended p.d.f
82  RooArgSet _protoVars; // Prototype observables
83  Int_t _nextProtoIndex; // Next prototype event to load according to LUT
84  RooAbsPdf::ExtendMode _extendMode ; // Extended mode capabilities of p.d.f.
85  Int_t* _protoOrder ; // LUT with traversal order of prototype data
86  TString _normRange ; // Normalization range of pdf
87 
88  RooDataSet* _genData ; //! Data being generated
89 
90  ClassDef(RooAbsGenContext,0) // Abstract context for generating a dataset from a PDF
91 };
92 
93 #endif
virtual StyleOption defaultPrintStyle(Option_t *opt) const
Define default print style.
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 Int_t defaultPrintContents(Option_t *opt) const
Define default contents when printing.
Bool_t isVerbose() const
const char Option_t
Definition: RtypesCore.h:62
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Definition: RooArgSet.h:28
Bool_t isValid() const
Basic string class.
Definition: TString.h:131
const RooDataSet * _prototype
#define ClassDef(name, id)
Definition: Rtypes.h:326
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
RooDataSet * _genData
virtual void printClassName(std::ostream &os) const
Print class name of context.
virtual void printArgs(std::ostream &os) const
Print arguments of context, i.e. the observables being generated in this context. ...
RooAbsGenContext is the abstract base class for generator contexts of RooAbsPdf objects.
virtual void attach(const RooArgSet &params)
Interface to attach given parameters to object in this context.
void setVerbose(Bool_t verbose=kTRUE)
virtual void printTitle(std::ostream &os) const
Print title of context.
virtual void setExpectedData(Bool_t)
unsigned int UInt_t
Definition: RtypesCore.h:42
virtual void generateEvent(RooArgSet &theEvent, Int_t remaining)=0
static void indent(ostringstream &buf, int indent_level)
RooDataSet is a container class to hold unbinned data.
Definition: RooDataSet.h:33
const Bool_t kFALSE
Definition: RtypesCore.h:88
RooAbsGenContext(const RooAbsPdf &model, const RooArgSet &vars, const RooDataSet *prototype=0, const RooArgSet *auxProto=0, Bool_t _verbose=kFALSE)
Constructor.
static std::ostream & defaultPrintStream(std::ostream *os=0)
Return a reference to the current default stream to use in Print().
RooArgSet * _theEvent
virtual void printName(std::ostream &os) const
Print name of context.
virtual void setProtoDataOrder(Int_t *lut)
Set the traversal order of prototype data to that in the lookup tables passed as argument.
virtual void printMultiline(std::ostream &os, Int_t contents, Bool_t verbose=kFALSE, TString indent="") const
Interface for multi-line printing.
virtual void Print(Option_t *options=0) const
Print TNamed name and title.
virtual ~RooAbsGenContext()
Destructor.
virtual RooDataSet * generate(Double_t nEvents=0, Bool_t skipInit=kFALSE, Bool_t extendedMode=kFALSE)
Generate the specified number of events with nEvents>0 and and return a dataset containing the genera...
void resampleData(Double_t &ratio)
Rescale existing output buffer with given ratio.
RooAbsPdf, the base class of all PDFs
Definition: RooAbsPdf.h:40
virtual void initGenerator(const RooArgSet &theEvent)
Interface function to initialize context for generation for given set of observables.
const Bool_t kTRUE
Definition: RtypesCore.h:87
char name[80]
Definition: TGX11.cxx:109
RooAbsPdf::ExtendMode _extendMode
virtual RooDataSet * createDataSet(const char *name, const char *title, const RooArgSet &obs)
Create an empty dataset to hold the events that will be generated.