CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
CaloJetTester.cc
Go to the documentation of this file.
1 // Producer for validation histograms for CaloJet objects
2 // F. Ratnikov, Sept. 7, 2006
3 // Modified by J F Novak July 10, 2008
4 // $Id: CaloJetTester.cc,v 1.44 2013/04/10 12:05:57 eron Exp $
5 
11 
13 
16 
21 
22 //I don't know which of these I actually need yet
29 
31 
33 
34 #include "CaloJetTester.h"
35 
36 #include <cmath>
37 
39 
40 
41 using namespace edm;
42 using namespace reco;
43 using namespace std;
44 
45 namespace {
46  bool is_B (const reco::Jet& fJet) {return fabs (fJet.eta()) < 1.3;}
47  bool is_E (const reco::Jet& fJet) {return fabs (fJet.eta()) >= 1.3 && fabs (fJet.eta()) < 3.;}
48  bool is_F (const reco::Jet& fJet) {return fabs (fJet.eta()) >= 3.;}
49 }
50 
51 
52 
54  : mInputCollection (iConfig.getParameter<edm::InputTag>( "src" )),
55  mInputGenCollection (iConfig.getParameter<edm::InputTag>( "srcGen" )),
56  mOutputFile (iConfig.getUntrackedParameter<std::string>("outputFile", "")),
57  mMatchGenPtThreshold (iConfig.getParameter<double>("genPtThreshold")),
58  mGenEnergyFractionThreshold (iConfig.getParameter<double>("genEnergyFractionThreshold")),
59  mReverseEnergyFractionThreshold (iConfig.getParameter<double>("reverseEnergyFractionThreshold")),
60  mRThreshold (iConfig.getParameter<double>("RThreshold")),
61  // JetCorrectionService (iConfig.getParameter<std::string> ("JetCorrectionService" )),
62  mTurnOnEverything (iConfig.getUntrackedParameter<std::string>("TurnOnEverything","")){
63 
64 
65  // Protection against missing corrections
66  doJetCorrection=false;
67  if (iConfig.tbl().find("JetCorrectionService")!=iConfig.tbl().end()){
68  doJetCorrection=true;
69  JetCorrectionService =iConfig.getParameter<std::string>("JetCorrectionService");
70  }
73  = mP = mP_80 = mPt = mPt_80
86  = mN90
87 
93 
96 
98 
103 
105 
106  //Corr Jet
113 
125  =0;
126 
127 
128 
129  DQMStore* dbe = &*edm::Service<DQMStore>();
130  if (dbe) {
131  dbe->setCurrentFolder("JetMET/RecoJetsV/CaloJetTask_" + mInputCollection.label());
132  //
133  numberofevents = dbe->book1D("numberofevents","numberofevents", 3, 0 , 2);
134  //
135  mEta = dbe->book1D("Eta", "Eta", 120, -6, 6);
136  mEtaFineBin = dbe->book1D("EtaFineBin_Pt10", "EtaFineBin_Pt10", 600, -6, 6);
137 
138  //
139  mPhi = dbe->book1D("Phi", "Phi", 70, -3.5, 3.5);
140  mPhiFineBin = dbe->book1D("PhiFineBin_Pt10", "PhiFineBin_Pt10", 350, -3.5, 3.5);
141  //
142  mE = dbe->book1D("E", "E", 100, 0, 500);
143  mE_80 = dbe->book1D("E_80", "E_80", 100, 0, 5000);
144  //
145  mP = dbe->book1D("P", "P", 100, 0, 500);
146  mP_80 = dbe->book1D("P_80", "P_80", 100, 0, 5000);
147  //
148  mPt = dbe->book1D("Pt", "Pt", 100, 0, 150);
149  mPt_80 = dbe->book1D("Pt_80", "Pt_80", 100, 0, 4000);
150  //
151  mMass = dbe->book1D("Mass", "Mass", 100, 0, 200);
152  mMass_80 = dbe->book1D("Mass_80", "Mass_80", 100, 0, 500);
153  //
154  mConstituents = dbe->book1D("Constituents", "# of Constituents", 100, 0, 100);
155  mConstituents_80 = dbe->book1D("Constituents_80", "# of Constituents_80", 40, 0, 40);
156  //
157  mEtaFirst = dbe->book1D("EtaFirst", "EtaFirst", 120, -6, 6);
158  mPhiFirst = dbe->book1D("PhiFirst", "PhiFirst", 70, -3.5, 3.5);
159  mPtFirst = dbe->book1D("PtFirst", "PtFirst", 100, 0, 50);
160  mPtFirst_80 = dbe->book1D("PtFirst_80", "PtFirst_80", 100, 0, 140);
161  mPtFirst_3000 = dbe->book1D("PtFirst_3000", "PtFirst_3000", 100, 0, 4000);
162  //
163  mMjj = dbe->book1D("Mjj", "Mjj", 100, 0, 2000);
164  mMjj_3000 = dbe->book1D("Mjj_3000", "Mjj_3000", 100, 0, 10000);
165  mDelEta = dbe->book1D("DelEta", "DelEta", 100, -.5, .5);
166  mDelPhi = dbe->book1D("DelPhi", "DelPhi", 100, -.5, .5);
167  mDelPt = dbe->book1D("DelPt", "DelPt", 100, -1, 1);
168  //
169  mMaxEInEmTowers = dbe->book1D("MaxEInEmTowers", "MaxEInEmTowers", 100, 0, 100);
170  mMaxEInHadTowers = dbe->book1D("MaxEInHadTowers", "MaxEInHadTowers", 100, 0, 100);
171  mHadEnergyInHO = dbe->book1D("HadEnergyInHO", "HadEnergyInHO", 100, 0, 10);
172  mHadEnergyInHB = dbe->book1D("HadEnergyInHB", "HadEnergyInHB", 100, 0, 150);
173  mHadEnergyInHF = dbe->book1D("HadEnergyInHF", "HadEnergyInHF", 100, 0, 50);
174  mHadEnergyInHE = dbe->book1D("HadEnergyInHE", "HadEnergyInHE", 100, 0, 150);
175  //
176  mHadEnergyInHO_80 = dbe->book1D("HadEnergyInHO_80", "HadEnergyInHO_80", 100, 0, 50);
177  mHadEnergyInHB_80 = dbe->book1D("HadEnergyInHB_80", "HadEnergyInHB_80", 100, 0, 3000);
178  mHadEnergyInHE_80 = dbe->book1D("HadEnergyInHE_80", "HadEnergyInHE_80", 100, 0, 3000);
179  mHadEnergyInHO_3000 = dbe->book1D("HadEnergyInHO_3000", "HadEnergyInHO_3000", 100, 0, 500);
180  //
181  mEmEnergyInEB = dbe->book1D("EmEnergyInEB", "EmEnergyInEB", 100, 0, 50);
182  mEmEnergyInEE = dbe->book1D("EmEnergyInEE", "EmEnergyInEE", 100, 0, 50);
183  mEmEnergyInHF = dbe->book1D("EmEnergyInHF", "EmEnergyInHF", 120, -20, 100);
184  mEmEnergyInEB_80 = dbe->book1D("EmEnergyInEB_80", "EmEnergyInEB_80", 100, 0, 200);
185  mEmEnergyInEE_80 = dbe->book1D("EmEnergyInEE_80", "EmEnergyInEE_80", 100, 0, 1000);
186  mEnergyFractionHadronic_B = dbe->book1D("EnergyFractionHadronic_B", "EnergyFractionHadronic_B", 120, -0.1, 1.1);
187  mEnergyFractionHadronic_E = dbe->book1D("EnergyFractionHadronic_E", "EnergyFractionHadronic_E", 120, -0.1, 1.1);
188  mEnergyFractionHadronic_F = dbe->book1D("EnergyFractionHadronic_F", "EnergyFractionHadronic_F", 120, -0.1, 1.1);
189  mEnergyFractionEm_B = dbe->book1D("EnergyFractionEm_B", "EnergyFractionEm_B", 120, -0.1, 1.1);
190  mEnergyFractionEm_E = dbe->book1D("EnergyFractionEm_E", "EnergyFractionEm_E", 120, -0.1, 1.1);
191  mEnergyFractionEm_F = dbe->book1D("EnergyFractionEm_F", "EnergyFractionEm_F", 120, -0.1, 1.1);
192  //
193  mHFTotal = dbe->book1D("HFTotal", "HFTotal", 100, 0, 150);
194  mHFTotal_80 = dbe->book1D("HFTotal_80", "HFTotal_80", 100, 0, 3000);
195 
196  mHFLong = dbe->book1D("HFLong", "HFLong", 100, 0, 150);
197  mHFLong_80 = dbe->book1D("HFLong_80", "HFLong_80", 100, 0, 3000);
198 
199  mHFShort = dbe->book1D("HFShort", "HFShort", 100, 0, 150);
200  mHFShort_80 = dbe->book1D("HFShort_80", "HFShort_80", 100, 0, 3000);
201 
202  //
203  mN90 = dbe->book1D("N90", "N90", 50, 0, 50);
204  //
205  mGenEta = dbe->book1D("GenEta", "GenEta", 120, -6, 6);
206  mGenPhi = dbe->book1D("GenPhi", "GenPhi", 70, -3.5, 3.5);
207  mGenPt = dbe->book1D("GenPt", "GenPt", 100, 0, 150);
208  mGenPt_80 = dbe->book1D("GenPt_80", "GenPt_80", 100, 0, 1500);
209  //
210  mGenEtaFirst = dbe->book1D("GenEtaFirst", "GenEtaFirst", 100, -5, 5);
211  mGenPhiFirst = dbe->book1D("GenPhiFirst", "GenPhiFirst", 70, -3.5, 3.5);
212  //
213 
214 
215  //
216  mHadTiming = dbe->book1D("HadTiming", "HadTiming", 75, -50, 100);
217  mEmTiming = dbe->book1D("EMTiming", "EMTiming", 75, -50, 100);
218  //
219  mNJetsEtaC = dbe->book1D("NJetsEtaC_Pt10", "NJetsEtaC_Pt10", 15, 0, 15);
220  mNJetsEtaF = dbe->book1D("NJetsEtaF_Pt10", "NJetsEtaF_Pt10", 15, 0, 15);
221  mNJetsEtaF_30 = dbe->book1D("NJetsEtaF_Pt30", "NJetsEtaF_Pt30", 15, 0, 15);
222 
223  //
224  mNJets1 = dbe->bookProfile("NJets1", "NJets1", 100, 0, 200, 100, 0, 50, "s");
225  mNJets2 = dbe->bookProfile("NJets2", "NJets2", 100, 0, 4000, 100, 0, 50, "s");
226  //
227 
228  //
229  mPthat_80 = dbe->book1D("Pthat_80", "Pthat_80", 100, 0.0, 1000.0);
230  mPthat_3000 = dbe->book1D("Pthat_3000", "Pthat_3000", 100, 1000.0, 4000.0);
231 
232  //Corr
233  mCorrJetPt = dbe->book1D("CorrPt", "CorrPt", 100, 0, 150);
234  mCorrJetPt_80 = dbe->book1D("CorrPt_80", "CorrPt_80", 100, 0, 4000);
235 
236  mCorrJetEta = dbe->book1D("CorrEta", "CorrEta", 120, -6, 6);
237  mCorrJetPhi = dbe->book1D("CorrPhi", "CorrPhi", 70, -3.5, 3.5);
238  mjetArea = dbe->book1D("jetArea","jetArea",26,-0.5,12.5);
239 
240  //nvtx
241  nvtx_0_30 = dbe->book1D("nvtx_0_30","nvtx_0_30",31,-0.5,30.5);
242  nvtx_0_60 = dbe->book1D("nvtx_0_60","nvtx_0_60",61,-0.5,60.5);
243 
244  //pT scale with nvtx
245  mpTScale_a_nvtx_0_5 = dbe->book1D("mpTScale_a_nvtx_0_5", "pTScale_a_nvtx_0_5_0<|eta|<1.3_60_120",100, 0, 2);
246  mpTScale_b_nvtx_0_5 = dbe->book1D("mpTScale_b_nvtx_0_5", "pTScale_b_nvtx_0_5_0<|eta|<1.3_200_300",100, 0, 2);
247  mpTScale_c_nvtx_0_5 = dbe->book1D("mpTScale_c_nvtx_0_5", "pTScale_c_nvtx_0_5_0<|eta|<1.3_600_900",100, 0, 2);
248  mpTScale_a_nvtx_5_10 = dbe->book1D("mpTScale_a_nvtx_5_10", "pTScale_a_nvtx_5_10_0<|eta|<1.3_60_120",100, 0, 2);
249  mpTScale_b_nvtx_5_10 = dbe->book1D("mpTScale_b_nvtx_5_10", "pTScale_b_nvtx_5_10_0<|eta|<1.3_200_300",100, 0, 2);
250  mpTScale_c_nvtx_5_10 = dbe->book1D("mpTScale_c_nvtx_5_10", "pTScale_c_nvtx_5_10_0<|eta|<1.3_600_900",100, 0, 2);
251  mpTScale_a_nvtx_10_15 = dbe->book1D("mpTScale_a_nvtx_10_15", "pTScale_a_nvtx_10_15_0<|eta|<1.3_60_120",100, 0, 2);
252  mpTScale_b_nvtx_10_15 = dbe->book1D("mpTScale_b_nvtx_10_15", "pTScale_b_nvtx_10_15_0<|eta|<1.3_200_300",100, 0, 2);
253  mpTScale_c_nvtx_10_15 = dbe->book1D("mpTScale_c_nvtx_10_15", "pTScale_c_nvtx_10_15_0<|eta|<1.3_600_900",100, 0, 2);
254  mpTScale_a_nvtx_15_20 = dbe->book1D("mpTScale_a_nvtx_15_20", "pTScale_a_nvtx_15_20_0<|eta|<1.3_60_120",100, 0, 2);
255  mpTScale_b_nvtx_15_20 = dbe->book1D("mpTScale_b_nvtx_15_20", "pTScale_b_nvtx_15_20_0<|eta|<1.3_200_300",100, 0, 2);
256  mpTScale_c_nvtx_15_20 = dbe->book1D("mpTScale_c_nvtx_15_20", "pTScale_c_nvtx_15_20_0<|eta|<1.3_600_900",100, 0, 2);
257  mpTScale_a_nvtx_20_30 = dbe->book1D("mpTScale_a_nvtx_20_30", "pTScale_a_nvtx_20_30_0<|eta|<1.3_60_120",100, 0, 2);
258  mpTScale_b_nvtx_20_30 = dbe->book1D("mpTScale_b_nvtx_20_30", "pTScale_b_nvtx_20_30_0<|eta|<1.3_200_300",100, 0, 2);
259  mpTScale_c_nvtx_20_30 = dbe->book1D("mpTScale_c_nvtx_20_30", "pTScale_c_nvtx_20_30_0<|eta|<1.3_600_900",100, 0, 2);
260  mpTScale_a_nvtx_30_inf = dbe->book1D("mpTScale_a_nvtx_30_inf", "pTScale_a_nvtx_30_inf_0<|eta|<1.3_60_120",100, 0, 2);
261  mpTScale_b_nvtx_30_inf = dbe->book1D("mpTScale_b_nvtx_30_inf", "pTScale_b_nvtx_30_inf_0<|eta|<1.3_200_300",100, 0, 2);
262  mpTScale_c_nvtx_30_inf = dbe->book1D("mpTScale_c_nvtx_30_inf", "pTScale_c_nvtx_30_inf_0<|eta|<1.3_600_900",100, 0, 2);
263  mpTScale_a = dbe->book1D("pTScale_a", "pTScale_a_60_120",100, 0, 2);
264  mpTScale_b = dbe->book1D("pTScale_b", "pTScale_b_200_300",100, 0, 2);
265  mpTScale_c = dbe->book1D("pTScale_c", "pTScale_c_600_900",100, 0, 2);
266 
267 
268  //
269  double log10PtMin = 0.5; //=3.1622766
270  double log10PtMax = 3.75; //=5623.41325
271  int log10PtBins = 26;
272  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,-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,-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,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,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,4.0,4.2,4.4,4.6,4.8,5.0,5.2,5.4,5.6,5.8,6.0};
273 
274  //int log10PtFineBins = 50;
275 
276  //
277  if (mTurnOnEverything.compare("yes")==0) {
278 
279  }
280 
281  mpTScaleB_d = dbe->bookProfile("pTScaleB_d", "pTScale_d_0<|eta|<1.5",
282  log10PtBins, log10PtMin, log10PtMax, 0, 2, " ");
283  mpTScaleE_d = dbe->bookProfile("pTScaleE_d", "pTScale_d_1.5<|eta|<3.0",
284  log10PtBins, log10PtMin, log10PtMax, 0, 2, " ");
285  mpTScaleF_d = dbe->bookProfile("pTScaleF_d", "pTScale_d_3.0<|eta|<6.0",
286  log10PtBins, log10PtMin, log10PtMax, 0, 2, " ");
287 
288  mpTScalePhiB_d = dbe->bookProfile("pTScalePhiB_d", "pTScalePhi_d_0<|eta|<1.5",
289  70, -3.5, 3.5, 0, 2, " ");
290  mpTScalePhiE_d = dbe->bookProfile("pTScalePhiE_d", "pTScalePhi_d_1.5<|eta|<3.0",
291  70, -3.5, 3.5, 0, 2, " ");
292  mpTScalePhiF_d = dbe->bookProfile("pTScalePhiF_d", "pTScalePhi_d_3.0<|eta|<6.0",
293  70, -3.5, 3.5, 0, 2, " ");
294 
295 
296  mpTScale_30_200_d = dbe->bookProfile("pTScale_30_200_d", "pTScale_d_30<pT<200",
297  90,etaRange, 0., 2., " ");
298  mpTScale_200_600_d = dbe->bookProfile("pTScale_200_600_d", "pTScale_d_200<pT<600",
299  90,etaRange, 0., 2., " ");
300  mpTScale_600_1500_d = dbe->bookProfile("pTScale_600_1500_d", "pTScale_d_600<pT<1500",
301  90,etaRange, 0., 2., " ");
302  mpTScale_1500_3500_d = dbe->bookProfile("pTScale_1500_3500_d", "pTScale_d_1500<pt<3500",
303  90,etaRange, 0., 2., " ");
304 
305  mpTScale1DB_30_200 = dbe->book1D("pTScale1DB_30_200", "pTScale_distribution_for_0<|eta|<1.5_30_200",
306  100, 0, 2);
307  mpTScale1DE_30_200 = dbe->book1D("pTScale1DE_30_200", "pTScale_distribution_for_1.5<|eta|<3.0_30_200",
308  50, 0, 2);
309  mpTScale1DF_30_200 = dbe->book1D("pTScale1DF_30_200", "pTScale_distribution_for_3.0<|eta|<6.0_30_200",
310  50, 0, 2);
311 
312  mpTScale1DB_200_600 = dbe->book1D("pTScale1DB_200_600", "pTScale_distribution_for_0<|eta|<1.5_200_600",
313  100, 0, 2);
314  mpTScale1DE_200_600 = dbe->book1D("pTScale1DE_200_600", "pTScale_distribution_for_1.5<|eta|<3.0_200_600",
315  50, 0, 2);
316  mpTScale1DF_200_600 = dbe->book1D("pTScale1DF_200_600", "pTScale_distribution_for_3.0<|eta|<6.0_200_600",
317  50, 0, 2);
318 
319  mpTScale1DB_600_1500 = dbe->book1D("pTScale1DB_600_1500", "pTScale_distribution_for_0<|eta|<1.5_600_1500",
320  100, 0, 2);
321  mpTScale1DE_600_1500 = dbe->book1D("pTScale1DE_600_1500", "pTScale_distribution_for_1.5<|eta|<3.0_600_1500",
322  50, 0, 2);
323  mpTScale1DF_600_1500 = dbe->book1D("pTScale1DF_600_1500", "pTScale_distribution_for_3.0<|eta|<6.0_600_1500",
324  50, 0, 2);
325 
326  mpTScale1DB_1500_3500 = dbe->book1D("pTScale1DB_1500_3500", "pTScale_distribution_for_0<|eta|<1.5_1500_3500",
327  100, 0, 2);
328  mpTScale1DE_1500_3500 = dbe->book1D("pTScale1DE_1500_3500", "pTScale_distribution_for_1.5<|eta|<3.0_1500_3500",
329  50, 0, 2);
330  mpTScale1DF_1500_3500 = dbe->book1D("pTScale1DF_1500_3500", "pTScale_distribution_for_3.0<|eta|<6.0_1500_3500",
331  50, 0, 2);
332 
333 
334  mpTScale_nvtx_0_5 = dbe->bookProfile("pTScale_nvtx_0_5", "pTScale_nvtx_0_5_0<|eta|<1.3",
335  log10PtBins, log10PtMin, log10PtMax, 0, 2, " ");
336  mpTScale_nvtx_5_10 = dbe->bookProfile("pTScale_nvtx_5_10", "pTScale_nvtx_5_10_0<|eta|<1.3",
337  log10PtBins, log10PtMin, log10PtMax, 0, 2, " ");
338  mpTScale_nvtx_10_15 = dbe->bookProfile("pTScale_nvtx_10_15", "pTScale_nvtx_10_15_0<|eta|<1.3",
339  log10PtBins, log10PtMin, log10PtMax, 0, 2, " ");
340  mpTScale_nvtx_15_20 = dbe->bookProfile("pTScale_nvtx_15_20", "pTScale_nvtx_15_20_0<|eta|<1.3",
341  log10PtBins, log10PtMin, log10PtMax, 0, 2, " ");
342  mpTScale_nvtx_20_30 = dbe->bookProfile("pTScale_nvtx_20_30", "pTScale_nvtx_20_30_0<|eta|<1.3",
343  log10PtBins, log10PtMin, log10PtMax, 0, 2, " ");
344  mpTScale_nvtx_30_inf = dbe->bookProfile("pTScale_nvtx_30_inf", "pTScale_nvtx_30_inf_0<|eta|<1.3",
345  log10PtBins, log10PtMin, log10PtMax, 0, 2, " ");
346  mpTScale_pT = dbe->bookProfile("pTScale_pT", "pTScale_vs_pT",
347  log10PtBins, log10PtMin, log10PtMax, 0, 2, " ");
349  mpTRatio = dbe->bookProfile("pTRatio", "pTRatio",
350  log10PtBins, log10PtMin, log10PtMax, 100, 0.,5., " ");
351  mpTRatioB_d = dbe->bookProfile("pTRatioB_d", "pTRatio_d_0<|eta|<1.5",
352  log10PtBins, log10PtMin, log10PtMax, 0, 5, " ");
353  mpTRatioE_d = dbe->bookProfile("pTRatioE_d", "pTRatio_d_1.5<|eta|<3.0",
354  log10PtBins, log10PtMin, log10PtMax, 0, 5, " ");
355  mpTRatioF_d = dbe->bookProfile("pTRatioF_d", "pTRatio_d_3.0<|eta|<6.0",
356  log10PtBins, log10PtMin, log10PtMax, 0, 5, " ");
357  mpTRatio_30_200_d = dbe->bookProfile("pTRatio_30_200_d", "pTRatio_d_30<pT<200",
358  90,etaRange, 0., 5., " ");
359  mpTRatio_200_600_d = dbe->bookProfile("pTRatio_200_600_d", "pTRatio_d_200<pT<600",
360  90,etaRange, 0., 5., " ");
361  mpTRatio_600_1500_d = dbe->bookProfile("pTRatio_600_1500_d", "pTRatio_d_600<pT<1500",
362  90,etaRange, 0., 5., " ");
363  mpTRatio_1500_3500_d = dbe->bookProfile("pTRatio_1500_3500_d", "pTRatio_d_1500<pt<3500",
364  90,etaRange, 0., 5., " ");
365  mpTResponse = dbe->bookProfile("pTResponse", "pTResponse",
366  log10PtBins, log10PtMin, log10PtMax, 100, 0.8,1.2, " ");
367  mpTResponseB_d = dbe->bookProfile("pTResponseB_d", "pTResponse_d_0<|eta|<1.5",
368  log10PtBins, log10PtMin, log10PtMax, 0.8, 1.2, " ");
369  mpTResponseE_d = dbe->bookProfile("pTResponseE_d", "pTResponse_d_1.5<|eta|<3.0",
370  log10PtBins, log10PtMin, log10PtMax, 0.8, 1.2, " ");
371  mpTResponseF_d = dbe->bookProfile("pTResponseF_d", "pTResponse_d_3.0<|eta|<6.0",
372  log10PtBins, log10PtMin, log10PtMax, 0.8, 1.2, " ");
373  mpTResponse_30_200_d = dbe->bookProfile("pTResponse_30_200_d", "pTResponse_d_30<pT<200",
374  90,etaRange, 0.8, 1.2, " ");
375  mpTResponse_200_600_d = dbe->bookProfile("pTResponse_200_600_d", "pTResponse_d_200<pT<600",
376  90,etaRange, 0.8, 1.2, " ");
377  mpTResponse_600_1500_d = dbe->bookProfile("pTResponse_600_1500_d", "pTResponse_d_600<pT<1500",
378  90,etaRange, 0.8, 1.2, " ");
379  mpTResponse_1500_3500_d = dbe->bookProfile("pTResponse_1500_3500_d", "pTResponse_d_1500<pt<3500",
380  90,etaRange, 0.8, 1.2, " ");
381  mpTResponse_30_d = dbe->bookProfile("pTResponse_30_d", "pTResponse_d_pt>30",
382  90,etaRange, 0.8, 1.2, " ");
383 
384 
385  mpTResponse_nvtx_0_5 = dbe->bookProfile("pTResponse_nvtx_0_5", "pTResponse_nvtx_0_5", log10PtBins, log10PtMin, log10PtMax, 100, 0.8,1.2, " ");
386  mpTResponse_nvtx_5_10 = dbe->bookProfile("pTResponse_nvtx_5_10", "pTResponse_nvtx_5_10", log10PtBins, log10PtMin, log10PtMax, 100, 0.8,1.2, " ");
387  mpTResponse_nvtx_10_15 = dbe->bookProfile("pTResponse_nvtx_10_15", "pTResponse_nvtx_10_15", log10PtBins, log10PtMin, log10PtMax, 100, 0.8,1.2, " ");
388  mpTResponse_nvtx_15_20 = dbe->bookProfile("pTResponse_nvtx_15_20", "pTResponse_nvtx_15_20", log10PtBins, log10PtMin, log10PtMax, 100, 0.8,1.2, " ");
389  mpTResponse_nvtx_20_30 = dbe->bookProfile("pTResponse_nvtx_20_30", "pTResponse_nvtx_20_30", log10PtBins, log10PtMin, log10PtMax, 100, 0.8,1.2, " ");
390  mpTResponse_nvtx_30_inf = dbe->bookProfile("pTResponse_nvtx_30_inf", "pTResponse_nvtx_30_inf", log10PtBins, log10PtMin, log10PtMax, 100, 0.8,1.2, " ");
391  }
392 
393  if (mOutputFile.empty ()) {
394  LogInfo("OutputInfo") << " CaloJet histograms will NOT be saved";
395  }
396  else {
397  LogInfo("OutputInfo") << " CaloJethistograms will be saved to file:" << mOutputFile;
398  }
399 }
400 
402 {
403 }
404 
406 }
407 
410 }
411 
412 
413 void CaloJetTester::analyze(const edm::Event& mEvent, const edm::EventSetup& mSetup)
414 {
415  double countsfornumberofevents = 1;
416  numberofevents->Fill(countsfornumberofevents);
417 
418  //get primary vertices
420 
421  //E.Ron elias.ron@cern.ch at 10-4-13
422  //the vertices are only taken if they exist in the event
423  bool offlinePrimaryVerticesPresent=mEvent.getByLabel( "offlinePrimaryVertices",pvHandle);
424 
425 
426  // try {
427  // mEvent.getByLabel( "offlinePrimaryVertices", pvHandle );
428  // } catch ( cms::Exception& e) {
429  // cout <<"error: " << e.what() << endl;
430  // }
431  vector<reco::Vertex> goodVertices;
432 
433  if(offlinePrimaryVerticesPresent){
434  for (unsigned i = 0; i < pvHandle->size(); i++) {
435  if ( (*pvHandle)[i].ndof() > 4 &&
436  ( fabs((*pvHandle)[i].z()) <= 24. ) &&
437  ( fabs((*pvHandle)[i].position().rho()) <= 2.0 ) )
438  goodVertices.push_back((*pvHandle)[i]);
439  }
440  }
441  nvtx_0_30->Fill(goodVertices.size());
442  nvtx_0_60->Fill(goodVertices.size());
443 
444  // *********************************
445  // *** Get pThat
446  // *********************************
447  if (!mEvent.isRealData()){
449  mEvent.getByLabel("generator", evt);
450  if (evt.isValid()) {
451  HepMC::GenEvent * myGenEvent = new HepMC::GenEvent(*(evt->GetEvent()));
452 
453  double pthat = myGenEvent->event_scale();
454 
455  mPthat_80->Fill(pthat);
456  mPthat_3000->Fill(pthat);
457 
458  delete myGenEvent;
459  }
460  }
461  // ***********************************
462  // *** Get CaloMET
463  // ***********************************
464  /*
465  const CaloMET *calomet;
466  edm::Handle<CaloMETCollection> calo;
467  mEvent.getByLabel("met", calo);
468  if (!calo.isValid()) {
469  edm::LogInfo("OutputInfo") << " failed to retrieve data required by MET Task";
470  edm::LogInfo("OutputInfo") << " MET Task cannot continue...!";
471  } else {
472  const CaloMETCollection *calometcol = calo.product();
473  calomet = &(calometcol->front());
474 
475  }
476  */
477  // ***********************************
478  // *** Get the CaloTower collection
479  // ***********************************
481  mEvent.getByLabel( "towerMaker", caloTowers );
482  if (caloTowers.isValid()) {
483  for( CaloTowerCollection::const_iterator cal = caloTowers->begin(); cal != caloTowers->end(); ++ cal ){
484 
485  //To compensate for the index
486  if (mTurnOnEverything.compare("yes")==0) {
487  }
488 
489  mHadTiming->Fill (cal->hcalTime());
490  mEmTiming->Fill (cal->ecalTime());
491  }
492  }
493 
494  // ***********************************
495  // *** Get the RecHits collection
496  // ***********************************
497  try {
498  std::vector<edm::Handle<HBHERecHitCollection> > colls;
499  mEvent.getManyByType(colls);
500  std::vector<edm::Handle<HBHERecHitCollection> >::iterator i;
501  for (i=colls.begin(); i!=colls.end(); i++) {
502  for (HBHERecHitCollection::const_iterator j=(*i)->begin(); j!=(*i)->end(); j++) {
503  // std::cout << *j << std::endl;
504  }
505  }
506  } catch (...) {
507  edm::LogInfo("OutputInfo") << " No HB/HE RecHits.";
508  }
509 
510  try {
511  std::vector<edm::Handle<HFRecHitCollection> > colls;
512  mEvent.getManyByType(colls);
513  std::vector<edm::Handle<HFRecHitCollection> >::iterator i;
514  for (i=colls.begin(); i!=colls.end(); i++) {
515  for (HFRecHitCollection::const_iterator j=(*i)->begin(); j!=(*i)->end(); j++) {
516  // std::cout << *j << std::endl;
517  }
518  }
519  } catch (...) {
520  edm::LogInfo("OutputInfo") << " No HF RecHits.";
521  }
522 
523  try {
524  std::vector<edm::Handle<HORecHitCollection> > colls;
525  mEvent.getManyByType(colls);
526  std::vector<edm::Handle<HORecHitCollection> >::iterator i;
527  for (i=colls.begin(); i!=colls.end(); i++) {
528  for (HORecHitCollection::const_iterator j=(*i)->begin(); j!=(*i)->end(); j++) {
529  }
530  }
531  } catch (...) {
532  edm::LogInfo("OutputInfo") << " No HO RecHits.";
533  }
534  try {
535  std::vector<edm::Handle<EBRecHitCollection> > colls;
536  mEvent.getManyByType(colls);
537  std::vector<edm::Handle<EBRecHitCollection> >::iterator i;
538  for (i=colls.begin(); i!=colls.end(); i++) {
539  for (EBRecHitCollection::const_iterator j=(*i)->begin(); j!=(*i)->end(); j++) {
540  }
541  }
542  } catch (...) {
543  edm::LogInfo("OutputInfo") << " No EB RecHits.";
544  }
545 
546  try {
547  std::vector<edm::Handle<EERecHitCollection> > colls;
548  mEvent.getManyByType(colls);
549  std::vector<edm::Handle<EERecHitCollection> >::iterator i;
550  for (i=colls.begin(); i!=colls.end(); i++) {
551  for (EERecHitCollection::const_iterator j=(*i)->begin(); j!=(*i)->end(); j++) {
552  }
553  }
554  } catch (...) {
555  edm::LogInfo("OutputInfo") << " No EE RecHits.";
556  }
557 
558 
559  //***********************************
560  //*** Get the Jet collection
561  //***********************************
562  math::XYZTLorentzVector p4tmp[2];
564  mEvent.getByLabel(mInputCollection, caloJets);
565  if (!caloJets.isValid()) return;
566  CaloJetCollection::const_iterator jet = caloJets->begin ();
567  int jetIndex = 0;
568  int nJet = 0;
569  int nJetF = 0;
570  int nJetC = 0;
571  int nJetF_30 =0;
572  for (; jet != caloJets->end (); jet++, jetIndex++) {
573 
574  if (jet->pt() > 10.) {
575  if (fabs(jet->eta()) > 1.5)
576  nJetF++;
577  else
578  nJetC++;
579  }
580  if (jet->pt() > 30.) nJetF_30++;
581  if (jet->pt() > 10.) {
582  if (mEta) mEta->Fill (jet->eta());
583  if (mEtaFineBin) mEtaFineBin->Fill (jet->eta());
584  if (mPhiFineBin) mPhiFineBin->Fill (jet->phi());
585  }
586  if (mjetArea) mjetArea->Fill(jet->jetArea());
587  if (mPhi) mPhi->Fill (jet->phi());
588  if (mE) mE->Fill (jet->energy());
589  if (mE_80) mE_80->Fill (jet->energy());
590  if (mP) mP->Fill (jet->p());
591  if (mP_80) mP_80->Fill (jet->p());
592  if (mPt) mPt->Fill (jet->pt());
593  if (mPt_80) mPt_80->Fill (jet->pt());
594  if (mMass) mMass->Fill (jet->mass());
595  if (mMass_80) mMass_80->Fill (jet->mass());
596  if (mConstituents) mConstituents->Fill (jet->nConstituents());
597  if (mConstituents_80) mConstituents_80->Fill (jet->nConstituents());
598  if (jet == caloJets->begin ()) { // first jet
599  if (mEtaFirst) mEtaFirst->Fill (jet->eta());
600  if (mPhiFirst) mPhiFirst->Fill (jet->phi());
601  if (mPtFirst) mPtFirst->Fill (jet->pt());
602  if (mPtFirst_80) mPtFirst_80->Fill (jet->pt());
603  if (mPtFirst_3000) mPtFirst_3000->Fill (jet->pt());
604  }
605  if (jetIndex == 0) {
606  nJet++;
607  p4tmp[0] = jet->p4();
608  }
609  if (jetIndex == 1) {
610  nJet++;
611  p4tmp[1] = jet->p4();
612  }
613 
614  if (mMaxEInEmTowers) mMaxEInEmTowers->Fill (jet->maxEInEmTowers());
615  if (mMaxEInHadTowers) mMaxEInHadTowers->Fill (jet->maxEInHadTowers());
616  if (mHadEnergyInHO) mHadEnergyInHO->Fill (jet->hadEnergyInHO());
617  if (mHadEnergyInHO_80) mHadEnergyInHO_80->Fill (jet->hadEnergyInHO());
618  if (mHadEnergyInHO_3000) mHadEnergyInHO_3000->Fill (jet->hadEnergyInHO());
619  if (mHadEnergyInHB) mHadEnergyInHB->Fill (jet->hadEnergyInHB());
620  if (mHadEnergyInHB_80) mHadEnergyInHB_80->Fill (jet->hadEnergyInHB());
621  if (mHadEnergyInHF) mHadEnergyInHF->Fill (jet->hadEnergyInHF());
622  if (mHadEnergyInHE) mHadEnergyInHE->Fill (jet->hadEnergyInHE());
623  if (mHadEnergyInHE_80) mHadEnergyInHE_80->Fill (jet->hadEnergyInHE());
624  if (mEmEnergyInEB) mEmEnergyInEB->Fill (jet->emEnergyInEB());
625  if (mEmEnergyInEB_80) mEmEnergyInEB_80->Fill (jet->emEnergyInEB());
626  if (mEmEnergyInEE) mEmEnergyInEE->Fill (jet->emEnergyInEE());
627  if (mEmEnergyInEE_80) mEmEnergyInEE_80->Fill (jet->emEnergyInEE());
628  if (mEmEnergyInHF) mEmEnergyInHF->Fill (jet->emEnergyInHF());
629  if (fabs(jet->eta())<1.5) mEnergyFractionHadronic_B->Fill (jet->energyFractionHadronic());
630  if (fabs(jet->eta())>1.5 && fabs(jet->eta())<3.0) mEnergyFractionHadronic_E->Fill (jet->energyFractionHadronic());
631  if (fabs(jet->eta())>3.0 && fabs(jet->eta())<6.0) mEnergyFractionHadronic_F->Fill (jet->energyFractionHadronic());
632  if (fabs(jet->eta())<1.5) mEnergyFractionEm_B->Fill (jet->emEnergyFraction());
633  if (fabs(jet->eta())>1.5 && fabs(jet->eta())<3.0) mEnergyFractionEm_E->Fill (jet->emEnergyFraction());
634  if (fabs(jet->eta())>3.0 && fabs(jet->eta())<6.0) mEnergyFractionEm_F->Fill (jet->emEnergyFraction());
635  if (mHFTotal) mHFTotal->Fill (jet->hadEnergyInHF()+jet->emEnergyInHF());
636  if (mHFTotal_80) mHFTotal_80->Fill (jet->hadEnergyInHF()+jet->emEnergyInHF());
637  if (mHFLong) mHFLong->Fill (jet->hadEnergyInHF()*0.5+jet->emEnergyInHF());
638  if (mHFLong_80) mHFLong_80->Fill (jet->hadEnergyInHF()*0.5+jet->emEnergyInHF());
639  if (mHFShort) mHFShort->Fill (jet->hadEnergyInHF()*0.5);
640  if (mHFShort_80) mHFShort_80->Fill (jet->hadEnergyInHF()*0.5);
641 
642 
643 
644  if (mN90) mN90->Fill (jet->n90());
645  }
646 
647 
648 
649  if (mNJetsEtaC) mNJetsEtaC->Fill( nJetC );
650  if (mNJetsEtaF) mNJetsEtaF->Fill( nJetF );
651  if (mNJetsEtaF_30) mNJetsEtaF_30->Fill( nJetF_30 );
652  if (nJet == 2) {
653  if (mMjj) mMjj->Fill( (p4tmp[0]+p4tmp[1]).mass() );
654  if (mMjj_3000) mMjj_3000->Fill( (p4tmp[0]+p4tmp[1]).mass() );
655  }
656 
657  // Count Jets above Pt cut
658  for (int istep = 0; istep < 100; ++istep) {
659  int njet = 0;
660  float ptStep = (istep * (200./100.));
661 
662  for ( CaloJetCollection::const_iterator cal = caloJets->begin(); cal != caloJets->end(); ++ cal ) {
663  if ( cal->pt() > ptStep ) njet++;
664  }
665  mNJets1->Fill( ptStep, njet );
666  }
667 
668  for (int istep = 0; istep < 100; ++istep) {
669  int njet = 0;
670  float ptStep = (istep * (4000./100.));
671  for ( CaloJetCollection::const_iterator cal = caloJets->begin(); cal != caloJets->end(); ++ cal ) {
672  if ( cal->pt() > ptStep ) njet++;
673  }
674  mNJets2->Fill( ptStep, njet );
675  }
676 
677 
678  const JetCorrector* corrector=0;
679  if(doJetCorrection){
681  }
682  for (CaloJetCollection::const_iterator jet = caloJets->begin(); jet !=caloJets ->end(); jet++){
683  //const math::XYZTLorentzVector theJet = jet->p4();c
684  CaloJet correctedJet = *jet;
685  //double scale = corrector->correction(jet->p4());
686  double scale=1.0;
687  if(doJetCorrection){
688  scale = corrector->correction(*jet,mEvent,mSetup);
689  }
690  correctedJet.scaleEnergy(scale);
691  if(correctedJet.pt()>30){
692  mCorrJetPt->Fill(correctedJet.pt());
693  mCorrJetPt_80->Fill(correctedJet.pt());
694  if(correctedJet.pt() >10) mCorrJetEta->Fill(correctedJet.eta());
695  mCorrJetPhi->Fill(correctedJet.phi());
696  mpTRatio->Fill(log10(jet->pt()),correctedJet.pt()/jet->pt());
697 
698  if (fabs(jet->eta())<1.5) {
699  mpTRatioB_d->Fill(log10(jet->pt()), correctedJet.pt()/jet->pt());
700  }
701 
702  if (fabs(jet->eta())>1.5 && fabs(jet->eta())<3.0) {
703  mpTRatioE_d->Fill (log10(jet->pt()), correctedJet.pt()/jet->pt());
704  }
705  if (fabs(jet->eta())>3.0 && fabs(jet->eta())<6.0) {
706  mpTRatioF_d->Fill (log10(jet->pt()), correctedJet.pt()/jet->pt());
707  }
708  if (jet->pt()>30.0 && jet->pt()<200.0) {
709  mpTRatio_30_200_d->Fill (jet->eta(),correctedJet.pt()/jet->pt());
710  }
711  if (jet->pt()>200.0 && jet->pt()<600.0) {
712  mpTRatio_200_600_d->Fill (jet->eta(),correctedJet.pt()/jet->pt());
713  }
714  if (jet->pt()>600.0 && jet->pt()<1500.0) {
715  mpTRatio_600_1500_d->Fill (jet->eta(),correctedJet.pt()/jet->pt());
716  }
717  if (jet->pt()>1500.0 && jet->pt()<3500.0) {
718  mpTRatio_1500_3500_d->Fill (jet->eta(),correctedJet.pt()/jet->pt());
719  }
720  }
721  }
722 
723 
724 
725  if (!mEvent.isRealData()){
726  // Gen jet analysis
727  Handle<GenJetCollection> genJets;
728  mEvent.getByLabel(mInputGenCollection, genJets);
729  if (!genJets.isValid()) return;
730  GenJetCollection::const_iterator gjet = genJets->begin ();
731  int gjetIndex = 0;
732  for (; gjet != genJets->end (); gjet++, gjetIndex++) {
733  if (mGenEta) mGenEta->Fill (gjet->eta());
734  if (mGenPhi) mGenPhi->Fill (gjet->phi());
735  if (mGenPt) mGenPt->Fill (gjet->pt());
736  if (mGenPt_80) mGenPt_80->Fill (gjet->pt());
737  if (gjet == genJets->begin ()) { // first jet
738  if (mGenEtaFirst) mGenEtaFirst->Fill (gjet->eta());
739  if (mGenPhiFirst) mGenPhiFirst->Fill (gjet->phi());
740  }
741  }
742 
743 
744  // now match CaloJets to GenJets
745  JetMatchingTools jetMatching (mEvent);
746  if (!(mInputGenCollection.label().empty())) {
747  // Handle<GenJetCollection> genJets;
748  // mEvent.getByLabel(mInputGenCollection, genJets);
749 
750  std::vector <std::vector <const reco::GenParticle*> > genJetConstituents (genJets->size());
751  std::vector <std::vector <const reco::GenParticle*> > caloJetConstituents (caloJets->size());
752  if (mRThreshold > 0) {
753  }
754  else {
755  for (unsigned iGenJet = 0; iGenJet < genJets->size(); ++iGenJet) {
756  genJetConstituents [iGenJet] = jetMatching.getGenParticles ((*genJets) [iGenJet]);
757  }
758 
759  for (unsigned iCaloJet = 0; iCaloJet < caloJets->size(); ++iCaloJet) {
760  caloJetConstituents [iCaloJet] = jetMatching.getGenParticles ((*caloJets) [iCaloJet], false);
761  }
762  }
763 
764  for (unsigned iGenJet = 0; iGenJet < genJets->size(); ++iGenJet) { //****************************************************************
765  //for (unsigned iGenJet = 0; iGenJet < 1; ++iGenJet) { // only FIRST Jet !!!!
766  const GenJet& genJet = (*genJets) [iGenJet];
767  double genJetPt = genJet.pt();
768 
769  //std::cout << iGenJet <<". Genjet: pT = " << genJetPt << "GeV" << std::endl; // *****************************************************
770 
771  if (fabs(genJet.eta()) > 6.) continue; // out of detector
772  if (genJetPt < mMatchGenPtThreshold) continue; // no low momentum
773  //double logPtGen = log10 (genJetPt);
774  //mAllGenJetsPt->Fill (logPtGen);
775  //mAllGenJetsEta->Fill (logPtGen, genJet.eta());
776  if (caloJets->size() <= 0) continue; // no CaloJets - nothing to match
777  if (mRThreshold > 0) {
778  unsigned iCaloJetBest = 0;
779  double deltaRBest = 999.;
780  for (unsigned iCaloJet = 0; iCaloJet < caloJets->size(); ++iCaloJet) {
781  double dR = deltaR (genJet.eta(), genJet.phi(), (*caloJets) [iCaloJet].eta(), (*caloJets) [iCaloJet].phi());
782  if (deltaRBest < mRThreshold && dR < mRThreshold && genJet.pt() > 5.) {
783  /*
784  std::cout << "Yet another matched jet for GenJet pt=" << genJet.pt()
785  << " previous CaloJet pt/dr: " << (*caloJets) [iCaloJetBest].pt() << '/' << deltaRBest
786  << " new CaloJet pt/dr: " << (*caloJets) [iCaloJet].pt() << '/' << dR
787  << std::endl;
788  */
789  }
790  if (dR < deltaRBest) {
791  iCaloJetBest = iCaloJet;
792  deltaRBest = dR;
793  }
794  }
795  if (mTurnOnEverything.compare("yes")==0) {
796  //mRMatch->Fill (logPtGen, genJet.eta(), deltaRBest);
797  }
798  if (deltaRBest < mRThreshold) { // Matched
799  fillMatchHists (genJet, (*caloJets) [iCaloJetBest],goodVertices);
800  }
801 
803  double CorrdeltaRBest = 999.;
804  double CorrJetPtBest = 0;
805  for (CaloJetCollection::const_iterator jet = caloJets->begin(); jet !=caloJets ->end(); jet++) {
806  CaloJet correctedJet = *jet;
807  //double scale = corrector->correction(jet->p4());
808  double scale=1.0;
809  if (doJetCorrection){
810  scale = corrector->correction(*jet,mEvent,mSetup);
811  }
812  correctedJet.scaleEnergy(scale);
813  double CorrJetPt = correctedJet.pt();
814  if(CorrJetPt>30){
815  double CorrdR = deltaR (genJet.eta(), genJet.phi(), correctedJet.eta(), correctedJet.phi());
816  if (CorrdR < CorrdeltaRBest) {
817  CorrdeltaRBest = CorrdR;
818  CorrJetPtBest = CorrJetPt;
819  }
820  }
821  }
822  if (deltaRBest < mRThreshold) { // Matched
823  mpTResponse->Fill(log10(genJet.pt()),CorrJetPtBest/genJet.pt());
824 
825  if(goodVertices.size()<=5) mpTResponse_nvtx_0_5->Fill(log10(genJet.pt()),CorrJetPtBest/genJet.pt());
826  if(goodVertices.size()>5 && goodVertices.size()<=10) mpTResponse_nvtx_5_10->Fill(log10(genJet.pt()),CorrJetPtBest/genJet.pt());
827  if(goodVertices.size()>10 && goodVertices.size()<=15) mpTResponse_nvtx_10_15->Fill(log10(genJet.pt()),CorrJetPtBest/genJet.pt());
828  if(goodVertices.size()>15 && goodVertices.size()<=20) mpTResponse_nvtx_15_20->Fill(log10(genJet.pt()),CorrJetPtBest/genJet.pt());
829  if(goodVertices.size()>20 && goodVertices.size()<=30) mpTResponse_nvtx_20_30->Fill(log10(genJet.pt()),CorrJetPtBest/genJet.pt());
830  if(goodVertices.size()>30) mpTResponse_nvtx_30_inf->Fill(log10(genJet.pt()),CorrJetPtBest/genJet.pt());
831 
832  if (fabs(genJet.eta())<1.5) {
833  mpTResponseB_d->Fill(log10(genJet.pt()), CorrJetPtBest/genJet.pt());
834  }
835 
836  if (fabs(genJet.eta())>1.5 && fabs(genJet.eta())<3.0) {
837  mpTResponseE_d->Fill (log10(genJet.pt()), CorrJetPtBest/genJet.pt());
838  }
839  if (fabs(genJet.eta())>3.0 && fabs(genJet.eta())<6.0) {
840  mpTResponseF_d->Fill (log10(genJet.pt()), CorrJetPtBest/genJet.pt());
841  }
842  if (genJet.pt()>30.0 && genJet.pt()<200.0) {
843  mpTResponse_30_200_d->Fill (genJet.eta(),CorrJetPtBest/genJet.pt());
844  }
845  if (genJet.pt()>200.0 && genJet.pt()<600.0) {
846  mpTResponse_200_600_d->Fill (genJet.eta(),CorrJetPtBest/genJet.pt());
847  }
848  if (genJet.pt()>600.0 && genJet.pt()<1500.0) {
849  mpTResponse_600_1500_d->Fill (genJet.eta(),CorrJetPtBest/genJet.pt());
850  }
851  if (genJet.pt()>1500.0 && genJet.pt()<3500.0) {
852  mpTResponse_1500_3500_d->Fill (genJet.eta(),CorrJetPtBest/genJet.pt());
853  }
854  if (genJet.pt()>30.0) {
855  mpTResponse_30_d->Fill (genJet.eta(),CorrJetPtBest/genJet.pt());
856  }
857  }
859 
860  }
861  else {
862  unsigned iCaloJetBest = 0;
863  double energyFractionBest = 0.;
864  for (unsigned iCaloJet = 0; iCaloJet < caloJets->size(); ++iCaloJet) {
865  double energyFraction = jetMatching.overlapEnergyFraction (genJetConstituents [iGenJet],
866  caloJetConstituents [iCaloJet]);
867  if (energyFraction > energyFractionBest) {
868  iCaloJetBest = iCaloJet;
869  energyFractionBest = energyFraction;
870  }
871  }
872  if (mTurnOnEverything.compare("yes")==0) {
873  //mGenJetMatchEnergyFraction->Fill (logPtGen, genJet.eta(), energyFractionBest);
874  }
875  if (energyFractionBest > mGenEnergyFractionThreshold) { // good enough
876  double reverseEnergyFraction = jetMatching.overlapEnergyFraction (caloJetConstituents [iCaloJetBest],
877  genJetConstituents [iGenJet]);
878  if (mTurnOnEverything.compare("yes")==0) {
879  //mReverseMatchEnergyFraction->Fill (logPtGen, genJet.eta(), reverseEnergyFraction);
880  }
881  if (reverseEnergyFraction > mReverseEnergyFractionThreshold) { // Matched
882  fillMatchHists (genJet, (*caloJets) [iCaloJetBest], goodVertices);
883  }
884  }
885  }
886  }
887  }
888  }
889 
890 }
891 
892 void CaloJetTester::fillMatchHists (const reco::GenJet& fGenJet, const reco::CaloJet& fCaloJet, std::vector<reco::Vertex> goodVertices) {
893  double logPtGen = log10 (fGenJet.pt());
894  double PtGen = fGenJet.pt();
895  double PtCalo = fCaloJet.pt();
896  //mMatchedGenJetsPt->Fill (logPtGen);
897  //mMatchedGenJetsEta->Fill (logPtGen, fGenJet.eta());
898 
899  double PtThreshold = 10.;
900 
901  if (mTurnOnEverything.compare("yes")==0) {
902  mDeltaEta->Fill (logPtGen, fGenJet.eta(), fCaloJet.eta()-fGenJet.eta());
903  mDeltaPhi->Fill (logPtGen, fGenJet.eta(), fCaloJet.phi()-fGenJet.phi());
904 
905  mEScaleFineBin->Fill (logPtGen, fGenJet.eta(), fCaloJet.energy()/fGenJet.energy());
906 
907  if (fGenJet.pt()>PtThreshold) {
908  mEScale_pt10->Fill (logPtGen, fGenJet.eta(), fCaloJet.energy()/fGenJet.energy());
909 
910  }
911 
912  }
913  if (fCaloJet.pt() > PtThreshold) {
914  mDelEta->Fill (fGenJet.eta()-fCaloJet.eta());
915  mDelPhi->Fill (fGenJet.phi()-fCaloJet.phi());
916  mDelPt->Fill ((fGenJet.pt()-fCaloJet.pt())/fGenJet.pt());
917  }
918 
919  if (fabs(fGenJet.eta())<1.5) {
920 
921  //mpTScaleB_s->Fill (log10(PtGen), PtCalo/PtGen);
922  mpTScaleB_d->Fill (log10(PtGen), PtCalo/PtGen);
923  mpTScalePhiB_d->Fill (fGenJet.phi(), PtCalo/PtGen);
924 
925  if (PtGen>30.0 && PtGen<200.0) {
926  mpTScale1DB_30_200->Fill (fCaloJet.pt()/fGenJet.pt());
927  }
928  if (PtGen>200.0 && PtGen<600.0) {
929  mpTScale1DB_200_600->Fill (fCaloJet.pt()/fGenJet.pt());
930  }
931  if (PtGen>300.0 && PtGen<1500.0) {
932  mpTScale1DB_600_1500->Fill (fCaloJet.pt()/fGenJet.pt());
933  }
934  if (PtGen>1500.0 && PtGen<3500.0) {
935  mpTScale1DB_1500_3500->Fill (fCaloJet.pt()/fGenJet.pt());
936  }
937 
938  }
939 
940  if (fabs(fGenJet.eta())>1.5 && fabs(fGenJet.eta())<3.0) {
941 
942  //mpTScaleE_s->Fill (log10(PtGen), PtCalo/PtGen);
943  mpTScaleE_d->Fill (log10(PtGen), PtCalo/PtGen);
944  mpTScalePhiE_d->Fill (fGenJet.phi(), PtCalo/PtGen);
945 
946  if (PtGen>30.0 && PtGen<200.0) {
947  mpTScale1DE_30_200->Fill (fCaloJet.pt()/fGenJet.pt());
948  }
949  if (PtGen>200.0 && PtGen<600.0) {
950  mpTScale1DE_200_600->Fill (fCaloJet.pt()/fGenJet.pt());
951  }
952  if (PtGen>600.0 && PtGen<1500.0) {
953  mpTScale1DE_600_1500->Fill (fCaloJet.pt()/fGenJet.pt());
954  }
955  if (PtGen>1500.0 && PtGen<3500.0) {
956  mpTScale1DE_1500_3500->Fill (fCaloJet.pt()/fGenJet.pt());
957  }
958 
959  }
960 
961  if (fabs(fGenJet.eta())>3.0 && fabs(fGenJet.eta())<6.0) {
962 
963  //mpTScaleF_s->Fill (log10(PtGen), PtCalo/PtGen);
964  mpTScaleF_d->Fill (log10(PtGen), PtCalo/PtGen);
965  mpTScalePhiF_d->Fill (fGenJet.phi(), PtCalo/PtGen);
966 
967  if (PtGen>30.0 && PtGen<200.0) {
968  mpTScale1DF_30_200->Fill (fCaloJet.pt()/fGenJet.pt());
969  }
970  if (PtGen>200.0 && PtGen<600.0) {
971  mpTScale1DF_200_600->Fill (fCaloJet.pt()/fGenJet.pt());
972  }
973  if (PtGen>600.0 && PtGen<1500.0) {
974  mpTScale1DF_600_1500->Fill (fCaloJet.pt()/fGenJet.pt());
975  }
976  if (PtGen>1500.0 && PtGen<3500.0) {
977  mpTScale1DF_1500_3500->Fill (fCaloJet.pt()/fGenJet.pt());
978  }
979 
980  }
981 
982  if (fGenJet.pt()>30.0 && fGenJet.pt()<200.0) {
983  mpTScale_30_200_d->Fill (fGenJet.eta(),fCaloJet.pt()/fGenJet.pt());
984  }
985 
986  if (fGenJet.pt()>200.0 && fGenJet.pt()<600.0) {
987  mpTScale_200_600_d->Fill (fGenJet.eta(),fCaloJet.pt()/fGenJet.pt());
988  }
989 
990  if (fGenJet.pt()>600.0 && fGenJet.pt()<1500.0) {
991  mpTScale_600_1500_d->Fill (fGenJet.eta(),fCaloJet.pt()/fGenJet.pt());
992  }
993 
994  if (fGenJet.pt()>1500.0 && fGenJet.pt()<3500.0) {
995  mpTScale_1500_3500_d->Fill (fGenJet.eta(),fCaloJet.pt()/fGenJet.pt());
996  }
997 
998  if (fabs(fGenJet.eta())<1.3) {
999  if(fGenJet.pt()>60.0 && fGenJet.pt()<120.0) {
1000  if(goodVertices.size()<=5) mpTScale_a_nvtx_0_5->Fill( PtCalo/PtGen);
1001  }
1002  if(fGenJet.pt()>200.0 && fGenJet.pt()<300.0) {
1003  if(goodVertices.size()<=5) mpTScale_b_nvtx_0_5->Fill( PtCalo/PtGen);
1004  }
1005  if(fGenJet.pt()>600.0 && fGenJet.pt()<900.0) {
1006  if(goodVertices.size()<=5) mpTScale_c_nvtx_0_5->Fill( PtCalo/PtGen);
1007  }
1008 
1009  if(fGenJet.pt()>60.0 && fGenJet.pt()<120.0) {
1010  if(goodVertices.size()>5 && goodVertices.size()<=10) mpTScale_a_nvtx_5_10->Fill( PtCalo/PtGen);
1011  }
1012  if(fGenJet.pt()>200.0 && fGenJet.pt()<300.0) {
1013  if(goodVertices.size()>5 && goodVertices.size()<=10) mpTScale_b_nvtx_5_10->Fill( PtCalo/PtGen);
1014  }
1015  if(fGenJet.pt()>600.0 && fGenJet.pt()<900.0) {
1016  if(goodVertices.size()>5 && goodVertices.size()<=10) mpTScale_c_nvtx_5_10->Fill( PtCalo/PtGen);
1017  }
1018 
1019  if(fGenJet.pt()>60.0 && fGenJet.pt()<120.0) {
1020  if(goodVertices.size()>10 && goodVertices.size()<=15) mpTScale_a_nvtx_10_15->Fill( PtCalo/PtGen);
1021  }
1022  if(fGenJet.pt()>200.0 && fGenJet.pt()<300.0) {
1023  if(goodVertices.size()>10 && goodVertices.size()<=15) mpTScale_b_nvtx_10_15->Fill( PtCalo/PtGen);
1024  }
1025  if(fGenJet.pt()>600.0 && fGenJet.pt()<900.0) {
1026  if(goodVertices.size()>10 && goodVertices.size()<=15) mpTScale_c_nvtx_10_15->Fill( PtCalo/PtGen);
1027  }
1028 
1029  if(fGenJet.pt()>60.0 && fGenJet.pt()<120.0) {
1030  if(goodVertices.size()>15 && goodVertices.size()<=20) mpTScale_a_nvtx_15_20->Fill( PtCalo/PtGen);
1031  }
1032  if(fGenJet.pt()>200.0 && fGenJet.pt()<300.0) {
1033  if(goodVertices.size()>15 && goodVertices.size()<=20) mpTScale_b_nvtx_15_20->Fill( PtCalo/PtGen);
1034  }
1035  if(fGenJet.pt()>600.0 && fGenJet.pt()<900.0) {
1036  if(goodVertices.size()>15 && goodVertices.size()<=20) mpTScale_c_nvtx_15_20->Fill( PtCalo/PtGen);
1037  }
1038 
1039  if(fGenJet.pt()>60.0 && fGenJet.pt()<120.0) {
1040  if(goodVertices.size()>20 && goodVertices.size()<=30) mpTScale_a_nvtx_20_30->Fill( PtCalo/PtGen);
1041  }
1042  if(fGenJet.pt()>200.0 && fGenJet.pt()<300.0) {
1043  if(goodVertices.size()>20 && goodVertices.size()<=30) mpTScale_b_nvtx_20_30->Fill( PtCalo/PtGen);
1044  }
1045  if(fGenJet.pt()>600.0 && fGenJet.pt()<900.0) {
1046  if(goodVertices.size()>20 && goodVertices.size()<=30) mpTScale_c_nvtx_20_30->Fill( PtCalo/PtGen);
1047  }
1048 
1049  if(fGenJet.pt()>60.0 && fGenJet.pt()<120.0) {
1050  if(goodVertices.size()>30) mpTScale_a_nvtx_30_inf->Fill( PtCalo/PtGen);
1051  }
1052  if(fGenJet.pt()>200.0 && fGenJet.pt()<300.0) {
1053  if(goodVertices.size()>30) mpTScale_b_nvtx_30_inf->Fill( PtCalo/PtGen);
1054  }
1055  if(fGenJet.pt()>600.0 && fGenJet.pt()<900.0) {
1056  if(goodVertices.size()>30) mpTScale_c_nvtx_30_inf->Fill( PtCalo/PtGen);
1057  }
1059  if(goodVertices.size()<=5) mpTScale_nvtx_0_5->Fill(log10(PtGen),PtCalo/PtGen);
1060  if(goodVertices.size()>5 && goodVertices.size()<=10) mpTScale_nvtx_5_10->Fill(log10(PtGen),PtCalo/PtGen);
1061  if(goodVertices.size()>10 && goodVertices.size()<=15) mpTScale_nvtx_10_15->Fill(log10(PtGen),PtCalo/PtGen);
1062  if(goodVertices.size()>15 && goodVertices.size()<=20) mpTScale_nvtx_15_20->Fill(log10(PtGen), PtCalo/PtGen);
1063  if(goodVertices.size()>20 && goodVertices.size()<=30) mpTScale_nvtx_20_30->Fill(log10(PtGen), PtCalo/PtGen);
1064  if(goodVertices.size()>30) mpTScale_nvtx_30_inf->Fill(log10(PtGen), PtCalo/PtGen);
1065  }
1066  if (fabs(fGenJet.eta())<1.3) {
1067  if(fGenJet.pt()>60.0 && fGenJet.pt()<120.0) mpTScale_a->Fill(PtCalo/PtGen);
1068  if(fGenJet.pt()>200.0 && fGenJet.pt()<300.0) mpTScale_b->Fill(PtCalo/PtGen);
1069  if(fGenJet.pt()>600.0 && fGenJet.pt()<900.0) mpTScale_c->Fill(PtCalo/PtGen);
1070  }
1071  mpTScale_pT->Fill (log10(PtGen), PtCalo/PtGen);
1072 }
1073 
MonitorElement * mpTScale_1500_3500_d
MonitorElement * mpTScale_c_nvtx_5_10
void getManyByType(std::vector< Handle< PROD > > &results) const
Definition: Event.h:395
MonitorElement * mpTScale1DF_600_1500
virtual double energy() const GCC11_FINAL
energy
T getParameter(std::string const &) const
int i
Definition: DBlmapReader.cc:9
MonitorElement * mpTScale1DB_30_200
Jets made from CaloTowers.
Definition: CaloJet.h:30
MonitorElement * mjetArea
MonitorElement * mpTResponse_1500_3500_d
MonitorElement * mpTResponse_30_d
edm::InputTag mInputCollection
Definition: CaloJetTester.h:39
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:722
MonitorElement * mHadEnergyInHE_80
MonitorElement * mHadEnergyInHB_80
MonitorElement * mpTScale_a_nvtx_5_10
MonitorElement * mMaxEInHadTowers
double mReverseEnergyFractionThreshold
MonitorElement * mpTResponse_nvtx_5_10
MonitorElement * mpTScale1DF_30_200
MonitorElement * mpTScale_c_nvtx_30_inf
MonitorElement * mConstituents
Definition: CaloJetTester.h:73
MonitorElement * mpTScale1DB_1500_3500
MonitorElement * mPtFirst
MonitorElement * mDelEta
MonitorElement * mNJets2
MonitorElement * mpTRatio_1500_3500_d
Definition: CaloJetTester.h:92
MonitorElement * mpTScale_a
virtual double correction(const LorentzVector &fJet) const =0
get correction using Jet information only
MonitorElement * mHadEnergyInHE
MonitorElement * mpTScale_a_nvtx_20_30
Base class for all types of Jets.
Definition: Jet.h:21
double mRThreshold
virtual void analyze(const edm::Event &, const edm::EventSetup &)
Definition: DDAxes.h:10
MonitorElement * mNJetsEtaF
MonitorElement * mEtaFineBin
Definition: CaloJetTester.h:52
void fillMatchHists(const reco::GenJet &fGenJet, const reco::CaloJet &fCaloJet, std::vector< reco::Vertex > goodVertices)
MonitorElement * mEnergyFractionHadronic_E
MonitorElement * mpTScaleB_d
std::vector< CaloTower >::const_iterator const_iterator
std::string mOutputFile
Definition: CaloJetTester.h:41
MonitorElement * mpTScale_nvtx_0_5
MonitorElement * mpTScale1DE_600_1500
MonitorElement * mHFTotal_80
MonitorElement * mDelPt
MonitorElement * mPtFirst_3000
MonitorElement * mpTRatioF_d
Definition: CaloJetTester.h:88
std::string mTurnOnEverything
MonitorElement * mHadEnergyInHB
MonitorElement * mpTScale_b_nvtx_0_5
MonitorElement * mpTScale1DE_30_200
virtual void scaleEnergy(double fScale)
scale energy of the jet
Definition: Jet.cc:445
MonitorElement * mDelPhi
MonitorElement * mPt_80
Definition: CaloJetTester.h:68
MonitorElement * mpTRatioE_d
Definition: CaloJetTester.h:87
MonitorElement * mNJetsEtaF_30
MonitorElement * mpTScale_c_nvtx_20_30
MonitorElement * mPt
Definition: CaloJetTester.h:67
MonitorElement * mEScale_pt10
MonitorElement * mNJets1
MonitorElement * mpTScalePhiB_d
MonitorElement * mEnergyFractionEm_E
MonitorElement * mHFShort_80
double mMatchGenPtThreshold
MonitorElement * mEmEnergyInHF
MonitorElement * mpTRatioB_d
Definition: CaloJetTester.h:86
MonitorElement * mHadEnergyInHO_3000
int njet
Definition: HydjetWrapper.h:91
bool isRealData() const
Definition: EventBase.h:60
float float float z
static int position[TOTALCHAMBERS][3]
Definition: ReadPGInfo.cc:509
MonitorElement * mpTResponse_nvtx_30_inf
MonitorElement * mpTScale_b
MonitorElement * mEmTiming
Definition: CaloJetTester.h:77
void Fill(long long x)
MonitorElement * mHadTiming
Definition: CaloJetTester.h:76
MonitorElement * mpTScale_nvtx_5_10
MonitorElement * mpTRatio_600_1500_d
Definition: CaloJetTester.h:91
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:30
MonitorElement * mEnergyFractionHadronic_B
MonitorElement * mMjj
virtual float phi() const GCC11_FINAL
momentum azimuthal angle
virtual void endJob()
MonitorElement * mPhiFirst
MonitorElement * mpTResponseF_d
Definition: CaloJetTester.h:96
MonitorElement * mpTScale_b_nvtx_10_15
MonitorElement * mpTScale_c_nvtx_0_5
MonitorElement * mE_80
Definition: CaloJetTester.h:62
MonitorElement * mP_80
Definition: CaloJetTester.h:65
MonitorElement * mpTScale_pT
MonitorElement * mGenEtaFirst
MonitorElement * mpTResponse_200_600_d
Definition: CaloJetTester.h:98
MonitorElement * mpTResponse_nvtx_20_30
MonitorElement * nvtx_0_60
MonitorElement * mMass
Definition: CaloJetTester.h:70
MonitorElement * mpTRatio
Definition: CaloJetTester.h:85
MonitorElement * mConstituents_80
Definition: CaloJetTester.h:74
MonitorElement * mEmEnergyInEB_80
MonitorElement * mPhiFineBin
Definition: CaloJetTester.h:60
MonitorElement * mpTResponse_nvtx_15_20
MonitorElement * mEmEnergyInEE_80
MonitorElement * mpTScale_b_nvtx_15_20
MonitorElement * mpTResponse
Definition: CaloJetTester.h:93
int j
Definition: DBlmapReader.cc:9
MonitorElement * mCorrJetPt
Definition: CaloJetTester.h:80
MonitorElement * mpTRatio_200_600_d
Definition: CaloJetTester.h:90
MonitorElement * mHadEnergyInHO
Jets made from MC generator particles.
Definition: GenJet.h:25
MonitorElement * mpTScale_c
MonitorElement * mCorrJetEta
Definition: CaloJetTester.h:83
MonitorElement * mCorrJetPhi
Definition: CaloJetTester.h:84
MonitorElement * mpTScale1DB_600_1500
MonitorElement * mGenEta
MonitorElement * mHadEnergyInHO_80
MonitorElement * mpTScalePhiE_d
MonitorElement * mEnergyFractionEm_F
MonitorElement * bookProfile(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, const char *option="s")
Definition: DQMStore.cc:1036
tuple goodVertices
The Good vertices collection needed by the tracking failure filter ________||.
MonitorElement * mpTScale_a_nvtx_15_20
MonitorElement * mpTScale_a_nvtx_10_15
bool isValid() const
Definition: HandleBase.h:76
MonitorElement * mpTScale1DE_200_600
MonitorElement * mHadEnergyInHF
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:361
MonitorElement * mMjj_3000
MonitorElement * mEnergyFractionHadronic_F
virtual float eta() const GCC11_FINAL
momentum pseudorapidity
MonitorElement * mGenPt
MonitorElement * mpTResponse_nvtx_0_5
MonitorElement * mpTScale_nvtx_30_inf
double deltaR(double eta1, double eta2, double phi1, double phi2)
Definition: TreeUtility.cc:17
MonitorElement * mPthat_3000
MonitorElement * mPhi
Definition: CaloJetTester.h:59
MonitorElement * mHFShort
MonitorElement * mEScaleFineBin
MonitorElement * mpTScale_b_nvtx_30_inf
MonitorElement * numberofevents
Definition: CaloJetTester.h:48
MonitorElement * mpTScale_nvtx_10_15
MonitorElement * mpTScalePhiF_d
MonitorElement * mpTScale_200_600_d
MonitorElement * mpTResponse_600_1500_d
Definition: CaloJetTester.h:99
MonitorElement * mpTScaleE_d
MonitorElement * mPthat_80
MonitorElement * mpTScale1DF_200_600
MonitorElement * mpTScale_b_nvtx_20_30
MonitorElement * mpTScale_a_nvtx_0_5
MonitorElement * mGenPt_80
MonitorElement * nvtx_0_30
static const JetCorrector * getJetCorrector(const std::string &fName, const edm::EventSetup &fSetup)
retrieve corrector from the event setup. troughs exception if something is missing ...
Definition: JetCorrector.cc:51
MonitorElement * mDeltaEta
MonitorElement * mpTResponseE_d
Definition: CaloJetTester.h:95
MonitorElement * mCorrJetPt_80
Definition: CaloJetTester.h:81
MonitorElement * mpTScale_c_nvtx_15_20
virtual void beginJob()
std::vector< const reco::GenParticle * > getGenParticles(const reco::CaloJet &fJet, bool fVerbose=true)
GenParticles for CaloJet.
MonitorElement * mHFLong_80
std::string const & label() const
Definition: InputTag.h:42
MonitorElement * mHFTotal
MonitorElement * mpTScale_a_nvtx_30_inf
MonitorElement * mEmEnergyInEE
MonitorElement * mMass_80
Definition: CaloJetTester.h:71
list save
Definition: cuy.py:1163
MonitorElement * mNJetsEtaC
MonitorElement * mpTRatio_30_200_d
Definition: CaloJetTester.h:89
MonitorElement * mEnergyFractionEm_B
MonitorElement * mpTScale1DF_1500_3500
MonitorElement * mpTScale1DB_200_600
MonitorElement * mE
Definition: CaloJetTester.h:61
MonitorElement * mpTScale_600_1500_d
MonitorElement * mEta
Definition: CaloJetTester.h:51
MonitorElement * mpTScale1DE_1500_3500
MonitorElement * mN90
MonitorElement * mPtFirst_80
MonitorElement * mP
Definition: CaloJetTester.h:64
MonitorElement * mGenPhiFirst
MonitorElement * mMaxEInEmTowers
MonitorElement * mpTResponseB_d
Definition: CaloJetTester.h:94
MonitorElement * mEtaFirst
MonitorElement * mpTScale_b_nvtx_5_10
MonitorElement * mpTResponse_nvtx_10_15
MonitorElement * mpTScaleF_d
double mGenEnergyFractionThreshold
virtual float pt() const GCC11_FINAL
transverse momentum
table const & tbl() const
Definition: ParameterSet.h:255
MonitorElement * mpTScale_nvtx_20_30
MonitorElement * mpTScale_30_200_d
double overlapEnergyFraction(const std::vector< const reco::GenParticle * > &fObject, const std::vector< const reco::GenParticle * > &fReference) const
energy overlap
MonitorElement * mHFLong
MonitorElement * mpTScale_c_nvtx_10_15
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:434
MonitorElement * mDeltaPhi
MonitorElement * mpTScale_nvtx_15_20
MonitorElement * mEmEnergyInEB
std::string JetCorrectionService
MonitorElement * mpTResponse_30_200_d
Definition: CaloJetTester.h:97
MonitorElement * mGenPhi
CaloJetTester(const edm::ParameterSet &)
edm::InputTag mInputGenCollection
Definition: CaloJetTester.h:40