00001
00002
00003
00004
00005
00006 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00007 #include "FWCore/Framework/interface/Event.h"
00008 #include "DataFormats/Common/interface/Handle.h"
00009 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00010 #include "FWCore/ServiceRegistry/interface/Service.h"
00011
00012 #include "DataFormats/Math/interface/deltaR.h"
00013
00014 #include "DQMServices/Core/interface/DQMStore.h"
00015 #include "DQMServices/Core/interface/MonitorElement.h"
00016
00017 #include "DataFormats/JetReco/interface/CaloJet.h"
00018 #include "DataFormats/JetReco/interface/CaloJetCollection.h"
00019 #include "DataFormats/JetReco/interface/GenJet.h"
00020 #include "DataFormats/JetReco/interface/GenJetCollection.h"
00021
00022
00023 #include "DataFormats/METReco/interface/CaloMET.h"
00024 #include "DataFormats/METReco/interface/CaloMETCollection.h"
00025 #include "DataFormats/METReco/interface/GenMET.h"
00026 #include "DataFormats/METReco/interface/GenMETCollection.h"
00027 #include "DataFormats/METReco/interface/MET.h"
00028 #include "DataFormats/METReco/interface/METCollection.h"
00029
00030 #include "RecoJets/JetProducers/interface/JetMatchingTools.h"
00031
00032 #include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h"
00033
00034 #include "CaloJetTester.h"
00035
00036 #include <cmath>
00037
00038 using namespace edm;
00039 using namespace reco;
00040 using namespace std;
00041
00042 namespace {
00043 bool is_B (const reco::Jet& fJet) {return fabs (fJet.eta()) < 1.3;}
00044 bool is_E (const reco::Jet& fJet) {return fabs (fJet.eta()) >= 1.3 && fabs (fJet.eta()) < 3.;}
00045 bool is_F (const reco::Jet& fJet) {return fabs (fJet.eta()) >= 3.;}
00046 }
00047
00048 CaloJetTester::CaloJetTester(const edm::ParameterSet& iConfig)
00049 : mInputCollection (iConfig.getParameter<edm::InputTag>( "src" )),
00050 mInputGenCollection (iConfig.getParameter<edm::InputTag>( "srcGen" )),
00051 mOutputFile (iConfig.getUntrackedParameter<std::string>("outputFile", "")),
00052 mMatchGenPtThreshold (iConfig.getParameter<double>("genPtThreshold")),
00053 mGenEnergyFractionThreshold (iConfig.getParameter<double>("genEnergyFractionThreshold")),
00054 mReverseEnergyFractionThreshold (iConfig.getParameter<double>("reverseEnergyFractionThreshold")),
00055 mRThreshold (iConfig.getParameter<double>("RThreshold")),
00056 mTurnOnEverything (iConfig.getUntrackedParameter<std::string>("TurnOnEverything",""))
00057 {
00058 numberofevents
00059 = mEta = mEtaFineBin = mPhi = mPhiFineBin = mE = mE_80 = mE_3000
00060 = mP = mP_80 = mP_3000 = mPt = mPt_80 = mPt_3000
00061 = mMass = mMass_80 = mMass_3000 = mConstituents = mConstituents_80
00062 = mEtaFirst = mPhiFirst = mEFirst = mEFirst_80 = mEFirst_3000 = mPtFirst = mPtFirst_80 = mPtFirst_3000
00063 = mMjj = mMjj_3000 = mDelEta = mDelPhi = mDelPt
00064 = mMaxEInEmTowers = mMaxEInHadTowers
00065 = mHadEnergyInHO = mHadEnergyInHB = mHadEnergyInHF = mHadEnergyInHE
00066 = mHadEnergyInHO_80 = mHadEnergyInHB_80 = mHadEnergyInHE_80
00067 = mHadEnergyInHO_3000 = mHadEnergyInHB_3000 = mHadEnergyInHE_3000
00068 = mEmEnergyInEB = mEmEnergyInEE = mEmEnergyInHF
00069 = mEmEnergyInEB_80 = mEmEnergyInEE_80
00070 = mEmEnergyInEB_3000 = mEmEnergyInEE_3000
00071 = mEnergyFractionHadronic = mEnergyFractionEm
00072 = mHFLong = mHFTotal = mHFLong_80 = mHFLong_3000 = mHFShort = mHFShort_80 = mHFShort_3000
00073 = mN90
00074 = mCaloMEx = mCaloMEx_3000 = mCaloMEy = mCaloMEy_3000 = mCaloMETSig = mCaloMETSig_3000
00075 = mCaloMET = mCaloMET_3000 = mCaloMETPhi = mCaloSumET = mCaloSumET_3000
00076 = mHadTiming = mEmTiming
00077 = mNJetsEtaC = mNJetsEtaF = mNJets1 = mNJets2
00078 = mAllGenJetsPt = mMatchedGenJetsPt = mAllGenJetsEta = mMatchedGenJetsEta
00079 = mGenJetMatchEnergyFraction = mReverseMatchEnergyFraction = mRMatch
00080 = mDeltaEta = mDeltaPhi = mEScale = mlinEScale = mDeltaE
00081 = mHadEnergyProfile = mEmEnergyProfile = mJetEnergyProfile = mHadJetEnergyProfile = mEMJetEnergyProfile
00082 = mEScale_pt10 = mEScaleFineBin
00083 = mpTScaleB_s = mpTScaleE_s = mpTScaleF_s
00084 = mpTScaleB_d = mpTScaleE_d = mpTScaleF_d
00085 = mpTScale_60_120_s = mpTScale_200_300_s = mpTScale_600_900_s = mpTScale_2700_3500_s
00086 = mpTScale_60_120_d = mpTScale_200_300_d = mpTScale_600_900_d = mpTScale_2700_3500_d
00087 = mpTScale1DB_60_120 = mpTScale1DE_60_120 = mpTScale1DF_60_120
00088 = mpTScale1DB_200_300 = mpTScale1DE_200_300 = mpTScale1DF_200_300
00089 = mpTScale1DB_600_900 = mpTScale1DE_600_900 = mpTScale1DF_600_900
00090 = mpTScale1DB_2700_3500 = mpTScale1DE_2700_3500 = mpTScale1DF_2700_3500
00091 = mpTScale1D_60_120 = mpTScale1D_200_300 = mpTScale1D_600_900 = mpTScale1D_2700_3500
00092 = mHBEne = mHBTime = mHEEne = mHETime = mHFEne = mHFTime = mHOEne = mHOTime
00093 = mEBEne = mEBTime = mEEEne = mEETime
00094 = mPthat_80 = mPthat_3000
00095 = 0;
00096
00097 DQMStore* dbe = &*edm::Service<DQMStore>();
00098 if (dbe) {
00099 dbe->setCurrentFolder("JetMET/RecoJetsV/CaloJetTask_" + mInputCollection.label());
00100
00101 numberofevents = dbe->book1D("numberofevents","numberofevents", 3, 0 , 2);
00102
00103 mEta = dbe->book1D("Eta", "Eta", 100, -5, 5);
00104 mEtaFineBin = dbe->book1D("EtaFineBin_Pt10", "EtaFineBin_Pt10", 500, -5, 5);
00105 mEtaFineBin1p = dbe->book1D("EtaFineBin1p_Pt10", "EtaFineBin1p_Pt10", 100, 0, 1.3);
00106 mEtaFineBin2p = dbe->book1D("EtaFineBin2p_Pt10", "EtaFineBin2p_Pt10", 100, 1.3, 3);
00107 mEtaFineBin3p = dbe->book1D("EtaFineBin3p_Pt10", "EtaFineBin3p_Pt10", 100, 3, 5);
00108 mEtaFineBin1m = dbe->book1D("EtaFineBin1m_Pt10", "EtaFineBin1m_Pt10", 100, -1.3, 0);
00109 mEtaFineBin2m = dbe->book1D("EtaFineBin2m_Pt10", "EtaFineBin2m_Pt10", 100, -3, -1.3);
00110 mEtaFineBin3m = dbe->book1D("EtaFineBin3m_Pt10", "EtaFineBin3m_Pt10", 100, -5, -3);
00111
00112 mPhi = dbe->book1D("Phi", "Phi", 70, -3.5, 3.5);
00113 mPhiFineBin = dbe->book1D("PhiFineBin_Pt10", "PhiFineBin_Pt10", 350, -3.5, 3.5);
00114
00115 mE = dbe->book1D("E", "E", 100, 0, 500);
00116 mE_80 = dbe->book1D("E_80", "E_80", 100, 0, 4500);
00117 mE_3000 = dbe->book1D("E_3000", "E_3000", 100, 0, 6000);
00118
00119 mP = dbe->book1D("P", "P", 100, 0, 500);
00120 mP_80 = dbe->book1D("P_80", "P_80", 100, 0, 4500);
00121 mP_3000 = dbe->book1D("P_3000", "P_3000", 100, 0, 6000);
00122
00123 mPt = dbe->book1D("Pt", "Pt", 100, 0, 50);
00124 mPt_80 = dbe->book1D("Pt_80", "Pt_80", 100, 0, 140);
00125 mPt_3000 = dbe->book1D("Pt_3000", "Pt_3000", 100, 0, 4000);
00126
00127 mMass = dbe->book1D("Mass", "Mass", 100, 0, 25);
00128 mMass_80 = dbe->book1D("Mass_80", "Mass_80", 100, 0, 120);
00129 mMass_3000 = dbe->book1D("Mass_3000", "Mass_3000", 100, 0, 500);
00130
00131 mConstituents = dbe->book1D("Constituents", "# of Constituents", 100, 0, 100);
00132 mConstituents_80 = dbe->book1D("Constituents_80", "# of Constituents_80", 40, 0, 40);
00133
00134 mEtaFirst = dbe->book1D("EtaFirst", "EtaFirst", 100, -5, 5);
00135 mPhiFirst = dbe->book1D("PhiFirst", "PhiFirst", 70, -3.5, 3.5);
00136 mEFirst = dbe->book1D("EFirst", "EFirst", 100, 0, 1000);
00137 mEFirst_80 = dbe->book1D("EFirst_80", "EFirst_80", 100, 0, 180);
00138 mEFirst_3000 = dbe->book1D("EFirst_3000", "EFirst_3000", 100, 0, 4000);
00139 mPtFirst = dbe->book1D("PtFirst", "PtFirst", 100, 0, 50);
00140 mPtFirst_80 = dbe->book1D("PtFirst_80", "PtFirst_80", 100, 0, 140);
00141 mPtFirst_3000 = dbe->book1D("PtFirst_3000", "PtFirst_3000", 100, 0, 4000);
00142
00143 mMjj = dbe->book1D("Mjj", "Mjj", 100, 0, 2000);
00144 mMjj_3000 = dbe->book1D("Mjj_3000", "Mjj_3000", 100, 0, 10000);
00145 mDelEta = dbe->book1D("DelEta", "DelEta", 100, -.5, .5);
00146 mDelPhi = dbe->book1D("DelPhi", "DelPhi", 100, -.5, .5);
00147 mDelPt = dbe->book1D("DelPt", "DelPt", 100, -1, 1);
00148
00149 mMaxEInEmTowers = dbe->book1D("MaxEInEmTowers", "MaxEInEmTowers", 100, 0, 100);
00150 mMaxEInHadTowers = dbe->book1D("MaxEInHadTowers", "MaxEInHadTowers", 100, 0, 100);
00151 mHadEnergyInHO = dbe->book1D("HadEnergyInHO", "HadEnergyInHO", 100, 0, 10);
00152 mHadEnergyInHB = dbe->book1D("HadEnergyInHB", "HadEnergyInHB", 100, 0, 50);
00153 mHadEnergyInHF = dbe->book1D("HadEnergyInHF", "HadEnergyInHF", 100, 0, 50);
00154 mHadEnergyInHE = dbe->book1D("HadEnergyInHE", "HadEnergyInHE", 100, 0, 100);
00155
00156 mHadEnergyInHO_80 = dbe->book1D("HadEnergyInHO_80", "HadEnergyInHO_80", 100, 0, 50);
00157 mHadEnergyInHB_80 = dbe->book1D("HadEnergyInHB_80", "HadEnergyInHB_80", 100, 0, 200);
00158 mHadEnergyInHE_80 = dbe->book1D("HadEnergyInHE_80", "HadEnergyInHE_80", 100, 0, 1000);
00159 mHadEnergyInHO_3000 = dbe->book1D("HadEnergyInHO_3000", "HadEnergyInHO_3000", 100, 0, 500);
00160 mHadEnergyInHB_3000 = dbe->book1D("HadEnergyInHB_3000", "HadEnergyInHB_3000", 100, 0, 3000);
00161 mHadEnergyInHE_3000 = dbe->book1D("HadEnergyInHE_3000", "HadEnergyInHE_3000", 100, 0, 2000);
00162
00163 mEmEnergyInEB = dbe->book1D("EmEnergyInEB", "EmEnergyInEB", 100, 0, 50);
00164 mEmEnergyInEE = dbe->book1D("EmEnergyInEE", "EmEnergyInEE", 100, 0, 50);
00165 mEmEnergyInHF = dbe->book1D("EmEnergyInHF", "EmEnergyInHF", 120, -20, 100);
00166 mEmEnergyInEB_80 = dbe->book1D("EmEnergyInEB_80", "EmEnergyInEB_80", 100, 0, 200);
00167 mEmEnergyInEE_80 = dbe->book1D("EmEnergyInEE_80", "EmEnergyInEE_80", 100, 0, 1000);
00168 mEmEnergyInEB_3000= dbe->book1D("EmEnergyInEB_3000", "EmEnergyInEB_3000", 100, 0, 3000);
00169 mEmEnergyInEE_3000= dbe->book1D("EmEnergyInEE_3000", "EmEnergyInEE_3000", 100, 0, 2000);
00170 mEnergyFractionHadronic = dbe->book1D("EnergyFractionHadronic", "EnergyFractionHadronic", 120, -0.1, 1.1);
00171 mEnergyFractionEm = dbe->book1D("EnergyFractionEm", "EnergyFractionEm", 120, -0.1, 1.1);
00172
00173 mHFTotal = dbe->book1D("HFTotal", "HFTotal", 100, 0, 500);
00174 mHFTotal_80 = dbe->book1D("HFTotal_80", "HFTotal_80", 100, 0, 3000);
00175 mHFTotal_3000 = dbe->book1D("HFTotal_3000", "HFTotal_3000", 100, 0, 6000);
00176 mHFLong = dbe->book1D("HFLong", "HFLong", 100, 0, 500);
00177 mHFLong_80 = dbe->book1D("HFLong_80", "HFLong_80", 100, 0, 200);
00178 mHFLong_3000 = dbe->book1D("HFLong_3000", "HFLong_3000", 100, 0, 1500);
00179 mHFShort = dbe->book1D("HFShort", "HFShort", 100, 0, 500);
00180 mHFShort_80 = dbe->book1D("HFShort_80", "HFShort_80", 100, 0, 200);
00181 mHFShort_3000 = dbe->book1D("HFShort_3000", "HFShort_3000", 100, 0, 1500);
00182
00183 mN90 = dbe->book1D("N90", "N90", 50, 0, 50);
00184
00185 mGenEta = dbe->book1D("GenEta", "GenEta", 100, -5, 5);
00186 mGenPhi = dbe->book1D("GenPhi", "GenPhi", 70, -3.5, 3.5);
00187 mGenPt = dbe->book1D("GenPt", "GenPt", 100, 0, 50);
00188 mGenPt_80 = dbe->book1D("GenPt_80", "GenPt_80", 100, 0, 140);
00189 mGenPt_3000 = dbe->book1D("GenPt_3000", "GenPt_3000", 100, 0, 1500);
00190
00191 mGenEtaFirst = dbe->book1D("GenEtaFirst", "GenEtaFirst", 100, -5, 5);
00192 mGenPhiFirst = dbe->book1D("GenPhiFirst", "GenPhiFirst", 70, -3.5, 3.5);
00193
00194 mCaloMEx = dbe->book1D("CaloMEx","CaloMEx",200,-150,150);
00195 mCaloMEx_3000 = dbe->book1D("CaloMEx_3000","CaloMEx_3000",100,-500,500);
00196 mCaloMEy = dbe->book1D("CaloMEy","CaloMEy",200,-150,150);
00197 mCaloMEy_3000 = dbe->book1D("CaloMEy_3000","CaloMEy_3000",100,-500,500);
00198 mCaloMETSig = dbe->book1D("CaloMETSig","CaloMETSig",100,0,15);
00199 mCaloMETSig_3000 = dbe->book1D("CaloMETSig_3000","CaloMETSig_3000",100,0,50);
00200 mCaloMET = dbe->book1D("CaloMET","CaloMET",100,0,150);
00201 mCaloMET_3000 = dbe->book1D("CaloMET_3000","CaloMET_3000",100,0,1000);
00202 mCaloMETPhi = dbe->book1D("CaloMETPhi","CaloMETPhi",70, -3.5, 3.5);
00203 mCaloSumET = dbe->book1D("CaloSumET","CaloSumET",100,0,500);
00204 mCaloSumET_3000 = dbe->book1D("CaloSumET_3000","CaloSumET_3000",100,3000,8000);
00205
00206 mHadTiming = dbe->book1D("HadTiming", "HadTiming", 75, -50, 100);
00207 mEmTiming = dbe->book1D("EMTiming", "EMTiming", 75, -50, 100);
00208
00209 mNJetsEtaC = dbe->book1D("NJetsEtaC_Pt10", "NJetsEtaC_Pt10", 15, 0, 15);
00210 mNJetsEtaF = dbe->book1D("NJetsEtaF_Pt10", "NJetsEtaF_Pt10", 15, 0, 15);
00211
00212 mNJets1 = dbe->bookProfile("NJets1", "NJets1", 100, 0, 200, 100, 0, 50, "s");
00213 mNJets2 = dbe->bookProfile("NJets2", "NJets2", 100, 0, 4000, 100, 0, 50, "s");
00214
00215 mHBEne = dbe->book1D( "HBEne", "HBEne", 1000, -20, 100 );
00216 mHBTime = dbe->book1D( "HBTime", "HBTime", 200, -200, 200 );
00217 mHEEne = dbe->book1D( "HEEne", "HEEne", 1000, -20, 100 );
00218 mHETime = dbe->book1D( "HETime", "HETime", 200, -200, 200 );
00219 mHOEne = dbe->book1D( "HOEne", "HOEne", 1000, -20, 100 );
00220 mHOTime = dbe->book1D( "HOTime", "HOTime", 200, -200, 200 );
00221 mHFEne = dbe->book1D( "HFEne", "HFEne", 1000, -20, 100 );
00222 mHFTime = dbe->book1D( "HFTime", "HFTime", 200, -200, 200 );
00223 mEBEne = dbe->book1D( "EBEne", "EBEne", 1000, -20, 100 );
00224 mEBTime = dbe->book1D( "EBTime", "EBTime", 200, -200, 200 );
00225 mEEEne = dbe->book1D( "EEEne", "EEEne", 1000, -20, 100 );
00226 mEETime = dbe->book1D( "EETime", "EETime", 200, -200, 200 );
00227
00228 mPthat_80 = dbe->book1D("Pthat_80", "Pthat_80", 100, 40.0, 160.0);
00229 mPthat_3000 = dbe->book1D("Pthat_3000", "Pthat_3000", 100, 2500.0, 4000.0);
00230
00231 double log10PtMin = 0.5;
00232 double log10PtMax = 3.75;
00233 int log10PtBins = 26;
00234 double etaMin = -5.;
00235 double etaMax = 5.;
00236 int etaBins = 50;
00237
00238 double linPtMin = 5;
00239 double linPtMax = 155;
00240 int linPtBins = 15;
00241
00242 int log10PtFineBins = 50;
00243
00244 mAllGenJetsPt = dbe->book1D("GenJetLOGpT", "GenJet LOG(pT_gen)",
00245 log10PtBins, log10PtMin, log10PtMax);
00246 mMatchedGenJetsPt = dbe->book1D("MatchedGenJetLOGpT", "MatchedGenJet LOG(pT_gen)",
00247 log10PtBins, log10PtMin, log10PtMax);
00248 mAllGenJetsEta = dbe->book2D("GenJetEta", "GenJet Eta vs LOG(pT_gen)",
00249 log10PtBins, log10PtMin, log10PtMax, etaBins, etaMin, etaMax);
00250 mMatchedGenJetsEta = dbe->book2D("MatchedGenJetEta", "MatchedGenJet Eta vs LOG(pT_gen)",
00251 log10PtBins, log10PtMin, log10PtMax, etaBins, etaMin, etaMax);
00252
00253 if (mTurnOnEverything.compare("yes")==0) {
00254 mHadEnergyProfile = dbe->bookProfile2D("HadEnergyProfile", "HadEnergyProfile", 82, -41, 41, 73, 0, 73, 100, 0, 10000, "s");
00255 mEmEnergyProfile = dbe->bookProfile2D("EmEnergyProfile", "EmEnergyProfile", 82, -41, 41, 73, 0, 73, 100, 0, 10000, "s");
00256 }
00257 mJetEnergyProfile = dbe->bookProfile2D("JetEnergyProfile", "JetEnergyProfile", 50, -5, 5, 36, -3.1415987, 3.1415987, 100, 0, 10000, "s");
00258 mHadJetEnergyProfile = dbe->bookProfile2D("HadJetEnergyProfile", "HadJetEnergyProfile", 50, -5, 5, 36, -3.1415987, 3.1415987, 100, 0, 10000, "s");
00259 mEMJetEnergyProfile = dbe->bookProfile2D("EMJetEnergyProfile", "EMJetEnergyProfile", 50, -5, 5, 36, -3.1415987, 3.1415987, 100, 0, 10000, "s");
00260
00261 if (mTurnOnEverything.compare("yes")==0) {
00262 mGenJetMatchEnergyFraction = dbe->book3D("GenJetMatchEnergyFraction", "GenJetMatchEnergyFraction vs LOG(pT_gen) vs eta",
00263 log10PtBins, log10PtMin, log10PtMax, etaBins, etaMin, etaMax, 101, 0, 1.01);
00264 mReverseMatchEnergyFraction = dbe->book3D("ReverseMatchEnergyFraction", "ReverseMatchEnergyFraction vs LOG(pT_gen) vs eta",
00265 log10PtBins, log10PtMin, log10PtMax, etaBins, etaMin, etaMax, 101, 0, 1.01);
00266 mRMatch = dbe->book3D("RMatch", "delta(R)(Gen-Calo) vs LOG(pT_gen) vs eta",
00267 log10PtBins, log10PtMin, log10PtMax, etaBins, etaMin, etaMax, 60, 0, 3);
00268 mDeltaEta = dbe->book3D("DeltaEta", "DeltaEta vs LOG(pT_gen) vs eta",
00269 log10PtBins, log10PtMin, log10PtMax, etaBins, etaMin, etaMax, 100, -1, 1);
00270 mDeltaPhi = dbe->book3D("DeltaPhi", "DeltaPhi vs LOG(pT_gen) vs eta",
00271 log10PtBins, log10PtMin, log10PtMax, etaBins, etaMin, etaMax, 100, -1, 1);
00272 mEScale = dbe->book3D("EScale", "EnergyScale vs LOG(pT_gen) vs eta",
00273 log10PtBins, log10PtMin, log10PtMax, etaBins, etaMin, etaMax, 100, 0, 2);
00274 mlinEScale = dbe->book3D("linEScale", "EnergyScale vs LOG(pT_gen) vs eta",
00275 linPtBins, linPtMin, linPtMax, etaBins, etaMin, etaMax, 100, 0, 2);
00276 mDeltaE = dbe->book3D("DeltaE", "DeltaE vs LOG(pT_gen) vs eta",
00277 log10PtBins, log10PtMin, log10PtMax, etaBins, etaMin, etaMax, 2000, -200, 200);
00278
00279 mEScale_pt10 = dbe->book3D("EScale_pt10", "EnergyScale vs LOG(pT_gen) vs eta",
00280 log10PtBins, log10PtMin, log10PtMax, etaBins, etaMin, etaMax, 100, 0, 2);
00281 mEScaleFineBin = dbe->book3D("EScaleFineBins", "EnergyScale vs LOG(pT_gen) vs eta",
00282 log10PtFineBins, log10PtMin, log10PtMax, etaBins, etaMin, etaMax, 100, 0, 2);
00283 }
00284
00285 mpTScaleB_s = dbe->bookProfile("pTScaleB_s", "pTScale_s_0<|eta|<1.3",
00286 log10PtBins, log10PtMin, log10PtMax, 0, 2, "s");
00287 mpTScaleE_s = dbe->bookProfile("pTScaleE_s", "pTScale_s_1.3<|eta|<3.0",
00288 log10PtBins, log10PtMin, log10PtMax, 0, 2, "s");
00289 mpTScaleF_s = dbe->bookProfile("pTScaleF_s", "pTScale_s_3.0<|eta|<5.0",
00290 log10PtBins, log10PtMin, log10PtMax, 0, 2, "s");
00291 mpTScaleB_d = dbe->bookProfile("pTScaleB_d", "pTScale_d_0<|eta|<1.3",
00292 log10PtBins, log10PtMin, log10PtMax, 0, 2, " ");
00293 mpTScaleE_d = dbe->bookProfile("pTScaleE_d", "pTScale_d_1.3<|eta|<3.0",
00294 log10PtBins, log10PtMin, log10PtMax, 0, 2, " ");
00295 mpTScaleF_d = dbe->bookProfile("pTScaleF_d", "pTScale_d_3.0<|eta|<5.0",
00296 log10PtBins, log10PtMin, log10PtMax, 0, 2, " ");
00297
00298 mpTScale_60_120_s = dbe->bookProfile("pTScale_60_120_s", "pTScale_s_60<pT<120",
00299 etaBins, etaMin, etaMax, 0., 2., "s");
00300 mpTScale_200_300_s = dbe->bookProfile("pTScale_200_300_s", "pTScale_s_200<pT<300",
00301 etaBins, etaMin, etaMax, 0., 2., "s");
00302 mpTScale_600_900_s = dbe->bookProfile("pTScale_600_900_s", "pTScale_s_600<pT<900",
00303 etaBins, etaMin, etaMax, 0., 2., "s");
00304 mpTScale_2700_3500_s = dbe->bookProfile("pTScale_2700_3500_s", "pTScale_s_2700<pt<3500",
00305 etaBins, etaMin, etaMax, 0., 2., "s");
00306 mpTScale_60_120_d = dbe->bookProfile("pTScale_60_120_d", "pTScale_d_60<pT<120",
00307 etaBins, etaMin, etaMax, 0., 2., " ");
00308 mpTScale_200_300_d = dbe->bookProfile("pTScale_200_300_d", "pTScale_d_200<pT<300",
00309 etaBins, etaMin, etaMax, 0., 2., " ");
00310 mpTScale_600_900_d = dbe->bookProfile("pTScale_600_900_d", "pTScale_d_600<pT<900",
00311 etaBins, etaMin, etaMax, 0., 2., " ");
00312 mpTScale_2700_3500_d = dbe->bookProfile("pTScale_2700_3500_d", "pTScale_d_2700<pt<3500",
00313 etaBins, etaMin, etaMax, 0., 2., " ");
00314
00315 mpTScale1DB_60_120 = dbe->book1D("pTScale1DB_60_120", "pTScale_distribution_for_0<|eta|<1.3_60_120",
00316 100, 0, 2);
00317 mpTScale1DE_60_120 = dbe->book1D("pTScale1DE_60_120", "pTScale_distribution_for_1.3<|eta|<3.0_60_120",
00318 100, 0, 2);
00319 mpTScale1DF_60_120 = dbe->book1D("pTScale1DF_60_120", "pTScale_distribution_for_3.0<|eta|<5.0_60_120",
00320 100, 0, 2);
00321
00322 mpTScale1DB_200_300 = dbe->book1D("pTScale1DB_200_300", "pTScale_distribution_for_0<|eta|<1.3_200_300",
00323 100, 0, 2);
00324 mpTScale1DE_200_300 = dbe->book1D("pTScale1DE_200_300", "pTScale_distribution_for_1.3<|eta|<3.0_200_300",
00325 100, 0, 2);
00326 mpTScale1DF_200_300 = dbe->book1D("pTScale1DF_200_300", "pTScale_distribution_for_3.0<|eta|<5.0_200_300",
00327 100, 0, 2);
00328
00329 mpTScale1DB_600_900 = dbe->book1D("pTScale1DB_600_900", "pTScale_distribution_for_0<|eta|<1.3_600_900",
00330 100, 0, 2);
00331 mpTScale1DE_600_900 = dbe->book1D("pTScale1DE_600_900", "pTScale_distribution_for_1.3<|eta|<3.0_600_900",
00332 100, 0, 2);
00333 mpTScale1DF_600_900 = dbe->book1D("pTScale1DF_600_900", "pTScale_distribution_for_3.0<|eta|<5.0_600_900",
00334 100, 0, 2);
00335
00336 mpTScale1DB_2700_3500 = dbe->book1D("pTScale1DB_2700_3500", "pTScale_distribution_for_0<|eta|<1.3_2700_3500",
00337 100, 0, 2);
00338 mpTScale1DE_2700_3500 = dbe->book1D("pTScale1DE_2700_3500", "pTScale_distribution_for_1.3<|eta|<3.0_2700_3500",
00339 100, 0, 2);
00340 mpTScale1DF_2700_3500 = dbe->book1D("pTScale1DF_2700_3500", "pTScale_distribution_for_3.0<|eta|<5.0_2700_3500",
00341 100, 0, 2);
00342
00343 mpTScale1D_60_120 = dbe->book1D("pTScale1D_60_120", "pTScale_distribution_for_60<pT<120",
00344 100, 0, 2);
00345 mpTScale1D_200_300 = dbe->book1D("pTScale1D_200_300", "pTScale_distribution_for_200<pT<300",
00346 100, 0, 2);
00347 mpTScale1D_600_900 = dbe->book1D("pTScale1D_600_900", "pTScale_distribution_for_600<pT<900",
00348 100, 0, 2);
00349 mpTScale1D_2700_3500 = dbe->book1D("pTScale1D_2700_3500", "pTScale_distribution_for_2700<pt<3500",
00350 100, 0, 2);
00351
00352 }
00353
00354 if (mOutputFile.empty ()) {
00355 LogInfo("OutputInfo") << " CaloJet histograms will NOT be saved";
00356 }
00357 else {
00358 LogInfo("OutputInfo") << " CaloJethistograms will be saved to file:" << mOutputFile;
00359 }
00360 }
00361
00362 CaloJetTester::~CaloJetTester()
00363 {
00364 }
00365
00366 void CaloJetTester::beginJob(){
00367 }
00368
00369 void CaloJetTester::endJob() {
00370 if (!mOutputFile.empty() && &*edm::Service<DQMStore>()) edm::Service<DQMStore>()->save (mOutputFile);
00371 }
00372
00373
00374 void CaloJetTester::analyze(const edm::Event& mEvent, const edm::EventSetup& mSetup)
00375 {
00376 double countsfornumberofevents = 1;
00377 numberofevents->Fill(countsfornumberofevents);
00378
00379
00380
00381
00382 edm::Handle<HepMCProduct> evt;
00383 mEvent.getByLabel("generator", evt);
00384 if (evt.isValid()) {
00385 HepMC::GenEvent * myGenEvent = new HepMC::GenEvent(*(evt->GetEvent()));
00386
00387 double pthat = myGenEvent->event_scale();
00388
00389 mPthat_80->Fill(pthat);
00390 mPthat_3000->Fill(pthat);
00391
00392 delete myGenEvent;
00393 }
00394
00395
00396
00397
00398
00399 const CaloMET *calomet;
00400 edm::Handle<CaloMETCollection> calo;
00401 mEvent.getByLabel("met", calo);
00402 if (!calo.isValid()) {
00403 edm::LogInfo("OutputInfo") << " failed to retrieve data required by MET Task";
00404 edm::LogInfo("OutputInfo") << " MET Task cannot continue...!";
00405 } else {
00406 const CaloMETCollection *calometcol = calo.product();
00407 calomet = &(calometcol->front());
00408
00409 double caloSumET = calomet->sumEt();
00410 double caloMETSig = calomet->mEtSig();
00411 double caloMET = calomet->pt();
00412 double caloMEx = calomet->px();
00413 double caloMEy = calomet->py();
00414 double caloMETPhi = calomet->phi();
00415
00416 mCaloMEx->Fill(caloMEx);
00417 mCaloMEx_3000->Fill(caloMEx);
00418 mCaloMEy->Fill(caloMEy);
00419 mCaloMEy_3000->Fill(caloMEy);
00420 mCaloMET->Fill(caloMET);
00421 mCaloMET_3000->Fill(caloMET);
00422 mCaloMETPhi->Fill(caloMETPhi);
00423 mCaloSumET->Fill(caloSumET);
00424 mCaloSumET_3000->Fill(caloSumET);
00425 mCaloMETSig->Fill(caloMETSig);
00426 mCaloMETSig_3000->Fill(caloMETSig);
00427 }
00428
00429
00430
00431
00432 Handle<CaloTowerCollection> caloTowers;
00433 mEvent.getByLabel( "towerMaker", caloTowers );
00434 if (caloTowers.isValid()) {
00435 for( CaloTowerCollection::const_iterator cal = caloTowers->begin(); cal != caloTowers->end(); ++ cal ){
00436
00437
00438 if (mTurnOnEverything.compare("yes")==0) {
00439 if (cal->ieta() >> 0 ){mHadEnergyProfile->Fill (cal->ieta()-1, cal->iphi(), cal->hadEnergy());
00440 mEmEnergyProfile->Fill (cal->ieta()-1, cal->iphi(), cal->emEnergy());}
00441 mHadEnergyProfile->Fill (cal->ieta(), cal->iphi(), cal->hadEnergy());
00442 mEmEnergyProfile->Fill (cal->ieta(), cal->iphi(), cal->emEnergy());
00443 }
00444
00445 mHadTiming->Fill (cal->hcalTime());
00446 mEmTiming->Fill (cal->ecalTime());
00447 }
00448 }
00449
00450
00451
00452
00453 try {
00454 std::vector<edm::Handle<HBHERecHitCollection> > colls;
00455 mEvent.getManyByType(colls);
00456 std::vector<edm::Handle<HBHERecHitCollection> >::iterator i;
00457 for (i=colls.begin(); i!=colls.end(); i++) {
00458 for (HBHERecHitCollection::const_iterator j=(*i)->begin(); j!=(*i)->end(); j++) {
00459
00460 if (j->id().subdet() == HcalBarrel) {
00461 mHBEne->Fill(j->energy());
00462 mHBTime->Fill(j->time());
00463 }
00464 if (j->id().subdet() == HcalEndcap) {
00465 mHEEne->Fill(j->energy());
00466 mHETime->Fill(j->time());
00467 }
00468
00469 }
00470 }
00471 } catch (...) {
00472 edm::LogInfo("OutputInfo") << " No HB/HE RecHits.";
00473 }
00474
00475 try {
00476 std::vector<edm::Handle<HFRecHitCollection> > colls;
00477 mEvent.getManyByType(colls);
00478 std::vector<edm::Handle<HFRecHitCollection> >::iterator i;
00479 for (i=colls.begin(); i!=colls.end(); i++) {
00480 for (HFRecHitCollection::const_iterator j=(*i)->begin(); j!=(*i)->end(); j++) {
00481
00482 if (j->id().subdet() == HcalForward) {
00483 mHFEne->Fill(j->energy());
00484 mHFTime->Fill(j->time());
00485 }
00486 }
00487 }
00488 } catch (...) {
00489 edm::LogInfo("OutputInfo") << " No HF RecHits.";
00490 }
00491
00492 try {
00493 std::vector<edm::Handle<HORecHitCollection> > colls;
00494 mEvent.getManyByType(colls);
00495 std::vector<edm::Handle<HORecHitCollection> >::iterator i;
00496 for (i=colls.begin(); i!=colls.end(); i++) {
00497 for (HORecHitCollection::const_iterator j=(*i)->begin(); j!=(*i)->end(); j++) {
00498 if (j->id().subdet() == HcalOuter) {
00499 mHOEne->Fill(j->energy());
00500 mHOTime->Fill(j->time());
00501 }
00502 }
00503 }
00504 } catch (...) {
00505 edm::LogInfo("OutputInfo") << " No HO RecHits.";
00506 }
00507 try {
00508 std::vector<edm::Handle<EBRecHitCollection> > colls;
00509 mEvent.getManyByType(colls);
00510 std::vector<edm::Handle<EBRecHitCollection> >::iterator i;
00511 for (i=colls.begin(); i!=colls.end(); i++) {
00512 for (EBRecHitCollection::const_iterator j=(*i)->begin(); j!=(*i)->end(); j++) {
00513
00514 mEBEne->Fill(j->energy());
00515 mEBTime->Fill(j->time());
00516
00517
00518
00519 }
00520 }
00521 } catch (...) {
00522 edm::LogInfo("OutputInfo") << " No EB RecHits.";
00523 }
00524
00525 try {
00526 std::vector<edm::Handle<EERecHitCollection> > colls;
00527 mEvent.getManyByType(colls);
00528 std::vector<edm::Handle<EERecHitCollection> >::iterator i;
00529 for (i=colls.begin(); i!=colls.end(); i++) {
00530 for (EERecHitCollection::const_iterator j=(*i)->begin(); j!=(*i)->end(); j++) {
00531
00532 mEEEne->Fill(j->energy());
00533 mEETime->Fill(j->time());
00534
00535
00536 }
00537 }
00538 } catch (...) {
00539 edm::LogInfo("OutputInfo") << " No EE RecHits.";
00540 }
00541
00542
00543
00544
00545
00546 math::XYZTLorentzVector p4tmp[2];
00547 Handle<CaloJetCollection> caloJets;
00548 mEvent.getByLabel(mInputCollection, caloJets);
00549 if (!caloJets.isValid()) return;
00550 CaloJetCollection::const_iterator jet = caloJets->begin ();
00551 int jetIndex = 0;
00552 int nJet = 0;
00553 int nJetF = 0;
00554 int nJetC = 0;
00555 for (; jet != caloJets->end (); jet++, jetIndex++) {
00556 if (mEta) mEta->Fill (jet->eta());
00557
00558 if (jet->pt() > 10.) {
00559 if (fabs(jet->eta()) > 1.3)
00560 nJetF++;
00561 else
00562 nJetC++;
00563 }
00564 if (jet->pt() > 10.) {
00565 if (mEtaFineBin) mEtaFineBin->Fill (jet->eta());
00566 if (mEtaFineBin1p) mEtaFineBin1p->Fill (jet->eta());
00567 if (mEtaFineBin2p) mEtaFineBin2p->Fill (jet->eta());
00568 if (mEtaFineBin3p) mEtaFineBin3p->Fill (jet->eta());
00569 if (mEtaFineBin1m) mEtaFineBin1m->Fill (jet->eta());
00570 if (mEtaFineBin2m) mEtaFineBin2m->Fill (jet->eta());
00571 if (mEtaFineBin3m) mEtaFineBin3m->Fill (jet->eta());
00572 if (mPhiFineBin) mPhiFineBin->Fill (jet->phi());
00573 }
00574 if (mPhi) mPhi->Fill (jet->phi());
00575 if (mE) mE->Fill (jet->energy());
00576 if (mE_80) mE_80->Fill (jet->energy());
00577 if (mE_3000) mE_3000->Fill (jet->energy());
00578 if (mP) mP->Fill (jet->p());
00579 if (mP_80) mP_80->Fill (jet->p());
00580 if (mP_3000) mP_3000->Fill (jet->p());
00581 if (mPt) mPt->Fill (jet->pt());
00582 if (mPt_80) mPt_80->Fill (jet->pt());
00583 if (mPt_3000) mPt_3000->Fill (jet->pt());
00584 if (mMass) mMass->Fill (jet->mass());
00585 if (mMass_80) mMass_80->Fill (jet->mass());
00586 if (mMass_3000) mMass_3000->Fill (jet->mass());
00587 if (mConstituents) mConstituents->Fill (jet->nConstituents());
00588 if (mConstituents_80) mConstituents_80->Fill (jet->nConstituents());
00589 if (jet == caloJets->begin ()) {
00590 if (mEtaFirst) mEtaFirst->Fill (jet->eta());
00591 if (mPhiFirst) mPhiFirst->Fill (jet->phi());
00592 if (mEFirst) mEFirst->Fill (jet->energy());
00593 if (mEFirst_80) mEFirst_80->Fill (jet->energy());
00594 if (mEFirst_3000) mEFirst_3000->Fill (jet->energy());
00595 if (mPtFirst) mPtFirst->Fill (jet->pt());
00596 if (mPtFirst_80) mPtFirst_80->Fill (jet->pt());
00597 if (mPtFirst_3000) mPtFirst_3000->Fill (jet->pt());
00598 }
00599 if (jetIndex == 0) {
00600 nJet++;
00601 p4tmp[0] = jet->p4();
00602 }
00603 if (jetIndex == 1) {
00604 nJet++;
00605 p4tmp[1] = jet->p4();
00606 }
00607
00608 if (mMaxEInEmTowers) mMaxEInEmTowers->Fill (jet->maxEInEmTowers());
00609 if (mMaxEInHadTowers) mMaxEInHadTowers->Fill (jet->maxEInHadTowers());
00610 if (mHadEnergyInHO) mHadEnergyInHO->Fill (jet->hadEnergyInHO());
00611 if (mHadEnergyInHO_80) mHadEnergyInHO_80->Fill (jet->hadEnergyInHO());
00612 if (mHadEnergyInHO_3000) mHadEnergyInHO_3000->Fill (jet->hadEnergyInHO());
00613 if (mHadEnergyInHB) mHadEnergyInHB->Fill (jet->hadEnergyInHB());
00614 if (mHadEnergyInHB_80) mHadEnergyInHB_80->Fill (jet->hadEnergyInHB());
00615 if (mHadEnergyInHB_3000) mHadEnergyInHB_3000->Fill (jet->hadEnergyInHB());
00616 if (mHadEnergyInHF) mHadEnergyInHF->Fill (jet->hadEnergyInHF());
00617 if (mHadEnergyInHE) mHadEnergyInHE->Fill (jet->hadEnergyInHE());
00618 if (mHadEnergyInHE_80) mHadEnergyInHE_80->Fill (jet->hadEnergyInHE());
00619 if (mHadEnergyInHE_3000) mHadEnergyInHE_3000->Fill (jet->hadEnergyInHE());
00620 if (mEmEnergyInEB) mEmEnergyInEB->Fill (jet->emEnergyInEB());
00621 if (mEmEnergyInEB_80) mEmEnergyInEB_80->Fill (jet->emEnergyInEB());
00622 if (mEmEnergyInEB_3000) mEmEnergyInEB_3000->Fill (jet->emEnergyInEB());
00623 if (mEmEnergyInEE) mEmEnergyInEE->Fill (jet->emEnergyInEE());
00624 if (mEmEnergyInEE_80) mEmEnergyInEE_80->Fill (jet->emEnergyInEE());
00625 if (mEmEnergyInEE_3000) mEmEnergyInEE_3000->Fill (jet->emEnergyInEE());
00626 if (mEmEnergyInHF) mEmEnergyInHF->Fill (jet->emEnergyInHF());
00627 if (mEnergyFractionHadronic) mEnergyFractionHadronic->Fill (jet->energyFractionHadronic());
00628 if (mEnergyFractionEm) mEnergyFractionEm->Fill (jet->emEnergyFraction());
00629
00630 if (mHFTotal) mHFTotal->Fill (jet->hadEnergyInHF()+jet->emEnergyInHF());
00631 if (mHFTotal_80) mHFTotal_80->Fill (jet->hadEnergyInHF()+jet->emEnergyInHF());
00632 if (mHFTotal_3000) mHFTotal_3000->Fill (jet->hadEnergyInHF()+jet->emEnergyInHF());
00633 if (mHFLong) mHFLong->Fill (jet->hadEnergyInHF()*0.5+jet->emEnergyInHF());
00634 if (mHFLong_80) mHFLong_80->Fill (jet->hadEnergyInHF()*0.5+jet->emEnergyInHF());
00635 if (mHFLong_3000) mHFLong_3000->Fill (jet->hadEnergyInHF()*0.5+jet->emEnergyInHF());
00636 if (mHFShort) mHFShort->Fill (jet->hadEnergyInHF()*0.5);
00637 if (mHFShort_80) mHFShort_80->Fill (jet->hadEnergyInHF()*0.5);
00638 if (mHFShort_3000) mHFShort_3000->Fill (jet->hadEnergyInHF()*0.5);
00639
00640
00641
00642 if (mN90) mN90->Fill (jet->n90());
00643 mJetEnergyProfile->Fill (jet->eta(), jet->phi(), jet->energy());
00644 mHadJetEnergyProfile->Fill (jet->eta(), jet->phi(), jet->hadEnergyInHO()+jet->hadEnergyInHB()+jet->hadEnergyInHF()+jet->hadEnergyInHE());
00645 mEMJetEnergyProfile->Fill (jet->eta(), jet->phi(), jet->emEnergyInEB()+jet->emEnergyInEE()+jet->emEnergyInHF());
00646 }
00647
00648
00649
00650 if (mNJetsEtaC) mNJetsEtaC->Fill( nJetC );
00651 if (mNJetsEtaF) mNJetsEtaF->Fill( nJetF );
00652
00653 if (nJet == 2) {
00654 if (mMjj) mMjj->Fill( (p4tmp[0]+p4tmp[1]).mass() );
00655 if (mMjj_3000) mMjj_3000->Fill( (p4tmp[0]+p4tmp[1]).mass() );
00656 }
00657
00658
00659 for (int istep = 0; istep < 100; ++istep) {
00660 int njet = 0;
00661 float ptStep = (istep * (200./100.));
00662
00663 for ( CaloJetCollection::const_iterator cal = caloJets->begin(); cal != caloJets->end(); ++ cal ) {
00664 if ( cal->pt() > ptStep ) njet++;
00665 }
00666 mNJets1->Fill( ptStep, njet );
00667 }
00668
00669 for (int istep = 0; istep < 100; ++istep) {
00670 int njet = 0;
00671 float ptStep = (istep * (4000./100.));
00672 for ( CaloJetCollection::const_iterator cal = caloJets->begin(); cal != caloJets->end(); ++ cal ) {
00673 if ( cal->pt() > ptStep ) njet++;
00674 }
00675 mNJets2->Fill( ptStep, njet );
00676 }
00677
00678
00679 Handle<GenJetCollection> genJets;
00680 mEvent.getByLabel(mInputGenCollection, genJets);
00681 if (!genJets.isValid()) return;
00682 GenJetCollection::const_iterator gjet = genJets->begin ();
00683 int gjetIndex = 0;
00684 for (; gjet != genJets->end (); gjet++, gjetIndex++) {
00685 if (mGenEta) mGenEta->Fill (gjet->eta());
00686 if (mGenPhi) mGenPhi->Fill (gjet->phi());
00687 if (mGenPt) mGenPt->Fill (gjet->pt());
00688 if (mGenPt_80) mGenPt_80->Fill (gjet->pt());
00689 if (mGenPt_3000) mGenPt_3000->Fill (gjet->pt());
00690 if (gjet == genJets->begin ()) {
00691 if (mGenEtaFirst) mGenEtaFirst->Fill (gjet->eta());
00692 if (mGenPhiFirst) mGenPhiFirst->Fill (gjet->phi());
00693 }
00694 }
00695
00696
00697
00698 JetMatchingTools jetMatching (mEvent);
00699 if (!(mInputGenCollection.label().empty())) {
00700
00701
00702
00703 std::vector <std::vector <const reco::GenParticle*> > genJetConstituents (genJets->size());
00704 std::vector <std::vector <const reco::GenParticle*> > caloJetConstituents (caloJets->size());
00705 if (mRThreshold > 0) {
00706 }
00707 else {
00708 for (unsigned iGenJet = 0; iGenJet < genJets->size(); ++iGenJet) {
00709 genJetConstituents [iGenJet] = jetMatching.getGenParticles ((*genJets) [iGenJet]);
00710 }
00711
00712 for (unsigned iCaloJet = 0; iCaloJet < caloJets->size(); ++iCaloJet) {
00713 caloJetConstituents [iCaloJet] = jetMatching.getGenParticles ((*caloJets) [iCaloJet], false);
00714 }
00715 }
00716
00717 for (unsigned iGenJet = 0; iGenJet < genJets->size(); ++iGenJet) {
00718
00719 const GenJet& genJet = (*genJets) [iGenJet];
00720 double genJetPt = genJet.pt();
00721
00722
00723
00724 if (fabs(genJet.eta()) > 5.) continue;
00725 if (genJetPt < mMatchGenPtThreshold) continue;
00726 double logPtGen = log10 (genJetPt);
00727 mAllGenJetsPt->Fill (logPtGen);
00728 mAllGenJetsEta->Fill (logPtGen, genJet.eta());
00729 if (caloJets->size() <= 0) continue;
00730 if (mRThreshold > 0) {
00731 unsigned iCaloJetBest = 0;
00732 double deltaRBest = 999.;
00733 for (unsigned iCaloJet = 0; iCaloJet < caloJets->size(); ++iCaloJet) {
00734 double dR = deltaR (genJet.eta(), genJet.phi(), (*caloJets) [iCaloJet].eta(), (*caloJets) [iCaloJet].phi());
00735 if (deltaRBest < mRThreshold && dR < mRThreshold && genJet.pt() > 5.) {
00736
00737
00738
00739
00740
00741
00742 }
00743 if (dR < deltaRBest) {
00744 iCaloJetBest = iCaloJet;
00745 deltaRBest = dR;
00746 }
00747 }
00748 if (mTurnOnEverything.compare("yes")==0) {
00749 mRMatch->Fill (logPtGen, genJet.eta(), deltaRBest);
00750 }
00751 if (deltaRBest < mRThreshold) {
00752 fillMatchHists (genJet, (*caloJets) [iCaloJetBest]);
00753 }
00754 }
00755 else {
00756 unsigned iCaloJetBest = 0;
00757 double energyFractionBest = 0.;
00758 for (unsigned iCaloJet = 0; iCaloJet < caloJets->size(); ++iCaloJet) {
00759 double energyFraction = jetMatching.overlapEnergyFraction (genJetConstituents [iGenJet],
00760 caloJetConstituents [iCaloJet]);
00761 if (energyFraction > energyFractionBest) {
00762 iCaloJetBest = iCaloJet;
00763 energyFractionBest = energyFraction;
00764 }
00765 }
00766 if (mTurnOnEverything.compare("yes")==0) {
00767 mGenJetMatchEnergyFraction->Fill (logPtGen, genJet.eta(), energyFractionBest);
00768 }
00769 if (energyFractionBest > mGenEnergyFractionThreshold) {
00770 double reverseEnergyFraction = jetMatching.overlapEnergyFraction (caloJetConstituents [iCaloJetBest],
00771 genJetConstituents [iGenJet]);
00772 if (mTurnOnEverything.compare("yes")==0) {
00773 mReverseMatchEnergyFraction->Fill (logPtGen, genJet.eta(), reverseEnergyFraction);
00774 }
00775 if (reverseEnergyFraction > mReverseEnergyFractionThreshold) {
00776 fillMatchHists (genJet, (*caloJets) [iCaloJetBest]);
00777 }
00778 }
00779 }
00780 }
00781 }
00782 }
00783
00784
00785 void CaloJetTester::fillMatchHists (const reco::GenJet& fGenJet, const reco::CaloJet& fCaloJet) {
00786 double logPtGen = log10 (fGenJet.pt());
00787 double PtGen = fGenJet.pt();
00788 double PtCalo = fCaloJet.pt();
00789 mMatchedGenJetsPt->Fill (logPtGen);
00790 mMatchedGenJetsEta->Fill (logPtGen, fGenJet.eta());
00791
00792 double PtThreshold = 10.;
00793
00794 if (mTurnOnEverything.compare("yes")==0) {
00795 mDeltaEta->Fill (logPtGen, fGenJet.eta(), fCaloJet.eta()-fGenJet.eta());
00796 mDeltaPhi->Fill (logPtGen, fGenJet.eta(), fCaloJet.phi()-fGenJet.phi());
00797 mEScale->Fill (logPtGen, fGenJet.eta(), fCaloJet.energy()/fGenJet.energy());
00798 mlinEScale->Fill (fGenJet.pt(), fGenJet.eta(), fCaloJet.energy()/fGenJet.energy());
00799 mDeltaE->Fill (logPtGen, fGenJet.eta(), fCaloJet.energy()-fGenJet.energy());
00800
00801 mEScaleFineBin->Fill (logPtGen, fGenJet.eta(), fCaloJet.energy()/fGenJet.energy());
00802
00803 if (fGenJet.pt()>PtThreshold) {
00804 mEScale_pt10->Fill (logPtGen, fGenJet.eta(), fCaloJet.energy()/fGenJet.energy());
00805
00806 }
00807
00808 }
00809 if (fCaloJet.pt() > PtThreshold) {
00810 mDelEta->Fill (fGenJet.eta()-fCaloJet.eta());
00811 mDelPhi->Fill (fGenJet.phi()-fCaloJet.phi());
00812 mDelPt->Fill ((fGenJet.pt()-fCaloJet.pt())/fGenJet.pt());
00813 }
00814
00815 if (fabs(fGenJet.eta())<1.3) {
00816
00817 mpTScaleB_s->Fill (log10(PtGen), PtCalo/PtGen);
00818 mpTScaleB_d->Fill (log10(PtGen), PtCalo/PtGen);
00819 if (PtGen>60.0 && PtGen<120.0) {
00820 mpTScale1DB_60_120->Fill (fCaloJet.pt()/fGenJet.pt());
00821 }
00822 if (PtGen>200.0 && PtGen<300.0) {
00823 mpTScale1DB_200_300->Fill (fCaloJet.pt()/fGenJet.pt());
00824 }
00825 if (PtGen>600.0 && PtGen<900.0) {
00826 mpTScale1DB_600_900->Fill (fCaloJet.pt()/fGenJet.pt());
00827 }
00828 if (PtGen>2700.0 && PtGen<3500.0) {
00829 mpTScale1DB_2700_3500->Fill (fCaloJet.pt()/fGenJet.pt());
00830 }
00831 }
00832
00833 if (fabs(fGenJet.eta())>1.3 && fabs(fGenJet.eta())<3.0) {
00834
00835 mpTScaleE_s->Fill (log10(PtGen), PtCalo/PtGen);
00836 mpTScaleE_d->Fill (log10(PtGen), PtCalo/PtGen);
00837 if (PtGen>60.0 && PtGen<120.0) {
00838 mpTScale1DE_60_120->Fill (fCaloJet.pt()/fGenJet.pt());
00839 }
00840 if (PtGen>200.0 && PtGen<300.0) {
00841 mpTScale1DE_200_300->Fill (fCaloJet.pt()/fGenJet.pt());
00842 }
00843 if (PtGen>600.0 && PtGen<900.0) {
00844 mpTScale1DE_600_900->Fill (fCaloJet.pt()/fGenJet.pt());
00845 }
00846 if (PtGen>2700.0 && PtGen<3500.0) {
00847 mpTScale1DE_2700_3500->Fill (fCaloJet.pt()/fGenJet.pt());
00848 }
00849 }
00850
00851 if (fabs(fGenJet.eta())>3.0 && fabs(fGenJet.eta())<5.0) {
00852
00853 mpTScaleF_s->Fill (log10(PtGen), PtCalo/PtGen);
00854 mpTScaleF_d->Fill (log10(PtGen), PtCalo/PtGen);
00855 if (PtGen>60.0 && PtGen<120.0) {
00856 mpTScale1DF_60_120->Fill (fCaloJet.pt()/fGenJet.pt());
00857 }
00858 if (PtGen>200.0 && PtGen<300.0) {
00859 mpTScale1DF_200_300->Fill (fCaloJet.pt()/fGenJet.pt());
00860 }
00861 if (PtGen>600.0 && PtGen<900.0) {
00862 mpTScale1DF_600_900->Fill (fCaloJet.pt()/fGenJet.pt());
00863 }
00864 if (PtGen>2700.0 && PtGen<3500.0) {
00865 mpTScale1DF_2700_3500->Fill (fCaloJet.pt()/fGenJet.pt());
00866 }
00867 }
00868
00869 if (fGenJet.pt()>60.0 && fGenJet.pt()<120.0) {
00870 mpTScale_60_120_s->Fill (fGenJet.eta(),fCaloJet.pt()/fGenJet.pt());
00871 mpTScale_60_120_d->Fill (fGenJet.eta(),fCaloJet.pt()/fGenJet.pt());
00872 mpTScale1D_60_120->Fill (fCaloJet.pt()/fGenJet.pt());
00873 }
00874
00875 if (fGenJet.pt()>200.0 && fGenJet.pt()<300.0) {
00876 mpTScale_200_300_s->Fill (fGenJet.eta(),fCaloJet.pt()/fGenJet.pt());
00877 mpTScale_200_300_d->Fill (fGenJet.eta(),fCaloJet.pt()/fGenJet.pt());
00878 mpTScale1D_200_300->Fill (fCaloJet.pt()/fGenJet.pt());
00879 }
00880
00881 if (fGenJet.pt()>600.0 && fGenJet.pt()<900.0) {
00882 mpTScale_600_900_s->Fill (fGenJet.eta(),fCaloJet.pt()/fGenJet.pt());
00883 mpTScale_600_900_d->Fill (fGenJet.eta(),fCaloJet.pt()/fGenJet.pt());
00884 mpTScale1D_600_900->Fill (fCaloJet.pt()/fGenJet.pt());
00885 }
00886
00887 if (fGenJet.pt()>2700.0 && fGenJet.pt()<3500.0) {
00888 mpTScale_2700_3500_s->Fill (fGenJet.eta(),fCaloJet.pt()/fGenJet.pt());
00889 mpTScale_2700_3500_d->Fill (fGenJet.eta(),fCaloJet.pt()/fGenJet.pt());
00890 mpTScale1D_2700_3500->Fill (fCaloJet.pt()/fGenJet.pt());
00891 }
00892
00893
00894
00895 }