00001
00002
00003
00004
00005
00006
00007
00008
00009 #include "DQMOffline/JetMET/interface/JetAnalyzer.h"
00010 #include "DataFormats/Common/interface/Handle.h"
00011
00012 #include "DataFormats/JetReco/interface/CaloJetCollection.h"
00013 #include "DataFormats/JetReco/interface/CaloJet.h"
00014
00015 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00016
00017
00018 #include <string>
00019 using namespace edm;
00020
00021
00022 JetAnalyzer::JetAnalyzer(const edm::ParameterSet& pSet) {
00023
00024 parameters = pSet;
00025 _leadJetFlag = 0;
00026 _JetLoPass = 0;
00027 _JetHiPass = 0;
00028 _ptThreshold = 20.;
00029 _asymmetryThirdJetCut = 5.;
00030 _balanceThirdJetCut = 0.2;
00031 _n90HitsMin =0;
00032 _fHPDMax=1.;
00033 _resEMFMin=0.;
00034 _n90HitsMinLoose =0;
00035 _fHPDMaxLoose=1.;
00036 _resEMFMinLoose=0.;
00037 _n90HitsMinTight =0;
00038 _fHPDMaxTight=1.;
00039 _resEMFMinTight=0.;
00040 _sigmaEtaMinTight=-999.;
00041 _sigmaPhiMinTight=-999.;
00042
00043 }
00044
00045
00046 JetAnalyzer::~JetAnalyzer() { }
00047
00048
00049
00050 void JetAnalyzer::beginJob(DQMStore * dbe) {
00051
00052 jetname = "jetAnalyzer";
00053
00054 LogTrace(jetname)<<"[JetAnalyzer] Parameters initialization";
00055 dbe->setCurrentFolder("JetMET/Jet/"+_source);
00056
00057 jetME = dbe->book1D("jetReco", "jetReco", 3, 1, 4);
00058 jetME->setBinLabel(1,"CaloJets",1);
00059
00060
00061 jetID = new reco::helper::JetIDHelper(parameters.getParameter<ParameterSet>("JetIDParams"));
00062
00063
00064 fillJIDPassFrac = parameters.getParameter<int>("fillJIDPassFrac");
00065 makedijetselection = parameters.getParameter<int>("makedijetselection");
00066
00067
00068 etaBin = parameters.getParameter<int>("etaBin");
00069 etaMin = parameters.getParameter<double>("etaMin");
00070 etaMax = parameters.getParameter<double>("etaMax");
00071
00072
00073 phiBin = parameters.getParameter<int>("phiBin");
00074 phiMin = parameters.getParameter<double>("phiMin");
00075 phiMax = parameters.getParameter<double>("phiMax");
00076
00077
00078 ptBin = parameters.getParameter<int>("ptBin");
00079 ptMin = parameters.getParameter<double>("ptMin");
00080 ptMax = parameters.getParameter<double>("ptMax");
00081
00082
00083 eBin = parameters.getParameter<int>("eBin");
00084 eMin = parameters.getParameter<double>("eMin");
00085 eMax = parameters.getParameter<double>("eMax");
00086
00087
00088 pBin = parameters.getParameter<int>("pBin");
00089 pMin = parameters.getParameter<double>("pMin");
00090 pMax = parameters.getParameter<double>("pMax");
00091
00092
00093 _ptThreshold = parameters.getParameter<double>("ptThreshold");
00094 _asymmetryThirdJetCut = parameters.getParameter<double>("asymmetryThirdJetCut");
00095 _balanceThirdJetCut = parameters.getParameter<double>("balanceThirdJetCut");
00096 _n90HitsMin = parameters.getParameter<int>("n90HitsMin");
00097 _fHPDMax = parameters.getParameter<double>("fHPDMax");
00098 _resEMFMin = parameters.getParameter<double>("resEMFMin");
00099 _sigmaEtaMinTight = parameters.getParameter<double>("sigmaEtaMinTight");
00100 _sigmaPhiMinTight = parameters.getParameter<double>("sigmaPhiMinTight");
00101
00102 _n90HitsMinLoose = parameters.getParameter<int>("n90HitsMinLoose");
00103 _fHPDMaxLoose = parameters.getParameter<double>("fHPDMaxLoose");
00104 _resEMFMinLoose = parameters.getParameter<double>("resEMFMinLoose");
00105 _n90HitsMinTight = parameters.getParameter<int>("n90HitsMinTight");
00106 _fHPDMaxTight = parameters.getParameter<double>("fHPDMaxTight");
00107 _resEMFMinTight = parameters.getParameter<double>("resEMFMinTight");
00108
00109
00110
00111 mPt = dbe->book1D("Pt", "Pt", ptBin, ptMin, ptMax);
00112 mEta = dbe->book1D("Eta", "Eta", etaBin, etaMin, etaMax);
00113 mPhi = dbe->book1D("Phi", "Phi", phiBin, phiMin, phiMax);
00114 mConstituents = dbe->book1D("Constituents", "# of Constituents", 50, 0, 100);
00115 mHFrac = dbe->book1D("HFrac", "HFrac", 120, -0.1, 1.1);
00116 mEFrac = dbe->book1D("EFrac", "EFrac", 120, -0.1, 1.1);
00117
00118
00119
00120
00121
00122 mPhiVSEta = dbe->book2D("PhiVSEta", "PhiVSEta", 50, etaMin, etaMax, 24, phiMin, phiMax);
00123 if(makedijetselection!=1){
00124 mPt_1 = dbe->book1D("Pt1", "Pt1", 20, 0, 100);
00125 mPt_2 = dbe->book1D("Pt2", "Pt2", 60, 0, 300);
00126 mPt_3 = dbe->book1D("Pt3", "Pt3", 100, 0, 5000);
00127
00128 mPt_Lo = dbe->book1D("Pt_Lo", "Pt (Pass Low Pt Jet Trigger)", 20, 0, 100);
00129
00130 mPhi_Lo = dbe->book1D("Phi_Lo", "Phi (Pass Low Pt Jet Trigger)", phiBin, phiMin, phiMax);
00131
00132 mPt_Hi = dbe->book1D("Pt_Hi", "Pt (Pass Hi Pt Jet Trigger)", 60, 0, 300);
00133 mEta_Hi = dbe->book1D("Eta_Hi", "Eta (Pass Hi Pt Jet Trigger)", etaBin, etaMin, etaMax);
00134 mPhi_Hi = dbe->book1D("Phi_Hi", "Phi (Pass Hi Pt Jet Trigger)", phiBin, phiMin, phiMax);
00135 mNJets = dbe->book1D("NJets", "Number of Jets", 100, 0, 100);
00136
00137
00138
00139 mConstituents_Barrel = dbe->book1D("Constituents_Barrel", "Constituents Barrel above", 50, 0, 100);
00140 mHFrac_Barrel = dbe->book1D("HFrac_Barrel", "HFrac Barrel", 100, 0, 1);
00141 mEFrac_Barrel = dbe->book1D("EFrac_Barrel", "EFrac Barrel", 110, -0.05, 1.05);
00142
00143
00144
00145 mConstituents_EndCap = dbe->book1D("Constituents_EndCap", "Constituents EndCap", 50, 0, 100);
00146 mHFrac_EndCap = dbe->book1D("HFrac_Endcap", "HFrac EndCap", 100, 0, 1);
00147 mEFrac_EndCap = dbe->book1D("EFrac_Endcap", "EFrac EndCap", 110, -0.05, 1.05);
00148
00149
00150
00151 mConstituents_Forward = dbe->book1D("Constituents_Forward", "Constituents Forward", 50, 0, 100);
00152 mHFrac_Forward = dbe->book1D("HFrac_Forward", "HFrac Forward", 100, 0, 1);
00153 mEFrac_Forward = dbe->book1D("EFrac_Forward", "EFrac Forward", 110, -0.05, 1.05);
00154
00155 mPt_Barrel_Hi = dbe->book1D("Pt_Barrel_Hi", "Pt Barrel (Pass Hi Pt Jet Trigger)", 60, 0, 300);
00156 mPhi_Barrel_Hi = dbe->book1D("Phi_Barrel_Hi", "Phi Barrel (Pass Hi Pt Jet Trigger)", phiBin, phiMin, phiMax);
00157
00158
00159
00160 mPt_EndCap_Hi = dbe->book1D("Pt_EndCap_Hi", "Pt EndCap (Pass Hi Pt Jet Trigger)", 60, 0, 300);
00161 mPhi_EndCap_Hi = dbe->book1D("Phi_EndCap_Hi", "Phi EndCap (Pass Hi Pt Jet Trigger)", phiBin, phiMin, phiMax);
00162
00163
00164
00165 mPt_Forward_Hi = dbe->book1D("Pt_Forward_Hi", "Pt Forward (Pass Hi Pt Jet Trigger)", 60, 0, 300);
00166 mPhi_Forward_Hi = dbe->book1D("Phi_Forward_Hi", "Phi Forward (Pass Hi Pt Jet Trigger)", phiBin, phiMin, phiMax);
00167
00168
00169
00170 mPhi_Barrel = dbe->book1D("Phi_Barrel", "Phi_Barrel", phiBin, phiMin, phiMax);
00171
00172 mPt_Barrel = dbe->book1D("Pt_Barrel", "Pt_Barrel", ptBin, ptMin, ptMax);
00173
00174 mPhi_EndCap = dbe->book1D("Phi_EndCap", "Phi_EndCap", phiBin, phiMin, phiMax);
00175
00176 mPt_EndCap = dbe->book1D("Pt_EndCap", "Pt_EndCap", ptBin, ptMin, ptMax);
00177
00178 mPhi_Forward = dbe->book1D("Phi_Forward", "Phi_Forward", phiBin, phiMin, phiMax);
00179
00180 mPt_Forward = dbe->book1D("Pt_Forward", "Pt_Forward", ptBin, ptMin, ptMax);
00181
00182
00183 mEtaFirst = dbe->book1D("EtaFirst", "EtaFirst", 100, -5, 5);
00184 mPhiFirst = dbe->book1D("PhiFirst", "PhiFirst", 70, -3.5, 3.5);
00185
00186 mPtFirst = dbe->book1D("PtFirst", "PtFirst", 100, 0, 500);
00187 if(fillJIDPassFrac==1){
00188 mLooseJIDPassFractionVSeta = dbe->bookProfile("LooseJIDPassFractionVSeta","LooseJIDPassFractionVSeta",etaBin, etaMin, etaMax,0.,1.2);
00189 mLooseJIDPassFractionVSpt = dbe->bookProfile("LooseJIDPassFractionVSpt","LooseJIDPassFractionVSpt",ptBin, ptMin, ptMax,0.,1.2);
00190 mTightJIDPassFractionVSeta = dbe->bookProfile("TightJIDPassFractionVSeta","TightJIDPassFractionVSeta",etaBin, etaMin, etaMax,0.,1.2);
00191 mTightJIDPassFractionVSpt = dbe->bookProfile("TightJIDPassFractionVSpt","TightJIDPassFractionVSpt",ptBin, ptMin, ptMax,0.,1.2);
00192
00193
00194 }
00195 }
00196
00197 mMaxEInEmTowers = dbe->book1D("MaxEInEmTowers", "MaxEInEmTowers", 100, 0, 100);
00198 mMaxEInHadTowers = dbe->book1D("MaxEInHadTowers", "MaxEInHadTowers", 100, 0, 100);
00199 if(makedijetselection!=1) {
00200 mHadEnergyInHO = dbe->book1D("HadEnergyInHO", "HadEnergyInHO", 100, 0, 10);
00201 mHadEnergyInHB = dbe->book1D("HadEnergyInHB", "HadEnergyInHB", 100, 0, 50);
00202 mHadEnergyInHF = dbe->book1D("HadEnergyInHF", "HadEnergyInHF", 100, 0, 50);
00203 mHadEnergyInHE = dbe->book1D("HadEnergyInHE", "HadEnergyInHE", 100, 0, 100);
00204 mEmEnergyInEB = dbe->book1D("EmEnergyInEB", "EmEnergyInEB", 100, 0, 50);
00205 mEmEnergyInEE = dbe->book1D("EmEnergyInEE", "EmEnergyInEE", 100, 0, 50);
00206 mEmEnergyInHF = dbe->book1D("EmEnergyInHF", "EmEnergyInHF", 120, -20, 100);
00207 }
00208 mDPhi = dbe->book1D("DPhi", "dPhi btw the two leading jets", 100, 0., acos(-1.));
00209
00210
00211
00212 mresEMF = dbe->book1D("resEMF", "resEMF", 50, 0., 1.);
00213 mN90Hits = dbe->book1D("N90Hits", "N90Hits", 50, 0., 50);
00214 mfHPD = dbe->book1D("fHPD", "fHPD", 50, 0., 1.);
00215 mfRBX = dbe->book1D("fRBX", "fRBX", 50, 0., 1.);
00216
00217
00218
00219
00220 if(makedijetselection==1) {
00221 mDijetAsymmetry = dbe->book1D("DijetAsymmetry", "DijetAsymmetry", 100, -1., 1.);
00222 mDijetBalance = dbe->book1D("DijetBalance", "DijetBalance", 100, -2., 2.);
00223 if (fillJIDPassFrac==1) {
00224 mLooseJIDPassFractionVSeta = dbe->bookProfile("LooseJIDPassFractionVSeta","LooseJIDPassFractionVSeta",50, -3., 3.,0.,1.2);
00225 mLooseJIDPassFractionVSpt = dbe->bookProfile("LooseJIDPassFractionVSpt","LooseJIDPassFractionVSpt",ptBin, ptMin, ptMax,0.,1.2);
00226 mTightJIDPassFractionVSeta = dbe->bookProfile("TightJIDPassFractionVSeta","TightJIDPassFractionVSeta",50, -3., 3.,0.,1.2);
00227 mTightJIDPassFractionVSpt = dbe->bookProfile("TightJIDPassFractionVSpt","TightJIDPassFractionVSpt",ptBin, ptMin, ptMax,0.,1.2);
00228 }
00229 }
00230 }
00231
00232
00233
00234
00235
00236
00237
00238
00239 void JetAnalyzer::endJob() {
00240 delete jetID;
00241 }
00242
00243
00244
00245 void JetAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup,
00246 const reco::CaloJetCollection& caloJets) {
00247 int numofjets=0;
00248 double fstPhi=0.;
00249 double sndPhi=0.;
00250 double diff = 0.;
00251 double corr = 0.;
00252 double dphi = -999. ;
00253 bool thiscleaned=false;
00254 bool Loosecleaned=false;
00255 bool Tightcleaned=false;
00256 bool thisemfclean=true;
00257 bool emfcleanLoose=true;
00258 bool emfcleanTight=true;
00259
00260 srand( iEvent.id().event() % 10000);
00261
00262 if(makedijetselection==1){
00263
00264
00265 if(caloJets.size()>=2){
00266 double dphiDJ = -999. ;
00267 bool emfcleanLooseFirstJet=true;
00268 bool emfcleanLooseSecondJet=true;
00269 bool emfcleanTightFirstJet=true;
00270 bool emfcleanTightSecondJet=true;
00271 bool LoosecleanedFirstJet = false;
00272 bool LoosecleanedSecondJet = false;
00273 bool TightcleanedFirstJet = false;
00274 bool TightcleanedSecondJet = false;
00275
00276 if ((caloJets.at(0)).pt() > _ptThreshold && (caloJets.at(1)).pt() > _ptThreshold ) {
00277 if(fabs((caloJets.at(0)).eta())<3. && fabs((caloJets.at(1)).eta())<3. ){
00278
00279 dphiDJ = fabs((caloJets.at(0)).phi()-(caloJets.at(1)).phi());
00280 if (dphiDJ > 3.14) dphiDJ=fabs(dphiDJ -6.28 );
00281
00282 if (mDPhi) mDPhi->Fill (dphiDJ);
00283
00284 if(fabs(dphiDJ)>2.1){
00285
00286 emfcleanLooseFirstJet=true;
00287 emfcleanTightFirstJet=true;
00288 emfcleanLooseSecondJet=true;
00289 emfcleanTightSecondJet=true;
00290
00291 jetID->calculate(iEvent, (caloJets.at(0)));
00292 if(jetID->restrictedEMF()<_resEMFMinLoose && fabs((caloJets.at(0)).eta())<2.6) emfcleanLooseFirstJet=false;
00293 if(jetID->restrictedEMF()<_resEMFMinTight && fabs((caloJets.at(0)).eta())<2.6) emfcleanTightFirstJet=false;
00294 if(jetID->n90Hits()>=_n90HitsMinLoose && jetID->fHPD()<_fHPDMaxLoose && emfcleanLooseFirstJet) LoosecleanedFirstJet=true;
00295 if(jetID->n90Hits()>=_n90HitsMinTight && jetID->fHPD()<_fHPDMaxTight && sqrt((caloJets.at(0)).etaetaMoment())>_sigmaEtaMinTight && sqrt((caloJets.at(0)).phiphiMoment())>_sigmaPhiMinTight && emfcleanTightFirstJet) TightcleanedFirstJet=true;
00296
00297 if (mN90Hits) mN90Hits->Fill (jetID->n90Hits());
00298 if (mfHPD) mfHPD->Fill (jetID->fHPD());
00299 if (mresEMF) mresEMF->Fill (jetID->restrictedEMF());
00300 if (mfRBX) mfRBX->Fill (jetID->fRBX());
00301
00302
00303 jetID->calculate(iEvent, (caloJets.at(1)));
00304 if(jetID->restrictedEMF()<_resEMFMinLoose && fabs((caloJets.at(1)).eta())<2.6) emfcleanLooseSecondJet=false;
00305 if(jetID->restrictedEMF()<_resEMFMinTight && fabs((caloJets.at(1)).eta())<2.6) emfcleanTightSecondJet=false;
00306 if(jetID->n90Hits()>=_n90HitsMinLoose && jetID->fHPD()<_fHPDMaxLoose && emfcleanLooseSecondJet) LoosecleanedSecondJet=true;
00307 if(jetID->n90Hits()>=_n90HitsMinTight && jetID->fHPD()<_fHPDMaxTight && sqrt((caloJets.at(1)).etaetaMoment())>_sigmaEtaMinTight && sqrt((caloJets.at(1)).phiphiMoment())>_sigmaPhiMinTight && emfcleanTightSecondJet) TightcleanedSecondJet=true;
00308
00309 if (mN90Hits) mN90Hits->Fill (jetID->n90Hits());
00310 if (mfHPD) mfHPD->Fill (jetID->fHPD());
00311 if (mresEMF) mresEMF->Fill (jetID->restrictedEMF());
00312 if (mfRBX) mfRBX->Fill (jetID->fRBX());
00313
00314 if(LoosecleanedFirstJet && LoosecleanedSecondJet) {
00315
00316 if (mPt) mPt->Fill ((caloJets.at(0)).pt());
00317 if (mEta) mEta->Fill ((caloJets.at(0)).eta());
00318 if (mPhi) mPhi->Fill ((caloJets.at(0)).phi());
00319 if (mPhiVSEta) mPhiVSEta->Fill((caloJets.at(0)).eta(),(caloJets.at(0)).phi());
00320 if (mConstituents) mConstituents->Fill ((caloJets.at(0)).nConstituents());
00321 if (mHFrac) mHFrac->Fill ((caloJets.at(0)).energyFractionHadronic());
00322 if (mEFrac) mEFrac->Fill ((caloJets.at(0)).emEnergyFraction());
00323
00324
00325
00326 if (mMaxEInEmTowers) mMaxEInEmTowers->Fill ((caloJets.at(0)).maxEInEmTowers());
00327 if (mMaxEInHadTowers) mMaxEInHadTowers->Fill ((caloJets.at(0)).maxEInHadTowers());
00328 if (mN90Hits) mN90Hits->Fill (jetID->n90Hits());
00329 if (mfHPD) mfHPD->Fill (jetID->fHPD());
00330 if (mresEMF) mresEMF->Fill (jetID->restrictedEMF());
00331 if (mfRBX) mfRBX->Fill (jetID->fRBX());
00332
00333
00334
00335
00336
00337 if (mPt) mPt->Fill ((caloJets.at(1)).pt());
00338 if (mEta) mEta->Fill ((caloJets.at(1)).eta());
00339 if (mPhi) mPhi->Fill ((caloJets.at(1)).phi());
00340 if (mPhiVSEta) mPhiVSEta->Fill((caloJets.at(1)).eta(),(caloJets.at(1)).phi());
00341 if (mConstituents) mConstituents->Fill ((caloJets.at(1)).nConstituents());
00342 if (mHFrac) mHFrac->Fill ((caloJets.at(1)).energyFractionHadronic());
00343 if (mEFrac) mEFrac->Fill ((caloJets.at(1)).emEnergyFraction());
00344
00345
00346
00347 if (mMaxEInEmTowers) mMaxEInEmTowers->Fill ((caloJets.at(1)).maxEInEmTowers());
00348 if (mMaxEInHadTowers) mMaxEInHadTowers->Fill ((caloJets.at(1)).maxEInHadTowers());
00349
00350
00351
00352
00353
00354 }
00355
00356 if(fillJIDPassFrac==1) {
00357 if(LoosecleanedFirstJet) {
00358 mLooseJIDPassFractionVSeta->Fill((caloJets.at(0)).eta(),1.);
00359 mLooseJIDPassFractionVSpt->Fill((caloJets.at(0)).pt(),1.);
00360 } else {
00361 mLooseJIDPassFractionVSeta->Fill((caloJets.at(0)).eta(),0.);
00362 mLooseJIDPassFractionVSpt->Fill((caloJets.at(0)).pt(),0.);
00363 }
00364 if(LoosecleanedSecondJet) {
00365 mLooseJIDPassFractionVSeta->Fill((caloJets.at(1)).eta(),1.);
00366 mLooseJIDPassFractionVSpt->Fill((caloJets.at(1)).pt(),1.);
00367 } else {
00368 mLooseJIDPassFractionVSeta->Fill((caloJets.at(1)).eta(),0.);
00369 mLooseJIDPassFractionVSpt->Fill((caloJets.at(1)).pt(),0.);
00370 }
00371
00372 if(TightcleanedFirstJet) {
00373 mTightJIDPassFractionVSeta->Fill((caloJets.at(0)).eta(),1.);
00374 mTightJIDPassFractionVSpt->Fill((caloJets.at(0)).pt(),1.);
00375 } else {
00376 mTightJIDPassFractionVSeta->Fill((caloJets.at(0)).eta(),0.);
00377 mTightJIDPassFractionVSpt->Fill((caloJets.at(0)).pt(),0.);
00378 }
00379 if(TightcleanedSecondJet) {
00380 mTightJIDPassFractionVSeta->Fill((caloJets.at(1)).eta(),1.);
00381 mTightJIDPassFractionVSpt->Fill((caloJets.at(1)).pt(),1.);
00382 } else {
00383 mTightJIDPassFractionVSeta->Fill((caloJets.at(1)).eta(),0.);
00384 mTightJIDPassFractionVSpt->Fill((caloJets.at(1)).pt(),0.);
00385 }
00386
00387 }
00388 }
00389 }
00390 }
00391
00392 if (fabs(caloJets.at(0).eta() < 1.4)) {
00393 double pt_dijet = (caloJets.at(0).pt() + caloJets.at(1).pt())/2;
00394
00395 double dPhi = fabs((caloJets.at(0)).phi()-(caloJets.at(1)).phi());
00396 if (dPhi > 3.14) dPhi=fabs(dPhi -6.28 );
00397
00398 if (dPhi > 2.7) {
00399 double pt_probe;
00400 double pt_barrel;
00401 int jet1, jet2;
00402
00403 int randJet = rand() % 2;
00404
00405 if (fabs(caloJets.at(1).eta() < 1.4)) {
00406 if (randJet) {
00407 jet1 = 0;
00408 jet2 = 1;
00409 }
00410 else {
00411 jet1 = 1;
00412 jet2 = 0;
00413 }
00414
00415
00416
00417
00418
00419
00420
00421
00422 bool thirdJetCut = true;
00423 for (unsigned int third = 2; third < caloJets.size(); ++third)
00424 if (caloJets.at(third).pt() > _asymmetryThirdJetCut)
00425 thirdJetCut = false;
00426 if (thirdJetCut) {
00427 double dijetAsymmetry = (caloJets.at(jet1).pt() - caloJets.at(jet2).pt()) / (caloJets.at(jet1).pt() + caloJets.at(jet2).pt());
00428 mDijetAsymmetry->Fill(dijetAsymmetry);
00429 }
00430
00431 }
00432 else {
00433 jet1 = 0;
00434 jet2 = 1;
00435 }
00436
00437 pt_barrel = caloJets.at(jet1).pt();
00438 pt_probe = caloJets.at(jet2).pt();
00439
00440
00441
00442
00443
00444
00445
00446
00447
00448
00449 bool thirdJetCut = true;
00450 for (unsigned int third = 2; third < caloJets.size(); ++third)
00451 if (caloJets.at(third).pt()/pt_dijet > _balanceThirdJetCut)
00452 thirdJetCut = false;
00453 if (thirdJetCut) {
00454 double dijetBalance = (pt_probe - pt_barrel) / pt_dijet;
00455 mDijetBalance->Fill(dijetBalance);
00456 }
00457 }
00458 }
00459 }
00460 }
00461 else {
00462 for (reco::CaloJetCollection::const_iterator jet = caloJets.begin(); jet!=caloJets.end(); ++jet) {
00463 LogTrace(jetname)<<"[JetAnalyzer] Analyze Calo Jet";
00464 Loosecleaned=false;
00465 Tightcleaned=false;
00466 if (jet == caloJets.begin()) {
00467 fstPhi = jet->phi();
00468 _leadJetFlag = 1;
00469 } else {
00470 _leadJetFlag = 0;
00471 }
00472 if (jet == (caloJets.begin()+1)) sndPhi = jet->phi();
00473
00474 jetID->calculate(iEvent, *jet);
00475
00476 if (jet->pt() > _ptThreshold) {
00477
00478
00479
00480 thisemfclean=true;
00481 if(jetID->restrictedEMF()<_resEMFMin && fabs(jet->eta())<2.6) thisemfclean=false;
00482 if(jetID->n90Hits()>=_n90HitsMin && jetID->fHPD()<_fHPDMax && thisemfclean) thiscleaned=true;
00483
00484 if(jetID->n90Hits()>=_n90HitsMinLoose && jetID->fHPD()<_fHPDMaxLoose && emfcleanLoose) Loosecleaned=true;
00485 if(jetID->n90Hits()>=_n90HitsMinTight && jetID->fHPD()<_fHPDMaxTight && sqrt(jet->etaetaMoment())>_sigmaEtaMinTight && sqrt(jet->phiphiMoment())>_sigmaPhiMinTight && emfcleanTight) Tightcleaned=true;
00486
00487 if(fillJIDPassFrac==1) {
00488 if(Loosecleaned) {
00489 mLooseJIDPassFractionVSeta->Fill(jet->eta(),1.);
00490 mLooseJIDPassFractionVSpt->Fill(jet->pt(),1.);
00491 } else {
00492 mLooseJIDPassFractionVSeta->Fill(jet->eta(),0.);
00493 mLooseJIDPassFractionVSpt->Fill(jet->pt(),0.);
00494 }
00495
00496 if(Tightcleaned) {
00497 mTightJIDPassFractionVSeta->Fill(jet->eta(),1.);
00498 mTightJIDPassFractionVSpt->Fill(jet->pt(),1.);
00499 } else {
00500 mTightJIDPassFractionVSeta->Fill(jet->eta(),0.);
00501 mTightJIDPassFractionVSpt->Fill(jet->pt(),0.);
00502 }
00503 }
00504
00505 if(thiscleaned) {
00506 numofjets++ ;
00507 jetME->Fill(1);
00508
00509
00510
00511 if (_leadJetFlag == 1) {
00512 if (mEtaFirst) mEtaFirst->Fill (jet->eta());
00513 if (mPhiFirst) mPhiFirst->Fill (jet->phi());
00514
00515 if (mPtFirst) mPtFirst->Fill (jet->pt());
00516 }
00517
00518 if (_JetLoPass == 1) {
00519
00520
00521
00522
00523
00524
00525
00526
00527
00528
00529
00530
00531
00532
00533
00534
00535 if (mPhi_Lo) mPhi_Lo->Fill (jet->phi());
00536 if (mPt_Lo) mPt_Lo->Fill (jet->pt());
00537 }
00538
00539
00540 if (_JetHiPass == 1) {
00541 if (fabs(jet->eta()) <= 1.3) {
00542 if (mPt_Barrel_Hi && jet->pt()>100.) mPt_Barrel_Hi->Fill(jet->pt());
00543 if (mEta_Hi && jet->pt()>100.) mEta_Hi->Fill(jet->eta());
00544 if (mPhi_Barrel_Hi) mPhi_Barrel_Hi->Fill(jet->phi());
00545
00546
00547 }
00548 if ( (fabs(jet->eta()) > 1.3) && (fabs(jet->eta()) <= 3) ) {
00549 if (mPt_EndCap_Hi && jet->pt()>100.) mPt_EndCap_Hi->Fill(jet->pt());
00550 if (mEta_Hi && jet->pt()>100.) mEta_Hi->Fill(jet->eta());
00551 if (mPhi_EndCap_Hi) mPhi_EndCap_Hi->Fill(jet->phi());
00552
00553
00554 }
00555 if (fabs(jet->eta()) > 3.0) {
00556 if (mPt_Forward_Hi && jet->pt()>100.) mPt_Forward_Hi->Fill(jet->pt());
00557 if (mEta_Hi && jet->pt()>100.) mEta_Hi->Fill(jet->eta());
00558 if (mPhi_Forward_Hi) mPhi_Forward_Hi->Fill(jet->phi());
00559
00560
00561 }
00562
00563 if (mEta_Hi && jet->pt()>100.) mEta_Hi->Fill (jet->eta());
00564 if (mPhi_Hi) mPhi_Hi->Fill (jet->phi());
00565 if (mPt_Hi) mPt_Hi->Fill (jet->pt());
00566 }
00567
00568 if (mPt) mPt->Fill (jet->pt());
00569 if (mPt_1) mPt_1->Fill (jet->pt());
00570 if (mPt_2) mPt_2->Fill (jet->pt());
00571 if (mPt_3) mPt_3->Fill (jet->pt());
00572 if (mEta) mEta->Fill (jet->eta());
00573 if (mPhi) mPhi->Fill (jet->phi());
00574
00575 if (mPhiVSEta) mPhiVSEta->Fill(jet->eta(),jet->phi());
00576
00577 if (mConstituents) mConstituents->Fill (jet->nConstituents());
00578 if (mHFrac) mHFrac->Fill (jet->energyFractionHadronic());
00579 if (mEFrac) mEFrac->Fill (jet->emEnergyFraction());
00580
00581 if (fabs(jet->eta()) <= 1.3) {
00582 if (mPt_Barrel) mPt_Barrel->Fill (jet->pt());
00583 if (mPhi_Barrel) mPhi_Barrel->Fill (jet->phi());
00584
00585 if (mConstituents_Barrel) mConstituents_Barrel->Fill(jet->nConstituents());
00586 if (mHFrac_Barrel) mHFrac_Barrel->Fill(jet->energyFractionHadronic());
00587 if (mEFrac_Barrel) mEFrac_Barrel->Fill(jet->emEnergyFraction());
00588 }
00589 if ( (fabs(jet->eta()) > 1.3) && (fabs(jet->eta()) <= 3) ) {
00590 if (mPt_EndCap) mPt_EndCap->Fill (jet->pt());
00591 if (mPhi_EndCap) mPhi_EndCap->Fill (jet->phi());
00592
00593 if (mConstituents_EndCap) mConstituents_EndCap->Fill(jet->nConstituents());
00594 if (mHFrac_EndCap) mHFrac_EndCap->Fill(jet->energyFractionHadronic());
00595 if (mEFrac_EndCap) mEFrac_EndCap->Fill(jet->emEnergyFraction());
00596 }
00597 if (fabs(jet->eta()) > 3.0) {
00598 if (mPt_Forward) mPt_Forward->Fill (jet->pt());
00599 if (mPhi_Forward) mPhi_Forward->Fill (jet->phi());
00600
00601 if (mConstituents_Forward) mConstituents_Forward->Fill(jet->nConstituents());
00602 if (mHFrac_Forward) mHFrac_Forward->Fill(jet->energyFractionHadronic());
00603 if (mEFrac_Forward) mEFrac_Forward->Fill(jet->emEnergyFraction());
00604 }
00605
00606
00607
00608
00609
00610 if (mMaxEInEmTowers) mMaxEInEmTowers->Fill (jet->maxEInEmTowers());
00611 if (mMaxEInHadTowers) mMaxEInHadTowers->Fill (jet->maxEInHadTowers());
00612
00613 if (mHadEnergyInHO) mHadEnergyInHO->Fill (jet->hadEnergyInHO());
00614 if (mHadEnergyInHB) mHadEnergyInHB->Fill (jet->hadEnergyInHB());
00615 if (mHadEnergyInHF) mHadEnergyInHF->Fill (jet->hadEnergyInHF());
00616 if (mHadEnergyInHE) mHadEnergyInHE->Fill (jet->hadEnergyInHE());
00617 if (mEmEnergyInEB) mEmEnergyInEB->Fill (jet->emEnergyInEB());
00618 if (mEmEnergyInEE) mEmEnergyInEE->Fill (jet->emEnergyInEE());
00619 if (mEmEnergyInHF) mEmEnergyInHF->Fill (jet->emEnergyInHF());
00620
00621 if (mN90Hits) mN90Hits->Fill (jetID->n90Hits());
00622 if (mfHPD) mfHPD->Fill (jetID->fHPD());
00623 if (mresEMF) mresEMF->Fill (jetID->restrictedEMF());
00624 if (mfRBX) mfRBX->Fill (jetID->fRBX());
00625
00626
00627 if(numofjets>1) {
00628 diff = fabs(fstPhi - sndPhi);
00629 corr = 2*acos(-1.) - diff;
00630 if(diff < acos(-1.)) {
00631 dphi = diff;
00632 } else {
00633 dphi = corr;
00634 }
00635 }
00636 }
00637 }
00638 }
00639 if (mNJets) mNJets->Fill (numofjets);
00640 if (mDPhi && dphi>-998.) mDPhi->Fill (dphi);
00641 }
00642 }
00643