ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/VHbb/plugins/Histos.h
Revision: 1.3
Committed: Tue May 8 08:13:27 2012 UTC (13 years ago) by bortigno
Content type: text/plain
Branch: MAIN
Changes since 1.2: +66 -5 lines
Log Message:
added JER

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