4 |
|
#include <TH1F.h> |
5 |
|
/* #include "DataFormats/GeometryVector/interface/VectorUtil.h" */ |
6 |
|
/* #include "DataFormats/Math/interface/deltaR.h" */ |
7 |
< |
#include "CutsAndHistos.h" |
7 |
> |
#include "../interface/CutsAndHistos.h" |
8 |
|
#include "TLorentzVector.h" |
9 |
|
#include <sstream> |
10 |
|
#include "TKey.h" |
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; |
99 |
> |
bin_btag = 40; |
100 |
> |
min_btag = -1; |
101 |
> |
max_btag = 1; |
102 |
|
|
103 |
|
//Candidates |
104 |
< |
BTagH_bJet1_csv = new TH1F(("BJet1_CSV"+suffix).c_str(),("BJet1 CSV ("+suffix+")").c_str(), bin_btag_prob, min_btag_prob, max_btag_prob ); |
105 |
< |
BTagH_bJet2_csv = new TH1F(("BJet2_CSV"+suffix).c_str(),("BJet2 CSV ("+suffix+")").c_str(), bin_btag_prob, min_btag_prob, max_btag_prob ); |
106 |
< |
/* BTagH_bJet1_csvmva = new TH1F(("BJet1_CSVMVA"+suffix).c_str(),("BJet1 CSVMVA ("+suffix+")").c_str(), bin_btag_prob, min_btag_prob, max_btag_prob ); */ |
107 |
< |
/* 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 ); */ |
104 |
> |
StH_simpleJet1_bTag = new TH1F(("SimpleJet1_bTag"+suffix).c_str(),("Simple Jet1 bTag ("+suffix+")").c_str(), bin_btag, min_btag, max_btag ); |
105 |
> |
StH_simpleJet2_bTag = new TH1F(("SimpleJet2_bTag"+suffix).c_str(),("Simple Jet2 bTag ("+suffix+")").c_str(), bin_btag, min_btag, max_btag ); |
106 |
> |
/* StH_simpleJet1_bTag_reshaped = new TH1F(("SimpleJet1_bTag_reshaped"+suffix).c_str(),("Simple Jet1 bTag reshaped ("+suffix+")").c_str(), bin_btag, min_btag, max_btag ); */ |
107 |
> |
/* StH_simpleJet2_bTag_reshaped = new TH1F(("SimpleJet2_bTag_reshaped"+suffix).c_str(),("Simple Jet2 bTag reshaped ("+suffix+")").c_str(), bin_btag, min_btag, max_btag ); */ |
108 |
|
|
109 |
|
} |
110 |
|
|
111 |
|
virtual void fill(ntupleReader &iEvent,float w) { |
112 |
|
|
113 |
< |
BTagH_bJet1_csv->Fill(iEvent.hJet_csv[0], w); |
114 |
< |
BTagH_bJet2_csv->Fill(iEvent.hJet_csv[1], w); |
115 |
< |
/* BTagH_bJet1_csvmva->Fill(iEvent.H.jets.at(0).csvmva, w); */ |
116 |
< |
/* BTagH_bJet2_csvmva->Fill(iEvent.H.jets.at(1).csvmva, w); */ |
117 |
< |
/* BTagH_bJet1_ssvhe->Fill(iEvent.H.jets.at(0).ssvhe, w); */ |
118 |
< |
/* BTagH_bJet2_ssvhe->Fill(iEvent.H.jets.at(1).ssvhe, w); */ |
119 |
< |
/* BTagH_bJet1_tche->Fill(iEvent.H.jets.at(0).tche, w); */ |
120 |
< |
/* BTagH_bJet2_tche->Fill(iEvent.H.jets.at(1).tche, w); */ |
121 |
< |
/* 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 |
< |
|
113 |
> |
//vertex mas and btag sorted by btag |
114 |
> |
if( iEvent.hJet_CSV(0,0) > iEvent.hJet_CSV(1,0) ){ |
115 |
> |
StH_simpleJet1_bTag->Fill(iEvent.hJet_CSV(0,0), w); |
116 |
> |
StH_simpleJet2_bTag->Fill(iEvent.hJet_CSV(1,0), w); |
117 |
> |
} |
118 |
> |
else{ |
119 |
> |
StH_simpleJet1_bTag->Fill(iEvent.hJet_CSV(1,0), w); |
120 |
> |
StH_simpleJet2_bTag->Fill(iEvent.hJet_CSV(0,0), w); |
121 |
> |
} |
122 |
|
|
123 |
|
} |
124 |
< |
|
125 |
< |
TH1F * BTagH_bJet1_csv; |
126 |
< |
TH1F * BTagH_bJet2_csv; |
127 |
< |
/* 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 |
< |
|
124 |
> |
|
125 |
> |
TH1F * StH_simpleJet1_bTag; |
126 |
> |
TH1F * StH_simpleJet2_bTag; |
127 |
> |
|
128 |
|
private: |
129 |
|
|
130 |
< |
Int_t bin_btag_prob; |
131 |
< |
Double_t min_btag_prob; |
132 |
< |
Double_t max_btag_prob; |
133 |
< |
|
166 |
< |
Int_t bin_btag_count; |
167 |
< |
Double_t min_btag_count; |
168 |
< |
Double_t max_btag_count; |
169 |
< |
|
130 |
> |
Int_t bin_btag; |
131 |
> |
Double_t min_btag; |
132 |
> |
Double_t max_btag; |
133 |
> |
|
134 |
|
}; |
135 |
|
|
136 |
|
|
214 |
|
StH_nPVs = new TH1F(("nPVs"+suffix).c_str(),("Number of reconstructed PV ("+suffix+")").c_str(), bin_npvs, min_npvs, max_npvs ); |
215 |
|
StH_addJets = new TH1F(("addJets"+suffix).c_str(),("Number of additional AK5 ("+suffix+")").c_str(), bin_addJets, min_addJets, max_addJets ); |
216 |
|
|
217 |
+ |
StH_typeImet_et = new TH1F(("typeIMET_et"+suffix).c_str(),("Type corrected missing transverse energy ("+suffix+")").c_str(), bin_pt, min_pt, max_pt*0.5 ); |
218 |
|
StH_met_et = new TH1F(("MET_et"+suffix).c_str(),("Missing transverse energy ("+suffix+")").c_str(), bin_pt, min_pt, max_pt*0.5 ); |
219 |
|
StH_met_sig = new TH1F(("MET_sig"+suffix).c_str(),("MET significance("+suffix+")").c_str(), bin_pt, min_pt, max_pt*0.1 ); |
220 |
|
|
239 |
|
StH_simpleJet2_eta = new TH1F(("SimpleJet2_eta"+suffix).c_str(),("Simple Jet2 eta ("+suffix+")").c_str(), bin_eta, min_eta, max_eta ); |
240 |
|
StH_simpleJet1_bTag = new TH1F(("SimpleJet1_bTag"+suffix).c_str(),("Simple Jet1 bTag ("+suffix+")").c_str(), bin_btag, min_btag, max_btag ); |
241 |
|
StH_simpleJet2_bTag = new TH1F(("SimpleJet2_bTag"+suffix).c_str(),("Simple Jet2 bTag ("+suffix+")").c_str(), bin_btag, min_btag, max_btag ); |
242 |
+ |
StH_simpleJet1_bTag_reshaped = new TH1F(("SimpleJet1_bTag_reshaped"+suffix).c_str(),("Simple Jet1 bTag reshaped ("+suffix+")").c_str(), bin_btag, min_btag, max_btag ); |
243 |
+ |
StH_simpleJet2_bTag_reshaped = new TH1F(("SimpleJet2_bTag_reshaped"+suffix).c_str(),("Simple Jet2 bTag reshaped ("+suffix+")").c_str(), bin_btag, min_btag, max_btag ); |
244 |
|
StH_simpleJet1_vtxMass = new TH1F(("SimpleJet1_vtxMass"+suffix).c_str(),("Simple Jet1 vtxMass ("+suffix+")").c_str(), bin_SVmass, min_SVmass, max_SVmass ); |
245 |
|
StH_simpleJet2_vtxMass = new TH1F(("SimpleJet2_vtxMass"+suffix).c_str(),("Simple Jet2 vtxMass ("+suffix+")").c_str(), bin_SVmass, min_SVmass, max_SVmass ); |
246 |
|
|
247 |
|
StH_simpleJets_bTag = new TH1F(("SimpleJets_bTag"+suffix).c_str(),("Simple Jets bTag ("+suffix+")").c_str(), bin_btag, min_btag, max_btag ); |
248 |
+ |
StH_simpleJets_bTagSum = new TH1F(("SimpleJets_bTagSum"+suffix).c_str(),("Simple Jets bTagSum ("+suffix+")").c_str(), bin_btag*2, min_btag, max_btag*2 ); |
249 |
+ |
StH_simpleJets_bTag_reshaped = new TH1F(("SimpleJets_bTag_reshaped"+suffix).c_str(),("Simple Jets bTag reshaped ("+suffix+")").c_str(), bin_btag, min_btag, max_btag ); |
250 |
+ |
StH_simpleJets_bTag_reshapedSum = new TH1F(("SimpleJets_bTag_reshapedSum"+suffix).c_str(),("Simple Jets bTag reshapedSum ("+suffix+")").c_str(), bin_btag*2, min_btag, max_btag*2 ); |
251 |
|
StH_simpleJets_vtxMass = new TH1F(("SimpleJets_vtxMass"+suffix).c_str(),("Simple Jets vtxMass ("+suffix+")").c_str(), bin_SVmass, min_SVmass, max_SVmass ); |
252 |
|
|
253 |
|
StH_addJet1_pt = new TH1F(("AddJet1_pt"+suffix).c_str(),("Additional Jet1 pt ("+suffix+")").c_str(), bin_pt, min_pt, max_pt*0.8 ); |
263 |
|
StH_HdPhi = new TH1F(("HdPhi"+suffix).c_str(),("Higgs deltaPhi ("+suffix+")").c_str(), bin_deltaPhi, min_deltaPhi, max_deltaPhi ); |
264 |
|
StH_HdEta = new TH1F(("HdEta"+suffix).c_str(),("Higgs deltaEta ("+suffix+")").c_str(), bin_deltaEta, min_deltaEta, max_deltaEta ); |
265 |
|
StH_HHel = new TH1F(("HiggsHel"+suffix).c_str(),("Higgs helicity angle ("+suffix+")").c_str(), bin_hel, min_hel, max_hel ); |
266 |
< |
StH_HPullAngle = new TH1F(("HiggsPullAngle"+suffix).c_str(),("Higgs pull angle ("+suffix+")").c_str(), bin_deltaPhi, min_deltaPhi, max_deltaPhi ); |
266 |
> |
StH_HPullAngle1 = new TH1F(("HiggsPullAngle1"+suffix).c_str(),("Higgs pull angle1 ("+suffix+")").c_str(), bin_phi, min_phi, max_phi ); |
267 |
> |
StH_HPullAngle2 = new TH1F(("HiggsPullAngle2"+suffix).c_str(),("Higgs pull angle2 ("+suffix+")").c_str(), bin_phi, min_phi, max_phi ); |
268 |
> |
StH_HPullAK7Angle1 = new TH1F(("HiggsPullAK7Angle1"+suffix).c_str(),("Higgs pullAK7 angle1 ("+suffix+")").c_str(), bin_phi, min_phi, max_phi ); |
269 |
> |
StH_HPullAK7Angle2 = new TH1F(("HiggsPullAK7Angle2"+suffix).c_str(),("Higgs pullAK7 angle2 ("+suffix+")").c_str(), bin_phi, min_phi, max_phi ); |
270 |
|
StH_HdR_addJets = new TH1F(("HdR_addJets"+suffix).c_str(),("Higgs deltaR addJets ("+suffix+")").c_str(), bin_deltaR, min_deltaR, max_deltaR ); |
271 |
+ |
StH_HdR_leading_addJets = new TH1F(("HdR_leading_addJets"+suffix).c_str(),("Higgs deltaR leading-add Jets ("+suffix+")").c_str(), bin_deltaR, min_deltaR, max_deltaR ); |
272 |
+ |
StH_HdR_following_addJets = new TH1F(("HdR_following_addJets"+suffix).c_str(),("Higgs deltaR following-add Jets ("+suffix+")").c_str(), bin_deltaR, min_deltaR, max_deltaR ); |
273 |
+ |
StH_HdRnorm_addJets = new TH1F(("HdRnorm_addJets"+suffix).c_str(),("Higgs normalized deltaR addJets ("+suffix+")").c_str(), bin_deltaR, min_deltaR, max_deltaR ); |
274 |
|
StH_HMass_addJets = new TH1F(("HiggsMass_addJets"+suffix).c_str(),(" Higgs Mass with addJet ("+suffix+")").c_str(), bin_mass, min_mass, max_mass ); |
275 |
+ |
StH_HMass_leading_addJets = new TH1F(("HiggsMass_leading_addJets"+suffix).c_str(),(" Higgs Mass with leading addJet ("+suffix+")").c_str(), bin_mass, min_mass, max_mass ); |
276 |
+ |
StH_HMass_following_addJets = new TH1F(("HiggsMass_following_addJets"+suffix).c_str(),(" Higgs Mass with following addJet ("+suffix+")").c_str(), bin_mass, min_mass, max_mass ); |
277 |
+ |
StH_HMass_both_addJets = new TH1F(("HiggsMass_both_addJets"+suffix).c_str(),(" Higgs Mass with both addJet ("+suffix+")").c_str(), bin_mass, min_mass, max_mass ); |
278 |
|
|
279 |
|
StH_massDrop = new TH1F(("MassDrop"+suffix).c_str(),(" Higgs Mass Drop ("+suffix+")").c_str(), bin_btag, min_btag, max_btag ); |
280 |
|
StH_y12 = new TH1F(("Y12"+suffix).c_str(),(" Higgs Y12 ("+suffix+")").c_str(), bin_btag, min_btag, max_btag*1.2 ); |
281 |
|
|
303 |
– |
|
282 |
|
StH_ZMass = new TH1F(("ZMass"+suffix).c_str(),(" Z Mass ("+suffix+")").c_str(), 100, 50, 150 ); |
283 |
|
StH_ZPt = new TH1F(("ZPt"+suffix).c_str(),(" Z Pt ("+suffix+")").c_str(), bin_pt, min_pt, max_pt ); |
284 |
|
StH_ZH_dPhi = new TH1F(("ZH_dPhi"+suffix).c_str(),(" ZH delta Phi ("+suffix+")").c_str(), bin_deltaPhi, min_deltaPhi, max_deltaPhi ); |
293 |
|
StH_nPVs->Fill(iEvent.nPVs, w); |
294 |
|
StH_addJets->Fill(iEvent.CountAddJets(), w); |
295 |
|
|
296 |
< |
StH_met_et->Fill( TMath::Min(iEvent.METnoPUCh_et, iEvent.METnoPU_et ), w); |
296 |
> |
StH_typeImet_et->Fill(iEvent.typeIcorrMET(), w); |
297 |
> |
// StH_met_et->Fill( TMath::Min(iEvent.METnoPUCh_et, iEvent.METnoPU_et ), w); |
298 |
> |
StH_met_et->Fill( iEvent.MET_et, w); |
299 |
|
StH_met_sig->Fill(iEvent.MET_sig, w); |
300 |
|
|
301 |
|
StH_vectorLepton1_pt->Fill(iEvent.vLepton_pt[0], w); |
317 |
|
StH_simpleJet2_phi->Fill(iEvent.hJet_phi[1], w); |
318 |
|
StH_simpleJet1_eta->Fill(iEvent.hJet_eta[0], w); |
319 |
|
StH_simpleJet2_eta->Fill(iEvent.hJet_eta[1], w); |
320 |
+ |
|
321 |
|
//vertex mas and btag sorted by btag |
322 |
< |
if( iEvent.hJet_csv[0] > iEvent.hJet_csv[1] ){ |
323 |
< |
StH_simpleJet1_bTag->Fill(iEvent.hJet_csv[0], w); |
324 |
< |
StH_simpleJet2_bTag->Fill(iEvent.hJet_csv[1], w); |
322 |
> |
if( iEvent.hJet_CSV(0,0) > iEvent.hJet_CSV(1,0) ){ |
323 |
> |
StH_simpleJet1_bTag->Fill(iEvent.hJet_CSV(0,0), w); |
324 |
> |
StH_simpleJet2_bTag->Fill(iEvent.hJet_CSV(1,0), w); |
325 |
|
StH_simpleJet1_vtxMass->Fill(iEvent.hJet_vtxMass[0], w); |
326 |
|
} |
327 |
|
else{ |
328 |
< |
StH_simpleJet1_bTag->Fill(iEvent.hJet_csv[1], w); |
329 |
< |
StH_simpleJet2_bTag->Fill(iEvent.hJet_csv[0], w); |
328 |
> |
StH_simpleJet1_bTag->Fill(iEvent.hJet_CSV(1,0), w); |
329 |
> |
StH_simpleJet2_bTag->Fill(iEvent.hJet_CSV(0,0), w); |
330 |
|
StH_simpleJet2_vtxMass->Fill(iEvent.hJet_vtxMass[1], w); |
331 |
< |
} |
331 |
> |
} |
332 |
> |
|
333 |
|
//here I fill both jets in one histo |
334 |
< |
StH_simpleJets_bTag->Fill(iEvent.hJet_csv[0], w); |
335 |
< |
StH_simpleJets_bTag->Fill(iEvent.hJet_csv[1], w); |
334 |
> |
StH_simpleJets_bTagSum->Fill(iEvent.hJet_CSV(0,0)+iEvent.hJet_CSV(1,0), w); |
335 |
> |
StH_simpleJets_bTag->Fill(iEvent.hJet_CSV(0,0), w); |
336 |
> |
StH_simpleJets_bTag->Fill(iEvent.hJet_CSV(1,0), w); |
337 |
|
StH_simpleJets_vtxMass->Fill(iEvent.hJet_vtxMass[0], w); |
338 |
|
StH_simpleJets_vtxMass->Fill(iEvent.hJet_vtxMass[1], w); |
339 |
+ |
|
340 |
+ |
//reshaped btag |
341 |
+ |
//vertex mas and btag sorted by btag |
342 |
+ |
if( iEvent.hJet_csv_nominal[0] > iEvent.hJet_csv_nominal[1] ){ |
343 |
+ |
StH_simpleJet1_bTag_reshaped->Fill(iEvent.hJet_csv_nominal[0], w); |
344 |
+ |
StH_simpleJet2_bTag_reshaped->Fill(iEvent.hJet_csv_nominal[1], w); |
345 |
+ |
} |
346 |
+ |
else{ |
347 |
+ |
StH_simpleJet1_bTag_reshaped->Fill(iEvent.hJet_csv_nominal[1], w); |
348 |
+ |
StH_simpleJet2_bTag_reshaped->Fill(iEvent.hJet_csv_nominal[0], w); |
349 |
+ |
} |
350 |
+ |
StH_simpleJets_bTag_reshapedSum->Fill(iEvent.hJet_csv_nominal[0]+iEvent.hJet_csv_nominal[1], w); |
351 |
+ |
StH_simpleJets_bTag_reshaped->Fill(iEvent.hJet_csv_nominal[0], w); |
352 |
+ |
StH_simpleJets_bTag_reshaped->Fill(iEvent.hJet_csv_nominal[1], w); |
353 |
|
|
354 |
|
StH_HMass->Fill(iEvent.H_mass, w); |
355 |
|
StH_HPt->Fill(iEvent.H_pt, w); |
358 |
|
StH_HdEta->Fill(iEvent.H_dEta, w); |
359 |
|
|
360 |
|
StH_HHel->Fill(iEvent.hJet_cosTheta[0], w); |
361 |
< |
StH_HPullAngle->Fill(iEvent.deltaPullAngle, w); |
361 |
> |
|
362 |
> |
StH_HPullAngle1->Fill(iEvent.deltaPullAngle, w); |
363 |
> |
StH_HPullAngle2->Fill(iEvent.deltaPullAngle2, w); |
364 |
> |
StH_HPullAK7Angle1->Fill(iEvent.deltaPullAngleAK7, w); |
365 |
> |
StH_HPullAK7Angle2->Fill(iEvent.deltaPullAngle2AK7, w); |
366 |
|
|
367 |
|
bool debug_ = false; |
368 |
|
TLorentzVector higgs, hJet1, hJet2, addJet; |
395 |
|
} |
396 |
|
if(iEvent.CountAddJets() > 0 ){ |
397 |
|
StH_HdR_addJets->Fill(higgs.DeltaR(addJets.at(dRmin_idx)), w); |
398 |
< |
if( iEvent.aJet_csv[dRmin_idx] > 0.7 ) |
398 |
> |
StH_HdR_leading_addJets->Fill(hJet1.DeltaR(addJets.at(dRmin_idx)), w); |
399 |
> |
StH_HdR_following_addJets->Fill(hJet2.DeltaR(addJets.at(dRmin_idx)), w); |
400 |
> |
StH_HdRnorm_addJets->Fill(higgs.DeltaR(addJets.at(dRmin_idx)) / iEvent.H_dR, w); |
401 |
> |
if( iEvent.aJet_csv[dRmin_idx] > 0.8 || hJet1.DeltaR(addJets.at(dRmin_idx)) < 2 ) |
402 |
> |
StH_HMass_leading_addJets->Fill((higgs+addJets.at(dRmin_idx)).M(), w); |
403 |
> |
else StH_HMass_leading_addJets->Fill(higgs.M(), w); |
404 |
> |
if( iEvent.aJet_csv[dRmin_idx] > 0.8 || hJet2.DeltaR(addJets.at(dRmin_idx)) < 2 ) |
405 |
> |
StH_HMass_following_addJets->Fill((higgs+addJets.at(dRmin_idx)).M(), w); |
406 |
> |
else StH_HMass_following_addJets->Fill(higgs.M(), w); |
407 |
> |
if( iEvent.aJet_csv[dRmin_idx] > 0.8 || hJet2.DeltaR(addJets.at(dRmin_idx)) < 2 || hJet1.DeltaR(addJets.at(dRmin_idx)) < 2 ) |
408 |
> |
StH_HMass_both_addJets->Fill((higgs+addJets.at(dRmin_idx)).M(), w); |
409 |
> |
else StH_HMass_both_addJets->Fill(higgs.M(), w); |
410 |
> |
if( iEvent.aJet_csv[dRmin_idx] > 0.8 || higgs.DeltaR(addJets.at(dRmin_idx)) < 2 ) |
411 |
|
StH_HMass_addJets->Fill((higgs+addJets.at(dRmin_idx)).M(), w); |
412 |
|
else StH_HMass_addJets->Fill(higgs.M(), w); |
413 |
|
StH_addJet1_pt->Fill(iEvent.aJet_pt[dRmin_idx], w); |
440 |
|
|
441 |
|
TH1F * StH_nPVs; |
442 |
|
TH1F * StH_addJets; |
443 |
+ |
TH1F * StH_typeImet_et; |
444 |
|
TH1F * StH_met_et; |
445 |
|
TH1F * StH_met_sig; |
446 |
|
|
465 |
|
TH1F * StH_simpleJet2_eta; |
466 |
|
TH1F * StH_simpleJet1_bTag; |
467 |
|
TH1F * StH_simpleJet2_bTag; |
468 |
+ |
TH1F * StH_simpleJet1_bTag_reshaped; |
469 |
+ |
TH1F * StH_simpleJet2_bTag_reshaped; |
470 |
|
TH1F * StH_simpleJet1_vtxMass; |
471 |
|
TH1F * StH_simpleJet2_vtxMass; |
472 |
|
|
473 |
|
TH1F * StH_simpleJets_bTag; |
474 |
+ |
TH1F * StH_simpleJets_bTagSum; |
475 |
+ |
TH1F * StH_simpleJets_bTag_reshaped; |
476 |
+ |
TH1F * StH_simpleJets_bTag_reshapedSum; |
477 |
|
TH1F * StH_simpleJets_vtxMass; |
478 |
|
|
479 |
|
TH1F * StH_addJet1_pt; |
489 |
|
TH1F * StH_HdPhi; |
490 |
|
TH1F * StH_HdEta; |
491 |
|
TH1F * StH_HHel; |
492 |
< |
TH1F * StH_HPullAngle; |
492 |
> |
TH1F * StH_HPullAngle1; |
493 |
> |
TH1F * StH_HPullAngle2; |
494 |
> |
TH1F * StH_HPullAK7Angle1; |
495 |
> |
TH1F * StH_HPullAK7Angle2; |
496 |
|
TH1F * StH_HdR_addJets; |
497 |
+ |
TH1F * StH_HdR_leading_addJets; |
498 |
+ |
TH1F * StH_HdR_following_addJets; |
499 |
+ |
|
500 |
+ |
TH1F * StH_HdRnorm_addJets; |
501 |
|
TH1F * StH_HMass_addJets; |
502 |
+ |
TH1F * StH_HMass_leading_addJets; |
503 |
+ |
TH1F * StH_HMass_following_addJets; |
504 |
+ |
TH1F * StH_HMass_both_addJets; |
505 |
|
|
506 |
|
TH1F * StH_massDrop; |
507 |
|
TH1F * StH_y12; |
643 |
|
SystUPH_ZH_dPhi = new TH1F(("ZH_dPhi"+suffix+"SystUP").c_str(),(" ZH delta Phi ("+suffix+"SystUP"+")").c_str(), bin_deltaPhi, min_deltaPhi, max_deltaPhi ); |
644 |
|
SystUPH_HdR_addJets = new TH1F(("HdR_addJets"+suffix+"SystUP").c_str(),("Higgs deltaR addJets ("+suffix+"SystUP"+")").c_str(), bin_deltaR, min_deltaR, max_deltaR ); |
645 |
|
|
646 |
+ |
SystJERUPH_simpleJet1_pt = new TH1F(("SimpleJet1_pt"+suffix+"SystJERUP").c_str(),("Simple Jet1 pt ("+suffix+"SystJERUP"+")").c_str(), bin_pt, min_pt, max_pt*0.8 ); |
647 |
+ |
SystJERUPH_simpleJet2_pt = new TH1F(("SimpleJet2_pt"+suffix+"SystJERUP").c_str(),("Simple Jet2 pt ("+suffix+"SystJERUP"+")").c_str(), bin_pt, min_pt, max_pt*0.8 ); |
648 |
+ |
SystJERUPH_HMass = new TH1F(("HiggsMass"+suffix+"SystJERUP").c_str(),(" Higgs Mass ("+suffix+"SystJERUP"+")").c_str(), bin_mass, min_mass, max_mass ); |
649 |
+ |
SystJERUPH_HPt = new TH1F(("HiggsPt"+suffix+"SystJERUP").c_str(),(" Higgs Pt ("+suffix+"SystJERUP"+")").c_str(), bin_pt, min_pt, max_pt ); |
650 |
+ |
SystJERUPH_ZH_dPhi = new TH1F(("ZH_dPhi"+suffix+"SystJERUP").c_str(),(" ZH delta Phi ("+suffix+"SystJERUP"+")").c_str(), bin_deltaPhi, min_deltaPhi, max_deltaPhi ); |
651 |
+ |
|
652 |
|
SystUPH_simpleJet1_bTag = new TH1F(("SimpleJet1_bTag"+suffix+"SystUP").c_str(),("Simple Jet1 bTag ("+suffix+"SystUP"+")").c_str(), bin_btag, min_btag, max_btag ); |
653 |
|
SystUPH_simpleJet2_bTag = new TH1F(("SimpleJet2_bTag"+suffix+"SystUP").c_str(),("Simple Jet2 bTag ("+suffix+"SystUP"+")").c_str(), bin_btag, min_btag, max_btag ); |
654 |
|
SystUPH_simpleJets_bTag = new TH1F(("SimpleJets_bTag"+suffix+"SystUP").c_str(),("Simple Jets bTag ("+suffix+"SystUP"+")").c_str(), bin_btag, min_btag, max_btag ); |
662 |
|
SystDOWNH_HMass = new TH1F(("HiggsMass"+suffix+"SystDOWN").c_str(),(" Higgs Mass ("+suffix+"SystDOWN"+")").c_str(), bin_mass, min_mass, max_mass ); |
663 |
|
SystDOWNH_HPt = new TH1F(("HiggsPt"+suffix+"SystDOWN").c_str(),(" Higgs Pt ("+suffix+"SystDOWN"+")").c_str(), bin_pt, min_pt, max_pt ); |
664 |
|
SystDOWNH_ZH_dPhi = new TH1F(("ZH_dPhi"+suffix+"SystDOWN").c_str(),(" ZH delta Phi ("+suffix+"SystDOWN"+")").c_str(), bin_deltaPhi, min_deltaPhi, max_deltaPhi ); |
665 |
< |
SystDOWNH_HdR_addJets = new TH1F(("HdR_addJets"+suffix+"SystDOWN").c_str(),("Higgs deltaR addJets ("+suffix+"SystDOWN"+")").c_str(), bin_deltaR, min_deltaR, max_deltaR ); |
665 |
> |
SystDOWNH_HdR_addJets = new TH1F(("HdR_addJets"+suffix+"SystDWON").c_str(),("Higgs deltaR addJets ("+suffix+"SystDOWN"+")").c_str(), bin_deltaR, min_deltaR, max_deltaR ); |
666 |
> |
|
667 |
> |
SystJERDOWNH_simpleJet1_pt = new TH1F(("SimpleJet1_pt"+suffix+"SystJERDOWN").c_str(),("Simple Jet1 pt ("+suffix+"SystJERDOWN"+")").c_str(), bin_pt, min_pt, max_pt*0.8 ); |
668 |
> |
SystJERDOWNH_simpleJet2_pt = new TH1F(("SimpleJet2_pt"+suffix+"SystJERDOWN").c_str(),("Simple Jet2 pt ("+suffix+"SystJERDOWN"+")").c_str(), bin_pt, min_pt, max_pt*0.8 ); |
669 |
> |
SystJERDOWNH_HMass = new TH1F(("HiggsMass"+suffix+"SystJERDOWN").c_str(),(" Higgs Mass ("+suffix+"SystJERDOWN"+")").c_str(), bin_mass, min_mass, max_mass ); |
670 |
> |
SystJERDOWNH_HPt = new TH1F(("HiggsPt"+suffix+"SystJERDOWN").c_str(),(" Higgs Pt ("+suffix+"SystJERDOWN"+")").c_str(), bin_pt, min_pt, max_pt ); |
671 |
> |
SystJERDOWNH_ZH_dPhi = new TH1F(("ZH_dPhi"+suffix+"SystJERDOWN").c_str(),(" ZH delta Phi ("+suffix+"SystJERDOWN"+")").c_str(), bin_deltaPhi, min_deltaPhi, max_deltaPhi ); |
672 |
|
|
673 |
|
SystDOWNH_simpleJet1_bTag = new TH1F(("SimpleJet1_bTag"+suffix+"SystDOWN").c_str(),("Simple Jet1 bTag ("+suffix+"SystDOWN"+")").c_str(), bin_btag, min_btag, max_btag ); |
674 |
|
SystDOWNH_simpleJet2_bTag = new TH1F(("SimpleJet2_bTag"+suffix+"SystDOWN").c_str(),("Simple Jet2 bTag ("+suffix+"SystDOWN"+")").c_str(), bin_btag, min_btag, max_btag ); |
677 |
|
SystFDOWNH_simpleJet2_bTag = new TH1F(("SimpleJet2_bTag"+suffix+"SystFDOWN").c_str(),("Simple Jet2 bTag ("+suffix+"SystFDOWN"+")").c_str(), bin_btag, min_btag, max_btag ); |
678 |
|
SystFDOWNH_simpleJets_bTag = new TH1F(("SimpleJets_bTag"+suffix+"SystFDOWN").c_str(),("Simple Jets bTag ("+suffix+"SystFDOWN"+")").c_str(), bin_btag, min_btag, max_btag ); |
679 |
|
|
639 |
– |
|
680 |
|
} |
681 |
|
|
682 |
|
virtual void fill(ntupleReader &iEvent,float w) { |
683 |
|
|
684 |
|
TLorentzVector higgs, addJet; |
685 |
|
|
646 |
– |
|
686 |
|
//UPSCALE |
687 |
|
SystUPH_addJets->Fill(iEvent.CountAddJets_jec(+1), w); |
688 |
|
SystUPH_simpleJet1_pt->Fill(iEvent.hJet_pt_jecUP(0), w); |
689 |
|
SystUPH_simpleJet2_pt->Fill(iEvent.hJet_pt_jecUP(1), w); |
690 |
+ |
SystJERUPH_simpleJet1_pt->Fill(iEvent.hJet_jer(0,+1).Pt(), w); |
691 |
+ |
SystJERUPH_simpleJet2_pt->Fill(iEvent.hJet_jer(1,+1).Pt(), w); |
692 |
+ |
|
693 |
|
//btag sorted by btag |
694 |
< |
if( iEvent.hJet_csv_cUP(0) > iEvent.hJet_csv_cUP(1) ){ |
695 |
< |
SystUPH_simpleJet1_bTag->Fill(iEvent.hJet_csv_cUP(0), w); |
696 |
< |
SystUPH_simpleJet2_bTag->Fill(iEvent.hJet_csv_cUP(1), w); |
694 |
> |
if( iEvent.hJet_CSV(0,1) > iEvent.hJet_CSV(1,1) ){ |
695 |
> |
SystUPH_simpleJet1_bTag->Fill(iEvent.hJet_CSV(0,1), w); |
696 |
> |
SystUPH_simpleJet2_bTag->Fill(iEvent.hJet_CSV(1,1), w); |
697 |
|
} |
698 |
|
else{ |
699 |
< |
SystUPH_simpleJet1_bTag->Fill(iEvent.hJet_csv_cUP(1), w); |
700 |
< |
SystUPH_simpleJet2_bTag->Fill(iEvent.hJet_csv_cUP(0), w); |
699 |
> |
SystUPH_simpleJet1_bTag->Fill(iEvent.hJet_CSV(1,1), w); |
700 |
> |
SystUPH_simpleJet2_bTag->Fill(iEvent.hJet_CSV(0,1), w); |
701 |
|
} |
702 |
< |
if( iEvent.hJet_csv_cFUP(0) > iEvent.hJet_csv_cFUP(1) ){ |
703 |
< |
SystFUPH_simpleJet1_bTag->Fill(iEvent.hJet_csv_cFUP(0), w); |
704 |
< |
SystFUPH_simpleJet2_bTag->Fill(iEvent.hJet_csv_cFUP(1), w); |
702 |
> |
if( iEvent.hJet_CSV(0,2) > iEvent.hJet_CSV(1,2) ){ |
703 |
> |
SystFUPH_simpleJet1_bTag->Fill(iEvent.hJet_CSV(0,2), w); |
704 |
> |
SystFUPH_simpleJet2_bTag->Fill(iEvent.hJet_CSV(1,2), w); |
705 |
|
} |
706 |
|
else{ |
707 |
< |
SystFUPH_simpleJet1_bTag->Fill(iEvent.hJet_csv_cFUP(1), w); |
708 |
< |
SystFUPH_simpleJet2_bTag->Fill(iEvent.hJet_csv_cFUP(0), w); |
707 |
> |
SystFUPH_simpleJet1_bTag->Fill(iEvent.hJet_CSV(1,2), w); |
708 |
> |
SystFUPH_simpleJet2_bTag->Fill(iEvent.hJet_CSV(0,2), w); |
709 |
|
} |
710 |
|
|
711 |
|
//here I fill both jets in one histo |
712 |
< |
SystUPH_simpleJets_bTag->Fill(iEvent.hJet_csv_cUP(0), w); |
713 |
< |
SystUPH_simpleJets_bTag->Fill(iEvent.hJet_csv_cUP(1), w); |
714 |
< |
SystFUPH_simpleJets_bTag->Fill(iEvent.hJet_csv_cFUP(0), w); |
715 |
< |
SystFUPH_simpleJets_bTag->Fill(iEvent.hJet_csv_cFUP(1), w); |
712 |
> |
SystUPH_simpleJets_bTag->Fill(iEvent.hJet_CSV(0,1), w); |
713 |
> |
SystUPH_simpleJets_bTag->Fill(iEvent.hJet_CSV(1,1), w); |
714 |
> |
SystFUPH_simpleJets_bTag->Fill(iEvent.hJet_CSV(0,2), w); |
715 |
> |
SystFUPH_simpleJets_bTag->Fill(iEvent.hJet_CSV(1,2), w); |
716 |
|
|
717 |
|
SystUPH_HMass->Fill(iEvent.H_jecUP().M(), w); |
718 |
|
SystUPH_HPt->Fill(iEvent.H_jecUP().Pt(), w); |
719 |
|
SystUPH_ZH_dPhi->Fill( TMath::Abs(iEvent.H_jecUP().DeltaPhi( iEvent.VectorBoson() ) ), w); |
720 |
+ |
|
721 |
+ |
SystJERUPH_HMass->Fill(iEvent.H_jer(+1).M(), w); |
722 |
+ |
SystJERUPH_HPt->Fill(iEvent.H_jer(+1).Pt(), w); |
723 |
+ |
SystJERUPH_ZH_dPhi->Fill( TMath::Abs(iEvent.H_jer(+1).DeltaPhi( iEvent.VectorBoson() ) ), w); |
724 |
+ |
|
725 |
|
higgs=iEvent.H_jecUP(); |
726 |
|
addJet.SetPtEtaPhiE(iEvent.aJet_pt_jecUP(0),iEvent.aJet_eta[0],iEvent.aJet_phi[0],iEvent.aJet_e[0]); |
727 |
|
SystUPH_HdR_addJets->Fill(higgs.DeltaR(addJet), w); |
730 |
|
SystDOWNH_addJets->Fill(iEvent.CountAddJets_jec(-1), w); |
731 |
|
SystDOWNH_simpleJet1_pt->Fill(iEvent.hJet_pt_jecDOWN(0), w); |
732 |
|
SystDOWNH_simpleJet2_pt->Fill(iEvent.hJet_pt_jecDOWN(1), w); |
733 |
+ |
SystJERDOWNH_simpleJet1_pt->Fill(iEvent.hJet_jer(0,-1).Pt(), w); |
734 |
+ |
SystJERDOWNH_simpleJet2_pt->Fill(iEvent.hJet_jer(1,-1).Pt(), w); |
735 |
+ |
|
736 |
|
//btag sorted by btag |
737 |
< |
if( iEvent.hJet_csv_cDOWN(0) > iEvent.hJet_csv_cDOWN(1) ){ |
738 |
< |
SystDOWNH_simpleJet1_bTag->Fill(iEvent.hJet_csv_cDOWN(0), w); |
739 |
< |
SystDOWNH_simpleJet2_bTag->Fill(iEvent.hJet_csv_cDOWN(1), w); |
737 |
> |
if( iEvent.hJet_CSV(0,-1) > iEvent.hJet_CSV(1,-1) ){ |
738 |
> |
SystDOWNH_simpleJet1_bTag->Fill(iEvent.hJet_CSV(0,-1), w); |
739 |
> |
SystDOWNH_simpleJet2_bTag->Fill(iEvent.hJet_CSV(1,-1), w); |
740 |
|
} |
741 |
|
else{ |
742 |
< |
SystDOWNH_simpleJet1_bTag->Fill(iEvent.hJet_csv_cDOWN(1), w); |
743 |
< |
SystDOWNH_simpleJet2_bTag->Fill(iEvent.hJet_csv_cDOWN(0), w); |
742 |
> |
SystDOWNH_simpleJet1_bTag->Fill(iEvent.hJet_CSV(1,-1), w); |
743 |
> |
SystDOWNH_simpleJet2_bTag->Fill(iEvent.hJet_CSV(0,-1), w); |
744 |
|
} |
745 |
< |
if( iEvent.hJet_csv_cFDOWN(0) > iEvent.hJet_csv_cFDOWN(1) ){ |
746 |
< |
SystFDOWNH_simpleJet1_bTag->Fill(iEvent.hJet_csv_cFDOWN(0), w); |
747 |
< |
SystFDOWNH_simpleJet2_bTag->Fill(iEvent.hJet_csv_cFDOWN(1), w); |
745 |
> |
if( iEvent.hJet_CSV(0,-2) > iEvent.hJet_CSV(1,-2) ){ |
746 |
> |
SystFDOWNH_simpleJet1_bTag->Fill(iEvent.hJet_CSV(0,-2), w); |
747 |
> |
SystFDOWNH_simpleJet2_bTag->Fill(iEvent.hJet_CSV(1,-2), w); |
748 |
|
} |
749 |
|
else{ |
750 |
< |
SystFDOWNH_simpleJet1_bTag->Fill(iEvent.hJet_csv_cFDOWN(1), w); |
751 |
< |
SystFDOWNH_simpleJet2_bTag->Fill(iEvent.hJet_csv_cFDOWN(0), w); |
750 |
> |
SystFDOWNH_simpleJet1_bTag->Fill(iEvent.hJet_CSV(1,-2), w); |
751 |
> |
SystFDOWNH_simpleJet2_bTag->Fill(iEvent.hJet_CSV(0,-2), w); |
752 |
|
} |
753 |
|
|
754 |
|
//here I fill both jets in one histo |
755 |
< |
SystDOWNH_simpleJets_bTag->Fill(iEvent.hJet_csv_cDOWN(0), w); |
756 |
< |
SystDOWNH_simpleJets_bTag->Fill(iEvent.hJet_csv_cDOWN(1), w); |
757 |
< |
SystFDOWNH_simpleJets_bTag->Fill(iEvent.hJet_csv_cFDOWN(0), w); |
758 |
< |
SystFDOWNH_simpleJets_bTag->Fill(iEvent.hJet_csv_cFDOWN(1), w); |
755 |
> |
SystDOWNH_simpleJets_bTag->Fill(iEvent.hJet_CSV(0,-1), w); |
756 |
> |
SystDOWNH_simpleJets_bTag->Fill(iEvent.hJet_CSV(1,-1), w); |
757 |
> |
SystFDOWNH_simpleJets_bTag->Fill(iEvent.hJet_CSV(0,-2), w); |
758 |
> |
SystFDOWNH_simpleJets_bTag->Fill(iEvent.hJet_CSV(1,-2), w); |
759 |
|
SystDOWNH_HMass->Fill(iEvent.H_jecDOWN().M(), w); |
760 |
|
SystDOWNH_HPt->Fill(iEvent.H_jecDOWN().Pt(), w); |
761 |
|
SystDOWNH_ZH_dPhi->Fill( TMath::Abs( iEvent.H_jecDOWN().DeltaPhi( iEvent.VectorBoson() ) ), w); |
762 |
+ |
|
763 |
+ |
SystJERDOWNH_HMass->Fill(iEvent.H_jer(-1).M(), w); |
764 |
+ |
SystJERDOWNH_HPt->Fill(iEvent.H_jer(-1).Pt(), w); |
765 |
+ |
SystJERDOWNH_ZH_dPhi->Fill( TMath::Abs(iEvent.H_jer(-1).DeltaPhi( iEvent.VectorBoson() ) ), w); |
766 |
+ |
|
767 |
|
higgs=iEvent.H_jecDOWN(); |
768 |
|
addJet.SetPtEtaPhiE(iEvent.aJet_pt_jecDOWN(0),iEvent.aJet_eta[0],iEvent.aJet_phi[0],iEvent.aJet_e[0]); |
769 |
|
SystDOWNH_HdR_addJets->Fill(higgs.DeltaR(addJet), w); |
770 |
< |
|
770 |
> |
|
771 |
|
} |
772 |
|
|
773 |
|
TH1F * SystUPH_addJets; |
783 |
|
TH1F * SystFUPH_simpleJet1_bTag; |
784 |
|
TH1F * SystFUPH_simpleJet2_bTag; |
785 |
|
TH1F * SystFUPH_simpleJets_bTag; |
786 |
+ |
TH1F * SystJERUPH_simpleJet1_pt; |
787 |
+ |
TH1F * SystJERUPH_simpleJet2_pt; |
788 |
+ |
TH1F * SystJERUPH_HMass; |
789 |
+ |
TH1F * SystJERUPH_HPt; |
790 |
+ |
TH1F * SystJERUPH_ZH_dPhi; |
791 |
|
|
792 |
|
TH1F * SystDOWNH_addJets; |
793 |
|
TH1F * SystDOWNH_simpleJet1_pt; |
802 |
|
TH1F * SystFDOWNH_simpleJet1_bTag; |
803 |
|
TH1F * SystFDOWNH_simpleJet2_bTag; |
804 |
|
TH1F * SystFDOWNH_simpleJets_bTag; |
805 |
+ |
TH1F * SystJERDOWNH_simpleJet1_pt; |
806 |
+ |
TH1F * SystJERDOWNH_simpleJet2_pt; |
807 |
+ |
TH1F * SystJERDOWNH_HMass; |
808 |
+ |
TH1F * SystJERDOWNH_HPt; |
809 |
+ |
TH1F * SystJERDOWNH_ZH_dPhi; |
810 |
|
|
811 |
|
|
812 |
|
private: |