ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/andis/plotsqcd.c
Revision: 1.2
Committed: Mon Nov 23 10:54:26 2009 UTC (15 years, 5 months ago) by andis
Content type: text/plain
Branch: MAIN
CVS Tags: HEAD
Changes since 1.1: +373 -369 lines
Log Message:
fourth jet added

File Contents

# User Rev Content
1 andis 1.1 #include "TCanvas.h"
2     #include "TROOT.h"
3     #include "TBrowser.h"
4     #include "TFile.h"
5     #include "TNtuple.h"
6     #include "TStyle.h"
7     #include "TFrame.h"
8     #include "TH1.h"
9     #include "TH2.h"
10     #include "TTree.h"
11     #include "TCut.h"
12     #include "TEntryList.h"
13     #include "TMath.h"
14     #include <iostream>
15     #include <fstream>
16     #include <string>
17    
18     using namespace std;
19    
20    
21     // CLASSES
22    
23     class Leptons
24     {
25     public:
26     void Init_Leptons();
27 andis 1.2 Double_t pt_gen, reco_gen_deltar, reco_gen_deltar_2, nearestjetangle,
28     pt, eta, phi, ep, ep_mod, hovere, iso_03, iso_05_emEt,
29     ipt, ipt_sigma, ipz, ipz_sigma,
30     deltaeta, deltaphi, sigmaetaeta,
31     pt_2, eta_2, phi_2, ep_2, ep_mod_2, hovere_2, iso_03_2,
32     iso_05_emEt_2,ipt_2, ipt_sigma_2, ipz_2, ipz_sigma_2, deltaeta_2, deltaphi_2,
33     sigmaetaeta_2;
34     Int_t pdg_gen, pdg, pdg_2, npixelhits, npixelhits_2;
35     };
36 andis 1.1
37     Leptons leptons;
38    
39     class Met
40     {
41     public:
42     void Init_Met();
43 andis 1.2 Double_t tc_met, pf_met, et_neutrinos, tc_met_lepton, pf_met_lepton;
44 andis 1.1 };
45    
46     Met met;
47    
48     class Pfjets
49     {
50     public:
51     void Init_Pfjets();
52 andis 1.2 Double_t pt1,pt2,pt3,pt4,angle1,angle2,angle_12,dist_3,dist_4, deltar_3,deltar_4,
53     btag1,btag2,btag3,btag4,hardb_pt,hardbjet_pt,hardbjet_deltar,softb_pt,softbjet_pt,softbjet_deltar,deltar,
54     nearestjet_hcal, nearestjet_ntracks, highpt_invmass;
55     bool ellipsis;
56 andis 1.1 };
57    
58     Pfjets pfjets;
59    
60     class Misc
61     {
62     public:
63     void Init_Misc();
64 andis 1.2 Double_t higgs_pt_gen,tc_w_higgs_angle,pf_w_higgs_angle,higgs_pt,higgs_invmass,higgs_eta,higgs_phi,w_pt,w_invmass,w_eta,w_phi,w_phi_gen,tracks_sum_pt,
65     tracks_sum_vectors;
66     UInt_t eventid,runid;
67 andis 1.1 };
68    
69     Misc misc;
70    
71 andis 1.2
72     // CUTS
73 andis 1.1
74     void leptons_pt_iso_cut(const Double_t pt, const Double_t isoel, const Double_t isomu, TTree *maintree);
75 andis 1.2 void leptons_isgood_cut(const Double_t deltaeta, const Double_t deltaphi, const Double_t sigmaetaeta, const Double_t ep_min, const Double_t ep_max, const Double_t muon_emEt, const Double_t hovere, TTree *maintree);
76 andis 1.1 void leptons_jets_cut(const Double_t ntracks, const Double_t hcal, const Double_t max_delta_r, TTree *maintree);
77 andis 1.2 void pfjets_btag_cut(const Double_t btag, const Double_t antibtag, TTree *maintree);
78     void pfjets_pt_cut(const Double_t pt1, const Double_t pt2, const Double_t pt3, const Int_t flag, TTree *maintree);
79 andis 1.1 void w_higgs_angle_cut(const Double_t angle, TTree *maintree);
80 andis 1.2 void w_pt_cut(const Double_t pt, TTree *maintree);
81 andis 1.1 void higgs_pt_cut(const Double_t pt, TTree *maintree);
82 andis 1.2 void pfjets_angle_cut(const Double_t jetangle, const Double_t deltar, const Double_t angle12, TTree *maintree);
83     void met_cut(const Double_t min_met, TTree *maintree);
84     void dump_runid_eventid(TTree *maintree);
85     void pfjets_thirdjet_deltar_cut(const Double_t deltar, TTree *maintree);
86    
87 andis 1.1
88     Double_t deltaR(Double_t eta1, Double_t phi1, Double_t eta2, Double_t phi2);
89 andis 1.2 Double_t deltaPhi(Double_t phi1, Double_t phi2);
90 andis 1.1
91     //
92    
93     TFile *savefile = 0;
94     TFile *file = 0;
95     TTree *mytree = 0;
96     UInt_t totalevents,nentries = 0;
97     Double_t selentries = 0;
98    
99 andis 1.2 ofstream outfile,run_event_file;
100    
101 andis 1.1
102     void plots(string filename)
103     {
104    
105     gROOT->SetStyle("Plain");
106     gROOT->ForceStyle();
107     gStyle->SetOptStat(111111);
108     gStyle->SetPalette(1);
109    
110     cout << filename + ".txt" << endl;
111    
112     outfile.open((filename + ".txt").c_str());
113     outfile << "preselection: pt(pfjets) > 20" << endl;
114     outfile.flush();
115 andis 1.2
116     run_event_file.open((filename + "_runs_events.txt").c_str());
117     cout << filename + "_runs_events.txt" << endl;
118 andis 1.1
119 andis 1.2 /*
120 andis 1.1 cout << filename + "_histograms.root" << endl;
121     savefile = new TFile((filename + "_histograms.root").c_str(),"RECREATE");
122 andis 1.2 */
123 andis 1.1
124     cout << filename + ".root" << endl;
125    
126     file = new TFile((filename + ".root").c_str(),"READ");
127     if(file->IsZombie()) exit(-1);
128     TTree *mytree = (TTree*)file->Get("calo/recotree");
129     totalevents = mytree->GetEntries();
130     cout << totalevents << endl;
131    
132     mytree->SetBranchAddress("misc",&misc);
133     mytree->SetBranchAddress("leptons",&leptons);
134     mytree->SetBranchAddress("met",&met);
135     mytree->SetBranchAddress("pfjets",&pfjets);
136    
137     //
138    
139     TCanvas *cmisc = new TCanvas("cmisc","Miscellaneous");
140 andis 1.2 TCanvas *cleptons1 = new TCanvas("cleptons1","Leptons 1");
141     TCanvas *cleptons2 = new TCanvas("cleptons2","Leptons 2");
142 andis 1.1 TCanvas *cmet = new TCanvas("cmet","MET");
143 andis 1.2 TCanvas *cjets = new TCanvas("cjets","Jets 1");
144     TCanvas *cjets2 = new TCanvas("cjets2","Jets 2");
145 andis 1.1 TCanvas *cuts1 = new TCanvas("cuts1","Cuts 1");
146     TCanvas *cuts2 = new TCanvas("cuts2","Cuts 2");
147     TCanvas *cuts3 = new TCanvas("cuts3","Cuts 3");
148 andis 1.2 TCanvas *cmass = new TCanvas("cmass","Inv.mass of Higgs");
149 andis 1.1
150 andis 1.2
151     /*TH1D * pfjets_deltar = new TH1D("pfjets_deltar","\\Delta R of pfjets",100,0,7);
152 andis 1.1 TH1D * ptlepton_histo = new TH1D("ptlepton_histo","p_{T} of lepton candidate",100,0,500);
153     TH1D * lepton_bjet_angle = new TH1D("lepton_bjet_angle","angle between lepton candidate and nearest btagged jet",100,0,7);
154     TH1D * higgs_invmass = new TH1D("higgs_invmass","inv. mass of higgs candidate",100,0,400);
155     TH2D * higgs_invmass_pt = new TH2D("higgs_invmass_pt","inv. mass vs. p_{T} of higgs candidate",100,0,600,100,0,600);
156    
157     TH2D * calo_met_angle_higgs_pt = new TH2D("calo_met_angle_higgs_t","cos(angle) between calo_MET and Higgs vs. Higgs p_{T}",100,-1.25,1.25,100,0,700);
158     TH2D * tc_met_angle_higgs_pt = new TH2D("tc_met_angle_higgs_pt","cos(angle) between tk_MET and Higgs vs. Higgs p_{T}",100,-1.25,1.25,100,0,500);
159 andis 1.2 TH2D * calo_met_angle_higgs_invmass = new TH2D("calo_met_angle_higgs_invmass","cos(angle) between calo_MET/W and Higgs vs. inv. mass of Higgs",50,-1.25,1.25,100,100,500);
160     TH2D * tc_met_angle_higgs_invmass = new TH2D("tc_met_angle_higgs_invmass","cos(angle) between tk_MET/W and Higgs vs. inv. mass of Higgs",50,-1.25,1.25,100,100,500); */
161 andis 1.1
162 andis 1.2 cmisc->Divide(3,2);
163     cleptons1->Divide(3,2);
164     cleptons2->Divide(3,2);
165 andis 1.1 cmet->Divide(3,2);
166     cjets->Divide(3,2);
167 andis 1.2 cjets2->Divide(3,2);
168 andis 1.1 cuts1->Divide(3,2);
169     cuts2->Divide(3,2);
170     cuts3->Divide(3,2);
171 andis 1.2 cmass->Divide(4,2);
172    
173 andis 1.1 // FILL HISTOS
174    
175     /*
176     for(UInt_t i = 0; i < totalevents; ++i)
177     {
178     mytree->GetEntry(i);
179     calo_met_angle_higgs_pt->Fill(misc.calo_met_higgs_angle,misc.higgs_pt);
180     tc_met_angle_higgs_pt->Fill(misc.tc_met_higgs_angle,misc.higgs_pt);
181     calo_met_angle_higgs_invmass->Fill(misc.calo_met_higgs_angle,misc.higgs_invmass);
182     tc_met_angle_higgs_invmass->Fill(misc.tc_met_higgs_angle,misc.higgs_invmass);
183     calo_met_included_lepton->Fill(met.calo_met,met.calo_met_lepton);
184     tc_met_included_lepton->Fill(met.tc_met,met.tc_met_lepton);
185    
186     higgs_invmass->Fill(misc.higgs_invmass);
187     higgs_invmass_pt->Fill(misc.higgs_invmass,misc.higgs_pt);
188    
189     //if(pfjets.pt1 > 60 && pfjets.pt2 > 60 && pfjets.btag1 > 0.3 && pfjets.btag2 > 0.3 && (leptons.muon1_pt < leptons.electron1_pt && leptons.electron1_pt > 30 && leptons.electron1_iso_03 < 10 || leptons.muon1_pt > leptons.electron1_pt && leptons.muon1_pt > 30 && leptons.muon1_iso_03 < 10))
190    
191     }
192     */
193    
194     // SAVE HISTOS
195    
196     /*Hlist.Add(calo_met_angle_higgs_pt);
197     Hlist.Add(calo_met_angle_higgs_invmass);
198     Hlist.Add(higgs_invmass);
199     Hlist.Add(higgs_invmass_pt);
200     */
201     // DRAW HISTOS
202    
203     cmisc->cd(1);
204 andis 1.2 mytree->Draw("misc.higgs_pt_gen","misc.higgs_pt_gen>200&&(leptons.pt>0 && leptons.iso_03<7 && (leptons.pt_2<0 || (leptons.pt_2>0 && leptons.iso_03_2 > 2)))");
205 andis 1.1 cmisc->cd(2);
206 andis 1.2 mytree->Draw("misc.higgs_pt","misc.higgs_pt>150&&(leptons.pt>0 && leptons.iso_03<7 && (leptons.pt_2<0 || (leptons.pt_2>0 && leptons.iso_03_2 > 4)))");
207 andis 1.1 cmisc->cd(3);
208 andis 1.2 mytree->Draw("pfjets.thirdjet_dist>>pfa12_0(50,0,6)","leptons.pt_gen > 0");
209 andis 1.1
210 andis 1.2 cleptons1->cd(1);
211     mytree->Draw("leptons.deltaeta:leptons.deltaphi>>eph1(100,0,0.25,100,0,0.04)","leptons.pdg == 11","colz");
212     cleptons1->cd(2);
213     mytree->Draw("leptons.npixelhits>>enph(100,0,8)","leptons.pdg == 11");
214     cleptons1->cd(3);
215     mytree->Draw("leptons.reco_gen_deltar>>lrgd_0(100,0,5)");
216     mytree->Draw("leptons.reco_gen_deltar_2","","SAME");
217     cleptons1->cd(4);
218     mytree->Draw("leptons.ep:leptons.hovere>>ephoe(50,0,1,50,0,4)","","COLZ");
219     cleptons1->cd(5);
220     mytree->Draw("leptons.pdg>>lpdgg(100,0,20)");
221     cleptons1->cd(6);
222     mytree->Draw("leptons.pdg_2>>lpdgg2(100,0,20)");
223 andis 1.1
224     cjets->cd(1);
225 andis 1.2 mytree->Draw("pfjets.pt3>>pfpt3(50,0,300)");
226 andis 1.1 cjets->cd(2);
227 andis 1.2 mytree->Draw("pfjets.pt4>>pfpt4(50,0,300)");
228     cjets->cd(3);
229     mytree->Draw("pfjets.deltar_3>>pfdr3(50,0,7)");
230     cjets->cd(4);
231     mytree->Draw("pfjets.deltar_4>>pfdr4(50,0,7)");
232     cjets->cd(5);
233     mytree->Draw("pfjets.dist_3>>pfdst3(50,0,7)");
234     cjets->cd(6);
235     mytree->Draw("pfjets.dist_4>>pfdst4(50,0,7)");
236 andis 1.1
237    
238 andis 1.2 cuts1->cd(2);
239     mytree->Draw("misc.tracks_sum_pt>>mtspt(50,0,750)");
240     cuts1->cd(3);
241     mytree->Draw("misc.tracks_sum_vectors>>mtsphi(50,0,300)");
242     cuts1->cd(4);
243     mytree->Draw("pfjets.thirdjet_deltar>>pftd(50,0,6)");
244 andis 1.1
245 andis 1.2 cleptons2->cd(1);
246     mytree->Draw("leptons.ep>>eep(100,0,10)","leptons.pdg == 11");
247     cleptons2->cd(2);
248     mytree->Draw("leptons.pt","leptons.pt>0");
249     cleptons2->cd(3);
250     mytree->Draw("leptons.pt_2","leptons.pt_2>0");
251    
252 andis 1.1
253     // CUTS
254    
255 andis 1.2 //savefile->cd();
256 andis 1.1
257 andis 1.2 leptons_pt_iso_cut(25,5,2,mytree);
258     met_cut(30,mytree);
259     leptons_isgood_cut(0.01,0.07,0.03,0.8,3,0.1,2,mytree);
260     leptons_jets_cut(12,45,0.5,mytree);
261     pfjets_btag_cut(0.8,0.7,mytree);
262     pfjets_pt_cut(60,20,0,0,mytree);
263     pfjets_angle_cut(1.5,2,1.5,mytree);
264     //pfjets_thirdjet_deltar_cut(2.5,mytree);
265     w_higgs_angle_cut(-0.8,mytree);
266     w_pt_cut(100,mytree);
267 andis 1.1 higgs_pt_cut(150,mytree);
268 andis 1.2 //dump_runid_eventid(mytree);
269 andis 1.1
270    
271     // HISTOS AFTER CUTS
272    
273     cout << "remaining events: " << (mytree->GetEntryList())->GetN() << endl;
274    
275 andis 1.2 cuts1->cd(5);
276     //mytree->Draw("misc.higgs_invmass>>mhiel(50,0,250)","pfjets.ellipsis == 1");
277     //mytree->Draw("misc.higgs_invmass","pfjets.ellipsis == 0","SAME");
278     mytree->Draw("pfjets.ellipsis");
279     cuts1->cd(6);
280     //mytree->Draw("misc.higgs_pt>>mhptel(50,0,250)","pfjets.ellipsis == 1");
281     //mytree->Draw("misc.higgs_pt","pfjets.ellipsis == 0","SAME");
282    
283     cmisc->cd(4);
284     mytree->Draw("pfjets.thirdjet_dist>>pfa12(50,0,6)");
285     cmisc->cd(5);
286     mytree->Draw("pfjets.nearestjet_hcal>>pfnhc2(100,0,200)");
287     cmisc->cd(6);
288     mytree->Draw("pfjets.nearestjet_ntracks>>pfntr2(35,0,35)");
289 andis 1.1
290 andis 1.2 cjets2->cd(1);
291     mytree->Draw("pfjets.pt3>>pfpt32(50,0,300)");
292     cjets2->cd(2);
293     mytree->Draw("pfjets.pt4>>pfpt42(50,0,300)");
294     cjets2->cd(3);
295     mytree->Draw("pfjets.deltar_3>>pfdr32(50,0,7)");
296     cjets2->cd(4);
297     mytree->Draw("pfjets.deltar_4>>pfdr42(50,0,7)");
298     cjets2->cd(5);
299     mytree->Draw("pfjets.dist_3>>pfdst32(50,0,7)");
300     cjets2->cd(6);
301     mytree->Draw("pfjets.dist_4>>pfdst42(50,0,7)");
302    
303     cleptons2->cd(4);
304     mytree->Draw("leptons.pt","leptons.pt>0");
305     cleptons2->cd(5);
306     mytree->Draw("leptons.pt_2","leptons.pt_2>0");
307 andis 1.1
308     cmet->cd(1);
309 andis 1.2 mytree->Draw("misc.tc_w_higgs_angle>>mha2(100,-1.5,1.5)");
310 andis 1.1 cmet->cd(2);
311 andis 1.2 mytree->Draw("misc.higgs_invmass>>mhm2(100,0,400)");
312 andis 1.1 cmet->cd(3);
313 andis 1.2 mytree->Draw("pfjets.deltar>>pfdr2(100,0,5)");
314 andis 1.1 cmet->cd(4);
315 andis 1.2 mytree->Draw("met.tc_met");
316 andis 1.1 cmet->cd(5);
317 andis 1.2 mytree->Draw("met.pf_met");
318     cmet->cd(6);
319     mytree->Draw("misc.w_pt>>wpt(100,0,600)");
320 andis 1.1
321     /*cuts2->cd(2);
322     mytree->Draw("pfjets.hardb_pt:pfjets.hardbjet_pt","misc.higgs_pt>200","colz");
323     cuts2->cd(3);
324     mytree->Draw("pfjets.softb_pt:pfjets.softbjet_pt","misc.higgs_pt>200","colz");
325     cuts2->cd(4);
326     mytree->Draw("pfjets.hardb_pt:pfjets.hardbjet_deltar","misc.higgs_pt>200","colz");
327     cuts2->cd(5);
328     mytree->Draw("pfjets.softb_pt:pfjets.softbjet_deltar","misc.higgs_pt>200","colz");*/
329    
330     cuts1->cd(1);
331 andis 1.2 mytree->Draw("leptons.hovere>>ehoe2(100,0,1)","leptons.pdg == 11");
332     //cuts1->cd(6);
333     //mytree->Draw("leptons.iso_05_emEt>>miee2(100,0,10)","leptons.pdg == 13");
334 andis 1.1
335     cuts2->cd(1);
336 andis 1.2 mytree->Draw("leptons.reco_gen_deltar>>lrgd_1(100,0,5)","abs(leptons.pdg) == 11");
337 andis 1.1 cuts2->cd(2);
338 andis 1.2 mytree->Draw("leptons.reco_gen_deltar>>lrgd_2(100,0,5)","abs(leptons.pdg) == 13");
339 andis 1.1 cuts2->cd(3);
340 andis 1.2 mytree->Draw("leptons.deltaeta>>edeta2(100,0,0.01)","leptons.pdg == 11");
341 andis 1.1 cuts2->cd(4);
342 andis 1.2 mytree->Draw("leptons.deltaphi>>edphi2(100,0,0.1)","leptons.pdg == 11");
343     cuts2->cd(5);
344     mytree->Draw("leptons.ep>>epm2(100,0,5)","leptons.pdg == 11");
345 andis 1.1 cuts2->cd(6);
346 andis 1.2 mytree->Draw("leptons.npixelhits>>lnph2(100,0,8)","leptons.pdg == 11");
347    
348 andis 1.1
349     cuts3->cd(1);
350 andis 1.2 mytree->Draw("leptons.pt");
351 andis 1.1 cuts3->cd(2);
352 andis 1.2 mytree->Draw("leptons.iso_03");
353 andis 1.1 cuts3->cd(3);
354 andis 1.2 mytree->Draw("leptons.pt_2","leptons.pt_2>0");
355 andis 1.1 cuts3->cd(4);
356 andis 1.2 mytree->Draw("leptons.iso_03_2","leptons.pt_2>0");
357 andis 1.1 cuts3->cd(5);
358 andis 1.2 mytree->Draw("misc.higgs_pt");
359 andis 1.1 cuts3->cd(6);
360 andis 1.2 mytree->Draw("pfjets.thirdjet_dist>>pftjd(100,0,5)");
361    
362     //cuts->cd();
363 andis 1.1 //mytree->Draw("leptons.muon1_pt + leptons.electron1_pt","leptons.etagen < 2.4" && "leptons.etagen > 2.4");
364    
365 andis 1.2 //savefile->Write();
366     //Hlist.Write();
367     //mytree->Write();
368 andis 1.1 //if(mytree->GetEntryList() != 0)
369     // (mytree->GetEntryList())->Write();
370    
371     outfile.close();
372 andis 1.2 run_event_file.close();
373 andis 1.1
374 andis 1.2 /*for(Int_t i = 0; i < Hlist.GetEntries() && i < 8; ++i)
375     {
376     cmass->cd(i + 1);
377     Hlist[i]->Draw();
378     }*/
379 andis 1.1 }
380    
381     void Leptons::Init_Leptons()
382     {
383 andis 1.2 pt_gen = reco_gen_deltar = reco_gen_deltar_2 = nearestjetangle = pt = eta = phi = ep = ep_mod = hovere = iso_03 = iso_05_emEt = ipt = ipt_sigma = ipz = ipz_sigma =
384     deltaeta = deltaphi = sigmaetaeta = pt_2 = eta_2 = phi_2 = ep_2 = ep_mod_2 = hovere_2 = iso_03_2 = iso_05_emEt_2 = ipt_2 =
385     ipt_sigma_2 = ipz_2 = ipz_sigma_2 = deltaeta_2 = deltaphi_2 = sigmaetaeta_2 = -1000;
386     pdg_gen = pdg = pdg_2 = npixelhits = npixelhits_2 = -1000;
387     }
388 andis 1.1
389     void Met::Init_Met()
390     {
391 andis 1.2 tc_met = pf_met = et_neutrinos = tc_met_lepton = pf_met_lepton = -1000;
392 andis 1.1 }
393    
394     void Pfjets::Init_Pfjets()
395     {
396 andis 1.2 pt1 = pt2 = pt3 = pt4 = angle1 = angle2 = angle_12 = dist_3 = dist_4 = deltar_3 = deltar_4 = btag1 = btag2 = btag3 = btag4 =
397     hardb_pt = hardbjet_pt = hardbjet_deltar = softb_pt = softbjet_pt = softbjet_deltar = deltar = nearestjet_hcal = nearestjet_ntracks = highpt_invmass = -1000;
398     ellipsis = 0;
399 andis 1.1 }
400    
401     void Misc::Init_Misc()
402     {
403 andis 1.2 higgs_pt_gen = tc_w_higgs_angle = pf_w_higgs_angle = higgs_pt = higgs_invmass = higgs_eta = higgs_phi =
404     w_pt = w_invmass = w_eta = w_phi = w_phi_gen = tracks_sum_pt = tracks_sum_vectors = -1000;
405     eventid = runid = 0;
406 andis 1.1 }
407    
408 andis 1.2
409     //Int_t canvas = 1;
410    
411 andis 1.1 void leptons_pt_iso_cut(const Double_t cut1, const Double_t cut2, const Double_t cut3, TTree *maintree)
412     {
413     char string1[22];
414     char string2[22];
415     char string3[22];
416     sprintf(string1,"%2.1f",cut1);
417 andis 1.2 sprintf(string2,"%2.1f",cut2);
418 andis 1.1 sprintf(string3,"%2.1f",cut3);
419 andis 1.2 cout << "Lept. pt > " << string1 << ", iso < " << string2 << "/" << string3 << endl;
420     string cut = "(leptons.pt>" + string(string1) + "&& leptons.iso_03<" + string(string2) + ") && ( leptons.pt_2<0 || leptons.iso_03_2>" + string(string3) + ")";
421 andis 1.1 if(maintree->GetEntryList() != 0 )
422     nentries = (maintree->GetEntryList())->GetN();
423     else
424     nentries = maintree->GetEntries();
425    
426     maintree->Draw(">>leptons_pt_iso_list",cut.c_str(),"entrylist");
427     TEntryList *leptons_pt_iso_list = (TEntryList*)gDirectory->Get("leptons_pt_iso_list");
428     leptons_pt_iso_list->SetReapplyCut(kTRUE);
429     maintree->SetEntryList(leptons_pt_iso_list);
430    
431     selentries = (maintree->GetEntryList())->GetN();
432 andis 1.2 cout << "selected entries = " << selentries << endl;
433 andis 1.1 if(nentries != 0 && totalevents != 0)
434 andis 1.2 outfile << "Lept. pt > " << string1 << ", iso < " << string2 << "/" << string3 << " - Rel eff: " << selentries/nentries << " - Abs eff: " << selentries/totalevents << endl;
435 andis 1.1 else
436 andis 1.2 outfile << "Lept. pt > " << string1 << ", iso < " << string2 << "/" << string3 << " - either before or after cut, #events = 0" << endl;
437 andis 1.1 outfile.flush();
438 andis 1.2 //maintree->Draw("misc.higgs_invmass","misc.higgs_invmass>0");
439     //Hlist.Add(((TH1D*)gPad->GetPrimitive("htemp"))->Clone("leptons_pt_iso"));
440 andis 1.1 }
441    
442 andis 1.2 void leptons_isgood_cut(const Double_t cut1, const Double_t cut2, const Double_t cut3, const Double_t cut4, const Double_t cut5, const Double_t cut6, const Double_t cut7, TTree *maintree)
443 andis 1.1 {
444     char string1[22];
445     char string2[22];
446     char string3[22];
447     char string4[22];
448     char string5[22];
449 andis 1.2 char string6[22];
450     char string7[22];
451    
452 andis 1.1 sprintf(string1,"%2.3f",cut1);
453     sprintf(string2,"%2.3f",cut2);
454     sprintf(string3,"%2.3f",cut3);
455     sprintf(string4,"%2.3f",cut4);
456     sprintf(string5,"%2.3f",cut5);
457 andis 1.2 sprintf(string6,"%2.3f",cut6);
458     sprintf(string7,"%2.3f",cut7);
459    
460     cout << "Fake leptons. delta_eta < " << string1 << ", delta_phi < " << string2 << ", sigma_Ieta_Ieta < " << string3 << ", " << string4 << " < E/p < " << string5 << ", H/E < " << string6 << ", muon_emEt < " << string7 << endl;
461     string cut = "(leptons.pdg == 11 && leptons.deltaeta<" + string(string1) + " && leptons.deltaphi<" + string(string2) + " && leptons.sigmaetaeta<" + string(string3) + " && leptons.ep>" + string(string4) + " && leptons.ep<" + string(string5) + " && leptons.hovere<" + string(string6) + ") || (leptons.pdg == 13 && leptons.iso_05_emEt<" + string(string7) + ")";
462 andis 1.1 if(maintree->GetEntryList() != 0 )
463     nentries = (maintree->GetEntryList())->GetN();
464     else
465     nentries = maintree->GetEntries();
466    
467     maintree->Draw(">>leptons_isgood_list",cut.c_str(),"entrylist");
468     TEntryList *leptons_isgood_list = (TEntryList*)gDirectory->Get("leptons_isgood_list");
469     leptons_isgood_list->SetReapplyCut(kTRUE);
470     maintree->SetEntryList(leptons_isgood_list);
471    
472     selentries = (maintree->GetEntryList())->GetN();
473 andis 1.2 cout << "selected entries = " << selentries << endl;
474 andis 1.1 if(nentries != 0 && totalevents != 0)
475 andis 1.2 outfile << "Fake leptons. delta_eta < " << string1 << ", delta_phi < " << string2 << ", sigma_Ieta_Ieta < " << string3 << ", " << string4 << " < E/p < " << string5 << ", H/E < " << string6 << ", muon_emEt < " << string7 << " - Rel eff: " << selentries/nentries << " - Abs eff: " << selentries/totalevents << endl;
476 andis 1.1 else
477 andis 1.2 outfile << "Fake leptons. delta_eta < " << string1 << ", delta_phi < " << string2 << ", sigma_Ieta_Ieta < " << string3 << ", " << string4 << " < E/p < " << string5 << ", H/E < " << string6 << ", muon_emEt < " << string7 << " - either before or after cut, #events = 0" << endl;
478 andis 1.1 outfile.flush();
479 andis 1.2 //maintree->Draw("misc.higgs_invmass","misc.higgs_invmass>0");
480     //Hlist.Add(((TH1D*)gPad->GetPrimitive("htemp"))->Clone("leptons_isgood"));
481 andis 1.1 }
482    
483     void leptons_jets_cut(const Double_t cut1, const Double_t cut2, const Double_t cut3, TTree *maintree)
484     {
485     char string1[22];
486     char string2[22];
487     char string3[22];
488    
489     sprintf(string1,"%2.3f",cut1);
490     sprintf(string2,"%2.3f",cut2);
491     sprintf(string3,"%2.3f",cut3);
492    
493 andis 1.2 cout << "Nearest jets (deltaR < " << string3 << "). Ntracks < " << string1 << ", HCal < " << string2 << endl;
494     string cut = "leptons.nearestjetangle>0 && leptons.nearestjetangle<" + string(string3) + " && pfjets.nearestjet_ntracks<" + string(string1) + " && pfjets.nearestjet_hcal<" + string(string2);
495 andis 1.1 if(maintree->GetEntryList() != 0 )
496     nentries = (maintree->GetEntryList())->GetN();
497     else
498     nentries = maintree->GetEntries();
499    
500     maintree->Draw(">>leptons_jets_list",cut.c_str(),"entrylist");
501     TEntryList *leptons_jets_list = (TEntryList*)gDirectory->Get("leptons_jets_list");
502     leptons_jets_list->SetReapplyCut(kTRUE);
503     maintree->SetEntryList(leptons_jets_list);
504    
505     selentries = (maintree->GetEntryList())->GetN();
506 andis 1.2 cout << "selected entries = " << selentries << endl;
507 andis 1.1 if(nentries != 0 && totalevents != 0)
508 andis 1.2 outfile << "Nearest jets (deltaR < " << string3 << "). Ntracks < " << string1 << ", HCal < " << string2 << " - Rel eff: " << selentries/nentries << " - Abs eff: " << selentries/totalevents << endl;
509 andis 1.1 else
510 andis 1.2 outfile << "Nearest jets (deltaR < " << string3 << "). Ntracks < " << string1 << ", HCal < " << string2 << " - either before or after cut, #events = 0" << endl;
511 andis 1.1 outfile.flush();
512 andis 1.2 //cmass->cd(canvas); ++canvas;
513     //maintree->Draw("misc.higgs_invmass","misc.higgs_invmass>0");
514     //Hlist.Add(((TH1D*)gPad->GetPrimitive("htemp"))->Clone("leptons_jets"));
515     }
516 andis 1.1
517 andis 1.2 void pfjets_btag_cut(const Double_t cut1, const Double_t cut2, TTree *maintree)
518 andis 1.1 {
519     char string1[22];
520 andis 1.2 char string2[22];
521 andis 1.1 sprintf(string1,"%2.1f",cut1);
522 andis 1.2 sprintf(string2,"%2.1f",cut2);
523     cout << "Pfjets. btag > " << string1 << " btag(add. jet) < " << string2 << endl;
524 andis 1.1
525     if(maintree->GetEntryList() != 0 )
526     nentries = (maintree->GetEntryList())->GetN();
527     else
528     nentries = maintree->GetEntries();
529    
530 andis 1.2 string cut = "pfjets.btag1>" + string(string1) + " && pfjets.btag2>" + string(string1) + " && pfjets.btag3<" + string(string2);
531 andis 1.1 maintree->Draw(">>pfjets_btag_list",cut.c_str(),"entrylist");
532     TEntryList *pfjets_btag_list = (TEntryList*)gDirectory->Get("pfjets_btag_list");
533     pfjets_btag_list->SetReapplyCut(kTRUE);
534     maintree->SetEntryList(pfjets_btag_list);
535    
536     selentries = (maintree->GetEntryList())->GetN();
537 andis 1.2 cout << "selected entries = " << selentries << endl;
538 andis 1.1 if(nentries != 0 && totalevents != 0)
539 andis 1.2 outfile << "Pfjets. btag > " << string1 << " btag(add. jet) < " << string2 << " - Rel eff: " << selentries/nentries << " - Abs eff: " << selentries/totalevents << endl;
540 andis 1.1 else
541 andis 1.2 outfile << "Pfjets. btag > " << string1 << " btag(add. jet) < " << string2 << " - either before or after cut, #events = 0" << endl;
542 andis 1.1 outfile.flush();
543 andis 1.2 //cmass->cd(canvas); ++canvas;
544     //maintree->Draw("misc.higgs_invmass","misc.higgs_invmass>0");
545     //Hlist.Add(((TH1D*)gPad->GetPrimitive("htemp"))->Clone("pfjets_btag"));
546 andis 1.1 }
547    
548 andis 1.2 void pfjets_pt_cut(const Double_t cut1, const Double_t cut2, const Double_t cut3, const Int_t cut4, TTree *maintree)
549 andis 1.1 {
550     char string1[22];
551     sprintf(string1,"%2.1f",cut1);
552     char string2[22];
553     sprintf(string2,"%2.1f",cut2);
554 andis 1.2 char string3[22];
555     sprintf(string3,"%2.1f",cut3);
556    
557     cout << "Pfjets. pt1 > " << string1 << ", pt2 > " << string2 << ", pt(add. jet) < " << string3 << endl;
558    
559 andis 1.1 if(maintree->GetEntryList() != 0 )
560     nentries = (maintree->GetEntryList())->GetN();
561     else
562     nentries = maintree->GetEntries();
563    
564 andis 1.2 string cut;
565    
566     if(cut4 == 0)
567     {
568     cut = "pfjets.pt1>" + string(string1) + " && pfjets.pt2>" + string(string2) + " && pfjets.pt3<" + string(string3);
569     }
570     else if(cut4 == 1)
571     {
572     cut = "pfjets.pt1>" + string(string1) + " && pfjets.pt2>" + string(string2) + " && pfjets.pt4 <" + string(string3) + ")";
573     }
574     else
575     {
576     cout << "error in pfjet pt cut" << endl;
577     return;
578     }
579    
580 andis 1.1 maintree->Draw(">>pfjets_pt_list",cut.c_str(),"entrylist");
581     TEntryList *pfjets_pt_list = (TEntryList*)gDirectory->Get("pfjets_pt_list");
582     pfjets_pt_list->SetReapplyCut(kTRUE);
583     maintree->SetEntryList(pfjets_pt_list);
584    
585     selentries = (maintree->GetEntryList())->GetN();
586 andis 1.2 cout << "selected entries = " << selentries << endl;
587 andis 1.1 if(nentries != 0 && totalevents != 0)
588 andis 1.2 outfile << "Pfjets. pt1 > " << string1 << ", pt2 > " << string2 << ", pt(add. jet) < " << string3 << " - Rel eff: " << selentries/nentries << " - Abs eff: " << selentries/totalevents << endl;
589 andis 1.1 else
590 andis 1.2 outfile << "Pfjets. pt1 > " << string1 << ", pt2 > " << string2 << ", pt(add. jet) < " << string3 << " - either before or after cut, #events = 0" << endl;
591 andis 1.1 outfile.flush();
592 andis 1.2 //cmass->cd(canvas); ++canvas;
593     //maintree->Draw("misc.higgs_invmass","misc.higgs_invmass>0");
594     //Hlist.Add(((TH1D*)gPad->GetPrimitive("htemp"))->Clone("pfjets_pt"));
595 andis 1.1 }
596    
597     void w_higgs_angle_cut(const Double_t cut1, TTree *maintree)
598     {
599     char string1[22];
600     sprintf(string1,"%2.1f",cut1);
601 andis 1.2 cout << "WH angle. angle < " << string1 << endl;
602 andis 1.1
603     if(maintree->GetEntryList() != 0 )
604     nentries = (maintree->GetEntryList())->GetN();
605     else
606     nentries = maintree->GetEntries();
607    
608 andis 1.2 string cut = "misc.tc_w_higgs_angle<" + string(string1);
609 andis 1.1 maintree->Draw(">>w_higgs_angle_list",cut.c_str(),"entrylist");
610     TEntryList *w_higgs_angle_list = (TEntryList*)gDirectory->Get("w_higgs_angle_list");
611     w_higgs_angle_list->SetReapplyCut(kTRUE);
612     maintree->SetEntryList(w_higgs_angle_list);
613    
614     selentries = (maintree->GetEntryList())->GetN();
615 andis 1.2 cout << "selected entries = " << selentries << endl;
616 andis 1.1 if(nentries != 0 && totalevents != 0)
617     outfile << "WH angle. angle < " << string1 << " - Rel eff: " << selentries/nentries << " - Abs eff: " << selentries/totalevents << endl;
618     else
619 andis 1.2 outfile << "WH angle. angle < " << string1 << " - either before or after cut, #events = 0" << endl;
620 andis 1.1 outfile.flush();
621 andis 1.2 //cmass->cd(canvas); ++canvas;
622     //maintree->Draw("misc.higgs_invmass","misc.higgs_invmass>0");
623     //Hlist.Add(((TH1D*)gPad->GetPrimitive("htemp"))->Clone());
624 andis 1.1 }
625    
626 andis 1.2 void w_pt_cut(const Double_t cut1, TTree *maintree)
627 andis 1.1 {
628     char string1[22];
629     sprintf(string1,"%2.1f",cut1);
630 andis 1.2 cout << "W pt > " << string1 << endl;
631 andis 1.1
632     if(maintree->GetEntryList() != 0 )
633     nentries = (maintree->GetEntryList())->GetN();
634     else
635     nentries = maintree->GetEntries();
636     cout << "nentries = " << nentries << endl;
637    
638 andis 1.2 string cut = "misc.w_pt>" + string(string1);
639 andis 1.1 maintree->Draw(">>higgs_invmass_list",cut.c_str(),"entrylist");
640     TEntryList *higgs_invmass_list = (TEntryList*)gDirectory->Get("higgs_invmass_list");
641     higgs_invmass_list->SetReapplyCut(kTRUE);
642     maintree->SetEntryList(higgs_invmass_list);
643    
644     selentries = (maintree->GetEntryList())->GetN();
645    
646 andis 1.2 outfile << "W pt > " << string1;
647     if(nentries != 0 && totalevents != 0)
648 andis 1.1 outfile << " - Rel eff: " << selentries/nentries << " - Abs eff: " << selentries/totalevents << endl;
649     else
650 andis 1.2 outfile << " - either before or after cut, #events = 0" << endl;
651 andis 1.1 outfile.flush();
652 andis 1.2 //cmass->cd(canvas); ++canvas;
653     //maintree->Draw("misc.w_pt","misc.w_pt>0");
654     //Hlist.Add(((TH1D*)gPad->GetPrimitive("htemp"))->Clone("higgs_invmass"));
655 andis 1.1 }
656    
657     void higgs_pt_cut(const Double_t cut1, TTree *maintree)
658     {
659     char string1[22];
660     sprintf(string1,"%2.1f",cut1);
661 andis 1.2 cout << "Higgs pt. pt > " << string1 << endl;
662 andis 1.1 if(maintree->GetEntryList() != 0 )
663     nentries = (maintree->GetEntryList())->GetN();
664     else
665     nentries = maintree->GetEntries();
666    
667     string cut = "higgs_pt>" + string(string1);
668     maintree->Draw(">>higgs_pt_list",cut.c_str(),"entrylist");
669     TEntryList *higgs_pt_list = (TEntryList*)gDirectory->Get("higgs_pt_list");
670     higgs_pt_list->SetReapplyCut(kTRUE);
671     maintree->SetEntryList(higgs_pt_list);
672    
673     selentries = (maintree->GetEntryList())->GetN();
674 andis 1.2 cout << "selected entries = " << selentries << endl;
675 andis 1.1 outfile << "Higgs pt. pt > " << string1;
676 andis 1.2 if(nentries != 0 && totalevents != 0)
677 andis 1.1 outfile << " - Rel eff: " << selentries/nentries << " - Abs eff: " << selentries/totalevents << endl;
678     else
679 andis 1.2 outfile << " - either before or after cut, #events = 0" << endl;
680 andis 1.1 outfile.flush();
681 andis 1.2 //cmass->cd(canvas); ++canvas;
682     //maintree->Draw("misc.higgs_invmass","misc.higgs_invmass>0");
683     //Hlist.Add(((TH1D*)gPad->GetPrimitive("htemp"))->Clone("higgs_pt"));
684 andis 1.1 }
685    
686 andis 1.2 void pfjets_angle_cut(const Double_t cut1, const Double_t cut2, const Double_t cut3, TTree *maintree)
687 andis 1.1 {
688     char string1[22];
689 andis 1.2 char string2[22];
690     char string3[22];
691 andis 1.1 sprintf(string1,"%2.1f",cut1);
692 andis 1.2 sprintf(string2,"%2.1f",cut2);
693     sprintf(string3,"%2.1f",cut3);
694 andis 1.1
695 andis 1.2 cout << "Pfjets. Angle(bjet, halfplane) < " << string1 << " deltaR(bjet1,bjet2) < " << string2 << " angle(bjet1,bjet2) < " << string3 << endl;
696 andis 1.1 if(maintree->GetEntryList() != 0 )
697     nentries = (maintree->GetEntryList())->GetN();
698     else
699     nentries = maintree->GetEntries();
700    
701 andis 1.2 string cut = "pfjets.angle1<" + string(string1) + " && pfjets.angle1>-" + string(string1) + " && pfjets.angle2<" + string(string1) + " && pfjets.angle2>-" + string(string1) + " && pfjets.deltar<" + string(string2) + " && pfjets.angle_12<" + string(string3) + " && pfjets.angle_12>-" + string(string3);
702 andis 1.1 maintree->Draw(">>pfjets_angle_list",cut.c_str(),"entrylist");
703     TEntryList *pfjets_angle_list = (TEntryList*)gDirectory->Get("pfjets_angle_list");
704     pfjets_angle_list->SetReapplyCut(kTRUE);
705     maintree->SetEntryList(pfjets_angle_list);
706    
707     selentries = (maintree->GetEntryList())->GetN();
708 andis 1.2 cout << "selected entries = " << selentries << endl;
709     if(nentries != 0 && totalevents != 0)
710     outfile << "Pfjets. Angle(bjet, halfplane) < " << string1 << " deltaR(bjet1,bjet2) < " << string2 << " - Rel eff: " << selentries/nentries << " - Abs eff: " << selentries/totalevents << endl;
711     else
712     outfile << "Pfjets. Angle(bjet, halfplane) < " << string1 << " deltaR(bjet1,bjet2) < " << string2 << " - either before or after cut, #events = 0" << endl;
713     outfile.flush();
714     //cmass->cd(canvas); ++canvas;
715     //maintree->Draw("misc.higgs_invmass","misc.higgs_invmass>0");
716     //Hlist.Add(((TH1D*)gPad->GetPrimitive("htemp"))->Clone("pfjets_angle"));
717     }
718    
719     void met_cut(const Double_t cut1, TTree *maintree)
720     {
721     char string1[22];
722     sprintf(string1,"%2.1f",cut1);
723     cout << "Met. Et > " << string1 << endl;
724     if(maintree->GetEntryList() != 0 )
725     nentries = (maintree->GetEntryList())->GetN();
726     else
727     nentries = maintree->GetEntries();
728    
729     string cut = "met.tc_met>" + string(string1);
730     maintree->Draw(">>met_list",cut.c_str(),"entrylist");
731     TEntryList *met_list = (TEntryList*)gDirectory->Get("met_list");
732     met_list->SetReapplyCut(kTRUE);
733     maintree->SetEntryList(met_list);
734    
735     selentries = (maintree->GetEntryList())->GetN();
736     cout << "selected entries = " << selentries << endl;
737 andis 1.1 if(nentries != 0 && totalevents != 0)
738 andis 1.2 outfile << "Met. Et > " << string1 << " - Rel eff: " << selentries/nentries << " - Abs eff: " << selentries/totalevents << endl;
739 andis 1.1 else
740 andis 1.2 outfile << "Met. Et > " << string1 << " - either before or after cut, #events = 0" << endl;
741 andis 1.1 outfile.flush();
742 andis 1.2 //cmass->cd(canvas); ++canvas;
743     //maintree->Draw("misc.higgs_invmass","misc.higgs_invmass>0");
744     //Hlist.Add(((TH1D*)gPad->GetPrimitive("htemp"))->Clone("met"));
745 andis 1.1 }
746    
747 andis 1.2 void pfjets_thirdjet_deltar_cut(const Double_t cut1, TTree *maintree)
748     {
749     char string1[22];
750     sprintf(string1,"%2.1f",cut1);
751     cout << "Pfjets. deltaR(3. Jet, Higgs) < " << string1 << endl;
752     if(maintree->GetEntryList() != 0 )
753     nentries = (maintree->GetEntryList())->GetN();
754     else
755     nentries = maintree->GetEntries();
756    
757     string cut = "pfjets.thirdjet_deltar <" + string(string1);
758     maintree->Draw(">>pfjets_thirdjet_deltar_list",cut.c_str(),"entrylist");
759     TEntryList *pfjets_thirdjet_deltar_list = (TEntryList*)gDirectory->Get("pfjets_thirdjet_deltar_list");
760     pfjets_thirdjet_deltar_list->SetReapplyCut(kTRUE);
761     maintree->SetEntryList(pfjets_thirdjet_deltar_list);
762    
763     selentries = (maintree->GetEntryList())->GetN();
764     cout << "selected entries = " << selentries << endl;
765     if(nentries != 0 && totalevents != 0)
766     outfile << "Pfjets. deltaR(3. Jet, Higgs) < " <<string1 << " - Rel eff: " << selentries/nentries << " - Abs eff: " << selentries/totalevents << endl;
767     else
768     outfile << "Pfjets. deltaR(3. Jet, Higgs) < " << string1 << " - either before or after cut, #events = 0" << endl;
769     outfile.flush();
770     }
771    
772     void dump_runid_eventid(TTree *maintree)
773     {
774     if(maintree->GetEntryList() != 0)
775     {
776     TEntryList *final_list = (TEntryList*)maintree->GetEntryList();
777     run_event_file << "Runs: ";
778     for(UInt_t i = 0; i < final_list->GetN(); i++)
779     {
780     maintree->GetEntry(final_list->GetEntry(i));
781     run_event_file << "," << misc.runid;
782     }
783     run_event_file << endl << "Events: ";
784     for(UInt_t i = 0; i < final_list->GetN(); i++)
785     {
786     maintree->GetEntry(final_list->GetEntry(i));
787     run_event_file << "," << misc.eventid;
788     }
789     run_event_file << endl;
790     }
791     else
792     run_event_file << "Error: TTree has no EntryList" << endl;
793    
794     run_event_file.flush();
795     }
796 andis 1.1
797     Double_t deltaR(Double_t eta1, Double_t phi1, Double_t eta2, Double_t phi2)
798     {
799     Double_t deta = eta1 - eta2;
800     Double_t dphi = phi1 - phi2;
801     while (dphi > TMath::Pi()) dphi -= 2*TMath::Pi();
802     while (dphi <= -TMath::Pi()) dphi += 2*TMath::Pi();
803     return sqrt(deta*deta + dphi*dphi);
804     }
805    
806 andis 1.2 Double_t deltaPhi(Double_t phi1, Double_t phi2) {
807     Double_t result = phi1 - phi2;
808     while (result > M_PI) result -= 2*M_PI;
809     while (result <= -M_PI) result += 2*M_PI;
810     return result;
811     }
812