26 class RooAbsGenContext ;
30 class RooAbsMCStudyModule ;
32 class RooMCStudy :
public TNamed {
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()) ;
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() ;
47 void addModule(RooAbsMCStudyModule& module) ;
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) ;
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() ;
63 const RooDataSet* genParDataSet()
const {
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()) ;
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) ;
102 friend class RooAbsMCStudyModule ;
104 RooPlot* makeFrameAndPlotCmd(
const RooRealVar& param, RooLinkedList& cmdList, Bool_t symRange=kFALSE)
const ;
106 Bool_t run(Bool_t generate, Bool_t fit, Int_t nSamples, Int_t nEvtPerSample, Bool_t keepGenData,
const char* asciiFilePat) ;
107 Bool_t fitSample(RooAbsData* genSample) ;
108 RooFitResult* doFit(RooAbsData* genSample) ;
112 RooAbsData* _genSample ;
113 RooAbsPdf* _genModel ;
114 RooAbsGenContext* _genContext ;
115 RooArgSet* _genInitParams ;
116 RooArgSet* _genParams ;
117 const RooDataSet* _genProtoData ;
118 RooArgSet _projDeps ;
120 RooAbsPdf* _constrPdf ;
121 RooAbsGenContext* _constrGenContext ;
123 RooArgSet _dependents ;
124 RooArgSet _allDependents ;
125 RooAbsPdf* _fitModel ;
126 RooArgSet* _fitInitParams ;
127 RooArgSet* _fitParams ;
128 RooRealVar* _nllVar ;
129 RooRealVar* _ngenVar ;
133 RooDataSet* _genParData ;
134 RooDataSet* _fitParData ;
135 TString _fitOptions ;
136 RooLinkedList _fitOptList ;
137 Bool_t _extendedGen ;
142 Bool_t _canAddFitResults ;
144 Bool_t _perExptGenParams ;
147 std::list<RooAbsMCStudyModule*> _modList ;
150 RooFitResult* refit(RooAbsData* genSample=0) ;
151 void resetFitParams() ;
152 virtual void RecursiveRemove(TObject *obj);
156 RooMCStudy(
const RooMCStudy&) ;
158 ClassDef(RooMCStudy,0)