ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/VHbb/plugins/Histos.h
Revision: 1.5
Committed: Wed Jun 6 12:26:52 2012 UTC (12 years, 11 months ago) by bortigno
Content type: text/plain
Branch: MAIN
Changes since 1.4: +12 -2 lines
Log Message:
add pull angle histos

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