CMS 3D CMS Logo

JetTester_HeavyIons.cc
Go to the documentation of this file.
1 // Producer for validation histograms for Calo and PF background subtracted
2 // objects Modified by Raghav Kunnawalkam Elayavalli, Aug 18th 2014
3 // , Oct 22nd 2014 to run in 73X
4 
5 #include "JetTester_HeavyIons.h"
6 
7 using namespace edm;
8 using namespace reco;
9 using namespace std;
10 
12  : mInputCollection(iConfig.getParameter<edm::InputTag>("src")),
13  mInputGenCollection(iConfig.getParameter<edm::InputTag>("srcGen")),
14  mInputPFCandCollection(iConfig.getParameter<edm::InputTag>("PFcands")),
15  // mInputCandCollection (iConfig.getParameter<edm::InputTag>
16  // ("Cands")), rhoTag (iConfig.getParameter<edm::InputTag> ("srcRho")),
17  mOutputFile(iConfig.getUntrackedParameter<std::string>("OutputFile", "")),
18  JetType(iConfig.getUntrackedParameter<std::string>("JetType")),
19  UEAlgo(iConfig.getUntrackedParameter<std::string>("UEAlgo")),
20  Background(iConfig.getParameter<edm::InputTag>("Background")),
21  mRecoJetPtThreshold(iConfig.getParameter<double>("recoJetPtThreshold")),
22  mMatchGenPtThreshold(iConfig.getParameter<double>("matchGenPtThreshold")),
23  mGenEnergyFractionThreshold(iConfig.getParameter<double>("genEnergyFractionThreshold")),
24  mReverseEnergyFractionThreshold(iConfig.getParameter<double>("reverseEnergyFractionThreshold")),
25  mRThreshold(iConfig.getParameter<double>("RThreshold")),
26  JetCorrectionService(iConfig.getParameter<std::string>("JetCorrections")) {
27  std::string inputCollectionLabel(mInputCollection.label());
28 
29  isCaloJet = (std::string("calo") == JetType);
30  isJPTJet = (std::string("jpt") == JetType);
31  isPFJet = (std::string("pf") == JetType);
32 
33  // consumes
34  pvToken_ = consumes<std::vector<reco::Vertex>>(edm::InputTag("offlinePrimaryVertices"));
35  caloTowersToken_ = consumes<CaloTowerCollection>(edm::InputTag("towerMaker"));
36  if (isCaloJet)
37  caloJetsToken_ = consumes<reco::CaloJetCollection>(mInputCollection);
38  if (isJPTJet)
39  jptJetsToken_ = consumes<reco::JPTJetCollection>(mInputCollection);
40  if (isPFJet) {
41  if (std::string("Pu") == UEAlgo)
42  basicJetsToken_ = consumes<reco::BasicJetCollection>(mInputCollection);
43  }
44 
45  genJetsToken_ = consumes<reco::GenJetCollection>(edm::InputTag(mInputGenCollection));
46  evtToken_ = consumes<GenEventInfoProduct>(edm::InputTag("generator"));
47  pfCandToken_ = consumes<reco::PFCandidateCollection>(mInputPFCandCollection);
48  pfCandViewToken_ = consumes<reco::CandidateView>(mInputPFCandCollection);
49  caloCandViewToken_ = consumes<reco::CandidateView>(edm::InputTag("towerMaker"));
50  backgrounds_ = consumes<edm::ValueMap<reco::VoronoiBackground>>(Background);
51  backgrounds_value_ = consumes<std::vector<float>>(Background);
52  centralityTag_ = iConfig.getParameter<InputTag>("centralitycollection");
53  centralityToken = consumes<reco::Centrality>(centralityTag_);
54 
55  centralityBinTag_ = (iConfig.getParameter<edm::InputTag>("centralitybincollection"));
56  centralityBinToken = consumes<int>(centralityBinTag_);
57  hiVertexToken_ = consumes<std::vector<reco::Vertex>>(edm::InputTag("hiSelectedVertex"));
58 
59  // need to initialize the PF cand histograms : which are also event variables
60  if (isPFJet) {
61  mNPFpart = nullptr;
62  mPFPt = nullptr;
63  mPFEta = nullptr;
64  mPFPhi = nullptr;
65  mPFArea = nullptr;
66  mSumPFPt = nullptr;
67  mSumSquaredPFPt = nullptr;
68  mSumPFPt_HF = nullptr;
69 
70  mSumPFPt_n5p191_n2p650 = nullptr;
71  mSumPFPt_n2p650_n2p043 = nullptr;
72  mSumPFPt_n2p043_n1p740 = nullptr;
73  mSumPFPt_n1p740_n1p479 = nullptr;
74  mSumPFPt_n1p479_n1p131 = nullptr;
75  mSumPFPt_n1p131_n0p783 = nullptr;
76  mSumPFPt_n0p783_n0p522 = nullptr;
77  mSumPFPt_n0p522_0p522 = nullptr;
78  mSumPFPt_0p522_0p783 = nullptr;
79  mSumPFPt_0p783_1p131 = nullptr;
80  mSumPFPt_1p131_1p479 = nullptr;
81  mSumPFPt_1p479_1p740 = nullptr;
82  mSumPFPt_1p740_2p043 = nullptr;
83  mSumPFPt_2p043_2p650 = nullptr;
84  mSumPFPt_2p650_5p191 = nullptr;
85 
86  mPFCandpT_vs_eta_Unknown = nullptr; // pf id 0
87  mPFCandpT_vs_eta_ChargedHadron = nullptr; // pf id - 1
88  mPFCandpT_vs_eta_electron = nullptr; // pf id - 2
89  mPFCandpT_vs_eta_muon = nullptr; // pf id - 3
90  mPFCandpT_vs_eta_photon = nullptr; // pf id - 4
91  mPFCandpT_vs_eta_NeutralHadron = nullptr; // pf id - 5
92  mPFCandpT_vs_eta_HadE_inHF = nullptr; // pf id - 6
93  mPFCandpT_vs_eta_EME_inHF = nullptr; // pf id - 7
94 
95  mPFCandpT_Barrel_Unknown = nullptr; // pf id 0
96  mPFCandpT_Barrel_ChargedHadron = nullptr; // pf id - 1
97  mPFCandpT_Barrel_electron = nullptr; // pf id - 2
98  mPFCandpT_Barrel_muon = nullptr; // pf id - 3
99  mPFCandpT_Barrel_photon = nullptr; // pf id - 4
100  mPFCandpT_Barrel_NeutralHadron = nullptr; // pf id - 5
101  mPFCandpT_Barrel_HadE_inHF = nullptr; // pf id - 6
102  mPFCandpT_Barrel_EME_inHF = nullptr; // pf id - 7
103 
104  mPFCandpT_Endcap_Unknown = nullptr; // pf id 0
105  mPFCandpT_Endcap_ChargedHadron = nullptr; // pf id - 1
106  mPFCandpT_Endcap_electron = nullptr; // pf id - 2
107  mPFCandpT_Endcap_muon = nullptr; // pf id - 3
108  mPFCandpT_Endcap_photon = nullptr; // pf id - 4
109  mPFCandpT_Endcap_NeutralHadron = nullptr; // pf id - 5
110  mPFCandpT_Endcap_HadE_inHF = nullptr; // pf id - 6
111  mPFCandpT_Endcap_EME_inHF = nullptr; // pf id - 7
112 
113  mPFCandpT_Forward_Unknown = nullptr; // pf id 0
114  mPFCandpT_Forward_ChargedHadron = nullptr; // pf id - 1
115  mPFCandpT_Forward_electron = nullptr; // pf id - 2
116  mPFCandpT_Forward_muon = nullptr; // pf id - 3
117  mPFCandpT_Forward_photon = nullptr; // pf id - 4
118  mPFCandpT_Forward_NeutralHadron = nullptr; // pf id - 5
119  mPFCandpT_Forward_HadE_inHF = nullptr; // pf id - 6
120  mPFCandpT_Forward_EME_inHF = nullptr; // pf id - 7
121  }
122  if (isCaloJet) {
123  mNCalopart = nullptr;
124  mCaloPt = nullptr;
125  mCaloEta = nullptr;
126  mCaloPhi = nullptr;
127  mCaloArea = nullptr;
128 
129  mSumCaloPt = nullptr;
130  mSumSquaredCaloPt = nullptr;
131  mSumCaloPt_HF = nullptr;
132 
133  mSumCaloPt_n5p191_n2p650 = nullptr;
134  mSumCaloPt_n2p650_n2p043 = nullptr;
135  mSumCaloPt_n2p043_n1p740 = nullptr;
136  mSumCaloPt_n1p740_n1p479 = nullptr;
137  mSumCaloPt_n1p479_n1p131 = nullptr;
138  mSumCaloPt_n1p131_n0p783 = nullptr;
139  mSumCaloPt_n0p783_n0p522 = nullptr;
140  mSumCaloPt_n0p522_0p522 = nullptr;
141  mSumCaloPt_0p522_0p783 = nullptr;
142  mSumCaloPt_0p783_1p131 = nullptr;
143  mSumCaloPt_1p131_1p479 = nullptr;
144  mSumCaloPt_1p479_1p740 = nullptr;
145  mSumCaloPt_1p740_2p043 = nullptr;
146  mSumCaloPt_2p043_2p650 = nullptr;
147  mSumCaloPt_2p650_5p191 = nullptr;
148  }
149  mSumpt = nullptr;
150 
151  // Events variables
152  mNvtx = nullptr;
153  mHF = nullptr;
154 
155  // Jet parameters
156  mEta = nullptr;
157  mPhi = nullptr;
158  mEnergy = nullptr;
159  mP = nullptr;
160  mPt = nullptr;
161  mMass = nullptr;
162  mConstituents = nullptr;
163  mJetArea = nullptr;
164  mjetpileup = nullptr;
165  mNJets_40 = nullptr;
166  mNJets = nullptr;
167 
168  mGenEta = nullptr;
169  mGenPhi = nullptr;
170  mGenPt = nullptr;
171  mPtHat = nullptr;
172 
194 
216 
238 
260 
273 
281 
289 
297 
305 }
306 
308  ibooker.setCurrentFolder("JetMET/JetValidation/" + mInputCollection.label());
309 
310  double log10PtMin = 0.50;
311  double log10PtMax = 3.75;
312  int log10PtBins = 26;
313 
314  static const size_t ncms_hcal_edge_pseudorapidity = 82 + 1;
315  static const double cms_hcal_edge_pseudorapidity[ncms_hcal_edge_pseudorapidity] = {
316  -5.191, -4.889, -4.716, -4.538, -4.363, -4.191, -4.013, -3.839, -3.664, -3.489, -3.314, -3.139, -2.964, -2.853,
317  -2.650, -2.500, -2.322, -2.172, -2.043, -1.930, -1.830, -1.740, -1.653, -1.566, -1.479, -1.392, -1.305, -1.218,
318  -1.131, -1.044, -0.957, -0.879, -0.783, -0.696, -0.609, -0.522, -0.435, -0.348, -0.261, -0.174, -0.087, 0.000,
319  0.087, 0.174, 0.261, 0.348, 0.435, 0.522, 0.609, 0.696, 0.783, 0.879, 0.957, 1.044, 1.131, 1.218,
320  1.305, 1.392, 1.479, 1.566, 1.653, 1.740, 1.830, 1.930, 2.043, 2.172, 2.322, 2.500, 2.650, 2.853,
321  2.964, 3.139, 3.314, 3.489, 3.664, 3.839, 4.013, 4.191, 4.363, 4.538, 4.716, 4.889, 5.191};
322 
323  double etaRange[91] = {-6.0, -5.8, -5.6, -5.4, -5.2, -5.0, -4.8, -4.6, -4.4, -4.2, -4.0, -3.8, -3.6, -3.4, -3.2, -3.0,
324  -2.9, -2.8, -2.7, -2.6, -2.5, -2.4, -2.3, -2.2, -2.1, -2.0, -1.9, -1.8, -1.7, -1.6, -1.5, -1.4,
325  -1.3, -1.2, -1.1, -1.0, -0.9, -0.8, -0.7, -0.6, -0.5, -0.4, -0.3, -0.2, -0.1, 0.0, 0.1, 0.2,
326  0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8,
327  1.9, 2.0, 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7, 2.8, 2.9, 3.0, 3.2, 3.4, 3.6, 3.8,
328  4.0, 4.2, 4.4, 4.6, 4.8, 5.0, 5.2, 5.4, 5.6, 5.8, 6.0};
329 
330  double edge_pseudorapidity[etaBins_ + 1] = {-5.191,
331  -2.650,
332  -2.043,
333  -1.740,
334  -1.479,
335  -1.131,
336  -0.783,
337  -0.522,
338  0.522,
339  0.783,
340  1.131,
341  1.479,
342  1.740,
343  2.043,
344  2.650,
345  5.191};
346 
347  TH2F *h2D_etabins_vs_pt2 = new TH2F(
348  "h2D_etabins_vs_pt2", "etaBins (x axis), sum pt^{2} (y axis)", etaBins_, edge_pseudorapidity, 10000, 0, 10000);
349  TH2F *h2D_etabins_vs_pt = new TH2F(
350  "h2D_etabins_vs_pt", "etaBins (x axis), sum pt (y axis)", etaBins_, edge_pseudorapidity, 10000, -1000, 1000);
351  TH2F *h2D_etabins_vs_phi = new TH2F("h2D_etabins_vs_phi",
352  "candidate map, eta(x axis), phi (y axis), pt (z axis)",
353  ncms_hcal_edge_pseudorapidity - 1,
354  cms_hcal_edge_pseudorapidity,
355  36,
356  -TMath::Pi(),
357  TMath::Pi());
358  TH2F *h2D_pfcand_etabins_vs_pt =
359  new TH2F("h2D_etabins_vs_pt", ";#eta;sum p_{T}", etaBins_, edge_pseudorapidity, 300, 0, 300);
360 
361  if (isPFJet) {
362  mNPFpart = ibooker.book1D("NPFpart", "No of particle flow candidates", 1000, 0, 10000);
363  mPFPt = ibooker.book1D("PFPt", "PF candidate p_{T}", 1000, -5000, 5000);
364  mPFEta = ibooker.book1D("PFEta", "PF candidate #eta", 120, -6, 6);
365  mPFPhi = ibooker.book1D("PFPhi", "PF candidate #phi", 70, -3.5, 3.5);
366  mPFArea = ibooker.book1D("PFArea", "VS PF candidate area", 100, 0, 4);
367 
368  mSumPFPt = ibooker.book1D("SumPFPt", "Sum of initial PF p_{T}", 1000, -10000, 10000);
369 
370  mSumSquaredPFPt = ibooker.book1D("SumSquaredPFPt", "Sum of initial PF p_{T} squared", 10000, 0, 10000);
371 
372  mSumPFPt_HF = ibooker.book2D(
373  "SumPFPt_HF", "HF energy (y axis) vs Sum initial PF p_{T} (x axis)", 1000, -1000, 1000, 1000, 0, 10000);
374 
376  ibooker.book1D("mSumPFPt_n5p191_n2p650", "Sum PFPt in the eta range -5.191 to -2.650", 1000, -5000, 5000);
378  ibooker.book1D("mSumPFPt_n2p650_n2p043", "Sum PFPt in the eta range -2.650 to -2.043 ", 1000, -5000, 5000);
380  ibooker.book1D("mSumPFPt_n2p043_n1p740", "Sum PFPt in the eta range -2.043 to -1.740", 1000, -1000, 1000);
382  ibooker.book1D("mSumPFPt_n1p740_n1p479", "Sum PFPt in the eta range -1.740 to -1.479", 1000, -1000, 1000);
384  ibooker.book1D("mSumPFPt_n1p479_n1p131", "Sum PFPt in the eta range -1.479 to -1.131", 1000, -1000, 1000);
386  ibooker.book1D("mSumPFPt_n1p131_n0p783", "Sum PFPt in the eta range -1.131 to -0.783", 1000, -1000, 1000);
388  ibooker.book1D("mSumPFPt_n0p783_n0p522", "Sum PFPt in the eta range -0.783 to -0.522", 1000, -1000, 1000);
390  ibooker.book1D("mSumPFPt_n0p522_0p522", "Sum PFPt in the eta range -0.522 to 0.522", 1000, -1000, 1000);
392  ibooker.book1D("mSumPFPt_0p522_0p783", "Sum PFPt in the eta range 0.522 to 0.783", 1000, -1000, 1000);
394  ibooker.book1D("mSumPFPt_0p783_1p131", "Sum PFPt in the eta range 0.783 to 1.131", 1000, -1000, 1000);
396  ibooker.book1D("mSumPFPt_1p131_1p479", "Sum PFPt in the eta range 1.131 to 1.479", 1000, -1000, 1000);
398  ibooker.book1D("mSumPFPt_1p479_1p740", "Sum PFPt in the eta range 1.479 to 1.740", 1000, -1000, 1000);
400  ibooker.book1D("mSumPFPt_1p740_2p043", "Sum PFPt in the eta range 1.740 to 2.043", 1000, -1000, 1000);
402  ibooker.book1D("mSumPFPt_2p043_2p650", "Sum PFPt in the eta range 2.043 to 2.650", 1000, -5000, 5000);
404  ibooker.book1D("mSumPFPt_2p650_5p191", "Sum PFPt in the eta range 2.650 to 5.191", 1000, -5000, 5000);
405 
406  mPFCandpT_vs_eta_Unknown = ibooker.book2D("PF_cand_X_unknown", h2D_pfcand_etabins_vs_pt); // pf id 0
407  mPFCandpT_vs_eta_ChargedHadron = ibooker.book2D("PF_cand_chargedHad", h2D_pfcand_etabins_vs_pt); // pf id - 1
408  mPFCandpT_vs_eta_electron = ibooker.book2D("PF_cand_electron", h2D_pfcand_etabins_vs_pt); // pf id - 2
409  mPFCandpT_vs_eta_muon = ibooker.book2D("PF_cand_muon", h2D_pfcand_etabins_vs_pt); // pf id - 3
410  mPFCandpT_vs_eta_photon = ibooker.book2D("PF_cand_photon", h2D_pfcand_etabins_vs_pt); // pf id - 4
411  mPFCandpT_vs_eta_NeutralHadron = ibooker.book2D("PF_cand_neutralHad", h2D_pfcand_etabins_vs_pt); // pf id - 5
412  mPFCandpT_vs_eta_HadE_inHF = ibooker.book2D("PF_cand_HadEner_inHF", h2D_pfcand_etabins_vs_pt); // pf id - 6
413  mPFCandpT_vs_eta_EME_inHF = ibooker.book2D("PF_cand_EMEner_inHF", h2D_pfcand_etabins_vs_pt); // pf id - 7
414 
415  mPFCandpT_Barrel_Unknown = ibooker.book1D("mPFCandpT_Barrel_Unknown",
416  Form(";PF candidate p_{T}, |#eta|<%2.2f; counts", BarrelEta),
417  300,
418  0,
419  300); // pf id - 0
420  mPFCandpT_Barrel_ChargedHadron = ibooker.book1D("mPFCandpT_Barrel_ChargedHadron",
421  Form(";PF candidate p_{T}, |#eta|<%2.2f; counts", BarrelEta),
422  300,
423  0,
424  300); // pf id - 1
425  mPFCandpT_Barrel_electron = ibooker.book1D("mPFCandpT_Barrel_electron",
426  Form(";PF candidate p_{T}, |#eta|<%2.2f; counts", BarrelEta),
427  300,
428  0,
429  300); // pf id - 2
430  mPFCandpT_Barrel_muon = ibooker.book1D("mPFCandpT_Barrel_muon",
431  Form(";PF candidate p_{T}, |#eta|<%2.2f; counts", BarrelEta),
432  300,
433  0,
434  300); // pf id - 3
435  mPFCandpT_Barrel_photon = ibooker.book1D("mPFCandpT_Barrel_photon",
436  Form(";PF candidate p_{T}, |#eta|<%2.2f; counts", BarrelEta),
437  300,
438  0,
439  300); // pf id - 4
440  mPFCandpT_Barrel_NeutralHadron = ibooker.book1D("mPFCandpT_Barrel_NeutralHadron",
441  Form(";PF candidate p_{T}, |#eta|<%2.2f; counts", BarrelEta),
442  300,
443  0,
444  300); // pf id - 5
445  mPFCandpT_Barrel_HadE_inHF = ibooker.book1D("mPFCandpT_Barrel_HadE_inHF",
446  Form(";PF candidate p_{T}, |#eta|<%2.2f; counts", BarrelEta),
447  300,
448  0,
449  300); // pf id - 6
450  mPFCandpT_Barrel_EME_inHF = ibooker.book1D("mPFCandpT_Barrel_EME_inHF",
451  Form(";PF candidate p_{T}, |#eta|<%2.2f; counts", BarrelEta),
452  300,
453  0,
454  300); // pf id - 7
455 
457  ibooker.book1D("mPFCandpT_Endcap_Unknown",
458  Form(";PF candidate p_{T}, %2.2f<|#eta|<%2.2f; counts", BarrelEta, EndcapEta),
459  300,
460  0,
461  300); // pf id - 0
463  ibooker.book1D("mPFCandpT_Endcap_ChargedHadron",
464  Form(";PF candidate p_{T}, %2.2f<|#eta|<%2.2f; counts", BarrelEta, EndcapEta),
465  300,
466  0,
467  300); // pf id - 1
469  ibooker.book1D("mPFCandpT_Endcap_electron",
470  Form(";PF candidate p_{T}, %2.2f<|#eta|<%2.2f; counts", BarrelEta, EndcapEta),
471  300,
472  0,
473  300); // pf id - 2
475  ibooker.book1D("mPFCandpT_Endcap_muon",
476  Form(";PF candidate p_{T}, %2.2f<|#eta|<%2.2f; counts", BarrelEta, EndcapEta),
477  300,
478  0,
479  300); // pf id - 3
481  ibooker.book1D("mPFCandpT_Endcap_photon",
482  Form(";PF candidate p_{T}, %2.2f<|#eta|<%2.2f; counts", BarrelEta, EndcapEta),
483  300,
484  0,
485  300); // pf id - 4
487  ibooker.book1D("mPFCandpT_Endcap_NeutralHadron",
488  Form(";PF candidate p_{T}, %2.2f<|#eta|<%2.2f; counts", BarrelEta, EndcapEta),
489  300,
490  0,
491  300); // pf id - 5
493  ibooker.book1D("mPFCandpT_Endcap_HadE_inHF",
494  Form(";PF candidate p_{T}, %2.2f<|#eta|<%2.2f; counts", BarrelEta, EndcapEta),
495  300,
496  0,
497  300); // pf id - 6
499  ibooker.book1D("mPFCandpT_Endcap_EME_inHF",
500  Form(";PF candidate p_{T}, %2.2f<|#eta|<%2.2f; counts", BarrelEta, EndcapEta),
501  300,
502  0,
503  300); // pf id - 7
504 
506  ibooker.book1D("mPFCandpT_Forward_Unknown",
507  Form(";PF candidate p_{T}, %2.2f<|#eta|<%2.2f; counts", EndcapEta, ForwardEta),
508  300,
509  0,
510  300); // pf id - 0
512  ibooker.book1D("mPFCandpT_Forward_ChargedHadron",
513  Form(";PF candidate p_{T}, %2.2f<|#eta|<%2.2f; counts", EndcapEta, ForwardEta),
514  300,
515  0,
516  300); // pf id - 1
518  ibooker.book1D("mPFCandpT_Forward_electron",
519  Form(";PF candidate p_{T}, %2.2f<|#eta|<%2.2f; counts", EndcapEta, ForwardEta),
520  300,
521  0,
522  300); // pf id - 2
524  ibooker.book1D("mPFCandpT_Forward_muon",
525  Form(";PF candidate p_{T}, %2.2f<|#eta|<%2.2f; counts", EndcapEta, ForwardEta),
526  300,
527  0,
528  300); // pf id - 3
530  ibooker.book1D("mPFCandpT_Forward_photon",
531  Form(";PF candidate p_{T}, %2.2f<|#eta|<%2.2f; counts", EndcapEta, ForwardEta),
532  300,
533  0,
534  300); // pf id - 4
536  ibooker.book1D("mPFCandpT_Forward_NeutralHadron",
537  Form(";PF candidate p_{T}, %2.2f<|#eta|<%2.2f; counts", EndcapEta, ForwardEta),
538  300,
539  0,
540  300); // pf id - 5
542  ibooker.book1D("mPFCandpT_Forward_HadE_inHF",
543  Form(";PF candidate p_{T}, %2.2f<|#eta|<%2.2f; counts", EndcapEta, ForwardEta),
544  300,
545  0,
546  300); // pf id - 6
548  ibooker.book1D("mPFCandpT_Forward_EME_inHF",
549  Form(";PF candidate p_{T}, %2.2f<|#eta|<%2.2f; counts", EndcapEta, ForwardEta),
550  300,
551  0,
552  300); // pf id - 7
553  }
554 
555  if (isCaloJet) {
556  mNCalopart = ibooker.book1D("NCalopart", "No of particle flow candidates", 1000, 0, 10000);
557  mCaloPt = ibooker.book1D("CaloPt", "Calo candidate p_{T}", 1000, -5000, 5000);
558  mCaloEta = ibooker.book1D("CaloEta", "Calo candidate #eta", 120, -6, 6);
559  mCaloPhi = ibooker.book1D("CaloPhi", "Calo candidate #phi", 70, -3.5, 3.5);
560  mCaloArea = ibooker.book1D("CaloArea", "VS Calo candidate area", 100, 0, 4);
561 
562  mSumCaloPt = ibooker.book1D("SumCaloPt", "Sum Calo p_{T}", 1000, -10000, 10000);
563 
564  mSumSquaredCaloPt = ibooker.book1D("SumSquaredCaloPt", "Sum of initial Calo tower p_{T} squared", 10000, 0, 10000);
565 
566  mSumCaloPt_HF =
567  ibooker.book2D("SumCaloPt_HF", "HF Energy (y axis) vs Sum Calo tower p_{T}", 1000, -1000, 1000, 1000, 0, 10000);
568 
570  "mSumCaloPt_n5p191_n2p650", "Sum Calo tower pT variable in the eta range -5.191 to -2.650", 1000, -5000, 5000);
572  "mSumCaloPt_n2p650_n2p043", "Sum Calo tower pT variable in the eta range -2.650 to -2.043", 1000, -5000, 5000);
574  "mSumCaloPt_n2p043_n1p740", "Sum Calo tower pT variable in the eta range -2.043 to -1.740", 1000, -1000, 1000);
576  "mSumCaloPt_n1p740_n1p479", "Sum Calo tower pT variable in the eta range -1.740 to -1.479", 1000, -1000, 1000);
578  "mSumCaloPt_n1p479_n1p131", "Sum Calo tower pT variable in the eta range -1.479 to -1.131", 1000, -1000, 1000);
580  "mSumCaloPt_n1p131_n0p783", "Sum Calo tower pT variable in the eta range -1.131 to -0.783", 1000, -1000, 1000);
582  "mSumCaloPt_n0p783_n0p522", "Sum Calo tower pT variable in the eta range -0.783 to -0.522", 1000, -1000, 1000);
584  "mSumCaloPt_n0p522_0p522", "Sum Calo tower pT variable in the eta range -0.522 to 0.522", 1000, -1000, 1000);
585  mSumCaloPt_0p522_0p783 = ibooker.book1D(
586  "mSumCaloPt_0p522_0p783", "Sum Calo tower pT variable in the eta range 0.522 to 0.783", 1000, -1000, 1000);
587  mSumCaloPt_0p783_1p131 = ibooker.book1D(
588  "mSumCaloPt_0p783_1p131", "Sum Calo tower pT variable in the eta range 0.783 to 1.131", 1000, -1000, 1000);
589  mSumCaloPt_1p131_1p479 = ibooker.book1D(
590  "mSumCaloPt_1p131_1p479", "Sum Calo tower pT variable in the eta range 1.131 to 1.479", 1000, -1000, 1000);
591  mSumCaloPt_1p479_1p740 = ibooker.book1D(
592  "mSumCaloPt_1p479_1p740", "Sum Calo tower pT variable in the eta range 1.479 to 1.740", 1000, -1000, 1000);
593  mSumCaloPt_1p740_2p043 = ibooker.book1D(
594  "mSumCaloPt_1p740_2p043", "Sum Calo tower pT variable in the eta range 1.740 to 2.043", 1000, -1000, 1000);
595  mSumCaloPt_2p043_2p650 = ibooker.book1D(
596  "mSumCaloPt_2p043_2p650", "Sum Calo tower pT variable in the eta range 2.043 to 2.650", 1000, -5000, 5000);
597  mSumCaloPt_2p650_5p191 = ibooker.book1D(
598  "mSumCaloPt_2p650_5p191", "Sum Calo tower pT variable in the eta range 2.650 to 5.191", 1000, -5000, 5000);
599  }
600 
601  // particle flow variables histograms
602  mSumpt = ibooker.book1D("SumpT", "Sum p_{T} of all the PF candidates per event", 1000, 0, 10000);
603 
604  // Event variables
605  mNvtx = ibooker.book1D("Nvtx", "number of vertices", 60, 0, 60);
606  mHF = ibooker.book1D("HF", "HF energy distribution", 1000, 0, 10000);
607 
608  // Jet parameters
609  mEta = ibooker.book1D("Eta", "Eta", 120, -6, 6);
610  mPhi = ibooker.book1D("Phi", "Phi", 70, -3.5, 3.5);
611  mPt = ibooker.book1D("Pt", "Pt", 100, 0, 1000);
612  mP = ibooker.book1D("P", "P", 100, 0, 1000);
613  mEnergy = ibooker.book1D("Energy", "Energy", 100, 0, 1000);
614  mMass = ibooker.book1D("Mass", "Mass", 100, 0, 200);
615  mConstituents = ibooker.book1D("Constituents", "Constituents", 100, 0, 100);
616  mJetArea = ibooker.book1D("JetArea", "JetArea", 100, 0, 4);
617  mjetpileup = ibooker.book1D("jetPileUp", "jetPileUp", 100, 0, 150);
618  mNJets_40 = ibooker.book1D("NJets_pt_greater_40", "NJets pT > 40 GeV", 50, 0, 100);
619  mNJets = ibooker.book1D("NJets", "NJets", 50, 0, 100);
620 
621  mGenEta = ibooker.book1D("Gen Eta", ";gen jet #eta;counts", 120, -6, 6);
622  mGenPhi = ibooker.book1D("Gen Phi", ";gen jet #phi;counts", 70, -3.5, 3.5);
623  mGenPt = ibooker.book1D("Gen pT", "gen jet p_{T}", 250, 0, 1000);
624  mPtHat = ibooker.book1D("pThat", "#hat{p_{T}}", 250, 0, 1000);
625 
627  ibooker.book1D("PtRecoOverGen_B_20_30_Cent_0_10", "20<genpt<30; recopt/genpt (0-10%) (Barrel);counts", 90, 0, 2);
629  ibooker.book1D("PtRecoOverGen_E_20_30_Cent_0_10", "20<genpt<30; recopt/genpt (0-10%) (EndCap);counts", 90, 0, 2);
631  ibooker.book1D("PtRecoOverGen_F_20_30_Cent_0_10", "20<genpt<30; recopt/genpt (0-10%) (Forward);counts", 90, 0, 2);
633  ibooker.book1D("PtRecoOverGen_B_30_50_Cent_0_10", "30<genpt<50; recopt/genpt (0-10%) (Barrel);counts", 90, 0, 2);
635  ibooker.book1D("PtRecoOverGen_E_30_50_Cent_0_10", "30<genpt<50; recopt/genpt (0-10%) (EndCap);counts", 90, 0, 2);
637  ibooker.book1D("PtRecoOverGen_F_30_50_Cent_0_10", "30<genpt<50; recopt/genpt (0-10%) (Forward);counts", 90, 0, 2);
639  ibooker.book1D("PtRecoOverGen_B_50_80_Cent_0_10", "50<genpt<80; recopt/genpt (0-10%) (Barrel);counts", 90, 0, 2);
641  ibooker.book1D("PtRecoOverGen_E_50_80_Cent_0_10", "50<genpt<80; recopt/genpt (0-10%) (EndCap);counts", 90, 0, 2);
643  ibooker.book1D("PtRecoOverGen_F_50_80_Cent_0_10", "50<genpt<80; recopt/genpt (0-10%) (Forward);counts", 90, 0, 2);
645  "PtRecoOverGen_B_80_120_Cent_0_10", "80<genpt<120; recopt/genpt (0-10%) (Barrel);counts", 90, 0, 2);
647  "PtRecoOverGen_E_80_120_Cent_0_10", "80<genpt<120; recopt/genpt (0-10%) (EndCap);counts", 90, 0, 2);
649  "PtRecoOverGen_F_80_120_Cent_0_10", "80<genpt<120; recopt/genpt (0-10%) (Forward);counts", 90, 0, 2);
651  "PtRecoOverGen_B_120_180_Cent_0_10", "120<genpt<180; recopt/genpt (0-10%) (Barrel);counts", 90, 0, 2);
653  "PtRecoOverGen_E_120_180_Cent_0_10", "120<genpt<180; recopt/genpt (0-10%) (EndCap);counts", 90, 0, 2);
655  "PtRecoOverGen_F_120_180_Cent_0_10", "120<genpt<180; recopt/genpt (0-10%) (Forward);counts", 90, 0, 2);
657  "PtRecoOverGen_B_180_300_Cent_0_10", "180<genpt<300; recopt/genpt (0-10%) (Barrel);counts", 90, 0, 2);
659  "PtRecoOverGen_E_180_300_Cent_0_10", "180<genpt<300; recopt/genpt (0-10%) (EndCap);counts", 90, 0, 2);
661  "PtRecoOverGen_F_180_300_Cent_0_10", "180<genpt<300; recopt/genpt (0-10%) (Forward);counts", 90, 0, 2);
663  "PtRecoOverGen_B_300_Inf_Cent_0_10", "300<genpt<Inf; recopt/genpt (0-10%) (Barrel);counts", 90, 0, 2);
665  "PtRecoOverGen_E_300_Inf_Cent_0_10", "300<genpt<Inf; recopt/genpt (0-10%) (EndCap);counts", 90, 0, 2);
667  "PtRecoOverGen_F_300_Inf_Cent_0_10", "300<genpt<Inf; recopt/genpt (0-10%) (Forward);counts", 90, 0, 2);
668 
670  "PtRecoOverGen_B_20_30_Cent_10_30", "20<genpt<30; recopt/genpt (10-30%) (Barrel);counts", 90, 0, 2);
672  "PtRecoOverGen_E_20_30_Cent_10_30", "20<genpt<30; recopt/genpt (10-30%) (EndCap);counts", 90, 0, 2);
674  "PtRecoOverGen_F_20_30_Cent_10_30", "20<genpt<30; recopt/genpt (10-30%) (Forward);counts", 90, 0, 2);
676  "PtRecoOverGen_B_30_50_Cent_10_30", "30<genpt<50; recopt/genpt (10-30%) (Barrel);counts", 90, 0, 2);
678  "PtRecoOverGen_E_30_50_Cent_10_30", "30<genpt<50; recopt/genpt (10-30%) (EndCap);counts", 90, 0, 2);
680  "PtRecoOverGen_F_30_50_Cent_10_30", "30<genpt<50; recopt/genpt (10-30%) (Forward);counts", 90, 0, 2);
682  "PtRecoOverGen_B_50_80_Cent_10_30", "50<genpt<80; recopt/genpt (10-30%) (Barrel);counts", 90, 0, 2);
684  "PtRecoOverGen_E_50_80_Cent_10_30", "50<genpt<80; recopt/genpt (10-30%) (EndCap);counts", 90, 0, 2);
686  "PtRecoOverGen_F_50_80_Cent_10_30", "50<genpt<80; recopt/genpt (10-30%) (Forward);counts", 90, 0, 2);
688  "PtRecoOverGen_B_80_120_Cent_10_30", "80<genpt<120; recopt/genpt (10-30%) (Barrel);counts", 90, 0, 2);
690  "PtRecoOverGen_E_80_120_Cent_10_30", "80<genpt<120; recopt/genpt (10-30%) (EndCap);counts", 90, 0, 2);
692  "PtRecoOverGen_F_80_120_Cent_10_30", "80<genpt<120; recopt/genpt (10-30%) (Forward);counts", 90, 0, 2);
694  "PtRecoOverGen_B_120_180_Cent_10_30", "120<genpt<180; recopt/genpt (10-30%) (Barrel);counts", 90, 0, 2);
696  "PtRecoOverGen_E_120_180_Cent_10_30", "120<genpt<180; recopt/genpt (10-30%) (EndCap);counts", 90, 0, 2);
698  "PtRecoOverGen_F_120_180_Cent_10_30", "120<genpt<180; recopt/genpt (10-30%) (Forward);counts", 90, 0, 2);
700  "PtRecoOverGen_B_180_300_Cent_10_30", "180<genpt<300; recopt/genpt (10-30%) (Barrel);counts", 90, 0, 2);
702  "PtRecoOverGen_E_180_300_Cent_10_30", "180<genpt<300; recopt/genpt (10-30%) (EndCap);counts", 90, 0, 2);
704  "PtRecoOverGen_F_180_300_Cent_10_30", "180<genpt<300; recopt/genpt (10-30%) (Forward);counts", 90, 0, 2);
706  "PtRecoOverGen_B_300_Inf_Cent_10_30", "300<genpt<Inf; recopt/genpt (10-30%) (Barrel);counts", 90, 0, 2);
708  "PtRecoOverGen_E_300_Inf_Cent_10_30", "300<genpt<Inf; recopt/genpt (10-30%) (EndCap);counts", 90, 0, 2);
710  "PtRecoOverGen_F_300_Inf_Cent_10_30", "300<genpt<Inf; recopt/genpt (10-30%) (Forward);counts", 90, 0, 2);
711 
713  "PtRecoOverGen_B_20_30_Cent_30_50", "20<genpt<30; recopt/genpt (30-50%) (Barrel);counts", 90, 0, 2);
715  "PtRecoOverGen_E_20_30_Cent_30_50", "20<genpt<30; recopt/genpt (30-50%) (EndCap);counts", 90, 0, 2);
717  "PtRecoOverGen_F_20_30_Cent_30_50", "20<genpt<30; recopt/genpt (30-50%) (Forward);counts", 90, 0, 2);
719  "PtRecoOverGen_B_30_50_Cent_30_50", "30<genpt<50; recopt/genpt (30-50%) (Barrel);counts", 90, 0, 2);
721  "PtRecoOverGen_E_30_50_Cent_30_50", "30<genpt<50; recopt/genpt (30-50%) (EndCap);counts", 90, 0, 2);
723  "PtRecoOverGen_F_30_50_Cent_30_50", "30<genpt<50; recopt/genpt (30-50%) (Forward);counts", 90, 0, 2);
725  "PtRecoOverGen_B_50_80_Cent_30_50", "50<genpt<80; recopt/genpt (30-50%) (Barrel);counts", 90, 0, 2);
727  "PtRecoOverGen_E_50_80_Cent_30_50", "50<genpt<80; recopt/genpt (30-50%) (EndCap);counts", 90, 0, 2);
729  "PtRecoOverGen_F_50_80_Cent_30_50", "50<genpt<80; recopt/genpt (30-50%) (Forward);counts", 90, 0, 2);
731  "PtRecoOverGen_B_80_120_Cent_30_50", "80<genpt<120; recopt/genpt (30-50%) (Barrel);counts", 90, 0, 2);
733  "PtRecoOverGen_E_80_120_Cent_30_50", "80<genpt<120; recopt/genpt (30-50%) (EndCap);counts", 90, 0, 2);
735  "PtRecoOverGen_F_80_120_Cent_30_50", "80<genpt<120; recopt/genpt (30-50%) (Forward);counts", 90, 0, 2);
737  "PtRecoOverGen_B_120_180_Cent_30_50", "120<genpt<180; recopt/genpt (30-50%) (Barrel);counts", 90, 0, 2);
739  "PtRecoOverGen_E_120_180_Cent_30_50", "120<genpt<180; recopt/genpt (30-50%) (EndCap);counts", 90, 0, 2);
741  "PtRecoOverGen_F_120_180_Cent_30_50", "120<genpt<180; recopt/genpt (30-50%) (Forward);counts", 90, 0, 2);
743  "PtRecoOverGen_B_180_300_Cent_30_50", "180<genpt<300; recopt/genpt (30-50%) (Barrel);counts", 90, 0, 2);
745  "PtRecoOverGen_E_180_300_Cent_30_50", "180<genpt<300; recopt/genpt (30-50%) (EndCap);counts", 90, 0, 2);
747  "PtRecoOverGen_F_180_300_Cent_30_50", "180<genpt<300; recopt/genpt (30-50%) (Forward);counts", 90, 0, 2);
749  "PtRecoOverGen_B_300_Inf_Cent_30_50", "300<genpt<Inf; recopt/genpt (30-50%) (Barrel);counts", 90, 0, 2);
751  "PtRecoOverGen_E_300_Inf_Cent_30_50", "300<genpt<Inf; recopt/genpt (30-50%) (EndCap);counts", 90, 0, 2);
753  "PtRecoOverGen_F_300_Inf_Cent_30_50", "300<genpt<Inf; recopt/genpt (30-50%) (Forward);counts", 90, 0, 2);
754 
756  "PtRecoOverGen_B_20_30_Cent_50_80", "20<genpt<30; recopt/genpt (50-80%) (Barrel);counts", 90, 0, 2);
758  "PtRecoOverGen_E_20_30_Cent_50_80", "20<genpt<30; recopt/genpt (50-80%) (EndCap);counts", 90, 0, 2);
760  "PtRecoOverGen_F_20_30_Cent_50_80", "20<genpt<30; recopt/genpt (50-80%) (Forward);counts", 90, 0, 2);
762  "PtRecoOverGen_B_30_50_Cent_50_80", "30<genpt<50; recopt/genpt (50-80%) (Barrel);counts", 90, 0, 2);
764  "PtRecoOverGen_E_30_50_Cent_50_80", "30<genpt<50; recopt/genpt (50-80%) (EndCap);counts", 90, 0, 2);
766  "PtRecoOverGen_F_30_50_Cent_50_80", "30<genpt<50; recopt/genpt (50-80%) (Forward);counts", 90, 0, 2);
768  "PtRecoOverGen_B_50_80_Cent_50_80", "50<genpt<80; recopt/genpt (50-80%) (Barrel);counts", 90, 0, 2);
770  "PtRecoOverGen_E_50_80_Cent_50_80", "50<genpt<80; recopt/genpt (50-80%) (EndCap);counts", 90, 0, 2);
772  "PtRecoOverGen_F_50_80_Cent_50_80", "50<genpt<80; recopt/genpt (50-80%) (Forward);counts", 90, 0, 2);
774  "PtRecoOverGen_B_80_120_Cent_50_80", "80<genpt<120; recopt/genpt (50-80%) (Barrel);counts", 90, 0, 2);
776  "PtRecoOverGen_E_80_120_Cent_50_80", "80<genpt<120; recopt/genpt (50-80%) (EndCap);counts", 90, 0, 2);
778  "PtRecoOverGen_F_80_120_Cent_50_80", "80<genpt<120; recopt/genpt (50-80%) (Forward);counts", 90, 0, 2);
780  "PtRecoOverGen_B_120_180_Cent_50_80", "120<genpt<180; recopt/genpt (50-80%) (Barrel);counts", 90, 0, 2);
782  "PtRecoOverGen_E_120_180_Cent_50_80", "120<genpt<180; recopt/genpt (50-80%) (EndCap);counts", 90, 0, 2);
784  "PtRecoOverGen_F_120_180_Cent_50_80", "120<genpt<180; recopt/genpt (50-80%) (Forward);counts", 90, 0, 2);
786  "PtRecoOverGen_B_180_300_Cent_50_80", "180<genpt<300; recopt/genpt (50-80%) (Barrel);counts", 90, 0, 2);
788  "PtRecoOverGen_E_180_300_Cent_50_80", "180<genpt<300; recopt/genpt (50-80%) (EndCap);counts", 90, 0, 2);
790  "PtRecoOverGen_F_180_300_Cent_50_80", "180<genpt<300; recopt/genpt (50-80%) (Forward);counts", 90, 0, 2);
792  "PtRecoOverGen_B_300_Inf_Cent_50_80", "300<genpt<Inf; recopt/genpt (50-80%) (Barrel);counts", 90, 0, 2);
794  "PtRecoOverGen_E_300_Inf_Cent_50_80", "300<genpt<Inf; recopt/genpt (50-80%) (EndCap);counts", 90, 0, 2);
796  "PtRecoOverGen_F_300_Inf_Cent_50_80", "300<genpt<Inf; recopt/genpt (50-80%) (Forward);counts", 90, 0, 2);
797 
798  mPtRecoOverGen_GenPt_B_Cent_0_10 = ibooker.bookProfile("PtRecoOverGen_GenPt_B_Cent_0_10",
799  Form("|#eta|<%2.2f, (0-10cent);genpt;recopt/genpt", BarrelEta),
800  log10PtBins,
801  log10PtMin,
802  log10PtMax,
803  0,
804  2,
805  " ");
807  ibooker.bookProfile("PtRecoOverGen_GenPt_E_Cent_0_10",
808  Form("%2.2f<|#eta|<%2.2f, (0-10cent);genpt;recopt/genpt", BarrelEta, EndcapEta),
809  log10PtBins,
810  log10PtMin,
811  log10PtMax,
812  0,
813  2,
814  " ");
816  ibooker.bookProfile("PtRecoOverGen_GenPt_F_Cent_0_10",
817  Form("%2.2f<|#eta|<%2.2f, (0-10cent);genpt;recopt/genpt", EndcapEta, ForwardEta),
818  log10PtBins,
819  log10PtMin,
820  log10PtMax,
821  0,
822  2,
823  " ");
825  ibooker.bookProfile("PtRecoOverGen_GenPt_B_Cent_10_30",
826  Form("|#eta|<%2.2f, (10-30cent);genpt;recopt/genpt", BarrelEta),
827  log10PtBins,
828  log10PtMin,
829  log10PtMax,
830  0,
831  2,
832  " ");
834  ibooker.bookProfile("PtRecoOverGen_GenPt_E_Cent_10_30",
835  Form("%2.2f<|#eta|<%2.2f, (10-30cent);genpt;recopt/genpt", BarrelEta, EndcapEta),
836  log10PtBins,
837  log10PtMin,
838  log10PtMax,
839  0,
840  2,
841  " ");
843  ibooker.bookProfile("PtRecoOverGen_GenPt_F_Cent_10_30",
844  Form("%2.2f<|#eta|<%2.2f, (10-30cent);genpt;recopt/genpt", EndcapEta, ForwardEta),
845  log10PtBins,
846  log10PtMin,
847  log10PtMax,
848  0,
849  2,
850  " ");
852  ibooker.bookProfile("PtRecoOverGen_GenPt_B_Cent_30_50",
853  Form("|#eta|<%2.2f, (30-50cent);genpt;recopt/genpt", BarrelEta),
854  log10PtBins,
855  log10PtMin,
856  log10PtMax,
857  0,
858  2,
859  " ");
861  ibooker.bookProfile("PtRecoOverGen_GenPt_E_Cent_30_50",
862  Form("%2.2f<|#eta|<%2.2f, (30-50cent);genpt;recopt/genpt", BarrelEta, EndcapEta),
863  log10PtBins,
864  log10PtMin,
865  log10PtMax,
866  0,
867  2,
868  " ");
870  ibooker.bookProfile("PtRecoOverGen_GenPt_F_Cent_30_50",
871  Form("%2.2f<|#eta|<%2.2f, (30-50cent);genpt;recopt/genpt", EndcapEta, ForwardEta),
872  log10PtBins,
873  log10PtMin,
874  log10PtMax,
875  0,
876  2,
877  " ");
879  ibooker.bookProfile("PtRecoOverGen_GenPt_B_Cent_50_80",
880  Form("|#eta|<%2.2f, (50-80cent);genpt;recopt/genpt", BarrelEta),
881  log10PtBins,
882  log10PtMin,
883  log10PtMax,
884  0,
885  2,
886  " ");
888  ibooker.bookProfile("PtRecoOverGen_GenPt_E_Cent_50_80",
889  Form("%2.2f<|#eta|<%2.2f, (50-80cent);genpt;recopt/genpt", BarrelEta, EndcapEta),
890  log10PtBins,
891  log10PtMin,
892  log10PtMax,
893  0,
894  2,
895  " ");
897  ibooker.bookProfile("PtRecoOverGen_GenPt_F_Cent_50_80",
898  Form("%2.2f<|#eta|<%2.2f, (50-80cent);genpt;recopt/genpt", EndcapEta, ForwardEta),
899  log10PtBins,
900  log10PtMin,
901  log10PtMax,
902  0,
903  2,
904  " ");
905 
907  "PtRecoOverGen_GenEta_20_30_Cent_0_10", "20<genpt<30 (0-10%);geneta;recopt/genpt", 90, etaRange, 0, 2, " ");
909  "PtRecoOverGen_GenEta_30_50_Cent_0_10", "30<genpt<50 (0-10%);geneta;recopt/genpt", 90, etaRange, 0, 2, " ");
911  "PtRecoOverGen_GenEta_50_80_Cent_0_10", "50<genpt<80 (0-10%);geneta;recopt/genpt", 90, etaRange, 0, 2, " ");
913  "PtRecoOverGen_GenEta_80_120_Cent_0_10", "80<genpt<120 (0-10%);geneta;recopt/genpt", 90, etaRange, 0, 2, " ");
915  "PtRecoOverGen_GenEta_120_180_Cent_0_10", "120<genpt<180 (0-10%);geneta;recopt/genpt", 90, etaRange, 0, 2, " ");
917  "PtRecoOverGen_GenEta_180_300_Cent_0_10", "180<genpt<300 (0-10%);geneta;recopt/genpt", 90, etaRange, 0, 2, " ");
919  "PtRecoOverGen_GenEta_300_Inf_Cent_0_10", "300<genpt<Inf (0-10%);geneta;recopt/genpt", 90, etaRange, 0, 2, " ");
920 
922  "PtRecoOverGen_GenEta_20_30_Cent_10_30", "20<genpt<30 (10-30%);geneta;recopt/genpt", 90, etaRange, 0, 2, " ");
924  "PtRecoOverGen_GenEta_30_50_Cent_10_30", "30<genpt<50 (10-30%);geneta;recopt/genpt", 90, etaRange, 0, 2, " ");
926  "PtRecoOverGen_GenEta_50_80_Cent_10_30", "50<genpt<80 (10-30%);geneta;recopt/genpt", 90, etaRange, 0, 2, " ");
928  "PtRecoOverGen_GenEta_80_120_Cent_10_30", "80<genpt<120 (10-30%);geneta;recopt/genpt", 90, etaRange, 0, 2, " ");
930  "PtRecoOverGen_GenEta_120_180_Cent_10_30", "120<genpt<180 (10-30%);geneta;recopt/genpt", 90, etaRange, 0, 2, " ");
932  "PtRecoOverGen_GenEta_180_300_Cent_10_30", "180<genpt<300 (10-30%);geneta;recopt/genpt", 90, etaRange, 0, 2, " ");
934  "PtRecoOverGen_GenEta_300_Inf_Cent_10_30", "300<genpt<Inf (10-30%);geneta;recopt/genpt", 90, etaRange, 0, 2, " ");
935 
937  "PtRecoOverGen_GenEta_20_30_Cent_30_50", "20<genpt<30 (30-50%);geneta;recopt/genpt", 90, etaRange, 0, 2, " ");
939  "PtRecoOverGen_GenEta_30_50_Cent_30_50", "30<genpt<50 (30-50%);geneta;recopt/genpt", 90, etaRange, 0, 2, " ");
941  "PtRecoOverGen_GenEta_50_80_Cent_30_50", "50<genpt<80 (30-50%);geneta;recopt/genpt", 90, etaRange, 0, 2, " ");
943  "PtRecoOverGen_GenEta_80_120_Cent_30_50", "80<genpt<120 (30-50%);geneta;recopt/genpt", 90, etaRange, 0, 2, " ");
945  "PtRecoOverGen_GenEta_120_180_Cent_30_50", "120<genpt<180 (30-50%);geneta;recopt/genpt", 90, etaRange, 0, 2, " ");
947  "PtRecoOverGen_GenEta_180_300_Cent_30_50", "180<genpt<300 (30-50%);geneta;recopt/genpt", 90, etaRange, 0, 2, " ");
949  "PtRecoOverGen_GenEta_300_Inf_Cent_30_50", "300<genpt<Inf (30-50%);geneta;recopt/genpt", 90, etaRange, 0, 2, " ");
950 
952  "PtRecoOverGen_GenEta_20_30_Cent_50_80", "20<genpt<30 (50-80%);geneta;recopt/genpt", 90, etaRange, 0, 2, " ");
954  "PtRecoOverGen_GenEta_30_50_Cent_50_80", "30<genpt<50 (50-80%);geneta;recopt/genpt", 90, etaRange, 0, 2, " ");
956  "PtRecoOverGen_GenEta_50_80_Cent_50_80", "50<genpt<80 (50-80%);geneta;recopt/genpt", 90, etaRange, 0, 2, " ");
958  "PtRecoOverGen_GenEta_80_120_Cent_50_80", "80<genpt<120 (50-80%);geneta;recopt/genpt", 90, etaRange, 0, 2, " ");
960  "PtRecoOverGen_GenEta_120_180_Cent_50_80", "120<genpt<180 (50-80%);geneta;recopt/genpt", 90, etaRange, 0, 2, " ");
962  "PtRecoOverGen_GenEta_180_300_Cent_50_80", "180<genpt<300 (50-80%);geneta;recopt/genpt", 90, etaRange, 0, 2, " ");
964  "PtRecoOverGen_GenEta_300_Inf_Cent_50_80", "300<genpt<Inf (50-80%);geneta;recopt/genpt", 90, etaRange, 0, 2, " ");
965 
966  if (mOutputFile.empty())
967  LogInfo("OutputInfo") << " Histograms will NOT be saved";
968  else
969  LogInfo("OutputInfo") << " Histograms will be saved to file:" << mOutputFile;
970 
971  delete h2D_etabins_vs_pt2;
972  delete h2D_etabins_vs_pt;
973  delete h2D_etabins_vs_phi;
974  delete h2D_pfcand_etabins_vs_pt;
975 }
976 
977 //------------------------------------------------------------------------------
978 // ~JetTester_HeavyIons
979 //------------------------------------------------------------------------------
981 
982 //------------------------------------------------------------------------------
983 // beginJob
984 //------------------------------------------------------------------------------
985 // void JetTester_HeavyIons::beginJob() {
986 // //std::cout<<"inside the begin job function"<<endl;
987 //}
988 
989 //------------------------------------------------------------------------------
990 // endJob
991 //------------------------------------------------------------------------------
992 // void JetTester_HeavyIons::endJob()
993 //{
994 // if (!mOutputFile.empty() && &*edm::Service<DQMStore>())
995 // {
996 // edm::Service<DQMStore>()->save(mOutputFile);
997 // }
998 //}
999 
1000 //------------------------------------------------------------------------------
1001 // analyze
1002 //------------------------------------------------------------------------------
1004  // Get the primary vertices
1005  //----------------------------------------------------------------------------
1007  mEvent.getByToken(pvToken_, pvHandle);
1008  reco::Vertex::Point vtx(0, 0, 0);
1010  // vtx = getVtx(mEvent);
1011 
1012  mEvent.getByToken(hiVertexToken_, vtxs);
1013  int greatestvtx = 0;
1014  int nVertex = vtxs->size();
1015 
1016  for (unsigned int i = 0; i < vtxs->size(); ++i) {
1017  unsigned int daughter = (*vtxs)[i].tracksSize();
1018  if (daughter > (*vtxs)[greatestvtx].tracksSize())
1019  greatestvtx = i;
1020  }
1021 
1022  if (nVertex <= 0) {
1023  vtx = reco::Vertex::Point(0, 0, 0);
1024  }
1025  vtx = (*vtxs)[greatestvtx].position();
1026 
1027  int nGoodVertices = 0;
1028 
1029  if (pvHandle.isValid()) {
1030  for (unsigned i = 0; i < pvHandle->size(); i++) {
1031  if ((*pvHandle)[i].ndof() > 4 && (fabs((*pvHandle)[i].z()) <= 24) && (fabs((*pvHandle)[i].position().rho()) <= 2))
1032  nGoodVertices++;
1033  }
1034  }
1035 
1036  mNvtx->Fill(nGoodVertices);
1037 
1038  // Get the Jet collection
1039  //----------------------------------------------------------------------------
1040  // math::XYZTLorentzVector p4tmp[2];
1041 
1042  std::vector<Jet> recoJets;
1043  recoJets.clear();
1044 
1049 
1050  // Get the Particle flow candidates and the Voronoi variables
1052  edm::Handle<CaloTowerCollection> caloCandidates;
1053  edm::Handle<reco::CandidateView> pfcandidates_;
1054  edm::Handle<reco::CandidateView> calocandidates_;
1055 
1056  // get the centrality
1058  mEvent.getByToken(centralityToken, cent); //_centralitytag comes from the cfg
1059 
1060  mHF->Fill(cent->EtHFtowerSum());
1061  Float_t HF_energy = cent->EtHFtowerSum();
1062 
1063  edm::Handle<int> cbin;
1064  mEvent.getByToken(centralityBinToken, cbin);
1065  if (!cent.isValid())
1066  return;
1067 
1068  int hibin = -999;
1069  if (cbin.isValid()) {
1070  hibin = *cbin;
1071  }
1072  // else edm::LogWarning("JetTester_HeavyIons") << "invalid collection:
1073  // centralityBin " << std::endl;
1074 
1075  bool isCentral = false;
1076  bool ismidCentral = false;
1077  bool ismidPeripheral = false;
1078  bool isPeripheral = false;
1079 
1080  if (hibin < 20)
1081  isCentral = true;
1082  if (hibin >= 20 && hibin < 60)
1083  ismidCentral = true;
1084  if (hibin >= 60 && hibin < 100)
1085  ismidPeripheral = true;
1086  if (hibin >= 100 && hibin < 160)
1087  isPeripheral = true;
1088 
1089  if (isCaloJet)
1090  mEvent.getByToken(caloJetsToken_, caloJets);
1091  if (isJPTJet)
1092  mEvent.getByToken(jptJetsToken_, jptJets);
1093  if (isPFJet) {
1094  if (std::string("Pu") == UEAlgo)
1095  mEvent.getByToken(basicJetsToken_, basicJets);
1096  }
1097 
1098  mEvent.getByToken(pfCandToken_, pfCandidates);
1099  mEvent.getByToken(pfCandViewToken_, pfcandidates_);
1100 
1101  mEvent.getByToken(caloTowersToken_, caloCandidates);
1102  mEvent.getByToken(caloCandViewToken_, calocandidates_);
1103 
1104  const reco::PFCandidateCollection *pfCandidateColl = pfCandidates.product();
1105 
1106  Int_t NPFpart = 0;
1107  Int_t NCaloTower = 0;
1108  Float_t pfPt = 0;
1109  Float_t pfEta = 0;
1110  Int_t pfID = 0;
1111  Float_t pfPhi = 0;
1112  Float_t caloPt = 0;
1113  Float_t caloEta = 0;
1114  Float_t caloPhi = 0;
1115  Float_t SumPt_value = 0;
1116 
1117  double edge_pseudorapidity[etaBins_ + 1] = {-5.191,
1118  -2.650,
1119  -2.043,
1120  -1.740,
1121  -1.479,
1122  -1.131,
1123  -0.783,
1124  -0.522,
1125  0.522,
1126  0.783,
1127  1.131,
1128  1.479,
1129  1.740,
1130  2.043,
1131  2.650,
1132  5.191};
1133 
1134  if (isCaloJet) {
1135  Float_t SumCaloPt[etaBins_];
1136  Float_t SumSquaredCaloPt[etaBins_];
1137 
1138  for (int i = 0; i < etaBins_; i++) {
1139  SumCaloPt[i] = 0;
1140  SumSquaredCaloPt[i] = 0;
1141  }
1142 
1143  for (unsigned icand = 0; icand < caloCandidates->size(); icand++) {
1144  const CaloTower &tower = (*caloCandidates)[icand];
1145  reco::CandidateViewRef ref(calocandidates_, icand);
1146  if (tower.p4(vtx).Et() < 0.1)
1147  continue;
1148 
1149  NCaloTower++;
1150 
1151  caloPt = tower.p4(vtx).Et();
1152  caloEta = tower.p4(vtx).Eta();
1153  caloPhi = tower.p4(vtx).Phi();
1154 
1155  for (size_t k = 0; k < nedge_pseudorapidity - 1; k++) {
1156  if (caloEta >= edge_pseudorapidity[k] && caloEta < edge_pseudorapidity[k + 1]) {
1157  SumCaloPt[k] = SumCaloPt[k] + caloPt;
1158  SumSquaredCaloPt[k] = SumSquaredCaloPt[k] + caloPt * caloPt;
1159  } // eta selection statement
1160 
1161  } // eta bin loop
1162 
1163  SumPt_value = SumPt_value + caloPt;
1164 
1165  mCaloPt->Fill(caloPt);
1166  mCaloEta->Fill(caloEta);
1167  mCaloPhi->Fill(caloPhi);
1168 
1169  } // calo tower candidate loop
1170 
1171  Float_t Evt_SumCaloPt = 0;
1172 
1173  Float_t Evt_SumSquaredCaloPt = 0;
1174 
1175  mSumCaloPt_n5p191_n2p650->Fill(SumCaloPt[0]);
1176  mSumCaloPt_n2p650_n2p043->Fill(SumCaloPt[1]);
1177  mSumCaloPt_n2p043_n1p740->Fill(SumCaloPt[2]);
1178  mSumCaloPt_n1p740_n1p479->Fill(SumCaloPt[3]);
1179  mSumCaloPt_n1p479_n1p131->Fill(SumCaloPt[4]);
1180  mSumCaloPt_n1p131_n0p783->Fill(SumCaloPt[5]);
1181  mSumCaloPt_n0p783_n0p522->Fill(SumCaloPt[6]);
1182  mSumCaloPt_n0p522_0p522->Fill(SumCaloPt[7]);
1183  mSumCaloPt_0p522_0p783->Fill(SumCaloPt[8]);
1184  mSumCaloPt_0p783_1p131->Fill(SumCaloPt[9]);
1185  mSumCaloPt_1p131_1p479->Fill(SumCaloPt[10]);
1186  mSumCaloPt_1p479_1p740->Fill(SumCaloPt[11]);
1187  mSumCaloPt_1p740_2p043->Fill(SumCaloPt[12]);
1188  mSumCaloPt_2p043_2p650->Fill(SumCaloPt[13]);
1189  mSumCaloPt_2p650_5p191->Fill(SumCaloPt[14]);
1190 
1191  for (size_t k = 0; k < nedge_pseudorapidity - 1; k++) {
1192  Evt_SumCaloPt = Evt_SumCaloPt + SumCaloPt[k];
1193 
1194  Evt_SumSquaredCaloPt = Evt_SumSquaredCaloPt + SumSquaredCaloPt[k];
1195 
1196  } // eta bin loop
1197 
1198  mSumCaloPt->Fill(Evt_SumCaloPt);
1199 
1200  mSumSquaredCaloPt->Fill(Evt_SumSquaredCaloPt);
1201 
1202  mSumCaloPt_HF->Fill(Evt_SumCaloPt, HF_energy);
1203 
1204  mNCalopart->Fill(NCaloTower);
1205  mSumpt->Fill(SumPt_value);
1206 
1207  } // is calo jet
1208 
1209  if (isPFJet) {
1210  Float_t SumPFPt[etaBins_];
1211 
1212  Float_t SumSquaredPFPt[etaBins_];
1213 
1214  for (int i = 0; i < etaBins_; i++) {
1215  SumPFPt[i] = 0;
1216  SumSquaredPFPt[i] = 0;
1217  }
1218 
1219  for (unsigned icand = 0; icand < pfCandidateColl->size(); icand++) {
1220  const reco::PFCandidate pfCandidate = pfCandidateColl->at(icand);
1221  reco::CandidateViewRef ref(pfcandidates_, icand);
1222 
1223  if (pfCandidate.pt() < 0.5)
1224  continue;
1225 
1226  NPFpart++;
1227  pfPt = pfCandidate.pt();
1228  pfEta = pfCandidate.eta();
1229  pfPhi = pfCandidate.phi();
1230  pfID = pfCandidate.particleId();
1231 
1232  bool inBarrel = false;
1233  bool inEndcap = false;
1234  bool inForward = false;
1235 
1236  if (fabs(pfEta) < BarrelEta)
1237  inBarrel = true;
1238  if (fabs(pfEta) >= BarrelEta && fabs(pfEta) < EndcapEta)
1239  inEndcap = true;
1240  if (fabs(pfEta) >= EndcapEta && fabs(pfEta) < ForwardEta)
1241  inForward = true;
1242 
1243  switch (pfID) {
1244  case 0:
1245  mPFCandpT_vs_eta_Unknown->Fill(pfPt, pfEta);
1246  if (inBarrel)
1248  if (inEndcap)
1250  if (inForward)
1252  break;
1253  case 1:
1254  mPFCandpT_vs_eta_ChargedHadron->Fill(pfPt, pfEta);
1255  if (inBarrel)
1257  if (inEndcap)
1259  if (inForward)
1261  break;
1262  case 2:
1263  mPFCandpT_vs_eta_electron->Fill(pfPt, pfEta);
1264  if (inBarrel)
1266  if (inEndcap)
1268  if (inForward)
1270  break;
1271  case 3:
1272  mPFCandpT_vs_eta_muon->Fill(pfPt, pfEta);
1273  if (inBarrel)
1274  mPFCandpT_Barrel_muon->Fill(pfPt);
1275  if (inEndcap)
1276  mPFCandpT_Endcap_muon->Fill(pfPt);
1277  if (inForward)
1279  break;
1280  case 4:
1281  mPFCandpT_vs_eta_photon->Fill(pfPt, pfEta);
1282  if (inBarrel)
1284  if (inEndcap)
1286  if (inForward)
1288  break;
1289  case 5:
1290  mPFCandpT_vs_eta_NeutralHadron->Fill(pfPt, pfEta);
1291  if (inBarrel)
1293  if (inEndcap)
1295  if (inForward)
1297  break;
1298  case 6:
1299  mPFCandpT_vs_eta_HadE_inHF->Fill(pfPt, pfEta);
1300  if (inBarrel)
1302  if (inEndcap)
1304  if (inForward)
1306  break;
1307  case 7:
1308  mPFCandpT_vs_eta_EME_inHF->Fill(pfPt, pfEta);
1309  if (inBarrel)
1311  if (inEndcap)
1313  if (inForward)
1315  }
1316 
1317  for (size_t k = 0; k < nedge_pseudorapidity - 1; k++) {
1318  if (pfEta >= edge_pseudorapidity[k] && pfEta < edge_pseudorapidity[k + 1]) {
1319  SumPFPt[k] = SumPFPt[k] + pfPt;
1320 
1321  SumSquaredPFPt[k] = SumSquaredPFPt[k] + pfPt * pfPt;
1322 
1323  } // eta selection statement
1324 
1325  } // eta bin loop
1326 
1327  SumPt_value = SumPt_value + pfPt;
1328 
1329  mPFPt->Fill(pfPt);
1330  mPFEta->Fill(pfEta);
1331  mPFPhi->Fill(pfPhi);
1332 
1333  } // pf candidate loop
1334 
1335  Float_t Evt_SumPFPt = 0;
1336 
1337  Float_t Evt_SumSquaredPFPt = 0;
1338 
1339  mSumPFPt_n5p191_n2p650->Fill(SumPFPt[0]);
1340  mSumPFPt_n2p650_n2p043->Fill(SumPFPt[1]);
1341  mSumPFPt_n2p043_n1p740->Fill(SumPFPt[2]);
1342  mSumPFPt_n1p740_n1p479->Fill(SumPFPt[3]);
1343  mSumPFPt_n1p479_n1p131->Fill(SumPFPt[4]);
1344  mSumPFPt_n1p131_n0p783->Fill(SumPFPt[5]);
1345  mSumPFPt_n0p783_n0p522->Fill(SumPFPt[6]);
1346  mSumPFPt_n0p522_0p522->Fill(SumPFPt[7]);
1347  mSumPFPt_0p522_0p783->Fill(SumPFPt[8]);
1348  mSumPFPt_0p783_1p131->Fill(SumPFPt[9]);
1349  mSumPFPt_1p131_1p479->Fill(SumPFPt[10]);
1350  mSumPFPt_1p479_1p740->Fill(SumPFPt[11]);
1351  mSumPFPt_1p740_2p043->Fill(SumPFPt[12]);
1352  mSumPFPt_2p043_2p650->Fill(SumPFPt[13]);
1353  mSumPFPt_2p650_5p191->Fill(SumPFPt[14]);
1354 
1355  for (size_t k = 0; k < nedge_pseudorapidity - 1; k++) {
1356  Evt_SumPFPt = Evt_SumPFPt + SumPFPt[k];
1357 
1358  Evt_SumSquaredPFPt = Evt_SumSquaredPFPt + SumSquaredPFPt[k];
1359 
1360  } // eta bin loop
1361 
1362  mSumPFPt->Fill(Evt_SumPFPt);
1363 
1364  mSumSquaredPFPt->Fill(Evt_SumSquaredPFPt);
1365 
1366  mSumPFPt_HF->Fill(Evt_SumPFPt, HF_energy);
1367 
1368  mNPFpart->Fill(NPFpart);
1369  mSumpt->Fill(SumPt_value);
1370  }
1371 
1372  if (isCaloJet) {
1373  for (unsigned ijet = 0; ijet < caloJets->size(); ijet++)
1374  recoJets.push_back((*caloJets)[ijet]);
1375  }
1376 
1377  if (isJPTJet) {
1378  for (unsigned ijet = 0; ijet < jptJets->size(); ijet++)
1379  recoJets.push_back((*jptJets)[ijet]);
1380  }
1381 
1382  if (isPFJet) {
1383  if (std::string("Pu") == UEAlgo) {
1384  for (unsigned ijet = 0; ijet < basicJets->size(); ijet++)
1385  recoJets.push_back((*basicJets)[ijet]);
1386  }
1387  }
1388 
1389  if (isCaloJet && !caloJets.isValid())
1390  return;
1391  if (isJPTJet && !jptJets.isValid())
1392  return;
1393  if (isPFJet) {
1394  if (std::string("Pu") == UEAlgo) {
1395  if (!basicJets.isValid())
1396  return;
1397  }
1398  }
1399 
1400  int nJet_40 = 0;
1401 
1402  mNJets->Fill(recoJets.size());
1403 
1404  for (unsigned ijet = 0; ijet < recoJets.size(); ijet++) {
1405  if (recoJets[ijet].pt() > mRecoJetPtThreshold) {
1406  // counting forward and barrel jets
1407  // get an idea of no of jets with pT>40 GeV
1408  if (recoJets[ijet].pt() > 40)
1409  nJet_40++;
1410 
1411  if (mEta)
1412  mEta->Fill(recoJets[ijet].eta());
1413  if (mjetpileup)
1414  mjetpileup->Fill(recoJets[ijet].pileup());
1415  if (mJetArea)
1416  mJetArea->Fill(recoJets[ijet].jetArea());
1417  if (mPhi)
1418  mPhi->Fill(recoJets[ijet].phi());
1419  if (mEnergy)
1420  mEnergy->Fill(recoJets[ijet].energy());
1421  if (mP)
1422  mP->Fill(recoJets[ijet].p());
1423  if (mPt)
1424  mPt->Fill(recoJets[ijet].pt());
1425  if (mMass)
1426  mMass->Fill(recoJets[ijet].mass());
1427  if (mConstituents)
1429  }
1430  }
1431 
1432  if (mNJets_40)
1433  mNJets_40->Fill(nJet_40);
1434 
1435  // Gen level information:
1436  if (!mEvent.isRealData()) {
1437  // Get ptHat
1438  //------------------------------------------------------------------------
1440  mEvent.getByToken(evtToken_, myGenEvt);
1441 
1442  if (myGenEvt.isValid()) {
1443  if (myGenEvt->hasBinningValues()) {
1444  double ptHat = myGenEvt->binningValues()[0];
1445  if (mPtHat)
1446  mPtHat->Fill(ptHat);
1447  }
1448  }
1449  // Gen jets
1450  //------------------------------------------------------------------------
1452  mEvent.getByToken(genJetsToken_, genJets);
1453 
1454  if (!genJets.isValid())
1455  return;
1456 
1457  for (GenJetCollection::const_iterator gjet = genJets->begin(); gjet != genJets->end(); gjet++) {
1458  if (gjet->pt() > mMatchGenPtThreshold) {
1459  if (mGenEta)
1460  mGenEta->Fill(gjet->eta());
1461  if (mGenPhi)
1462  mGenPhi->Fill(gjet->phi());
1463  if (mGenPt)
1464  mGenPt->Fill(gjet->pt());
1465  }
1466  }
1467 
1468  if (!(mInputGenCollection.label().empty())) {
1469  for (GenJetCollection::const_iterator gjet = genJets->begin(); gjet != genJets->end(); gjet++) {
1470  if (fabs(gjet->eta()) > 6.)
1471  continue; // Out of the detector
1472  if (gjet->pt() < mMatchGenPtThreshold)
1473  continue;
1474  if (recoJets.empty())
1475  continue;
1476 
1477  bool inBarrel = false;
1478  bool inEndcap = false;
1479  bool inForward = false;
1480 
1481  if (fabs(gjet->eta()) < BarrelEta)
1482  inBarrel = true;
1483  if (fabs(gjet->eta()) >= BarrelEta && fabs(gjet->eta()) < EndcapEta)
1484  inEndcap = true;
1485  if (fabs(gjet->eta()) >= EndcapEta && fabs(gjet->eta()) < ForwardEta)
1486  inForward = true;
1487 
1488  // pt response
1489  //------------------------------------------------------------
1490  int iMatch = -1;
1491  double deltaRBest = 999;
1492  double JetPtBest = 0;
1493  for (unsigned ijet = 0; ijet < recoJets.size(); ++ijet) {
1494  double recoPt = recoJets[ijet].pt();
1495  if (recoPt > 10) {
1496  double delR = deltaR(gjet->eta(), gjet->phi(), recoJets[ijet].eta(), recoJets[ijet].phi());
1497  if (delR < deltaRBest) {
1498  deltaRBest = delR;
1499  JetPtBest = recoPt;
1500  iMatch = ijet;
1501  }
1502  }
1503  }
1504  if (iMatch < 0)
1505  continue;
1506 
1507  // fillMatchHists(gjet->eta(), gjet->phi(), gjet->pt(),
1508  // recoJets[iMatch].eta(), recoJets[iMatch].phi(),
1509  // recoJets[iMatch].pt(), hibin);
1510  if (deltaRBest < mRThreshold) {
1511  double genpt = gjet->pt();
1512  double geneta = gjet->eta();
1513  double response = JetPtBest / genpt;
1514  // Fill all the response histograms here: for each pT bin, eta region,
1515  // centrality bin
1516 
1517  if (inBarrel) {
1518  if (isCentral)
1520  if (ismidCentral)
1522  if (ismidPeripheral)
1524  if (isPeripheral)
1526  }
1527  if (inEndcap) {
1528  if (isCentral)
1530  if (ismidCentral)
1532  if (ismidPeripheral)
1534  if (isPeripheral)
1536  }
1537  if (inForward) {
1538  if (isCentral)
1540  if (ismidCentral)
1542  if (ismidPeripheral)
1544  if (isPeripheral)
1546  }
1547 
1548  if (gjet->pt() >= 20 && gjet->pt() < 30) {
1549  if (isCentral) {
1551  if (inBarrel)
1553  if (inEndcap)
1555  if (inForward)
1557  } //
1558  if (ismidCentral) {
1560  if (inBarrel)
1562  if (inEndcap)
1564  if (inForward)
1566  } //
1567  if (ismidPeripheral) {
1569  if (inBarrel)
1571  if (inEndcap)
1573  if (inForward)
1575  } //
1576  if (isPeripheral) {
1578  if (inBarrel)
1580  if (inEndcap)
1582  if (inForward)
1584  } //
1585  } // pt bin 20-30
1586 
1587  if (gjet->pt() >= 30 && gjet->pt() < 50) {
1588  if (isCentral) {
1590  if (inBarrel)
1592  if (inEndcap)
1594  if (inForward)
1596  } //
1597  if (ismidCentral) {
1599  if (inBarrel)
1601  if (inEndcap)
1603  if (inForward)
1605  } //
1606  if (ismidPeripheral) {
1608  if (inBarrel)
1610  if (inEndcap)
1612  if (inForward)
1614  } //
1615  if (isPeripheral) {
1617  if (inBarrel)
1619  if (inEndcap)
1621  if (inForward)
1623  } //
1624  } // pt bin 30-50
1625 
1626  if (gjet->pt() >= 50 && gjet->pt() < 80) {
1627  if (isCentral) {
1629  if (inBarrel)
1631  if (inEndcap)
1633  if (inForward)
1635  } //
1636  if (ismidCentral) {
1638  if (inBarrel)
1640  if (inEndcap)
1642  if (inForward)
1644  } //
1645  if (ismidPeripheral) {
1647  if (inBarrel)
1649  if (inEndcap)
1651  if (inForward)
1653  } //
1654  if (isPeripheral) {
1656  if (inBarrel)
1658  if (inEndcap)
1660  if (inForward)
1662  } //
1663  } // pt bin 50-80
1664 
1665  if (gjet->pt() >= 80 && gjet->pt() < 120) {
1666  if (isCentral) {
1668  if (inBarrel)
1670  if (inEndcap)
1672  if (inForward)
1674  } //
1675  if (ismidCentral) {
1677  if (inBarrel)
1679  if (inEndcap)
1681  if (inForward)
1683  } //
1684  if (ismidPeripheral) {
1686  if (inBarrel)
1688  if (inEndcap)
1690  if (inForward)
1692  } //
1693  if (isPeripheral) {
1695  if (inBarrel)
1697  if (inEndcap)
1699  if (inForward)
1701  } //
1702  } // pt bin 80-120
1703 
1704  if (gjet->pt() >= 120 && gjet->pt() < 180) {
1705  if (isCentral) {
1707  if (inBarrel)
1709  if (inEndcap)
1711  if (inForward)
1713  } //
1714  if (ismidCentral) {
1716  if (inBarrel)
1718  if (inEndcap)
1720  if (inForward)
1722  } //
1723  if (ismidPeripheral) {
1725  if (inBarrel)
1727  if (inEndcap)
1729  if (inForward)
1731  } //
1732  if (isPeripheral) {
1734  if (inBarrel)
1736  if (inEndcap)
1738  if (inForward)
1740  } //
1741  } // pt bin 120-180
1742 
1743  if (gjet->pt() >= 180 && gjet->pt() < 300) {
1744  if (isCentral) {
1746  if (inBarrel)
1748  if (inEndcap)
1750  if (inForward)
1752  } //
1753  if (ismidCentral) {
1755  if (inBarrel)
1757  if (inEndcap)
1759  if (inForward)
1761  } //
1762  if (ismidPeripheral) {
1764  if (inBarrel)
1766  if (inEndcap)
1768  if (inForward)
1770  } //
1771  if (isPeripheral) {
1773  if (inBarrel)
1775  if (inEndcap)
1777  if (inForward)
1779  } //
1780  } // pt bin 180-300
1781 
1782  if (gjet->pt() >= 300) {
1783  if (isCentral) {
1785  if (inBarrel)
1787  if (inEndcap)
1789  if (inForward)
1791  } //
1792  if (ismidCentral) {
1794  if (inBarrel)
1796  if (inEndcap)
1798  if (inForward)
1800  } //
1801  if (ismidPeripheral) {
1803  if (inBarrel)
1805  if (inEndcap)
1807  if (inForward)
1809  } //
1810  if (isPeripheral) {
1812  if (inBarrel)
1814  if (inEndcap)
1816  if (inForward)
1818  } //
1819  } // pt bin 300-Inf
1820 
1821  } // delta R < mRthreshold
1822 
1823  } // gen jet collection loop
1824 
1825  } // not empty gen collection
1826 
1827  } // is the event real
1828 }
MonitorElement * mSumCaloPt_0p522_0p783
MonitorElement * mPtRecoOverGen_B_50_80_Cent_0_10
const double Pi
MonitorElement * mPtRecoOverGen_F_20_30_Cent_30_50
MonitorElement * mPtRecoOverGen_F_120_180_Cent_30_50
MonitorElement * mPtRecoOverGen_E_30_50_Cent_50_80
MonitorElement * mPtRecoOverGen_F_300_Inf_Cent_0_10
T getParameter(std::string const &) const
Definition: ParameterSet.h:307
MonitorElement * mSumCaloPt_n5p191_n2p650
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
MonitorElement * mPtRecoOverGen_F_30_50_Cent_0_10
MonitorElement * mSumCaloPt_2p043_2p650
MonitorElement * mSumPFPt_n0p783_n0p522
MonitorElement * mPFCandpT_Barrel_photon
MonitorElement * mPtRecoOverGen_GenEta_20_30_Cent_30_50
const std::vector< double > & binningValues() const
MonitorElement * mPtRecoOverGen_F_120_180_Cent_50_80
edm::InputTag mInputCollection
const Double_t EndcapEta
double pt() const final
transverse momentum
MonitorElement * mPtRecoOverGen_F_30_50_Cent_30_50
MonitorElement * mPtRecoOverGen_GenEta_50_80_Cent_30_50
MonitorElement * mNCalopart
MonitorElement * mCaloArea
edm::EDGetTokenT< CaloTowerCollection > caloTowersToken_
double EtHFtowerSum() const
Definition: Centrality.h:24
MonitorElement * mPtRecoOverGen_GenEta_300_Inf_Cent_50_80
JetTester_HeavyIons(const edm::ParameterSet &)
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:36
MonitorElement * mSumCaloPt_1p479_1p740
MonitorElement * mSumCaloPt_n0p522_0p522
MonitorElement * mEnergy
static const Int_t etaBins_
MonitorElement * mPtRecoOverGen_F_80_120_Cent_30_50
MonitorElement * mPFPhi
MonitorElement * mPtRecoOverGen_E_50_80_Cent_30_50
MonitorElement * mSumCaloPt
MonitorElement * mSumCaloPt_n1p131_n0p783
MonitorElement * mPtRecoOverGen_B_120_180_Cent_30_50
MonitorElement * mPtRecoOverGen_GenEta_180_300_Cent_30_50
size_type size() const
edm::EDGetTokenT< reco::PFCandidateCollection > pfCandToken_
MonitorElement * mSumSquaredCaloPt
MonitorElement * mPtRecoOverGen_E_300_Inf_Cent_10_30
MonitorElement * mCaloPt
edm::InputTag centralityBinTag_
MonitorElement * mPtRecoOverGen_E_120_180_Cent_50_80
MonitorElement * mPFCandpT_vs_eta_EME_inHF
MonitorElement * mSumCaloPt_n2p043_n1p740
MonitorElement * mPtRecoOverGen_F_30_50_Cent_10_30
MonitorElement * mPtRecoOverGen_B_300_Inf_Cent_30_50
MonitorElement * mNJets
MonitorElement * mPtRecoOverGen_E_50_80_Cent_10_30
MonitorElement * mPtRecoOverGen_E_30_50_Cent_10_30
MonitorElement * mPtRecoOverGen_GenPt_E_Cent_0_10
MonitorElement * mPtRecoOverGen_E_20_30_Cent_50_80
MonitorElement * mPtRecoOverGen_GenEta_50_80_Cent_0_10
MonitorElement * mPtRecoOverGen_E_80_120_Cent_50_80
edm::EDGetTokenT< std::vector< float > > backgrounds_value_
MonitorElement * mPtRecoOverGen_B_300_Inf_Cent_0_10
edm::InputTag mInputPFCandCollection
MonitorElement * mSumSquaredPFPt
MonitorElement * mSumPFPt_n2p650_n2p043
std::string const & label() const
Definition: InputTag.h:36
MonitorElement * mSumCaloPt_n2p650_n2p043
MonitorElement * mPtRecoOverGen_GenEta_20_30_Cent_10_30
MonitorElement * mPtRecoOverGen_GenPt_B_Cent_10_30
MonitorElement * mPtRecoOverGen_E_20_30_Cent_0_10
MonitorElement * mGenPt
MonitorElement * mPtRecoOverGen_GenPt_F_Cent_50_80
MonitorElement * mPtRecoOverGen_B_20_30_Cent_0_10
MonitorElement * mSumCaloPt_n1p740_n1p479
MonitorElement * mPFCandpT_Barrel_ChargedHadron
MonitorElement * mPtRecoOverGen_B_50_80_Cent_30_50
MonitorElement * mPtRecoOverGen_GenEta_180_300_Cent_0_10
MonitorElement * mPtRecoOverGen_GenEta_30_50_Cent_0_10
MonitorElement * mPFCandpT_vs_eta_muon
MonitorElement * mPtRecoOverGen_B_180_300_Cent_10_30
edm::EDGetTokenT< reco::CandidateView > caloCandViewToken_
MonitorElement * mSumPFPt_0p783_1p131
MonitorElement * mSumPFPt_1p479_1p740
MonitorElement * mPtRecoOverGen_B_20_30_Cent_30_50
MonitorElement * mPtRecoOverGen_B_20_30_Cent_10_30
MonitorElement * mPtRecoOverGen_F_30_50_Cent_50_80
MonitorElement * mPFCandpT_Barrel_HadE_inHF
void Fill(long long x)
MonitorElement * mPtHat
MonitorElement * mPtRecoOverGen_GenPt_B_Cent_50_80
MonitorElement * mPFCandpT_vs_eta_NeutralHadron
MonitorElement * mSumPFPt_n1p131_n0p783
MonitorElement * mPtRecoOverGen_E_20_30_Cent_30_50
MonitorElement * mPFCandpT_Barrel_Unknown
MonitorElement * mPFCandpT_Barrel_EME_inHF
MonitorElement * mPFCandpT_Forward_Unknown
MonitorElement * mPtRecoOverGen_F_180_300_Cent_10_30
MonitorElement * mSumCaloPt_1p131_1p479
MonitorElement * mNJets_40
MonitorElement * mPtRecoOverGen_F_300_Inf_Cent_50_80
edm::EDGetTokenT< reco::Centrality > centralityToken
MonitorElement * mPtRecoOverGen_F_20_30_Cent_10_30
MonitorElement * mPtRecoOverGen_GenEta_120_180_Cent_30_50
edm::EDGetTokenT< reco::BasicJetCollection > basicJetsToken_
MonitorElement * mPtRecoOverGen_E_80_120_Cent_10_30
MonitorElement * mPtRecoOverGen_B_80_120_Cent_30_50
MonitorElement * mPtRecoOverGen_F_50_80_Cent_10_30
MonitorElement * mPFCandpT_Endcap_NeutralHadron
MonitorElement * mPtRecoOverGen_E_80_120_Cent_0_10
MonitorElement * bookProfile(TString const &name, TString const &title, int nchX, double lowX, double highX, int, double lowY, double highY, char const *option="s", FUNC onbooking=NOOP())
Definition: DQMStore.h:408
MonitorElement * mPtRecoOverGen_E_30_50_Cent_0_10
MonitorElement * mSumPFPt_n0p522_0p522
MonitorElement * mSumPFPt_n5p191_n2p650
MonitorElement * mPtRecoOverGen_GenPt_E_Cent_10_30
edm::EDGetTokenT< std::vector< reco::Vertex > > hiVertexToken_
MonitorElement * mPtRecoOverGen_E_30_50_Cent_30_50
MonitorElement * mJetArea
MonitorElement * mPFCandpT_Forward_NeutralHadron
MonitorElement * mPtRecoOverGen_GenEta_30_50_Cent_50_80
MonitorElement * mPFCandpT_vs_eta_photon
MonitorElement * mPFCandpT_Forward_photon
MonitorElement * mPFCandpT_Endcap_photon
MonitorElement * mPtRecoOverGen_B_80_120_Cent_10_30
MonitorElement * mSumPFPt_n2p043_n1p740
MonitorElement * mSumCaloPt_2p650_5p191
MonitorElement * mPtRecoOverGen_F_20_30_Cent_0_10
MonitorElement * mPtRecoOverGen_GenEta_20_30_Cent_0_10
MonitorElement * mSumPFPt
MonitorElement * mPtRecoOverGen_B_30_50_Cent_0_10
MonitorElement * mPtRecoOverGen_GenEta_50_80_Cent_10_30
MonitorElement * mPtRecoOverGen_E_180_300_Cent_10_30
MonitorElement * mPtRecoOverGen_F_50_80_Cent_50_80
MonitorElement * mPtRecoOverGen_F_180_300_Cent_30_50
MonitorElement * mPtRecoOverGen_F_300_Inf_Cent_30_50
MonitorElement * mPtRecoOverGen_GenPt_E_Cent_30_50
MonitorElement * mPtRecoOverGen_B_30_50_Cent_10_30
math::XYZPoint Point
point in the space
Definition: Vertex.h:40
MonitorElement * mNPFpart
MonitorElement * mPtRecoOverGen_GenPt_F_Cent_10_30
MonitorElement * mPFPt
MonitorElement * mPtRecoOverGen_F_80_120_Cent_50_80
edm::EDGetTokenT< GenEventInfoProduct > evtToken_
MonitorElement * mPtRecoOverGen_F_180_300_Cent_0_10
MonitorElement * mPtRecoOverGen_F_50_80_Cent_0_10
MonitorElement * mPtRecoOverGen_B_120_180_Cent_10_30
edm::EDGetTokenT< reco::JPTJetCollection > jptJetsToken_
MonitorElement * mPFCandpT_Endcap_EME_inHF
MonitorElement * mPFCandpT_Barrel_muon
MonitorElement * mPtRecoOverGen_GenEta_120_180_Cent_0_10
MonitorElement * mSumPFPt_0p522_0p783
MonitorElement * mPtRecoOverGen_GenEta_120_180_Cent_50_80
MonitorElement * mPtRecoOverGen_E_300_Inf_Cent_30_50
static const size_t nedge_pseudorapidity
MonitorElement * mPtRecoOverGen_B_300_Inf_Cent_10_30
MonitorElement * mPtRecoOverGen_F_120_180_Cent_10_30
MonitorElement * mPtRecoOverGen_B_50_80_Cent_50_80
MonitorElement * mPtRecoOverGen_E_20_30_Cent_10_30
MonitorElement * mSumPFPt_1p131_1p479
MonitorElement * mPtRecoOverGen_F_80_120_Cent_10_30
edm::InputTag centralityTag_
MonitorElement * mPFCandpT_Forward_ChargedHadron
const Double_t ForwardEta
MonitorElement * mPFCandpT_Endcap_HadE_inHF
Log< level::Info, false > LogInfo
MonitorElement * mPFCandpT_Forward_electron
MonitorElement * mPtRecoOverGen_F_120_180_Cent_0_10
MonitorElement * mConstituents
MonitorElement * mPFCandpT_vs_eta_ChargedHadron
MonitorElement * mSumPFPt_1p740_2p043
edm::EDGetTokenT< reco::CandidateView > pfCandViewToken_
std::vector< reco::PFCandidate > PFCandidateCollection
collection of PFCandidates
MonitorElement * mPtRecoOverGen_GenEta_80_120_Cent_50_80
MonitorElement * mPtRecoOverGen_B_30_50_Cent_30_50
MonitorElement * mPtRecoOverGen_B_80_120_Cent_50_80
edm::EDGetTokenT< reco::GenJetCollection > genJetsToken_
edm::EDGetTokenT< std::vector< reco::Vertex > > pvToken_
MonitorElement * mPFCandpT_Forward_muon
MonitorElement * mPtRecoOverGen_B_80_120_Cent_0_10
MonitorElement * mPtRecoOverGen_GenEta_300_Inf_Cent_30_50
MonitorElement * mSumPFPt_n1p479_n1p131
MonitorElement * mPtRecoOverGen_B_120_180_Cent_0_10
MonitorElement * mSumPFPt_2p043_2p650
MonitorElement * mPtRecoOverGen_GenPt_F_Cent_30_50
MonitorElement * mPFCandpT_vs_eta_HadE_inHF
MonitorElement * mCaloEta
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
Definition: DQMStore.h:221
MonitorElement * mPtRecoOverGen_E_120_180_Cent_10_30
MonitorElement * mPtRecoOverGen_GenEta_30_50_Cent_30_50
MonitorElement * mPFCandpT_Endcap_Unknown
MonitorElement * mSumCaloPt_n0p783_n0p522
MonitorElement * mPFEta
MonitorElement * mGenPhi
MonitorElement * mPtRecoOverGen_B_120_180_Cent_50_80
MonitorElement * mPtRecoOverGen_F_80_120_Cent_0_10
MonitorElement * mPFCandpT_vs_eta_electron
MonitorElement * mPFCandpT_vs_eta_Unknown
MonitorElement * mCaloPhi
MonitorElement * mPFCandpT_Endcap_ChargedHadron
bool isValid() const
Definition: HandleBase.h:70
MonitorElement * mPtRecoOverGen_F_50_80_Cent_30_50
MonitorElement * mPFCandpT_Forward_EME_inHF
MonitorElement * mSumCaloPt_0p783_1p131
MonitorElement * mPtRecoOverGen_E_80_120_Cent_30_50
Particle reconstructed by the particle flow algorithm.
Definition: PFCandidate.h:41
MonitorElement * mSumpt
fixed size matrix
MonitorElement * mPtRecoOverGen_GenEta_80_120_Cent_0_10
MonitorElement * mPtRecoOverGen_E_180_300_Cent_30_50
HLT enums.
MonitorElement * mPtRecoOverGen_E_50_80_Cent_50_80
edm::EDGetTokenT< int > centralityBinToken
MonitorElement * mSumPFPt_HF
MonitorElement * mPtRecoOverGen_GenPt_F_Cent_0_10
MonitorElement * mPtRecoOverGen_GenPt_B_Cent_0_10
static int position[264][3]
Definition: ReadPGInfo.cc:289
MonitorElement * mPtRecoOverGen_B_180_300_Cent_30_50
MonitorElement * mPtRecoOverGen_F_180_300_Cent_50_80
MonitorElement * mPtRecoOverGen_GenEta_300_Inf_Cent_10_30
MonitorElement * mSumPFPt_2p650_5p191
MonitorElement * mGenEta
MonitorElement * mPtRecoOverGen_E_300_Inf_Cent_50_80
MonitorElement * mPtRecoOverGen_GenPt_B_Cent_30_50
MonitorElement * mPtRecoOverGen_GenEta_80_120_Cent_10_30
MonitorElement * mPtRecoOverGen_E_120_180_Cent_30_50
const Double_t BarrelEta
MonitorElement * mPtRecoOverGen_B_180_300_Cent_0_10
MonitorElement * mPtRecoOverGen_B_180_300_Cent_50_80
MonitorElement * mPFCandpT_Barrel_NeutralHadron
MonitorElement * mSumCaloPt_HF
MonitorElement * mPFCandpT_Forward_HadE_inHF
MonitorElement * mNvtx
MonitorElement * mPtRecoOverGen_GenEta_180_300_Cent_50_80
bool hasBinningValues() const
MonitorElement * mMass
MonitorElement * mPtRecoOverGen_GenEta_300_Inf_Cent_0_10
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98
edm::InputTag mInputGenCollection
MonitorElement * mPtRecoOverGen_GenEta_50_80_Cent_50_80
MonitorElement * mSumPFPt_n1p740_n1p479
MonitorElement * mPFArea
double phi() const final
momentum azimuthal angle
MonitorElement * mPtRecoOverGen_GenEta_120_180_Cent_10_30
MonitorElement * mPtRecoOverGen_GenEta_20_30_Cent_50_80
MonitorElement * mPFCandpT_Endcap_electron
MonitorElement * mPtRecoOverGen_B_20_30_Cent_50_80
MonitorElement * mPFCandpT_Barrel_electron
MonitorElement * mPtRecoOverGen_GenEta_180_300_Cent_10_30
edm::EDGetTokenT< edm::ValueMap< reco::VoronoiBackground > > backgrounds_
MonitorElement * mPtRecoOverGen_E_180_300_Cent_50_80
MonitorElement * mPtRecoOverGen_B_50_80_Cent_10_30
MonitorElement * mPtRecoOverGen_GenEta_30_50_Cent_10_30
edm::EDGetTokenT< reco::CaloJetCollection > caloJetsToken_
MonitorElement * mPFCandpT_Endcap_muon
MonitorElement * mPtRecoOverGen_F_300_Inf_Cent_10_30
MonitorElement * mPtRecoOverGen_E_180_300_Cent_0_10
MonitorElement * mSumCaloPt_1p740_2p043
MonitorElement * mPtRecoOverGen_GenEta_80_120_Cent_30_50
Definition: Run.h:45
MonitorElement * mPtRecoOverGen_E_50_80_Cent_0_10
MonitorElement * mPtRecoOverGen_GenPt_E_Cent_50_80
MonitorElement * mPtRecoOverGen_B_30_50_Cent_50_80
MonitorElement * mSumCaloPt_n1p479_n1p131
MonitorElement * mPtRecoOverGen_B_300_Inf_Cent_50_80
MonitorElement * mPtRecoOverGen_F_20_30_Cent_50_80
void analyze(const edm::Event &, const edm::EventSetup &) override
MonitorElement * mPtRecoOverGen_E_300_Inf_Cent_0_10
MonitorElement * mPtRecoOverGen_E_120_180_Cent_0_10
MonitorElement * mjetpileup
virtual ParticleType particleId() const
Definition: PFCandidate.h:392
double eta() const final
momentum pseudorapidity