Logo ROOT  
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
24class RooDataSet;
25
26class RooAbsGenContext : public TNamed, public RooPrintable {
27public:
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
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
71protected:
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
int Int_t
Definition: RtypesCore.h:41
unsigned int UInt_t
Definition: RtypesCore.h:42
const Bool_t kFALSE
Definition: RtypesCore.h:88
bool Bool_t
Definition: RtypesCore.h:59
double Double_t
Definition: RtypesCore.h:55
const Bool_t kTRUE
Definition: RtypesCore.h:87
const char Option_t
Definition: RtypesCore.h:62
#define ClassDef(name, id)
Definition: Rtypes.h:326
static void indent(ostringstream &buf, int indent_level)
char name[80]
Definition: TGX11.cxx:109
RooAbsGenContext is the abstract base class for generator contexts of RooAbsPdf objects.
virtual RooDataSet * createDataSet(const char *name, const char *title, const RooArgSet &obs)
Create an empty dataset to hold the events that will be generated.
Bool_t isVerbose() const
RooArgSet * _theEvent
RooAbsPdf::ExtendMode _extendMode
virtual StyleOption defaultPrintStyle(Option_t *opt) const
Define default print style.
virtual Int_t defaultPrintContents(Option_t *opt) const
Define default contents when printing.
Bool_t isValid() const
virtual void printTitle(std::ostream &os) const
Print title of context.
virtual void attach(const RooArgSet &params)
Interface to attach given parameters to object in this context.
RooDataSet * _genData
virtual void printMultiline(std::ostream &os, Int_t contents, Bool_t verbose=kFALSE, TString indent="") const
Interface for multi-line printing.
void setVerbose(Bool_t verbose=kTRUE)
virtual void printName(std::ostream &os) const
Print name of context.
virtual void initGenerator(const RooArgSet &theEvent)
Interface function to initialize context for generation for given set of observables.
const RooDataSet * _prototype
virtual void Print(Option_t *options=0) const
Print TNamed name and title.
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...
RooAbsGenContext(const RooAbsPdf &model, const RooArgSet &vars, const RooDataSet *prototype=0, const RooArgSet *auxProto=0, Bool_t _verbose=kFALSE)
Constructor.
void resampleData(Double_t &ratio)
Rescale existing output buffer with given ratio.
virtual void generateEvent(RooArgSet &theEvent, Int_t remaining)=0
virtual void setExpectedData(Bool_t)
virtual void printArgs(std::ostream &os) const
Print arguments of context, i.e. the observables being generated in this context.
virtual void printClassName(std::ostream &os) const
Print class 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 ~RooAbsGenContext()
Destructor.
RooArgSet is a container object that can hold multiple RooAbsArg objects.
Definition: RooArgSet.h:28
RooDataSet is a container class to hold unbinned data.
Definition: RooDataSet.h:31
RooPlotable is a 'mix-in' base class that define the standard RooFit plotting and printing methods.
Definition: RooPrintable.h:25
static std::ostream & defaultPrintStream(std::ostream *os=0)
Return a reference to the current default stream to use in Print().
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,...
The TNamed class is the base class for all named ROOT classes.
Definition: TNamed.h:29
Basic string class.
Definition: TString.h:131