ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/VHbb/plugins/Histos.h
Revision: 1.4
Committed: Fri May 11 09:46:37 2012 UTC (13 years ago) by bortigno
Content type: text/plain
Branch: MAIN
CVS Tags: AN-12-181-7TeV_patch1, AN-12-181-7TeV
Changes since 1.3: +8 -1 lines
Log Message:
by hand MET typeIcorr

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