ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/andis/fillplots2.c
Revision: 1.1
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
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 "TLine.h"
15     #include <iostream>
16     #include <fstream>
17     #include <string>
18    
19     using namespace std;
20    
21    
22     // CLASSES
23    
24     class Leptons
25     {
26     public:
27     void Init_Leptons();
28     Double_t pt_gen, reco_gen_deltar, reco_gen_deltar_2, nearestjetangle,
29     pt, eta, phi, ep, ep_mod, hovere, iso_03, iso_05_emEt,
30     ipt, ipt_sigma, ipz, ipz_sigma,
31     deltaeta, deltaphi, sigmaetaeta,
32     pt_2, eta_2, phi_2, ep_2, ep_mod_2, hovere_2, iso_03_2,
33     iso_05_emEt_2,ipt_2, ipt_sigma_2, ipz_2, ipz_sigma_2, deltaeta_2, deltaphi_2,
34     sigmaetaeta_2;
35     Int_t pdg_gen, pdg, pdg_2, npixelhits, npixelhits_2;
36     };
37    
38     Leptons leptons;
39    
40     class Met
41     {
42     public:
43     void Init_Met();
44     Double_t tc_met, pf_met, et_neutrinos, tc_met_lepton, pf_met_lepton;
45     };
46    
47     Met met;
48    
49     class Pfjets
50     {
51     public:
52     void Init_Pfjets();
53     Double_t pt1,pt2,pt3,pt4,angle1,angle2,angle_12,dist_3,dist_4, deltar_3,deltar_4,
54     btag1,btag2,btag3,btag4,hardb_pt,hardbjet_pt,hardbjet_deltar,softb_pt,softbjet_pt,softbjet_deltar,deltar,
55     nearestjet_hcal, nearestjet_ntracks, highpt_invmass;
56     bool ellipsis;
57     };
58    
59     Pfjets pfjets;
60    
61     class Misc
62     {
63     public:
64     void Init_Misc();
65     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,
66     tracks_sum_vectors;
67     UInt_t eventid,runid;
68     };
69    
70     Misc misc;
71    
72    
73     // CUTS
74    
75     void leptons_pt_iso_cut(const Double_t pt, const Double_t isoel, const Double_t isomu, TTree *maintree);
76     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);
77     void leptons_jets_cut(const Double_t ntracks, const Double_t hcal, const Double_t max_delta_r, TTree *maintree);
78     void pfjets_btag_cut(const Double_t btag, const Double_t antibtag, TTree *maintree);
79     void pfjets_pt_cut(const Double_t pt1, const Double_t pt2, const Double_t pt3, const bool flag, TTree *maintree);
80     void w_higgs_angle_cut(const Double_t angle, TTree *maintree);
81     void w_pt_cut(const Double_t pt, TTree *maintree);
82     void higgs_pt_cut(const Double_t pt, TTree *maintree);
83     void pfjets_angle_cut(const Double_t jetangle, const Double_t deltar, const Double_t angle12, TTree *maintree);
84     void met_cut(const Double_t min_met, TTree *maintree);
85     void pfjets_thirdjet_pt_cut(const Double_t pt, TTree *maintree);
86    
87     //
88    
89     TFile *savefile = 0;
90     TFile *file = 0;
91     TDirectory *higgs_invmass = 0;
92     TTree *mytree = 0;
93     UInt_t totalevents,nentries = 0;
94     Double_t selentries = 0;
95     TCanvas *canvas1,*canvas2;
96    
97     void fillplots2(string filename, string savefilename)
98     {
99     gROOT->SetStyle("Plain");
100     gROOT->ForceStyle();
101     gStyle->SetOptStat(111111);
102     gStyle->SetPalette(1);
103    
104     savefile = new TFile(("niceplots/" + savefilename + ".root").c_str(),"RECREATE");
105     cout << "niceplots/" + savefilename + ".root" << endl;
106    
107     file = new TFile((filename + ".root").c_str(),"READ");
108     if(file->IsZombie()) exit(-1);
109     TTree *mytree = (TTree*)file->Get("calo/recotree");
110     totalevents = mytree->GetEntries();
111     cout << "Total events: " << totalevents << endl;
112    
113     mytree->SetBranchAddress("misc",&misc);
114     mytree->SetBranchAddress("leptons",&leptons);
115     mytree->SetBranchAddress("met",&met);
116     mytree->SetBranchAddress("pfjets",&pfjets);
117    
118     // CUTS
119    
120     canvas1 = new TCanvas("canvas1","canvas1");
121     canvas2 = new TCanvas("canvas2","canvas2");
122     canvas1->Divide(3,2);
123     canvas2->Divide(3,2);
124     canvas1->cd(1);
125     mytree->Draw("leptons.eta","abs(leptons.eta) < 5");
126     canvas1->cd(2);
127     mytree->Draw("met.tc_met/met.et_neutrinos - 1","met.et_neutrinos > 0");
128     canvas1->cd(3);
129     mytree->Draw("met.pf_met/met.et_neutrinos - 1","met.et_neutrinos > 0");
130     canvas1->cd(4);
131     mytree->Draw("misc.higgs_pt/misc.higgs_pt_gen - 1","leptons.pt_gen > 0");
132    
133     higgs_invmass = savefile->mkdir("higgs_invmass","Invariant mass of Higgs");
134     higgs_invmass->cd();
135     TH1D *higgs_invmass_0 = new TH1D("higgs_invmass_0","before cuts;M_H",50,0,500);
136     canvas2->cd(1);
137     mytree->Draw("misc.higgs_invmass>>higgs_invmass_0");
138    
139     savefile->cd();
140     TH1D *leptons_pt_pre = new TH1D("leptons_pt_pre","Lepton p_{T} before cuts;p_{T}",50,0,300);
141     TH1D *leptons_iso_pre = new TH1D("leptons_iso_pre","Lepton isolation before cuts;\\Sigma p_{T}",50,0,16);
142     TH1D *leptons_pt_2_lept = new TH1D("leptons_pt_2_lept","2nd Lepton p_{T} after skim cuts;p_{T}",50,0,300);
143     TH1D *leptons_iso_2_lept = new TH1D("leptons_iso_2_lept","2nd Lepton isolation after skim cuts;\\Sigma p_{T}",50,0,16);
144     TH1D *met_pre = new TH1D("met_pre","MET before cuts;MET",50,0,200);
145     mytree->Draw("met.tc_met>>met_pre");
146     mytree->Draw("leptons.pt>>leptons_pt_pre");
147     mytree->Draw("leptons.iso_03>>leptons_iso_pre");
148     mytree->Draw("leptons.pt_2>>leptons_pt_2_lept","leptons.pt > 25 && met.tc_met > 30 && leptons.iso_03 < 5");
149     mytree->Draw("leptons.iso_03_2>>leptons_iso_2_lept","leptons.pt > 25 && met.tc_met > 30 && leptons.iso_03 < 5");
150    
151     leptons_pt_iso_cut(25,5,2,mytree);
152    
153     savefile->cd();
154     TH1D *leptons_iso_2 = new TH1D("leptons_iso_2","2nd lepton isolation;\\sigma p_{T}",50,0,20);
155     TH1D *met_lept = new TH1D("met_lept","MET after lepton cuts;MET",50,0,200);
156     mytree->Draw("met.tc_met>>met_lept");
157     mytree->Draw("leptons.iso_03_2>>leptons_iso_2");
158    
159     met_cut(30,mytree);
160     leptons_isgood_cut(0.01,0.07,0.03,0.8,3,0.1,2,mytree);
161     leptons_jets_cut(12,45,0.5,mytree);
162    
163     savefile->cd();
164     TH1D *pfjets_btag1 = new TH1D("pfjets_btag1","B-Tag of PFJets after lepton cuts;B-tag",50,0,1);
165     TH1D *pfjets_btag2 = new TH1D("pfjets_btag2","B-Tag of PFJets after lepton cuts;B-Tag",50,0,1);
166     TH1D *pfjets_btag3 = new TH1D("pfjets_btag3","B-Tag of PFJets after lepton cuts;B-Tag",50,0,1);
167     TH1D *pfjets_pt1 = new TH1D("pfjets_pt1","p_{T} of most btagged jet;p_{T}",50,0,300);
168     TH1D *pfjets_pt2 = new TH1D("pfjets_pt2","p_{T} of second most btagged jet;p_{T}",50,0,300);
169     TH1D *pfjets_pt3 = new TH1D("pfjets_pt3","p_{T} of add. jet outside of ellipsis;p_{T}",50,0,300);
170     TH1D *pfjets_pt3_2 = new TH1D("pfjets_pt3_2","p_{T} of add. jet outside, if add. jet inside of ellipsis;p_{T}",50,0,300);
171     TH1D *pfjets_angle = new TH1D("pfjets_angle","\\Delta\\phi - \\pi/2 of btagged jet and W after lepton cuts;\\Delta\\phi - \\pi/2",50,0,4);
172     TH1D *pfjets_deltar = new TH1D("pfjets_deltar","\\Delta R of btagged jets after lepton cuts;\\Delta R",50,0,6);
173     TH1D *pfjets_angle_12 = new TH1D("pfjets_angle_12","\\Delta \\phi of btagged jets after lepton cuts;\\Delta\\phi",50,0,4);
174     TH1D *w_higgs_angle_lept = new TH1D("w_higgs_angle_lept","\\cos(\\phi) of W and Higgs candidate after lepton cuts;\\cos(\\phi)",50,-1,1);
175     mytree->Draw("misc.tc_w_higgs_angle>>w_higgs_angle_lept");
176     mytree->Draw("abs(pfjets.angle1)>>pfjets_angle");
177     mytree->Draw("abs(pfjets.angle2)>>+pfjets_angle");
178     mytree->Draw("pfjets.deltar>>pfjets_deltar");
179     mytree->Draw("abs(pfjets.angle_12)>>pfjets_angle_12");
180     mytree->Draw("pfjets.pt1>>pfjets_pt1");
181     mytree->Draw("pfjets.pt2>>pfjets_pt2");
182     mytree->Draw("pfjets.pt3>>pfjets_pt3");
183     mytree->Draw("pfjets.pt3>>pfjets_pt3_2","misc.highpt_invmass > 0");
184     mytree->Draw("pfjets.btag1>>pfjets_btag1");
185     mytree->Draw("pfjets.btag2>>pfjets_btag2");
186     mytree->Draw("pfjets.btag3>>pfjets_btag3");
187    
188     pfjets_btag_cut(0.8,0.7,mytree);
189     pfjets_pt_cut(60,20,0,1,mytree);
190     pfjets_angle_cut(1.5,2,1.5,mytree);
191    
192     savefile->cd();
193     TH1D *w_higgs_angle_jets = new TH1D("w_higgs_angle_jets","cos(\\phi) of W and Higgs candidate after jet cuts;cos(\\phi)",50,-1,1);
194     TH1D *higgs_pt_jets = new TH1D("higgs_pt_jets","p_{T} of Higgs candidate after jet cuts;p_{T}",50,0,500);
195     TH1D *tracks_sum_pt = new TH1D("tracks_sum_pt","p_{T} of tracks in rest of event after jet cuts;p_{T}",50,0,500);
196     mytree->Draw("misc.tracks_sum_pt>>tracks_sum_pt");
197     mytree->Draw("misc.tc_w_higgs_angle>>w_higgs_angle_jets");
198     mytree->Draw("misc.higgs_pt>>higgs_pt_jets");
199    
200     TH1D *higgs_thirdjet_deltar = new TH1D("higgs_thirdjet_deltar","\\Delta R between third jet and higgs;\\Delta R",50,0,6);
201     mytree->Draw("pfjets.thirdjet_deltar>>higgs_thirjdet_deltar");
202    
203     w_higgs_angle_cut(-0.8,mytree);
204    
205     savefile->cd();
206     TH1D *w_pt = new TH1D("w_pt","p_{T} of W candidate after W/H angle cut;p_{T}",50,0,500);
207     mytree->Draw("misc.w_pt>>w_pt");
208    
209     w_pt_cut(100,mytree);
210    
211     savefile->cd();
212     TH1D *higgs_pt_angle = new TH1D("higgs_pt_angle","p_{T} of Higgs candidate after W/H angle cut;p_{T}",50,0,500);
213     mytree->Draw("misc.higgs_pt>>higgs_pt_angle");
214    
215     higgs_pt_cut(150,mytree);
216    
217     savefile->Write();
218     savefile->Close();
219     }
220    
221    
222     void leptons_pt_iso_cut(const Double_t cut1, const Double_t cut2, const Double_t cut3, TTree *maintree)
223     {
224     file->cd();
225     char string1[22];
226     char string2[22];
227     char string3[22];
228     sprintf(string1,"%2.1f",cut1);
229     sprintf(string2,"%2.1f",cut2);
230     sprintf(string3,"%2.1f",cut3);
231     cout << "Lept. pt > " << string1 << ", iso < " << string2 << "/" << string3 << endl;
232     string cut = "(leptons.pt>" + string(string1) + "&& leptons.iso_03<" + string(string2) + ") && ( leptons.pt_2<0 || leptons.iso_03_2>" + string(string3) + ")";
233    
234     maintree->Draw(">>leptons_pt_iso_list",cut.c_str(),"entrylist");
235     TEntryList *leptons_pt_iso_list = (TEntryList*)gDirectory->Get("leptons_pt_iso_list");
236     leptons_pt_iso_list->SetReapplyCut(kTRUE);
237     maintree->SetEntryList(leptons_pt_iso_list);
238    
239     selentries = (maintree->GetEntryList())->GetN();
240     cout << "selected entries = " << selentries << endl;
241    
242     higgs_invmass->cd();
243     TH1D *higgs_invmass_1 = new TH1D("higgs_invmass_1","lepton p_{T} and iso cut;M_{H}",50,0,500);
244     canvas2->cd(1);
245     maintree->Draw("misc.higgs_invmass>>higgs_invmass_1");
246     }
247    
248     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)
249     {
250     file->cd();
251     char string1[22];
252     char string2[22];
253     char string3[22];
254     char string4[22];
255     char string5[22];
256     char string6[22];
257     char string7[22];
258    
259     sprintf(string1,"%2.3f",cut1);
260     sprintf(string2,"%2.3f",cut2);
261     sprintf(string3,"%2.3f",cut3);
262     sprintf(string4,"%2.3f",cut4);
263     sprintf(string5,"%2.3f",cut5);
264     sprintf(string6,"%2.3f",cut6);
265     sprintf(string7,"%2.3f",cut7);
266    
267     cout << "Fake leptons. delta_eta < " << string1 << ", delta_phi < " << string2 << ", sigma_Ieta_Ieta < " << string3 << ", " << string4 << " < E/p < " << string5 << ", H/E < " << string6 << ", muon_emEt < " << string7 << endl;
268     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) + ")";
269     if(maintree->GetEntryList() != 0 )
270     nentries = (maintree->GetEntryList())->GetN();
271     else
272     nentries = maintree->GetEntries();
273    
274     maintree->Draw(">>leptons_isgood_list",cut.c_str(),"entrylist");
275     TEntryList *leptons_isgood_list = (TEntryList*)gDirectory->Get("leptons_isgood_list");
276     leptons_isgood_list->SetReapplyCut(kTRUE);
277     maintree->SetEntryList(leptons_isgood_list);
278    
279     selentries = maintree->GetEntryList()->GetN();
280     cout << "selected entries = " << selentries << endl;
281    
282     higgs_invmass->cd();
283     TH1D *higgs_invmass_3 = new TH1D("higgs_invmass_3","after additional fake lepton cuts;M_{H}",50,0,500);
284     canvas2->cd(1);
285     maintree->Draw("misc.higgs_invmass>>higgs_invmass_3");
286     }
287    
288     void leptons_jets_cut(const Double_t cut1, const Double_t cut2, const Double_t cut3, TTree *maintree)
289     {
290     file->cd();
291     char string1[22];
292     char string2[22];
293     char string3[22];
294    
295     sprintf(string1,"%2.3f",cut1);
296     sprintf(string2,"%2.3f",cut2);
297     sprintf(string3,"%2.3f",cut3);
298    
299     cout << "Nearest jets (deltaR < " << string3 << "). Ntracks < " << string1 << ", HCal < " << string2 << endl;
300     string cut = "leptons.nearestjetangle>0 && leptons.nearestjetangle<" + string(string3) + " && pfjets.nearestjet_ntracks<" + string(string1) + " && pfjets.nearestjet_hcal<" + string(string2);
301    
302     maintree->Draw(">>leptons_jets_list",cut.c_str(),"entrylist");
303     TEntryList *leptons_jets_list = (TEntryList*)gDirectory->Get("leptons_jets_list");
304     leptons_jets_list->SetReapplyCut(kTRUE);
305     maintree->SetEntryList(leptons_jets_list);
306    
307     selentries = (maintree->GetEntryList())->GetN();
308     cout << "selected entries = " << selentries << endl;
309    
310     higgs_invmass->cd();
311     TH1D *higgs_invmass_4 = new TH1D("higgs_invmass_4","after lepton jet cut;M_{H}",50,0,500);
312     canvas2->cd(1);
313     maintree->Draw("misc.higgs_invmass>>higgs_invmass_4");
314     }
315    
316     void pfjets_btag_cut(const Double_t cut1, const Double_t cut2, TTree *maintree)
317     {
318     file->cd();
319     char string1[22];
320     char string2[22];
321     sprintf(string1,"%2.1f",cut1);
322     sprintf(string2,"%2.1f",cut2);
323     cout << "Pfjets. btag > " << string1 << " btag(add. jet) < " << string2 << endl;
324    
325     string cut = "pfjets.btag1>" + string(string1) + " && pfjets.btag2>" + string(string1) + " && pfjets.btag3<" + string(string2);
326     maintree->Draw(">>pfjets_btag_list",cut.c_str(),"entrylist");
327     TEntryList *pfjets_btag_list = (TEntryList*)gDirectory->Get("pfjets_btag_list");
328     pfjets_btag_list->SetReapplyCut(kTRUE);
329     maintree->SetEntryList(pfjets_btag_list);
330    
331     selentries = (maintree->GetEntryList())->GetN();
332     cout << "selected entries = " << selentries << endl;
333    
334     higgs_invmass->cd();
335     TH1D *higgs_invmass_5 = new TH1D("higgs_invmass_5","after btag cut;M_{H}",50,0,500);
336     canvas2->cd(1);
337     maintree->Draw("misc.higgs_invmass>>higgs_invmass_5");
338     }
339    
340     void pfjets_pt_cut(const Double_t cut1, const Double_t cut2, const Double_t cut3, const bool cut4, TTree *maintree)
341     {
342     file->cd();
343     char string1[22];
344     sprintf(string1,"%2.1f",cut1);
345     char string2[22];
346     sprintf(string2,"%2.1f",cut2);
347     char string3[22];
348     sprintf(string3,"%2.1f",cut3);
349    
350     cout << "Pfjets. pt1 > " << string1 << ", pt2 > " << string2 << ", pt(add. jet) < " << string3 << endl;
351    
352     string cut;
353    
354     if(cut4 == 0)
355     {
356     cut = "pfjets.pt1>" + string(string1) + " && pfjets.pt2>" + string(string2) + " && pfjets.pt3<" + string(string3);
357     }
358     else if(cut4 == 1)
359     {
360     cut = "pfjets.pt1>" + string(string1) + " && pfjets.pt2>" + string(string2) + " && pfjets.pt4 <" + string(string3);
361     }
362     else
363     {
364     cout << "error in pfjet pt cut" << endl;
365     return;
366     }
367     maintree->Draw(">>pfjets_pt_list",cut.c_str(),"entrylist");
368     TEntryList *pfjets_pt_list = (TEntryList*)gDirectory->Get("pfjets_pt_list");
369     pfjets_pt_list->SetReapplyCut(kTRUE);
370     maintree->SetEntryList(pfjets_pt_list);
371    
372     selentries = (maintree->GetEntryList())->GetN();
373     cout << "selected entries = " << selentries << endl;
374    
375     higgs_invmass->cd();
376     TH1D *higgs_invmass_6 = new TH1D("higgs_invmass_6","after jet p_{T} cut;M_{H}",50,0,500);
377     canvas2->cd(1);
378     maintree->Draw("misc.higgs_invmass>>higgs_invmass_6");
379     }
380    
381     void w_higgs_angle_cut(const Double_t cut1, TTree *maintree)
382     {
383     file->cd();
384     char string1[22];
385     sprintf(string1,"%2.1f",cut1);
386     cout << "WH angle. angle < " << string1 << endl;
387    
388     string cut = "misc.tc_w_higgs_angle<" + string(string1);
389     maintree->Draw(">>w_higgs_angle_list",cut.c_str(),"entrylist");
390     TEntryList *w_higgs_angle_list = (TEntryList*)gDirectory->Get("w_higgs_angle_list");
391     w_higgs_angle_list->SetReapplyCut(kTRUE);
392     maintree->SetEntryList(w_higgs_angle_list);
393    
394     selentries = (maintree->GetEntryList())->GetN();
395     cout << "selected entries = " << selentries << endl;
396    
397     higgs_invmass->cd();
398     TH1D *higgs_invmass_8 = new TH1D("higgs_invmass_8","after W-Higgs angle cut;M_{H}",50,0,500);
399     canvas2->cd(1);
400     maintree->Draw("misc.higgs_invmass>>higgs_invmass_8");
401     }
402    
403     void w_pt_cut(const Double_t cut1, TTree *maintree)
404     {
405     file->cd();
406     char string1[22];
407     sprintf(string1,"%2.1f",cut1);
408     cout << "W pt > " << string1 << endl;
409    
410     string cut = "misc.w_pt>" + string(string1);
411     maintree->Draw(">>higgs_invmass_list",cut.c_str(),"entrylist");
412     TEntryList *higgs_invmass_list = (TEntryList*)gDirectory->Get("higgs_invmass_list");
413     higgs_invmass_list->SetReapplyCut(kTRUE);
414     maintree->SetEntryList(higgs_invmass_list);
415    
416     selentries = (maintree->GetEntryList())->GetN();
417     cout << "selected entries = " << selentries << endl;
418    
419     higgs_invmass->cd();
420     TH1D *higgs_invmass_9 = new TH1D("higgs_invmass_9","after p_{T}(W) cut;M_{H}",50,0,500);
421     canvas2->cd(1);
422     maintree->Draw("misc.higgs_invmass>>higgs_invmass_9");
423     }
424    
425     void higgs_pt_cut(const Double_t cut1, TTree *maintree)
426     {
427     file->cd();
428     char string1[22];
429     sprintf(string1,"%2.1f",cut1);
430     cout << "Higgs pt. pt > " << string1 << endl;
431    
432     string cut = "higgs_pt>" + string(string1);
433     maintree->Draw(">>higgs_pt_list",cut.c_str(),"entrylist");
434     TEntryList *higgs_pt_list = (TEntryList*)gDirectory->Get("higgs_pt_list");
435     higgs_pt_list->SetReapplyCut(kTRUE);
436     maintree->SetEntryList(higgs_pt_list);
437    
438     selentries = (maintree->GetEntryList())->GetN();
439     cout << "selected entries = " << selentries << endl;
440    
441     higgs_invmass->cd();
442     TH1D *higgs_invmass_10 = new TH1D("higgs_invmass_10","after p_{T}(Higgs) cut;M_{H}",50,0,500);
443     canvas2->cd(1);
444     maintree->Draw("misc.higgs_invmass>>higgs_invmass_10");
445     }
446    
447     void pfjets_angle_cut(const Double_t cut1, const Double_t cut2, const Double_t cut3, TTree *maintree)
448     {
449     file->cd();
450     char string1[22];
451     char string2[22];
452     char string3[22];
453     sprintf(string1,"%2.1f",cut1);
454     sprintf(string2,"%2.1f",cut2);
455     sprintf(string3,"%2.1f",cut3);
456    
457     cout << "Pfjets. Angle(bjet, halfplane) < " << string1 << " deltaR(bjet1,bjet2) < " << string2 << " angle(bjet1,bjet2) < " << string3 << endl;
458    
459     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);
460     maintree->Draw(">>pfjets_angle_list",cut.c_str(),"entrylist");
461     TEntryList *pfjets_angle_list = (TEntryList*)gDirectory->Get("pfjets_angle_list");
462     pfjets_angle_list->SetReapplyCut(kTRUE);
463     maintree->SetEntryList(pfjets_angle_list);
464    
465     selentries = (maintree->GetEntryList())->GetN();
466     cout << "selected entries = " << selentries << endl;
467    
468     higgs_invmass->cd();
469     TH1D *higgs_invmass_7 = new TH1D("higgs_invmass_7","after jet angles cut;M_{H}",50,0,500);
470     canvas2->cd(1);
471     maintree->Draw("misc.higgs_invmass>>higgs_invmass_7");
472     }
473    
474     void met_cut(const Double_t cut1, TTree *maintree)
475     {
476     file->cd();
477     char string1[22];
478     sprintf(string1,"%2.1f",cut1);
479     cout << "Met. Et > " << string1 << endl;
480    
481     string cut = "met.tc_met>" + string(string1);
482     maintree->Draw(">>met_list",cut.c_str(),"entrylist");
483     TEntryList *met_list = (TEntryList*)gDirectory->Get("met_list");
484     met_list->SetReapplyCut(kTRUE);
485     maintree->SetEntryList(met_list);
486    
487     selentries = (maintree->GetEntryList())->GetN();
488     cout << "selected entries = " << selentries << endl;
489    
490     higgs_invmass->cd();
491     TH1D *higgs_invmass_2 = new TH1D("higgs_invmass_2","after MET cut;M_{H}",50,0,500);
492     canvas2->cd(1);
493     maintree->Draw("misc.higgs_invmass>>higgs_invmass_2");
494     }
495    
496     void pfjets_thirdjet_pt_cut(const Double_t cut1, TTree *maintree)
497     {
498     file->cd();
499     char string1[22];
500     sprintf(string1,"%2.1f",cut1);
501     cout << "Pfjets. pt3 < " << string1 << endl;
502    
503     string cut = "pfjets.pt3<" + string(string1);
504     maintree->Draw(">>pfjets_thirdjet_pt_list",cut.c_str(),"entrylist");
505     TEntryList *pfjets_thirdjet_pt_list = (TEntryList*)gDirectory->Get("pfjets_thirdjet_pt_list");
506     pfjets_thirdjet_pt_list->SetReapplyCut(kTRUE);
507     maintree->SetEntryList(pfjets_thirdjet_pt_list);
508    
509     selentries = (maintree->GetEntryList())->GetN();
510     cout << "selected entries = " << selentries << endl;
511    
512     higgs_invmass->cd();
513     TH1D *higgs_invmass_11 = new TH1D("higgs_invmass_11","after third jet p_{T} cut;M_{H}",50,0,500);
514     canvas2->cd(1);
515     maintree->Draw("misc.higgs_invmass>>higgs_invmass_11");
516     }
517    
518     void Leptons::Init_Leptons()
519     {
520     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 =
521     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 =
522     ipt_sigma_2 = ipz_2 = ipz_sigma_2 = deltaeta_2 = deltaphi_2 = sigmaetaeta_2 = -1000;
523     pdg_gen = pdg = pdg_2 = npixelhits = npixelhits_2 = -1000;
524     }
525    
526     void Met::Init_Met()
527     {
528     tc_met = pf_met = et_neutrinos = tc_met_lepton = pf_met_lepton = -1000;
529     }
530    
531     void Pfjets::Init_Pfjets()
532     {
533     pt1 = pt2 = pt3 = pt4 = angle1 = angle2 = angle_12 = dist_3 = dist_4 = deltar_3 = deltar_4 = btag1 = btag2 = btag3 = btag4 =
534     hardb_pt = hardbjet_pt = hardbjet_deltar = softb_pt = softbjet_pt = softbjet_deltar = deltar = nearestjet_hcal = nearestjet_ntracks = highpt_invmass = -1000;
535     ellipsis = 0;
536     }
537    
538     void Misc::Init_Misc()
539     {
540     higgs_pt_gen = tc_w_higgs_angle = pf_w_higgs_angle = higgs_pt = higgs_invmass = higgs_eta = higgs_phi =
541     w_pt = w_invmass = w_eta = w_phi = w_phi_gen = tracks_sum_pt = tracks_sum_vectors = -1000;
542     eventid = runid = 0;
543     }
544    
545