CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
JetAnalyzer.cc
Go to the documentation of this file.
1 /*
2  * See header file for a description of this class.
3  *
4  * $Date: 2010/04/03 14:36:22 $
5  * $Revision: 1.21 $
6  * \author F. Chlebana - Fermilab
7  */
8 
11 
14 
16 
17 
18 #include <string>
19 using namespace edm;
20 
21 // ***********************************************************
23 
24  parameters = pSet;
25  _leadJetFlag = 0;
26  _JetLoPass = 0;
27  _JetHiPass = 0;
28  _ptThreshold = 5.;
29  _n90HitsMin =0;
30  _fHPDMax=1.;
31  _resEMFMin=0.;
32  _n90HitsMinLoose =0;
33  _fHPDMaxLoose=1.;
34  _resEMFMinLoose=0.;
35  _n90HitsMinTight =0;
36  _fHPDMaxTight=1.;
37  _resEMFMinTight=0.;
38  _sigmaEtaMinTight=-999.;
39  _sigmaPhiMinTight=-999.;
40 
41 }
42 
43 // ***********************************************************
45 
46 
47 // ***********************************************************
49 
50  jetname = "jetAnalyzer";
51 
52  LogTrace(jetname)<<"[JetAnalyzer] Parameters initialization";
53  dbe->setCurrentFolder("JetMET/Jet/"+_source);
54 
55  jetME = dbe->book1D("jetReco", "jetReco", 3, 1, 4);
56  jetME->setBinLabel(1,"CaloJets",1);
57 
58  //
59  jetID = new reco::helper::JetIDHelper(parameters.getParameter<ParameterSet>("JetIDParams"));
60  //
61 
62  fillJIDPassFrac = parameters.getParameter<int>("fillJIDPassFrac");
63  makedijetselection = parameters.getParameter<int>("makedijetselection");
64 
65  // monitoring of eta parameter
66  etaBin = parameters.getParameter<int>("etaBin");
67  etaMin = parameters.getParameter<double>("etaMin");
68  etaMax = parameters.getParameter<double>("etaMax");
69 
70  // monitoring of phi paramater
71  phiBin = parameters.getParameter<int>("phiBin");
72  phiMin = parameters.getParameter<double>("phiMin");
73  phiMax = parameters.getParameter<double>("phiMax");
74 
75  // monitoring of the transverse momentum
76  ptBin = parameters.getParameter<int>("ptBin");
77  ptMin = parameters.getParameter<double>("ptMin");
78  ptMax = parameters.getParameter<double>("ptMax");
79 
80  //
81  eBin = parameters.getParameter<int>("eBin");
82  eMin = parameters.getParameter<double>("eMin");
83  eMax = parameters.getParameter<double>("eMax");
84 
85  //
86  pBin = parameters.getParameter<int>("pBin");
87  pMin = parameters.getParameter<double>("pMin");
88  pMax = parameters.getParameter<double>("pMax");
89 
90  //
91  _ptThreshold = parameters.getParameter<double>("ptThreshold");
92  _n90HitsMin = parameters.getParameter<int>("n90HitsMin");
93  _fHPDMax = parameters.getParameter<double>("fHPDMax");
94  _resEMFMin = parameters.getParameter<double>("resEMFMin");
95  _sigmaEtaMinTight = parameters.getParameter<double>("sigmaEtaMinTight");
96  _sigmaPhiMinTight = parameters.getParameter<double>("sigmaPhiMinTight");
97 
98  _n90HitsMinLoose = parameters.getParameter<int>("n90HitsMinLoose");
99  _fHPDMaxLoose = parameters.getParameter<double>("fHPDMaxLoose");
100  _resEMFMinLoose = parameters.getParameter<double>("resEMFMinLoose");
101  _n90HitsMinTight = parameters.getParameter<int>("n90HitsMinTight");
102  _fHPDMaxTight = parameters.getParameter<double>("fHPDMaxTight");
103  _resEMFMinTight = parameters.getParameter<double>("resEMFMinTight");
104 
105 
106  // Generic Jet Parameters
107  mPt = dbe->book1D("Pt", "Pt", ptBin, ptMin, ptMax);
108  mEta = dbe->book1D("Eta", "Eta", etaBin, etaMin, etaMax);
109  mPhi = dbe->book1D("Phi", "Phi", phiBin, phiMin, phiMax);
110  mConstituents = dbe->book1D("Constituents", "# of Constituents", 100, 0, 100);
111  mHFrac = dbe->book1D("HFrac", "HFrac", 120, -0.1, 1.1);
112  mEFrac = dbe->book1D("EFrac", "EFrac", 120, -0.1, 1.1);
113  //
114  mE = dbe->book1D("E", "E", eBin, eMin, eMax);
115  mP = dbe->book1D("P", "P", pBin, pMin, pMax);
116  mMass = dbe->book1D("Mass", "Mass", 100, 0, 25);
117  //
118  mPhiVSEta = dbe->book2D("PhiVSEta", "PhiVSEta", 50, etaMin, etaMax, 24, phiMin, phiMax);
119  if(makedijetselection!=1){
120  mPt_1 = dbe->book1D("Pt1", "Pt1", 100, 0, 100);
121  mPt_2 = dbe->book1D("Pt2", "Pt2", 100, 0, 300);
122  mPt_3 = dbe->book1D("Pt3", "Pt3", 100, 0, 5000);
123  // Low and high pt trigger paths
124  mPt_Lo = dbe->book1D("Pt_Lo", "Pt (Pass Low Pt Jet Trigger)", 100, 0, 100);
125  mEta_Lo = dbe->book1D("Eta_Lo", "Eta (Pass Low Pt Jet Trigger)", etaBin, etaMin, etaMax);
126  mPhi_Lo = dbe->book1D("Phi_Lo", "Phi (Pass Low Pt Jet Trigger)", phiBin, phiMin, phiMax);
127 
128  mPt_Hi = dbe->book1D("Pt_Hi", "Pt (Pass Hi Pt Jet Trigger)", 100, 0, 300);
129  mEta_Hi = dbe->book1D("Eta_Hi", "Eta (Pass Hi Pt Jet Trigger)", etaBin, etaMin, etaMax);
130  mPhi_Hi = dbe->book1D("Phi_Hi", "Phi (Pass Hi Pt Jet Trigger)", phiBin, phiMin, phiMax);
131  mNJets = dbe->book1D("NJets", "Number of Jets", 100, 0, 100);
132  mPt_Barrel_Lo = dbe->book1D("Pt_Barrel_Lo", "Pt Barrel (Pass Low Pt Jet Trigger)", 100, 0, 100);
133  mPhi_Barrel_Lo = dbe->book1D("Phi_Barrel_Lo", "Phi Barrel (Pass Low Pt Jet Trigger)", phiBin, phiMin, phiMax);
134  mConstituents_Barrel_Lo = dbe->book1D("Constituents_Barrel_Lo", "Constituents Barrel (Pass Low Pt Jet Trigger)", 100, 0, 100);
135  mHFrac_Barrel_Lo = dbe->book1D("HFrac_Barrel_Lo", "HFrac Barrel (Pass Low Pt Jet Trigger)", 100, 0, 1);
136 
137  mPt_EndCap_Lo = dbe->book1D("Pt_EndCap_Lo", "Pt EndCap (Pass Low Pt Jet Trigger)", 100, 0, 100);
138  mPhi_EndCap_Lo = dbe->book1D("Phi_EndCap_Lo", "Phi EndCap (Pass Low Pt Jet Trigger)", phiBin, phiMin, phiMax);
139  mConstituents_EndCap_Lo = dbe->book1D("Constituents_EndCap_Lo", "Constituents EndCap (Pass Low Pt Jet Trigger)", 100, 0, 100);
140  mHFrac_EndCap_Lo = dbe->book1D("HFrac_Endcap_Lo", "HFrac EndCap (Pass Low Pt Jet Trigger)", 100, 0, 1);
141 
142  mPt_Forward_Lo = dbe->book1D("Pt_Forward_Lo", "Pt Forward (Pass Low Pt Jet Trigger)", 100, 0, 100);
143  mPhi_Forward_Lo = dbe->book1D("Phi_Forward_Lo", "Phi Forward (Pass Low Pt Jet Trigger)", phiBin, phiMin, phiMax);
144  mConstituents_Forward_Lo = dbe->book1D("Constituents_Forward_Lo", "Constituents Forward (Pass Low Pt Jet Trigger)", 100, 0, 100);
145  mHFrac_Forward_Lo = dbe->book1D("HFrac_Forward_Lo", "HFrac Forward (Pass Low Pt Jet Trigger)", 100, 0, 1);
146 
147  mPt_Barrel_Hi = dbe->book1D("Pt_Barrel_Hi", "Pt Barrel (Pass Hi Pt Jet Trigger)", 100, 0, 300);
148  mPhi_Barrel_Hi = dbe->book1D("Phi_Barrel_Hi", "Phi Barrel (Pass Hi Pt Jet Trigger)", phiBin, phiMin, phiMax);
149  mConstituents_Barrel_Hi = dbe->book1D("Constituents_Barrel_Hi", "Constituents Barrel (Pass Hi Pt Jet Trigger)", 100, 0, 100);
150  mHFrac_Barrel_Hi = dbe->book1D("HFrac_Barrel_Hi", "HFrac Barrel (Pass Hi Pt Jet Trigger)", 100, 0, 1);
151 
152  mPt_EndCap_Hi = dbe->book1D("Pt_EndCap_Hi", "Pt EndCap (Pass Hi Pt Jet Trigger)", 100, 0, 300);
153  mPhi_EndCap_Hi = dbe->book1D("Phi_EndCap_Hi", "Phi EndCap (Pass Hi Pt Jet Trigger)", phiBin, phiMin, phiMax);
154  mConstituents_EndCap_Hi = dbe->book1D("Constituents_EndCap_Hi", "Constituents EndCap (Pass Hi Pt Jet Trigger)", 100, 0, 100);
155  mHFrac_EndCap_Hi = dbe->book1D("HFrac_EndCap_Hi", "HFrac EndCap (Pass Hi Pt Jet Trigger)", 100, 0, 1);
156 
157  mPt_Forward_Hi = dbe->book1D("Pt_Forward_Hi", "Pt Forward (Pass Hi Pt Jet Trigger)", 100, 0, 300);
158  mPhi_Forward_Hi = dbe->book1D("Phi_Forward_Hi", "Phi Forward (Pass Hi Pt Jet Trigger)", phiBin, phiMin, phiMax);
159  mConstituents_Forward_Hi = dbe->book1D("Constituents_Forward_Hi", "Constituents Forward (Pass Hi Pt Jet Trigger)", 100, 0, 100);
160  mHFrac_Forward_Hi = dbe->book1D("HFrac_Forward_Hi", "HFrac Forward (Pass Hi Pt Jet Trigger)", 100, 0, 1);
161 
162  mPhi_Barrel = dbe->book1D("Phi_Barrel", "Phi_Barrel", phiBin, phiMin, phiMax);
163  mE_Barrel = dbe->book1D("E_Barrel", "E_Barrel", eBin, eMin, eMax);
164  mPt_Barrel = dbe->book1D("Pt_Barrel", "Pt_Barrel", ptBin, ptMin, ptMax);
165 
166  mPhi_EndCap = dbe->book1D("Phi_EndCap", "Phi_EndCap", phiBin, phiMin, phiMax);
167  mE_EndCap = dbe->book1D("E_EndCap", "E_EndCap", eBin, eMin, 2*eMax);
168  mPt_EndCap = dbe->book1D("Pt_EndCap", "Pt_EndCap", ptBin, ptMin, ptMax);
169 
170  mPhi_Forward = dbe->book1D("Phi_Forward", "Phi_Forward", phiBin, phiMin, phiMax);
171  mE_Forward = dbe->book1D("E_Forward", "E_Forward", eBin, eMin, 4*eMax);
172  mPt_Forward = dbe->book1D("Pt_Forward", "Pt_Forward", ptBin, ptMin, ptMax);
173 
174  // Leading Jet Parameters
175  mEtaFirst = dbe->book1D("EtaFirst", "EtaFirst", 100, -5, 5);
176  mPhiFirst = dbe->book1D("PhiFirst", "PhiFirst", 70, -3.5, 3.5);
177  mEFirst = dbe->book1D("EFirst", "EFirst", 100, 0, 1000);
178  mPtFirst = dbe->book1D("PtFirst", "PtFirst", 100, 0, 500);
179  if(fillJIDPassFrac==1){//fillJIDPassFrac defines a collection of cleaned jets, for which we will want to fill the cleaning passing fraction
180  mLooseJIDPassFractionVSeta = dbe->bookProfile("LooseJIDPassFractionVSeta","LooseJIDPassFractionVSeta",etaBin, etaMin, etaMax,0.,1.2);
181  mLooseJIDPassFractionVSpt = dbe->bookProfile("LooseJIDPassFractionVSpt","LooseJIDPassFractionVSpt",ptBin, ptMin, ptMax,0.,1.2);
182  mTightJIDPassFractionVSeta = dbe->bookProfile("TightJIDPassFractionVSeta","TightJIDPassFractionVSeta",etaBin, etaMin, etaMax,0.,1.2);
183  mTightJIDPassFractionVSpt = dbe->bookProfile("TightJIDPassFractionVSpt","TightJIDPassFractionVSpt",ptBin, ptMin, ptMax,0.,1.2);
184 
185 
186  }
187  }
188  // CaloJet specific
189  mMaxEInEmTowers = dbe->book1D("MaxEInEmTowers", "MaxEInEmTowers", 100, 0, 100);
190  mMaxEInHadTowers = dbe->book1D("MaxEInHadTowers", "MaxEInHadTowers", 100, 0, 100);
191  if(makedijetselection!=1) {
192  mHadEnergyInHO = dbe->book1D("HadEnergyInHO", "HadEnergyInHO", 100, 0, 10);
193  mHadEnergyInHB = dbe->book1D("HadEnergyInHB", "HadEnergyInHB", 100, 0, 50);
194  mHadEnergyInHF = dbe->book1D("HadEnergyInHF", "HadEnergyInHF", 100, 0, 50);
195  mHadEnergyInHE = dbe->book1D("HadEnergyInHE", "HadEnergyInHE", 100, 0, 100);
196  mEmEnergyInEB = dbe->book1D("EmEnergyInEB", "EmEnergyInEB", 100, 0, 50);
197  mEmEnergyInEE = dbe->book1D("EmEnergyInEE", "EmEnergyInEE", 100, 0, 50);
198  mEmEnergyInHF = dbe->book1D("EmEnergyInHF", "EmEnergyInHF", 120, -20, 100);
199  }
200  mDPhi = dbe->book1D("DPhi", "dPhi btw the two leading jets", 100, 0., acos(-1.));
201 
202  //JetID variables
203 
204  mresEMF = dbe->book1D("resEMF", "resEMF", 50, 0., 1.);
205  mN90Hits = dbe->book1D("N90Hits", "N90Hits", 50, 0., 50);
206  mfHPD = dbe->book1D("fHPD", "fHPD", 50, 0., 1.);
207  mfRBX = dbe->book1D("fRBX", "fRBX", 50, 0., 1.);
208 
209  msigmaEta = dbe->book1D("sigmaEta", "sigmaEta", 50, 0., 0.5);
210  msigmaPhi = dbe->book1D("sigmaPhi", "sigmaPhi", 50, 0., 0.5);
211 
212  if(makedijetselection==1 && fillJIDPassFrac==1) {
213  mLooseJIDPassFractionVSeta = dbe->bookProfile("LooseJIDPassFractionVSeta","LooseJIDPassFractionVSeta",50, -3., 3.,0.,1.2);
214  mLooseJIDPassFractionVSpt = dbe->bookProfile("LooseJIDPassFractionVSpt","LooseJIDPassFractionVSpt",ptBin, ptMin, ptMax,0.,1.2);
215  mTightJIDPassFractionVSeta = dbe->bookProfile("TightJIDPassFractionVSeta","TightJIDPassFractionVSeta",50, -3., 3.,0.,1.2);
216  mTightJIDPassFractionVSpt = dbe->bookProfile("TightJIDPassFractionVSpt","TightJIDPassFractionVSpt",ptBin, ptMin, ptMax,0.,1.2);
217 
218  }
219 }
220 
221 
222 //void JetAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup,
223 // const edm::TriggerResults& triggerResults,
224 // const reco::CaloJet& jet) {
225 
226 
227 // ***********************************************************
229  delete jetID;
230 }
231 
232 
233 // ***********************************************************
235  const reco::CaloJetCollection& caloJets) {
236  int numofjets=0;
237  double fstPhi=0.;
238  double sndPhi=0.;
239  double diff = 0.;
240  double corr = 0.;
241  double dphi = -999. ;
242  bool thiscleaned=false;
243  bool Loosecleaned=false;
244  bool Tightcleaned=false;
245  bool thisemfclean=true;
246  bool emfcleanLoose=true;
247  bool emfcleanTight=true;
248  if(makedijetselection==1){
249  //Dijet selection - careful: the pT is uncorrected!
250  if(makedijetselection==1 && caloJets.size()>=2){
251  double dphiDJ = -999. ;
252  bool emfcleanLooseFirstJet=true;
253  bool emfcleanLooseSecondJet=true;
254  bool emfcleanTightFirstJet=true;
255  bool emfcleanTightSecondJet=true;
256  bool LoosecleanedFirstJet = false;
257  bool LoosecleanedSecondJet = false;
258  bool TightcleanedFirstJet = false;
259  bool TightcleanedSecondJet = false;
260  //both jets pass pt threshold
261  if ((caloJets.at(0)).pt() > _ptThreshold && (caloJets.at(1)).pt() > _ptThreshold ) {
262  if(fabs((caloJets.at(0)).eta())<3. && fabs((caloJets.at(1)).eta())<3. ){
263  //calculate dphi
264  dphiDJ = fabs((caloJets.at(0)).phi()-(caloJets.at(1)).phi());
265  if (dphiDJ > 3.14) dphiDJ=fabs(dphiDJ -6.28 );
266  //fill DPhi histo (before cutting)
267  if (mDPhi) mDPhi->Fill (dphiDJ);
268  //dphi cut
269  if(fabs(dphiDJ)>2.1){
270  //JetID
271  emfcleanLooseFirstJet=true;
272  emfcleanTightFirstJet=true;
273  emfcleanLooseSecondJet=true;
274  emfcleanTightSecondJet=true;
275  jetID->calculate(iEvent, (caloJets.at(0)));
276  if(jetID->restrictedEMF()<_resEMFMinLoose && fabs((caloJets.at(0)).eta())<2.6) emfcleanLooseFirstJet=false;
277  if(jetID->restrictedEMF()<_resEMFMinTight && fabs((caloJets.at(0)).eta())<2.6) emfcleanTightFirstJet=false;
278  if(jetID->n90Hits()>=_n90HitsMinLoose && jetID->fHPD()<_fHPDMaxLoose && emfcleanLooseFirstJet) LoosecleanedFirstJet=true;
279  if(jetID->n90Hits()>=_n90HitsMinTight && jetID->fHPD()<_fHPDMaxTight && sqrt((caloJets.at(0)).etaetaMoment())>_sigmaEtaMinTight && sqrt((caloJets.at(0)).phiphiMoment())>_sigmaPhiMinTight && emfcleanTightFirstJet) TightcleanedFirstJet=true;
280  //fill the JID variables histograms BEFORE you cut on them
281  if (mN90Hits) mN90Hits->Fill (jetID->n90Hits());
282  if (mfHPD) mfHPD->Fill (jetID->fHPD());
283  if (mresEMF) mresEMF->Fill (jetID->restrictedEMF());
284  if (mfRBX) mfRBX->Fill (jetID->fRBX());
285  jetID->calculate(iEvent, (caloJets.at(1)));
286  if(jetID->restrictedEMF()<_resEMFMinLoose && fabs((caloJets.at(1)).eta())<2.6) emfcleanLooseSecondJet=false;
287  if(jetID->restrictedEMF()<_resEMFMinTight && fabs((caloJets.at(1)).eta())<2.6) emfcleanTightSecondJet=false;
288  if(jetID->n90Hits()>=_n90HitsMinLoose && jetID->fHPD()<_fHPDMaxLoose && emfcleanLooseSecondJet) LoosecleanedSecondJet=true;
289  if(jetID->n90Hits()>=_n90HitsMinTight && jetID->fHPD()<_fHPDMaxTight && sqrt((caloJets.at(1)).etaetaMoment())>_sigmaEtaMinTight && sqrt((caloJets.at(1)).phiphiMoment())>_sigmaPhiMinTight && emfcleanTightSecondJet) TightcleanedSecondJet=true;
290  //fill the JID variables histograms BEFORE you cut on them
291  if (mN90Hits) mN90Hits->Fill (jetID->n90Hits());
292  if (mfHPD) mfHPD->Fill (jetID->fHPD());
293  if (mresEMF) mresEMF->Fill (jetID->restrictedEMF());
294  if (mfRBX) mfRBX->Fill (jetID->fRBX());
295  if(LoosecleanedFirstJet && LoosecleanedSecondJet) { //only if both jets are (loose) cleaned
296  //fill histos for first jet
297  if (mPt) mPt->Fill ((caloJets.at(0)).pt());
298  if (mEta) mEta->Fill ((caloJets.at(0)).eta());
299  if (mPhi) mPhi->Fill ((caloJets.at(0)).phi());
300  if (mPhiVSEta) mPhiVSEta->Fill((caloJets.at(0)).eta(),(caloJets.at(0)).phi());
301  if (mConstituents) mConstituents->Fill ((caloJets.at(0)).nConstituents());
302  if (mHFrac) mHFrac->Fill ((caloJets.at(0)).energyFractionHadronic());
303  if (mEFrac) mEFrac->Fill ((caloJets.at(0)).emEnergyFraction());
304  if (mE) mE->Fill ((caloJets.at(0)).energy());
305  if (mP) mP->Fill ((caloJets.at(0)).p());
306  if (mMass) mMass->Fill ((caloJets.at(0)).mass());
307  if (mMaxEInEmTowers) mMaxEInEmTowers->Fill ((caloJets.at(0)).maxEInEmTowers());
308  if (mMaxEInHadTowers) mMaxEInHadTowers->Fill ((caloJets.at(0)).maxEInHadTowers());
309  if (mN90Hits) mN90Hits->Fill (jetID->n90Hits());
310  if (mfHPD) mfHPD->Fill (jetID->fHPD());
311  if (mresEMF) mresEMF->Fill (jetID->restrictedEMF());
312  if (mfRBX) mfRBX->Fill (jetID->fRBX());
313  //sigmaeta and sigmaphi only used in the tight selection.
314  //fill the histos for them AFTER the loose selection
315  if (msigmaEta) msigmaEta->Fill(sqrt((caloJets.at(0)).etaetaMoment()));
316  if (msigmaPhi) msigmaPhi->Fill(sqrt((caloJets.at(0)).phiphiMoment()));
317  //fill histos for second jet
318  if (mPt) mPt->Fill ((caloJets.at(1)).pt());
319  if (mEta) mEta->Fill ((caloJets.at(1)).eta());
320  if (mPhi) mPhi->Fill ((caloJets.at(1)).phi());
321  if (mPhiVSEta) mPhiVSEta->Fill((caloJets.at(1)).eta(),(caloJets.at(1)).phi());
322  if (mConstituents) mConstituents->Fill ((caloJets.at(1)).nConstituents());
323  if (mHFrac) mHFrac->Fill ((caloJets.at(1)).energyFractionHadronic());
324  if (mEFrac) mEFrac->Fill ((caloJets.at(1)).emEnergyFraction());
325  if (mE) mE->Fill ((caloJets.at(1)).energy());
326  if (mP) mP->Fill ((caloJets.at(1)).p());
327  if (mMass) mMass->Fill ((caloJets.at(1)).mass());
328  if (mMaxEInEmTowers) mMaxEInEmTowers->Fill ((caloJets.at(1)).maxEInEmTowers());
329  if (mMaxEInHadTowers) mMaxEInHadTowers->Fill ((caloJets.at(1)).maxEInHadTowers());
330  //sigmaeta and sigmaphi only used in the tight selection.
331  //fill the histos for them AFTER the loose selection
332  if (msigmaEta) msigmaEta->Fill(sqrt((caloJets.at(1)).etaetaMoment()));
333  if (msigmaPhi) msigmaPhi->Fill(sqrt((caloJets.at(1)).phiphiMoment()));
334 
335  }
336  //let's see how many of these jets passed the JetID cleaning
337  if(fillJIDPassFrac==1) {
338  if(LoosecleanedFirstJet) {
339  mLooseJIDPassFractionVSeta->Fill((caloJets.at(0)).eta(),1.);
340  mLooseJIDPassFractionVSpt->Fill((caloJets.at(0)).pt(),1.);
341  } else {
342  mLooseJIDPassFractionVSeta->Fill((caloJets.at(0)).eta(),0.);
343  mLooseJIDPassFractionVSpt->Fill((caloJets.at(0)).pt(),0.);
344  }
345  if(LoosecleanedSecondJet) {
346  mLooseJIDPassFractionVSeta->Fill((caloJets.at(1)).eta(),1.);
347  mLooseJIDPassFractionVSpt->Fill((caloJets.at(1)).pt(),1.);
348  } else {
349  mLooseJIDPassFractionVSeta->Fill((caloJets.at(1)).eta(),0.);
350  mLooseJIDPassFractionVSpt->Fill((caloJets.at(1)).pt(),0.);
351  }
352  //TIGHT JID
353  if(TightcleanedFirstJet) {
354  mTightJIDPassFractionVSeta->Fill((caloJets.at(0)).eta(),1.);
355  mTightJIDPassFractionVSpt->Fill((caloJets.at(0)).pt(),1.);
356  } else {
357  mTightJIDPassFractionVSeta->Fill((caloJets.at(0)).eta(),0.);
358  mTightJIDPassFractionVSpt->Fill((caloJets.at(0)).pt(),0.);
359  }
360  if(TightcleanedSecondJet) {
361  mTightJIDPassFractionVSeta->Fill((caloJets.at(1)).eta(),1.);
362  mTightJIDPassFractionVSpt->Fill((caloJets.at(1)).pt(),1.);
363  } else {
364  mTightJIDPassFractionVSeta->Fill((caloJets.at(1)).eta(),0.);
365  mTightJIDPassFractionVSpt->Fill((caloJets.at(1)).pt(),0.);
366  }
367 
368  }//if fillJIDPassFrac
369  }
370  }
371  }
372  }
373  } else {
374  for (reco::CaloJetCollection::const_iterator jet = caloJets.begin(); jet!=caloJets.end(); ++jet) {
375  LogTrace(jetname)<<"[JetAnalyzer] Analyze Calo Jet";
376  Loosecleaned=false;
377  Tightcleaned=false;
378  if (jet == caloJets.begin()) {
379  fstPhi = jet->phi();
380  _leadJetFlag = 1;
381  } else {
382  _leadJetFlag = 0;
383  }
384  if (jet == (caloJets.begin()+1)) sndPhi = jet->phi();
385  //jetID
386  jetID->calculate(iEvent, *jet);
387  //minimal (uncorrected!) pT cut
388  if (jet->pt() > _ptThreshold) {
389  if (msigmaEta) msigmaEta->Fill(sqrt(jet->etaetaMoment()));
390  if (msigmaPhi) msigmaPhi->Fill(sqrt(jet->phiphiMoment()));
391  //cleaning to use for filling histograms
392  thisemfclean=true;
393  if(jetID->restrictedEMF()<_resEMFMin && fabs(jet->eta())<2.6) thisemfclean=false;
394  if(jetID->n90Hits()>=_n90HitsMin && jetID->fHPD()<_fHPDMax && thisemfclean) thiscleaned=true;
395  //loose and tight cleaning, used to fill the JetIDPAssFraction histos
396  if(jetID->n90Hits()>=_n90HitsMinLoose && jetID->fHPD()<_fHPDMaxLoose && emfcleanLoose) Loosecleaned=true;
397  if(jetID->n90Hits()>=_n90HitsMinTight && jetID->fHPD()<_fHPDMaxTight && sqrt(jet->etaetaMoment())>_sigmaEtaMinTight && sqrt(jet->phiphiMoment())>_sigmaPhiMinTight && emfcleanTight) Tightcleaned=true;
398 
399  if(fillJIDPassFrac==1) {
400  if(Loosecleaned) {
401  mLooseJIDPassFractionVSeta->Fill(jet->eta(),1.);
402  mLooseJIDPassFractionVSpt->Fill(jet->pt(),1.);
403  } else {
404  mLooseJIDPassFractionVSeta->Fill(jet->eta(),0.);
405  mLooseJIDPassFractionVSpt->Fill(jet->pt(),0.);
406  }
407  //TIGHT
408  if(Tightcleaned) {
409  mTightJIDPassFractionVSeta->Fill(jet->eta(),1.);
410  mTightJIDPassFractionVSpt->Fill(jet->pt(),1.);
411  } else {
412  mTightJIDPassFractionVSeta->Fill(jet->eta(),0.);
413  mTightJIDPassFractionVSpt->Fill(jet->pt(),0.);
414  }
415  }
416  //eventually we could define the "cleaned" flag differently for e.g. HF
417  if(thiscleaned) {
418  numofjets++ ;
419  jetME->Fill(1);
420 
421  // Leading jet
422  // Histograms are filled once per event
423  if (_leadJetFlag == 1) {
424  if (mEtaFirst) mEtaFirst->Fill (jet->eta());
425  if (mPhiFirst) mPhiFirst->Fill (jet->phi());
426  if (mEFirst) mEFirst->Fill (jet->energy());
427  if (mPtFirst) mPtFirst->Fill (jet->pt());
428  }
429  // --- Passed the low pt jet trigger
430  if (_JetLoPass == 1) {
431  if (fabs(jet->eta()) <= 1.3) {
432  if (mPt_Barrel_Lo) mPt_Barrel_Lo->Fill(jet->pt());
433  if (mEta_Lo) mEta_Lo->Fill(jet->eta());
434  if (mPhi_Barrel_Lo) mPhi_Barrel_Lo->Fill(jet->phi());
435  if (mConstituents_Barrel_Lo) mConstituents_Barrel_Lo->Fill(jet->nConstituents());
436  if (mHFrac_Barrel_Lo) mHFrac_Barrel_Lo->Fill(jet->energyFractionHadronic());
437  }
438  if ( (fabs(jet->eta()) > 1.3) && (fabs(jet->eta()) <= 3) ) {
439  if (mPt_EndCap_Lo) mPt_EndCap_Lo->Fill(jet->pt());
440  if (mEta_Lo) mEta_Lo->Fill(jet->eta());
441  if (mPhi_EndCap_Lo) mPhi_EndCap_Lo->Fill(jet->phi());
442  if (mConstituents_EndCap_Lo) mConstituents_EndCap_Lo->Fill(jet->nConstituents());
443  if (mHFrac_EndCap_Lo) mHFrac_EndCap_Lo->Fill(jet->energyFractionHadronic());
444  }
445  if (fabs(jet->eta()) > 3.0) {
446  if (mPt_Forward_Lo) mPt_Forward_Lo->Fill(jet->pt());
447  if (mEta_Lo) mEta_Lo->Fill(jet->eta());
448  if (mPhi_Forward_Lo) mPhi_Forward_Lo->Fill(jet->phi());
449  if (mConstituents_Forward_Lo) mConstituents_Forward_Lo->Fill(jet->nConstituents());
450  if (mHFrac_Forward_Lo) mHFrac_Forward_Lo->Fill(jet->energyFractionHadronic());
451  }
452  if (mEta_Lo) mEta_Lo->Fill (jet->eta());
453  if (mPhi_Lo) mPhi_Lo->Fill (jet->phi());
454  if (mPt_Lo) mPt_Lo->Fill (jet->pt());
455  }
456 
457  // --- Passed the high pt jet trigger
458  if (_JetHiPass == 1) {
459  if (fabs(jet->eta()) <= 1.3) {
460  if (mPt_Barrel_Hi) mPt_Barrel_Hi->Fill(jet->pt());
461  if (mEta_Hi) mEta_Hi->Fill(jet->eta());
462  if (mPhi_Barrel_Hi) mPhi_Barrel_Hi->Fill(jet->phi());
463  if (mConstituents_Barrel_Hi) mConstituents_Barrel_Hi->Fill(jet->nConstituents());
464  if (mHFrac_Barrel_Hi) mHFrac_Barrel_Hi->Fill(jet->energyFractionHadronic());
465  }
466  if ( (fabs(jet->eta()) > 1.3) && (fabs(jet->eta()) <= 3) ) {
467  if (mPt_EndCap_Hi) mPt_EndCap_Hi->Fill(jet->pt());
468  if (mEta_Hi) mEta_Hi->Fill(jet->eta());
469  if (mPhi_EndCap_Hi) mPhi_EndCap_Hi->Fill(jet->phi());
470  if (mConstituents_EndCap_Hi) mConstituents_EndCap_Hi->Fill(jet->nConstituents());
471  if (mHFrac_EndCap_Hi) mHFrac_EndCap_Hi->Fill(jet->energyFractionHadronic());
472  }
473  if (fabs(jet->eta()) > 3.0) {
474  if (mPt_Forward_Hi) mPt_Forward_Hi->Fill(jet->pt());
475  if (mEta_Hi) mEta_Hi->Fill(jet->eta());
476  if (mPhi_Forward_Hi) mPhi_Forward_Hi->Fill(jet->phi());
477  if (mConstituents_Forward_Hi) mConstituents_Forward_Hi->Fill(jet->nConstituents());
478  if (mHFrac_Forward_Hi) mHFrac_Forward_Hi->Fill(jet->energyFractionHadronic());
479  }
480 
481  if (mEta_Hi) mEta_Hi->Fill (jet->eta());
482  if (mPhi_Hi) mPhi_Hi->Fill (jet->phi());
483  if (mPt_Hi) mPt_Hi->Fill (jet->pt());
484  }
485 
486  if (mPt) mPt->Fill (jet->pt());
487  if (mPt_1) mPt_1->Fill (jet->pt());
488  if (mPt_2) mPt_2->Fill (jet->pt());
489  if (mPt_3) mPt_3->Fill (jet->pt());
490  if (mEta) mEta->Fill (jet->eta());
491  if (mPhi) mPhi->Fill (jet->phi());
492 
493  if (mPhiVSEta) mPhiVSEta->Fill(jet->eta(),jet->phi());
494 
495  if (mConstituents) mConstituents->Fill (jet->nConstituents());
496  if (mHFrac) mHFrac->Fill (jet->energyFractionHadronic());
497  if (mEFrac) mEFrac->Fill (jet->emEnergyFraction());
498 
499  if (fabs(jet->eta()) <= 1.3) {
500  if (mPt_Barrel) mPt_Barrel->Fill (jet->pt());
501  if (mPhi_Barrel) mPhi_Barrel->Fill (jet->phi());
502  if (mE_Barrel) mE_Barrel->Fill (jet->energy());
503  }
504  if ( (fabs(jet->eta()) > 1.3) && (fabs(jet->eta()) <= 3) ) {
505  if (mPt_EndCap) mPt_EndCap->Fill (jet->pt());
506  if (mPhi_EndCap) mPhi_EndCap->Fill (jet->phi());
507  if (mE_EndCap) mE_EndCap->Fill (jet->energy());
508  }
509  if (fabs(jet->eta()) > 3.0) {
510  if (mPt_Forward) mPt_Forward->Fill (jet->pt());
511  if (mPhi_Forward) mPhi_Forward->Fill (jet->phi());
512  if (mE_Forward) mE_Forward->Fill (jet->energy());
513  }
514 
515  if (mE) mE->Fill (jet->energy());
516  if (mP) mP->Fill (jet->p());
517  if (mMass) mMass->Fill (jet->mass());
518 
519  if (mMaxEInEmTowers) mMaxEInEmTowers->Fill (jet->maxEInEmTowers());
520  if (mMaxEInHadTowers) mMaxEInHadTowers->Fill (jet->maxEInHadTowers());
521 
522  if (mHadEnergyInHO) mHadEnergyInHO->Fill (jet->hadEnergyInHO());
523  if (mHadEnergyInHB) mHadEnergyInHB->Fill (jet->hadEnergyInHB());
524  if (mHadEnergyInHF) mHadEnergyInHF->Fill (jet->hadEnergyInHF());
525  if (mHadEnergyInHE) mHadEnergyInHE->Fill (jet->hadEnergyInHE());
526  if (mEmEnergyInEB) mEmEnergyInEB->Fill (jet->emEnergyInEB());
527  if (mEmEnergyInEE) mEmEnergyInEE->Fill (jet->emEnergyInEE());
528  if (mEmEnergyInHF) mEmEnergyInHF->Fill (jet->emEnergyInHF());
529 
530  if (mN90Hits) mN90Hits->Fill (jetID->n90Hits());
531  if (mfHPD) mfHPD->Fill (jetID->fHPD());
532  if (mresEMF) mresEMF->Fill (jetID->restrictedEMF());
533  if (mfRBX) mfRBX->Fill (jetID->fRBX());
534 
535  //calculate correctly the dphi
536  if(numofjets>1) {
537  diff = fabs(fstPhi - sndPhi);
538  corr = 2*acos(-1.) - diff;
539  if(diff < acos(-1.)) {
540  dphi = diff;
541  } else {
542  dphi = corr;
543  }
544  }
545  }
546  }//pt cut
547  }
548  if (mNJets) mNJets->Fill (numofjets);
549  if (mDPhi && dphi>-998.) mDPhi->Fill (dphi);
550  }//not dijet
551 }
552 
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:519
JetAnalyzer(const edm::ParameterSet &)
Constructor.
Definition: JetAnalyzer.cc:22
void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
T eta() const
int iEvent
Definition: GenABIO.cc:243
virtual ~JetAnalyzer()
Destructor.
Definition: JetAnalyzer.cc:44
T sqrt(T t)
Definition: SSEVec.h:28
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:833
#define LogTrace(id)
JetCorrectorParameters corr
Definition: classes.h:9
void endJob()
Finish up a job.
Definition: JetAnalyzer.cc:228
void beginJob(DQMStore *dbe)
Inizialize parameters for histo binning.
Definition: JetAnalyzer.cc:48
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:647
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:237
std::vector< CaloJet > CaloJetCollection
collection of CaloJet objects
void analyze(const edm::Event &, const edm::EventSetup &, const reco::CaloJetCollection &caloJets)
Get the analysis.
Definition: JetAnalyzer.cc:234
Definition: DDAxes.h:10