1 |
#include "SusyScan.h"
|
2 |
#include "ConfigFile.h"
|
3 |
|
4 |
|
5 |
SusyScan::SusyScan()
|
6 |
{
|
7 |
SetPtr();
|
8 |
for (std::vector<double*>::iterator it=p.begin(); it!=p.end(); ++it)
|
9 |
**it = 0.;
|
10 |
}
|
11 |
SusyScan::SusyScan(const SusyScan& c)
|
12 |
{
|
13 |
SetPtr();
|
14 |
//std::cout<<Mzero<<"=m0, "<<Mhalf <<"=m12, " <<p.size()<<"<-this, c:"<<c.p.size()<<std::endl;
|
15 |
|
16 |
std::vector<double*>::iterator it=p.begin();
|
17 |
std::vector<double*>::const_iterator ct=c.p.begin();
|
18 |
for (; ct!=c.p.end(); ++it, ++ct)
|
19 |
**it = **ct;
|
20 |
}
|
21 |
|
22 |
|
23 |
SusyScan::SusyScan(std::string filename)
|
24 |
{
|
25 |
SetPtr();
|
26 |
ConfigFile config(filename);
|
27 |
Mzero = config.read<double>("Mzero", 0);
|
28 |
Mhalf = config.read<double>("Mhalf", 0);
|
29 |
Mu = config.read<double>("Mu", 0);
|
30 |
TanBeta = config.read<double>("TanBeta", 0);
|
31 |
Azero = config.read<double>("Azero", 0);
|
32 |
Run = config.read<double>("Run", 0);
|
33 |
background = config.read<double>("background", 0);
|
34 |
background_uncertainty = config.read<double>("background.uncertainty", 0);
|
35 |
data = config.read<double>("data", 0);
|
36 |
signal_JEC_UP = config.read<double>("signal.JEC_.UP", 0);
|
37 |
signal_JEC_DN = config.read<double>("signal.JEC_.DN", 0);
|
38 |
signal_MuIso_UP = config.read<double>("signal.MuIso_.UP", 0);
|
39 |
signal_MuIso_DN = config.read<double>("signal.MuIso_.DN", 0);
|
40 |
signal_kfactor_UP = config.read<double>("signal.kFactorUP", 0);
|
41 |
signal_kfactor_DN = config.read<double>("signal.kFactorDN", 0);
|
42 |
signal_PDF_UP = config.read<double>("signal.PDF.UP", 0);
|
43 |
signal_PDF_DN = config.read<double>("signal.PDF.DN", 0);
|
44 |
signal_XSPDF_UP = config.read<double>("signal.PDFXsec.UP", 0);
|
45 |
signal_XSPDF_DN = config.read<double>("signal.PDFXsec.DN", 0);
|
46 |
signal_kfactor = config.read<double>("signal.kFactor", 0);
|
47 |
|
48 |
signal_contamination = config.read<double>("signal.LO.signalregion.IsoMuon", 0) +
|
49 |
config.read<double>("signal.LO.signalregion.Tau", 0);
|
50 |
signal = config.read<double>("signal.LO", 0);
|
51 |
signal_uncertainty = config.read<double>("signal.LO.uncertainty", 0);
|
52 |
Xsection = config.read<double>("Xsection", 0);
|
53 |
ExpXsecLimit = config.read<double>("LO.ExpXsecLimit", 0);
|
54 |
ObsXsecLimit = config.read<double>("LO.ObsXsecLimit", 0);
|
55 |
ExpNsigLimit = config.read<double>("LO.ExpNsigLimit", 0);
|
56 |
ObsNsigLimit = config.read<double>("LO.ObsNsigLimit", 0);
|
57 |
lnQ_b_exp = config.read<double>("LO.-2lnQ_b@exp", 0);
|
58 |
lnQ_b_obs = config.read<double>("LO.-2lnQ_b@obs", 0);
|
59 |
lnQ_b_xsec = config.read<double>("LO.-2lnQ_b@xsec", 0);
|
60 |
lnQ_sb_exp = config.read<double>("LO.-2lnQ_sb@exp", 0);
|
61 |
lnQ_sb_obs = config.read<double>("LO.-2lnQ_sb@obs", 0);
|
62 |
lnQ_sb_xsec = config.read<double>("LO.-2lnQ_sb@xsec", 0);
|
63 |
CLb_b_exp = config.read<double>("LO.CLb_b@exp", 0);
|
64 |
CLb_b_obs = config.read<double>("LO.CLb_b@obs", 0);
|
65 |
CLb_b_xsec = config.read<double>("LO.CLb_b@xsec", 0);
|
66 |
CLs_exp = config.read<double>("LO.CLs@exp", 0);
|
67 |
CLs_obs = config.read<double>("LO.CLs@obs", 0);
|
68 |
CLs_xsec = config.read<double>("LO.CLs@xsec", 0);
|
69 |
CLs_bNoSig_xsec=config.read<double>("LO.CLs_b_DataNoSignalHyp@xsec", 0);
|
70 |
CLs_b_exp = config.read<double>("LO.CLs_b@exp", 0);
|
71 |
CLs_b_obs = config.read<double>("LO.CLs_b@obs", 0);
|
72 |
CLs_b_xsec = config.read<double>("LO.CLs_b@xsec", 0);
|
73 |
CLs_b_n1_exp = config.read<double>("LO.CLs_b_n1@exp", 0);
|
74 |
CLs_b_n1_obs = config.read<double>("LO.CLs_b_n1@obs", 0);
|
75 |
CLs_b_n1_xsec = config.read<double>("LO.CLs_b_n1@xsec", 0);
|
76 |
CLs_b_n2_exp = config.read<double>("LO.CLs_b_n2@exp", 0);
|
77 |
CLs_b_n2_obs = config.read<double>("LO.CLs_b_n2@obs", 0);
|
78 |
CLs_b_n2_xsec = config.read<double>("LO.CLs_b_n2@xsec", 0);
|
79 |
CLs_b_p1_exp = config.read<double>("LO.CLs_b_p1@exp", 0);
|
80 |
CLs_b_p1_obs = config.read<double>("LO.CLs_b_p1@obs", 0);
|
81 |
CLs_b_p1_xsec = config.read<double>("LO.CLs_b_p1@xsec", 0);
|
82 |
CLs_b_p2_exp = config.read<double>("LO.CLs_b_p2@exp", 0);
|
83 |
CLs_b_p2_obs = config.read<double>("LO.CLs_b_p2@obs", 0);
|
84 |
CLs_b_p2_xsec = config.read<double>("LO.CLs_b_p2@xsec", 0);
|
85 |
CLsb_b_exp = config.read<double>("LO.CLsb_b@exp", 0);
|
86 |
CLsb_b_obs = config.read<double>("LO.CLsb_b@obs", 0);
|
87 |
CLsb_b_xsec = config.read<double>("LO.CLsb_b@xsec", 0);
|
88 |
PLExpXsecLimit= config.read<double>("RooSimpleProfile.xsec.LO.ExpUpperLimit", 0);
|
89 |
PLObsXsecLimit= config.read<double>("RooSimpleProfile.xsec.LO.ObsUpperLimit", 0);
|
90 |
PLExpNsigLimit= config.read<double>("RooSimpleProfile.signal.LO.ExpUpperLimit", 0);
|
91 |
PLObsNsigLimit= config.read<double>("RooSimpleProfile.signal.LO.ObsUpperLimit", 0);
|
92 |
FCExpXsecLimit= config.read<double>("RooFC.xsec.LO.ExpUpperLimit", 0);
|
93 |
FCObsXsecLimit= config.read<double>("RooFC.xsec.LO.ObsUpperLimit", 0);
|
94 |
FCExpNsigLimit= config.read<double>("RooFC.signal.LO.ExpUpperLimit", 0);
|
95 |
FCObsNsigLimit= config.read<double>("RooFC.signal.LO.ObsUpperLimit", 0);
|
96 |
MCMCExpXsecLimit= config.read<double>("RooMCMC.xsec.LO.ExpUpperLimit", 0);
|
97 |
MCMCObsXsecLimit= config.read<double>("RooMCMC.xsec.LO.ObsUpperLimit", 0);
|
98 |
MCMCExpNsigLimit= config.read<double>("RooMCMC.signal.LO.ExpUpperLimit", 0);
|
99 |
MCMCObsNsigLimit= config.read<double>("RooMCMC.signal.LO.ObsUpperLimit", 0);
|
100 |
|
101 |
NLO_signal_contamination = config.read<double>("signal.NLO.signalregion.IsoMuon", 0) +
|
102 |
config.read<double>("signal.NLO.signalregion.Tau", 0);
|
103 |
NLO_signal = config.read<double>("signal.NLO", 0);
|
104 |
NLO_signal_uncertainty = config.read<double>("signal.NLO.uncertainty", 0);
|
105 |
NLO_ExpXsecLimit = config.read<double>("NLO.ExpXsecLimit", 0);
|
106 |
NLO_ObsXsecLimit = config.read<double>("NLO.ObsXsecLimit", 0);
|
107 |
NLO_ExpNsigLimit = config.read<double>("NLO.ExpNsigLimit", 0);
|
108 |
NLO_ObsNsigLimit = config.read<double>("NLO.ObsNsigLimit", 0);
|
109 |
NLO_lnQ_b_exp = config.read<double>("NLO.-2lnQ_b@exp", 0);
|
110 |
NLO_lnQ_b_obs = config.read<double>("NLO.-2lnQ_b@obs", 0);
|
111 |
NLO_lnQ_b_xsec = config.read<double>("NLO.-2lnQ_b@xsec", 0);
|
112 |
NLO_lnQ_sb_exp = config.read<double>("NLO.-2lnQ_sb@exp", 0);
|
113 |
NLO_lnQ_sb_obs = config.read<double>("NLO.-2lnQ_sb@obs", 0);
|
114 |
NLO_lnQ_sb_xsec = config.read<double>("NLO.-2lnQ_sb@xsec", 0);
|
115 |
NLO_CLb_b_exp = config.read<double>("NLO.CLb_b@exp", 0);
|
116 |
NLO_CLb_b_obs = config.read<double>("NLO.CLb_b@obs", 0);
|
117 |
NLO_CLb_b_xsec = config.read<double>("NLO.CLb_b@xsec", 0);
|
118 |
NLO_CLs_exp = config.read<double>("NLO.CLs@exp", 0);
|
119 |
NLO_CLs_obs = config.read<double>("NLO.CLs@obs", 0);
|
120 |
NLO_CLs_xsec = config.read<double>("NLO.CLs@xsec", 0);
|
121 |
NLOHybrid_CLs_xsec = config.read<double>("NLOHybrid_CLs@xsec", 0);
|
122 |
NLOHybrid_CLs_xsec_error = config.read<double>("NLOHybrid_CLs_error@xsec", 0);
|
123 |
NLO_CLs_bNoSig_xsec = config.read<double>("NLO.CLs_b_DataNoSignalHyp@xsec", 0);
|
124 |
NLO_CLs_b_exp = config.read<double>("NLO.CLs_b@exp", 0);
|
125 |
NLO_CLs_b_obs = config.read<double>("NLO.CLs_b@obs", 0);
|
126 |
NLO_CLs_b_xsec = config.read<double>("NLO.CLs_b@xsec", 0);
|
127 |
NLO_CLs_b_n1_exp = config.read<double>("NLO.CLs_b_n1@exp", 0);
|
128 |
NLO_CLs_b_n1_obs = config.read<double>("NLO.CLs_b_n1@obs", 0);
|
129 |
NLO_CLs_b_n1_xsec = config.read<double>("NLO.CLs_b_n1@xsec", 0);
|
130 |
NLO_CLs_b_n2_exp = config.read<double>("NLO.CLs_b_n2@exp", 0);
|
131 |
NLO_CLs_b_n2_obs = config.read<double>("NLO.CLs_b_n2@obs", 0);
|
132 |
NLO_CLs_b_n2_xsec = config.read<double>("NLO.CLs_b_n2@xsec", 0);
|
133 |
NLO_CLs_b_p1_exp = config.read<double>("NLO.CLs_b_p1@exp", 0);
|
134 |
NLO_CLs_b_p1_obs = config.read<double>("NLO.CLs_b_p1@obs", 0);
|
135 |
NLO_CLs_b_p1_xsec = config.read<double>("NLO.CLs_b_p1@xsec", 0);
|
136 |
NLO_CLs_b_p2_exp = config.read<double>("NLO.CLs_b_p2@exp", 0);
|
137 |
NLO_CLs_b_p2_obs = config.read<double>("NLO.CLs_b_p2@obs", 0);
|
138 |
NLO_CLs_b_p2_xsec = config.read<double>("NLO.CLs_b_p2@xsec", 0);
|
139 |
NLO_CLsb_b_exp = config.read<double>("NLO.CLsb_b@exp", 0);
|
140 |
NLO_CLsb_b_obs = config.read<double>("NLO.CLsb_b@obs", 0);
|
141 |
NLO_CLsb_b_xsec = config.read<double>("NLO.CLsb_b@xsec", 0);
|
142 |
NLO_PLExpXsecLimit= config.read<double>("RooSimpleProfile.xsec.NLO.ExpUpperLimit", 0);
|
143 |
NLO_PLObsXsecLimit= config.read<double>("RooSimpleProfile.xsec.NLO.ObsUpperLimit", 0);
|
144 |
NLO_PLExpNsigLimit= config.read<double>("RooSimpleProfile.signal.NLO.ExpUpperLimit", 0);
|
145 |
NLO_PLObsNsigLimit= config.read<double>("RooSimpleProfile.signal.NLO.ObsUpperLimit", 0);
|
146 |
NLO_FCExpXsecLimit= config.read<double>("RooFC.xsec.NLO.ExpUpperLimit", 0);
|
147 |
NLO_FCObsXsecLimit= config.read<double>("RooFC.xsec.NLO.ObsUpperLimit", 0);
|
148 |
NLO_FCExpNsigLimit= config.read<double>("RooFC.signal.NLO.ExpUpperLimit", 0);
|
149 |
NLO_FCObsNsigLimit= config.read<double>("RooFC.signal.NLO.ObsUpperLimit", 0);
|
150 |
NLO_MCMCExpXsecLimit= config.read<double>("RooMCMC.xsec.NLO.ExpUpperLimit", 0);
|
151 |
NLO_MCMCObsXsecLimit= config.read<double>("RooMCMC.xsec.NLO.ObsUpperLimit", 0);
|
152 |
NLO_MCMCExpNsigLimit= config.read<double>("RooMCMC.signal.NLO.ExpUpperLimit", 0);
|
153 |
NLO_MCMCObsNsigLimit= config.read<double>("RooMCMC.signal.NLO.ObsUpperLimit", 0);
|
154 |
}
|
155 |
|
156 |
void SusyScan::SetPtr()
|
157 |
{
|
158 |
if (p.size()!=0) return;
|
159 |
p.push_back( &Mzero);
|
160 |
p.push_back( &Mhalf);
|
161 |
p.push_back( &Mu);
|
162 |
p.push_back( &TanBeta);
|
163 |
p.push_back( &Azero);
|
164 |
p.push_back( &Run);
|
165 |
p.push_back( &data);
|
166 |
p.push_back( &Xsection);
|
167 |
p.push_back( &background);
|
168 |
p.push_back( &background_uncertainty);
|
169 |
p.push_back( &signal_JEC_UP);
|
170 |
p.push_back( &signal_JEC_DN);
|
171 |
p.push_back( &signal_MuIso_UP);
|
172 |
p.push_back( &signal_MuIso_DN);
|
173 |
p.push_back( &signal_kfactor_UP);
|
174 |
p.push_back( &signal_kfactor_DN);
|
175 |
p.push_back( &signal_PDF_UP);
|
176 |
p.push_back( &signal_PDF_DN);
|
177 |
p.push_back( &signal_XSPDF_UP);
|
178 |
p.push_back( &signal_XSPDF_DN);
|
179 |
p.push_back( &signal_kfactor);
|
180 |
p.push_back( &signal);
|
181 |
p.push_back( &signal_uncertainty);
|
182 |
p.push_back( &signal_contamination);
|
183 |
p.push_back( &ExpXsecLimit);
|
184 |
p.push_back( &ObsXsecLimit);
|
185 |
p.push_back( &ExpNsigLimit);
|
186 |
p.push_back( &ObsNsigLimit);
|
187 |
p.push_back( &lnQ_b_exp);
|
188 |
p.push_back( &lnQ_b_obs);
|
189 |
p.push_back( &lnQ_b_xsec);
|
190 |
p.push_back( &lnQ_sb_exp);
|
191 |
p.push_back( &lnQ_sb_obs);
|
192 |
p.push_back( &lnQ_sb_xsec);
|
193 |
p.push_back( &CLb_b_exp);
|
194 |
p.push_back( &CLb_b_obs);
|
195 |
p.push_back( &CLb_b_xsec);
|
196 |
p.push_back( &CLs_exp);
|
197 |
p.push_back( &CLs_obs);
|
198 |
p.push_back( &CLs_xsec);
|
199 |
p.push_back( &CLs_b_exp);
|
200 |
p.push_back( &CLs_bNoSig_xsec);
|
201 |
p.push_back( &CLs_b_obs);
|
202 |
p.push_back( &CLs_b_xsec);
|
203 |
p.push_back( &CLs_b_n1_exp);
|
204 |
p.push_back( &CLs_b_n1_obs);
|
205 |
p.push_back( &CLs_b_n1_xsec);
|
206 |
p.push_back( &CLs_b_n2_exp);
|
207 |
p.push_back( &CLs_b_n2_obs);
|
208 |
p.push_back( &CLs_b_n2_xsec);
|
209 |
p.push_back( &CLs_b_p1_exp);
|
210 |
p.push_back( &CLs_b_p1_obs);
|
211 |
p.push_back( &CLs_b_p1_xsec);
|
212 |
p.push_back( &CLs_b_p2_exp);
|
213 |
p.push_back( &CLs_b_p2_obs);
|
214 |
p.push_back( &CLs_b_p2_xsec);
|
215 |
p.push_back( &CLsb_b_exp);
|
216 |
p.push_back( &CLsb_b_obs);
|
217 |
p.push_back( &CLsb_b_xsec);
|
218 |
p.push_back( &PLExpXsecLimit);
|
219 |
p.push_back( &PLObsXsecLimit);
|
220 |
p.push_back( &PLExpNsigLimit);
|
221 |
p.push_back( &PLObsNsigLimit);
|
222 |
p.push_back( &FCExpXsecLimit);
|
223 |
p.push_back( &FCObsXsecLimit);
|
224 |
p.push_back( &FCExpNsigLimit);
|
225 |
p.push_back( &FCObsNsigLimit);
|
226 |
p.push_back( &MCMCExpXsecLimit);
|
227 |
p.push_back( &MCMCObsXsecLimit);
|
228 |
p.push_back( &MCMCExpNsigLimit);
|
229 |
p.push_back( &MCMCObsNsigLimit);
|
230 |
p.push_back( &NLO_signal);
|
231 |
p.push_back( &NLO_signal_uncertainty);
|
232 |
p.push_back( &NLO_signal_contamination);
|
233 |
p.push_back( &NLO_ExpXsecLimit);
|
234 |
p.push_back( &NLO_ObsXsecLimit);
|
235 |
p.push_back( &NLO_ExpNsigLimit);
|
236 |
p.push_back( &NLO_ObsNsigLimit);
|
237 |
p.push_back( &NLO_lnQ_b_exp);
|
238 |
p.push_back( &NLO_lnQ_b_obs);
|
239 |
p.push_back( &NLO_lnQ_b_xsec);
|
240 |
p.push_back( &NLO_lnQ_sb_exp);
|
241 |
p.push_back( &NLO_lnQ_sb_obs);
|
242 |
p.push_back( &NLO_lnQ_sb_xsec);
|
243 |
p.push_back( &NLO_CLb_b_exp);
|
244 |
p.push_back( &NLO_CLb_b_obs);
|
245 |
p.push_back( &NLO_CLb_b_xsec);
|
246 |
p.push_back( &NLO_CLs_exp);
|
247 |
p.push_back( &NLO_CLs_obs);
|
248 |
p.push_back( &NLOHybrid_CLs_xsec);
|
249 |
p.push_back( &NLOHybrid_CLs_xsec_error);
|
250 |
p.push_back( &NLO_CLs_xsec);
|
251 |
p.push_back( &NLO_CLs_bNoSig_xsec);
|
252 |
p.push_back( &NLO_CLs_b_exp);
|
253 |
p.push_back( &NLO_CLs_b_obs);
|
254 |
p.push_back( &NLO_CLs_b_xsec);
|
255 |
p.push_back( &NLO_CLs_b_n1_exp);
|
256 |
p.push_back( &NLO_CLs_b_n1_obs);
|
257 |
p.push_back( &NLO_CLs_b_n1_xsec);
|
258 |
p.push_back( &NLO_CLs_b_n2_exp);
|
259 |
p.push_back( &NLO_CLs_b_n2_obs);
|
260 |
p.push_back( &NLO_CLs_b_n2_xsec);
|
261 |
p.push_back( &NLO_CLs_b_p1_exp);
|
262 |
p.push_back( &NLO_CLs_b_p1_obs);
|
263 |
p.push_back( &NLO_CLs_b_p1_xsec);
|
264 |
p.push_back( &NLO_CLs_b_p2_exp);
|
265 |
p.push_back( &NLO_CLs_b_p2_obs);
|
266 |
p.push_back( &NLO_CLs_b_p2_xsec);
|
267 |
p.push_back( &NLO_CLsb_b_exp);
|
268 |
p.push_back( &NLO_CLsb_b_obs);
|
269 |
p.push_back( &NLO_CLsb_b_xsec);
|
270 |
p.push_back( &NLO_PLExpXsecLimit);
|
271 |
p.push_back( &NLO_PLObsXsecLimit);
|
272 |
p.push_back( &NLO_PLExpNsigLimit);
|
273 |
p.push_back( &NLO_PLObsNsigLimit);
|
274 |
p.push_back( &NLO_FCExpXsecLimit);
|
275 |
p.push_back( &NLO_FCObsXsecLimit);
|
276 |
p.push_back( &NLO_FCExpNsigLimit);
|
277 |
p.push_back( &NLO_FCObsNsigLimit);
|
278 |
p.push_back( &NLO_MCMCExpXsecLimit);
|
279 |
p.push_back( &NLO_MCMCObsXsecLimit);
|
280 |
p.push_back( &NLO_MCMCExpNsigLimit);
|
281 |
p.push_back( &NLO_MCMCObsNsigLimit);
|
282 |
p.push_back( &M1);
|
283 |
p.push_back( &M2);
|
284 |
p.push_back( &M3);
|
285 |
p.push_back( &MGL);
|
286 |
p.push_back( &MUL);
|
287 |
p.push_back( &MB1);
|
288 |
p.push_back( &MSN);
|
289 |
p.push_back( &MNTAU);
|
290 |
p.push_back( &MZ1);
|
291 |
p.push_back( &MW1);
|
292 |
p.push_back( &MHL);
|
293 |
p.push_back( &MUR);
|
294 |
p.push_back( &MB2);
|
295 |
p.push_back( &MEL);
|
296 |
p.push_back( &MTAU1);
|
297 |
p.push_back( &MZ2);
|
298 |
p.push_back( &MW2);
|
299 |
p.push_back( &MHH);
|
300 |
p.push_back( &MDL);
|
301 |
p.push_back( &MT1);
|
302 |
p.push_back( &MER);
|
303 |
p.push_back( &MTAU2);
|
304 |
p.push_back( &MZ3);
|
305 |
p.push_back( &MHA);
|
306 |
p.push_back( &MDR);
|
307 |
p.push_back( &MT2);
|
308 |
p.push_back( &MZ4);
|
309 |
p.push_back( &MHp);
|
310 |
|
311 |
}
|
312 |
|
313 |
const SusyScan SusyScan::operator*(const double f) const
|
314 |
{
|
315 |
SusyScan res(*this);
|
316 |
for (std::vector<double*>::iterator it=res.p.begin(); it!=res.p.end(); ++it)
|
317 |
**it *= f;
|
318 |
return res;
|
319 |
}
|
320 |
|
321 |
const SusyScan SusyScan::operator+(const SusyScan& f) const
|
322 |
{
|
323 |
SusyScan res(*this);
|
324 |
std::vector<double*>::iterator it=res.p.begin();
|
325 |
std::vector<double*>::const_iterator fi= f.p.begin();
|
326 |
for (; it!=res.p.end(); ++it, ++fi)
|
327 |
**it += **fi;
|
328 |
return res;
|
329 |
}
|