Logo ROOT  
Reference Guide
RooMCStudy.h
Go to the documentation of this file.
1 /*****************************************************************************
2  * Project: RooFit *
3  * Package: RooFitCore *
4  * File: $Id: RooMCStudy.h,v 1.18 2007/05/11 10:14:56 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_MC_STUDY
17 #define ROO_MC_STUDY
18 
19 #include "TList.h"
20 #include "TNamed.h"
21 #include "RooArgSet.h"
22 #include <list>
23 class RooAbsPdf;
24 class RooDataSet ;
25 class RooAbsData ;
26 class RooAbsGenContext ;
27 class RooFitResult ;
28 class RooPlot ;
29 class RooRealVar ;
30 class RooAbsMCStudyModule ;
31 
32 class RooMCStudy : public TNamed {
33 public:
34 
35  RooMCStudy(const RooAbsPdf& model, const RooArgSet& observables,
36  const RooCmdArg& arg1=RooCmdArg::none(), const RooCmdArg& arg2=RooCmdArg::none(),
37  const RooCmdArg& arg3=RooCmdArg::none(), const RooCmdArg& arg4=RooCmdArg::none(), const RooCmdArg& arg5=RooCmdArg::none(),
38  const RooCmdArg& arg6=RooCmdArg::none(), const RooCmdArg& arg7=RooCmdArg::none(), const RooCmdArg& arg8=RooCmdArg::none()) ;
39 
40  RooMCStudy(const RooAbsPdf& genModel, const RooAbsPdf& fitModel,
41  const RooArgSet& dependents, const char* genOptions="",
42  const char* fitOptions="", const RooDataSet* genProtoData=0,
43  const RooArgSet& projDeps=RooArgSet()) ;
44  virtual ~RooMCStudy() ;
45 
46  // Method to add study modules
48 
49 
50  // Run methods
51  Bool_t generateAndFit(Int_t nSamples, Int_t nEvtPerSample=0, Bool_t keepGenData=kFALSE, const char* asciiFilePat=0) ;
52  Bool_t generate(Int_t nSamples, Int_t nEvtPerSample=0, Bool_t keepGenData=kFALSE, const char* asciiFilePat=0) ;
53  Bool_t fit(Int_t nSamples, const char* asciiFilePat) ;
54  Bool_t fit(Int_t nSamples, TList& dataSetList) ;
55  Bool_t addFitResult(const RooFitResult& fr) ;
56 
57  // Result accessors
58  const RooArgSet* fitParams(Int_t sampleNum) const ;
59  const RooFitResult* fitResult(Int_t sampleNum) const ;
60  RooAbsData* genData(Int_t sampleNum) const ;
61  const RooDataSet& fitParDataSet() ;
62  /// Return a RooDataSet containing the pre-fit parameters of each toy cycle.
63  const RooDataSet* genParDataSet() const {
64  // Return dataset with generator parameters for each toy. When constraints are used these
65  // may generally not be the same
66  return _genParData ;
67  }
68 
69  // Plot methods
70  RooPlot* plotParamOn(RooPlot* frame, const RooCmdArg& arg1=RooCmdArg::none(), const RooCmdArg& arg2=RooCmdArg::none(),
71  const RooCmdArg& arg3=RooCmdArg::none(), const RooCmdArg& arg4=RooCmdArg::none(),
72  const RooCmdArg& arg5=RooCmdArg::none(), const RooCmdArg& arg6=RooCmdArg::none(),
73  const RooCmdArg& arg7=RooCmdArg::none(), const RooCmdArg& arg8=RooCmdArg::none()) ;
74  RooPlot* plotParam(const RooRealVar& param, const RooCmdArg& arg1=RooCmdArg::none(), const RooCmdArg& arg2=RooCmdArg::none(),
75  const RooCmdArg& arg3=RooCmdArg::none(), const RooCmdArg& arg4=RooCmdArg::none(),
76  const RooCmdArg& arg5=RooCmdArg::none(), const RooCmdArg& arg6=RooCmdArg::none(),
77  const RooCmdArg& arg7=RooCmdArg::none(), const RooCmdArg& arg8=RooCmdArg::none()) ;
78  RooPlot* plotParam(const char* paramName, const RooCmdArg& arg1=RooCmdArg::none(), const RooCmdArg& arg2=RooCmdArg::none(),
79  const RooCmdArg& arg3=RooCmdArg::none(), const RooCmdArg& arg4=RooCmdArg::none(),
80  const RooCmdArg& arg5=RooCmdArg::none(), const RooCmdArg& arg6=RooCmdArg::none(),
81  const RooCmdArg& arg7=RooCmdArg::none(), const RooCmdArg& arg8=RooCmdArg::none()) ;
82  RooPlot* plotNLL(const RooCmdArg& arg1=RooCmdArg::none(), const RooCmdArg& arg2=RooCmdArg::none(),
83  const RooCmdArg& arg3=RooCmdArg::none(), const RooCmdArg& arg4=RooCmdArg::none(),
84  const RooCmdArg& arg5=RooCmdArg::none(), const RooCmdArg& arg6=RooCmdArg::none(),
85  const RooCmdArg& arg7=RooCmdArg::none(), const RooCmdArg& arg8=RooCmdArg::none()) ;
86  RooPlot* plotError(const RooRealVar& param, const RooCmdArg& arg1=RooCmdArg::none(), const RooCmdArg& arg2=RooCmdArg::none(),
87  const RooCmdArg& arg3=RooCmdArg::none(), const RooCmdArg& arg4=RooCmdArg::none(),
88  const RooCmdArg& arg5=RooCmdArg::none(), const RooCmdArg& arg6=RooCmdArg::none(),
89  const RooCmdArg& arg7=RooCmdArg::none(), const RooCmdArg& arg8=RooCmdArg::none()) ;
90  RooPlot* plotPull(const RooRealVar& param, const RooCmdArg& arg1, const RooCmdArg& arg2=RooCmdArg::none(),
91  const RooCmdArg& arg3=RooCmdArg::none(), const RooCmdArg& arg4=RooCmdArg::none(),
92  const RooCmdArg& arg5=RooCmdArg::none(), const RooCmdArg& arg6=RooCmdArg::none(),
93  const RooCmdArg& arg7=RooCmdArg::none(), const RooCmdArg& arg8=RooCmdArg::none()) ;
94 
95 
96  RooPlot* plotNLL(Double_t lo, Double_t hi, Int_t nBins=100) ;
97  RooPlot* plotError(const RooRealVar& param, Double_t lo, Double_t hi, Int_t nbins=100) ;
98  RooPlot* plotPull(const RooRealVar& param, Double_t lo=-3.0, Double_t hi=3.0, Int_t nbins=25, Bool_t fitGauss=kFALSE) ;
99 
100 protected:
101 
102  friend class RooAbsMCStudyModule ;
103 
104  RooPlot* makeFrameAndPlotCmd(const RooRealVar& param, RooLinkedList& cmdList, Bool_t symRange=kFALSE) const ;
105 
106  Bool_t run(Bool_t generate, Bool_t fit, Int_t nSamples, Int_t nEvtPerSample, Bool_t keepGenData, const char* asciiFilePat) ;
109 
110  void calcPulls() ;
111 
112  RooAbsData* _genSample ; // Currently generated sample
113  RooAbsPdf* _genModel ; // Generator model
114  RooAbsGenContext* _genContext ; // Generator context
115  RooArgSet* _genInitParams ; // List of original generator parameters
116  RooArgSet* _genParams ; // List of actual generator parameters
117  const RooDataSet* _genProtoData ; // Generator prototype data set
118  RooArgSet _projDeps ; // List of projected dependents in fit
119 
120  RooAbsPdf* _constrPdf ; // Constraints p.d.f
121  RooAbsGenContext* _constrGenContext ; // Generator context for constraints p.d.f
122 
123  RooArgSet _dependents ; // List of dependents
124  RooArgSet _allDependents ; // List of generate + prototype dependents
125  RooAbsPdf* _fitModel ; // Fit model
126  RooArgSet* _fitInitParams ; // List of initial values of fit parameters
127  RooArgSet* _fitParams ; // List of actual fit parameters
130 
131  TList _genDataList ; // List of generated data sample
132  TList _fitResList ; // List of RooFitResult fit output objects
133  RooDataSet* _genParData ; // List of of generated parameters of each sample
134  RooDataSet* _fitParData ; // Data set of fit parameters of each sample
135  TString _fitOptions ; // Fit options string
136  RooLinkedList _fitOptList ; // Fit option command list
137  Bool_t _extendedGen ; // Add poisson term to number of events to generate?
138  Bool_t _binGenData ; // Bin data between generating and fitting
139  Double_t _nExpGen ; // Number of expected events to generate in extended mode
140  Bool_t _randProto ; // Randomize order of prototype data access
141 
142  Bool_t _canAddFitResults ; // Allow adding of external fit results?
143  Bool_t _verboseGen ; // Verbose generation?
144  Bool_t _perExptGenParams ; // Do generation parameter change per event?
145  Bool_t _silence ; // Silent running mode?
146 
147  std::list<RooAbsMCStudyModule*> _modList ; // List of additional study modules ;
148 
149  // Utilities for modules ;
151  void resetFitParams() ;
152  virtual void RecursiveRemove(TObject *obj);
153 
154 private:
155 
156  RooMCStudy(const RooMCStudy&) ;
157 
158  ClassDef(RooMCStudy,0) // A general purpose toy Monte Carlo study manager
159 } ;
160 
161 
162 #endif
163 
RooCmdArg
Definition: RooCmdArg.h:27
RooMCStudy::_binGenData
Bool_t _binGenData
Definition: RooMCStudy.h:138
RooMCStudy::plotParam
RooPlot * plotParam(const RooRealVar &param, 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())
Plot the distribution of the fitted value of the given parameter on a newly created frame.
Definition: RooMCStudy.cxx:1116
RooAbsData
Definition: RooAbsData.h:46
RooMCStudy::RecursiveRemove
virtual void RecursiveRemove(TObject *obj)
If one of the TObject we have a referenced to is deleted, remove the reference.
Definition: RooMCStudy.cxx:1416
RooArgSet.h
RooMCStudy::_fitModel
RooAbsPdf * _fitModel
Definition: RooMCStudy.h:125
RooMCStudy::fitResult
const RooFitResult * fitResult(Int_t sampleNum) const
Return the RooFitResult of the fit with the given run number.
Definition: RooMCStudy.cxx:1019
RooMCStudy::fitParams
const RooArgSet * fitParams(Int_t sampleNum) const
Return an argset with the fit parameters for the given sample number.
Definition: RooMCStudy.cxx:1001
RooMCStudy
Definition: RooMCStudy.h:32
TNamed.h
RooMCStudy::plotPull
RooPlot * plotPull(const RooRealVar &param, 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())
Plot the distribution of pull values for the specified parameter on a newly created frame.
Definition: RooMCStudy.cxx:1217
RooMCStudy::genData
RooAbsData * genData(Int_t sampleNum) const
Return the given generated dataset.
Definition: RooMCStudy.cxx:1044
RooMCStudy::_allDependents
RooArgSet _allDependents
Definition: RooMCStudy.h:124
RooMCStudy::doFit
RooFitResult * doFit(RooAbsData *genSample)
Internal function. Performs actual fit according to specifications.
Definition: RooMCStudy.cxx:748
RooMCStudy::~RooMCStudy
virtual ~RooMCStudy()
Definition: RooMCStudy.cxx:422
RooMCStudy::_extendedGen
Bool_t _extendedGen
Definition: RooMCStudy.h:137
RooMCStudy::_canAddFitResults
Bool_t _canAddFitResults
Definition: RooMCStudy.h:142
RooMCStudy::_nExpGen
Double_t _nExpGen
Definition: RooMCStudy.h:139
RooMCStudy::_dependents
RooArgSet _dependents
Definition: RooMCStudy.h:123
RooMCStudy::resetFitParams
void resetFitParams()
Reset all fit parameters to the initial model parameters at the time of the RooMCStudy constructor.
Definition: RooMCStudy.cxx:738
TList.h
RooMCStudy::run
Bool_t run(Bool_t generate, Bool_t fit, Int_t nSamples, Int_t nEvtPerSample, Bool_t keepGenData, const char *asciiFilePat)
Run engine method.
Definition: RooMCStudy.cxx:466
RooMCStudy::_fitOptList
RooLinkedList _fitOptList
Definition: RooMCStudy.h:136
RooMCStudy::addFitResult
Bool_t addFitResult(const RooFitResult &fr)
Utility function to add fit result from external fit to this RooMCStudy and process its results throu...
Definition: RooMCStudy.cxx:880
RooMCStudy::_constrPdf
RooAbsPdf * _constrPdf
Definition: RooMCStudy.h:120
RooMCStudy::_fitParams
RooArgSet * _fitParams
Definition: RooMCStudy.h:127
TString
Definition: TString.h:136
RooAbsMCStudyModule::genSample
RooAbsData * genSample()
Definition: RooAbsMCStudyModule.h:85
RooCmdArg::none
static const RooCmdArg & none()
Return reference to null argument.
Definition: RooCmdArg.cxx:52
RooMCStudy::_perExptGenParams
Bool_t _perExptGenParams
Definition: RooMCStudy.h:144
RooMCStudy::plotNLL
RooPlot * plotNLL(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())
Plot the distribution of the -log(L) values on a newly created frame.
Definition: RooMCStudy.cxx:1150
bool
RooFitResult
Definition: RooFitResult.h:40
RooMCStudy::RooMCStudy
RooMCStudy(const RooAbsPdf &model, const RooArgSet &observables, 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())
Construct Monte Carlo Study Manager.
Definition: RooMCStudy.cxx:113
RooMCStudy::_nllVar
RooRealVar * _nllVar
Definition: RooMCStudy.h:128
hi
float type_of_call hi(const int &, const int &)
RooAbsMCStudyModule
Definition: RooAbsMCStudyModule.h:30
RooMCStudy::_genContext
RooAbsGenContext * _genContext
Definition: RooMCStudy.h:114
RooMCStudy::_fitInitParams
RooArgSet * _fitInitParams
Definition: RooMCStudy.h:126
RooMCStudy::refit
RooFitResult * refit(RooAbsData *genSample=0)
Redo fit on 'current' toy sample, or if genSample is not NULL do fit on given sample instead.
Definition: RooMCStudy.cxx:799
RooMCStudy::_randProto
Bool_t _randProto
Definition: RooMCStudy.h:140
TNamed
Definition: TNamed.h:29
kFALSE
const Bool_t kFALSE
Definition: RtypesCore.h:92
RooLinkedList
Definition: RooLinkedList.h:35
RooMCStudy::_silence
Bool_t _silence
Definition: RooMCStudy.h:145
RooPlot
Definition: RooPlot.h:44
RooAbsGenContext
Definition: RooAbsGenContext.h:26
RooMCStudy::fitParDataSet
const RooDataSet & fitParDataSet()
Return a RooDataSet containing the post-fit parameters of each toy cycle.
Definition: RooMCStudy.cxx:981
RooMCStudy::_modList
std::list< RooAbsMCStudyModule * > _modList
Definition: RooMCStudy.h:147
RooMCStudy::_constrGenContext
RooAbsGenContext * _constrGenContext
Definition: RooMCStudy.h:121
RooMCStudy::_genParData
RooDataSet * _genParData
Definition: RooMCStudy.h:133
RooMCStudy::_genInitParams
RooArgSet * _genInitParams
Definition: RooMCStudy.h:115
RooMCStudy::fitSample
Bool_t fitSample(RooAbsData *genSample)
Internal method.
Definition: RooMCStudy.cxx:826
RooMCStudy::fit
Bool_t fit(Int_t nSamples, const char *asciiFilePat)
Fit 'nSamples' datasets, which are read from ASCII files.
Definition: RooMCStudy.cxx:699
RooMCStudy::_verboseGen
Bool_t _verboseGen
Definition: RooMCStudy.h:143
RooMCStudy::plotParamOn
RooPlot * plotParamOn(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())
Plot the distribution of fitted values of a parameter.
Definition: RooMCStudy.cxx:1072
RooMCStudy::_fitParData
RooDataSet * _fitParData
Definition: RooMCStudy.h:134
Double_t
double Double_t
Definition: RtypesCore.h:59
RooMCStudy::_genModel
RooAbsPdf * _genModel
Definition: RooMCStudy.h:113
RooMCStudy::_genParams
RooArgSet * _genParams
Definition: RooMCStudy.h:116
RooMCStudy::_fitResList
TList _fitResList
Definition: RooMCStudy.h:132
RooMCStudy::plotError
RooPlot * plotError(const RooRealVar &param, 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())
Plot the distribution of the fit errors for the specified parameter on a newly created frame.
Definition: RooMCStudy.cxx:1174
RooMCStudy::_projDeps
RooArgSet _projDeps
Definition: RooMCStudy.h:118
TObject
Definition: TObject.h:37
ClassDef
#define ClassDef(name, id)
Definition: Rtypes.h:325
RooMCStudy::makeFrameAndPlotCmd
RooPlot * makeFrameAndPlotCmd(const RooRealVar &param, RooLinkedList &cmdList, Bool_t symRange=kFALSE) const
Internal function.
Definition: RooMCStudy.cxx:1276
RooMCStudy::generateAndFit
Bool_t generateAndFit(Int_t nSamples, Int_t nEvtPerSample=0, Bool_t keepGenData=kFALSE, const char *asciiFilePat=0)
Generate and fit 'nSamples' samples of 'nEvtPerSample' events.
Definition: RooMCStudy.cxx:660
RooDataSet
Definition: RooDataSet.h:33
RooMCStudy::addModule
void addModule(RooAbsMCStudyModule &module)
Insert given RooMCStudy add-on module to the processing chain of this MCStudy object.
Definition: RooMCStudy.cxx:445
RooMCStudy::calcPulls
void calcPulls()
Calculate the pulls for all fit parameters in the fit results data set, and add them to that dataset.
Definition: RooMCStudy.cxx:914
make_cnn_model.model
model
Definition: make_cnn_model.py:6
RooAbsPdf
Definition: RooAbsPdf.h:40
RooMCStudy::genParDataSet
const RooDataSet * genParDataSet() const
Return a RooDataSet containing the pre-fit parameters of each toy cycle.
Definition: RooMCStudy.h:63
launcher.module
module
Definition: launcher.py:31
RooMCStudy::generate
Bool_t generate(Int_t nSamples, Int_t nEvtPerSample=0, Bool_t keepGenData=kFALSE, const char *asciiFilePat=0)
Generate 'nSamples' samples of 'nEvtPerSample' events.
Definition: RooMCStudy.cxx:682
RooRealVar
Definition: RooRealVar.h:36
RooMCStudy::_genSample
RooAbsData * _genSample
Definition: RooMCStudy.h:112
RooMCStudy::_fitOptions
TString _fitOptions
Definition: RooMCStudy.h:135
RooMCStudy::_genDataList
TList _genDataList
Definition: RooMCStudy.h:131
RooMCStudy::_genProtoData
const RooDataSet * _genProtoData
Definition: RooMCStudy.h:117
RooMCStudy::_ngenVar
RooRealVar * _ngenVar
Definition: RooMCStudy.h:129
TList
Definition: TList.h:44
RooArgSet
Definition: RooArgSet.h:28
int