35 |
|
// Temporarily switch off PU reweighting, if asked |
36 |
|
TCut weightbackup=cutWeight; |
37 |
|
if ( !doPUreweighting ) cutWeight="1.0"; |
38 |
< |
|
38 |
> |
|
39 |
|
TCanvas *tempcan = new TCanvas("tempcan","Temporary canvas for peak finding preparations"); |
40 |
|
TH1F *rawJZBeemmMC = allsamples.Draw("rawJZBeemmMC",jzbvariablemc,100,-50,50, "JZB [GeV]", "events", cutmass&&cutOSSF&&cutnJets,mc, luminosity); |
41 |
|
TH1F *rawJZBeemmData = allsamples.Draw("rawJZBeemmData",jzbvariabledata,100, -50,50, "JZB [GeV]", "events", cutmass&&cutOSSF&&cutnJets,data, luminosity); |
269 |
|
TCut cut; |
270 |
|
cut=cutmass&&cutOSSF&&cutnJets&&ibasiccut; |
271 |
|
if(filename=="nJets") cut=cutmass&&cutOSSF&&ibasiccut; |
272 |
+ |
if(filename=="nJets_osof") cut=cutmass&&cutOSOF&&ibasiccut; |
273 |
|
if(filename=="nJets_nocuts_except_mll_ossf") cut=cutmass&&cutOSSF; |
274 |
|
if(filename=="mll") { |
275 |
|
cut=cutOSSF&&cutnJets&&ibasiccut; |
297 |
|
THStack mcstack = allsamples.DrawStack("mcstack",variable,nbins,min,max, xlabel, "events",cut,mc,luminosity); |
298 |
|
if(variable=="pfJetGoodPt[0]") datahisto->SetMaximum(10*datahisto->GetMaximum()); |
299 |
|
if(variable=="pt") datahisto->SetMaximum(10*datahisto->GetMaximum()); |
300 |
< |
if(filename=="mll_inclusive") datahisto->SetMinimum(1); |
300 |
> |
if(filename=="mll_inclusive"||filename=="mll_inclusive_mm"||filename=="mll_inclusive_ee") datahisto->SetMinimum(1); |
301 |
|
if(filename=="mll_osof") datahisto->SetMaximum(10*datahisto->GetMaximum()); |
302 |
|
if(filename=="mll_osof") datahisto->SetMinimum(9); |
302 |
– |
|
303 |
|
datahisto->SetMaximum(5.3*datahisto->GetMaximum()); |
304 |
|
datahisto->Draw("e1"); |
305 |
|
ckin->Update(); |
445 |
|
make_kin_plot("mll","",(int)((mll_hi-mll_low)),mll_low,mll_hi,dolog,"m_{ll} [GeV]","mll_inclusive",doPF,true); |
446 |
|
make_kin_plot("mll","",(int)((mll_hi-mll_low)),mll_low,mll_hi,dolog,"m_{ll} [GeV]","mll_inclusive_ee",doPF,true); |
447 |
|
make_kin_plot("mll","",(int)((mll_hi-mll_low)),mll_low,mll_hi,dolog,"m_{ll} [GeV]","mll_inclusive_mm",doPF,true); |
448 |
< |
make_kin_plot("mll","",(int)((mll_hi-mll_low)),mll_low,mll_hi,dolog,"m_{ll} [GeV]","mll_inclusive_osof",doPF,true); |
448 |
> |
make_kin_plot("mll","",(int)((mll_hi-mll_low))/2,mll_low,mll_hi,dolog,"m_{ll} [GeV]","mll_inclusive_osof",doPF,true); |
449 |
|
make_kin_plot("mll","",(int)((350-mll_low)),mll_low,350,dolog,"m_{ll} [GeV]","mll_inclusive_highrange",doPF); |
450 |
|
make_kin_plot("numVtx","",(int)(30.5-(-0.5)),-0.5,30.5,nolog,"N(Vtx)","numVtx",doPF); |
451 |
< |
make_kin_plot("jetpt[0]","",40,0,200,dolog,"leading jet p_{T} [GeV]","pfJetGoodPt_0",doPF); |
452 |
< |
make_kin_plot("jeteta[0]","",40,-5,5,nolog,"leading jet #eta","pfJetGoodEta_0",doPF); |
451 |
> |
// make_kin_plot("jetpt[0]","",40,0,200,dolog,"leading jet p_{T} [GeV]","pfJetGoodPt_0",doPF); |
452 |
> |
// make_kin_plot("jeteta[0]","",40,-5,5,nolog,"leading jet #eta","pfJetGoodEta_0",doPF); |
453 |
|
make_kin_plot("pt","",50,0,400,dolog,"Z p_{T} [GeV]","Zpt",doPF); |
454 |
|
make_kin_plot("pt1","",50,0,100,nolog,"p_{T} [GeV]","pt1",doPF); |
455 |
|
make_kin_plot("pt2","",50,0,100,nolog,"p_{T} [GeV]","pt2",doPF); |
456 |
|
make_kin_plot("eta1","",40,-5,5,nolog,"#eta_{l}","eta",doPF); |
457 |
|
make_kin_plot("jzb[1]","",100,-150,150,dolog,"JZB [GeV]","jzb_ossf",doPF); |
458 |
< |
make_kin_plot("pfJetGoodNum","",8,0.5,8.5,dolog,"nJets","nJets",doPF); |
459 |
< |
make_kin_plot("pfJetGoodNum","",8,0.5,8.5,dolog,"nJets","nJets_nocuts_except_mll_ossf",doPF); |
458 |
> |
make_kin_plot("pfJetGoodNum40","",9,-0.5,8.5,dolog,"nJets","nJets",doPF); |
459 |
> |
make_kin_plot("pfJetGoodNum40","",9,-0.5,8.5,dolog,"nJets","nJets_osof",doPF); |
460 |
> |
make_kin_plot("pfJetGoodNum40","",9,-0.5,8.5,dolog,"nJets","nJets_nocuts_except_mll_ossf",doPF); |
461 |
|
if(!doPF) make_special_mll_plot((int)((mll_hi-mll_low)/5),mll_low,mll_hi,dolog,"m_{ll} [GeV]"); |
462 |
|
stringstream jzbcut; |
463 |
|
jzbcut << "((is_data&&("<<datajzb<<")>100)||(!is_data&&("<<mcjzb<<")>100))"; |
934 |
|
|
935 |
|
TH1F *Bpred = (TH1F*)LcorrJZBeemm->Clone("Bpred"); |
936 |
|
TH1F *JBpred = (TH1F*)JLcorrJZBeemm->Clone("Bpred"); |
937 |
+ |
|
938 |
+ |
TH1F *BpredSys = (TH1F*)LcorrJZBeemm->Clone("Bpredsys"); |
939 |
+ |
ClearHisto(BpredSys); |
940 |
+ |
write_error(__FUNCTION__,"Implemented systematic error but NOT drawing it yet. Need to still implement drawing, particularly in ratio."); |
941 |
+ |
|
942 |
|
if(PlottingSetup::RestrictToMassPeak) { |
943 |
|
Bpred->Add(RcorrJZBem,1.0/3.); |
944 |
|
Bpred->Add(LcorrJZBem,-1.0/3.); |
961 |
|
JBpred->Add(JLcorrJZBSBem,-1.0/3.); |
962 |
|
JBpred->Add(JRcorrJZBSBeemm,1.0/3.); |
963 |
|
JBpred->Add(JLcorrJZBSBeemm,-1.0/3.); |
964 |
+ |
|
965 |
+ |
//Systematics: |
966 |
+ |
AddSquared(BpredSys,LcorrJZBeemm,zjetsestimateuncertONPEAK*zjetsestimateuncertONPEAK); |
967 |
+ |
AddSquared(BpredSys,RcorrJZBem,emuncertONPEAK*emuncertONPEAK*(1.0/9)); |
968 |
+ |
AddSquared(BpredSys,LcorrJZBem,emuncertONPEAK*emuncertONPEAK*(1.0/9)); |
969 |
+ |
AddSquared(BpredSys,RcorrJZBSBem,emsidebanduncertONPEAK*emsidebanduncertONPEAK*(1.0/9)); |
970 |
+ |
AddSquared(BpredSys,LcorrJZBSBem,emsidebanduncertONPEAK*emsidebanduncertONPEAK*(1.0/9)); |
971 |
+ |
AddSquared(BpredSys,RcorrJZBSBeemm,eemmsidebanduncertONPEAK*eemmsidebanduncertONPEAK*(1.0/9)); |
972 |
+ |
AddSquared(BpredSys,LcorrJZBSBeemm,eemmsidebanduncertONPEAK*eemmsidebanduncertONPEAK*(1.0/9)); |
973 |
|
} else { |
974 |
|
Bpred->Add(RcorrJZBem,1.0); |
975 |
|
Bpred->Add(LcorrJZBem,-1.0); |
979 |
|
//these are for the ratio |
980 |
|
JBpred->Add(JRcorrJZBem,1.0); |
981 |
|
JBpred->Add(JLcorrJZBem,-1.0); |
982 |
+ |
|
983 |
+ |
//Systematics |
984 |
+ |
AddSquared(BpredSys,LcorrJZBeemm,zjetsestimateuncertOFFPEAK*zjetsestimateuncertOFFPEAK); |
985 |
+ |
AddSquared(BpredSys,RcorrJZBem,emuncertOFFPEAK*emuncertOFFPEAK); |
986 |
+ |
AddSquared(BpredSys,LcorrJZBem,emuncertOFFPEAK*emuncertOFFPEAK); |
987 |
+ |
|
988 |
|
} |
989 |
|
|
990 |
< |
|
990 |
> |
SQRT(BpredSys); |
991 |
> |
|
992 |
|
|
993 |
|
flag_this_change(__FUNCTION__,__LINE__,true);//PlottingSetup::RestrictToMassPeak ---- prediction changed |
994 |
|
TH1F *Tpred = (TH1F*)RcorrJZBem->Clone("Bpred"); |
2122 |
|
CompleteSave(cancorr,"ResponseCorrection/Response_Correction_Illustration_Data"); |
2123 |
|
|
2124 |
|
TH2F *niceresponseplotm = new TH2F("niceresponseplotm","",100,0,600,100,0,5); |
2125 |
< |
(allsamples.collection)[allsamples.FindSample("DY")[0]].events->Draw("sumJetPt[1]/pt:pt>>niceresponseplotm",zptforresponsepresentation); |
2125 |
> |
(allsamples.collection)[allsamples.FindSample("DY")[0]].events->Draw("sumJetPt[1]/pt:pt>>niceresponseplotm",zptforresponsepresentation*cutWeight); |
2126 |
|
niceresponseplotm->SetStats(0); |
2127 |
|
niceresponseplotm->GetXaxis()->SetTitle("Z p_{T} [GeV]"); |
2128 |
|
niceresponseplotm->GetYaxis()->SetTitle("Response"); |
2206 |
|
configfile<<"\n\n"; |
2207 |
|
for(int i=0;i<(int)flippedNobs.size();i++) configfile<<"flippedNobs.push_back("<<flippedNobs[i]<<"); // JZB cut at " << jzb_cuts[i] << "\n"; |
2208 |
|
for(int i=0;i<(int)flippedNpred.size();i++) configfile<<"flippedNpred.push_back("<<flippedNpred[i]<<"); // JZB cut at " << jzb_cuts[i] << "\n"; |
2209 |
< |
for(int i=0;i<(int)flippedNprederr.size();i++) configfile<<"flippedNprederr.push_back("<<flippedNprederr[i]<<"); // JZB cut at " << jzb_cuts[i] << "\n\n"; |
2209 |
> |
for(int i=0;i<(int)flippedNprederr.size();i++) configfile<<"flippedNprederr.push_back("<<flippedNprederr[i]<<"); // JZB cut at " << jzb_cuts[i] << "\n"; |
2210 |
|
for(int i=0;i<(int)jzb_shape_limit_bins.size();i++) configfile<<"jzb_shape_limit_bins.push_back("<<jzb_shape_limit_bins[i]<<"); // JZB shape bin boundary at " << jzb_shape_limit_bins[i] << "\n"; |
2211 |
|
configfile<<"\n\n"; |
2212 |
|
configfile<<"\n\n"; |
2254 |
|
//in the case of the on peak analysis, we compare the 3 control regions to the real value |
2255 |
|
//in the case of the OFF peak analysis, we compare our control region to the real value |
2256 |
|
TCut weightbackup=cutWeight; |
2257 |
< |
cutWeight="1.0"; |
2257 |
> |
// cutWeight="1.0"; |
2258 |
|
float simulatedlumi = luminosity; //in pb please - adjust to your likings |
2259 |
|
|
2260 |
|
|
2312 |
|
leg->Draw("same"); |
2313 |
|
DrawMCPrelim(simulatedlumi); |
2314 |
|
CompleteSave(tcan,"Systematics/"+prestring+"/ttbar_shape_comparison"); |
2293 |
– |
cout << __LINE__ << endl; |
2315 |
|
TH1F *TZemcopy = (TH1F*)TZem->Clone("TZemcopy"); |
2295 |
– |
cout << __LINE__ << endl; |
2316 |
|
TH1F *TZeemmcopy = (TH1F*)TZeemm->Clone("TZeemmcopy"); |
2297 |
– |
cout << __LINE__ << endl; |
2317 |
|
TH1F *TSeemmcopy; |
2318 |
|
TH1F *TSemcopy; |
2319 |
|
if(PlottingSetup::RestrictToMassPeak) { |
2504 |
|
} |
2505 |
|
|
2506 |
|
|
2507 |
< |
void zjets_prediction_comparison() { |
2507 |
> |
void zjets_prediction_comparison(string mcjzbWithPU) { |
2508 |
> |
TCanvas *zcan = new TCanvas("zcan","zcan"); |
2509 |
> |
zcan->SetLogy(1); |
2510 |
> |
TCut weightbackup=cutWeight; |
2511 |
> |
|
2512 |
> |
/* |
2513 |
|
// Do it without PU re-weighting |
2514 |
|
float MCPeakNoPU=0,MCPeakErrorNoPU=0,DataPeakNoPU=0,DataPeakErrorNoPU=0,MCSigma=0,DataSigma=0; |
2515 |
|
stringstream resultsNoPU; |
2516 |
|
|
2517 |
|
stringstream mcjzbnoPU; |
2518 |
< |
find_peaks(MCPeakNoPU,MCPeakErrorNoPU, DataPeakNoPU, DataPeakErrorNoPU,MCSigma,DataSigma,resultsNoPU,false); |
2518 |
> |
find_peaks(MCPeakNoPU,MCPeakErrorNoPU, DataPeakNoPU, DataPeakErrorNoPU,MCSigma,DataSigma,resultsNoPU,true); |
2519 |
|
if(MCPeakNoPU>0) mcjzbnoPU<<"("<<jzbvariablemc<<"-"<<TMath::Abs(MCPeakNoPU)<<")"; |
2520 |
|
else mcjzbnoPU<<"("<<jzbvariablemc<<"+"<<TMath::Abs(MCPeakNoPU)<<")"; |
2521 |
|
|
2522 |
|
string mcjzb = mcjzbnoPU.str(); |
2523 |
|
dout << "The peak corrected JZB expression for MC without pileup is : " << mcjzb << endl; |
2524 |
|
|
2501 |
– |
TCut weightbackup=cutWeight; |
2525 |
|
cutWeight="1.0"; |
2526 |
+ |
*/ |
2527 |
+ |
string mcjzb = mcjzbWithPU; // this is with PURW, if you want without it you have to uncomment the part above (and comment out this line) |
2528 |
|
float sbg_min=0.; |
2529 |
|
float sbg_max=100.; |
2530 |
|
int sbg_nbins=5; |
2534 |
|
TCut kNeg((mcjzb+"<0").c_str()); |
2535 |
|
string var( "abs("+mcjzb+")" ); |
2536 |
|
|
2537 |
< |
TCut kcut(cutmass&&cutOSSF&&"pfJetGoodNum>2"); |
2538 |
< |
TH1F *hJZBpos = systsamples.Draw("hJZBpos",var,sbg_nbins,sbg_min,sbg_max, "JZB [GeV]", "events", |
2539 |
< |
kcut&&kPos,mc,simulatedlumi,systsamples.FindSample("/DY")); |
2515 |
< |
TH1F *hJZBneg = systsamples.Draw("hJZBneg",var,sbg_nbins,sbg_min,sbg_max, "JZB [GeV]", "events", |
2516 |
< |
kcut&&kNeg,mc,simulatedlumi,systsamples.FindSample("/DY")); |
2537 |
> |
TCut kcut(cutmass&&cutOSSF&&cutnJets); |
2538 |
> |
TH1F *hJZBpos = systsamples.Draw("hJZBpos",var,sbg_nbins,sbg_min,sbg_max, "JZB [GeV]", "events",kcut&&kPos,mc,simulatedlumi,systsamples.FindSample("/DY")); |
2539 |
> |
TH1F *hJZBneg = systsamples.Draw("hJZBneg",var,sbg_nbins,sbg_min,sbg_max, "JZB [GeV]", "events",kcut&&kNeg,mc,simulatedlumi,systsamples.FindSample("/DY")); |
2540 |
|
hJZBpos->SetLineColor(kBlack); |
2541 |
|
hJZBneg->SetLineColor(kRed); |
2542 |
|
|
2520 |
– |
TCanvas *zcan = new TCanvas("zcan","zcan"); |
2521 |
– |
zcan->SetLogy(1); |
2543 |
|
|
2544 |
|
hJZBpos->Draw("e1"); |
2545 |
|
hJZBneg->Draw("same,hist"); |