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 "RooDataSet.h"
00018 #include "RooGaussian.h"
00019 #include "RooProdPdf.h"
00020 #include "RooAddPdf.h"
00021 #include "RooPolynomial.h"
00022 #include "TCanvas.h"
00023 #include "RooPlot.h"
00024 #include "RooFitResult.h"
00025 using namespace RooFit ;
00026
00027
00028 class TestBasic312 : public RooFitTestUnit
00029 {
00030 public:
00031 TestBasic312(TFile* refFile, Bool_t writeRef, Int_t verbose) : RooFitTestUnit("Fit in multiple rectangular ranges",refFile,writeRef,verbose) {} ;
00032 Bool_t testCode() {
00033
00034
00035
00036
00037
00038 RooRealVar x("x","x",-10,10) ;
00039 RooRealVar y("y","y",-10,10) ;
00040
00041
00042 RooRealVar mx("mx","mx",1,-10,10) ;
00043 RooRealVar my("my","my",1,-10,10) ;
00044
00045 RooGaussian gx("gx","gx",x,mx,RooConst(1)) ;
00046 RooGaussian gy("gy","gy",y,my,RooConst(1)) ;
00047
00048 RooProdPdf sig("sig","sig",gx,gy) ;
00049
00050
00051 RooPolynomial px("px","px",x) ;
00052 RooPolynomial py("py","py",y) ;
00053 RooProdPdf bkg("bkg","bkg",px,py) ;
00054
00055
00056 RooRealVar f("f","f",0.,1.) ;
00057 RooAddPdf model("model","model",RooArgList(sig,bkg),f) ;
00058
00059
00060 RooDataSet* modelData = model.generate(RooArgSet(x,y),10000) ;
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080
00081
00082
00083 x.setRange("SB1",-10,+10) ;
00084 y.setRange("SB1",-10,0) ;
00085
00086 x.setRange("SB2",-10,0) ;
00087 y.setRange("SB2",0,+10) ;
00088
00089 x.setRange("SIG",0,+10) ;
00090 y.setRange("SIG",0,+10) ;
00091
00092 x.setRange("FULL",-10,+10) ;
00093 y.setRange("FULL",-10,+10) ;
00094
00095
00096
00097
00098
00099
00100 RooFitResult* r_sb1 = model.fitTo(*modelData,Range("SB1"),Save()) ;
00101
00102
00103 RooFitResult* r_sb2 = model.fitTo(*modelData,Range("SB2"),Save()) ;
00104
00105
00106
00107
00108
00109
00110
00111
00112 RooFitResult* r_sb12 = model.fitTo(*modelData,Range("SB1,SB2"),Save()) ;
00113
00114
00115 regResult(r_sb1,"rf312_fit_sb1") ;
00116 regResult(r_sb2,"rf312_fit_sb2") ;
00117 regResult(r_sb12,"rf312_fit_sb12") ;
00118
00119 delete modelData ;
00120
00121 return kTRUE ;
00122
00123 }
00124 } ;