144 |
|
myfile.close(); |
145 |
|
} |
146 |
|
|
147 |
< |
void efficiency_scan_in_susy_space(string mcjzb, string datajzb, bool requireZ) { |
148 |
< |
cout << "Doing efficiency scan using " << (scansample.collection)[0].filename << endl; |
149 |
< |
geqleq="geq"; |
147 |
> |
void efficiency_scan_in_susy_space(string mcjzb, string datajzb, bool requireZ, float peakerror) { |
148 |
> |
dout << "Doing efficiency scan using " << (scansample.collection)[0].filename << endl; |
149 |
> |
geqleq="geq";/* |
150 |
|
automatized=true; |
151 |
|
mcjzbexpression=mcjzb; |
152 |
|
|
163 |
|
|
164 |
|
gStyle->SetPalette(100, MyPalette); |
165 |
|
|
166 |
– |
float mglustart=25;float mgluend=1200;float mglustep=25; //guessed values for official file |
167 |
– |
float mLSPstart=25;float mLSPend=1200;float mLSPstep=25; //guessed values for official file |
168 |
– |
// float mglustart=950;float mgluend=970;float mglustep=10; |
169 |
– |
// float mLSPstart=825;float mLSPend=900;float mLSPstep=10; |
170 |
– |
|
171 |
– |
|
166 |
|
TH2F *efficiencymap = new TH2F("efficiencymap","",(mgluend-mglustart)/mglustep+1,mglustart-0.5*mglustep,mgluend+0.5*mglustep,(mLSPend-mLSPstart)/mLSPstep+1,mLSPstart-0.5*mLSPstep,mLSPend+0.5*mLSPstep); |
167 |
< |
TH2F *Neventsmap = new TH2F("Neventsmap","",(mgluend-mglustart)/mglustep+1,mglustart-0.5*mglustep,mgluend+0.5*mglustep,(mLSPend-mLSPstart)/mLSPstep+1,mLSPstart-0.5*mLSPstep,mLSPend+0.5*mLSPstep); |
167 |
> |
TH2F *Neventsmap = new TH2F("Neventsmap","", (mgluend-mglustart)/mglustep+1,mglustart-0.5*mglustep,mgluend+0.5*mglustep,(mLSPend-mLSPstart)/mLSPstep+1,mLSPstart-0.5*mLSPstep,mLSPend+0.5*mLSPstep); |
168 |
|
|
169 |
|
float rightmargin=gStyle->GetPadRightMargin(); |
170 |
|
gStyle->SetPadRightMargin(0.14); |
179 |
|
addcut << "(TMath::Abs("<<massgluname<<"-"<<mglu<<")<5)&&(TMath::Abs("<<massLSPname<<"-"<<mlsp<<")<5)"; |
180 |
|
MCefficiency((scansample.collection)[0].events,result,resulterr,mcjzb,requireZ,addcut.str()); |
181 |
|
if(result!=result||isanyinf(result)) { |
182 |
< |
cout << "Watch out the result for mlsp=" << mlsp << " and mglu=" << mglu << " (" << result << ") has been detected as being not a number (nan) or infinity (inf) !" << endl; |
182 |
> |
dout << "Watch out the result for mlsp=" << mlsp << " and mglu=" << mglu << " (" << result << ") has been detected as being not a number (nan) or infinity (inf) !" << endl; |
183 |
|
result=0; // kicking nan and inf errors |
184 |
|
} |
185 |
|
efficiencymap->Fill(mglu,mlsp,result); |
199 |
|
Neventsmap->GetXaxis()->CenterTitle(); |
200 |
|
Neventsmap->GetYaxis()->SetTitle("m_{LSP}"); |
201 |
|
Neventsmap->GetYaxis()->CenterTitle(); |
202 |
< |
|
202 |
> |
|
203 |
|
efficiencymap->Draw("COLZ"); |
204 |
|
TText *title = write_title("Efficiency in LSP-Glu plane"); |
205 |
|
title->Draw(); |
206 |
|
CompleteSave(effcanvas,"SUSYScan/Efficency"); |
207 |
+ |
|
208 |
|
Neventsmap->Draw("COLZ"); |
209 |
|
TText *title2 = write_title("Number of events in LSP-Glu plane"); |
210 |
|
title2->Draw(); |
211 |
< |
CompleteSave(effcanvas,"SUSYScan/Nevents"); |
212 |
< |
gStyle->SetPadRightMargin(rightmargin); |
211 |
> |
CompleteSave(effcanvas,"SUSYScan/Nevents");*/ |
212 |
> |
} |
213 |
> |
|
214 |
> |
void scan_SUSY_parameter_space(string mcjzb,string datajzb,vector<float> jzb_cut,bool requireZ, float peakerror, int ibin) { |
215 |
> |
|
216 |
> |
jzbSel=jzb_cut[ibin]; |
217 |
> |
geqleq="geq"; |
218 |
> |
automatized=true; |
219 |
> |
mcjzbexpression=mcjzb; |
220 |
> |
|
221 |
> |
string massgluname="MassGlu"; |
222 |
> |
string massLSPname="MassLSP"; |
223 |
> |
|
224 |
> |
Int_t MyPalette[100]; |
225 |
> |
Double_t r[] = {0., 0.0, 1.0, 1.0, 1.0}; |
226 |
> |
Double_t g[] = {0., 0.0, 0.0, 1.0, 1.0}; |
227 |
> |
Double_t b[] = {0., 1.0, 0.0, 0.0, 1.0}; |
228 |
> |
Double_t stop[] = {0., .25, .50, .75, 1.0}; |
229 |
> |
Int_t FI = TColor::CreateGradientColorTable(5, stop, r, g, b, 110); |
230 |
> |
for (int i=0;i<100;i++) MyPalette[i] = FI+i; |
231 |
> |
|
232 |
> |
gStyle->SetPalette(100, MyPalette); |
233 |
> |
|
234 |
> |
TH2F *limitmap = new TH2F("limitmap","",(mgluend-mglustart)/mglustep+1,mglustart-0.5*mglustep,mgluend+0.5*mglustep,(mLSPend-mLSPstart)/mLSPstep+1,mLSPstart-0.5*mLSPstep,mLSPend+0.5*mLSPstep); |
235 |
> |
|
236 |
> |
float rightmargin=gStyle->GetPadRightMargin(); |
237 |
> |
gStyle->SetPadRightMargin(0.15); |
238 |
> |
|
239 |
> |
TCanvas *limcanvas = new TCanvas("limcanvas","Limit canvas"); |
240 |
> |
|
241 |
> |
for(int mglu=mglustart;mglu<=mgluend;mglu+=mglustep) { |
242 |
> |
for (int mlsp=mLSPstart;mlsp<=mLSPend&&mlsp<=mglu;mlsp+=mLSPstep) |
243 |
> |
{ |
244 |
> |
float result,resulterr; |
245 |
> |
stringstream addcut; |
246 |
> |
addcut << "(TMath::Abs("<<massgluname<<"-"<<mglu<<")<5)&&(TMath::Abs("<<massLSPname<<"-"<<mlsp<<")<5)"; |
247 |
> |
vector<vector<float> > systematics; |
248 |
> |
do_systematics_for_one_file((scansample.collection)[0].events,"SUSY SCAN", systematics,mcjzb,datajzb,peakerror,requireZ, addcut.str()); |
249 |
> |
float JZBcutat=systematics[0][0]; |
250 |
> |
float mceff=systematics[0][1]; |
251 |
> |
float toterr =systematics[0][4]; |
252 |
> |
if(mceff!=mceff||toterr!=toterr) { |
253 |
> |
dout << "Limits can't be calculated in this configuration as either the efficiency or its error are not numbers! (mceff="<<mceff<<" and toterr="<<toterr<<")"<< endl; |
254 |
> |
continue; |
255 |
> |
} |
256 |
> |
vector<float> sigmas = compute_one_upper_limit(mceff,toterr,ibin,mcjzb); |
257 |
> |
limitmap->Fill(mglu,mlsp,sigmas[0]); |
258 |
> |
dout << "A limit has been added at " << sigmas[0] << " for m_{glu}="<<mglu << " and m_{lsp}="<<mlsp<<endl; |
259 |
> |
} |
260 |
> |
} |
261 |
> |
|
262 |
> |
limitmap->GetXaxis()->SetTitle("m_{glu}"); |
263 |
> |
limitmap->GetXaxis()->CenterTitle(); |
264 |
> |
limitmap->GetYaxis()->SetTitle("m_{LSP}"); |
265 |
> |
limitmap->GetYaxis()->CenterTitle(); |
266 |
> |
|
267 |
> |
limitmap->GetXaxis()->SetTitle("m_{glu}"); |
268 |
> |
limitmap->GetXaxis()->CenterTitle(); |
269 |
> |
limitmap->GetYaxis()->SetTitle("m_{LSP}"); |
270 |
> |
limitmap->GetYaxis()->CenterTitle(); |
271 |
> |
|
272 |
> |
limcanvas->cd(); |
273 |
> |
limitmap->Draw("COLZ"); |
274 |
> |
TText *title = write_title("Limits in LSP-Glu plane"); |
275 |
> |
title->Draw(); |
276 |
> |
CompleteSave(limcanvas,"SUSYScan/Limits_JZB_geq"+any2string(jzb_cut[ibin])); |
277 |
|
} |
278 |
+ |
|
279 |
+ |
void scan_SUSY_parameter_space(string mcjzb,string datajzb,vector<float> jzb_cut,bool requireZ, float peakerror) { |
280 |
+ |
for(int ibin=0;ibin<jzb_cut.size();ibin++) { |
281 |
+ |
scan_SUSY_parameter_space(mcjzb,datajzb,jzb_cut,requireZ, peakerror, ibin); |
282 |
+ |
} |
283 |
+ |
} |