CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
PFJetTester.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: PFJetTester.cc,v 1.11.2.1 2010/06/16 19:25:43 srappocc Exp $
5 
11 
13 
16 
20 
21 //I don't know which of these I actually need yet
28 
30 
32 
33 #include "PFJetTester.h"
34 
35 #include <cmath>
36 
37 using namespace edm;
38 using namespace reco;
39 using namespace std;
40 
41 namespace {
42  bool is_B (const reco::Jet& fJet) {return fabs (fJet.eta()) < 1.3;}
43  bool is_E (const reco::Jet& fJet) {return fabs (fJet.eta()) >= 1.3 && fabs (fJet.eta()) < 3.;}
44  bool is_F (const reco::Jet& fJet) {return fabs (fJet.eta()) >= 3.;}
45 }
46 
48  : mInputCollection (iConfig.getParameter<edm::InputTag>( "src" )),
49  mInputGenCollection (iConfig.getParameter<edm::InputTag>( "srcGen" )),
50  mOutputFile (iConfig.getUntrackedParameter<std::string>("outputFile", "")),
51  mMatchGenPtThreshold (iConfig.getParameter<double>("genPtThreshold")),
52  mGenEnergyFractionThreshold (iConfig.getParameter<double>("genEnergyFractionThreshold")),
53  mReverseEnergyFractionThreshold (iConfig.getParameter<double>("reverseEnergyFractionThreshold")),
54  mRThreshold (iConfig.getParameter<double>("RThreshold")),
55  mTurnOnEverything (iConfig.getUntrackedParameter<std::string>("TurnOnEverything",""))
56 {
59  = mP = mP_80 = mP_3000 = mPt = mPt_80 = mPt_3000
63  // = mMaxEInEmTowers = mMaxEInHadTowers
64  // = mHadEnergyInHO = mHadEnergyInHB = mHadEnergyInHF = mHadEnergyInHE
65  // = mHadEnergyInHO_80 = mHadEnergyInHB_80 = mHadEnergyInHE_80
66  // = mHadEnergyInHO_3000 = mHadEnergyInHB_3000 = mHadEnergyInHE_3000
67  // = mEmEnergyInEB = mEmEnergyInEE = mEmEnergyInHF
68  // = mEmEnergyInEB_80 = mEmEnergyInEE_80
69  // = mEmEnergyInEB_3000 = mEmEnergyInEE_3000
70  // = mEnergyFractionHadronic = mEnergyFractionEm
71  // = mHFLong = mHFTotal = mHFLong_80 = mHFLong_3000 = mHFShort = mHFShort_80 = mHFShort_3000
72  // = mN90
84  // = mHadJetEnergyProfile = mEMJetEnergyProfile
96  = mEBEne = mEBTime = mEEEne = mEETime
98  = 0;
99 
100  DQMStore* dbe = &*edm::Service<DQMStore>();
101  if (dbe) {
102  dbe->setCurrentFolder("JetMET/RecoJetsV/PFJetTask_" + mInputCollection.label());
103  //
104  numberofevents = dbe->book1D("numberofevents","numberofevents", 3, 0 , 2);
105  //
106  mEta = dbe->book1D("Eta", "Eta", 100, -5, 5);
107  mEtaFineBin = dbe->book1D("EtaFineBin_Pt10", "EtaFineBin_Pt10", 500, -5, 5);
108  mEtaFineBin1p = dbe->book1D("EtaFineBin1p_Pt10", "EtaFineBin1p_Pt10", 100, 0, 1.3);
109  mEtaFineBin2p = dbe->book1D("EtaFineBin2p_Pt10", "EtaFineBin2p_Pt10", 100, 1.3, 3);
110  mEtaFineBin3p = dbe->book1D("EtaFineBin3p_Pt10", "EtaFineBin3p_Pt10", 100, 3, 5);
111  mEtaFineBin1m = dbe->book1D("EtaFineBin1m_Pt10", "EtaFineBin1m_Pt10", 100, -1.3, 0);
112  mEtaFineBin2m = dbe->book1D("EtaFineBin2m_Pt10", "EtaFineBin2m_Pt10", 100, -3, -1.3);
113  mEtaFineBin3m = dbe->book1D("EtaFineBin3m_Pt10", "EtaFineBin3m_Pt10", 100, -5, -3);
114  //
115  mPhi = dbe->book1D("Phi", "Phi", 70, -3.5, 3.5);
116  mPhiFineBin = dbe->book1D("PhiFineBin_Pt10", "PhiFineBin_Pt10", 350, -3.5, 3.5);
117  //
118  mE = dbe->book1D("E", "E", 100, 0, 500);
119  mE_80 = dbe->book1D("E_80", "E_80", 100, 0, 4500);
120  mE_3000 = dbe->book1D("E_3000", "E_3000", 100, 0, 6000);
121  //
122  mP = dbe->book1D("P", "P", 100, 0, 500);
123  mP_80 = dbe->book1D("P_80", "P_80", 100, 0, 4500);
124  mP_3000 = dbe->book1D("P_3000", "P_3000", 100, 0, 6000);
125  //
126  mPt = dbe->book1D("Pt", "Pt", 100, 0, 50);
127  mPt_80 = dbe->book1D("Pt_80", "Pt_80", 100, 0, 140);
128  mPt_3000 = dbe->book1D("Pt_3000", "Pt_3000", 100, 0, 4000);
129  //
130  mMass = dbe->book1D("Mass", "Mass", 100, 0, 25);
131  mMass_80 = dbe->book1D("Mass_80", "Mass_80", 100, 0, 120);
132  mMass_3000 = dbe->book1D("Mass_3000", "Mass_3000", 100, 0, 500);
133  //
134  mConstituents = dbe->book1D("Constituents", "# of Constituents", 100, 0, 100);
135  mConstituents_80 = dbe->book1D("Constituents_80", "# of Constituents_80", 40, 0, 40);
136  //
137  mEtaFirst = dbe->book1D("EtaFirst", "EtaFirst", 100, -5, 5);
138  mPhiFirst = dbe->book1D("PhiFirst", "PhiFirst", 70, -3.5, 3.5);
139  mEFirst = dbe->book1D("EFirst", "EFirst", 100, 0, 1000);
140  mEFirst_80 = dbe->book1D("EFirst_80", "EFirst_80", 100, 0, 180);
141  mEFirst_3000 = dbe->book1D("EFirst_3000", "EFirst_3000", 100, 0, 4000);
142  mPtFirst = dbe->book1D("PtFirst", "PtFirst", 100, 0, 50);
143  mPtFirst_80 = dbe->book1D("PtFirst_80", "PtFirst_80", 100, 0, 140);
144  mPtFirst_3000 = dbe->book1D("PtFirst_3000", "PtFirst_3000", 100, 0, 4000);
145  //
146  mMjj = dbe->book1D("Mjj", "Mjj", 100, 0, 2000);
147  mMjj_3000 = dbe->book1D("Mjj_3000", "Mjj_3000", 100, 0, 10000);
148  mDelEta = dbe->book1D("DelEta", "DelEta", 100, -.5, .5);
149  mDelPhi = dbe->book1D("DelPhi", "DelPhi", 100, -.5, .5);
150  mDelPt = dbe->book1D("DelPt", "DelPt", 100, -1, 1);
151  //
152  // mMaxEInEmTowers = dbe->book1D("MaxEInEmTowers", "MaxEInEmTowers", 100, 0, 100);
153  // mMaxEInHadTowers = dbe->book1D("MaxEInHadTowers", "MaxEInHadTowers", 100, 0, 100);
154  // mHadEnergyInHO = dbe->book1D("HadEnergyInHO", "HadEnergyInHO", 100, 0, 10);
155  // mHadEnergyInHB = dbe->book1D("HadEnergyInHB", "HadEnergyInHB", 100, 0, 50);
156  // mHadEnergyInHF = dbe->book1D("HadEnergyInHF", "HadEnergyInHF", 100, 0, 50);
157  // mHadEnergyInHE = dbe->book1D("HadEnergyInHE", "HadEnergyInHE", 100, 0, 100);
158  //
159  // mHadEnergyInHO_80 = dbe->book1D("HadEnergyInHO_80", "HadEnergyInHO_80", 100, 0, 50);
160  // mHadEnergyInHB_80 = dbe->book1D("HadEnergyInHB_80", "HadEnergyInHB_80", 100, 0, 200);
161  // mHadEnergyInHE_80 = dbe->book1D("HadEnergyInHE_80", "HadEnergyInHE_80", 100, 0, 1000);
162  // mHadEnergyInHO_3000 = dbe->book1D("HadEnergyInHO_3000", "HadEnergyInHO_3000", 100, 0, 500);
163  // mHadEnergyInHB_3000 = dbe->book1D("HadEnergyInHB_3000", "HadEnergyInHB_3000", 100, 0, 3000);
164  // mHadEnergyInHE_3000 = dbe->book1D("HadEnergyInHE_3000", "HadEnergyInHE_3000", 100, 0, 2000);
165  //
166  // mEmEnergyInEB = dbe->book1D("EmEnergyInEB", "EmEnergyInEB", 100, 0, 50);
167  // mEmEnergyInEE = dbe->book1D("EmEnergyInEE", "EmEnergyInEE", 100, 0, 50);
168  // mEmEnergyInHF = dbe->book1D("EmEnergyInHF", "EmEnergyInHF", 120, -20, 100);
169  // mEmEnergyInEB_80 = dbe->book1D("EmEnergyInEB_80", "EmEnergyInEB_80", 100, 0, 200);
170  // mEmEnergyInEE_80 = dbe->book1D("EmEnergyInEE_80", "EmEnergyInEE_80", 100, 0, 1000);
171  // mEmEnergyInEB_3000= dbe->book1D("EmEnergyInEB_3000", "EmEnergyInEB_3000", 100, 0, 3000);
172  // mEmEnergyInEE_3000= dbe->book1D("EmEnergyInEE_3000", "EmEnergyInEE_3000", 100, 0, 2000);
173  // mEnergyFractionHadronic = dbe->book1D("EnergyFractionHadronic", "EnergyFractionHadronic", 120, -0.1, 1.1);
174  // mEnergyFractionEm = dbe->book1D("EnergyFractionEm", "EnergyFractionEm", 120, -0.1, 1.1);
175  //
176  // mHFTotal = dbe->book1D("HFTotal", "HFTotal", 100, 0, 500);
177  // mHFTotal_80 = dbe->book1D("HFTotal_80", "HFTotal_80", 100, 0, 3000);
178  // mHFTotal_3000 = dbe->book1D("HFTotal_3000", "HFTotal_3000", 100, 0, 6000);
179  // mHFLong = dbe->book1D("HFLong", "HFLong", 100, 0, 500);
180  // mHFLong_80 = dbe->book1D("HFLong_80", "HFLong_80", 100, 0, 200);
181  // mHFLong_3000 = dbe->book1D("HFLong_3000", "HFLong_3000", 100, 0, 1500);
182  // mHFShort = dbe->book1D("HFShort", "HFShort", 100, 0, 500);
183  // mHFShort_80 = dbe->book1D("HFShort_80", "HFShort_80", 100, 0, 200);
184  // mHFShort_3000 = dbe->book1D("HFShort_3000", "HFShort_3000", 100, 0, 1500);
185  //
186  // mN90 = dbe->book1D("N90", "N90", 50, 0, 50);
187  //
188 
189  mChargedEmEnergy_80 = dbe->book1D("ChargedEmEnergy_80","ChargedEmEnergy_80",100,0.,500.);
190  mChargedHadronEnergy_80 = dbe->book1D("ChargedHadronEnergy_80","ChargedHadronEnergy_80",100,0.,500.);
191  mNeutralEmEnergy_80 = dbe->book1D("NeutralEmEnergy_80","NeutralEmEnergy_80",100,0.,500.);
192  mNeutralHadronEnergy_80 = dbe->book1D("NeutralHadronEnergy_80","NeutralHadronEnergy_80",100,0.,500.);
193 
194  mChargedEmEnergy_3000 = dbe->book1D("ChargedEmEnergy_3000","ChargedEmEnergy_3000",100,0.,2000.);
195  mChargedHadronEnergy_3000 = dbe->book1D("ChargedHadronEnergy_3000","ChargedHadronEnergy_3000",100,0.,2000.);
196  mNeutralEmEnergy_3000 = dbe->book1D("NeutralEmEnergy_3000","NeutralEmEnergy_3000",100,0.,2000.);
197  mNeutralHadronEnergy_3000 = dbe->book1D("NeutralHadronEnergy_3000","NeutralHadronEnergy_3000",100,0.,2000.);
198 
199  mChargedEmEnergyFraction = dbe->book1D("ChargedEmEnergyFraction","ChargedEmEnergyFraction",120,-0.1,1.1);
200  mChargedHadronEnergyFraction = dbe->book1D("ChargedHadronEnergyFraction","ChargedHadronEnergyFraction",120,-0.1,1.1);
201  mNeutralEmEnergyFraction = dbe->book1D("NeutralEmEnergyFraction","NeutralEmEnergyFraction",120,-0.1,1.1);
202  mNeutralHadronEnergyFraction = dbe->book1D("NeutralHadronEnergyFraction","NeutralHadronEnergyFraction",120,-0.1,1.1);
203 
204 
205  mGenEta = dbe->book1D("GenEta", "GenEta", 100, -5, 5);
206  mGenPhi = dbe->book1D("GenPhi", "GenPhi", 70, -3.5, 3.5);
207  mGenPt = dbe->book1D("GenPt", "GenPt", 100, 0, 50);
208  mGenPt_80 = dbe->book1D("GenPt_80", "GenPt_80", 100, 0, 140);
209  mGenPt_3000 = dbe->book1D("GenPt_3000", "GenPt_3000", 100, 0, 1500);
210  //
211  mGenEtaFirst = dbe->book1D("GenEtaFirst", "GenEtaFirst", 100, -5, 5);
212  mGenPhiFirst = dbe->book1D("GenPhiFirst", "GenPhiFirst", 70, -3.5, 3.5);
213  //
214  mCaloMEx = dbe->book1D("CaloMEx","CaloMEx",200,-150,150);
215  mCaloMEx_3000 = dbe->book1D("CaloMEx_3000","CaloMEx_3000",100,-500,500);
216  mCaloMEy = dbe->book1D("CaloMEy","CaloMEy",200,-150,150);
217  mCaloMEy_3000 = dbe->book1D("CaloMEy_3000","CaloMEy_3000",100,-500,500);
218  mCaloMETSig = dbe->book1D("CaloMETSig","CaloMETSig",100,0,15);
219  mCaloMETSig_3000 = dbe->book1D("CaloMETSig_3000","CaloMETSig_3000",100,0,50);
220  mCaloMET = dbe->book1D("CaloMET","CaloMET",100,0,150);
221  mCaloMET_3000 = dbe->book1D("CaloMET_3000","CaloMET_3000",100,0,1000);
222  mCaloMETPhi = dbe->book1D("CaloMETPhi","CaloMETPhi",70, -3.5, 3.5);
223  mCaloSumET = dbe->book1D("CaloSumET","CaloSumET",100,0,500);
224  mCaloSumET_3000 = dbe->book1D("CaloSumET_3000","CaloSumET_3000",100,3000,8000);
225  //
226  mHadTiming = dbe->book1D("HadTiming", "HadTiming", 75, -50, 100);
227  mEmTiming = dbe->book1D("EMTiming", "EMTiming", 75, -50, 100);
228  //
229  mNJetsEtaC = dbe->book1D("NJetsEtaC_Pt10", "NJetsEtaC_Pt10", 15, 0, 15);
230  mNJetsEtaF = dbe->book1D("NJetsEtaF_Pt10", "NJetsEtaF_Pt10", 15, 0, 15);
231  //
232  mNJets1 = dbe->bookProfile("NJets1", "NJets1", 100, 0, 200, 100, 0, 50, "s");
233  mNJets2 = dbe->bookProfile("NJets2", "NJets2", 100, 0, 4000, 100, 0, 50, "s");
234  //
235  mHBEne = dbe->book1D( "HBEne", "HBEne", 1000, -20, 100 );
236  mHBTime = dbe->book1D( "HBTime", "HBTime", 200, -200, 200 );
237  mHEEne = dbe->book1D( "HEEne", "HEEne", 1000, -20, 100 );
238  mHETime = dbe->book1D( "HETime", "HETime", 200, -200, 200 );
239  mHOEne = dbe->book1D( "HOEne", "HOEne", 1000, -20, 100 );
240  mHOTime = dbe->book1D( "HOTime", "HOTime", 200, -200, 200 );
241  mHFEne = dbe->book1D( "HFEne", "HFEne", 1000, -20, 100 );
242  mHFTime = dbe->book1D( "HFTime", "HFTime", 200, -200, 200 );
243  mEBEne = dbe->book1D( "EBEne", "EBEne", 1000, -20, 100 );
244  mEBTime = dbe->book1D( "EBTime", "EBTime", 200, -200, 200 );
245  mEEEne = dbe->book1D( "EEEne", "EEEne", 1000, -20, 100 );
246  mEETime = dbe->book1D( "EETime", "EETime", 200, -200, 200 );
247  //
248  mPthat_80 = dbe->book1D("Pthat_80", "Pthat_80", 100, 40.0, 160.0);
249  mPthat_3000 = dbe->book1D("Pthat_3000", "Pthat_3000", 100, 2500.0, 4000.0);
250  //
251  double log10PtMin = 0.5; //=3.1622766
252  double log10PtMax = 3.75; //=5623.41325
253  int log10PtBins = 26;
254  double etaMin = -5.;
255  double etaMax = 5.;
256  int etaBins = 50;
257 
258  double linPtMin = 5;
259  double linPtMax = 155;
260  int linPtBins = 15;
261 
262  int log10PtFineBins = 50;
263 
264  mAllGenJetsPt = dbe->book1D("GenJetLOGpT", "GenJet LOG(pT_gen)",
265  log10PtBins, log10PtMin, log10PtMax);
266  mMatchedGenJetsPt = dbe->book1D("MatchedGenJetLOGpT", "MatchedGenJet LOG(pT_gen)",
267  log10PtBins, log10PtMin, log10PtMax);
268  mAllGenJetsEta = dbe->book2D("GenJetEta", "GenJet Eta vs LOG(pT_gen)",
269  log10PtBins, log10PtMin, log10PtMax, etaBins, etaMin, etaMax);
270  mMatchedGenJetsEta = dbe->book2D("MatchedGenJetEta", "MatchedGenJet Eta vs LOG(pT_gen)",
271  log10PtBins, log10PtMin, log10PtMax, etaBins, etaMin, etaMax);
272  //
273  if (mTurnOnEverything.compare("yes")==0) {
274  mHadEnergyProfile = dbe->bookProfile2D("HadEnergyProfile", "HadEnergyProfile", 82, -41, 41, 73, 0, 73, 100, 0, 10000, "s");
275  mEmEnergyProfile = dbe->bookProfile2D("EmEnergyProfile", "EmEnergyProfile", 82, -41, 41, 73, 0, 73, 100, 0, 10000, "s");
276  }
277  mJetEnergyProfile = dbe->bookProfile2D("JetEnergyProfile", "JetEnergyProfile", 50, -5, 5, 36, -3.1415987, 3.1415987, 100, 0, 10000, "s");
278  // mHadJetEnergyProfile = dbe->bookProfile2D("HadJetEnergyProfile", "HadJetEnergyProfile", 50, -5, 5, 36, -3.1415987, 3.1415987, 100, 0, 10000, "s");
279  // mEMJetEnergyProfile = dbe->bookProfile2D("EMJetEnergyProfile", "EMJetEnergyProfile", 50, -5, 5, 36, -3.1415987, 3.1415987, 100, 0, 10000, "s");
280  //
281  if (mTurnOnEverything.compare("yes")==0) {
282  mGenJetMatchEnergyFraction = dbe->book3D("GenJetMatchEnergyFraction", "GenJetMatchEnergyFraction vs LOG(pT_gen) vs eta",
283  log10PtBins, log10PtMin, log10PtMax, etaBins, etaMin, etaMax, 101, 0, 1.01);
284  mReverseMatchEnergyFraction = dbe->book3D("ReverseMatchEnergyFraction", "ReverseMatchEnergyFraction vs LOG(pT_gen) vs eta",
285  log10PtBins, log10PtMin, log10PtMax, etaBins, etaMin, etaMax, 101, 0, 1.01);
286  mRMatch = dbe->book3D("RMatch", "delta(R)(Gen-Calo) vs LOG(pT_gen) vs eta",
287  log10PtBins, log10PtMin, log10PtMax, etaBins, etaMin, etaMax, 60, 0, 3);
288  mDeltaEta = dbe->book3D("DeltaEta", "DeltaEta vs LOG(pT_gen) vs eta",
289  log10PtBins, log10PtMin, log10PtMax, etaBins, etaMin, etaMax, 100, -1, 1);
290  mDeltaPhi = dbe->book3D("DeltaPhi", "DeltaPhi vs LOG(pT_gen) vs eta",
291  log10PtBins, log10PtMin, log10PtMax, etaBins, etaMin, etaMax, 100, -1, 1);
292  mEScale = dbe->book3D("EScale", "EnergyScale vs LOG(pT_gen) vs eta",
293  log10PtBins, log10PtMin, log10PtMax, etaBins, etaMin, etaMax, 100, 0, 2);
294  mlinEScale = dbe->book3D("linEScale", "EnergyScale vs LOG(pT_gen) vs eta",
295  linPtBins, linPtMin, linPtMax, etaBins, etaMin, etaMax, 100, 0, 2);
296  mDeltaE = dbe->book3D("DeltaE", "DeltaE vs LOG(pT_gen) vs eta",
297  log10PtBins, log10PtMin, log10PtMax, etaBins, etaMin, etaMax, 2000, -200, 200);
298  //
299  mEScale_pt10 = dbe->book3D("EScale_pt10", "EnergyScale vs LOG(pT_gen) vs eta",
300  log10PtBins, log10PtMin, log10PtMax, etaBins, etaMin, etaMax, 100, 0, 2);
301  mEScaleFineBin = dbe->book3D("EScaleFineBins", "EnergyScale vs LOG(pT_gen) vs eta",
302  log10PtFineBins, log10PtMin, log10PtMax, etaBins, etaMin, etaMax, 100, 0, 2);
303  }
304 
305  mpTScaleB_s = dbe->bookProfile("pTScaleB_s", "pTScale_s_0<|eta|<1.3",
306  log10PtBins, log10PtMin, log10PtMax, 0, 2, "s");
307  mpTScaleE_s = dbe->bookProfile("pTScaleE_s", "pTScale_s_1.3<|eta|<3.0",
308  log10PtBins, log10PtMin, log10PtMax, 0, 2, "s");
309  mpTScaleF_s = dbe->bookProfile("pTScaleF_s", "pTScale_s_3.0<|eta|<5.0",
310  log10PtBins, log10PtMin, log10PtMax, 0, 2, "s");
311  mpTScaleB_d = dbe->bookProfile("pTScaleB_d", "pTScale_d_0<|eta|<1.3",
312  log10PtBins, log10PtMin, log10PtMax, 0, 2, " ");
313  mpTScaleE_d = dbe->bookProfile("pTScaleE_d", "pTScale_d_1.3<|eta|<3.0",
314  log10PtBins, log10PtMin, log10PtMax, 0, 2, " ");
315  mpTScaleF_d = dbe->bookProfile("pTScaleF_d", "pTScale_d_3.0<|eta|<5.0",
316  log10PtBins, log10PtMin, log10PtMax, 0, 2, " ");
317 
318  mpTScale_60_120_s = dbe->bookProfile("pTScale_60_120_s", "pTScale_s_60<pT<120",
319  etaBins, etaMin, etaMax, 0., 2., "s");
320  mpTScale_200_300_s = dbe->bookProfile("pTScale_200_300_s", "pTScale_s_200<pT<300",
321  etaBins, etaMin, etaMax, 0., 2., "s");
322  mpTScale_600_900_s = dbe->bookProfile("pTScale_600_900_s", "pTScale_s_600<pT<900",
323  etaBins, etaMin, etaMax, 0., 2., "s");
324  mpTScale_2700_3500_s = dbe->bookProfile("pTScale_2700_3500_s", "pTScale_s_2700<pt<3500",
325  etaBins, etaMin, etaMax, 0., 2., "s");
326  mpTScale_60_120_d = dbe->bookProfile("pTScale_60_120_d", "pTScale_d_60<pT<120",
327  etaBins, etaMin, etaMax, 0., 2., " ");
328  mpTScale_200_300_d = dbe->bookProfile("pTScale_200_300_d", "pTScale_d_200<pT<300",
329  etaBins, etaMin, etaMax, 0., 2., " ");
330  mpTScale_600_900_d = dbe->bookProfile("pTScale_600_900_d", "pTScale_d_600<pT<900",
331  etaBins, etaMin, etaMax, 0., 2., " ");
332  mpTScale_2700_3500_d = dbe->bookProfile("pTScale_2700_3500_d", "pTScale_d_2700<pt<3500",
333  etaBins, etaMin, etaMax, 0., 2., " ");
334 
335  mpTScale1DB_60_120 = dbe->book1D("pTScale1DB_60_120", "pTScale_distribution_for_0<|eta|<1.3_60_120",
336  100, 0, 2);
337  mpTScale1DE_60_120 = dbe->book1D("pTScale1DE_60_120", "pTScale_distribution_for_1.3<|eta|<3.0_60_120",
338  100, 0, 2);
339  mpTScale1DF_60_120 = dbe->book1D("pTScale1DF_60_120", "pTScale_distribution_for_3.0<|eta|<5.0_60_120",
340  100, 0, 2);
341 
342  mpTScale1DB_200_300 = dbe->book1D("pTScale1DB_200_300", "pTScale_distribution_for_0<|eta|<1.3_200_300",
343  100, 0, 2);
344  mpTScale1DE_200_300 = dbe->book1D("pTScale1DE_200_300", "pTScale_distribution_for_1.3<|eta|<3.0_200_300",
345  100, 0, 2);
346  mpTScale1DF_200_300 = dbe->book1D("pTScale1DF_200_300", "pTScale_distribution_for_3.0<|eta|<5.0_200_300",
347  100, 0, 2);
348 
349  mpTScale1DB_600_900 = dbe->book1D("pTScale1DB_600_900", "pTScale_distribution_for_0<|eta|<1.3_600_900",
350  100, 0, 2);
351  mpTScale1DE_600_900 = dbe->book1D("pTScale1DE_600_900", "pTScale_distribution_for_1.3<|eta|<3.0_600_900",
352  100, 0, 2);
353  mpTScale1DF_600_900 = dbe->book1D("pTScale1DF_600_900", "pTScale_distribution_for_3.0<|eta|<5.0_600_900",
354  100, 0, 2);
355 
356  mpTScale1DB_2700_3500 = dbe->book1D("pTScale1DB_2700_3500", "pTScale_distribution_for_0<|eta|<1.3_2700_3500",
357  100, 0, 2);
358  mpTScale1DE_2700_3500 = dbe->book1D("pTScale1DE_2700_3500", "pTScale_distribution_for_1.3<|eta|<3.0_2700_3500",
359  100, 0, 2);
360  mpTScale1DF_2700_3500 = dbe->book1D("pTScale1DF_2700_3500", "pTScale_distribution_for_3.0<|eta|<5.0_2700_3500",
361  100, 0, 2);
362 
363  mpTScale1D_60_120 = dbe->book1D("pTScale1D_60_120", "pTScale_distribution_for_60<pT<120",
364  100, 0, 2);
365  mpTScale1D_200_300 = dbe->book1D("pTScale1D_200_300", "pTScale_distribution_for_200<pT<300",
366  100, 0, 2);
367  mpTScale1D_600_900 = dbe->book1D("pTScale1D_600_900", "pTScale_distribution_for_600<pT<900",
368  100, 0, 2);
369  mpTScale1D_2700_3500 = dbe->book1D("pTScale1D_2700_3500", "pTScale_distribution_for_2700<pt<3500",
370  100, 0, 2);
371 
372  }
373 
374  if (mOutputFile.empty ()) {
375  LogInfo("OutputInfo") << " PFJet histograms will NOT be saved";
376  }
377  else {
378  LogInfo("OutputInfo") << " PFJethistograms will be saved to file:" << mOutputFile;
379  }
380 }
381 
383 {
384 }
385 
387 }
388 
391 }
392 
393 
394 void PFJetTester::analyze(const edm::Event& mEvent, const edm::EventSetup& mSetup)
395 {
396  double countsfornumberofevents = 1;
397  numberofevents->Fill(countsfornumberofevents);
398  // *********************************
399  // *** Get pThat
400  // *********************************
401 
403  mEvent.getByLabel("generator", evt);
404  if (evt.isValid()) {
405  HepMC::GenEvent * myGenEvent = new HepMC::GenEvent(*(evt->GetEvent()));
406 
407  double pthat = myGenEvent->event_scale();
408 
409  mPthat_80->Fill(pthat);
410  mPthat_3000->Fill(pthat);
411 
412  delete myGenEvent;
413  }
414 
415  // ***********************************
416  // *** Get CaloMET
417  // ***********************************
418 
419  const CaloMET *calomet;
421  mEvent.getByLabel("met", calo);
422  if (!calo.isValid()) {
423  edm::LogInfo("OutputInfo") << " failed to retrieve data required by MET Task";
424  edm::LogInfo("OutputInfo") << " MET Task cannot continue...!";
425  } else {
426  const CaloMETCollection *calometcol = calo.product();
427  calomet = &(calometcol->front());
428 
429  double caloSumET = calomet->sumEt();
430  double caloMETSig = calomet->mEtSig();
431  double caloMET = calomet->pt();
432  double caloMEx = calomet->px();
433  double caloMEy = calomet->py();
434  double caloMETPhi = calomet->phi();
435 
436  mCaloMEx->Fill(caloMEx);
437  mCaloMEx_3000->Fill(caloMEx);
438  mCaloMEy->Fill(caloMEy);
439  mCaloMEy_3000->Fill(caloMEy);
440  mCaloMET->Fill(caloMET);
441  mCaloMET_3000->Fill(caloMET);
442  mCaloMETPhi->Fill(caloMETPhi);
443  mCaloSumET->Fill(caloSumET);
444  mCaloSumET_3000->Fill(caloSumET);
445  mCaloMETSig->Fill(caloMETSig);
446  mCaloMETSig_3000->Fill(caloMETSig);
447  }
448 
449  // ***********************************
450  // *** Get the CaloTower collection
451  // ***********************************
453  mEvent.getByLabel( "towerMaker", caloTowers );
454  if (caloTowers.isValid()) {
455  for( CaloTowerCollection::const_iterator cal = caloTowers->begin(); cal != caloTowers->end(); ++ cal ){
456 
457  //To compensate for the index
458  if (mTurnOnEverything.compare("yes")==0) {
459  if (cal->ieta() >> 0 ){mHadEnergyProfile->Fill (cal->ieta()-1, cal->iphi(), cal->hadEnergy());
460  mEmEnergyProfile->Fill (cal->ieta()-1, cal->iphi(), cal->emEnergy());}
461  mHadEnergyProfile->Fill (cal->ieta(), cal->iphi(), cal->hadEnergy());
462  mEmEnergyProfile->Fill (cal->ieta(), cal->iphi(), cal->emEnergy());
463  }
464 
465  mHadTiming->Fill (cal->hcalTime());
466  mEmTiming->Fill (cal->ecalTime());
467  }
468  }
469 
470  // ***********************************
471  // *** Get the RecHits collection
472  // ***********************************
473  try {
474  std::vector<edm::Handle<HBHERecHitCollection> > colls;
475  mEvent.getManyByType(colls);
476  std::vector<edm::Handle<HBHERecHitCollection> >::iterator i;
477  for (i=colls.begin(); i!=colls.end(); i++) {
478  for (HBHERecHitCollection::const_iterator j=(*i)->begin(); j!=(*i)->end(); j++) {
479  // std::cout << *j << std::endl;
480  if (j->id().subdet() == HcalBarrel) {
481  mHBEne->Fill(j->energy());
482  mHBTime->Fill(j->time());
483  }
484  if (j->id().subdet() == HcalEndcap) {
485  mHEEne->Fill(j->energy());
486  mHETime->Fill(j->time());
487  }
488 
489  }
490  }
491  } catch (...) {
492  edm::LogInfo("OutputInfo") << " No HB/HE RecHits.";
493  }
494 
495  try {
496  std::vector<edm::Handle<HFRecHitCollection> > colls;
497  mEvent.getManyByType(colls);
498  std::vector<edm::Handle<HFRecHitCollection> >::iterator i;
499  for (i=colls.begin(); i!=colls.end(); i++) {
500  for (HFRecHitCollection::const_iterator j=(*i)->begin(); j!=(*i)->end(); j++) {
501  // std::cout << *j << std::endl;
502  if (j->id().subdet() == HcalForward) {
503  mHFEne->Fill(j->energy());
504  mHFTime->Fill(j->time());
505  }
506  }
507  }
508  } catch (...) {
509  edm::LogInfo("OutputInfo") << " No HF RecHits.";
510  }
511 
512  try {
513  std::vector<edm::Handle<HORecHitCollection> > colls;
514  mEvent.getManyByType(colls);
515  std::vector<edm::Handle<HORecHitCollection> >::iterator i;
516  for (i=colls.begin(); i!=colls.end(); i++) {
517  for (HORecHitCollection::const_iterator j=(*i)->begin(); j!=(*i)->end(); j++) {
518  if (j->id().subdet() == HcalOuter) {
519  mHOEne->Fill(j->energy());
520  mHOTime->Fill(j->time());
521  }
522  }
523  }
524  } catch (...) {
525  edm::LogInfo("OutputInfo") << " No HO RecHits.";
526  }
527  try {
528  std::vector<edm::Handle<EBRecHitCollection> > colls;
529  mEvent.getManyByType(colls);
530  std::vector<edm::Handle<EBRecHitCollection> >::iterator i;
531  for (i=colls.begin(); i!=colls.end(); i++) {
532  for (EBRecHitCollection::const_iterator j=(*i)->begin(); j!=(*i)->end(); j++) {
533  // if (j->id() == EcalBarrel) {
534  mEBEne->Fill(j->energy());
535  mEBTime->Fill(j->time());
536  // }
537  // std::cout << *j << std::endl;
538  // std::cout << j->id() << std::endl;
539  }
540  }
541  } catch (...) {
542  edm::LogInfo("OutputInfo") << " No EB RecHits.";
543  }
544 
545  try {
546  std::vector<edm::Handle<EERecHitCollection> > colls;
547  mEvent.getManyByType(colls);
548  std::vector<edm::Handle<EERecHitCollection> >::iterator i;
549  for (i=colls.begin(); i!=colls.end(); i++) {
550  for (EERecHitCollection::const_iterator j=(*i)->begin(); j!=(*i)->end(); j++) {
551  // if (j->id().subdet() == EcalEndcap) {
552  mEEEne->Fill(j->energy());
553  mEETime->Fill(j->time());
554  // }
555  // std::cout << *j << std::endl;
556  }
557  }
558  } catch (...) {
559  edm::LogInfo("OutputInfo") << " No EE RecHits.";
560  }
561 
562 
563  //***********************************
564  //*** Get the Jet collection
565  //***********************************
566  math::XYZTLorentzVector p4tmp[2];
568  mEvent.getByLabel(mInputCollection, pfJets);
569  if (!pfJets.isValid()) return;
570  PFJetCollection::const_iterator jet = pfJets->begin ();
571  int jetIndex = 0;
572  int nJet = 0;
573  int nJetF = 0;
574  int nJetC = 0;
575  for (; jet != pfJets->end (); jet++, jetIndex++) {
576  if (mEta) mEta->Fill (jet->eta());
577 
578  if (jet->pt() > 10.) {
579  if (fabs(jet->eta()) > 1.3)
580  nJetF++;
581  else
582  nJetC++;
583  }
584  if (jet->pt() > 10.) {
585  if (mEtaFineBin) mEtaFineBin->Fill (jet->eta());
586  if (mEtaFineBin1p) mEtaFineBin1p->Fill (jet->eta());
587  if (mEtaFineBin2p) mEtaFineBin2p->Fill (jet->eta());
588  if (mEtaFineBin3p) mEtaFineBin3p->Fill (jet->eta());
589  if (mEtaFineBin1m) mEtaFineBin1m->Fill (jet->eta());
590  if (mEtaFineBin2m) mEtaFineBin2m->Fill (jet->eta());
591  if (mEtaFineBin3m) mEtaFineBin3m->Fill (jet->eta());
592  if (mPhiFineBin) mPhiFineBin->Fill (jet->phi());
593  }
594  if (mPhi) mPhi->Fill (jet->phi());
595  if (mE) mE->Fill (jet->energy());
596  if (mE_80) mE_80->Fill (jet->energy());
597  if (mE_3000) mE_3000->Fill (jet->energy());
598  if (mP) mP->Fill (jet->p());
599  if (mP_80) mP_80->Fill (jet->p());
600  if (mP_3000) mP_3000->Fill (jet->p());
601  if (mPt) mPt->Fill (jet->pt());
602  if (mPt_80) mPt_80->Fill (jet->pt());
603  if (mPt_3000) mPt_3000->Fill (jet->pt());
604  if (mMass) mMass->Fill (jet->mass());
605  if (mMass_80) mMass_80->Fill (jet->mass());
606  if (mMass_3000) mMass_3000->Fill (jet->mass());
607  if (mConstituents) mConstituents->Fill (jet->nConstituents());
608  if (mConstituents_80) mConstituents_80->Fill (jet->nConstituents());
609  if (jet == pfJets->begin ()) { // first jet
610  if (mEtaFirst) mEtaFirst->Fill (jet->eta());
611  if (mPhiFirst) mPhiFirst->Fill (jet->phi());
612  if (mEFirst) mEFirst->Fill (jet->energy());
613  if (mEFirst_80) mEFirst_80->Fill (jet->energy());
614  if (mEFirst_3000) mEFirst_3000->Fill (jet->energy());
615  if (mPtFirst) mPtFirst->Fill (jet->pt());
616  if (mPtFirst_80) mPtFirst_80->Fill (jet->pt());
617  if (mPtFirst_3000) mPtFirst_3000->Fill (jet->pt());
618  }
619  if (jetIndex == 0) {
620  nJet++;
621  p4tmp[0] = jet->p4();
622  }
623  if (jetIndex == 1) {
624  nJet++;
625  p4tmp[1] = jet->p4();
626  }
627 
628  // if (mMaxEInEmTowers) mMaxEInEmTowers->Fill (jet->maxEInEmTowers());
629  // if (mMaxEInHadTowers) mMaxEInHadTowers->Fill (jet->maxEInHadTowers());
630  // if (mHadEnergyInHO) mHadEnergyInHO->Fill (jet->hadEnergyInHO());
631  // if (mHadEnergyInHO_80) mHadEnergyInHO_80->Fill (jet->hadEnergyInHO());
632  // if (mHadEnergyInHO_3000) mHadEnergyInHO_3000->Fill (jet->hadEnergyInHO());
633  // if (mHadEnergyInHB) mHadEnergyInHB->Fill (jet->hadEnergyInHB());
634  // if (mHadEnergyInHB_80) mHadEnergyInHB_80->Fill (jet->hadEnergyInHB());
635  // if (mHadEnergyInHB_3000) mHadEnergyInHB_3000->Fill (jet->hadEnergyInHB());
636  // if (mHadEnergyInHF) mHadEnergyInHF->Fill (jet->hadEnergyInHF());
637  // if (mHadEnergyInHE) mHadEnergyInHE->Fill (jet->hadEnergyInHE());
638  // if (mHadEnergyInHE_80) mHadEnergyInHE_80->Fill (jet->hadEnergyInHE());
639  // if (mHadEnergyInHE_3000) mHadEnergyInHE_3000->Fill (jet->hadEnergyInHE());
640  // if (mEmEnergyInEB) mEmEnergyInEB->Fill (jet->emEnergyInEB());
641  // if (mEmEnergyInEB_80) mEmEnergyInEB_80->Fill (jet->emEnergyInEB());
642  // if (mEmEnergyInEB_3000) mEmEnergyInEB_3000->Fill (jet->emEnergyInEB());
643  // if (mEmEnergyInEE) mEmEnergyInEE->Fill (jet->emEnergyInEE());
644  // if (mEmEnergyInEE_80) mEmEnergyInEE_80->Fill (jet->emEnergyInEE());
645  // if (mEmEnergyInEE_3000) mEmEnergyInEE_3000->Fill (jet->emEnergyInEE());
646  // if (mEmEnergyInHF) mEmEnergyInHF->Fill (jet->emEnergyInHF());
647  // if (mEnergyFractionHadronic) mEnergyFractionHadronic->Fill (jet->energyFractionHadronic());
648  // if (mEnergyFractionEm) mEnergyFractionEm->Fill (jet->emEnergyFraction());
649  //
650  // if (mHFTotal) mHFTotal->Fill (jet->hadEnergyInHF()+jet->emEnergyInHF());
651  // if (mHFTotal_80) mHFTotal_80->Fill (jet->hadEnergyInHF()+jet->emEnergyInHF());
652  // if (mHFTotal_3000) mHFTotal_3000->Fill (jet->hadEnergyInHF()+jet->emEnergyInHF());
653  // if (mHFLong) mHFLong->Fill (jet->hadEnergyInHF()*0.5+jet->emEnergyInHF());
654  // if (mHFLong_80) mHFLong_80->Fill (jet->hadEnergyInHF()*0.5+jet->emEnergyInHF());
655  // if (mHFLong_3000) mHFLong_3000->Fill (jet->hadEnergyInHF()*0.5+jet->emEnergyInHF());
656  // if (mHFShort) mHFShort->Fill (jet->hadEnergyInHF()*0.5);
657  // if (mHFShort_80) mHFShort_80->Fill (jet->hadEnergyInHF()*0.5);
658  // if (mHFShort_3000) mHFShort_3000->Fill (jet->hadEnergyInHF()*0.5);
659 
660  if (mChargedEmEnergy_80) mChargedEmEnergy_80->Fill (jet->chargedEmEnergy());
661  if (mChargedHadronEnergy_80) mChargedHadronEnergy_80->Fill (jet->chargedHadronEnergy());
662  if (mNeutralEmEnergy_80) mNeutralEmEnergy_80->Fill (jet->neutralEmEnergy());
663  if (mNeutralHadronEnergy_80) mNeutralHadronEnergy_80->Fill (jet->neutralHadronEnergy());
664 
665  if (mChargedEmEnergy_3000) mChargedEmEnergy_3000->Fill (jet->chargedEmEnergy());
666  if (mChargedHadronEnergy_3000) mChargedHadronEnergy_3000->Fill (jet->chargedHadronEnergy());
667  if (mNeutralEmEnergy_3000) mNeutralEmEnergy_3000->Fill (jet->neutralEmEnergy());
668  if (mNeutralHadronEnergy_3000) mNeutralHadronEnergy_3000->Fill (jet->neutralHadronEnergy());
669 
670  if (mChargedEmEnergyFraction) mChargedEmEnergyFraction->Fill (jet->chargedEmEnergyFraction());
671  if (mChargedHadronEnergyFraction) mChargedHadronEnergyFraction->Fill (jet->chargedHadronEnergyFraction());
672  if (mNeutralEmEnergyFraction) mNeutralEmEnergyFraction->Fill (jet->neutralEmEnergyFraction());
673  if (mNeutralHadronEnergyFraction) mNeutralHadronEnergyFraction->Fill (jet->neutralHadronEnergyFraction());
674 
675  // if (mN90) mN90->Fill (jet->n90());
676  mJetEnergyProfile->Fill (jet->eta(), jet->phi(), jet->energy());
677  // mHadJetEnergyProfile->Fill (jet->eta(), jet->phi(), jet->hadEnergyInHO()+jet->hadEnergyInHB()+jet->hadEnergyInHF()+jet->hadEnergyInHE());
678  // mEMJetEnergyProfile->Fill (jet->eta(), jet->phi(), jet->emEnergyInEB()+jet->emEnergyInEE()+jet->emEnergyInHF());
679  }
680 
681 
682 
683 
684  if (mNJetsEtaC) mNJetsEtaC->Fill( nJetC );
685  if (mNJetsEtaF) mNJetsEtaF->Fill( nJetF );
686 
687  if (nJet == 2) {
688  if (mMjj) mMjj->Fill( (p4tmp[0]+p4tmp[1]).mass() );
689  if (mMjj_3000) mMjj_3000->Fill( (p4tmp[0]+p4tmp[1]).mass() );
690  }
691 
692  // Count Jets above Pt cut
693  for (int istep = 0; istep < 100; ++istep) {
694  int njet = 0;
695  float ptStep = (istep * (200./100.));
696 
697  for ( PFJetCollection::const_iterator cal = pfJets->begin(); cal != pfJets->end(); ++ cal ) {
698  if ( cal->pt() > ptStep ) njet++;
699  }
700  mNJets1->Fill( ptStep, njet );
701  }
702 
703  for (int istep = 0; istep < 100; ++istep) {
704  int njet = 0;
705  float ptStep = (istep * (4000./100.));
706  for ( PFJetCollection::const_iterator cal = pfJets->begin(); cal != pfJets->end(); ++ cal ) {
707  if ( cal->pt() > ptStep ) njet++;
708  }
709  mNJets2->Fill( ptStep, njet );
710  }
711 
712  // Gen jet analysis
713  Handle<GenJetCollection> genJets;
714  mEvent.getByLabel(mInputGenCollection, genJets);
715  if (!genJets.isValid()) return;
716  GenJetCollection::const_iterator gjet = genJets->begin ();
717  int gjetIndex = 0;
718  for (; gjet != genJets->end (); gjet++, gjetIndex++) {
719  if (mGenEta) mGenEta->Fill (gjet->eta());
720  if (mGenPhi) mGenPhi->Fill (gjet->phi());
721  if (mGenPt) mGenPt->Fill (gjet->pt());
722  if (mGenPt_80) mGenPt_80->Fill (gjet->pt());
723  if (mGenPt_3000) mGenPt_3000->Fill (gjet->pt());
724  if (gjet == genJets->begin ()) { // first jet
725  if (mGenEtaFirst) mGenEtaFirst->Fill (gjet->eta());
726  if (mGenPhiFirst) mGenPhiFirst->Fill (gjet->phi());
727  }
728  }
729 
730 
731  // now match PFJets to GenJets
732  JetMatchingTools jetMatching (mEvent);
733  if (!(mInputGenCollection.label().empty())) {
734  // Handle<GenJetCollection> genJets;
735  // mEvent.getByLabel(mInputGenCollection, genJets);
736 
737  std::vector <std::vector <const reco::GenParticle*> > genJetConstituents (genJets->size());
738  std::vector <std::vector <const reco::GenParticle*> > pfJetConstituents (pfJets->size());
739  /*
740  if (mRThreshold > 0) {
741  }
742  else {
743  for (unsigned iGenJet = 0; iGenJet < genJets->size(); ++iGenJet) {
744  genJetConstituents [iGenJet] = jetMatching.getGenParticles ((*genJets) [iGenJet]);
745  }
746 
747  for (unsigned iPFJet = 0; iPFJet < pfJets->size(); ++iPFJet) {
748  pfJetConstituents [iPFJet] = jetMatching.getGenParticles ((*pfJets) [iPFJet], false);
749  }
750  }
751  */
752 
753  for (unsigned iGenJet = 0; iGenJet < genJets->size(); ++iGenJet) { //****************************************************************
754  //for (unsigned iGenJet = 0; iGenJet < 1; ++iGenJet) { // only FIRST Jet !!!!
755  const GenJet& genJet = (*genJets) [iGenJet];
756  double genJetPt = genJet.pt();
757 
758  //std::cout << iGenJet <<". Genjet: pT = " << genJetPt << "GeV" << std::endl; // *****************************************************
759 
760  if (fabs(genJet.eta()) > 5.) continue; // out of detector
761  if (genJetPt < mMatchGenPtThreshold) continue; // no low momentum
762  double logPtGen = log10 (genJetPt);
763  mAllGenJetsPt->Fill (logPtGen);
764  mAllGenJetsEta->Fill (logPtGen, genJet.eta());
765  if (pfJets->size() <= 0) continue; // no PFJets - nothing to match
766  if (mRThreshold > 0) {
767  unsigned iPFJetBest = 0;
768  double deltaRBest = 999.;
769  for (unsigned iPFJet = 0; iPFJet < pfJets->size(); ++iPFJet) {
770  double dR = deltaR (genJet.eta(), genJet.phi(), (*pfJets) [iPFJet].eta(), (*pfJets) [iPFJet].phi());
771  if (deltaRBest < mRThreshold && dR < mRThreshold && genJet.pt() > 5.) {
772  /*
773  std::cout << "Yet another matched jet for GenJet pt=" << genJet.pt()
774  << " previous PFJet pt/dr: " << (*pfJets) [iPFJetBest].pt() << '/' << deltaRBest
775  << " new PFJet pt/dr: " << (*pfJets) [iPFJet].pt() << '/' << dR
776  << std::endl;
777  */
778  }
779  if (dR < deltaRBest) {
780  iPFJetBest = iPFJet;
781  deltaRBest = dR;
782  }
783  }
784  if (mTurnOnEverything.compare("yes")==0) {
785  mRMatch->Fill (logPtGen, genJet.eta(), deltaRBest);
786  }
787  if (deltaRBest < mRThreshold) { // Matched
788  fillMatchHists (genJet, (*pfJets) [iPFJetBest]);
789  }
790  }
791  /*
792  else {
793  unsigned iPFJetBest = 0;
794  double energyFractionBest = 0.;
795  for (unsigned iPFJet = 0; iPFJet < pfJets->size(); ++iPFJet) {
796  double energyFraction = jetMatching.overlapEnergyFraction (genJetConstituents [iGenJet],
797  pfJetConstituents [iPFJet]);
798  if (energyFraction > energyFractionBest) {
799  iPFJetBest = iPFJet;
800  energyFractionBest = energyFraction;
801  }
802  }
803  if (mTurnOnEverything.compare("yes")==0) {
804  mGenJetMatchEnergyFraction->Fill (logPtGen, genJet.eta(), energyFractionBest);
805  }
806  if (energyFractionBest > mGenEnergyFractionThreshold) { // good enough
807  double reverseEnergyFraction = jetMatching.overlapEnergyFraction (pfJetConstituents [iPFJetBest],
808  genJetConstituents [iGenJet]);
809  if (mTurnOnEverything.compare("yes")==0) {
810  mReverseMatchEnergyFraction->Fill (logPtGen, genJet.eta(), reverseEnergyFraction);
811  }
812  if (reverseEnergyFraction > mReverseEnergyFractionThreshold) { // Matched
813  fillMatchHists (genJet, (*pfJets) [iPFJetBest]);
814  }
815  }
816  }
817  */
818  }
819  }
820 }
821 
822 
823 void PFJetTester::fillMatchHists (const reco::GenJet& fGenJet, const reco::PFJet& fPFJet) {
824  double logPtGen = log10 (fGenJet.pt());
825  double PtGen = fGenJet.pt();
826  double PtPF = fPFJet.pt();
827  mMatchedGenJetsPt->Fill (logPtGen);
828  mMatchedGenJetsEta->Fill (logPtGen, fGenJet.eta());
829 
830  double PtThreshold = 10.;
831 
832  if (mTurnOnEverything.compare("yes")==0) {
833  mDeltaEta->Fill (logPtGen, fGenJet.eta(), fPFJet.eta()-fGenJet.eta());
834  mDeltaPhi->Fill (logPtGen, fGenJet.eta(), fPFJet.phi()-fGenJet.phi());
835  mEScale->Fill (logPtGen, fGenJet.eta(), fPFJet.energy()/fGenJet.energy());
836  mlinEScale->Fill (fGenJet.pt(), fGenJet.eta(), fPFJet.energy()/fGenJet.energy());
837  mDeltaE->Fill (logPtGen, fGenJet.eta(), fPFJet.energy()-fGenJet.energy());
838 
839  mEScaleFineBin->Fill (logPtGen, fGenJet.eta(), fPFJet.energy()/fGenJet.energy());
840 
841  if (fGenJet.pt()>PtThreshold) {
842  mEScale_pt10->Fill (logPtGen, fGenJet.eta(), fPFJet.energy()/fGenJet.energy());
843 
844  }
845 
846  }
847  if (fPFJet.pt() > PtThreshold) {
848  mDelEta->Fill (fGenJet.eta()-fPFJet.eta());
849  mDelPhi->Fill (fGenJet.phi()-fPFJet.phi());
850  mDelPt->Fill ((fGenJet.pt()-fPFJet.pt())/fGenJet.pt());
851  }
852 
853  if (fabs(fGenJet.eta())<1.3) {
854 
855  mpTScaleB_s->Fill (log10(PtGen), PtPF/PtGen);
856  mpTScaleB_d->Fill (log10(PtGen), PtPF/PtGen);
857  if (PtGen>60.0 && PtGen<120.0) {
858  mpTScale1DB_60_120->Fill (fPFJet.pt()/fGenJet.pt());
859  }
860  if (PtGen>200.0 && PtGen<300.0) {
861  mpTScale1DB_200_300->Fill (fPFJet.pt()/fGenJet.pt());
862  }
863  if (PtGen>600.0 && PtGen<900.0) {
864  mpTScale1DB_600_900->Fill (fPFJet.pt()/fGenJet.pt());
865  }
866  if (PtGen>2700.0 && PtGen<3500.0) {
867  mpTScale1DB_2700_3500->Fill (fPFJet.pt()/fGenJet.pt());
868  }
869  }
870 
871  if (fabs(fGenJet.eta())>1.3 && fabs(fGenJet.eta())<3.0) {
872 
873  mpTScaleE_s->Fill (log10(PtGen), PtPF/PtGen);
874  mpTScaleE_d->Fill (log10(PtGen), PtPF/PtGen);
875  if (PtGen>60.0 && PtGen<120.0) {
876  mpTScale1DE_60_120->Fill (fPFJet.pt()/fGenJet.pt());
877  }
878  if (PtGen>200.0 && PtGen<300.0) {
879  mpTScale1DE_200_300->Fill (fPFJet.pt()/fGenJet.pt());
880  }
881  if (PtGen>600.0 && PtGen<900.0) {
882  mpTScale1DE_600_900->Fill (fPFJet.pt()/fGenJet.pt());
883  }
884  if (PtGen>2700.0 && PtGen<3500.0) {
885  mpTScale1DE_2700_3500->Fill (fPFJet.pt()/fGenJet.pt());
886  }
887  }
888 
889  if (fabs(fGenJet.eta())>3.0 && fabs(fGenJet.eta())<5.0) {
890 
891  mpTScaleF_s->Fill (log10(PtGen), PtPF/PtGen);
892  mpTScaleF_d->Fill (log10(PtGen), PtPF/PtGen);
893  if (PtGen>60.0 && PtGen<120.0) {
894  mpTScale1DF_60_120->Fill (fPFJet.pt()/fGenJet.pt());
895  }
896  if (PtGen>200.0 && PtGen<300.0) {
897  mpTScale1DF_200_300->Fill (fPFJet.pt()/fGenJet.pt());
898  }
899  if (PtGen>600.0 && PtGen<900.0) {
900  mpTScale1DF_600_900->Fill (fPFJet.pt()/fGenJet.pt());
901  }
902  if (PtGen>2700.0 && PtGen<3500.0) {
903  mpTScale1DF_2700_3500->Fill (fPFJet.pt()/fGenJet.pt());
904  }
905  }
906 
907  if (fGenJet.pt()>60.0 && fGenJet.pt()<120.0) {
908  mpTScale_60_120_s->Fill (fGenJet.eta(),fPFJet.pt()/fGenJet.pt());
909  mpTScale_60_120_d->Fill (fGenJet.eta(),fPFJet.pt()/fGenJet.pt());
910  mpTScale1D_60_120->Fill (fPFJet.pt()/fGenJet.pt());
911  }
912 
913  if (fGenJet.pt()>200.0 && fGenJet.pt()<300.0) {
914  mpTScale_200_300_s->Fill (fGenJet.eta(),fPFJet.pt()/fGenJet.pt());
915  mpTScale_200_300_d->Fill (fGenJet.eta(),fPFJet.pt()/fGenJet.pt());
916  mpTScale1D_200_300->Fill (fPFJet.pt()/fGenJet.pt());
917  }
918 
919  if (fGenJet.pt()>600.0 && fGenJet.pt()<900.0) {
920  mpTScale_600_900_s->Fill (fGenJet.eta(),fPFJet.pt()/fGenJet.pt());
921  mpTScale_600_900_d->Fill (fGenJet.eta(),fPFJet.pt()/fGenJet.pt());
922  mpTScale1D_600_900->Fill (fPFJet.pt()/fGenJet.pt());
923  }
924 
925  if (fGenJet.pt()>2700.0 && fGenJet.pt()<3500.0) {
926  mpTScale_2700_3500_s->Fill (fGenJet.eta(),fPFJet.pt()/fGenJet.pt());
927  mpTScale_2700_3500_d->Fill (fGenJet.eta(),fPFJet.pt()/fGenJet.pt());
928  mpTScale1D_2700_3500->Fill (fPFJet.pt()/fGenJet.pt());
929  }
930 
931 
932 
933 }
MonitorElement * mpTScale_600_900_s
Definition: PFJetTester.h:184
MonitorElement * mPhiFineBin
Definition: PFJetTester.h:56
virtual void endJob()
Definition: PFJetTester.cc:389
MonitorElement * mCaloMEx_3000
Definition: PFJetTester.h:231
MonitorElement * mChargedHadronEnergy_80
Definition: PFJetTester.h:97
void getManyByType(std::vector< Handle< PROD > > &results) const
Definition: Event.h:407
MonitorElement * mDeltaEta
Definition: PFJetTester.h:166
MonitorElement * mGenEta
Definition: PFJetTester.h:148
MonitorElement * mpTScale1DE_2700_3500
Definition: PFJetTester.h:202
MonitorElement * mNJets1
Definition: PFJetTester.h:88
int i
Definition: DBlmapReader.cc:9
MonitorElement * mNeutralEmEnergyFraction
Definition: PFJetTester.h:108
MonitorElement * mEtaFineBin2m
Definition: PFJetTester.h:53
MonitorElement * mpTScaleB_d
Definition: PFJetTester.h:178
MonitorElement * mHETime
Definition: PFJetTester.h:246
MonitorElement * mChargedEmEnergy_80
Definition: PFJetTester.h:96
MonitorElement * mGenPt
Definition: PFJetTester.h:150
MonitorElement * mGenPt_3000
Definition: PFJetTester.h:152
MonitorElement * mpTScale1DB_2700_3500
Definition: PFJetTester.h:201
MonitorElement * mEETime
Definition: PFJetTester.h:254
edm::InputTag mInputCollection
Definition: PFJetTester.h:35
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:514
MonitorElement * mNeutralEmEnergy_80
Definition: PFJetTester.h:98
MonitorElement * mpTScale1D_60_120
Definition: PFJetTester.h:204
MonitorElement * mEFirst
Definition: PFJetTester.h:78
MonitorElement * mEBEne
Definition: PFJetTester.h:251
MonitorElement * book3D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, int nchZ, double lowZ, double highZ)
Book 3D histogram.
Definition: DQMStore.cc:776
MonitorElement * mpTScale_2700_3500_s
Definition: PFJetTester.h:185
MonitorElement * mP
Definition: PFJetTester.h:60
Base class for all types of Jets.
Definition: Jet.h:21
MonitorElement * mChargedEmEnergy_3000
Definition: PFJetTester.h:101
PFJetTester(const edm::ParameterSet &)
Definition: PFJetTester.cc:47
MonitorElement * mNJetsEtaC
Definition: PFJetTester.h:85
MonitorElement * numberofevents
Definition: PFJetTester.h:44
MonitorElement * mlinEScale
Definition: PFJetTester.h:169
MonitorElement * mHOEne
Definition: PFJetTester.h:247
MonitorElement * mpTScaleE_d
Definition: PFJetTester.h:179
std::vector< CaloTower >::const_iterator const_iterator
MonitorElement * mDeltaE
Definition: PFJetTester.h:170
MonitorElement * mConstituents
Definition: PFJetTester.h:69
MonitorElement * mNeutralHadronEnergy_80
Definition: PFJetTester.h:99
MonitorElement * mChargedHadronEnergyFraction
Definition: PFJetTester.h:107
MonitorElement * mGenJetMatchEnergyFraction
Definition: PFJetTester.h:163
MonitorElement * mpTScaleF_s
Definition: PFJetTester.h:177
MonitorElement * mPthat_3000
Definition: PFJetTester.h:145
MonitorElement * mpTScale_60_120_d
Definition: PFJetTester.h:187
MonitorElement * mMjj_3000
Definition: PFJetTester.h:93
MonitorElement * mEBTime
Definition: PFJetTester.h:252
int njet
Definition: HydjetWrapper.h:91
MonitorElement * mPtFirst_80
Definition: PFJetTester.h:82
Jets made from PFObjects.
Definition: PFJet.h:22
virtual double eta() const
momentum pseudorapidity
MonitorElement * mNJets2
Definition: PFJetTester.h:89
MonitorElement * mEEEne
Definition: PFJetTester.h:253
MonitorElement * mPt_80
Definition: PFJetTester.h:64
MonitorElement * mpTScale1D_2700_3500
Definition: PFJetTester.h:207
MonitorElement * mCaloSumET_3000
Definition: PFJetTester.h:238
void Fill(long long x)
MonitorElement * mpTScale_2700_3500_d
Definition: PFJetTester.h:190
MonitorElement * mHBEne
Definition: PFJetTester.h:243
Collection of Calo MET.
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:30
std::string mOutputFile
Definition: PFJetTester.h:37
MonitorElement * mCaloMETSig
Definition: PFJetTester.h:239
virtual double energy() const
energy
double mEtSig() const
Definition: MET.h:50
MonitorElement * mpTScale1DE_600_900
Definition: PFJetTester.h:199
MonitorElement * mChargedEmEnergyFraction
Definition: PFJetTester.h:106
double sumEt() const
Definition: MET.h:48
MonitorElement * mAllGenJetsPt
Definition: PFJetTester.h:159
MonitorElement * mPtFirst
Definition: PFJetTester.h:81
MonitorElement * mCaloMET
Definition: PFJetTester.h:234
MonitorElement * mpTScaleB_s
Definition: PFJetTester.h:175
MonitorElement * mPtFirst_3000
Definition: PFJetTester.h:83
MonitorElement * mMass_80
Definition: PFJetTester.h:67
double mRThreshold
Definition: PFJetTester.h:217
MonitorElement * mMjj
Definition: PFJetTester.h:92
MonitorElement * mHBTime
Definition: PFJetTester.h:244
MonitorElement * mpTScale1DB_600_900
Definition: PFJetTester.h:198
MonitorElement * mP_80
Definition: PFJetTester.h:61
MonitorElement * mDelEta
Definition: PFJetTester.h:209
MonitorElement * mMatchedGenJetsEta
Definition: PFJetTester.h:162
MonitorElement * mEmEnergyProfile
Definition: PFJetTester.h:224
MonitorElement * mpTScale_200_300_d
Definition: PFJetTester.h:188
MonitorElement * mEScale_pt10
Definition: PFJetTester.h:172
MonitorElement * mEmTiming
Definition: PFJetTester.h:73
MonitorElement * mEtaFirst
Definition: PFJetTester.h:76
MonitorElement * mE
Definition: PFJetTester.h:57
MonitorElement * mHOTime
Definition: PFJetTester.h:248
MonitorElement * mHFTime
Definition: PFJetTester.h:250
int j
Definition: DBlmapReader.cc:9
MonitorElement * mMass
Definition: PFJetTester.h:66
MonitorElement * mNeutralEmEnergy_3000
Definition: PFJetTester.h:103
Jets made from MC generator particles.
Definition: GenJet.h:25
MonitorElement * mPhi
Definition: PFJetTester.h:55
MonitorElement * mpTScaleF_d
Definition: PFJetTester.h:180
MonitorElement * mCaloMETPhi
Definition: PFJetTester.h:236
MonitorElement * mPt
Definition: PFJetTester.h:63
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:828
MonitorElement * mDelPt
Definition: PFJetTester.h:211
void fillMatchHists(const reco::GenJet &fGenJet, const reco::PFJet &fPFJet)
Definition: PFJetTester.cc:823
MonitorElement * mpTScale1DB_200_300
Definition: PFJetTester.h:195
virtual void analyze(const edm::Event &, const edm::EventSetup &)
Definition: PFJetTester.cc:394
double mMatchGenPtThreshold
Definition: PFJetTester.h:214
MonitorElement * mConstituents_80
Definition: PFJetTester.h:70
MonitorElement * mpTScale1DF_200_300
Definition: PFJetTester.h:197
bool isValid() const
Definition: HandleBase.h:76
MonitorElement * mGenPhi
Definition: PFJetTester.h:149
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:355
MonitorElement * mpTScale1DB_60_120
Definition: PFJetTester.h:192
MonitorElement * mHadEnergyProfile
Definition: PFJetTester.h:223
MonitorElement * mCaloMEx
Definition: PFJetTester.h:230
MonitorElement * mNeutralHadronEnergyFraction
Definition: PFJetTester.h:109
double deltaR(double eta1, double eta2, double phi1, double phi2)
Definition: TreeUtility.cc:17
MonitorElement * mGenPt_80
Definition: PFJetTester.h:151
MonitorElement * mEtaFineBin1m
Definition: PFJetTester.h:52
virtual void beginJob()
Definition: PFJetTester.cc:386
MonitorElement * mEta
Definition: PFJetTester.h:47
virtual double px() const
x coordinate of momentum vector
MonitorElement * mGenEtaFirst
Definition: PFJetTester.h:155
virtual double pt() const
transverse momentum
edm::InputTag mInputGenCollection
Definition: PFJetTester.h:36
MonitorElement * mPt_3000
Definition: PFJetTester.h:65
MonitorElement * mEFirst_3000
Definition: PFJetTester.h:80
MonitorElement * mEFirst_80
Definition: PFJetTester.h:79
MonitorElement * mpTScale1DE_60_120
Definition: PFJetTester.h:193
MonitorElement * mCaloMETSig_3000
Definition: PFJetTester.h:240
MonitorElement * mRMatch
Definition: PFJetTester.h:165
T const * product() const
Definition: Handle.h:74
MonitorElement * mNeutralHadronEnergy_3000
Definition: PFJetTester.h:104
MonitorElement * mHEEne
Definition: PFJetTester.h:245
MonitorElement * mEtaFineBin2p
Definition: PFJetTester.h:50
std::string const & label() const
Definition: InputTag.h:25
MonitorElement * mCaloSumET
Definition: PFJetTester.h:237
MonitorElement * mAllGenJetsEta
Definition: PFJetTester.h:161
MonitorElement * mCaloMEy
Definition: PFJetTester.h:232
MonitorElement * mCaloMEy_3000
Definition: PFJetTester.h:233
MonitorElement * mEtaFineBin3p
Definition: PFJetTester.h:51
MonitorElement * mEScaleFineBin
Definition: PFJetTester.h:173
MonitorElement * mpTScale1D_200_300
Definition: PFJetTester.h:205
MonitorElement * mpTScale1D_600_900
Definition: PFJetTester.h:206
MonitorElement * mpTScale_600_900_d
Definition: PFJetTester.h:189
MonitorElement * mDelPhi
Definition: PFJetTester.h:210
MonitorElement * mpTScale1DF_60_120
Definition: PFJetTester.h:194
MonitorElement * mHadTiming
Definition: PFJetTester.h:72
MonitorElement * mChargedHadronEnergy_3000
Definition: PFJetTester.h:102
MonitorElement * mE_80
Definition: PFJetTester.h:58
MonitorElement * mEScale
Definition: PFJetTester.h:168
MonitorElement * mpTScaleE_s
Definition: PFJetTester.h:176
std::string mTurnOnEverything
Definition: PFJetTester.h:220
MonitorElement * mEtaFineBin
Definition: PFJetTester.h:48
MonitorElement * mPhiFirst
Definition: PFJetTester.h:77
MonitorElement * book2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
Book 2D histogram.
Definition: DQMStore.cc:642
MonitorElement * mHFEne
Definition: PFJetTester.h:249
MonitorElement * mCaloMET_3000
Definition: PFJetTester.h:235
MonitorElement * mpTScale_60_120_s
Definition: PFJetTester.h:182
MonitorElement * mGenPhiFirst
Definition: PFJetTester.h:156
MonitorElement * mJetEnergyProfile
Definition: PFJetTester.h:225
virtual double phi() const
momentum azimuthal angle
MonitorElement * mMatchedGenJetsPt
Definition: PFJetTester.h:160
MonitorElement * mpTScale1DE_200_300
Definition: PFJetTester.h:196
MonitorElement * mReverseMatchEnergyFraction
Definition: PFJetTester.h:164
MonitorElement * mMass_3000
Definition: PFJetTester.h:68
virtual double py() const
y coordinate of momentum vector
MonitorElement * mEtaFineBin1p
Definition: PFJetTester.h:49
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:232
MonitorElement * mP_3000
Definition: PFJetTester.h:62
MonitorElement * mDeltaPhi
Definition: PFJetTester.h:167
MonitorElement * mEtaFineBin3m
Definition: PFJetTester.h:54
MonitorElement * mE_3000
Definition: PFJetTester.h:59
MonitorElement * mPthat_80
Definition: PFJetTester.h:144
MonitorElement * mpTScale_200_300_s
Definition: PFJetTester.h:183
MonitorElement * mpTScale1DF_600_900
Definition: PFJetTester.h:200
MonitorElement * mNJetsEtaF
Definition: PFJetTester.h:86
MonitorElement * mpTScale1DF_2700_3500
Definition: PFJetTester.h:203
MonitorElement * bookProfile2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, int nchZ, double lowZ, double highZ, const char *option="s")
Definition: DQMStore.cc:972