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 mPt_profile = dbe->bookProfile("Pt_profile", "pt", nbinsPV, PVlow, PVup, ptBin, ptMin, ptMax);
00122 mEta_profile = dbe->bookProfile("Eta_profile", "eta", nbinsPV, PVlow, PVup, etaBin, etaMin, etaMax);
00123 mPhi_profile = dbe->bookProfile("Phi_profile", "phi", nbinsPV, PVlow, PVup, phiBin, phiMin, phiMax);
00124 mConstituents_profile = dbe->bookProfile("Constituents_profile", "# of constituents", nbinsPV, PVlow, PVup, 50, 0, 100);
00125 mHFrac_profile = dbe->bookProfile("HFrac_profile", "HFrac", nbinsPV, PVlow, PVup, 120, -0.1, 1.1);
00126 mEFrac_profile = dbe->bookProfile("EFrac_profile", "EFrac", nbinsPV, PVlow, PVup, 120, -0.1, 1.1);
00127
00128 if (makedijetselection != 1)
00129 mNJets_profile = dbe->bookProfile("NJets_profile", "number of jets", nbinsPV, PVlow, PVup, 100, 0, 100);
00130
00131
00132
00133
00134 mPt_profile ->setAxisTitle("nvtx",1);
00135 mEta_profile ->setAxisTitle("nvtx",1);
00136 mPhi_profile ->setAxisTitle("nvtx",1);
00137 mConstituents_profile->setAxisTitle("nvtx",1);
00138 mHFrac_profile ->setAxisTitle("nvtx",1);
00139 mEFrac_profile ->setAxisTitle("nvtx",1);
00140
00141 if (makedijetselection != 1) {
00142 mNJets_profile->setAxisTitle("nvtx",1);
00143 }
00144
00145
00146
00147
00148
00149
00150 mPhiVSEta = dbe->book2D("PhiVSEta", "PhiVSEta", 50, etaMin, etaMax, 24, phiMin, phiMax);
00151 if(makedijetselection!=1){
00152 mPt_1 = dbe->book1D("Pt1", "Pt1", 20, 0, 100);
00153 mPt_2 = dbe->book1D("Pt2", "Pt2", 60, 0, 300);
00154 mPt_3 = dbe->book1D("Pt3", "Pt3", 100, 0, 5000);
00155
00156 mPt_Lo = dbe->book1D("Pt_Lo", "Pt (Pass Low Pt Jet Trigger)", 20, 0, 100);
00157
00158 mPhi_Lo = dbe->book1D("Phi_Lo", "Phi (Pass Low Pt Jet Trigger)", phiBin, phiMin, phiMax);
00159
00160 mPt_Hi = dbe->book1D("Pt_Hi", "Pt (Pass Hi Pt Jet Trigger)", 60, 0, 300);
00161 mEta_Hi = dbe->book1D("Eta_Hi", "Eta (Pass Hi Pt Jet Trigger)", etaBin, etaMin, etaMax);
00162 mPhi_Hi = dbe->book1D("Phi_Hi", "Phi (Pass Hi Pt Jet Trigger)", phiBin, phiMin, phiMax);
00163 mNJets = dbe->book1D("NJets", "number of jets", 100, 0, 100);
00164
00165
00166
00167 mConstituents_Barrel = dbe->book1D("Constituents_Barrel", "Constituents Barrel above", 50, 0, 100);
00168 mHFrac_Barrel = dbe->book1D("HFrac_Barrel", "HFrac Barrel", 100, 0, 1);
00169 mEFrac_Barrel = dbe->book1D("EFrac_Barrel", "EFrac Barrel", 110, -0.05, 1.05);
00170
00171
00172
00173 mConstituents_EndCap = dbe->book1D("Constituents_EndCap", "Constituents EndCap", 50, 0, 100);
00174 mHFrac_EndCap = dbe->book1D("HFrac_Endcap", "HFrac EndCap", 100, 0, 1);
00175 mEFrac_EndCap = dbe->book1D("EFrac_Endcap", "EFrac EndCap", 110, -0.05, 1.05);
00176
00177
00178
00179 mConstituents_Forward = dbe->book1D("Constituents_Forward", "Constituents Forward", 50, 0, 100);
00180 mHFrac_Forward = dbe->book1D("HFrac_Forward", "HFrac Forward", 100, 0, 1);
00181 mEFrac_Forward = dbe->book1D("EFrac_Forward", "EFrac Forward", 110, -0.05, 1.05);
00182
00183 mPt_Barrel_Hi = dbe->book1D("Pt_Barrel_Hi", "Pt Barrel (Pass Hi Pt Jet Trigger)", 60, 0, 300);
00184 mPhi_Barrel_Hi = dbe->book1D("Phi_Barrel_Hi", "Phi Barrel (Pass Hi Pt Jet Trigger)", phiBin, phiMin, phiMax);
00185
00186
00187
00188 mPt_EndCap_Hi = dbe->book1D("Pt_EndCap_Hi", "Pt EndCap (Pass Hi Pt Jet Trigger)", 60, 0, 300);
00189 mPhi_EndCap_Hi = dbe->book1D("Phi_EndCap_Hi", "Phi EndCap (Pass Hi Pt Jet Trigger)", phiBin, phiMin, phiMax);
00190
00191
00192
00193 mPt_Forward_Hi = dbe->book1D("Pt_Forward_Hi", "Pt Forward (Pass Hi Pt Jet Trigger)", 60, 0, 300);
00194 mPhi_Forward_Hi = dbe->book1D("Phi_Forward_Hi", "Phi Forward (Pass Hi Pt Jet Trigger)", phiBin, phiMin, phiMax);
00195
00196
00197
00198 mPhi_Barrel = dbe->book1D("Phi_Barrel", "Phi_Barrel", phiBin, phiMin, phiMax);
00199
00200 mPt_Barrel = dbe->book1D("Pt_Barrel", "Pt_Barrel", ptBin, ptMin, ptMax);
00201
00202 mPhi_EndCap = dbe->book1D("Phi_EndCap", "Phi_EndCap", phiBin, phiMin, phiMax);
00203
00204 mPt_EndCap = dbe->book1D("Pt_EndCap", "Pt_EndCap", ptBin, ptMin, ptMax);
00205
00206 mPhi_Forward = dbe->book1D("Phi_Forward", "Phi_Forward", phiBin, phiMin, phiMax);
00207
00208 mPt_Forward = dbe->book1D("Pt_Forward", "Pt_Forward", ptBin, ptMin, ptMax);
00209
00210
00211 mEtaFirst = dbe->book1D("EtaFirst", "EtaFirst", 100, -5, 5);
00212 mPhiFirst = dbe->book1D("PhiFirst", "PhiFirst", 70, -3.5, 3.5);
00213
00214 mPtFirst = dbe->book1D("PtFirst", "PtFirst", 100, 0, 500);
00215 if(fillJIDPassFrac==1){
00216 mLooseJIDPassFractionVSeta = dbe->bookProfile("LooseJIDPassFractionVSeta","LooseJIDPassFractionVSeta",etaBin, etaMin, etaMax,0.,1.2);
00217 mLooseJIDPassFractionVSpt = dbe->bookProfile("LooseJIDPassFractionVSpt","LooseJIDPassFractionVSpt",ptBin, ptMin, ptMax,0.,1.2);
00218 mTightJIDPassFractionVSeta = dbe->bookProfile("TightJIDPassFractionVSeta","TightJIDPassFractionVSeta",etaBin, etaMin, etaMax,0.,1.2);
00219 mTightJIDPassFractionVSpt = dbe->bookProfile("TightJIDPassFractionVSpt","TightJIDPassFractionVSpt",ptBin, ptMin, ptMax,0.,1.2);
00220
00221
00222 }
00223 }
00224
00225 mMaxEInEmTowers = dbe->book1D("MaxEInEmTowers", "MaxEInEmTowers", 100, 0, 100);
00226 mMaxEInHadTowers = dbe->book1D("MaxEInHadTowers", "MaxEInHadTowers", 100, 0, 100);
00227 if(makedijetselection!=1) {
00228 mHadEnergyInHO = dbe->book1D("HadEnergyInHO", "HadEnergyInHO", 100, 0, 10);
00229 mHadEnergyInHB = dbe->book1D("HadEnergyInHB", "HadEnergyInHB", 100, 0, 50);
00230 mHadEnergyInHF = dbe->book1D("HadEnergyInHF", "HadEnergyInHF", 100, 0, 50);
00231 mHadEnergyInHE = dbe->book1D("HadEnergyInHE", "HadEnergyInHE", 100, 0, 100);
00232 mEmEnergyInEB = dbe->book1D("EmEnergyInEB", "EmEnergyInEB", 100, 0, 50);
00233 mEmEnergyInEE = dbe->book1D("EmEnergyInEE", "EmEnergyInEE", 100, 0, 50);
00234 mEmEnergyInHF = dbe->book1D("EmEnergyInHF", "EmEnergyInHF", 120, -20, 100);
00235 }
00236 mDPhi = dbe->book1D("DPhi", "dPhi btw the two leading jets", 100, 0., acos(-1.));
00237
00238
00239
00240 mresEMF = dbe->book1D("resEMF", "resEMF", 50, 0., 1.);
00241 mN90Hits = dbe->book1D("N90Hits", "N90Hits", 50, 0., 50);
00242 mfHPD = dbe->book1D("fHPD", "fHPD", 50, 0., 1.);
00243 mfRBX = dbe->book1D("fRBX", "fRBX", 50, 0., 1.);
00244
00245
00246
00247
00248 if(makedijetselection==1) {
00249 mDijetAsymmetry = dbe->book1D("DijetAsymmetry", "DijetAsymmetry", 100, -1., 1.);
00250 mDijetBalance = dbe->book1D("DijetBalance", "DijetBalance", 100, -2., 2.);
00251 if (fillJIDPassFrac==1) {
00252 mLooseJIDPassFractionVSeta = dbe->bookProfile("LooseJIDPassFractionVSeta","LooseJIDPassFractionVSeta",50, -3., 3.,0.,1.2);
00253 mLooseJIDPassFractionVSpt = dbe->bookProfile("LooseJIDPassFractionVSpt","LooseJIDPassFractionVSpt",ptBin, ptMin, ptMax,0.,1.2);
00254 mTightJIDPassFractionVSeta = dbe->bookProfile("TightJIDPassFractionVSeta","TightJIDPassFractionVSeta",50, -3., 3.,0.,1.2);
00255 mTightJIDPassFractionVSpt = dbe->bookProfile("TightJIDPassFractionVSpt","TightJIDPassFractionVSpt",ptBin, ptMin, ptMax,0.,1.2);
00256 }
00257 }
00258 }
00259
00260
00261
00262
00263
00264
00265
00266
00267 void JetAnalyzer::endJob() {
00268 delete jetID;
00269 }
00270
00271
00272
00273 void JetAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup,
00274 const reco::CaloJetCollection& caloJets,
00275 const int numPV) {
00276 int numofjets=0;
00277 double fstPhi=0.;
00278 double sndPhi=0.;
00279 double diff = 0.;
00280 double corr = 0.;
00281 double dphi = -999. ;
00282 bool thiscleaned=false;
00283 bool Loosecleaned=false;
00284 bool Tightcleaned=false;
00285 bool thisemfclean=true;
00286 bool emfcleanLoose=true;
00287 bool emfcleanTight=true;
00288
00289 srand( iEvent.id().event() % 10000);
00290
00291
00292 if (makedijetselection == 1) {
00293
00294
00295 if(caloJets.size()>=2){
00296 double dphiDJ = -999. ;
00297 bool emfcleanLooseFirstJet=true;
00298 bool emfcleanLooseSecondJet=true;
00299 bool emfcleanTightFirstJet=true;
00300 bool emfcleanTightSecondJet=true;
00301 bool LoosecleanedFirstJet = false;
00302 bool LoosecleanedSecondJet = false;
00303 bool TightcleanedFirstJet = false;
00304 bool TightcleanedSecondJet = false;
00305
00306 if ((caloJets.at(0)).pt() > _ptThreshold && (caloJets.at(1)).pt() > _ptThreshold ) {
00307 if(fabs((caloJets.at(0)).eta())<3. && fabs((caloJets.at(1)).eta())<3. ){
00308
00309 dphiDJ = fabs((caloJets.at(0)).phi()-(caloJets.at(1)).phi());
00310 if (dphiDJ > 3.14) dphiDJ=fabs(dphiDJ -6.28 );
00311
00312 if (mDPhi) mDPhi->Fill (dphiDJ);
00313
00314 if(fabs(dphiDJ)>2.1){
00315
00316 emfcleanLooseFirstJet=true;
00317 emfcleanTightFirstJet=true;
00318 emfcleanLooseSecondJet=true;
00319 emfcleanTightSecondJet=true;
00320
00321 jetID->calculate(iEvent, (caloJets.at(0)));
00322 if(jetID->restrictedEMF()<_resEMFMinLoose && fabs((caloJets.at(0)).eta())<2.6) emfcleanLooseFirstJet=false;
00323 if(jetID->restrictedEMF()<_resEMFMinTight && fabs((caloJets.at(0)).eta())<2.6) emfcleanTightFirstJet=false;
00324 if(jetID->n90Hits()>=_n90HitsMinLoose && jetID->fHPD()<_fHPDMaxLoose && emfcleanLooseFirstJet) LoosecleanedFirstJet=true;
00325 if(jetID->n90Hits()>=_n90HitsMinTight && jetID->fHPD()<_fHPDMaxTight && sqrt((caloJets.at(0)).etaetaMoment())>_sigmaEtaMinTight && sqrt((caloJets.at(0)).phiphiMoment())>_sigmaPhiMinTight && emfcleanTightFirstJet) TightcleanedFirstJet=true;
00326
00327 if (mN90Hits) mN90Hits->Fill (jetID->n90Hits());
00328 if (mfHPD) mfHPD->Fill (jetID->fHPD());
00329 if (mresEMF) mresEMF->Fill (jetID->restrictedEMF());
00330 if (mfRBX) mfRBX->Fill (jetID->fRBX());
00331
00332
00333 jetID->calculate(iEvent, (caloJets.at(1)));
00334 if(jetID->restrictedEMF()<_resEMFMinLoose && fabs((caloJets.at(1)).eta())<2.6) emfcleanLooseSecondJet=false;
00335 if(jetID->restrictedEMF()<_resEMFMinTight && fabs((caloJets.at(1)).eta())<2.6) emfcleanTightSecondJet=false;
00336 if(jetID->n90Hits()>=_n90HitsMinLoose && jetID->fHPD()<_fHPDMaxLoose && emfcleanLooseSecondJet) LoosecleanedSecondJet=true;
00337 if(jetID->n90Hits()>=_n90HitsMinTight && jetID->fHPD()<_fHPDMaxTight && sqrt((caloJets.at(1)).etaetaMoment())>_sigmaEtaMinTight && sqrt((caloJets.at(1)).phiphiMoment())>_sigmaPhiMinTight && emfcleanTightSecondJet) TightcleanedSecondJet=true;
00338
00339 if (mN90Hits) mN90Hits->Fill (jetID->n90Hits());
00340 if (mfHPD) mfHPD->Fill (jetID->fHPD());
00341 if (mresEMF) mresEMF->Fill (jetID->restrictedEMF());
00342 if (mfRBX) mfRBX->Fill (jetID->fRBX());
00343
00344 if(LoosecleanedFirstJet && LoosecleanedSecondJet) {
00345
00346 if (mPt) mPt->Fill ((caloJets.at(0)).pt());
00347 if (mEta) mEta->Fill ((caloJets.at(0)).eta());
00348 if (mPhi) mPhi->Fill ((caloJets.at(0)).phi());
00349 if (mPhiVSEta) mPhiVSEta->Fill((caloJets.at(0)).eta(),(caloJets.at(0)).phi());
00350 if (mConstituents) mConstituents->Fill ((caloJets.at(0)).nConstituents());
00351 if (mHFrac) mHFrac->Fill ((caloJets.at(0)).energyFractionHadronic());
00352 if (mEFrac) mEFrac->Fill ((caloJets.at(0)).emEnergyFraction());
00353
00354
00355
00356 if (mMaxEInEmTowers) mMaxEInEmTowers->Fill ((caloJets.at(0)).maxEInEmTowers());
00357 if (mMaxEInHadTowers) mMaxEInHadTowers->Fill ((caloJets.at(0)).maxEInHadTowers());
00358 if (mN90Hits) mN90Hits->Fill (jetID->n90Hits());
00359 if (mfHPD) mfHPD->Fill (jetID->fHPD());
00360 if (mresEMF) mresEMF->Fill (jetID->restrictedEMF());
00361 if (mfRBX) mfRBX->Fill (jetID->fRBX());
00362
00363
00364
00365
00366
00367 if (mPt) mPt->Fill ((caloJets.at(1)).pt());
00368 if (mEta) mEta->Fill ((caloJets.at(1)).eta());
00369 if (mPhi) mPhi->Fill ((caloJets.at(1)).phi());
00370 if (mPhiVSEta) mPhiVSEta->Fill((caloJets.at(1)).eta(),(caloJets.at(1)).phi());
00371 if (mConstituents) mConstituents->Fill ((caloJets.at(1)).nConstituents());
00372 if (mHFrac) mHFrac->Fill ((caloJets.at(1)).energyFractionHadronic());
00373 if (mEFrac) mEFrac->Fill ((caloJets.at(1)).emEnergyFraction());
00374
00375
00376
00377 if (mMaxEInEmTowers) mMaxEInEmTowers->Fill ((caloJets.at(1)).maxEInEmTowers());
00378 if (mMaxEInHadTowers) mMaxEInHadTowers->Fill ((caloJets.at(1)).maxEInHadTowers());
00379
00380
00381
00382
00383
00384
00385
00386
00387 for (int ijet=0; ijet<2; ijet++) {
00388
00389 if (mPt_profile) mPt_profile ->Fill(numPV, (caloJets.at(ijet)).pt());
00390 if (mEta_profile) mEta_profile ->Fill(numPV, (caloJets.at(ijet)).eta());
00391 if (mPhi_profile) mPhi_profile ->Fill(numPV, (caloJets.at(ijet)).phi());
00392 if (mConstituents_profile) mConstituents_profile->Fill(numPV, (caloJets.at(ijet)).nConstituents());
00393 if (mHFrac_profile) mHFrac_profile ->Fill(numPV, (caloJets.at(ijet)).energyFractionHadronic());
00394 if (mEFrac_profile) mEFrac_profile ->Fill(numPV, (caloJets.at(ijet)).emEnergyFraction());
00395 }
00396 }
00397
00398
00399
00400 if(fillJIDPassFrac==1) {
00401 if(LoosecleanedFirstJet) {
00402 mLooseJIDPassFractionVSeta->Fill((caloJets.at(0)).eta(),1.);
00403 mLooseJIDPassFractionVSpt->Fill((caloJets.at(0)).pt(),1.);
00404 } else {
00405 mLooseJIDPassFractionVSeta->Fill((caloJets.at(0)).eta(),0.);
00406 mLooseJIDPassFractionVSpt->Fill((caloJets.at(0)).pt(),0.);
00407 }
00408 if(LoosecleanedSecondJet) {
00409 mLooseJIDPassFractionVSeta->Fill((caloJets.at(1)).eta(),1.);
00410 mLooseJIDPassFractionVSpt->Fill((caloJets.at(1)).pt(),1.);
00411 } else {
00412 mLooseJIDPassFractionVSeta->Fill((caloJets.at(1)).eta(),0.);
00413 mLooseJIDPassFractionVSpt->Fill((caloJets.at(1)).pt(),0.);
00414 }
00415
00416 if(TightcleanedFirstJet) {
00417 mTightJIDPassFractionVSeta->Fill((caloJets.at(0)).eta(),1.);
00418 mTightJIDPassFractionVSpt->Fill((caloJets.at(0)).pt(),1.);
00419 } else {
00420 mTightJIDPassFractionVSeta->Fill((caloJets.at(0)).eta(),0.);
00421 mTightJIDPassFractionVSpt->Fill((caloJets.at(0)).pt(),0.);
00422 }
00423 if(TightcleanedSecondJet) {
00424 mTightJIDPassFractionVSeta->Fill((caloJets.at(1)).eta(),1.);
00425 mTightJIDPassFractionVSpt->Fill((caloJets.at(1)).pt(),1.);
00426 } else {
00427 mTightJIDPassFractionVSeta->Fill((caloJets.at(1)).eta(),0.);
00428 mTightJIDPassFractionVSpt->Fill((caloJets.at(1)).pt(),0.);
00429 }
00430
00431 }
00432 }
00433 }
00434 }
00435
00436 if (fabs(caloJets.at(0).eta() < 1.4)) {
00437 double pt_dijet = (caloJets.at(0).pt() + caloJets.at(1).pt())/2;
00438
00439 double dPhi = fabs((caloJets.at(0)).phi()-(caloJets.at(1)).phi());
00440 if (dPhi > 3.14) dPhi=fabs(dPhi -6.28 );
00441
00442 if (dPhi > 2.7) {
00443 double pt_probe;
00444 double pt_barrel;
00445 int jet1, jet2;
00446
00447 int randJet = rand() % 2;
00448
00449 if (fabs(caloJets.at(1).eta() < 1.4)) {
00450 if (randJet) {
00451 jet1 = 0;
00452 jet2 = 1;
00453 }
00454 else {
00455 jet1 = 1;
00456 jet2 = 0;
00457 }
00458
00459
00460
00461
00462
00463
00464
00465
00466 bool thirdJetCut = true;
00467 for (unsigned int third = 2; third < caloJets.size(); ++third)
00468 if (caloJets.at(third).pt() > _asymmetryThirdJetCut)
00469 thirdJetCut = false;
00470 if (thirdJetCut) {
00471 double dijetAsymmetry = (caloJets.at(jet1).pt() - caloJets.at(jet2).pt()) / (caloJets.at(jet1).pt() + caloJets.at(jet2).pt());
00472 mDijetAsymmetry->Fill(dijetAsymmetry);
00473 }
00474
00475 }
00476 else {
00477 jet1 = 0;
00478 jet2 = 1;
00479 }
00480
00481 pt_barrel = caloJets.at(jet1).pt();
00482 pt_probe = caloJets.at(jet2).pt();
00483
00484
00485
00486
00487
00488
00489
00490
00491
00492
00493 bool thirdJetCut = true;
00494 for (unsigned int third = 2; third < caloJets.size(); ++third)
00495 if (caloJets.at(third).pt()/pt_dijet > _balanceThirdJetCut)
00496 thirdJetCut = false;
00497 if (thirdJetCut) {
00498 double dijetBalance = (pt_probe - pt_barrel) / pt_dijet;
00499 mDijetBalance->Fill(dijetBalance);
00500 }
00501 }
00502 }
00503 }
00504 }
00505 else {
00506 for (reco::CaloJetCollection::const_iterator jet = caloJets.begin(); jet!=caloJets.end(); ++jet) {
00507 LogTrace(jetname)<<"[JetAnalyzer] Analyze Calo Jet";
00508 Loosecleaned=false;
00509 Tightcleaned=false;
00510 if (jet == caloJets.begin()) {
00511 fstPhi = jet->phi();
00512 _leadJetFlag = 1;
00513 } else {
00514 _leadJetFlag = 0;
00515 }
00516 if (jet == (caloJets.begin()+1)) sndPhi = jet->phi();
00517
00518 jetID->calculate(iEvent, *jet);
00519
00520 if (jet->pt() > _ptThreshold) {
00521
00522
00523
00524 thisemfclean=true;
00525 if(jetID->restrictedEMF()<_resEMFMin && fabs(jet->eta())<2.6) thisemfclean=false;
00526 if(jetID->n90Hits()>=_n90HitsMin && jetID->fHPD()<_fHPDMax && thisemfclean) thiscleaned=true;
00527
00528 if(jetID->n90Hits()>=_n90HitsMinLoose && jetID->fHPD()<_fHPDMaxLoose && emfcleanLoose) Loosecleaned=true;
00529 if(jetID->n90Hits()>=_n90HitsMinTight && jetID->fHPD()<_fHPDMaxTight && sqrt(jet->etaetaMoment())>_sigmaEtaMinTight && sqrt(jet->phiphiMoment())>_sigmaPhiMinTight && emfcleanTight) Tightcleaned=true;
00530
00531 if(fillJIDPassFrac==1) {
00532 if(Loosecleaned) {
00533 mLooseJIDPassFractionVSeta->Fill(jet->eta(),1.);
00534 mLooseJIDPassFractionVSpt->Fill(jet->pt(),1.);
00535 } else {
00536 mLooseJIDPassFractionVSeta->Fill(jet->eta(),0.);
00537 mLooseJIDPassFractionVSpt->Fill(jet->pt(),0.);
00538 }
00539
00540 if(Tightcleaned) {
00541 mTightJIDPassFractionVSeta->Fill(jet->eta(),1.);
00542 mTightJIDPassFractionVSpt->Fill(jet->pt(),1.);
00543 } else {
00544 mTightJIDPassFractionVSeta->Fill(jet->eta(),0.);
00545 mTightJIDPassFractionVSpt->Fill(jet->pt(),0.);
00546 }
00547 }
00548
00549 if(thiscleaned) {
00550 numofjets++ ;
00551 jetME->Fill(1);
00552
00553
00554
00555 if (_leadJetFlag == 1) {
00556 if (mEtaFirst) mEtaFirst->Fill (jet->eta());
00557 if (mPhiFirst) mPhiFirst->Fill (jet->phi());
00558
00559 if (mPtFirst) mPtFirst->Fill (jet->pt());
00560 }
00561
00562 if (_JetLoPass == 1) {
00563
00564
00565
00566
00567
00568
00569
00570
00571
00572
00573
00574
00575
00576
00577
00578
00579 if (mPhi_Lo) mPhi_Lo->Fill (jet->phi());
00580 if (mPt_Lo) mPt_Lo->Fill (jet->pt());
00581 }
00582
00583
00584 if (_JetHiPass == 1) {
00585 if (fabs(jet->eta()) <= 1.3) {
00586 if (mPt_Barrel_Hi && jet->pt()>100.) mPt_Barrel_Hi->Fill(jet->pt());
00587 if (mEta_Hi && jet->pt()>100.) mEta_Hi->Fill(jet->eta());
00588 if (mPhi_Barrel_Hi) mPhi_Barrel_Hi->Fill(jet->phi());
00589
00590
00591 }
00592 if ( (fabs(jet->eta()) > 1.3) && (fabs(jet->eta()) <= 3) ) {
00593 if (mPt_EndCap_Hi && jet->pt()>100.) mPt_EndCap_Hi->Fill(jet->pt());
00594 if (mEta_Hi && jet->pt()>100.) mEta_Hi->Fill(jet->eta());
00595 if (mPhi_EndCap_Hi) mPhi_EndCap_Hi->Fill(jet->phi());
00596
00597
00598 }
00599 if (fabs(jet->eta()) > 3.0) {
00600 if (mPt_Forward_Hi && jet->pt()>100.) mPt_Forward_Hi->Fill(jet->pt());
00601 if (mEta_Hi && jet->pt()>100.) mEta_Hi->Fill(jet->eta());
00602 if (mPhi_Forward_Hi) mPhi_Forward_Hi->Fill(jet->phi());
00603
00604
00605 }
00606
00607 if (mEta_Hi && jet->pt()>100.) mEta_Hi->Fill (jet->eta());
00608 if (mPhi_Hi) mPhi_Hi->Fill (jet->phi());
00609 if (mPt_Hi) mPt_Hi->Fill (jet->pt());
00610 }
00611
00612 if (mPt) mPt->Fill (jet->pt());
00613 if (mPt_1) mPt_1->Fill (jet->pt());
00614 if (mPt_2) mPt_2->Fill (jet->pt());
00615 if (mPt_3) mPt_3->Fill (jet->pt());
00616 if (mEta) mEta->Fill (jet->eta());
00617 if (mPhi) mPhi->Fill (jet->phi());
00618
00619 if (mPhiVSEta) mPhiVSEta->Fill(jet->eta(),jet->phi());
00620
00621 if (mConstituents) mConstituents->Fill (jet->nConstituents());
00622 if (mHFrac) mHFrac->Fill (jet->energyFractionHadronic());
00623 if (mEFrac) mEFrac->Fill (jet->emEnergyFraction());
00624
00625
00626
00627
00628 if (mPt_profile) mPt_profile ->Fill(numPV, jet->pt());
00629 if (mEta_profile) mEta_profile ->Fill(numPV, jet->eta());
00630 if (mPhi_profile) mPhi_profile ->Fill(numPV, jet->phi());
00631 if (mConstituents_profile) mConstituents_profile->Fill(numPV, jet->nConstituents());
00632 if (mHFrac_profile) mHFrac_profile ->Fill(numPV, jet->energyFractionHadronic());
00633 if (mEFrac_profile) mEFrac_profile ->Fill(numPV, jet->emEnergyFraction());
00634
00635
00636 if (fabs(jet->eta()) <= 1.3) {
00637 if (mPt_Barrel) mPt_Barrel->Fill (jet->pt());
00638 if (mPhi_Barrel) mPhi_Barrel->Fill (jet->phi());
00639
00640 if (mConstituents_Barrel) mConstituents_Barrel->Fill(jet->nConstituents());
00641 if (mHFrac_Barrel) mHFrac_Barrel->Fill(jet->energyFractionHadronic());
00642 if (mEFrac_Barrel) mEFrac_Barrel->Fill(jet->emEnergyFraction());
00643 }
00644 if ( (fabs(jet->eta()) > 1.3) && (fabs(jet->eta()) <= 3) ) {
00645 if (mPt_EndCap) mPt_EndCap->Fill (jet->pt());
00646 if (mPhi_EndCap) mPhi_EndCap->Fill (jet->phi());
00647
00648 if (mConstituents_EndCap) mConstituents_EndCap->Fill(jet->nConstituents());
00649 if (mHFrac_EndCap) mHFrac_EndCap->Fill(jet->energyFractionHadronic());
00650 if (mEFrac_EndCap) mEFrac_EndCap->Fill(jet->emEnergyFraction());
00651 }
00652 if (fabs(jet->eta()) > 3.0) {
00653 if (mPt_Forward) mPt_Forward->Fill (jet->pt());
00654 if (mPhi_Forward) mPhi_Forward->Fill (jet->phi());
00655
00656 if (mConstituents_Forward) mConstituents_Forward->Fill(jet->nConstituents());
00657 if (mHFrac_Forward) mHFrac_Forward->Fill(jet->energyFractionHadronic());
00658 if (mEFrac_Forward) mEFrac_Forward->Fill(jet->emEnergyFraction());
00659 }
00660
00661
00662
00663
00664
00665 if (mMaxEInEmTowers) mMaxEInEmTowers->Fill (jet->maxEInEmTowers());
00666 if (mMaxEInHadTowers) mMaxEInHadTowers->Fill (jet->maxEInHadTowers());
00667
00668 if (mHadEnergyInHO) mHadEnergyInHO->Fill (jet->hadEnergyInHO());
00669 if (mHadEnergyInHB) mHadEnergyInHB->Fill (jet->hadEnergyInHB());
00670 if (mHadEnergyInHF) mHadEnergyInHF->Fill (jet->hadEnergyInHF());
00671 if (mHadEnergyInHE) mHadEnergyInHE->Fill (jet->hadEnergyInHE());
00672 if (mEmEnergyInEB) mEmEnergyInEB->Fill (jet->emEnergyInEB());
00673 if (mEmEnergyInEE) mEmEnergyInEE->Fill (jet->emEnergyInEE());
00674 if (mEmEnergyInHF) mEmEnergyInHF->Fill (jet->emEnergyInHF());
00675
00676 if (mN90Hits) mN90Hits->Fill (jetID->n90Hits());
00677 if (mfHPD) mfHPD->Fill (jetID->fHPD());
00678 if (mresEMF) mresEMF->Fill (jetID->restrictedEMF());
00679 if (mfRBX) mfRBX->Fill (jetID->fRBX());
00680
00681
00682 if(numofjets>1) {
00683 diff = fabs(fstPhi - sndPhi);
00684 corr = 2*acos(-1.) - diff;
00685 if(diff < acos(-1.)) {
00686 dphi = diff;
00687 } else {
00688 dphi = corr;
00689 }
00690 }
00691 }
00692 }
00693 }
00694
00695 if (mNJets) mNJets->Fill (numofjets);
00696 if (mDPhi && dphi>-998.) mDPhi->Fill (dphi);
00697
00698
00699 if (mNJets_profile) mNJets_profile->Fill(numPV, numofjets);
00700
00701
00702 }
00703 }
00704