00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 #ifndef __CINT__
00014 #include "RooGlobalFunc.h"
00015 #endif
00016 #include "RooRealVar.h"
00017 #include "RooDataHist.h"
00018 #include "RooGaussian.h"
00019 #include "RooConstVar.h"
00020 #include "RooAddPdf.h"
00021 #include "RooPlot.h"
00022 #include "TCanvas.h"
00023 #include "TAxis.h"
00024 #include "TAxis.h"
00025 using namespace RooFit ;
00026
00027
00028 void rf610_visualerror()
00029 {
00030
00031
00032
00033
00034 RooRealVar x("x","x",-10,10) ;
00035
00036 RooRealVar m("m","m",0,-10,10) ;
00037 RooRealVar s("s","s",2,1,50) ;
00038 RooGaussian sig("sig","sig",x,m,s) ;
00039
00040 RooRealVar m2("m2","m2",-1,-10,10) ;
00041 RooRealVar s2("s2","s2",6,1,50) ;
00042 RooGaussian bkg("bkg","bkg",x,m2,s2) ;
00043
00044 RooRealVar fsig("fsig","fsig",0.33,0,1) ;
00045 RooAddPdf model("model","model",RooArgList(sig,bkg),fsig) ;
00046
00047
00048 x.setBins(25) ;
00049 RooAbsData* d = model.generateBinned(x,1000) ;
00050
00051
00052 RooFitResult* r = model.fitTo(*d,Save()) ;
00053
00054
00055
00056
00057
00058
00059 RooPlot* frame = x.frame(Bins(40),Title("P.d.f with visualized 1-sigma error band")) ;
00060 d->plotOn(frame) ;
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079 model.plotOn(frame,VisualizeError(*r,1),FillColor(kOrange)) ;
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091 model.plotOn(frame,VisualizeError(*r,1,kFALSE),DrawOption("L"),LineWidth(2),LineColor(kRed)) ;
00092
00093
00094
00095 model.plotOn(frame,VisualizeError(*r,1),FillColor(kOrange),Components("bkg")) ;
00096 model.plotOn(frame,VisualizeError(*r,1,kFALSE),DrawOption("L"),LineWidth(2),LineColor(kRed),Components("bkg"),LineStyle(kDashed)) ;
00097
00098
00099 model.plotOn(frame) ;
00100 model.plotOn(frame,Components("bkg"),LineStyle(kDashed)) ;
00101 d->plotOn(frame) ;
00102 frame->SetMinimum(0) ;
00103
00104
00105
00106
00107
00108
00109 RooPlot* frame2 = x.frame(Bins(40),Title("Visualization of 2-sigma partial error from (m,m2)")) ;
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122 model.plotOn(frame2,VisualizeError(*r,RooArgSet(m,m2),2),FillColor(kCyan)) ;
00123 model.plotOn(frame2,Components("bkg"),VisualizeError(*r,RooArgSet(m,m2),2),FillColor(kCyan)) ;
00124
00125 model.plotOn(frame2) ;
00126 model.plotOn(frame2,Components("bkg"),LineStyle(kDashed)) ;
00127 frame2->SetMinimum(0) ;
00128
00129
00130
00131 RooPlot* frame3 = x.frame(Bins(40),Title("Visualization of 2-sigma partial error from (s,s2)")) ;
00132
00133
00134 model.plotOn(frame3,VisualizeError(*r,RooArgSet(s,s2),2),FillColor(kGreen)) ;
00135 model.plotOn(frame3,Components("bkg"),VisualizeError(*r,RooArgSet(s,s2),2),FillColor(kGreen)) ;
00136
00137 model.plotOn(frame3) ;
00138 model.plotOn(frame3,Components("bkg"),LineStyle(kDashed)) ;
00139 frame3->SetMinimum(0) ;
00140
00141
00142
00143 RooPlot* frame4 = x.frame(Bins(40),Title("Visualization of 2-sigma partial error from fsig")) ;
00144
00145
00146 model.plotOn(frame4,VisualizeError(*r,RooArgSet(fsig),2),FillColor(kMagenta)) ;
00147 model.plotOn(frame4,Components("bkg"),VisualizeError(*r,RooArgSet(fsig),2),FillColor(kMagenta)) ;
00148
00149 model.plotOn(frame4) ;
00150 model.plotOn(frame4,Components("bkg"),LineStyle(kDashed)) ;
00151 frame4->SetMinimum(0) ;
00152
00153
00154
00155 TCanvas* c = new TCanvas("rf610_visualerror","rf610_visualerror",800,800) ;
00156 c->Divide(2,2) ;
00157 c->cd(1) ; gPad->SetLeftMargin(0.15) ; frame->GetYaxis()->SetTitleOffset(1.4) ; frame->Draw() ;
00158 c->cd(2) ; gPad->SetLeftMargin(0.15) ; frame2->GetYaxis()->SetTitleOffset(1.6) ; frame2->Draw() ;
00159 c->cd(3) ; gPad->SetLeftMargin(0.15) ; frame3->GetYaxis()->SetTitleOffset(1.6) ; frame3->Draw() ;
00160 c->cd(4) ; gPad->SetLeftMargin(0.15) ; frame4->GetYaxis()->SetTitleOffset(1.6) ; frame4->Draw() ;
00161 }