00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef __CINT__
00013 #include "RooGlobalFunc.h"
00014 #endif
00015 #include "RooRealVar.h"
00016 #include "RooDataSet.h"
00017 #include "RooGaussian.h"
00018 #include "RooChebychev.h"
00019 #include "RooAddPdf.h"
00020 #include "RooMCStudy.h"
00021 #include "RooRandomizeParamMCSModule.h"
00022 #include "RooDLLSignificanceMCSModule.h"
00023 #include "RooPlot.h"
00024 #include "TCanvas.h"
00025 #include "TH1.h"
00026 #include "TDirectory.h"
00027
00028 using namespace RooFit ;
00029
00030
00031 class TestBasic803 : public RooFitTestUnit
00032 {
00033 public:
00034 TestBasic803(TFile* refFile, Bool_t writeRef, Int_t verbose) : RooFitTestUnit("MC Study with param rand. and Z calc",refFile,writeRef,verbose) {} ;
00035 Bool_t testCode() {
00036
00037
00038
00039
00040
00041
00042
00043
00044 RooRealVar mjjj("mjjj","m(3jet) (GeV)",100,85.,350.) ;
00045
00046
00047 RooRealVar mtop("mtop","m(top)",162) ;
00048 RooRealVar wtop("wtop","m(top) resolution",15.2) ;
00049 RooGaussian sig("sig","top signal",mjjj,mtop,wtop) ;
00050
00051
00052 RooRealVar c0("c0","Chebychev coefficient 0",-0.846,-1.,1.) ;
00053 RooRealVar c1("c1","Chebychev coefficient 1", 0.112,-1.,1.) ;
00054 RooRealVar c2("c2","Chebychev coefficient 2", 0.076,-1.,1.) ;
00055 RooChebychev bkg("bkg","combinatorial background",mjjj,RooArgList(c0,c1,c2)) ;
00056
00057
00058 RooRealVar nsig("nsig","number of signal events",53,0,1e3) ;
00059 RooRealVar nbkg("nbkg","number of background events",103,0,5e3) ;
00060 RooAddPdf model("model","model",RooArgList(sig,bkg),RooArgList(nsig,nbkg)) ;
00061
00062
00063
00064
00065
00066
00067
00068
00069 RooMCStudy* mcs = new RooMCStudy(model,mjjj,Binned(),Silence(),Extended(kTRUE),
00070 FitOptions(Extended(kTRUE),PrintEvalErrors(-1))) ;
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085 RooRandomizeParamMCSModule randModule ;
00086 randModule.sampleSumUniform(RooArgSet(nsig,nbkg),50,500) ;
00087 mcs->addModule(randModule) ;
00088
00089
00090
00091
00092
00093
00094
00095
00096 RooDLLSignificanceMCSModule sigModule(nsig,0) ;
00097 mcs->addModule(sigModule) ;
00098
00099
00100
00101
00102
00103
00104 mcs->generateAndFit(50) ;
00105
00106
00107 RooRealVar* ngen = (RooRealVar*) mcs->fitParDataSet().get()->find("ngen") ;
00108 RooRealVar* dll = (RooRealVar*) mcs->fitParDataSet().get()->find("dll_nullhypo_nsig") ;
00109 RooRealVar* z = (RooRealVar*) mcs->fitParDataSet().get()->find("significance_nullhypo_nsig") ;
00110 RooRealVar* nsigerr = (RooRealVar*) mcs->fitParDataSet().get()->find("nsigerr") ;
00111
00112 TH1* dll_vs_ngen = new TH2F("h_dll_vs_ngen" ,"",40,0,500,40,0,50) ;
00113 TH1* z_vs_ngen = new TH2F("h_z_vs_ngen" ,"",40,0,500,40,0,10) ;
00114 TH1* errnsig_vs_ngen = new TH2F("h_nsigerr_vs_ngen","",40,0,500,40,0,30) ;
00115 TH1* errnsig_vs_nsig = new TH2F("h_nsigerr_vs_nsig","",40,0,200,40,0,30) ;
00116
00117 mcs->fitParDataSet().fillHistogram(dll_vs_ngen,RooArgList(*ngen,*dll)) ;
00118 mcs->fitParDataSet().fillHistogram(z_vs_ngen,RooArgList(*ngen,*z)) ;
00119 mcs->fitParDataSet().fillHistogram(errnsig_vs_ngen,RooArgList(*ngen,*nsigerr)) ;
00120 mcs->fitParDataSet().fillHistogram(errnsig_vs_nsig,RooArgList(nsig,*nsigerr)) ;
00121
00122 regTH(dll_vs_ngen,"rf803_dll_vs_ngen") ;
00123 regTH(z_vs_ngen,"rf803_z_vs_ngen") ;
00124 regTH(errnsig_vs_ngen,"rf803_errnsig_vs_ngen") ;
00125 regTH(errnsig_vs_nsig,"rf803_errnsig_vs_nsig") ;
00126
00127 delete mcs ;
00128
00129 return kTRUE ;
00130
00131 }
00132 } ;
00133
00134
00135
00136