ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/VHbb/plugins/Histos.h
Revision: 1.1
Committed: Fri Apr 27 14:25:30 2012 UTC (13 years ago) by bortigno
Content type: text/plain
Branch: MAIN
Log Message:
Pier code

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