ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/VHbb/plugins/Histos.h
Revision: 1.7
Committed: Fri Jun 22 15:49:50 2012 UTC (12 years, 10 months ago) by bortigno
Content type: text/plain
Branch: MAIN
CVS Tags: lhcp_UnblindFix, hcp_Unblind, lhcp_11April, LHCP_PreAppFixAfterFreeze, LHCP_PreAppFreeze, workingVersionAfterHCP, hcpApproval, hcpPreApp, ICHEP8TeV, HEAD
Changes since 1.6: +85 -98 lines
Log Message:
ichep 8TeV

File Contents

# User Rev Content
1 bortigno 1.1 #ifndef HISTOS_H
2     #define HISTOS_H
3    
4     #include <TH1F.h>
5     /* #include "DataFormats/GeometryVector/interface/VectorUtil.h" */
6     /* #include "DataFormats/Math/interface/deltaR.h" */
7 bortigno 1.2 #include "../interface/CutsAndHistos.h"
8 bortigno 1.1 #include "TLorentzVector.h"
9     #include <sstream>
10     #include "TKey.h"
11     #include "TMVA/Reader.h"
12     #include "TMVA/Config.h"
13     #include "TMVA/Tools.h"
14     #include "TMVA/MethodCuts.h"
15    
16    
17     class MCHistos : public Histos {
18    
19     public:
20    
21     virtual void book(TFile &f, std::string suffix) {
22    
23     TDirectory *subDir;
24    
25     if( ! f.GetDirectory(suffix.c_str()) )
26     subDir = f.mkdir(suffix.c_str());
27     else
28     subDir = f.GetDirectory(suffix.c_str());
29    
30     subDir->cd();
31    
32     bin_mass = 500;
33     min_mass = 0;
34     max_mass = 300;
35    
36     bin_pt = 500;
37     min_pt = 0;
38     max_pt = 500;
39    
40     bin_hel = 50;
41     min_hel = 0;
42     max_hel = 1;
43    
44     //from MC
45     McH_simHMass = new TH1F(("simHiggsMass"+suffix).c_str(),("Sim Higgs Mass ("+suffix+")").c_str(), bin_mass, min_mass, max_mass );
46     McH_simHPt = new TH1F(("simHiggsPt"+suffix).c_str(),("Sim Higgs Pt ("+suffix+")").c_str(), bin_pt, min_pt, max_pt );
47     McH_simZMass = new TH1F(("simZMass"+suffix).c_str(),("Sim Z Mass ("+suffix+")").c_str(), bin_mass, min_mass, max_mass );
48     McH_simZPt = new TH1F(("simZPt"+suffix).c_str(),("Sim Z Pt ("+suffix+")").c_str(), bin_pt, min_pt, max_pt );
49     McH_simWMass = new TH1F(("simWMass"+suffix).c_str(),("Sim W Mass ("+suffix+")").c_str(), bin_mass, min_mass, max_mass );
50     McH_simWPt = new TH1F(("simWPt"+suffix).c_str(),("Sim W Pt ("+suffix+")").c_str(), bin_pt, min_pt, max_pt );
51    
52     }
53    
54     virtual void fill(ntupleReader &iEvent,float w) {
55    
56     // McH_simWPt->Fill(iAuxInfo->mcW[0].p4.Pt(), w);
57    
58     }
59    
60    
61     TH1F * McH_simHMass;
62     TH1F * McH_simHPt;
63     TH1F * McH_simWMass;
64     TH1F * McH_simWPt;
65     TH1F * McH_simZMass;
66     TH1F * McH_simZPt;
67    
68     private:
69    
70     Int_t bin_mass;
71     Double_t min_mass;
72     Double_t max_mass;
73    
74     Int_t bin_pt;
75     Double_t min_pt;
76     Double_t max_pt;
77    
78     Int_t bin_hel;
79     Double_t min_hel;
80     Double_t max_hel;
81    
82    
83     };
84    
85    
86     class BTagHistos : public Histos {
87    
88     public:
89    
90     virtual void book(TFile &f, std::string suffix) {
91    
92     TDirectory *subDir;
93     if( ! f.GetDirectory(suffix.c_str()) )
94     subDir = f.mkdir(suffix.c_str());
95     else
96     subDir = f.GetDirectory(suffix.c_str());
97     subDir->cd();
98    
99 bortigno 1.7 bin_btag = 40;
100     min_btag = -1;
101     max_btag = 1;
102 bortigno 1.1
103     //Candidates
104 bortigno 1.7 StH_simpleJet1_bTag = new TH1F(("SimpleJet1_bTag"+suffix).c_str(),("Simple Jet1 bTag ("+suffix+")").c_str(), bin_btag, min_btag, max_btag );
105     StH_simpleJet2_bTag = new TH1F(("SimpleJet2_bTag"+suffix).c_str(),("Simple Jet2 bTag ("+suffix+")").c_str(), bin_btag, min_btag, max_btag );
106     /* StH_simpleJet1_bTag_reshaped = new TH1F(("SimpleJet1_bTag_reshaped"+suffix).c_str(),("Simple Jet1 bTag reshaped ("+suffix+")").c_str(), bin_btag, min_btag, max_btag ); */
107     /* StH_simpleJet2_bTag_reshaped = new TH1F(("SimpleJet2_bTag_reshaped"+suffix).c_str(),("Simple Jet2 bTag reshaped ("+suffix+")").c_str(), bin_btag, min_btag, max_btag ); */
108 bortigno 1.1
109     }
110    
111     virtual void fill(ntupleReader &iEvent,float w) {
112    
113 bortigno 1.7 //vertex mas and btag sorted by btag
114     if( iEvent.hJet_CSV(0,0) > iEvent.hJet_CSV(1,0) ){
115     StH_simpleJet1_bTag->Fill(iEvent.hJet_CSV(0,0), w);
116     StH_simpleJet2_bTag->Fill(iEvent.hJet_CSV(1,0), w);
117     }
118     else{
119     StH_simpleJet1_bTag->Fill(iEvent.hJet_CSV(1,0), w);
120     StH_simpleJet2_bTag->Fill(iEvent.hJet_CSV(0,0), w);
121     }
122 bortigno 1.1
123     }
124 bortigno 1.7
125     TH1F * StH_simpleJet1_bTag;
126     TH1F * StH_simpleJet2_bTag;
127    
128 bortigno 1.1 private:
129    
130 bortigno 1.7 Int_t bin_btag;
131     Double_t min_btag;
132     Double_t max_btag;
133    
134 bortigno 1.1 };
135    
136    
137     class CountHisto : public Histos {
138     virtual void book(TFile &f, std::string suffix) {
139    
140     TDirectory *subDir;
141     if( ! f.GetDirectory(suffix.c_str()) )
142     subDir = f.mkdir(suffix.c_str());
143     else
144     subDir = f.GetDirectory(suffix.c_str());
145     subDir->cd();
146     count = new TH1F(("Count"+suffix).c_str(),("Count ("+suffix+")").c_str(), 1,0,2 );
147     }
148     virtual void fill( ntupleReader & event, float w){
149     count->Fill(1, w);
150     }
151    
152     TH1F * count;
153     };
154    
155    
156     class StandardHistos : public Histos {
157    
158     public:
159    
160     virtual void book(TFile &f, std::string suffix) {
161    
162     TDirectory *subDir;
163     if( ! f.GetDirectory(suffix.c_str()) )
164     subDir = f.mkdir(suffix.c_str());
165     else
166     subDir = f.GetDirectory(suffix.c_str());
167     subDir->cd();
168    
169     bin_mass = 30;
170     min_mass = 0;
171     max_mass = 300;
172    
173     bin_SVmass = 50;
174     min_SVmass = 0;
175     max_SVmass = 10;
176    
177     bin_pt = 50;
178     min_pt = 0;
179     max_pt = 500;
180    
181     bin_hel = 20;
182     min_hel = -1;
183     max_hel = 1;
184    
185     bin_dxy = 20;
186     min_dxy = -0.2;
187     max_dxy = 0.2;
188    
189     bin_iso = 20;
190     min_iso = 0;
191     max_iso = 0.5;
192    
193     bin_btag = 20;
194     min_btag = 0;
195     max_btag = 1;
196    
197     bin_npvs = 30;
198     min_npvs = 0;
199     max_npvs = 30;
200    
201     bin_addJets = 10;
202     min_addJets = 0;
203     max_addJets = 10;
204    
205     bin_eta = bin_phi = 20;
206     min_eta = min_phi = -5;
207     max_eta = max_phi = 5;
208    
209     bin_deltaR = bin_deltaPhi = bin_deltaEta = 20;
210     min_deltaR = min_deltaPhi = min_deltaEta = 0;
211     max_deltaR = max_deltaPhi = max_deltaEta = 5;
212    
213     //Candidates
214     StH_nPVs = new TH1F(("nPVs"+suffix).c_str(),("Number of reconstructed PV ("+suffix+")").c_str(), bin_npvs, min_npvs, max_npvs );
215     StH_addJets = new TH1F(("addJets"+suffix).c_str(),("Number of additional AK5 ("+suffix+")").c_str(), bin_addJets, min_addJets, max_addJets );
216    
217 bortigno 1.4 StH_typeImet_et = new TH1F(("typeIMET_et"+suffix).c_str(),("Type corrected missing transverse energy ("+suffix+")").c_str(), bin_pt, min_pt, max_pt*0.5 );
218 bortigno 1.1 StH_met_et = new TH1F(("MET_et"+suffix).c_str(),("Missing transverse energy ("+suffix+")").c_str(), bin_pt, min_pt, max_pt*0.5 );
219     StH_met_sig = new TH1F(("MET_sig"+suffix).c_str(),("MET significance("+suffix+")").c_str(), bin_pt, min_pt, max_pt*0.1 );
220    
221     StH_vectorLepton1_pt = new TH1F(("vectorLepton1_pt"+suffix).c_str(),("Vector Lepton1 pt ("+suffix+")").c_str(), bin_pt, min_pt, max_pt*0.8 );
222     StH_vectorLepton2_pt = new TH1F(("vectorLepton2_pt"+suffix).c_str(),("Vector Lepton2 pt ("+suffix+")").c_str(), bin_pt, min_pt, max_pt*0.8 );
223     StH_vectorLepton1_phi = new TH1F(("vectorLepton1_phi"+suffix).c_str(),("Vector Lepton1 phi ("+suffix+")").c_str(), bin_phi, min_phi, max_phi );
224     StH_vectorLepton2_phi = new TH1F(("vectorLepton2_phi"+suffix).c_str(),("Vector Lepton2 phi ("+suffix+")").c_str(), bin_phi, min_phi, max_phi );
225     StH_vectorLepton1_eta = new TH1F(("vectorLepton1_eta"+suffix).c_str(),("Vector Lepton1 eta ("+suffix+")").c_str(), bin_eta, min_eta, max_eta );
226     StH_vectorLepton2_eta = new TH1F(("vectorLepton2_eta"+suffix).c_str(),("Vector Lepton2 eta ("+suffix+")").c_str(), bin_eta, min_eta, max_eta );
227     StH_vectorLepton1_pfCombRelIso = new TH1F(("vectorLepton1_pfCombRelIso"+suffix).c_str(),("Vector Lepton1 pfCombRelIso ("+suffix+")").c_str(), bin_iso, min_iso, max_iso );
228     StH_vectorLepton2_pfCombRelIso = new TH1F(("vectorLepton2_pfCombRelIso"+suffix).c_str(),("Vector Lepton2 pfCombRelIso ("+suffix+")").c_str(), bin_iso, min_iso, max_iso );
229     StH_vectorLepton1_dxy = new TH1F(("vectorLepton1_dxy"+suffix).c_str(),("Vector Lepton1 dxy ("+suffix+")").c_str(), bin_dxy, min_dxy, max_dxy );
230     StH_vectorLepton2_dxy = new TH1F(("vectorLepton2_dxy"+suffix).c_str(),("Vector Lepton2 dxy ("+suffix+")").c_str(), bin_dxy, min_dxy, max_dxy );
231     StH_vectorLepton1_dz = new TH1F(("vectorLepton1_dz"+suffix).c_str(),("Vector Lepton1 dz ("+suffix+")").c_str(), bin_dxy, min_dxy, max_dxy );
232     StH_vectorLepton2_dz = new TH1F(("vectorLepton2_dz"+suffix).c_str(),("Vector Lepton2 dz ("+suffix+")").c_str(), bin_dxy, min_dxy, max_dxy );
233    
234     StH_simpleJet1_pt = new TH1F(("SimpleJet1_pt"+suffix).c_str(),("Simple Jet1 pt ("+suffix+")").c_str(), bin_pt, min_pt, max_pt*0.8 );
235     StH_simpleJet2_pt = new TH1F(("SimpleJet2_pt"+suffix).c_str(),("Simple Jet2 pt ("+suffix+")").c_str(), bin_pt, min_pt, max_pt*0.8 );
236     StH_simpleJet1_phi = new TH1F(("SimpleJet1_phi"+suffix).c_str(),("Simple Jet1 phi ("+suffix+")").c_str(), bin_phi, min_phi, max_phi );
237     StH_simpleJet2_phi = new TH1F(("SimpleJet2_phi"+suffix).c_str(),("Simple Jet2 phi ("+suffix+")").c_str(), bin_phi, min_phi, max_phi );
238     StH_simpleJet1_eta = new TH1F(("SimpleJet1_eta"+suffix).c_str(),("Simple Jet1 eta ("+suffix+")").c_str(), bin_eta, min_eta, max_eta );
239     StH_simpleJet2_eta = new TH1F(("SimpleJet2_eta"+suffix).c_str(),("Simple Jet2 eta ("+suffix+")").c_str(), bin_eta, min_eta, max_eta );
240     StH_simpleJet1_bTag = new TH1F(("SimpleJet1_bTag"+suffix).c_str(),("Simple Jet1 bTag ("+suffix+")").c_str(), bin_btag, min_btag, max_btag );
241     StH_simpleJet2_bTag = new TH1F(("SimpleJet2_bTag"+suffix).c_str(),("Simple Jet2 bTag ("+suffix+")").c_str(), bin_btag, min_btag, max_btag );
242 bortigno 1.7 StH_simpleJet1_bTag_reshaped = new TH1F(("SimpleJet1_bTag_reshaped"+suffix).c_str(),("Simple Jet1 bTag reshaped ("+suffix+")").c_str(), bin_btag, min_btag, max_btag );
243     StH_simpleJet2_bTag_reshaped = new TH1F(("SimpleJet2_bTag_reshaped"+suffix).c_str(),("Simple Jet2 bTag reshaped ("+suffix+")").c_str(), bin_btag, min_btag, max_btag );
244 bortigno 1.1 StH_simpleJet1_vtxMass = new TH1F(("SimpleJet1_vtxMass"+suffix).c_str(),("Simple Jet1 vtxMass ("+suffix+")").c_str(), bin_SVmass, min_SVmass, max_SVmass );
245     StH_simpleJet2_vtxMass = new TH1F(("SimpleJet2_vtxMass"+suffix).c_str(),("Simple Jet2 vtxMass ("+suffix+")").c_str(), bin_SVmass, min_SVmass, max_SVmass );
246    
247     StH_simpleJets_bTag = new TH1F(("SimpleJets_bTag"+suffix).c_str(),("Simple Jets bTag ("+suffix+")").c_str(), bin_btag, min_btag, max_btag );
248 bortigno 1.4 StH_simpleJets_bTagSum = new TH1F(("SimpleJets_bTagSum"+suffix).c_str(),("Simple Jets bTagSum ("+suffix+")").c_str(), bin_btag*2, min_btag, max_btag*2 );
249 bortigno 1.7 StH_simpleJets_bTag_reshaped = new TH1F(("SimpleJets_bTag_reshaped"+suffix).c_str(),("Simple Jets bTag reshaped ("+suffix+")").c_str(), bin_btag, min_btag, max_btag );
250     StH_simpleJets_bTag_reshapedSum = new TH1F(("SimpleJets_bTag_reshapedSum"+suffix).c_str(),("Simple Jets bTag reshapedSum ("+suffix+")").c_str(), bin_btag*2, min_btag, max_btag*2 );
251 bortigno 1.1 StH_simpleJets_vtxMass = new TH1F(("SimpleJets_vtxMass"+suffix).c_str(),("Simple Jets vtxMass ("+suffix+")").c_str(), bin_SVmass, min_SVmass, max_SVmass );
252    
253     StH_addJet1_pt = new TH1F(("AddJet1_pt"+suffix).c_str(),("Additional Jet1 pt ("+suffix+")").c_str(), bin_pt, min_pt, max_pt*0.8 );
254     StH_addJet1_phi = new TH1F(("AddJet1_phi"+suffix).c_str(),("Additional Jet1 phi ("+suffix+")").c_str(), bin_phi, min_phi, max_phi );
255     StH_addJet1_eta = new TH1F(("AddJet1_eta"+suffix).c_str(),("Additional Jet1 eta ("+suffix+")").c_str(), bin_eta, min_eta, max_eta );
256     StH_addJet1_bTag = new TH1F(("AddJet1_bTag"+suffix).c_str(),("Additional Jet1 bTag ("+suffix+")").c_str(), bin_btag, min_btag, max_btag );
257     StH_addJet1_vtxMass = new TH1F(("AddJet1_vtxMass"+suffix).c_str(),("Additional Jet1 vtxMass ("+suffix+")").c_str(), bin_SVmass, min_SVmass, max_SVmass );
258     StH_addJet1_nconstituents = new TH1F(("AddJet1_nConstituent"+suffix).c_str(),(" AddJet1 nConstituents ("+suffix+")").c_str(), 50 , 0, 50 );
259    
260     StH_HMass = new TH1F(("HiggsMass"+suffix).c_str(),(" Higgs Mass ("+suffix+")").c_str(), bin_mass, min_mass, max_mass );
261     StH_HPt = new TH1F(("HiggsPt"+suffix).c_str(),(" Higgs Pt ("+suffix+")").c_str(), bin_pt, min_pt, max_pt );
262     StH_HdR = new TH1F(("HdR"+suffix).c_str(),("Higgs deltaR ("+suffix+")").c_str(), bin_deltaR, min_deltaR, max_deltaR );
263     StH_HdPhi = new TH1F(("HdPhi"+suffix).c_str(),("Higgs deltaPhi ("+suffix+")").c_str(), bin_deltaPhi, min_deltaPhi, max_deltaPhi );
264     StH_HdEta = new TH1F(("HdEta"+suffix).c_str(),("Higgs deltaEta ("+suffix+")").c_str(), bin_deltaEta, min_deltaEta, max_deltaEta );
265     StH_HHel = new TH1F(("HiggsHel"+suffix).c_str(),("Higgs helicity angle ("+suffix+")").c_str(), bin_hel, min_hel, max_hel );
266 bortigno 1.6 StH_HPullAngle1 = new TH1F(("HiggsPullAngle1"+suffix).c_str(),("Higgs pull angle1 ("+suffix+")").c_str(), bin_phi, min_phi, max_phi );
267     StH_HPullAngle2 = new TH1F(("HiggsPullAngle2"+suffix).c_str(),("Higgs pull angle2 ("+suffix+")").c_str(), bin_phi, min_phi, max_phi );
268     StH_HPullAK7Angle1 = new TH1F(("HiggsPullAK7Angle1"+suffix).c_str(),("Higgs pullAK7 angle1 ("+suffix+")").c_str(), bin_phi, min_phi, max_phi );
269     StH_HPullAK7Angle2 = new TH1F(("HiggsPullAK7Angle2"+suffix).c_str(),("Higgs pullAK7 angle2 ("+suffix+")").c_str(), bin_phi, min_phi, max_phi );
270 bortigno 1.1 StH_HdR_addJets = new TH1F(("HdR_addJets"+suffix).c_str(),("Higgs deltaR addJets ("+suffix+")").c_str(), bin_deltaR, min_deltaR, max_deltaR );
271 bortigno 1.3 StH_HdR_leading_addJets = new TH1F(("HdR_leading_addJets"+suffix).c_str(),("Higgs deltaR leading-add Jets ("+suffix+")").c_str(), bin_deltaR, min_deltaR, max_deltaR );
272     StH_HdR_following_addJets = new TH1F(("HdR_following_addJets"+suffix).c_str(),("Higgs deltaR following-add Jets ("+suffix+")").c_str(), bin_deltaR, min_deltaR, max_deltaR );
273     StH_HdRnorm_addJets = new TH1F(("HdRnorm_addJets"+suffix).c_str(),("Higgs normalized deltaR addJets ("+suffix+")").c_str(), bin_deltaR, min_deltaR, max_deltaR );
274 bortigno 1.1 StH_HMass_addJets = new TH1F(("HiggsMass_addJets"+suffix).c_str(),(" Higgs Mass with addJet ("+suffix+")").c_str(), bin_mass, min_mass, max_mass );
275 bortigno 1.3 StH_HMass_leading_addJets = new TH1F(("HiggsMass_leading_addJets"+suffix).c_str(),(" Higgs Mass with leading addJet ("+suffix+")").c_str(), bin_mass, min_mass, max_mass );
276     StH_HMass_following_addJets = new TH1F(("HiggsMass_following_addJets"+suffix).c_str(),(" Higgs Mass with following addJet ("+suffix+")").c_str(), bin_mass, min_mass, max_mass );
277     StH_HMass_both_addJets = new TH1F(("HiggsMass_both_addJets"+suffix).c_str(),(" Higgs Mass with both addJet ("+suffix+")").c_str(), bin_mass, min_mass, max_mass );
278 bortigno 1.1
279     StH_massDrop = new TH1F(("MassDrop"+suffix).c_str(),(" Higgs Mass Drop ("+suffix+")").c_str(), bin_btag, min_btag, max_btag );
280     StH_y12 = new TH1F(("Y12"+suffix).c_str(),(" Higgs Y12 ("+suffix+")").c_str(), bin_btag, min_btag, max_btag*1.2 );
281    
282     StH_ZMass = new TH1F(("ZMass"+suffix).c_str(),(" Z Mass ("+suffix+")").c_str(), 100, 50, 150 );
283     StH_ZPt = new TH1F(("ZPt"+suffix).c_str(),(" Z Pt ("+suffix+")").c_str(), bin_pt, min_pt, max_pt );
284     StH_ZH_dPhi = new TH1F(("ZH_dPhi"+suffix).c_str(),(" ZH delta Phi ("+suffix+")").c_str(), bin_deltaPhi, min_deltaPhi, max_deltaPhi );
285     StH_WMass = new TH1F(("WMass"+suffix).c_str(),(" W Mass ("+suffix+")").c_str(), bin_mass, min_mass, max_mass );
286     StH_WPt = new TH1F(("WPt"+suffix).c_str(),(" W Pt ("+suffix+")").c_str(), bin_pt, min_pt, max_pt );
287     StH_WH_dPhi = new TH1F(("WH_dPhi"+suffix).c_str(),(" WH delta Phi ("+suffix+")").c_str(), bin_deltaPhi, min_deltaPhi, max_deltaPhi );
288    
289     }
290    
291     virtual void fill(ntupleReader &iEvent,float w) {
292    
293     StH_nPVs->Fill(iEvent.nPVs, w);
294     StH_addJets->Fill(iEvent.CountAddJets(), w);
295    
296 bortigno 1.4 StH_typeImet_et->Fill(iEvent.typeIcorrMET(), w);
297     // StH_met_et->Fill( TMath::Min(iEvent.METnoPUCh_et, iEvent.METnoPU_et ), w);
298     StH_met_et->Fill( iEvent.MET_et, w);
299 bortigno 1.1 StH_met_sig->Fill(iEvent.MET_sig, w);
300    
301     StH_vectorLepton1_pt->Fill(iEvent.vLepton_pt[0], w);
302     StH_vectorLepton2_pt->Fill(iEvent.vLepton_pt[1], w);
303     StH_vectorLepton1_phi->Fill(iEvent.vLepton_phi[0], w);
304     StH_vectorLepton2_phi->Fill(iEvent.vLepton_phi[1], w);
305     StH_vectorLepton1_eta->Fill(iEvent.vLepton_eta[0], w);
306     StH_vectorLepton2_eta->Fill(iEvent.vLepton_eta[1], w);
307     StH_vectorLepton1_pfCombRelIso->Fill(iEvent.vLepton_pfCombRelIso[0], w);
308     StH_vectorLepton2_pfCombRelIso->Fill(iEvent.vLepton_pfCombRelIso[1], w);
309     StH_vectorLepton1_dxy->Fill(iEvent.vLepton_dxy[0], w);
310     StH_vectorLepton2_dxy->Fill(iEvent.vLepton_dxy[1], w);
311     StH_vectorLepton1_dz->Fill(iEvent.vLepton_dz[0], w);
312     StH_vectorLepton2_dz->Fill(iEvent.vLepton_dz[1], w);
313    
314     StH_simpleJet1_pt->Fill(iEvent.hJet_pt[0], w);
315     StH_simpleJet2_pt->Fill(iEvent.hJet_pt[1], w);
316     StH_simpleJet1_phi->Fill(iEvent.hJet_phi[0], w);
317     StH_simpleJet2_phi->Fill(iEvent.hJet_phi[1], w);
318     StH_simpleJet1_eta->Fill(iEvent.hJet_eta[0], w);
319     StH_simpleJet2_eta->Fill(iEvent.hJet_eta[1], w);
320 bortigno 1.7
321 bortigno 1.1 //vertex mas and btag sorted by btag
322 bortigno 1.7 if( iEvent.hJet_CSV(0,0) > iEvent.hJet_CSV(1,0) ){
323     StH_simpleJet1_bTag->Fill(iEvent.hJet_CSV(0,0), w);
324     StH_simpleJet2_bTag->Fill(iEvent.hJet_CSV(1,0), w);
325 bortigno 1.1 StH_simpleJet1_vtxMass->Fill(iEvent.hJet_vtxMass[0], w);
326     }
327     else{
328 bortigno 1.7 StH_simpleJet1_bTag->Fill(iEvent.hJet_CSV(1,0), w);
329     StH_simpleJet2_bTag->Fill(iEvent.hJet_CSV(0,0), w);
330 bortigno 1.1 StH_simpleJet2_vtxMass->Fill(iEvent.hJet_vtxMass[1], w);
331 bortigno 1.7 }
332    
333 bortigno 1.1 //here I fill both jets in one histo
334 bortigno 1.7 StH_simpleJets_bTagSum->Fill(iEvent.hJet_CSV(0,0)+iEvent.hJet_CSV(1,0), w);
335     StH_simpleJets_bTag->Fill(iEvent.hJet_CSV(0,0), w);
336     StH_simpleJets_bTag->Fill(iEvent.hJet_CSV(1,0), w);
337 bortigno 1.1 StH_simpleJets_vtxMass->Fill(iEvent.hJet_vtxMass[0], w);
338     StH_simpleJets_vtxMass->Fill(iEvent.hJet_vtxMass[1], w);
339 bortigno 1.7
340     //reshaped btag
341     //vertex mas and btag sorted by btag
342     if( iEvent.hJet_csv_nominal[0] > iEvent.hJet_csv_nominal[1] ){
343     StH_simpleJet1_bTag_reshaped->Fill(iEvent.hJet_csv_nominal[0], w);
344     StH_simpleJet2_bTag_reshaped->Fill(iEvent.hJet_csv_nominal[1], w);
345     }
346     else{
347     StH_simpleJet1_bTag_reshaped->Fill(iEvent.hJet_csv_nominal[1], w);
348     StH_simpleJet2_bTag_reshaped->Fill(iEvent.hJet_csv_nominal[0], w);
349     }
350     StH_simpleJets_bTag_reshapedSum->Fill(iEvent.hJet_csv_nominal[0]+iEvent.hJet_csv_nominal[1], w);
351     StH_simpleJets_bTag_reshaped->Fill(iEvent.hJet_csv_nominal[0], w);
352     StH_simpleJets_bTag_reshaped->Fill(iEvent.hJet_csv_nominal[1], w);
353 bortigno 1.1
354     StH_HMass->Fill(iEvent.H_mass, w);
355     StH_HPt->Fill(iEvent.H_pt, w);
356     StH_HdR->Fill(iEvent.H_dR, w);
357     StH_HdPhi->Fill(TMath::Abs(iEvent.H_dPhi), w);
358     StH_HdEta->Fill(iEvent.H_dEta, w);
359    
360     StH_HHel->Fill(iEvent.hJet_cosTheta[0], w);
361 bortigno 1.5
362     StH_HPullAngle1->Fill(iEvent.deltaPullAngle, w);
363     StH_HPullAngle2->Fill(iEvent.deltaPullAngle2, w);
364     StH_HPullAK7Angle1->Fill(iEvent.deltaPullAngleAK7, w);
365     StH_HPullAK7Angle2->Fill(iEvent.deltaPullAngle2AK7, w);
366 bortigno 1.1
367     bool debug_ = false;
368     TLorentzVector higgs, hJet1, hJet2, addJet;
369     std::vector<TLorentzVector> addJets;
370     hJet1.SetPtEtaPhiE( iEvent.hJet_pt[0], iEvent.hJet_eta[0], iEvent.hJet_phi[0], iEvent.hJet_e[0] );
371     hJet2.SetPtEtaPhiE( iEvent.hJet_pt[1], iEvent.hJet_eta[1], iEvent.hJet_phi[1], iEvent.hJet_e[1] );
372     higgs = hJet1 + hJet2;
373     if(debug_){
374     std::cout << "Higgs pt = " << higgs.Pt() << " eta = " << higgs.Eta() << " phi = " << higgs.Phi() << " energy = " << higgs.M() << std::endl;
375     std::cout << "Higgs pt = " << iEvent.H_pt << " eta = " << iEvent.H_eta << " phi = " << iEvent.H_phi << " energy = " << iEvent.H_mass << std::endl;
376     std::cout << "Higgs jet 1 pt = " << iEvent.hJet_pt[0] << " eta = " << iEvent.hJet_eta[0] << " phi = " << iEvent.hJet_phi[0] << " energy = " << iEvent.hJet_e[0] << std::endl;
377     std::cout << "Higgs jet 2 pt = " << iEvent.hJet_pt[1] << " eta = " << iEvent.hJet_eta[1] << " phi = " << iEvent.hJet_phi[1] << " energy = " << iEvent.hJet_e[1] << std::endl;
378     }
379     double dRmin = 1e10;
380     unsigned int dRmin_idx = 100;
381     unsigned int addj = 0;
382     for(unsigned int j = 0; j < iEvent.naJets; ++j ){
383     if( iEvent.aJet_pt[j] <= 20. || TMath::Abs(iEvent.aJet_eta[j]) >= 2.4 ) continue; // condition of CountAddJets()
384     if(debug_)
385     std::cout << "[j : " << j << "] pt = " << iEvent.aJet_pt[j] << " eta = " << iEvent.aJet_eta[j] << " phi = " << iEvent.aJet_phi[j] << " energy = " << iEvent.aJet_e[j] << std::endl;
386     addJet.SetPtEtaPhiE(iEvent.aJet_pt[j],iEvent.aJet_eta[j],iEvent.aJet_phi[j],iEvent.aJet_e[j]);
387     if(higgs.DeltaR(addJet) < dRmin) dRmin_idx = addj;
388     addJets.push_back( addJet );
389     addj++;
390     }
391     if(debug_){
392     std::cout << "Count add jets = " << iEvent.CountAddJets() << " vector size = " << addJets.size() << std::endl;
393     std::cout << "index = " << dRmin_idx << std::endl;
394     for(unsigned int j=0; j<addJets.size();++j) std::cout << "[j : " << j << "] pt = " << addJets[j].Pt() << " eta = " << addJets[j].Eta() << " phi = " << addJets[j].Phi() << " energy = " << addJets[j].Energy() << std::endl;
395     }
396     if(iEvent.CountAddJets() > 0 ){
397     StH_HdR_addJets->Fill(higgs.DeltaR(addJets.at(dRmin_idx)), w);
398 bortigno 1.3 StH_HdR_leading_addJets->Fill(hJet1.DeltaR(addJets.at(dRmin_idx)), w);
399     StH_HdR_following_addJets->Fill(hJet2.DeltaR(addJets.at(dRmin_idx)), w);
400     StH_HdRnorm_addJets->Fill(higgs.DeltaR(addJets.at(dRmin_idx)) / iEvent.H_dR, w);
401     if( iEvent.aJet_csv[dRmin_idx] > 0.8 || hJet1.DeltaR(addJets.at(dRmin_idx)) < 2 )
402     StH_HMass_leading_addJets->Fill((higgs+addJets.at(dRmin_idx)).M(), w);
403     else StH_HMass_leading_addJets->Fill(higgs.M(), w);
404     if( iEvent.aJet_csv[dRmin_idx] > 0.8 || hJet2.DeltaR(addJets.at(dRmin_idx)) < 2 )
405     StH_HMass_following_addJets->Fill((higgs+addJets.at(dRmin_idx)).M(), w);
406     else StH_HMass_following_addJets->Fill(higgs.M(), w);
407     if( iEvent.aJet_csv[dRmin_idx] > 0.8 || hJet2.DeltaR(addJets.at(dRmin_idx)) < 2 || hJet1.DeltaR(addJets.at(dRmin_idx)) < 2 )
408     StH_HMass_both_addJets->Fill((higgs+addJets.at(dRmin_idx)).M(), w);
409     else StH_HMass_both_addJets->Fill(higgs.M(), w);
410     if( iEvent.aJet_csv[dRmin_idx] > 0.8 || higgs.DeltaR(addJets.at(dRmin_idx)) < 2 )
411 bortigno 1.1 StH_HMass_addJets->Fill((higgs+addJets.at(dRmin_idx)).M(), w);
412     else StH_HMass_addJets->Fill(higgs.M(), w);
413     StH_addJet1_pt->Fill(iEvent.aJet_pt[dRmin_idx], w);
414     StH_addJet1_phi->Fill(iEvent.aJet_phi[dRmin_idx], w);
415     StH_addJet1_eta->Fill(iEvent.aJet_eta[dRmin_idx], w);
416     StH_addJet1_bTag->Fill(iEvent.aJet_csv[dRmin_idx], w);
417     StH_addJet1_vtxMass->Fill(iEvent.aJet_vtxMass[dRmin_idx], w);
418     StH_addJet1_nconstituents->Fill( iEvent.aJet_nconstituents[dRmin_idx], w);
419     }
420     else StH_HMass_addJets->Fill(higgs.M(), w);
421    
422     //idea from subjets
423     StH_massDrop->Fill(TMath::Max(hJet1.M(),hJet2.M())/higgs.M() , w);
424     StH_y12->Fill( TMath::Power(hJet1.DeltaR(hJet2),2) * TMath::Min( TMath::Power(hJet1.Pt(),2),TMath::Power(hJet2.Pt(),2) )/ TMath::Power(higgs.M(),2) , w);
425    
426     iType = (VType)iEvent.Vtype;
427     if( iType == Zmm || iType == Zee || iType == Znn ){
428     StH_ZMass->Fill(iEvent.V_mass, w);
429     StH_ZPt->Fill(iEvent.V_pt, w);
430     StH_ZH_dPhi->Fill(iEvent. HVdPhi, w);
431     }
432     else{
433     StH_WMass->Fill(iEvent.V_mass, w);
434     StH_WPt->Fill(iEvent.V_pt, w);
435     StH_WH_dPhi->Fill(iEvent.HVdPhi, w);
436     }
437    
438    
439     }
440    
441     TH1F * StH_nPVs;
442     TH1F * StH_addJets;
443 bortigno 1.4 TH1F * StH_typeImet_et;
444 bortigno 1.1 TH1F * StH_met_et;
445     TH1F * StH_met_sig;
446    
447     TH1F * StH_vectorLepton1_pt;
448     TH1F * StH_vectorLepton2_pt;
449     TH1F * StH_vectorLepton1_phi;
450     TH1F * StH_vectorLepton2_phi;
451     TH1F * StH_vectorLepton1_eta;
452     TH1F * StH_vectorLepton2_eta;
453     TH1F * StH_vectorLepton1_pfCombRelIso;
454     TH1F * StH_vectorLepton2_pfCombRelIso;
455     TH1F * StH_vectorLepton1_dxy;
456     TH1F * StH_vectorLepton2_dxy;
457     TH1F * StH_vectorLepton1_dz;
458     TH1F * StH_vectorLepton2_dz;
459    
460     TH1F * StH_simpleJet1_pt;
461     TH1F * StH_simpleJet2_pt;
462     TH1F * StH_simpleJet1_phi;
463     TH1F * StH_simpleJet2_phi;
464     TH1F * StH_simpleJet1_eta;
465     TH1F * StH_simpleJet2_eta;
466     TH1F * StH_simpleJet1_bTag;
467     TH1F * StH_simpleJet2_bTag;
468 bortigno 1.7 TH1F * StH_simpleJet1_bTag_reshaped;
469     TH1F * StH_simpleJet2_bTag_reshaped;
470 bortigno 1.1 TH1F * StH_simpleJet1_vtxMass;
471     TH1F * StH_simpleJet2_vtxMass;
472    
473     TH1F * StH_simpleJets_bTag;
474 bortigno 1.4 TH1F * StH_simpleJets_bTagSum;
475 bortigno 1.7 TH1F * StH_simpleJets_bTag_reshaped;
476     TH1F * StH_simpleJets_bTag_reshapedSum;
477 bortigno 1.1 TH1F * StH_simpleJets_vtxMass;
478    
479     TH1F * StH_addJet1_pt;
480     TH1F * StH_addJet1_phi;
481     TH1F * StH_addJet1_eta;
482     TH1F * StH_addJet1_bTag;
483     TH1F * StH_addJet1_vtxMass;
484     TH1F * StH_addJet1_nconstituents;
485    
486     TH1F * StH_HMass;
487     TH1F * StH_HPt;
488     TH1F * StH_HdR;
489     TH1F * StH_HdPhi;
490     TH1F * StH_HdEta;
491     TH1F * StH_HHel;
492 bortigno 1.6 TH1F * StH_HPullAngle1;
493 bortigno 1.5 TH1F * StH_HPullAngle2;
494 bortigno 1.6 TH1F * StH_HPullAK7Angle1;
495 bortigno 1.5 TH1F * StH_HPullAK7Angle2;
496 bortigno 1.1 TH1F * StH_HdR_addJets;
497 bortigno 1.3 TH1F * StH_HdR_leading_addJets;
498     TH1F * StH_HdR_following_addJets;
499    
500     TH1F * StH_HdRnorm_addJets;
501 bortigno 1.1 TH1F * StH_HMass_addJets;
502 bortigno 1.3 TH1F * StH_HMass_leading_addJets;
503     TH1F * StH_HMass_following_addJets;
504     TH1F * StH_HMass_both_addJets;
505 bortigno 1.1
506     TH1F * StH_massDrop;
507     TH1F * StH_y12;
508    
509     TH1F * StH_WMass;
510     TH1F * StH_WPt;
511     TH1F * StH_WH_dPhi;
512    
513     TH1F * StH_ZMass;
514     TH1F * StH_ZPt;
515     TH1F * StH_ZH_dPhi;
516    
517     private:
518    
519     Int_t bin_btag;
520     Double_t min_btag;
521     Double_t max_btag;
522    
523     Int_t bin_SVmass;
524     Double_t min_SVmass;
525     Double_t max_SVmass;
526    
527     Int_t bin_eta;
528     Double_t min_eta;
529     Double_t max_eta;
530    
531     Int_t bin_phi;
532     Double_t min_phi;
533     Double_t max_phi;
534    
535     Int_t bin_deltaEta;
536     Double_t min_deltaEta;
537     Double_t max_deltaEta;
538    
539     Int_t bin_deltaPhi;
540     Double_t min_deltaPhi;
541     Double_t max_deltaPhi;
542    
543     Int_t bin_deltaR;
544     Double_t min_deltaR;
545     Double_t max_deltaR;
546    
547     Int_t bin_mass;
548     Double_t min_mass;
549     Double_t max_mass;
550    
551     Int_t bin_pt;
552     Double_t min_pt;
553     Double_t max_pt;
554    
555     Int_t bin_npvs;
556     Double_t min_npvs;
557     Double_t max_npvs;
558    
559     Int_t bin_addJets;
560     Double_t min_addJets;
561     Double_t max_addJets;
562    
563     Int_t bin_hel;
564     Double_t min_hel;
565     Double_t max_hel;
566    
567     Int_t bin_iso;
568     Double_t min_iso;
569     Double_t max_iso;
570    
571     Int_t bin_dxy;
572     Double_t min_dxy;
573     Double_t max_dxy;
574    
575     };
576    
577    
578    
579     class SystematicsHistos : public Histos {
580    
581     public:
582    
583     virtual void book(TFile &f, std::string suffix) {
584    
585     TDirectory *subDir;
586     if( ! f.GetDirectory(suffix.c_str()) )
587     subDir = f.mkdir(suffix.c_str());
588     else
589     subDir = f.GetDirectory(suffix.c_str());
590     subDir->cd();
591    
592     bin_mass = 30;
593     min_mass = 0;
594     max_mass = 300;
595    
596     bin_SVmass = 50;
597     min_SVmass = 0;
598     max_SVmass = 10;
599    
600     bin_pt = 50;
601     min_pt = 0;
602     max_pt = 500;
603    
604     bin_hel = 10;
605     min_hel = 0;
606     max_hel = 1;
607    
608     bin_dxy = 20;
609     min_dxy = -0.2;
610     max_dxy = 0.2;
611    
612     bin_iso = 20;
613     min_iso = 0;
614     max_iso = 0.5;
615    
616     bin_btag = 20;
617     min_btag = 0;
618     max_btag = 1;
619    
620     bin_npvs = 30;
621     min_npvs = 0;
622     max_npvs = 30;
623    
624     bin_addJets = 10;
625     min_addJets = 0;
626     max_addJets = 10;
627    
628     bin_eta = bin_phi = 20;
629     min_eta = min_phi = -5;
630     max_eta = max_phi = 5;
631    
632     bin_deltaR = bin_deltaPhi = bin_deltaEta = 20;
633     min_deltaR = min_deltaPhi = min_deltaEta = 0;
634     max_deltaR = max_deltaPhi = max_deltaEta = 5;
635    
636     //Candidates
637    
638     SystUPH_addJets = new TH1F(("addJets"+suffix+"SystUP").c_str(),("Number of additional AK5 ("+suffix+"SystUP"+")").c_str(), bin_addJets, min_addJets, max_addJets );
639     SystUPH_simpleJet1_pt = new TH1F(("SimpleJet1_pt"+suffix+"SystUP").c_str(),("Simple Jet1 pt ("+suffix+"SystUP"+")").c_str(), bin_pt, min_pt, max_pt*0.8 );
640     SystUPH_simpleJet2_pt = new TH1F(("SimpleJet2_pt"+suffix+"SystUP").c_str(),("Simple Jet2 pt ("+suffix+"SystUP"+")").c_str(), bin_pt, min_pt, max_pt*0.8 );
641     SystUPH_HMass = new TH1F(("HiggsMass"+suffix+"SystUP").c_str(),(" Higgs Mass ("+suffix+"SystUP"+")").c_str(), bin_mass, min_mass, max_mass );
642     SystUPH_HPt = new TH1F(("HiggsPt"+suffix+"SystUP").c_str(),(" Higgs Pt ("+suffix+"SystUP"+")").c_str(), bin_pt, min_pt, max_pt );
643     SystUPH_ZH_dPhi = new TH1F(("ZH_dPhi"+suffix+"SystUP").c_str(),(" ZH delta Phi ("+suffix+"SystUP"+")").c_str(), bin_deltaPhi, min_deltaPhi, max_deltaPhi );
644     SystUPH_HdR_addJets = new TH1F(("HdR_addJets"+suffix+"SystUP").c_str(),("Higgs deltaR addJets ("+suffix+"SystUP"+")").c_str(), bin_deltaR, min_deltaR, max_deltaR );
645    
646 bortigno 1.3 SystJERUPH_simpleJet1_pt = new TH1F(("SimpleJet1_pt"+suffix+"SystJERUP").c_str(),("Simple Jet1 pt ("+suffix+"SystJERUP"+")").c_str(), bin_pt, min_pt, max_pt*0.8 );
647     SystJERUPH_simpleJet2_pt = new TH1F(("SimpleJet2_pt"+suffix+"SystJERUP").c_str(),("Simple Jet2 pt ("+suffix+"SystJERUP"+")").c_str(), bin_pt, min_pt, max_pt*0.8 );
648     SystJERUPH_HMass = new TH1F(("HiggsMass"+suffix+"SystJERUP").c_str(),(" Higgs Mass ("+suffix+"SystJERUP"+")").c_str(), bin_mass, min_mass, max_mass );
649     SystJERUPH_HPt = new TH1F(("HiggsPt"+suffix+"SystJERUP").c_str(),(" Higgs Pt ("+suffix+"SystJERUP"+")").c_str(), bin_pt, min_pt, max_pt );
650     SystJERUPH_ZH_dPhi = new TH1F(("ZH_dPhi"+suffix+"SystJERUP").c_str(),(" ZH delta Phi ("+suffix+"SystJERUP"+")").c_str(), bin_deltaPhi, min_deltaPhi, max_deltaPhi );
651    
652 bortigno 1.1 SystUPH_simpleJet1_bTag = new TH1F(("SimpleJet1_bTag"+suffix+"SystUP").c_str(),("Simple Jet1 bTag ("+suffix+"SystUP"+")").c_str(), bin_btag, min_btag, max_btag );
653     SystUPH_simpleJet2_bTag = new TH1F(("SimpleJet2_bTag"+suffix+"SystUP").c_str(),("Simple Jet2 bTag ("+suffix+"SystUP"+")").c_str(), bin_btag, min_btag, max_btag );
654     SystUPH_simpleJets_bTag = new TH1F(("SimpleJets_bTag"+suffix+"SystUP").c_str(),("Simple Jets bTag ("+suffix+"SystUP"+")").c_str(), bin_btag, min_btag, max_btag );
655     SystFUPH_simpleJet1_bTag = new TH1F(("SimpleJet1_bTag"+suffix+"SystFUP").c_str(),("Simple Jet1 bTag ("+suffix+"SystFUP"+")").c_str(), bin_btag, min_btag, max_btag );
656     SystFUPH_simpleJet2_bTag = new TH1F(("SimpleJet2_bTag"+suffix+"SystFUP").c_str(),("Simple Jet2 bTag ("+suffix+"SystFUP"+")").c_str(), bin_btag, min_btag, max_btag );
657     SystFUPH_simpleJets_bTag = new TH1F(("SimpleJets_bTag"+suffix+"SystFUP").c_str(),("Simple Jets bTag ("+suffix+"SystFUP"+")").c_str(), bin_btag, min_btag, max_btag );
658    
659     SystDOWNH_addJets = new TH1F(("addJets"+suffix+"SystDOWN").c_str(),("Number of additional AK5 ("+suffix+"SystDOWN"+")").c_str(), bin_addJets, min_addJets, max_addJets );
660     SystDOWNH_simpleJet1_pt = new TH1F(("SimpleJet1_pt"+suffix+"SystDOWN").c_str(),("Simple Jet1 pt ("+suffix+"SystDOWN"+")").c_str(), bin_pt, min_pt, max_pt*0.8 );
661     SystDOWNH_simpleJet2_pt = new TH1F(("SimpleJet2_pt"+suffix+"SystDOWN").c_str(),("Simple Jet2 pt ("+suffix+"SystDOWN"+")").c_str(), bin_pt, min_pt, max_pt*0.8 );
662     SystDOWNH_HMass = new TH1F(("HiggsMass"+suffix+"SystDOWN").c_str(),(" Higgs Mass ("+suffix+"SystDOWN"+")").c_str(), bin_mass, min_mass, max_mass );
663     SystDOWNH_HPt = new TH1F(("HiggsPt"+suffix+"SystDOWN").c_str(),(" Higgs Pt ("+suffix+"SystDOWN"+")").c_str(), bin_pt, min_pt, max_pt );
664     SystDOWNH_ZH_dPhi = new TH1F(("ZH_dPhi"+suffix+"SystDOWN").c_str(),(" ZH delta Phi ("+suffix+"SystDOWN"+")").c_str(), bin_deltaPhi, min_deltaPhi, max_deltaPhi );
665 bortigno 1.3 SystDOWNH_HdR_addJets = new TH1F(("HdR_addJets"+suffix+"SystDWON").c_str(),("Higgs deltaR addJets ("+suffix+"SystDOWN"+")").c_str(), bin_deltaR, min_deltaR, max_deltaR );
666    
667     SystJERDOWNH_simpleJet1_pt = new TH1F(("SimpleJet1_pt"+suffix+"SystJERDOWN").c_str(),("Simple Jet1 pt ("+suffix+"SystJERDOWN"+")").c_str(), bin_pt, min_pt, max_pt*0.8 );
668     SystJERDOWNH_simpleJet2_pt = new TH1F(("SimpleJet2_pt"+suffix+"SystJERDOWN").c_str(),("Simple Jet2 pt ("+suffix+"SystJERDOWN"+")").c_str(), bin_pt, min_pt, max_pt*0.8 );
669     SystJERDOWNH_HMass = new TH1F(("HiggsMass"+suffix+"SystJERDOWN").c_str(),(" Higgs Mass ("+suffix+"SystJERDOWN"+")").c_str(), bin_mass, min_mass, max_mass );
670     SystJERDOWNH_HPt = new TH1F(("HiggsPt"+suffix+"SystJERDOWN").c_str(),(" Higgs Pt ("+suffix+"SystJERDOWN"+")").c_str(), bin_pt, min_pt, max_pt );
671     SystJERDOWNH_ZH_dPhi = new TH1F(("ZH_dPhi"+suffix+"SystJERDOWN").c_str(),(" ZH delta Phi ("+suffix+"SystJERDOWN"+")").c_str(), bin_deltaPhi, min_deltaPhi, max_deltaPhi );
672 bortigno 1.1
673     SystDOWNH_simpleJet1_bTag = new TH1F(("SimpleJet1_bTag"+suffix+"SystDOWN").c_str(),("Simple Jet1 bTag ("+suffix+"SystDOWN"+")").c_str(), bin_btag, min_btag, max_btag );
674     SystDOWNH_simpleJet2_bTag = new TH1F(("SimpleJet2_bTag"+suffix+"SystDOWN").c_str(),("Simple Jet2 bTag ("+suffix+"SystDOWN"+")").c_str(), bin_btag, min_btag, max_btag );
675     SystDOWNH_simpleJets_bTag = new TH1F(("SimpleJets_bTag"+suffix+"SystDOWN").c_str(),("Simple Jets bTag ("+suffix+"SystDOWN"+")").c_str(), bin_btag, min_btag, max_btag );
676     SystFDOWNH_simpleJet1_bTag = new TH1F(("SimpleJet1_bTag"+suffix+"SystFDOWN").c_str(),("Simple Jet1 bTag ("+suffix+"SystFDOWN"+")").c_str(), bin_btag, min_btag, max_btag );
677     SystFDOWNH_simpleJet2_bTag = new TH1F(("SimpleJet2_bTag"+suffix+"SystFDOWN").c_str(),("Simple Jet2 bTag ("+suffix+"SystFDOWN"+")").c_str(), bin_btag, min_btag, max_btag );
678     SystFDOWNH_simpleJets_bTag = new TH1F(("SimpleJets_bTag"+suffix+"SystFDOWN").c_str(),("Simple Jets bTag ("+suffix+"SystFDOWN"+")").c_str(), bin_btag, min_btag, max_btag );
679    
680     }
681    
682     virtual void fill(ntupleReader &iEvent,float w) {
683    
684     TLorentzVector higgs, addJet;
685    
686     //UPSCALE
687     SystUPH_addJets->Fill(iEvent.CountAddJets_jec(+1), w);
688     SystUPH_simpleJet1_pt->Fill(iEvent.hJet_pt_jecUP(0), w);
689     SystUPH_simpleJet2_pt->Fill(iEvent.hJet_pt_jecUP(1), w);
690 bortigno 1.3 SystJERUPH_simpleJet1_pt->Fill(iEvent.hJet_jer(0,+1).Pt(), w);
691     SystJERUPH_simpleJet2_pt->Fill(iEvent.hJet_jer(1,+1).Pt(), w);
692    
693 bortigno 1.1 //btag sorted by btag
694 bortigno 1.7 if( iEvent.hJet_CSV(0,1) > iEvent.hJet_CSV(1,1) ){
695     SystUPH_simpleJet1_bTag->Fill(iEvent.hJet_CSV(0,1), w);
696     SystUPH_simpleJet2_bTag->Fill(iEvent.hJet_CSV(1,1), w);
697 bortigno 1.1 }
698     else{
699 bortigno 1.7 SystUPH_simpleJet1_bTag->Fill(iEvent.hJet_CSV(1,1), w);
700     SystUPH_simpleJet2_bTag->Fill(iEvent.hJet_CSV(0,1), w);
701 bortigno 1.1 }
702 bortigno 1.7 if( iEvent.hJet_CSV(0,2) > iEvent.hJet_CSV(1,2) ){
703     SystFUPH_simpleJet1_bTag->Fill(iEvent.hJet_CSV(0,2), w);
704     SystFUPH_simpleJet2_bTag->Fill(iEvent.hJet_CSV(1,2), w);
705 bortigno 1.1 }
706     else{
707 bortigno 1.7 SystFUPH_simpleJet1_bTag->Fill(iEvent.hJet_CSV(1,2), w);
708     SystFUPH_simpleJet2_bTag->Fill(iEvent.hJet_CSV(0,2), w);
709 bortigno 1.1 }
710    
711     //here I fill both jets in one histo
712 bortigno 1.7 SystUPH_simpleJets_bTag->Fill(iEvent.hJet_CSV(0,1), w);
713     SystUPH_simpleJets_bTag->Fill(iEvent.hJet_CSV(1,1), w);
714     SystFUPH_simpleJets_bTag->Fill(iEvent.hJet_CSV(0,2), w);
715     SystFUPH_simpleJets_bTag->Fill(iEvent.hJet_CSV(1,2), w);
716 bortigno 1.1
717     SystUPH_HMass->Fill(iEvent.H_jecUP().M(), w);
718     SystUPH_HPt->Fill(iEvent.H_jecUP().Pt(), w);
719     SystUPH_ZH_dPhi->Fill( TMath::Abs(iEvent.H_jecUP().DeltaPhi( iEvent.VectorBoson() ) ), w);
720 bortigno 1.3
721     SystJERUPH_HMass->Fill(iEvent.H_jer(+1).M(), w);
722     SystJERUPH_HPt->Fill(iEvent.H_jer(+1).Pt(), w);
723     SystJERUPH_ZH_dPhi->Fill( TMath::Abs(iEvent.H_jer(+1).DeltaPhi( iEvent.VectorBoson() ) ), w);
724    
725 bortigno 1.1 higgs=iEvent.H_jecUP();
726     addJet.SetPtEtaPhiE(iEvent.aJet_pt_jecUP(0),iEvent.aJet_eta[0],iEvent.aJet_phi[0],iEvent.aJet_e[0]);
727     SystUPH_HdR_addJets->Fill(higgs.DeltaR(addJet), w);
728    
729     //DOWNSCALE
730     SystDOWNH_addJets->Fill(iEvent.CountAddJets_jec(-1), w);
731     SystDOWNH_simpleJet1_pt->Fill(iEvent.hJet_pt_jecDOWN(0), w);
732     SystDOWNH_simpleJet2_pt->Fill(iEvent.hJet_pt_jecDOWN(1), w);
733 bortigno 1.3 SystJERDOWNH_simpleJet1_pt->Fill(iEvent.hJet_jer(0,-1).Pt(), w);
734     SystJERDOWNH_simpleJet2_pt->Fill(iEvent.hJet_jer(1,-1).Pt(), w);
735    
736 bortigno 1.1 //btag sorted by btag
737 bortigno 1.7 if( iEvent.hJet_CSV(0,-1) > iEvent.hJet_CSV(1,-1) ){
738     SystDOWNH_simpleJet1_bTag->Fill(iEvent.hJet_CSV(0,-1), w);
739     SystDOWNH_simpleJet2_bTag->Fill(iEvent.hJet_CSV(1,-1), w);
740 bortigno 1.1 }
741     else{
742 bortigno 1.7 SystDOWNH_simpleJet1_bTag->Fill(iEvent.hJet_CSV(1,-1), w);
743     SystDOWNH_simpleJet2_bTag->Fill(iEvent.hJet_CSV(0,-1), w);
744 bortigno 1.1 }
745 bortigno 1.7 if( iEvent.hJet_CSV(0,-2) > iEvent.hJet_CSV(1,-2) ){
746     SystFDOWNH_simpleJet1_bTag->Fill(iEvent.hJet_CSV(0,-2), w);
747     SystFDOWNH_simpleJet2_bTag->Fill(iEvent.hJet_CSV(1,-2), w);
748 bortigno 1.1 }
749     else{
750 bortigno 1.7 SystFDOWNH_simpleJet1_bTag->Fill(iEvent.hJet_CSV(1,-2), w);
751     SystFDOWNH_simpleJet2_bTag->Fill(iEvent.hJet_CSV(0,-2), w);
752 bortigno 1.1 }
753    
754     //here I fill both jets in one histo
755 bortigno 1.7 SystDOWNH_simpleJets_bTag->Fill(iEvent.hJet_CSV(0,-1), w);
756     SystDOWNH_simpleJets_bTag->Fill(iEvent.hJet_CSV(1,-1), w);
757     SystFDOWNH_simpleJets_bTag->Fill(iEvent.hJet_CSV(0,-2), w);
758     SystFDOWNH_simpleJets_bTag->Fill(iEvent.hJet_CSV(1,-2), w);
759 bortigno 1.1 SystDOWNH_HMass->Fill(iEvent.H_jecDOWN().M(), w);
760     SystDOWNH_HPt->Fill(iEvent.H_jecDOWN().Pt(), w);
761     SystDOWNH_ZH_dPhi->Fill( TMath::Abs( iEvent.H_jecDOWN().DeltaPhi( iEvent.VectorBoson() ) ), w);
762 bortigno 1.3
763     SystJERDOWNH_HMass->Fill(iEvent.H_jer(-1).M(), w);
764     SystJERDOWNH_HPt->Fill(iEvent.H_jer(-1).Pt(), w);
765     SystJERDOWNH_ZH_dPhi->Fill( TMath::Abs(iEvent.H_jer(-1).DeltaPhi( iEvent.VectorBoson() ) ), w);
766    
767 bortigno 1.1 higgs=iEvent.H_jecDOWN();
768     addJet.SetPtEtaPhiE(iEvent.aJet_pt_jecDOWN(0),iEvent.aJet_eta[0],iEvent.aJet_phi[0],iEvent.aJet_e[0]);
769     SystDOWNH_HdR_addJets->Fill(higgs.DeltaR(addJet), w);
770 bortigno 1.3
771 bortigno 1.1 }
772    
773     TH1F * SystUPH_addJets;
774     TH1F * SystUPH_simpleJet1_pt;
775     TH1F * SystUPH_simpleJet2_pt;
776     TH1F * SystUPH_HMass;
777     TH1F * SystUPH_HPt;
778     TH1F * SystUPH_ZH_dPhi;
779     TH1F * SystUPH_HdR_addJets;
780     TH1F * SystUPH_simpleJet1_bTag;
781     TH1F * SystUPH_simpleJet2_bTag;
782     TH1F * SystUPH_simpleJets_bTag;
783     TH1F * SystFUPH_simpleJet1_bTag;
784     TH1F * SystFUPH_simpleJet2_bTag;
785     TH1F * SystFUPH_simpleJets_bTag;
786 bortigno 1.3 TH1F * SystJERUPH_simpleJet1_pt;
787     TH1F * SystJERUPH_simpleJet2_pt;
788     TH1F * SystJERUPH_HMass;
789     TH1F * SystJERUPH_HPt;
790     TH1F * SystJERUPH_ZH_dPhi;
791 bortigno 1.1
792     TH1F * SystDOWNH_addJets;
793     TH1F * SystDOWNH_simpleJet1_pt;
794     TH1F * SystDOWNH_simpleJet2_pt;
795     TH1F * SystDOWNH_HMass;
796     TH1F * SystDOWNH_HPt;
797     TH1F * SystDOWNH_ZH_dPhi;
798     TH1F * SystDOWNH_HdR_addJets;
799     TH1F * SystDOWNH_simpleJet1_bTag;
800     TH1F * SystDOWNH_simpleJet2_bTag;
801     TH1F * SystDOWNH_simpleJets_bTag;
802     TH1F * SystFDOWNH_simpleJet1_bTag;
803     TH1F * SystFDOWNH_simpleJet2_bTag;
804     TH1F * SystFDOWNH_simpleJets_bTag;
805 bortigno 1.3 TH1F * SystJERDOWNH_simpleJet1_pt;
806     TH1F * SystJERDOWNH_simpleJet2_pt;
807     TH1F * SystJERDOWNH_HMass;
808     TH1F * SystJERDOWNH_HPt;
809     TH1F * SystJERDOWNH_ZH_dPhi;
810 bortigno 1.1
811    
812     private:
813    
814     Int_t bin_btag;
815     Double_t min_btag;
816     Double_t max_btag;
817    
818     Int_t bin_SVmass;
819     Double_t min_SVmass;
820     Double_t max_SVmass;
821    
822     Int_t bin_eta;
823     Double_t min_eta;
824     Double_t max_eta;
825    
826     Int_t bin_phi;
827     Double_t min_phi;
828     Double_t max_phi;
829    
830     Int_t bin_deltaEta;
831     Double_t min_deltaEta;
832     Double_t max_deltaEta;
833    
834     Int_t bin_deltaPhi;
835     Double_t min_deltaPhi;
836     Double_t max_deltaPhi;
837    
838     Int_t bin_deltaR;
839     Double_t min_deltaR;
840     Double_t max_deltaR;
841    
842     Int_t bin_mass;
843     Double_t min_mass;
844     Double_t max_mass;
845    
846     Int_t bin_pt;
847     Double_t min_pt;
848     Double_t max_pt;
849    
850     Int_t bin_npvs;
851     Double_t min_npvs;
852     Double_t max_npvs;
853    
854     Int_t bin_addJets;
855     Double_t min_addJets;
856     Double_t max_addJets;
857    
858     Int_t bin_hel;
859     Double_t min_hel;
860     Double_t max_hel;
861    
862     Int_t bin_iso;
863     Double_t min_iso;
864     Double_t max_iso;
865    
866     Int_t bin_dxy;
867     Double_t min_dxy;
868     Double_t max_dxy;
869    
870     };
871    
872    
873     class BDTHistos : public Histos {
874    
875     public:
876    
877     virtual void book(TFile &f, std::string suffix) {
878    
879     TDirectory *subDir;
880     if( ! f.GetDirectory(suffix.c_str()) )
881     subDir = f.mkdir(suffix.c_str());
882     else
883     subDir = f.GetDirectory(suffix.c_str());
884     subDir->cd();
885    
886     bin_BDT = 100;
887     min_BDT = -1;
888     max_BDT = 1;
889    
890     BDTH_BDT = new TH1F(("BDT"+suffix).c_str(),("BDT output ("+suffix+")").c_str(), bin_BDT, min_BDT, max_BDT );
891    
892     }
893    
894     virtual void fill(ntupleReader &iEvent,float w) {
895    
896     // BDTH_BDT->Fill( iEvent.MVA, w );
897     BDTH_BDT->Fill( 1 , w );
898    
899     }
900    
901     TH1F * BDTH_BDT;
902    
903     private:
904    
905     Int_t bin_BDT;
906     Double_t min_BDT;
907     Double_t max_BDT;
908    
909     };
910    
911    
912     class MVAHistos : public Histos {
913    
914     public:
915     MVAHistos( const std::string &channel_):
916     channel(channel_) {}
917    
918     virtual void book(TFile &f, std::string suffix) {
919    
920     suffix+=channel;
921     // std::clog << "Start booking" << std::endl;
922    
923     TDirectory *subDir;
924     if( ! f.GetDirectory(suffix.c_str()) )
925     subDir = f.mkdir(suffix.c_str());
926     else
927     subDir = f.GetDirectory(suffix.c_str());
928     subDir->cd();
929    
930     bin_BDT = 100;
931     min_BDT = -0.8;
932     max_BDT = 0.8;
933    
934     MVAH_BDT = new TH1F(("MVA"+suffix).c_str(),("MVA output ("+suffix+")").c_str(), bin_BDT, min_BDT, max_BDT );
935    
936     }
937    
938     virtual void fill(ntupleReader &iEvent,float w) {
939    
940     TMVA::Reader * reader = new TMVA::Reader();
941    
942     float bbMass,bbPt,btag1,btag2,NaddJet,DeltaRbb,helicity,DeltaPhiVH,bPt1,bPt2,VMass,VPt,pullAngle,DeltaEtabb,deltaPhipfMETjet,pfMET,pfMETsig;
943     std::string analysis("Zee");
944    
945     if(analysis == "Zmm"){
946     reader->AddVariable( "bbMass", &bbMass );
947     reader->AddVariable( "VMass", &VMass );
948     reader->AddVariable( "bbPt", &bbPt );
949     reader->AddVariable( "VPt", &VPt );
950     reader->AddVariable( "btag1", &btag1 );
951     reader->AddVariable( "btag2", &btag2 );
952     reader->AddVariable( "DeltaPhiVH", &DeltaPhiVH);
953     reader->AddVariable( "DeltaEtabb", &DeltaEtabb);
954     }
955     else if(analysis == "Zee"){
956     reader->AddVariable( "H.mass", &bbMass );
957     reader->AddVariable( "H.pt", &bbPt );
958     reader->AddVariable( "H.dEta", &DeltaEtabb);
959     reader->AddVariable( "HVdPhi", &DeltaPhiVH);
960     reader->AddVariable( "V.mass", &VMass );
961     reader->AddVariable( "V.pt", &VPt );
962     reader->AddVariable( "hJet_csv[0]", &btag1 );
963     reader->AddVariable( "hJet_csv[1]", &btag2 );
964     }
965     else if(analysis == "Znn"){
966     reader->AddVariable( "bbMass", &bbMass );
967     reader->AddVariable( "bbPt", &bbPt );
968     reader->AddVariable( "pfMET", &pfMET );
969     reader->AddVariable( "btag1", &btag1 );
970     reader->AddVariable( "btag2", &btag2 );
971     reader->AddVariable( "DeltaPhiVH", &DeltaPhiVH);
972     }
973     else if(analysis == "We"){
974     reader->AddVariable( "bbMass", &bbMass );
975     reader->AddVariable( "bbPt", &bbPt );
976     reader->AddVariable( "VPt", &VPt );
977     reader->AddVariable( "btag1", &btag1 );
978     reader->AddVariable( "btag2", &btag2 );
979     reader->AddVariable( "DeltaPhiVH", &DeltaPhiVH);
980     reader->AddVariable( "DeltaEtabb", &DeltaEtabb);
981     }
982     else if(analysis == "Wm"){
983     reader->AddVariable( "bbMass", &bbMass );
984     reader->AddVariable( "bbPt", &bbPt );
985     reader->AddVariable( "VPt", &VPt );
986     reader->AddVariable( "btag1", &btag1 );
987     reader->AddVariable( "btag2", &btag2 );
988     reader->AddVariable( "DeltaPhiVH", &DeltaPhiVH);
989     reader->AddVariable( "DeltaEtabb", &DeltaEtabb);
990     }
991    
992     // --- Book the MVA methods
993    
994     std::vector<std::string> methods;
995     methods.push_back("BDT");
996     TString dir = "weights/";
997     TString prefix = "MVA";
998     // std::clog << "Booking MVA method..." << std::endl;
999     for (size_t it = 0; it < methods.size(); ++it) {
1000     TString methodName = methods.at(it)+ " method";
1001     TString weightfile = dir + prefix + "_" + methods.at(it) + "_" + channel + TString(".weights.xml");
1002     reader->BookMVA( methodName, weightfile );
1003     }
1004    
1005     bbMass = iEvent.H_mass;
1006     bbPt = iEvent.H_pt;
1007     btag1 = iEvent.hJet_csv[0];
1008     btag2 = iEvent.hJet_csv[1];
1009     NaddJet = iEvent.naJets; // FIX ME
1010     DeltaRbb = iEvent.H_dR;
1011     helicity = iEvent.hJet_cosTheta[0];
1012     DeltaPhiVH = iEvent.HVdPhi;
1013     bPt1 = iEvent.hJet_pt[0];
1014     bPt2 = iEvent.hJet_pt[1];
1015     VMass = iEvent.V_mass;
1016     VPt = iEvent.V_pt;
1017     pullAngle = iEvent.deltaPullAngle;
1018     DeltaEtabb = iEvent.H_dEta;
1019     deltaPhipfMETjet = iEvent.minDeltaPhijetMET;
1020     pfMET = iEvent.MET_et;
1021     pfMETsig = iEvent.MET_sig;
1022    
1023     MVAH_BDT->Fill( reader->EvaluateMVA( "BDT method" ) );
1024    
1025     }
1026    
1027     TH1F * MVAH_BDT;
1028    
1029     private:
1030    
1031     const std::string channel;
1032     Int_t bin_BDT;
1033     Double_t min_BDT;
1034     Double_t max_BDT;
1035    
1036     };
1037    
1038    
1039    
1040     class IVFHistos : public Histos {
1041    
1042     public:
1043    
1044     virtual void book(TFile &f, std::string suffix) {
1045    
1046     TDirectory *subDir;
1047     if( ! f.GetDirectory(suffix.c_str()) )
1048     subDir = f.mkdir(suffix.c_str());
1049     else
1050     subDir = f.GetDirectory(suffix.c_str());
1051     subDir->cd();
1052    
1053     bin_mass = 30;
1054     min_mass = 0;
1055     max_mass = 300;
1056    
1057     bin_SVmass = 50;
1058     min_SVmass = 0;
1059     max_SVmass = 10;
1060    
1061     bin_pt = 50;
1062     min_pt = 0;
1063     max_pt = 500;
1064    
1065     bin_SVpt = 50;
1066     min_SVpt = 0;
1067     max_SVpt = 100;
1068    
1069     bin_hel = 10;
1070     min_hel = 0;
1071     max_hel = 1;
1072    
1073     bin_dxy = 20;
1074     min_dxy = -0.2;
1075     max_dxy = 0.2;
1076    
1077     bin_iso = 20;
1078     min_iso = 0;
1079     max_iso = 0.5;
1080    
1081     bin_btag = 20;
1082     min_btag = 0;
1083     max_btag = 1;
1084    
1085     bin_npvs = 30;
1086     min_npvs = 0;
1087     max_npvs = 30;
1088    
1089     bin_jets = 10;
1090     min_jets = 0;
1091     max_jets = 10;
1092    
1093     bin_eta = bin_phi = 20;
1094     min_eta = min_phi = -5;
1095     max_eta = max_phi = 5;
1096    
1097     bin_deltaR = bin_deltaPhi = bin_deltaEta = 8;
1098     min_deltaR = min_deltaPhi = min_deltaEta = 0;
1099     max_deltaR = max_deltaPhi = max_deltaEta = 5;
1100    
1101     //Candidates
1102     IVFH_nPVs = new TH1F(("nPVs"+suffix).c_str(),("Number of reconstructed PV ("+suffix+")").c_str(), bin_npvs, min_npvs, max_npvs );
1103     IVFH_nSvs = new TH1F(("nSvs"+suffix).c_str(),("Number of reconstructed PV ("+suffix+")").c_str(), bin_npvs, min_npvs, max_npvs );
1104     IVFH_numOfJets = new TH1F(("NumOfJets"+suffix).c_str(),("Number of AK5 ("+suffix+")").c_str(), bin_jets, min_jets, max_jets );
1105    
1106     IVFH_met_et = new TH1F(("MET_et"+suffix).c_str(),("Missing transverse energy ("+suffix+")").c_str(), bin_pt, min_pt, max_pt*0.5 );
1107     IVFH_met_sig = new TH1F(("MET_sig"+suffix).c_str(),("MET significance("+suffix+")").c_str(), bin_pt, min_pt, max_pt*0.1 );
1108    
1109     IVFH_vectorLepton1_pt = new TH1F(("vectorLepton1_pt"+suffix).c_str(),("Vector Lepton1 pt ("+suffix+")").c_str(), bin_pt, min_pt, max_pt*0.8 );
1110     IVFH_vectorLepton2_pt = new TH1F(("vectorLepton2_pt"+suffix).c_str(),("Vector Lepton2 pt ("+suffix+")").c_str(), bin_pt, min_pt, max_pt*0.8 );
1111     IVFH_vectorLepton1_phi = new TH1F(("vectorLepton1_phi"+suffix).c_str(),("Vector Lepton1 phi ("+suffix+")").c_str(), bin_phi, min_phi, max_phi );
1112     IVFH_vectorLepton2_phi = new TH1F(("vectorLepton2_phi"+suffix).c_str(),("Vector Lepton2 phi ("+suffix+")").c_str(), bin_phi, min_phi, max_phi );
1113     IVFH_vectorLepton1_eta = new TH1F(("vectorLepton1_eta"+suffix).c_str(),("Vector Lepton1 eta ("+suffix+")").c_str(), bin_eta, min_eta, max_eta );
1114     IVFH_vectorLepton2_eta = new TH1F(("vectorLepton2_eta"+suffix).c_str(),("Vector Lepton2 eta ("+suffix+")").c_str(), bin_eta, min_eta, max_eta );
1115     IVFH_vectorLepton1_pfCombRelIso = new TH1F(("vectorLepton1_pfCombRelIso"+suffix).c_str(),("Vector Lepton1 pfCombRelIso ("+suffix+")").c_str(), bin_iso, min_iso, max_iso );
1116     IVFH_vectorLepton2_pfCombRelIso = new TH1F(("vectorLepton2_pfCombRelIso"+suffix).c_str(),("Vector Lepton2 pfCombRelIso ("+suffix+")").c_str(), bin_iso, min_iso, max_iso );
1117     IVFH_vectorLepton1_dxy = new TH1F(("vectorLepton1_dxy"+suffix).c_str(),("Vector Lepton1 dxy ("+suffix+")").c_str(), bin_dxy, min_dxy, max_dxy );
1118     IVFH_vectorLepton2_dxy = new TH1F(("vectorLepton2_dxy"+suffix).c_str(),("Vector Lepton2 dxy ("+suffix+")").c_str(), bin_dxy, min_dxy, max_dxy );
1119     IVFH_vectorLepton1_dz = new TH1F(("vectorLepton1_dz"+suffix).c_str(),("Vector Lepton1 dz ("+suffix+")").c_str(), bin_dxy, min_dxy, max_dxy );
1120     IVFH_vectorLepton2_dz = new TH1F(("vectorLepton2_dz"+suffix).c_str(),("Vector Lepton2 dz ("+suffix+")").c_str(), bin_dxy, min_dxy, max_dxy );
1121    
1122     IVFH_simpleJet1_pt = new TH1F(("SimpleJet1_pt"+suffix).c_str(),("Simple Jet1 pt ("+suffix+")").c_str(), bin_pt, min_pt, max_pt*0.8 );
1123     IVFH_simpleJet2_pt = new TH1F(("SimpleJet2_pt"+suffix).c_str(),("Simple Jet2 pt ("+suffix+")").c_str(), bin_pt, min_pt, max_pt*0.8 );
1124     IVFH_simpleJet1_phi = new TH1F(("SimpleJet1_phi"+suffix).c_str(),("Simple Jet1 phi ("+suffix+")").c_str(), bin_phi, min_phi, max_phi );
1125     IVFH_simpleJet2_phi = new TH1F(("SimpleJet2_phi"+suffix).c_str(),("Simple Jet2 phi ("+suffix+")").c_str(), bin_phi, min_phi, max_phi );
1126     IVFH_simpleJet1_eta = new TH1F(("SimpleJet1_eta"+suffix).c_str(),("Simple Jet1 eta ("+suffix+")").c_str(), bin_eta, min_eta, max_eta );
1127     IVFH_simpleJet2_eta = new TH1F(("SimpleJet2_eta"+suffix).c_str(),("Simple Jet2 eta ("+suffix+")").c_str(), bin_eta, min_eta, max_eta );
1128     IVFH_simpleJet1_bTag = new TH1F(("SimpleJet1_bTag"+suffix).c_str(),("Simple Jet1 bTag ("+suffix+")").c_str(), bin_btag, min_btag, max_btag );
1129     IVFH_simpleJet2_bTag = new TH1F(("SimpleJet2_bTag"+suffix).c_str(),("Simple Jet2 bTag ("+suffix+")").c_str(), bin_btag, min_btag, max_btag );
1130    
1131     IVFH_SV1_pt = new TH1F(("SV1_pt"+suffix).c_str(),("SV 1 pt ("+suffix+")").c_str(), bin_SVpt, min_SVpt, max_SVpt );
1132     IVFH_SV2_pt = new TH1F(("SV2_pt"+suffix).c_str(),("SV 2 pt ("+suffix+")").c_str(), bin_SVpt, min_SVpt, max_SVpt );
1133     IVFH_SV1_eta = new TH1F(("SV1_eta"+suffix).c_str(),("SV 1 eta ("+suffix+")").c_str(), bin_eta, min_eta, max_eta );
1134     IVFH_SV2_eta = new TH1F(("SV2_eta"+suffix).c_str(),("SV 2 eta ("+suffix+")").c_str(), bin_eta, min_eta, max_eta );
1135     IVFH_SV1_phi = new TH1F(("SV1_phi"+suffix).c_str(),("SV 1 phi ("+suffix+")").c_str(), bin_phi, min_phi, max_phi );
1136     IVFH_SV2_phi = new TH1F(("SV2_phi"+suffix).c_str(),("SV 2 phi ("+suffix+")").c_str(), bin_phi, min_phi, max_phi );
1137     IVFH_SV1_massBCand = new TH1F(("SV1_massBCand"+suffix).c_str(),("SV 1 massBCand ("+suffix+")").c_str(), bin_SVmass, min_SVmass, max_SVmass );
1138     IVFH_SV2_massBCand = new TH1F(("SV2_massBCand"+suffix).c_str(),("SV 2 massBCand ("+suffix+")").c_str(), bin_SVmass, min_SVmass, max_SVmass );
1139    
1140     IVFH_SVHMass = new TH1F(("SVHMass"+suffix).c_str(),(" SVH Mass ("+suffix+")").c_str(), bin_mass, min_mass, max_mass*0.5 );
1141     IVFH_SVHPt = new TH1F(("SVHPt"+suffix).c_str(),(" SVH Pt ("+suffix+")").c_str(), bin_pt, min_pt, max_pt*0.5 );
1142     IVFH_SVHdR = new TH1F(("SVHdR"+suffix).c_str(),("SVH deltaR ("+suffix+")").c_str(), bin_deltaR, min_deltaR, max_deltaR );
1143     IVFH_SVHdR->GetXaxis()->SetTitle("SV #DeltaR");
1144     IVFH_SVHdPhi = new TH1F(("SVHdPhi"+suffix).c_str(),("SVH deltaPhi ("+suffix+")").c_str(), bin_deltaPhi, min_deltaPhi, max_deltaPhi );
1145     IVFH_SVHdPhi->GetXaxis()->SetTitle("SV #Delta #phi");
1146     IVFH_SVHdEta = new TH1F(("SVHdEta"+suffix).c_str(),("SVH deltaEta ("+suffix+")").c_str(), bin_deltaEta, min_deltaEta, max_deltaEta );
1147     IVFH_SVHdEta->GetXaxis()->SetTitle("SV #Delta #eta");
1148    
1149     IVFH_HMass = new TH1F(("HiggsMass"+suffix).c_str(),(" Higgs Mass ("+suffix+")").c_str(), bin_mass, min_mass, max_mass );
1150     IVFH_HPt = new TH1F(("HiggsPt"+suffix).c_str(),(" Higgs Pt ("+suffix+")").c_str(), bin_pt, min_pt, max_pt );
1151     IVFH_HdR = new TH1F(("HiggsdR"+suffix).c_str(),("Higgs deltaR ("+suffix+")").c_str(), bin_deltaR, min_deltaR, max_deltaR );
1152     IVFH_HdPhi = new TH1F(("HiggsdPhi"+suffix).c_str(),("Higgs deltaPhi ("+suffix+")").c_str(), bin_deltaPhi, min_deltaPhi, max_deltaPhi );
1153     IVFH_HdEta = new TH1F(("HiggsdEta"+suffix).c_str(),("Higgs deltaEta ("+suffix+")").c_str(), bin_deltaEta, min_deltaEta, max_deltaEta );
1154    
1155     IVFH_HHel = new TH1F(("HiggsHel"+suffix).c_str(),("Higgs helicity angle ("+suffix+")").c_str(), bin_hel, min_hel, max_hel );
1156     IVFH_HPullAngle = new TH1F(("HiggsPullAngle"+suffix).c_str(),("Higgs pull angle ("+suffix+")").c_str(), bin_deltaPhi, min_deltaPhi, max_deltaPhi );
1157    
1158     IVFH_ZMass = new TH1F(("ZMass"+suffix).c_str(),(" Z Mass ("+suffix+")").c_str(), 100, 50, 150 );
1159     IVFH_ZPt = new TH1F(("ZPt"+suffix).c_str(),(" Z Pt ("+suffix+")").c_str(), bin_pt, min_pt, max_pt );
1160     IVFH_ZH_dPhi = new TH1F(("ZH_dPhi"+suffix).c_str(),(" ZH delta Phi ("+suffix+")").c_str(), bin_deltaPhi, min_deltaPhi, max_deltaPhi );
1161     IVFH_WMass = new TH1F(("WMass"+suffix).c_str(),(" W Mass ("+suffix+")").c_str(), bin_mass, min_mass, max_mass );
1162     IVFH_WPt = new TH1F(("WPt"+suffix).c_str(),(" W Pt ("+suffix+")").c_str(), bin_pt, min_pt, max_pt );
1163     IVFH_WH_dPhi = new TH1F(("WH_dPhi"+suffix).c_str(),(" WH delta Phi ("+suffix+")").c_str(), bin_deltaPhi, min_deltaPhi, max_deltaPhi );
1164    
1165     }
1166    
1167     virtual void fill(ntupleReader &iEvent,float w) {
1168    
1169     IVFH_nPVs->Fill(iEvent.nPVs, w);
1170     IVFH_nSvs->Fill(iEvent.nSvs, w);
1171     IVFH_numOfJets->Fill(iEvent.CountJets(), w);
1172    
1173     IVFH_met_et->Fill(TMath::Min(iEvent.METnoPUCh_et, iEvent.METnoPU_et ), w);
1174     IVFH_met_sig->Fill(iEvent.MET_sig, w);
1175    
1176     IVFH_vectorLepton1_pt->Fill(iEvent.vLepton_pt[0], w);
1177     IVFH_vectorLepton2_pt->Fill(iEvent.vLepton_pt[1], w);
1178     IVFH_vectorLepton1_phi->Fill(iEvent.vLepton_phi[0], w);
1179     IVFH_vectorLepton2_phi->Fill(iEvent.vLepton_phi[1], w);
1180     IVFH_vectorLepton1_eta->Fill(iEvent.vLepton_eta[0], w);
1181     IVFH_vectorLepton2_eta->Fill(iEvent.vLepton_eta[1], w);
1182     IVFH_vectorLepton1_pfCombRelIso->Fill(iEvent.vLepton_pfCombRelIso[0], w);
1183     IVFH_vectorLepton2_pfCombRelIso->Fill(iEvent.vLepton_pfCombRelIso[1], w);
1184     IVFH_vectorLepton1_dxy->Fill(iEvent.vLepton_dxy[0], w);
1185     IVFH_vectorLepton2_dxy->Fill(iEvent.vLepton_dxy[1], w);
1186     IVFH_vectorLepton1_dz->Fill(iEvent.vLepton_dz[0], w);
1187     IVFH_vectorLepton2_dz->Fill(iEvent.vLepton_dz[1], w);
1188    
1189    
1190     IVFH_simpleJet1_pt->Fill(iEvent.hJet_pt[0], w);
1191     IVFH_simpleJet2_pt->Fill(iEvent.hJet_pt[1], w);
1192     IVFH_simpleJet1_phi->Fill(iEvent.hJet_phi[0], w);
1193     IVFH_simpleJet2_phi->Fill(iEvent.hJet_phi[1], w);
1194     IVFH_simpleJet1_eta->Fill(iEvent.hJet_eta[0], w);
1195     IVFH_simpleJet2_eta->Fill(iEvent.hJet_eta[1], w);
1196     IVFH_simpleJet1_bTag->Fill(iEvent.hJet_csv[0], w);
1197     IVFH_simpleJet2_bTag->Fill(iEvent.hJet_csv[1], w);
1198    
1199     IVFH_SV1_pt->Fill(iEvent.Sv_pt[0], w);
1200     IVFH_SV2_pt->Fill(iEvent.Sv_pt[1], w);
1201     IVFH_SV1_eta->Fill(iEvent.Sv_eta[0], w);
1202     IVFH_SV2_eta->Fill(iEvent.Sv_eta[1], w);
1203     IVFH_SV1_phi->Fill(iEvent.Sv_phi[0], w);
1204     IVFH_SV2_phi->Fill(iEvent.Sv_phi[1], w);
1205     IVFH_SV1_massBCand->Fill(iEvent.Sv_massBCand[0], w);
1206     IVFH_SV2_massBCand->Fill(iEvent.Sv_massBCand[1], w);
1207    
1208     IVFH_SVHMass->Fill(iEvent.SVH_mass, w);
1209     IVFH_SVHPt->Fill(iEvent.SVH_pt, w);
1210     IVFH_SVHdR->Fill(iEvent.SVH_dR, w);
1211     IVFH_SVHdPhi->Fill(TMath::Abs(iEvent.SVH_dPhi), w);
1212     IVFH_SVHdEta->Fill(iEvent.SVH_dEta, w);
1213    
1214     IVFH_HMass->Fill(iEvent.H_mass, w);
1215     IVFH_HPt->Fill(iEvent.H_pt, w);
1216     IVFH_HdR->Fill(iEvent.H_dR, w);
1217     IVFH_HdPhi->Fill(TMath::Abs(iEvent.H_dPhi), w);
1218     IVFH_HdEta->Fill(iEvent.H_dEta, w);
1219     IVFH_HHel->Fill(iEvent.hJet_cosTheta[0], w);
1220     IVFH_HPullAngle->Fill(iEvent.deltaPullAngle, w);
1221    
1222     iType = (VType)iEvent.Vtype;
1223     if( iType == Zmm || iType == Zee || iType == Znn ){
1224     IVFH_ZMass->Fill(iEvent.V_mass, w);
1225     IVFH_ZPt->Fill(iEvent.V_pt, w);
1226     IVFH_ZH_dPhi->Fill(TMath::Abs(iEvent. HVdPhi), w);
1227     }
1228     else{
1229     IVFH_WMass->Fill(iEvent.V_mass, w);
1230     IVFH_WPt->Fill(iEvent.V_pt, w);
1231     IVFH_WH_dPhi->Fill(TMath::Abs(iEvent.HVdPhi), w);
1232     }
1233    
1234    
1235     }
1236    
1237     TH1F * IVFH_nPVs;
1238     TH1F * IVFH_nSvs;
1239     TH1F * IVFH_numOfJets;
1240     TH1F * IVFH_met_et;
1241     TH1F * IVFH_met_sig;
1242    
1243     TH1F * IVFH_vectorLepton1_pt;
1244     TH1F * IVFH_vectorLepton2_pt;
1245     TH1F * IVFH_vectorLepton1_phi;
1246     TH1F * IVFH_vectorLepton2_phi;
1247     TH1F * IVFH_vectorLepton1_eta;
1248     TH1F * IVFH_vectorLepton2_eta;
1249     TH1F * IVFH_vectorLepton1_pfCombRelIso;
1250     TH1F * IVFH_vectorLepton2_pfCombRelIso;
1251     TH1F * IVFH_vectorLepton1_dxy;
1252     TH1F * IVFH_vectorLepton2_dxy;
1253     TH1F * IVFH_vectorLepton1_dz;
1254     TH1F * IVFH_vectorLepton2_dz;
1255    
1256     TH1F * IVFH_simpleJet1_pt;
1257     TH1F * IVFH_simpleJet2_pt;
1258     TH1F * IVFH_simpleJet1_phi;
1259     TH1F * IVFH_simpleJet2_phi;
1260     TH1F * IVFH_simpleJet1_eta;
1261     TH1F * IVFH_simpleJet2_eta;
1262     TH1F * IVFH_simpleJet1_bTag;
1263     TH1F * IVFH_simpleJet2_bTag;
1264    
1265     TH1F * IVFH_SV1_pt;
1266     TH1F * IVFH_SV2_pt;
1267     TH1F * IVFH_SV1_eta;
1268     TH1F * IVFH_SV2_eta;
1269     TH1F * IVFH_SV1_phi;
1270     TH1F * IVFH_SV2_phi;
1271     TH1F * IVFH_SV1_massBCand;
1272     TH1F * IVFH_SV2_massBCand;
1273    
1274     TH1F * IVFH_SVHMass;
1275     TH1F * IVFH_SVHPt;
1276     TH1F * IVFH_SVHdR;
1277     TH1F * IVFH_SVHdPhi;
1278     TH1F * IVFH_SVHdEta;
1279    
1280     TH1F * IVFH_HMass;
1281     TH1F * IVFH_HPt;
1282     TH1F * IVFH_HdR;
1283     TH1F * IVFH_HdPhi;
1284     TH1F * IVFH_HdEta;
1285     TH1F * IVFH_HHel;
1286     TH1F * IVFH_HPullAngle;
1287    
1288     TH1F * IVFH_WMass;
1289     TH1F * IVFH_WPt;
1290     TH1F * IVFH_WH_dPhi;
1291    
1292     TH1F * IVFH_ZMass;
1293     TH1F * IVFH_ZPt;
1294     TH1F * IVFH_ZH_dPhi;
1295    
1296     private:
1297    
1298     Int_t bin_btag;
1299     Double_t min_btag;
1300     Double_t max_btag;
1301    
1302     Int_t bin_deltaEta;
1303     Double_t min_deltaEta;
1304     Double_t max_deltaEta;
1305    
1306     Int_t bin_deltaPhi;
1307     Double_t min_deltaPhi;
1308     Double_t max_deltaPhi;
1309    
1310     Int_t bin_deltaR;
1311     Double_t min_deltaR;
1312     Double_t max_deltaR;
1313    
1314     Int_t bin_mass;
1315     Double_t min_mass;
1316     Double_t max_mass;
1317    
1318     Int_t bin_SVmass;
1319     Double_t min_SVmass;
1320     Double_t max_SVmass;
1321    
1322     Int_t bin_pt;
1323     Double_t min_pt;
1324     Double_t max_pt;
1325    
1326     Int_t bin_SVpt;
1327     Double_t min_SVpt;
1328     Double_t max_SVpt;
1329    
1330     Int_t bin_phi;
1331     Double_t min_phi;
1332     Double_t max_phi;
1333    
1334     Int_t bin_eta;
1335     Double_t min_eta;
1336     Double_t max_eta;
1337    
1338     Int_t bin_npvs;
1339     Double_t min_npvs;
1340     Double_t max_npvs;
1341    
1342     Int_t bin_jets;
1343     Double_t min_jets;
1344     Double_t max_jets;
1345    
1346     Int_t bin_hel;
1347     Double_t min_hel;
1348     Double_t max_hel;
1349    
1350     Int_t bin_iso;
1351     Double_t min_iso;
1352     Double_t max_iso;
1353    
1354     Int_t bin_dxy;
1355     Double_t min_dxy;
1356     Double_t max_dxy;
1357    
1358    
1359     };
1360    
1361    
1362    
1363     class ZZHistos : public Histos {
1364    
1365     public:
1366    
1367     virtual void book(TFile &f, std::string suffix) {
1368    
1369     TDirectory *subDir;
1370     if( ! f.GetDirectory(suffix.c_str()) )
1371     subDir = f.mkdir(suffix.c_str());
1372     else
1373     subDir = f.GetDirectory(suffix.c_str());
1374     subDir->cd();
1375    
1376     bin_mass = 30;
1377     min_mass = 0;
1378     max_mass = 300;
1379    
1380     bin_pt = 50;
1381     min_pt = 0;
1382     max_pt = 500;
1383    
1384     bin_hel = 10;
1385     min_hel = 0;
1386     max_hel = 1;
1387    
1388     bin_dxy = 20;
1389     min_dxy = -0.2;
1390     max_dxy = 0.2;
1391    
1392     bin_iso = 20;
1393     min_iso = 0;
1394     max_iso = 0.5;
1395    
1396     bin_btag = 20;
1397     min_btag = 0;
1398     max_btag = 1;
1399    
1400     bin_npvs = 30;
1401     min_npvs = 0;
1402     max_npvs = 30;
1403    
1404     bin_addJets = 10;
1405     min_addJets = 0;
1406     max_addJets = 10;
1407    
1408     bin_eta = bin_phi = 20;
1409     min_eta = min_phi = -5;
1410     max_eta = max_phi = 5;
1411    
1412     bin_deltaR = bin_deltaPhi = bin_deltaEta = 20;
1413     min_deltaR = min_deltaPhi = min_deltaEta = 0;
1414     max_deltaR = max_deltaPhi = max_deltaEta = 5;
1415    
1416     //Candidates
1417     ZZH_nPVs = new TH1F(("nPVs"+suffix).c_str(),("Number of reconstructed PV ("+suffix+")").c_str(), bin_npvs, min_npvs, max_npvs );
1418     ZZH_addJets = new TH1F(("addJets"+suffix).c_str(),("Number of additional AK5 ("+suffix+")").c_str(), bin_addJets, min_addJets, max_addJets );
1419    
1420     ZZH_met_et = new TH1F(("MET_et"+suffix).c_str(),("Missing transverse energy ("+suffix+")").c_str(), bin_pt, min_pt, max_pt*0.5 );
1421     ZZH_met_sig = new TH1F(("MET_sig"+suffix).c_str(),("MET significance("+suffix+")").c_str(), bin_pt, min_pt, max_pt*0.1 );
1422    
1423     ZZH_vectorLepton1_pt = new TH1F(("vectorLepton1_pt"+suffix).c_str(),("Vector Lepton1 pt ("+suffix+")").c_str(), bin_pt, min_pt, max_pt*0.8 );
1424     ZZH_vectorLepton2_pt = new TH1F(("vectorLepton2_pt"+suffix).c_str(),("Vector Lepton2 pt ("+suffix+")").c_str(), bin_pt, min_pt, max_pt*0.8 );
1425     ZZH_vectorLepton1_phi = new TH1F(("vectorLepton1_phi"+suffix).c_str(),("Vector Lepton1 phi ("+suffix+")").c_str(), bin_phi, min_phi, max_phi );
1426     ZZH_vectorLepton2_phi = new TH1F(("vectorLepton2_phi"+suffix).c_str(),("Vector Lepton2 phi ("+suffix+")").c_str(), bin_phi, min_phi, max_phi );
1427     ZZH_vectorLepton1_eta = new TH1F(("vectorLepton1_eta"+suffix).c_str(),("Vector Lepton1 eta ("+suffix+")").c_str(), bin_eta, min_eta, max_eta );
1428     ZZH_vectorLepton2_eta = new TH1F(("vectorLepton2_eta"+suffix).c_str(),("Vector Lepton2 eta ("+suffix+")").c_str(), bin_eta, min_eta, max_eta );
1429     ZZH_vectorLepton1_pfCombRelIso = new TH1F(("vectorLepton1_pfCombRelIso"+suffix).c_str(),("Vector Lepton1 pfCombRelIso ("+suffix+")").c_str(), bin_iso, min_iso, max_iso );
1430     ZZH_vectorLepton2_pfCombRelIso = new TH1F(("vectorLepton2_pfCombRelIso"+suffix).c_str(),("Vector Lepton2 pfCombRelIso ("+suffix+")").c_str(), bin_iso, min_iso, max_iso );
1431     ZZH_vectorLepton1_dxy = new TH1F(("vectorLepton1_dxy"+suffix).c_str(),("Vector Lepton1 dxy ("+suffix+")").c_str(), bin_dxy, min_dxy, max_dxy );
1432     ZZH_vectorLepton2_dxy = new TH1F(("vectorLepton2_dxy"+suffix).c_str(),("Vector Lepton2 dxy ("+suffix+")").c_str(), bin_dxy, min_dxy, max_dxy );
1433     ZZH_vectorLepton1_dz = new TH1F(("vectorLepton1_dz"+suffix).c_str(),("Vector Lepton1 dz ("+suffix+")").c_str(), bin_dxy, min_dxy, max_dxy );
1434     ZZH_vectorLepton2_dz = new TH1F(("vectorLepton2_dz"+suffix).c_str(),("Vector Lepton2 dz ("+suffix+")").c_str(), bin_dxy, min_dxy, max_dxy );
1435    
1436     ZZH_additionalLepton1_pt = new TH1F(("additionalLepton1_pt"+suffix).c_str(),("Additional Lepton1 pt ("+suffix+")").c_str(), bin_pt, min_pt, max_pt*0.8 );
1437     ZZH_additionalLepton2_pt = new TH1F(("additionalLepton2_pt"+suffix).c_str(),("Additional Lepton2 pt ("+suffix+")").c_str(), bin_pt, min_pt, max_pt*0.8 );
1438     ZZH_additionalLepton1_phi = new TH1F(("additionalLepton1_phi"+suffix).c_str(),("Additional Lepton1 phi ("+suffix+")").c_str(), bin_phi, min_phi, max_phi );
1439     ZZH_additionalLepton2_phi = new TH1F(("additionalLepton2_phi"+suffix).c_str(),("Additional Lepton2 phi ("+suffix+")").c_str(), bin_phi, min_phi, max_phi );
1440     ZZH_additionalLepton1_eta = new TH1F(("additionalLepton1_eta"+suffix).c_str(),("Additional Lepton1 eta ("+suffix+")").c_str(), bin_eta, min_eta, max_eta );
1441     ZZH_additionalLepton2_eta = new TH1F(("additionalLepton2_eta"+suffix).c_str(),("Additional Lepton2 eta ("+suffix+")").c_str(), bin_eta, min_eta, max_eta );
1442     ZZH_additionalLepton1_pfCombRelIso = new TH1F(("additionalLepton1_pfCombRelIso"+suffix).c_str(),("Additional Lepton1 pfCombRelIso ("+suffix+")").c_str(), bin_iso, min_iso, max_iso );
1443     ZZH_additionalLepton2_pfCombRelIso = new TH1F(("additionalLepton2_pfCombRelIso"+suffix).c_str(),("Additional Lepton2 pfCombRelIso ("+suffix+")").c_str(), bin_iso, min_iso, max_iso );
1444     ZZH_additionalLepton1_dxy = new TH1F(("additionalLepton1_dxy"+suffix).c_str(),("Additional Lepton1 dxy ("+suffix+")").c_str(), bin_dxy, min_dxy, max_dxy );
1445     ZZH_additionalLepton2_dxy = new TH1F(("additionalLepton2_dxy"+suffix).c_str(),("Additional Lepton2 dxy ("+suffix+")").c_str(), bin_dxy, min_dxy, max_dxy );
1446     ZZH_additionalLepton1_dz = new TH1F(("additionalLepton1_dz"+suffix).c_str(),("Additional Lepton1 dz ("+suffix+")").c_str(), bin_dxy, min_dxy, max_dxy );
1447     ZZH_additionalLepton2_dz = new TH1F(("additionalLepton2_dz"+suffix).c_str(),("Additional Lepton2 dz ("+suffix+")").c_str(), bin_dxy, min_dxy, max_dxy );
1448    
1449     ZZH_ZMass = new TH1F(("ZMass"+suffix).c_str(),(" Z Mass ("+suffix+")").c_str(), 100, 50, 150 );
1450     ZZH_ZPt = new TH1F(("ZPt"+suffix).c_str(),(" Z Pt ("+suffix+")").c_str(), bin_pt, min_pt, max_pt );
1451     ZZH_WMass = new TH1F(("WMass"+suffix).c_str(),(" W Mass ("+suffix+")").c_str(), bin_mass, min_mass, max_mass );
1452     ZZH_WPt = new TH1F(("WPt"+suffix).c_str(),(" W Pt ("+suffix+")").c_str(), bin_pt, min_pt, max_pt );
1453    
1454     ZZH_ZZMass = new TH1F(("ZZMass"+suffix).c_str(),(" ZZ Mass ("+suffix+")").c_str(), 100, 50, 150 );
1455     ZZH_ZZPt = new TH1F(("ZZPt"+suffix).c_str(),(" ZZ Pt ("+suffix+")").c_str(), bin_pt, min_pt, max_pt );
1456     ZZH_WZMass = new TH1F(("WZMass"+suffix).c_str(),(" WZ Mass ("+suffix+")").c_str(), bin_mass, min_mass, max_mass );
1457     ZZH_WZPt = new TH1F(("WZPt"+suffix).c_str(),(" WZ Pt ("+suffix+")").c_str(), bin_pt, min_pt, max_pt );
1458    
1459     ZZH_ZZ_dPhi = new TH1F(("ZZ_dPhi"+suffix).c_str(),(" ZZ delta Phi ("+suffix+")").c_str(), bin_deltaPhi, min_deltaPhi, max_deltaPhi );
1460     ZZH_ZZ_dEta = new TH1F(("ZZ_dEta"+suffix).c_str(),(" ZZ delta Eta ("+suffix+")").c_str(), bin_deltaEta, min_deltaEta, max_deltaEta );
1461     ZZH_ZZ_dR = new TH1F(("ZZ_dR"+suffix).c_str(),(" ZZ delta R ("+suffix+")").c_str(), bin_deltaR, min_deltaR, max_deltaR );
1462     ZZH_WZ_dPhi = new TH1F(("WZ_dPhi"+suffix).c_str(),(" WZ delta Phi ("+suffix+")").c_str(), bin_deltaPhi, min_deltaPhi, max_deltaPhi );
1463     ZZH_WZ_dEta = new TH1F(("WZ_dEta"+suffix).c_str(),(" WZ delta Eta ("+suffix+")").c_str(), bin_deltaEta, min_deltaEta, max_deltaEta );
1464     ZZH_WZ_dR = new TH1F(("WZ_dR"+suffix).c_str(),(" WZ delta R ("+suffix+")").c_str(), bin_deltaR, min_deltaR, max_deltaR );
1465    
1466    
1467     }
1468    
1469     virtual void fill(ntupleReader &iEvent,float w) {
1470    
1471     ZZH_nPVs->Fill(iEvent.nPVs, w);
1472     ZZH_addJets->Fill(iEvent.CountAddJets(), w);
1473    
1474     ZZH_met_et->Fill(TMath::Min(iEvent.METnoPUCh_et, iEvent.METnoPU_et ), w);
1475     ZZH_met_sig->Fill(iEvent.MET_sig, w);
1476    
1477     ZZH_vectorLepton1_pt->Fill(iEvent.vLepton_pt[0], w);
1478     ZZH_vectorLepton2_pt->Fill(iEvent.vLepton_pt[1], w);
1479     ZZH_vectorLepton1_phi->Fill(iEvent.vLepton_phi[0], w);
1480     ZZH_vectorLepton2_phi->Fill(iEvent.vLepton_phi[1], w);
1481     ZZH_vectorLepton1_eta->Fill(iEvent.vLepton_eta[0], w);
1482     ZZH_vectorLepton2_eta->Fill(iEvent.vLepton_eta[1], w);
1483     ZZH_vectorLepton1_pfCombRelIso->Fill(iEvent.vLepton_pfCombRelIso[0], w);
1484     ZZH_vectorLepton2_pfCombRelIso->Fill(iEvent.vLepton_pfCombRelIso[1], w);
1485     ZZH_vectorLepton1_dxy->Fill(iEvent.vLepton_dxy[0], w);
1486     ZZH_vectorLepton2_dxy->Fill(iEvent.vLepton_dxy[1], w);
1487     ZZH_vectorLepton1_dz->Fill(iEvent.vLepton_dz[0], w);
1488     ZZH_vectorLepton2_dz->Fill(iEvent.vLepton_dz[1], w);
1489    
1490     ZZH_additionalLepton1_pt->Fill(iEvent.aLepton_pt[0], w);
1491     ZZH_additionalLepton2_pt->Fill(iEvent.aLepton_pt[1], w);
1492     ZZH_additionalLepton1_phi->Fill(iEvent.aLepton_phi[0], w);
1493     ZZH_additionalLepton2_phi->Fill(iEvent.aLepton_phi[1], w);
1494     ZZH_additionalLepton1_eta->Fill(iEvent.aLepton_eta[0], w);
1495     ZZH_additionalLepton2_eta->Fill(iEvent.aLepton_eta[1], w);
1496     ZZH_additionalLepton1_pfCombRelIso->Fill(iEvent.aLepton_pfCombRelIso[0], w);
1497     ZZH_additionalLepton2_pfCombRelIso->Fill(iEvent.aLepton_pfCombRelIso[1], w);
1498     ZZH_additionalLepton1_dxy->Fill(iEvent.aLepton_dxy[0], w);
1499     ZZH_additionalLepton2_dxy->Fill(iEvent.aLepton_dxy[1], w);
1500     ZZH_additionalLepton1_dz->Fill(iEvent.aLepton_dz[0], w);
1501     ZZH_additionalLepton2_dz->Fill(iEvent.aLepton_dz[1], w);
1502    
1503     iType = (VType)iEvent.Vtype;
1504    
1505     V1.SetPtEtaPhiM( iEvent.V_pt,
1506     iEvent.V_eta,
1507     iEvent.V_phi,
1508     iEvent.V_mass );
1509     addLep1.SetPtEtaPhiM( iEvent.aLepton_pt[0],
1510     iEvent.aLepton_eta[0],
1511     iEvent.aLepton_phi[0],
1512     iEvent.aLepton_mass[0] );
1513     addLep2.SetPtEtaPhiM( iEvent.aLepton_pt[1],
1514     iEvent.aLepton_eta[1],
1515     iEvent.aLepton_phi[1],
1516     iEvent.aLepton_mass[1] );
1517     V2 = addLep1 + addLep2;
1518    
1519     if( iType == Zmm || iType == Zee || iType == Znn ){
1520     ZZH_ZMass->Fill(iEvent.V_mass, w);
1521     ZZH_ZPt->Fill(iEvent.V_pt, w);
1522     ZZH_ZZMass->Fill(V2.M(), w);
1523     ZZH_ZZPt->Fill(V2.Pt(), w);
1524     ZZH_ZZ_dPhi->Fill(TMath::Abs(V1.DeltaPhi(V2)), w);
1525     ZZH_ZZ_dEta->Fill(TMath::Abs(V1.Eta() - V2.Eta() ), w);
1526     ZZH_ZZ_dR->Fill(V1.DeltaR(V2), w);
1527     }
1528     else{
1529     ZZH_WMass->Fill(iEvent.V_mass, w);
1530     ZZH_WPt->Fill(iEvent.V_pt, w);
1531     ZZH_WZMass->Fill(V2.M(), w);
1532     ZZH_WZPt->Fill(V2.Pt(), w);
1533     ZZH_WZ_dPhi->Fill(TMath::Abs(V1.DeltaPhi(V2)), w);
1534     ZZH_WZ_dEta->Fill(TMath::Abs(V1.Eta() - V2.Eta() ), w);
1535     ZZH_WZ_dR->Fill(V1.DeltaR(V2), w);
1536     }
1537    
1538    
1539     }
1540    
1541     TLorentzVector addLep1,addLep2,V1,V2;
1542    
1543     TH1F * ZZH_nPVs;
1544     TH1F * ZZH_addJets;
1545     TH1F * ZZH_met_et;
1546     TH1F * ZZH_met_sig;
1547    
1548     TH1F * ZZH_vectorLepton1_pt;
1549     TH1F * ZZH_vectorLepton2_pt;
1550     TH1F * ZZH_vectorLepton1_phi;
1551     TH1F * ZZH_vectorLepton2_phi;
1552     TH1F * ZZH_vectorLepton1_eta;
1553     TH1F * ZZH_vectorLepton2_eta;
1554     TH1F * ZZH_vectorLepton1_pfCombRelIso;
1555     TH1F * ZZH_vectorLepton2_pfCombRelIso;
1556     TH1F * ZZH_vectorLepton1_dxy;
1557     TH1F * ZZH_vectorLepton2_dxy;
1558     TH1F * ZZH_vectorLepton1_dz;
1559     TH1F * ZZH_vectorLepton2_dz;
1560    
1561     TH1F * ZZH_additionalLepton1_pt;
1562     TH1F * ZZH_additionalLepton2_pt;
1563     TH1F * ZZH_additionalLepton1_phi;
1564     TH1F * ZZH_additionalLepton2_phi;
1565     TH1F * ZZH_additionalLepton1_eta;
1566     TH1F * ZZH_additionalLepton2_eta;
1567     TH1F * ZZH_additionalLepton1_pfCombRelIso;
1568     TH1F * ZZH_additionalLepton2_pfCombRelIso;
1569     TH1F * ZZH_additionalLepton1_dxy;
1570     TH1F * ZZH_additionalLepton2_dxy;
1571     TH1F * ZZH_additionalLepton1_dz;
1572     TH1F * ZZH_additionalLepton2_dz;
1573    
1574     TH1F * ZZH_WMass;
1575     TH1F * ZZH_WPt;
1576     TH1F * ZZH_WZMass;
1577     TH1F * ZZH_WZPt;
1578     TH1F * ZZH_ZMass;
1579     TH1F * ZZH_ZPt;
1580     TH1F * ZZH_ZZMass;
1581     TH1F * ZZH_ZZPt;
1582    
1583     TH1F * ZZH_ZZ_dPhi;
1584     TH1F * ZZH_ZZ_dEta;
1585     TH1F * ZZH_ZZ_dR;
1586     TH1F * ZZH_WZ_dPhi;
1587     TH1F * ZZH_WZ_dEta;
1588     TH1F * ZZH_WZ_dR;
1589    
1590     private:
1591    
1592     Int_t bin_btag;
1593     Double_t min_btag;
1594     Double_t max_btag;
1595    
1596     Int_t bin_eta;
1597     Double_t min_eta;
1598     Double_t max_eta;
1599    
1600     Int_t bin_phi;
1601     Double_t min_phi;
1602     Double_t max_phi;
1603    
1604     Int_t bin_deltaEta;
1605     Double_t min_deltaEta;
1606     Double_t max_deltaEta;
1607    
1608     Int_t bin_deltaPhi;
1609     Double_t min_deltaPhi;
1610     Double_t max_deltaPhi;
1611    
1612     Int_t bin_deltaR;
1613     Double_t min_deltaR;
1614     Double_t max_deltaR;
1615    
1616     Int_t bin_mass;
1617     Double_t min_mass;
1618     Double_t max_mass;
1619    
1620     Int_t bin_pt;
1621     Double_t min_pt;
1622     Double_t max_pt;
1623    
1624     Int_t bin_npvs;
1625     Double_t min_npvs;
1626     Double_t max_npvs;
1627    
1628     Int_t bin_addJets;
1629     Double_t min_addJets;
1630     Double_t max_addJets;
1631    
1632     Int_t bin_hel;
1633     Double_t min_hel;
1634     Double_t max_hel;
1635    
1636     Int_t bin_iso;
1637     Double_t min_iso;
1638     Double_t max_iso;
1639    
1640     Int_t bin_dxy;
1641     Double_t min_dxy;
1642     Double_t max_dxy;
1643    
1644     };
1645    
1646    
1647     // FIX ME
1648    
1649     /* class HardJetHistos : public Histos { */
1650    
1651     /* public: */
1652    
1653     /* virtual void book(TFile &f, std::string suffix) { */
1654    
1655     /* TDirectory *subDir; */
1656     /* if( ! f.GetDirectory(suffix.c_str()) ) */
1657     /* subDir = f.mkdir(suffix.c_str()); */
1658     /* else */
1659     /* subDir = f.GetDirectory(suffix.c_str()); */
1660     /* subDir->cd(); */
1661    
1662     /* bin_mass = 500; */
1663     /* min_mass = 0; */
1664     /* max_mass = 300; */
1665    
1666     /* bin_pt = 500; */
1667     /* min_pt = 0; */
1668     /* max_pt = 500; */
1669    
1670     /* bin_hel = 50; */
1671     /* min_hel = 0; */
1672     /* max_hel = 1; */
1673    
1674     /* bin_btag = 20; */
1675     /* min_btag = 0; */
1676     /* max_btag = 1; */
1677    
1678     /* bin_deltaR = bin_deltaPhi = bin_deltaEta = 20; */
1679     /* min_deltaR = min_deltaPhi = min_deltaEta = 0; */
1680     /* max_deltaR = max_deltaPhi = max_deltaEta = 5; */
1681    
1682     /* //Candidates */
1683    
1684     /* HardJetH_subJet1_pt = new TH1F(("SubJet1_pt"+suffix).c_str(),("Sub Jet1 pt ("+suffix+")").c_str(), bin_pt, min_pt, max_pt ); */
1685     /* HardJetH_subJet2_pt = new TH1F(("SubJet2_pt"+suffix).c_str(),("Sub Jet2 pt ("+suffix+")").c_str(), bin_pt, min_pt, max_pt ); */
1686     /* HardJetH_subJet1_bTag = new TH1F(("SubJet1_bTag"+suffix).c_str(),("Sub Jet1 bTag ("+suffix+")").c_str(), bin_btag, min_btag, max_btag ); */
1687     /* HardJetH_subJet2_bTag = new TH1F(("SubJet2_bTag"+suffix).c_str(),("Sub Jet2 bTag ("+suffix+")").c_str(), bin_btag, min_btag, max_btag ); */
1688     /* HardJetH_subJets_dR = new TH1F(("SubJets_dR"+suffix).c_str(),("Sub Jets deltaR ("+suffix+")").c_str(), bin_deltaR, min_deltaR, max_deltaR ); */
1689     /* HardJetH_subJets_dPhi = new TH1F(("SubJets_dPhi"+suffix).c_str(),("Sub Jets deltaPhi ("+suffix+")").c_str(), bin_deltaPhi, min_deltaPhi, max_deltaPhi ); */
1690     /* HardJetH_subJets_dEta = new TH1F(("SubJets_dEta"+suffix).c_str(),("Sub Jets deltaEta ("+suffix+")").c_str(), bin_deltaEta, min_deltaEta, max_deltaEta ); */
1691    
1692     /* HardJetH_HMass = new TH1F(("HiggsMass"+suffix).c_str(),(" Higgs Mass ("+suffix+")").c_str(), bin_mass, min_mass, max_mass ); */
1693     /* HardJetH_HPt = new TH1F(("HiggsPt"+suffix).c_str(),(" Higgs Pt ("+suffix+")").c_str(), bin_pt, min_pt, max_pt ); */
1694     /* HardJetH_HHel = new TH1F(("HiggsHel"+suffix).c_str(),("Higgs helicity angle ("+suffix+")").c_str(), bin_hel, min_hel, max_hel ); */
1695    
1696     /* HardJetH_ZMass = new TH1F(("ZMass"+suffix).c_str(),(" Z Mass ("+suffix+")").c_str(), bin_mass, min_mass, max_mass ); */
1697     /* HardJetH_ZPt = new TH1F(("ZPt"+suffix).c_str(),(" Z Pt ("+suffix+")").c_str(), bin_pt, min_pt, max_pt ); */
1698     /* HardJetH_ZH_dPhi = new TH1F(("ZH_dPhi"+suffix).c_str(),(" ZH delta Phi ("+suffix+")").c_str(), bin_deltaPhi, min_deltaPhi, max_deltaPhi ); */
1699    
1700     /* HardJetH_WMass = new TH1F(("WMass"+suffix).c_str(),(" W Mass ("+suffix+")").c_str(), bin_mass, min_mass, max_mass ); */
1701     /* HardJetH_WPt = new TH1F(("WPt"+suffix).c_str(),(" W Pt ("+suffix+")").c_str(), bin_pt, min_pt, max_pt ); */
1702     /* HardJetH_WH_dPhi = new TH1F(("WH_dPhi"+suffix).c_str(),(" WH delta Phi ("+suffix+")").c_str(), bin_deltaPhi, min_deltaPhi, max_deltaPhi ); */
1703    
1704     /* } */
1705    
1706     /* virtual void fill(ntupleReader &iEvent,float w) { */
1707    
1708     /* const VHbbEvent *iEvent = entry.getVHbbEvent(); */
1709     /* if(iEvent) */
1710     /* { const std::vector<VHbbCandidate> *iCand = entry.getVHbbCandidate(); */
1711    
1712     /* //Candidates */
1713     /* if(iCand->size() > 0){ */
1714     /* VHbbCandidate::CandidateType iCandType = candidateType; */
1715     /* VHbbCandidate::HiggsCandidate H = H; */
1716     /* VHbbCandidate::VectorCandidate V = V; */
1717     /* std::vector<VHbbEvent::HardJet> iHardJets = iEvent->hardJets; */
1718     /* VHbbEvent::HardJet iHardJet = iHardJets; */
1719    
1720     /* HardJetH_subJet1_pt->Fill(iEvent.iHardJet.subFourMomentum.at(0).Pt(), w); */
1721     /* HardJetH_subJet2_pt->Fill(iEvent.iHardJet.subFourMomentum.at(1).Pt(), w); */
1722     /* //SubJet information on btag missing */
1723     /* // HardJetH_subJet1_bTag->Fill(iEvent.iHardJet.at(0).csv, w); */
1724     /* // HardJetH_subJet2_bTag->Fill(iEvent.iHardJet.at(1).csv, w); */
1725     /* HardJetH_subJets_dR->Fill(iEvent.iHardJet.subFourMomentum.at(0).DeltaR(iHardJet.subFourMomentum.at(1)), w); */
1726     /* HardJetH_subJets_dPhi->Fill(iEvent.iHardJet.subFourMomentum.at(0).DeltaPhi(iHardJet.subFourMomentum.at(1)), w); */
1727     /* HardJetH_subJets_dEta->Fill(iEvent.TMath::Abs(iHardJet.subFourMomentum.at(0).Eta()-iHardJet.subFourMomentum.at(1).Eta()), w); */
1728    
1729     /* //Here there should be the higgs candidate from HardJet */
1730     /* // HardJetH_HMass->Fill(iEvent.H.p4.M(), w); */
1731     /* // HardJetH_HPt->Fill(iEvent.H.p4.Pt(), w); */
1732     /* // // HardJetH_HHel->Fill(iEvent.H.hel(), w); */
1733     /* // if( iCandType == VHbbCandidate::Zmumu || iCandType == VHbbCandidate::Zee || iCandType == VHbbCandidate::Znn ){ */
1734     /* // HardJetH_ZMass->Fill(iEvent.V.p4.M(), w); */
1735     /* // HardJetH_ZPt->Fill(iEvent.V.p4.Pt(), w); */
1736     /* // HardJetH_ZH_dPhi->Fill(iEvent.V.p4.DeltaPhi(H.p4.Phi()), w); */
1737     /* // } */
1738     /* // else if(iCandType == VHbbCandidate::Wen || iCandType == VHbbCandidate::Wmun){ */
1739     /* // HardJetH_WMass->Fill(iEvent.V.p4.M(), w); */
1740     /* // HardJetH_WPt->Fill(iEvent.V.p4.Pt(), w); */
1741     /* // HardJetH_WH_dPhi->Fill(iEvent.V.p4.DeltaPhi(H.p4.Phi()), w); */
1742     /* // } */
1743     /* } */
1744     /* } */
1745     /* } */
1746    
1747     /* TH1F * HardJetH_subJet1_pt; */
1748     /* TH1F * HardJetH_subJet2_pt; */
1749     /* TH1F * HardJetH_subJet1_bTag; */
1750     /* TH1F * HardJetH_subJet2_bTag; */
1751     /* TH1F * HardJetH_subJets_dR; */
1752     /* TH1F * HardJetH_subJets_dPhi; */
1753     /* TH1F * HardJetH_subJets_dEta; */
1754    
1755     /* TH1F * HardJetH_HMass; */
1756     /* TH1F * HardJetH_HPt; */
1757     /* TH1F * HardJetH_HHel; */
1758     /* TH1F * HardJetH_WMass; */
1759     /* TH1F * HardJetH_WPt; */
1760     /* TH1F * HardJetH_WH_dPhi; */
1761     /* TH1F * HardJetH_ZMass; */
1762     /* TH1F * HardJetH_ZPt; */
1763     /* TH1F * HardJetH_ZH_dPhi; */
1764    
1765     /* private: */
1766    
1767     /* Int_t bin_btag; */
1768     /* Double_t min_btag; */
1769     /* Double_t max_btag; */
1770    
1771     /* Int_t bin_deltaEta; */
1772     /* Double_t min_deltaEta; */
1773     /* Double_t max_deltaEta; */
1774    
1775     /* Int_t bin_deltaPhi; */
1776     /* Double_t min_deltaPhi; */
1777     /* Double_t max_deltaPhi; */
1778    
1779     /* Int_t bin_deltaR; */
1780     /* Double_t min_deltaR; */
1781     /* Double_t max_deltaR; */
1782    
1783     /* Int_t bin_mass; */
1784     /* Double_t min_mass; */
1785     /* Double_t max_mass; */
1786    
1787     /* Int_t bin_pt; */
1788     /* Double_t min_pt; */
1789     /* Double_t max_pt; */
1790    
1791     /* Int_t bin_hel; */
1792     /* Double_t min_hel; */
1793     /* Double_t max_hel; */
1794    
1795     /* }; */
1796    
1797    
1798     #endif