ra4_stats  0341147a0dc35f80f4e12c6003afb76a38e2ed6e
test_agnostic.cxx
Go to the documentation of this file.
1 #include <string>
2 
3 #include "RooWorkspace.h"
4 #include "RooPoisson.h"
5 #include "RooDataSet.h"
6 #include "RooRealVar.h"
7 
8 #include "RooStats/ModelConfig.h"
9 
10 using namespace std;
11 
12 namespace{
13  double a = 120;
14  double b = 80;
15  double c = 40;
16  double d = 30;
17  double e = 20;
18  double f = 10;
19 }
20 
21 int main(){
22  double N = a+b+c+d+e+f;
23  double rx1 = (b+e)/(a+d);
24  double rx2 = (c+f)/(a+d);
25  double ry1 = (d+e+f)/(a+b+c);
26 
27  RooWorkspace w("w");
28  w.factory(("N["+to_string(N)+",0.001,"+to_string(max(10.*N,20.))+"]").c_str());
29  w.factory(("rx1["+to_string(rx1)+",0.001,10.]").c_str());
30  w.factory(("rx2["+to_string(rx2)+",0.001,10.]").c_str());
31  w.factory(("ry1["+to_string(ry1)+",0.001,10.]").c_str());
32  w.factory("s1_1[0.,-10.,10.]");
33  w.factory("s2_1[0.,-10.,10.]");
34  w.factory("sum::rxnorm(1.,rx1,rx2)");
35  w.factory("sum::rynorm(1.,ry1)");
36  w.factory("prod::rnorm(rxnorm,rynorm)");
37  w.factory("expr::rscale('N/rnorm',N,rnorm)");
38  w.factory("prod::bkg_a(rscale)");
39  w.factory("prod::bkg_b(rscale,rx1)");
40  w.factory("prod::bkg_c(rscale,rx2)");
41  w.factory("prod::bkg_d(rscale,ry1)");
42  w.factory("prod::bkg_e(rscale,rx1,ry1)");
43  w.factory("prod::bkg_f(rscale,rx2,ry1)");
44  w.factory("prod::sig_a(bkg_a)");
45  w.factory("prod::sig_b(bkg_b)");
46  w.factory("prod::sig_c(bkg_c)");
47  w.factory("prod::sig_d(bkg_d)");
48  w.factory("expr::ms1_1('exp(s1_1)',s1_1)");
49  w.factory("expr::ms2_1('exp(s2_1)',s2_1)");
50  w.factory("prod::sig_e(bkg_e,ms1_1)");
51  w.factory("prod::sig_f(bkg_f,ms2_1)");
52  w.factory(("obsa["+to_string(a)+"]").c_str());
53  w.factory(("obsb["+to_string(b)+"]").c_str());
54  w.factory(("obsc["+to_string(c)+"]").c_str());
55  w.factory(("obsd["+to_string(d)+"]").c_str());
56  w.factory(("obse["+to_string(e)+"]").c_str());
57  w.factory(("obsf["+to_string(f)+"]").c_str());
58  w.factory("RooPoisson::nulla(obsa,bkg_a)");
59  (static_cast<RooPoisson*>(w.pdf("nulla")))->setNoRounding();
60  w.factory("RooPoisson::nullb(obsb,bkg_b)");
61  (static_cast<RooPoisson*>(w.pdf("nullb")))->setNoRounding();
62  w.factory("RooPoisson::nullc(obsc,bkg_c)");
63  (static_cast<RooPoisson*>(w.pdf("nullc")))->setNoRounding();
64  w.factory("RooPoisson::nulld(obsd,bkg_d)");
65  (static_cast<RooPoisson*>(w.pdf("nulld")))->setNoRounding();
66  w.factory("RooPoisson::nulle(obse,bkg_e)");
67  (static_cast<RooPoisson*>(w.pdf("nulle")))->setNoRounding();
68  w.factory("RooPoisson::nullf(obsf,bkg_f)");
69  (static_cast<RooPoisson*>(w.pdf("nullf")))->setNoRounding();
70  w.factory("RooPoisson::alta(obsa,sig_a)");
71  (static_cast<RooPoisson*>(w.pdf("alta")))->setNoRounding();
72  w.factory("RooPoisson::altb(obsb,sig_b)");
73  (static_cast<RooPoisson*>(w.pdf("altb")))->setNoRounding();
74  w.factory("RooPoisson::altc(obsc,sig_c)");
75  (static_cast<RooPoisson*>(w.pdf("altc")))->setNoRounding();
76  w.factory("RooPoisson::altd(obsd,sig_d)");
77  (static_cast<RooPoisson*>(w.pdf("altd")))->setNoRounding();
78  w.factory("RooPoisson::alte(obse,sig_e)");
79  (static_cast<RooPoisson*>(w.pdf("alte")))->setNoRounding();
80  w.factory("RooPoisson::altf(obsf,sig_f)");
81  (static_cast<RooPoisson*>(w.pdf("altf")))->setNoRounding();
82  w.factory("RooGaussian::pdfx(x[0.,-10.,10.],0.,1.)");
83  w.factory("PROD::model_b(nulla,nullb,nullc,nulld,nulle,nullf,pdfx)");
84  w.factory("PROD::model_s(alta,altb,altc,altd,alte,altf,pdfx)");
85  w.defineSet("POI","s1_1,s2_1");
86  w.defineSet("nuisances","N,rx1,rx2,ry1,x");
87  w.defineSet("observables","obsa,obsb,obsc,obsd,obse,obsf");
88  w.defineSet("globalObservables", "");
89  RooDataSet data("data_obs", "data_obs", *w.set("observables"));
90  data.add(*w.set("observables"));
91  w.import(data);
92 
93  RooStats::ModelConfig model_config("ModelConfig", &w);
94  model_config.SetPdf(*w.pdf("model_s"));
95  model_config.SetParametersOfInterest(*w.set("POI"));
96  model_config.SetObservables(*w.set("observables"));
97  model_config.SetNuisanceParameters(*w.set("nuisances"));
98  model_config.SetGlobalObservables(*w.set("globalObservables"));
99 
100  RooStats::ModelConfig model_config_bonly("ModelConfig_bonly", &w);
101  model_config_bonly.SetPdf(*w.pdf("model_b"));
102  model_config_bonly.SetParametersOfInterest(*w.set("POI"));
103  model_config_bonly.SetObservables(*w.set("observables"));
104  model_config_bonly.SetNuisanceParameters(*w.set("nuisances"));
105  model_config_bonly.SetGlobalObservables(*w.set("globalObservables"));
106 
107  w.import(model_config);
108  w.import(model_config_bonly);
109 
110  w.writeToFile("agnostic.root");
111 }
STL namespace.
int main()