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 #include "JetMETCorrections/Objects/interface/JetCorrector.h"
00039
00040
00041 using namespace edm;
00042 using namespace reco;
00043 using namespace std;
00044
00045 namespace {
00046 bool is_B (const reco::Jet& fJet) {return fabs (fJet.eta()) < 1.3;}
00047 bool is_E (const reco::Jet& fJet) {return fabs (fJet.eta()) >= 1.3 && fabs (fJet.eta()) < 3.;}
00048 bool is_F (const reco::Jet& fJet) {return fabs (fJet.eta()) >= 3.;}
00049 }
00050
00051
00052
00053 CaloJetTester::CaloJetTester(const edm::ParameterSet& iConfig)
00054 : mInputCollection (iConfig.getParameter<edm::InputTag>( "src" )),
00055 mInputGenCollection (iConfig.getParameter<edm::InputTag>( "srcGen" )),
00056 mOutputFile (iConfig.getUntrackedParameter<std::string>("outputFile", "")),
00057 mMatchGenPtThreshold (iConfig.getParameter<double>("genPtThreshold")),
00058 mGenEnergyFractionThreshold (iConfig.getParameter<double>("genEnergyFractionThreshold")),
00059 mReverseEnergyFractionThreshold (iConfig.getParameter<double>("reverseEnergyFractionThreshold")),
00060 mRThreshold (iConfig.getParameter<double>("RThreshold")),
00061
00062 mTurnOnEverything (iConfig.getUntrackedParameter<std::string>("TurnOnEverything","")){
00063
00064
00065
00066 doJetCorrection=false;
00067 if (iConfig.tbl().find("JetCorrectionService")!=iConfig.tbl().end()){
00068 doJetCorrection=true;
00069 JetCorrectionService =iConfig.getParameter<std::string>("JetCorrectionService");
00070 }
00071 numberofevents
00072 = mEta = mEtaFineBin = mPhi = mPhiFineBin = mE = mE_80
00073 = mP = mP_80 = mPt = mPt_80
00074 = mMass = mMass_80 = mConstituents = mConstituents_80
00075 = mEtaFirst = mPhiFirst = mPtFirst = mPtFirst_80 = mPtFirst_3000
00076 = mMjj = mMjj_3000 = mDelEta = mDelPhi = mDelPt
00077 = mMaxEInEmTowers = mMaxEInHadTowers
00078 = mHadEnergyInHO = mHadEnergyInHB = mHadEnergyInHF = mHadEnergyInHE
00079 = mHadEnergyInHO_80 = mHadEnergyInHB_80 = mHadEnergyInHE_80
00080 = mHadEnergyInHO_3000
00081 = mEmEnergyInEB = mEmEnergyInEE = mEmEnergyInHF
00082 = mEmEnergyInEB_80 = mEmEnergyInEE_80
00083 = mEnergyFractionHadronic_B = mEnergyFractionHadronic_E = mEnergyFractionHadronic_F
00084 = mEnergyFractionEm_B = mEnergyFractionEm_E = mEnergyFractionEm_F
00085 = mHFLong = mHFTotal = mHFLong_80 = mHFShort = mHFShort_80
00086 = mN90
00087
00088 = mHadTiming = mEmTiming
00089 = mNJetsEtaC = mNJetsEtaF = mNJets1 = mNJets2
00090 = mNJetsEtaF_30
00091 = mDeltaEta = mDeltaPhi
00092 = mEScale_pt10 = mEScaleFineBin
00093
00094 = mpTScaleB_d = mpTScaleE_d = mpTScaleF_d
00095 = mpTScalePhiB_d = mpTScalePhiE_d = mpTScalePhiF_d
00096
00097 = mpTScale_30_200_d = mpTScale_200_600_d = mpTScale_600_1500_d = mpTScale_1500_3500_d
00098
00099 = mpTScale1DB_30_200 = mpTScale1DE_30_200 = mpTScale1DF_30_200
00100 = mpTScale1DB_200_600 = mpTScale1DE_200_600 = mpTScale1DF_200_600
00101 = mpTScale1DB_600_1500 = mpTScale1DE_600_1500 = mpTScale1DF_600_1500
00102 = mpTScale1DB_1500_3500 = mpTScale1DE_1500_3500 = mpTScale1DF_1500_3500
00103
00104 = mPthat_80 = mPthat_3000
00105
00106
00107 = mCorrJetPt =mCorrJetPt_80 =mCorrJetEta =mCorrJetPhi =mpTRatio =mpTResponse
00108 = mpTRatioB_d = mpTRatioE_d = mpTRatioF_d
00109 = mpTRatio_30_200_d = mpTRatio_200_600_d = mpTRatio_600_1500_d = mpTRatio_1500_3500_d
00110 = mpTResponseB_d = mpTResponseE_d = mpTResponseF_d
00111 = mpTResponse_30_200_d = mpTResponse_200_600_d = mpTResponse_600_1500_d = mpTResponse_1500_3500_d
00112 = mpTResponse_30_d =mjetArea
00113
00114 = nvtx_0_30 = nvtx_0_60 = mpTResponse_nvtx_0_5 = mpTResponse_nvtx_5_10 =mpTResponse_nvtx_10_15 = mpTResponse_nvtx_15_20 = mpTResponse_nvtx_20_30 = mpTResponse_nvtx_30_inf
00115 = mpTScale_a_nvtx_0_5 = mpTScale_b_nvtx_0_5 = mpTScale_c_nvtx_0_5
00116 = mpTScale_a_nvtx_5_10 = mpTScale_b_nvtx_5_10 = mpTScale_c_nvtx_5_10
00117 = mpTScale_a_nvtx_10_15 = mpTScale_b_nvtx_10_15 = mpTScale_c_nvtx_10_15
00118 = mpTScale_a_nvtx_15_20 = mpTScale_b_nvtx_15_20 = mpTScale_c_nvtx_15_20
00119 = mpTScale_a_nvtx_20_30 = mpTScale_b_nvtx_20_30 = mpTScale_c_nvtx_20_30
00120 = mpTScale_a_nvtx_30_inf = mpTScale_b_nvtx_30_inf = mpTScale_c_nvtx_30_inf
00121 = mpTScale_nvtx_0_5
00122 = mpTScale_nvtx_5_10 = mpTScale_nvtx_10_15 = mpTScale_nvtx_15_20 = mpTScale_nvtx_20_30
00123 = mpTScale_nvtx_30_inf
00124 = mpTScale_a = mpTScale_b = mpTScale_c = mpTScale_pT
00125 =0;
00126
00127
00128
00129 DQMStore* dbe = &*edm::Service<DQMStore>();
00130 if (dbe) {
00131 dbe->setCurrentFolder("JetMET/RecoJetsV/CaloJetTask_" + mInputCollection.label());
00132
00133 numberofevents = dbe->book1D("numberofevents","numberofevents", 3, 0 , 2);
00134
00135 mEta = dbe->book1D("Eta", "Eta", 120, -6, 6);
00136 mEtaFineBin = dbe->book1D("EtaFineBin_Pt10", "EtaFineBin_Pt10", 600, -6, 6);
00137
00138
00139 mPhi = dbe->book1D("Phi", "Phi", 70, -3.5, 3.5);
00140 mPhiFineBin = dbe->book1D("PhiFineBin_Pt10", "PhiFineBin_Pt10", 350, -3.5, 3.5);
00141
00142 mE = dbe->book1D("E", "E", 100, 0, 500);
00143 mE_80 = dbe->book1D("E_80", "E_80", 100, 0, 5000);
00144
00145 mP = dbe->book1D("P", "P", 100, 0, 500);
00146 mP_80 = dbe->book1D("P_80", "P_80", 100, 0, 5000);
00147
00148 mPt = dbe->book1D("Pt", "Pt", 100, 0, 150);
00149 mPt_80 = dbe->book1D("Pt_80", "Pt_80", 100, 0, 4000);
00150
00151 mMass = dbe->book1D("Mass", "Mass", 100, 0, 200);
00152 mMass_80 = dbe->book1D("Mass_80", "Mass_80", 100, 0, 500);
00153
00154 mConstituents = dbe->book1D("Constituents", "# of Constituents", 100, 0, 100);
00155 mConstituents_80 = dbe->book1D("Constituents_80", "# of Constituents_80", 40, 0, 40);
00156
00157 mEtaFirst = dbe->book1D("EtaFirst", "EtaFirst", 120, -6, 6);
00158 mPhiFirst = dbe->book1D("PhiFirst", "PhiFirst", 70, -3.5, 3.5);
00159 mPtFirst = dbe->book1D("PtFirst", "PtFirst", 100, 0, 50);
00160 mPtFirst_80 = dbe->book1D("PtFirst_80", "PtFirst_80", 100, 0, 140);
00161 mPtFirst_3000 = dbe->book1D("PtFirst_3000", "PtFirst_3000", 100, 0, 4000);
00162
00163 mMjj = dbe->book1D("Mjj", "Mjj", 100, 0, 2000);
00164 mMjj_3000 = dbe->book1D("Mjj_3000", "Mjj_3000", 100, 0, 10000);
00165 mDelEta = dbe->book1D("DelEta", "DelEta", 100, -.5, .5);
00166 mDelPhi = dbe->book1D("DelPhi", "DelPhi", 100, -.5, .5);
00167 mDelPt = dbe->book1D("DelPt", "DelPt", 100, -1, 1);
00168
00169 mMaxEInEmTowers = dbe->book1D("MaxEInEmTowers", "MaxEInEmTowers", 100, 0, 100);
00170 mMaxEInHadTowers = dbe->book1D("MaxEInHadTowers", "MaxEInHadTowers", 100, 0, 100);
00171 mHadEnergyInHO = dbe->book1D("HadEnergyInHO", "HadEnergyInHO", 100, 0, 10);
00172 mHadEnergyInHB = dbe->book1D("HadEnergyInHB", "HadEnergyInHB", 100, 0, 150);
00173 mHadEnergyInHF = dbe->book1D("HadEnergyInHF", "HadEnergyInHF", 100, 0, 50);
00174 mHadEnergyInHE = dbe->book1D("HadEnergyInHE", "HadEnergyInHE", 100, 0, 150);
00175
00176 mHadEnergyInHO_80 = dbe->book1D("HadEnergyInHO_80", "HadEnergyInHO_80", 100, 0, 50);
00177 mHadEnergyInHB_80 = dbe->book1D("HadEnergyInHB_80", "HadEnergyInHB_80", 100, 0, 3000);
00178 mHadEnergyInHE_80 = dbe->book1D("HadEnergyInHE_80", "HadEnergyInHE_80", 100, 0, 3000);
00179 mHadEnergyInHO_3000 = dbe->book1D("HadEnergyInHO_3000", "HadEnergyInHO_3000", 100, 0, 500);
00180
00181 mEmEnergyInEB = dbe->book1D("EmEnergyInEB", "EmEnergyInEB", 100, 0, 50);
00182 mEmEnergyInEE = dbe->book1D("EmEnergyInEE", "EmEnergyInEE", 100, 0, 50);
00183 mEmEnergyInHF = dbe->book1D("EmEnergyInHF", "EmEnergyInHF", 120, -20, 100);
00184 mEmEnergyInEB_80 = dbe->book1D("EmEnergyInEB_80", "EmEnergyInEB_80", 100, 0, 200);
00185 mEmEnergyInEE_80 = dbe->book1D("EmEnergyInEE_80", "EmEnergyInEE_80", 100, 0, 1000);
00186 mEnergyFractionHadronic_B = dbe->book1D("EnergyFractionHadronic_B", "EnergyFractionHadronic_B", 120, -0.1, 1.1);
00187 mEnergyFractionHadronic_E = dbe->book1D("EnergyFractionHadronic_E", "EnergyFractionHadronic_E", 120, -0.1, 1.1);
00188 mEnergyFractionHadronic_F = dbe->book1D("EnergyFractionHadronic_F", "EnergyFractionHadronic_F", 120, -0.1, 1.1);
00189 mEnergyFractionEm_B = dbe->book1D("EnergyFractionEm_B", "EnergyFractionEm_B", 120, -0.1, 1.1);
00190 mEnergyFractionEm_E = dbe->book1D("EnergyFractionEm_E", "EnergyFractionEm_E", 120, -0.1, 1.1);
00191 mEnergyFractionEm_F = dbe->book1D("EnergyFractionEm_F", "EnergyFractionEm_F", 120, -0.1, 1.1);
00192
00193 mHFTotal = dbe->book1D("HFTotal", "HFTotal", 100, 0, 150);
00194 mHFTotal_80 = dbe->book1D("HFTotal_80", "HFTotal_80", 100, 0, 3000);
00195
00196 mHFLong = dbe->book1D("HFLong", "HFLong", 100, 0, 150);
00197 mHFLong_80 = dbe->book1D("HFLong_80", "HFLong_80", 100, 0, 3000);
00198
00199 mHFShort = dbe->book1D("HFShort", "HFShort", 100, 0, 150);
00200 mHFShort_80 = dbe->book1D("HFShort_80", "HFShort_80", 100, 0, 3000);
00201
00202
00203 mN90 = dbe->book1D("N90", "N90", 50, 0, 50);
00204
00205 mGenEta = dbe->book1D("GenEta", "GenEta", 120, -6, 6);
00206 mGenPhi = dbe->book1D("GenPhi", "GenPhi", 70, -3.5, 3.5);
00207 mGenPt = dbe->book1D("GenPt", "GenPt", 100, 0, 150);
00208 mGenPt_80 = dbe->book1D("GenPt_80", "GenPt_80", 100, 0, 1500);
00209
00210 mGenEtaFirst = dbe->book1D("GenEtaFirst", "GenEtaFirst", 100, -5, 5);
00211 mGenPhiFirst = dbe->book1D("GenPhiFirst", "GenPhiFirst", 70, -3.5, 3.5);
00212
00213
00214
00215
00216 mHadTiming = dbe->book1D("HadTiming", "HadTiming", 75, -50, 100);
00217 mEmTiming = dbe->book1D("EMTiming", "EMTiming", 75, -50, 100);
00218
00219 mNJetsEtaC = dbe->book1D("NJetsEtaC_Pt10", "NJetsEtaC_Pt10", 15, 0, 15);
00220 mNJetsEtaF = dbe->book1D("NJetsEtaF_Pt10", "NJetsEtaF_Pt10", 15, 0, 15);
00221 mNJetsEtaF_30 = dbe->book1D("NJetsEtaF_Pt30", "NJetsEtaF_Pt30", 15, 0, 15);
00222
00223
00224 mNJets1 = dbe->bookProfile("NJets1", "NJets1", 100, 0, 200, 100, 0, 50, "s");
00225 mNJets2 = dbe->bookProfile("NJets2", "NJets2", 100, 0, 4000, 100, 0, 50, "s");
00226
00227
00228
00229 mPthat_80 = dbe->book1D("Pthat_80", "Pthat_80", 100, 0.0, 1000.0);
00230 mPthat_3000 = dbe->book1D("Pthat_3000", "Pthat_3000", 100, 1000.0, 4000.0);
00231
00232
00233 mCorrJetPt = dbe->book1D("CorrPt", "CorrPt", 100, 0, 150);
00234 mCorrJetPt_80 = dbe->book1D("CorrPt_80", "CorrPt_80", 100, 0, 4000);
00235
00236 mCorrJetEta = dbe->book1D("CorrEta", "CorrEta", 120, -6, 6);
00237 mCorrJetPhi = dbe->book1D("CorrPhi", "CorrPhi", 70, -3.5, 3.5);
00238 mjetArea = dbe->book1D("jetArea","jetArea",26,-0.5,12.5);
00239
00240
00241 nvtx_0_30 = dbe->book1D("nvtx_0_30","nvtx_0_30",31,-0.5,30.5);
00242 nvtx_0_60 = dbe->book1D("nvtx_0_60","nvtx_0_60",61,-0.5,60.5);
00243
00244
00245 mpTScale_a_nvtx_0_5 = dbe->book1D("mpTScale_a_nvtx_0_5", "pTScale_a_nvtx_0_5_0<|eta|<1.3_60_120",100, 0, 2);
00246 mpTScale_b_nvtx_0_5 = dbe->book1D("mpTScale_b_nvtx_0_5", "pTScale_b_nvtx_0_5_0<|eta|<1.3_200_300",100, 0, 2);
00247 mpTScale_c_nvtx_0_5 = dbe->book1D("mpTScale_c_nvtx_0_5", "pTScale_c_nvtx_0_5_0<|eta|<1.3_600_900",100, 0, 2);
00248 mpTScale_a_nvtx_5_10 = dbe->book1D("mpTScale_a_nvtx_5_10", "pTScale_a_nvtx_5_10_0<|eta|<1.3_60_120",100, 0, 2);
00249 mpTScale_b_nvtx_5_10 = dbe->book1D("mpTScale_b_nvtx_5_10", "pTScale_b_nvtx_5_10_0<|eta|<1.3_200_300",100, 0, 2);
00250 mpTScale_c_nvtx_5_10 = dbe->book1D("mpTScale_c_nvtx_5_10", "pTScale_c_nvtx_5_10_0<|eta|<1.3_600_900",100, 0, 2);
00251 mpTScale_a_nvtx_10_15 = dbe->book1D("mpTScale_a_nvtx_10_15", "pTScale_a_nvtx_10_15_0<|eta|<1.3_60_120",100, 0, 2);
00252 mpTScale_b_nvtx_10_15 = dbe->book1D("mpTScale_b_nvtx_10_15", "pTScale_b_nvtx_10_15_0<|eta|<1.3_200_300",100, 0, 2);
00253 mpTScale_c_nvtx_10_15 = dbe->book1D("mpTScale_c_nvtx_10_15", "pTScale_c_nvtx_10_15_0<|eta|<1.3_600_900",100, 0, 2);
00254 mpTScale_a_nvtx_15_20 = dbe->book1D("mpTScale_a_nvtx_15_20", "pTScale_a_nvtx_15_20_0<|eta|<1.3_60_120",100, 0, 2);
00255 mpTScale_b_nvtx_15_20 = dbe->book1D("mpTScale_b_nvtx_15_20", "pTScale_b_nvtx_15_20_0<|eta|<1.3_200_300",100, 0, 2);
00256 mpTScale_c_nvtx_15_20 = dbe->book1D("mpTScale_c_nvtx_15_20", "pTScale_c_nvtx_15_20_0<|eta|<1.3_600_900",100, 0, 2);
00257 mpTScale_a_nvtx_20_30 = dbe->book1D("mpTScale_a_nvtx_20_30", "pTScale_a_nvtx_20_30_0<|eta|<1.3_60_120",100, 0, 2);
00258 mpTScale_b_nvtx_20_30 = dbe->book1D("mpTScale_b_nvtx_20_30", "pTScale_b_nvtx_20_30_0<|eta|<1.3_200_300",100, 0, 2);
00259 mpTScale_c_nvtx_20_30 = dbe->book1D("mpTScale_c_nvtx_20_30", "pTScale_c_nvtx_20_30_0<|eta|<1.3_600_900",100, 0, 2);
00260 mpTScale_a_nvtx_30_inf = dbe->book1D("mpTScale_a_nvtx_30_inf", "pTScale_a_nvtx_30_inf_0<|eta|<1.3_60_120",100, 0, 2);
00261 mpTScale_b_nvtx_30_inf = dbe->book1D("mpTScale_b_nvtx_30_inf", "pTScale_b_nvtx_30_inf_0<|eta|<1.3_200_300",100, 0, 2);
00262 mpTScale_c_nvtx_30_inf = dbe->book1D("mpTScale_c_nvtx_30_inf", "pTScale_c_nvtx_30_inf_0<|eta|<1.3_600_900",100, 0, 2);
00263 mpTScale_a = dbe->book1D("pTScale_a", "pTScale_a_60_120",100, 0, 2);
00264 mpTScale_b = dbe->book1D("pTScale_b", "pTScale_b_200_300",100, 0, 2);
00265 mpTScale_c = dbe->book1D("pTScale_c", "pTScale_c_600_900",100, 0, 2);
00266
00267
00268
00269 double log10PtMin = 0.5;
00270 double log10PtMax = 3.75;
00271 int log10PtBins = 26;
00272 double etaRange[91] = {-6.0,-5.8,-5.6,-5.4,-5.2,-5.0,-4.8,-4.6,-4.4,-4.2,-4.0,-3.8,-3.6,-3.4,-3.2,-3.0,-2.9,-2.8,-2.7,-2.6,-2.5,-2.4,-2.3,-2.2,-2.1,-2.0,-1.9,-1.8,-1.7,-1.6,-1.5,-1.4,-1.3,-1.2,-1.1,-1.0,-0.9,-0.8,-0.7,-0.6,-0.5,-0.4,-0.3,-0.2,-0.1,0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,1.9,2.0,2.1,2.2,2.3,2.4,2.5,2.6,2.7,2.8,2.9,3.0,3.2,3.4,3.6,3.8,4.0,4.2,4.4,4.6,4.8,5.0,5.2,5.4,5.6,5.8,6.0};
00273
00274
00275
00276
00277 if (mTurnOnEverything.compare("yes")==0) {
00278
00279 }
00280
00281 mpTScaleB_d = dbe->bookProfile("pTScaleB_d", "pTScale_d_0<|eta|<1.5",
00282 log10PtBins, log10PtMin, log10PtMax, 0, 2, " ");
00283 mpTScaleE_d = dbe->bookProfile("pTScaleE_d", "pTScale_d_1.5<|eta|<3.0",
00284 log10PtBins, log10PtMin, log10PtMax, 0, 2, " ");
00285 mpTScaleF_d = dbe->bookProfile("pTScaleF_d", "pTScale_d_3.0<|eta|<6.0",
00286 log10PtBins, log10PtMin, log10PtMax, 0, 2, " ");
00287
00288 mpTScalePhiB_d = dbe->bookProfile("pTScalePhiB_d", "pTScalePhi_d_0<|eta|<1.5",
00289 70, -3.5, 3.5, 0, 2, " ");
00290 mpTScalePhiE_d = dbe->bookProfile("pTScalePhiE_d", "pTScalePhi_d_1.5<|eta|<3.0",
00291 70, -3.5, 3.5, 0, 2, " ");
00292 mpTScalePhiF_d = dbe->bookProfile("pTScalePhiF_d", "pTScalePhi_d_3.0<|eta|<6.0",
00293 70, -3.5, 3.5, 0, 2, " ");
00294
00295
00296 mpTScale_30_200_d = dbe->bookProfile("pTScale_30_200_d", "pTScale_d_30<pT<200",
00297 90,etaRange, 0., 2., " ");
00298 mpTScale_200_600_d = dbe->bookProfile("pTScale_200_600_d", "pTScale_d_200<pT<600",
00299 90,etaRange, 0., 2., " ");
00300 mpTScale_600_1500_d = dbe->bookProfile("pTScale_600_1500_d", "pTScale_d_600<pT<1500",
00301 90,etaRange, 0., 2., " ");
00302 mpTScale_1500_3500_d = dbe->bookProfile("pTScale_1500_3500_d", "pTScale_d_1500<pt<3500",
00303 90,etaRange, 0., 2., " ");
00304
00305 mpTScale1DB_30_200 = dbe->book1D("pTScale1DB_30_200", "pTScale_distribution_for_0<|eta|<1.5_30_200",
00306 100, 0, 2);
00307 mpTScale1DE_30_200 = dbe->book1D("pTScale1DE_30_200", "pTScale_distribution_for_1.5<|eta|<3.0_30_200",
00308 50, 0, 2);
00309 mpTScale1DF_30_200 = dbe->book1D("pTScale1DF_30_200", "pTScale_distribution_for_3.0<|eta|<6.0_30_200",
00310 50, 0, 2);
00311
00312 mpTScale1DB_200_600 = dbe->book1D("pTScale1DB_200_600", "pTScale_distribution_for_0<|eta|<1.5_200_600",
00313 100, 0, 2);
00314 mpTScale1DE_200_600 = dbe->book1D("pTScale1DE_200_600", "pTScale_distribution_for_1.5<|eta|<3.0_200_600",
00315 50, 0, 2);
00316 mpTScale1DF_200_600 = dbe->book1D("pTScale1DF_200_600", "pTScale_distribution_for_3.0<|eta|<6.0_200_600",
00317 50, 0, 2);
00318
00319 mpTScale1DB_600_1500 = dbe->book1D("pTScale1DB_600_1500", "pTScale_distribution_for_0<|eta|<1.5_600_1500",
00320 100, 0, 2);
00321 mpTScale1DE_600_1500 = dbe->book1D("pTScale1DE_600_1500", "pTScale_distribution_for_1.5<|eta|<3.0_600_1500",
00322 50, 0, 2);
00323 mpTScale1DF_600_1500 = dbe->book1D("pTScale1DF_600_1500", "pTScale_distribution_for_3.0<|eta|<6.0_600_1500",
00324 50, 0, 2);
00325
00326 mpTScale1DB_1500_3500 = dbe->book1D("pTScale1DB_1500_3500", "pTScale_distribution_for_0<|eta|<1.5_1500_3500",
00327 100, 0, 2);
00328 mpTScale1DE_1500_3500 = dbe->book1D("pTScale1DE_1500_3500", "pTScale_distribution_for_1.5<|eta|<3.0_1500_3500",
00329 50, 0, 2);
00330 mpTScale1DF_1500_3500 = dbe->book1D("pTScale1DF_1500_3500", "pTScale_distribution_for_3.0<|eta|<6.0_1500_3500",
00331 50, 0, 2);
00332
00333
00334 mpTScale_nvtx_0_5 = dbe->bookProfile("pTScale_nvtx_0_5", "pTScale_nvtx_0_5_0<|eta|<1.3",
00335 log10PtBins, log10PtMin, log10PtMax, 0, 2, " ");
00336 mpTScale_nvtx_5_10 = dbe->bookProfile("pTScale_nvtx_5_10", "pTScale_nvtx_5_10_0<|eta|<1.3",
00337 log10PtBins, log10PtMin, log10PtMax, 0, 2, " ");
00338 mpTScale_nvtx_10_15 = dbe->bookProfile("pTScale_nvtx_10_15", "pTScale_nvtx_10_15_0<|eta|<1.3",
00339 log10PtBins, log10PtMin, log10PtMax, 0, 2, " ");
00340 mpTScale_nvtx_15_20 = dbe->bookProfile("pTScale_nvtx_15_20", "pTScale_nvtx_15_20_0<|eta|<1.3",
00341 log10PtBins, log10PtMin, log10PtMax, 0, 2, " ");
00342 mpTScale_nvtx_20_30 = dbe->bookProfile("pTScale_nvtx_20_30", "pTScale_nvtx_20_30_0<|eta|<1.3",
00343 log10PtBins, log10PtMin, log10PtMax, 0, 2, " ");
00344 mpTScale_nvtx_30_inf = dbe->bookProfile("pTScale_nvtx_30_inf", "pTScale_nvtx_30_inf_0<|eta|<1.3",
00345 log10PtBins, log10PtMin, log10PtMax, 0, 2, " ");
00346 mpTScale_pT = dbe->bookProfile("pTScale_pT", "pTScale_vs_pT",
00347 log10PtBins, log10PtMin, log10PtMax, 0, 2, " ");
00349 mpTRatio = dbe->bookProfile("pTRatio", "pTRatio",
00350 log10PtBins, log10PtMin, log10PtMax, 100, 0.,5., " ");
00351 mpTRatioB_d = dbe->bookProfile("pTRatioB_d", "pTRatio_d_0<|eta|<1.5",
00352 log10PtBins, log10PtMin, log10PtMax, 0, 5, " ");
00353 mpTRatioE_d = dbe->bookProfile("pTRatioE_d", "pTRatio_d_1.5<|eta|<3.0",
00354 log10PtBins, log10PtMin, log10PtMax, 0, 5, " ");
00355 mpTRatioF_d = dbe->bookProfile("pTRatioF_d", "pTRatio_d_3.0<|eta|<6.0",
00356 log10PtBins, log10PtMin, log10PtMax, 0, 5, " ");
00357 mpTRatio_30_200_d = dbe->bookProfile("pTRatio_30_200_d", "pTRatio_d_30<pT<200",
00358 90,etaRange, 0., 5., " ");
00359 mpTRatio_200_600_d = dbe->bookProfile("pTRatio_200_600_d", "pTRatio_d_200<pT<600",
00360 90,etaRange, 0., 5., " ");
00361 mpTRatio_600_1500_d = dbe->bookProfile("pTRatio_600_1500_d", "pTRatio_d_600<pT<1500",
00362 90,etaRange, 0., 5., " ");
00363 mpTRatio_1500_3500_d = dbe->bookProfile("pTRatio_1500_3500_d", "pTRatio_d_1500<pt<3500",
00364 90,etaRange, 0., 5., " ");
00365 mpTResponse = dbe->bookProfile("pTResponse", "pTResponse",
00366 log10PtBins, log10PtMin, log10PtMax, 100, 0.8,1.2, " ");
00367 mpTResponseB_d = dbe->bookProfile("pTResponseB_d", "pTResponse_d_0<|eta|<1.5",
00368 log10PtBins, log10PtMin, log10PtMax, 0.8, 1.2, " ");
00369 mpTResponseE_d = dbe->bookProfile("pTResponseE_d", "pTResponse_d_1.5<|eta|<3.0",
00370 log10PtBins, log10PtMin, log10PtMax, 0.8, 1.2, " ");
00371 mpTResponseF_d = dbe->bookProfile("pTResponseF_d", "pTResponse_d_3.0<|eta|<6.0",
00372 log10PtBins, log10PtMin, log10PtMax, 0.8, 1.2, " ");
00373 mpTResponse_30_200_d = dbe->bookProfile("pTResponse_30_200_d", "pTResponse_d_30<pT<200",
00374 90,etaRange, 0.8, 1.2, " ");
00375 mpTResponse_200_600_d = dbe->bookProfile("pTResponse_200_600_d", "pTResponse_d_200<pT<600",
00376 90,etaRange, 0.8, 1.2, " ");
00377 mpTResponse_600_1500_d = dbe->bookProfile("pTResponse_600_1500_d", "pTResponse_d_600<pT<1500",
00378 90,etaRange, 0.8, 1.2, " ");
00379 mpTResponse_1500_3500_d = dbe->bookProfile("pTResponse_1500_3500_d", "pTResponse_d_1500<pt<3500",
00380 90,etaRange, 0.8, 1.2, " ");
00381 mpTResponse_30_d = dbe->bookProfile("pTResponse_30_d", "pTResponse_d_pt>30",
00382 90,etaRange, 0.8, 1.2, " ");
00383
00384
00385 mpTResponse_nvtx_0_5 = dbe->bookProfile("pTResponse_nvtx_0_5", "pTResponse_nvtx_0_5", log10PtBins, log10PtMin, log10PtMax, 100, 0.8,1.2, " ");
00386 mpTResponse_nvtx_5_10 = dbe->bookProfile("pTResponse_nvtx_5_10", "pTResponse_nvtx_5_10", log10PtBins, log10PtMin, log10PtMax, 100, 0.8,1.2, " ");
00387 mpTResponse_nvtx_10_15 = dbe->bookProfile("pTResponse_nvtx_10_15", "pTResponse_nvtx_10_15", log10PtBins, log10PtMin, log10PtMax, 100, 0.8,1.2, " ");
00388 mpTResponse_nvtx_15_20 = dbe->bookProfile("pTResponse_nvtx_15_20", "pTResponse_nvtx_15_20", log10PtBins, log10PtMin, log10PtMax, 100, 0.8,1.2, " ");
00389 mpTResponse_nvtx_20_30 = dbe->bookProfile("pTResponse_nvtx_20_30", "pTResponse_nvtx_20_30", log10PtBins, log10PtMin, log10PtMax, 100, 0.8,1.2, " ");
00390 mpTResponse_nvtx_30_inf = dbe->bookProfile("pTResponse_nvtx_30_inf", "pTResponse_nvtx_30_inf", log10PtBins, log10PtMin, log10PtMax, 100, 0.8,1.2, " ");
00391 }
00392
00393 if (mOutputFile.empty ()) {
00394 LogInfo("OutputInfo") << " CaloJet histograms will NOT be saved";
00395 }
00396 else {
00397 LogInfo("OutputInfo") << " CaloJethistograms will be saved to file:" << mOutputFile;
00398 }
00399 }
00400
00401 CaloJetTester::~CaloJetTester()
00402 {
00403 }
00404
00405 void CaloJetTester::beginJob(){
00406 }
00407
00408 void CaloJetTester::endJob() {
00409 if (!mOutputFile.empty() && &*edm::Service<DQMStore>()) edm::Service<DQMStore>()->save (mOutputFile);
00410 }
00411
00412
00413 void CaloJetTester::analyze(const edm::Event& mEvent, const edm::EventSetup& mSetup)
00414 {
00415 double countsfornumberofevents = 1;
00416 numberofevents->Fill(countsfornumberofevents);
00417
00418
00419 edm::Handle<vector<reco::Vertex> >pvHandle;
00420
00421
00422
00423 bool offlinePrimaryVerticesPresent=mEvent.getByLabel( "offlinePrimaryVertices",pvHandle);
00424
00425
00426
00427
00428
00429
00430
00431 vector<reco::Vertex> goodVertices;
00432
00433 if(offlinePrimaryVerticesPresent){
00434 for (unsigned i = 0; i < pvHandle->size(); i++) {
00435 if ( (*pvHandle)[i].ndof() > 4 &&
00436 ( fabs((*pvHandle)[i].z()) <= 24. ) &&
00437 ( fabs((*pvHandle)[i].position().rho()) <= 2.0 ) )
00438 goodVertices.push_back((*pvHandle)[i]);
00439 }
00440 }
00441 nvtx_0_30->Fill(goodVertices.size());
00442 nvtx_0_60->Fill(goodVertices.size());
00443
00444
00445
00446
00447 if (!mEvent.isRealData()){
00448 edm::Handle<HepMCProduct> evt;
00449 mEvent.getByLabel("generator", evt);
00450 if (evt.isValid()) {
00451 HepMC::GenEvent * myGenEvent = new HepMC::GenEvent(*(evt->GetEvent()));
00452
00453 double pthat = myGenEvent->event_scale();
00454
00455 mPthat_80->Fill(pthat);
00456 mPthat_3000->Fill(pthat);
00457
00458 delete myGenEvent;
00459 }
00460 }
00461
00462
00463
00464
00465
00466
00467
00468
00469
00470
00471
00472
00473
00474
00475
00476
00477
00478
00479
00480 Handle<CaloTowerCollection> caloTowers;
00481 mEvent.getByLabel( "towerMaker", caloTowers );
00482 if (caloTowers.isValid()) {
00483 for( CaloTowerCollection::const_iterator cal = caloTowers->begin(); cal != caloTowers->end(); ++ cal ){
00484
00485
00486 if (mTurnOnEverything.compare("yes")==0) {
00487 }
00488
00489 mHadTiming->Fill (cal->hcalTime());
00490 mEmTiming->Fill (cal->ecalTime());
00491 }
00492 }
00493
00494
00495
00496
00497 try {
00498 std::vector<edm::Handle<HBHERecHitCollection> > colls;
00499 mEvent.getManyByType(colls);
00500 std::vector<edm::Handle<HBHERecHitCollection> >::iterator i;
00501 for (i=colls.begin(); i!=colls.end(); i++) {
00502 for (HBHERecHitCollection::const_iterator j=(*i)->begin(); j!=(*i)->end(); j++) {
00503
00504 }
00505 }
00506 } catch (...) {
00507 edm::LogInfo("OutputInfo") << " No HB/HE RecHits.";
00508 }
00509
00510 try {
00511 std::vector<edm::Handle<HFRecHitCollection> > colls;
00512 mEvent.getManyByType(colls);
00513 std::vector<edm::Handle<HFRecHitCollection> >::iterator i;
00514 for (i=colls.begin(); i!=colls.end(); i++) {
00515 for (HFRecHitCollection::const_iterator j=(*i)->begin(); j!=(*i)->end(); j++) {
00516
00517 }
00518 }
00519 } catch (...) {
00520 edm::LogInfo("OutputInfo") << " No HF RecHits.";
00521 }
00522
00523 try {
00524 std::vector<edm::Handle<HORecHitCollection> > colls;
00525 mEvent.getManyByType(colls);
00526 std::vector<edm::Handle<HORecHitCollection> >::iterator i;
00527 for (i=colls.begin(); i!=colls.end(); i++) {
00528 for (HORecHitCollection::const_iterator j=(*i)->begin(); j!=(*i)->end(); j++) {
00529 }
00530 }
00531 } catch (...) {
00532 edm::LogInfo("OutputInfo") << " No HO RecHits.";
00533 }
00534 try {
00535 std::vector<edm::Handle<EBRecHitCollection> > colls;
00536 mEvent.getManyByType(colls);
00537 std::vector<edm::Handle<EBRecHitCollection> >::iterator i;
00538 for (i=colls.begin(); i!=colls.end(); i++) {
00539 for (EBRecHitCollection::const_iterator j=(*i)->begin(); j!=(*i)->end(); j++) {
00540 }
00541 }
00542 } catch (...) {
00543 edm::LogInfo("OutputInfo") << " No EB RecHits.";
00544 }
00545
00546 try {
00547 std::vector<edm::Handle<EERecHitCollection> > colls;
00548 mEvent.getManyByType(colls);
00549 std::vector<edm::Handle<EERecHitCollection> >::iterator i;
00550 for (i=colls.begin(); i!=colls.end(); i++) {
00551 for (EERecHitCollection::const_iterator j=(*i)->begin(); j!=(*i)->end(); j++) {
00552 }
00553 }
00554 } catch (...) {
00555 edm::LogInfo("OutputInfo") << " No EE RecHits.";
00556 }
00557
00558
00559
00560
00561
00562 math::XYZTLorentzVector p4tmp[2];
00563 Handle<CaloJetCollection> caloJets;
00564 mEvent.getByLabel(mInputCollection, caloJets);
00565 if (!caloJets.isValid()) return;
00566 CaloJetCollection::const_iterator jet = caloJets->begin ();
00567 int jetIndex = 0;
00568 int nJet = 0;
00569 int nJetF = 0;
00570 int nJetC = 0;
00571 int nJetF_30 =0;
00572 for (; jet != caloJets->end (); jet++, jetIndex++) {
00573
00574 if (jet->pt() > 10.) {
00575 if (fabs(jet->eta()) > 1.5)
00576 nJetF++;
00577 else
00578 nJetC++;
00579 }
00580 if (jet->pt() > 30.) nJetF_30++;
00581 if (jet->pt() > 10.) {
00582 if (mEta) mEta->Fill (jet->eta());
00583 if (mEtaFineBin) mEtaFineBin->Fill (jet->eta());
00584 if (mPhiFineBin) mPhiFineBin->Fill (jet->phi());
00585 }
00586 if (mjetArea) mjetArea->Fill(jet->jetArea());
00587 if (mPhi) mPhi->Fill (jet->phi());
00588 if (mE) mE->Fill (jet->energy());
00589 if (mE_80) mE_80->Fill (jet->energy());
00590 if (mP) mP->Fill (jet->p());
00591 if (mP_80) mP_80->Fill (jet->p());
00592 if (mPt) mPt->Fill (jet->pt());
00593 if (mPt_80) mPt_80->Fill (jet->pt());
00594 if (mMass) mMass->Fill (jet->mass());
00595 if (mMass_80) mMass_80->Fill (jet->mass());
00596 if (mConstituents) mConstituents->Fill (jet->nConstituents());
00597 if (mConstituents_80) mConstituents_80->Fill (jet->nConstituents());
00598 if (jet == caloJets->begin ()) {
00599 if (mEtaFirst) mEtaFirst->Fill (jet->eta());
00600 if (mPhiFirst) mPhiFirst->Fill (jet->phi());
00601 if (mPtFirst) mPtFirst->Fill (jet->pt());
00602 if (mPtFirst_80) mPtFirst_80->Fill (jet->pt());
00603 if (mPtFirst_3000) mPtFirst_3000->Fill (jet->pt());
00604 }
00605 if (jetIndex == 0) {
00606 nJet++;
00607 p4tmp[0] = jet->p4();
00608 }
00609 if (jetIndex == 1) {
00610 nJet++;
00611 p4tmp[1] = jet->p4();
00612 }
00613
00614 if (mMaxEInEmTowers) mMaxEInEmTowers->Fill (jet->maxEInEmTowers());
00615 if (mMaxEInHadTowers) mMaxEInHadTowers->Fill (jet->maxEInHadTowers());
00616 if (mHadEnergyInHO) mHadEnergyInHO->Fill (jet->hadEnergyInHO());
00617 if (mHadEnergyInHO_80) mHadEnergyInHO_80->Fill (jet->hadEnergyInHO());
00618 if (mHadEnergyInHO_3000) mHadEnergyInHO_3000->Fill (jet->hadEnergyInHO());
00619 if (mHadEnergyInHB) mHadEnergyInHB->Fill (jet->hadEnergyInHB());
00620 if (mHadEnergyInHB_80) mHadEnergyInHB_80->Fill (jet->hadEnergyInHB());
00621 if (mHadEnergyInHF) mHadEnergyInHF->Fill (jet->hadEnergyInHF());
00622 if (mHadEnergyInHE) mHadEnergyInHE->Fill (jet->hadEnergyInHE());
00623 if (mHadEnergyInHE_80) mHadEnergyInHE_80->Fill (jet->hadEnergyInHE());
00624 if (mEmEnergyInEB) mEmEnergyInEB->Fill (jet->emEnergyInEB());
00625 if (mEmEnergyInEB_80) mEmEnergyInEB_80->Fill (jet->emEnergyInEB());
00626 if (mEmEnergyInEE) mEmEnergyInEE->Fill (jet->emEnergyInEE());
00627 if (mEmEnergyInEE_80) mEmEnergyInEE_80->Fill (jet->emEnergyInEE());
00628 if (mEmEnergyInHF) mEmEnergyInHF->Fill (jet->emEnergyInHF());
00629 if (fabs(jet->eta())<1.5) mEnergyFractionHadronic_B->Fill (jet->energyFractionHadronic());
00630 if (fabs(jet->eta())>1.5 && fabs(jet->eta())<3.0) mEnergyFractionHadronic_E->Fill (jet->energyFractionHadronic());
00631 if (fabs(jet->eta())>3.0 && fabs(jet->eta())<6.0) mEnergyFractionHadronic_F->Fill (jet->energyFractionHadronic());
00632 if (fabs(jet->eta())<1.5) mEnergyFractionEm_B->Fill (jet->emEnergyFraction());
00633 if (fabs(jet->eta())>1.5 && fabs(jet->eta())<3.0) mEnergyFractionEm_E->Fill (jet->emEnergyFraction());
00634 if (fabs(jet->eta())>3.0 && fabs(jet->eta())<6.0) mEnergyFractionEm_F->Fill (jet->emEnergyFraction());
00635 if (mHFTotal) mHFTotal->Fill (jet->hadEnergyInHF()+jet->emEnergyInHF());
00636 if (mHFTotal_80) mHFTotal_80->Fill (jet->hadEnergyInHF()+jet->emEnergyInHF());
00637 if (mHFLong) mHFLong->Fill (jet->hadEnergyInHF()*0.5+jet->emEnergyInHF());
00638 if (mHFLong_80) mHFLong_80->Fill (jet->hadEnergyInHF()*0.5+jet->emEnergyInHF());
00639 if (mHFShort) mHFShort->Fill (jet->hadEnergyInHF()*0.5);
00640 if (mHFShort_80) mHFShort_80->Fill (jet->hadEnergyInHF()*0.5);
00641
00642
00643
00644 if (mN90) mN90->Fill (jet->n90());
00645 }
00646
00647
00648
00649 if (mNJetsEtaC) mNJetsEtaC->Fill( nJetC );
00650 if (mNJetsEtaF) mNJetsEtaF->Fill( nJetF );
00651 if (mNJetsEtaF_30) mNJetsEtaF_30->Fill( nJetF_30 );
00652 if (nJet == 2) {
00653 if (mMjj) mMjj->Fill( (p4tmp[0]+p4tmp[1]).mass() );
00654 if (mMjj_3000) mMjj_3000->Fill( (p4tmp[0]+p4tmp[1]).mass() );
00655 }
00656
00657
00658 for (int istep = 0; istep < 100; ++istep) {
00659 int njet = 0;
00660 float ptStep = (istep * (200./100.));
00661
00662 for ( CaloJetCollection::const_iterator cal = caloJets->begin(); cal != caloJets->end(); ++ cal ) {
00663 if ( cal->pt() > ptStep ) njet++;
00664 }
00665 mNJets1->Fill( ptStep, njet );
00666 }
00667
00668 for (int istep = 0; istep < 100; ++istep) {
00669 int njet = 0;
00670 float ptStep = (istep * (4000./100.));
00671 for ( CaloJetCollection::const_iterator cal = caloJets->begin(); cal != caloJets->end(); ++ cal ) {
00672 if ( cal->pt() > ptStep ) njet++;
00673 }
00674 mNJets2->Fill( ptStep, njet );
00675 }
00676
00677
00678 const JetCorrector* corrector=0;
00679 if(doJetCorrection){
00680 corrector = JetCorrector::getJetCorrector (JetCorrectionService,mSetup);
00681 }
00682 for (CaloJetCollection::const_iterator jet = caloJets->begin(); jet !=caloJets ->end(); jet++){
00683
00684 CaloJet correctedJet = *jet;
00685
00686 double scale=1.0;
00687 if(doJetCorrection){
00688 scale = corrector->correction(*jet,mEvent,mSetup);
00689 }
00690 correctedJet.scaleEnergy(scale);
00691 if(correctedJet.pt()>30){
00692 mCorrJetPt->Fill(correctedJet.pt());
00693 mCorrJetPt_80->Fill(correctedJet.pt());
00694 if(correctedJet.pt() >10) mCorrJetEta->Fill(correctedJet.eta());
00695 mCorrJetPhi->Fill(correctedJet.phi());
00696 mpTRatio->Fill(log10(jet->pt()),correctedJet.pt()/jet->pt());
00697
00698 if (fabs(jet->eta())<1.5) {
00699 mpTRatioB_d->Fill(log10(jet->pt()), correctedJet.pt()/jet->pt());
00700 }
00701
00702 if (fabs(jet->eta())>1.5 && fabs(jet->eta())<3.0) {
00703 mpTRatioE_d->Fill (log10(jet->pt()), correctedJet.pt()/jet->pt());
00704 }
00705 if (fabs(jet->eta())>3.0 && fabs(jet->eta())<6.0) {
00706 mpTRatioF_d->Fill (log10(jet->pt()), correctedJet.pt()/jet->pt());
00707 }
00708 if (jet->pt()>30.0 && jet->pt()<200.0) {
00709 mpTRatio_30_200_d->Fill (jet->eta(),correctedJet.pt()/jet->pt());
00710 }
00711 if (jet->pt()>200.0 && jet->pt()<600.0) {
00712 mpTRatio_200_600_d->Fill (jet->eta(),correctedJet.pt()/jet->pt());
00713 }
00714 if (jet->pt()>600.0 && jet->pt()<1500.0) {
00715 mpTRatio_600_1500_d->Fill (jet->eta(),correctedJet.pt()/jet->pt());
00716 }
00717 if (jet->pt()>1500.0 && jet->pt()<3500.0) {
00718 mpTRatio_1500_3500_d->Fill (jet->eta(),correctedJet.pt()/jet->pt());
00719 }
00720 }
00721 }
00722
00723
00724
00725 if (!mEvent.isRealData()){
00726
00727 Handle<GenJetCollection> genJets;
00728 mEvent.getByLabel(mInputGenCollection, genJets);
00729 if (!genJets.isValid()) return;
00730 GenJetCollection::const_iterator gjet = genJets->begin ();
00731 int gjetIndex = 0;
00732 for (; gjet != genJets->end (); gjet++, gjetIndex++) {
00733 if (mGenEta) mGenEta->Fill (gjet->eta());
00734 if (mGenPhi) mGenPhi->Fill (gjet->phi());
00735 if (mGenPt) mGenPt->Fill (gjet->pt());
00736 if (mGenPt_80) mGenPt_80->Fill (gjet->pt());
00737 if (gjet == genJets->begin ()) {
00738 if (mGenEtaFirst) mGenEtaFirst->Fill (gjet->eta());
00739 if (mGenPhiFirst) mGenPhiFirst->Fill (gjet->phi());
00740 }
00741 }
00742
00743
00744
00745 JetMatchingTools jetMatching (mEvent);
00746 if (!(mInputGenCollection.label().empty())) {
00747
00748
00749
00750 std::vector <std::vector <const reco::GenParticle*> > genJetConstituents (genJets->size());
00751 std::vector <std::vector <const reco::GenParticle*> > caloJetConstituents (caloJets->size());
00752 if (mRThreshold > 0) {
00753 }
00754 else {
00755 for (unsigned iGenJet = 0; iGenJet < genJets->size(); ++iGenJet) {
00756 genJetConstituents [iGenJet] = jetMatching.getGenParticles ((*genJets) [iGenJet]);
00757 }
00758
00759 for (unsigned iCaloJet = 0; iCaloJet < caloJets->size(); ++iCaloJet) {
00760 caloJetConstituents [iCaloJet] = jetMatching.getGenParticles ((*caloJets) [iCaloJet], false);
00761 }
00762 }
00763
00764 for (unsigned iGenJet = 0; iGenJet < genJets->size(); ++iGenJet) {
00765
00766 const GenJet& genJet = (*genJets) [iGenJet];
00767 double genJetPt = genJet.pt();
00768
00769
00770
00771 if (fabs(genJet.eta()) > 6.) continue;
00772 if (genJetPt < mMatchGenPtThreshold) continue;
00773
00774
00775
00776 if (caloJets->size() <= 0) continue;
00777 if (mRThreshold > 0) {
00778 unsigned iCaloJetBest = 0;
00779 double deltaRBest = 999.;
00780 for (unsigned iCaloJet = 0; iCaloJet < caloJets->size(); ++iCaloJet) {
00781 double dR = deltaR (genJet.eta(), genJet.phi(), (*caloJets) [iCaloJet].eta(), (*caloJets) [iCaloJet].phi());
00782 if (deltaRBest < mRThreshold && dR < mRThreshold && genJet.pt() > 5.) {
00783
00784
00785
00786
00787
00788
00789 }
00790 if (dR < deltaRBest) {
00791 iCaloJetBest = iCaloJet;
00792 deltaRBest = dR;
00793 }
00794 }
00795 if (mTurnOnEverything.compare("yes")==0) {
00796
00797 }
00798 if (deltaRBest < mRThreshold) {
00799 fillMatchHists (genJet, (*caloJets) [iCaloJetBest],goodVertices);
00800 }
00801
00803 double CorrdeltaRBest = 999.;
00804 double CorrJetPtBest = 0;
00805 for (CaloJetCollection::const_iterator jet = caloJets->begin(); jet !=caloJets ->end(); jet++) {
00806 CaloJet correctedJet = *jet;
00807
00808 double scale=1.0;
00809 if (doJetCorrection){
00810 scale = corrector->correction(*jet,mEvent,mSetup);
00811 }
00812 correctedJet.scaleEnergy(scale);
00813 double CorrJetPt = correctedJet.pt();
00814 if(CorrJetPt>30){
00815 double CorrdR = deltaR (genJet.eta(), genJet.phi(), correctedJet.eta(), correctedJet.phi());
00816 if (CorrdR < CorrdeltaRBest) {
00817 CorrdeltaRBest = CorrdR;
00818 CorrJetPtBest = CorrJetPt;
00819 }
00820 }
00821 }
00822 if (deltaRBest < mRThreshold) {
00823 mpTResponse->Fill(log10(genJet.pt()),CorrJetPtBest/genJet.pt());
00824
00825 if(goodVertices.size()<=5) mpTResponse_nvtx_0_5->Fill(log10(genJet.pt()),CorrJetPtBest/genJet.pt());
00826 if(goodVertices.size()>5 && goodVertices.size()<=10) mpTResponse_nvtx_5_10->Fill(log10(genJet.pt()),CorrJetPtBest/genJet.pt());
00827 if(goodVertices.size()>10 && goodVertices.size()<=15) mpTResponse_nvtx_10_15->Fill(log10(genJet.pt()),CorrJetPtBest/genJet.pt());
00828 if(goodVertices.size()>15 && goodVertices.size()<=20) mpTResponse_nvtx_15_20->Fill(log10(genJet.pt()),CorrJetPtBest/genJet.pt());
00829 if(goodVertices.size()>20 && goodVertices.size()<=30) mpTResponse_nvtx_20_30->Fill(log10(genJet.pt()),CorrJetPtBest/genJet.pt());
00830 if(goodVertices.size()>30) mpTResponse_nvtx_30_inf->Fill(log10(genJet.pt()),CorrJetPtBest/genJet.pt());
00831
00832 if (fabs(genJet.eta())<1.5) {
00833 mpTResponseB_d->Fill(log10(genJet.pt()), CorrJetPtBest/genJet.pt());
00834 }
00835
00836 if (fabs(genJet.eta())>1.5 && fabs(genJet.eta())<3.0) {
00837 mpTResponseE_d->Fill (log10(genJet.pt()), CorrJetPtBest/genJet.pt());
00838 }
00839 if (fabs(genJet.eta())>3.0 && fabs(genJet.eta())<6.0) {
00840 mpTResponseF_d->Fill (log10(genJet.pt()), CorrJetPtBest/genJet.pt());
00841 }
00842 if (genJet.pt()>30.0 && genJet.pt()<200.0) {
00843 mpTResponse_30_200_d->Fill (genJet.eta(),CorrJetPtBest/genJet.pt());
00844 }
00845 if (genJet.pt()>200.0 && genJet.pt()<600.0) {
00846 mpTResponse_200_600_d->Fill (genJet.eta(),CorrJetPtBest/genJet.pt());
00847 }
00848 if (genJet.pt()>600.0 && genJet.pt()<1500.0) {
00849 mpTResponse_600_1500_d->Fill (genJet.eta(),CorrJetPtBest/genJet.pt());
00850 }
00851 if (genJet.pt()>1500.0 && genJet.pt()<3500.0) {
00852 mpTResponse_1500_3500_d->Fill (genJet.eta(),CorrJetPtBest/genJet.pt());
00853 }
00854 if (genJet.pt()>30.0) {
00855 mpTResponse_30_d->Fill (genJet.eta(),CorrJetPtBest/genJet.pt());
00856 }
00857 }
00859
00860 }
00861 else {
00862 unsigned iCaloJetBest = 0;
00863 double energyFractionBest = 0.;
00864 for (unsigned iCaloJet = 0; iCaloJet < caloJets->size(); ++iCaloJet) {
00865 double energyFraction = jetMatching.overlapEnergyFraction (genJetConstituents [iGenJet],
00866 caloJetConstituents [iCaloJet]);
00867 if (energyFraction > energyFractionBest) {
00868 iCaloJetBest = iCaloJet;
00869 energyFractionBest = energyFraction;
00870 }
00871 }
00872 if (mTurnOnEverything.compare("yes")==0) {
00873
00874 }
00875 if (energyFractionBest > mGenEnergyFractionThreshold) {
00876 double reverseEnergyFraction = jetMatching.overlapEnergyFraction (caloJetConstituents [iCaloJetBest],
00877 genJetConstituents [iGenJet]);
00878 if (mTurnOnEverything.compare("yes")==0) {
00879
00880 }
00881 if (reverseEnergyFraction > mReverseEnergyFractionThreshold) {
00882 fillMatchHists (genJet, (*caloJets) [iCaloJetBest], goodVertices);
00883 }
00884 }
00885 }
00886 }
00887 }
00888 }
00889
00890 }
00891
00892 void CaloJetTester::fillMatchHists (const reco::GenJet& fGenJet, const reco::CaloJet& fCaloJet, std::vector<reco::Vertex> goodVertices) {
00893 double logPtGen = log10 (fGenJet.pt());
00894 double PtGen = fGenJet.pt();
00895 double PtCalo = fCaloJet.pt();
00896
00897
00898
00899 double PtThreshold = 10.;
00900
00901 if (mTurnOnEverything.compare("yes")==0) {
00902 mDeltaEta->Fill (logPtGen, fGenJet.eta(), fCaloJet.eta()-fGenJet.eta());
00903 mDeltaPhi->Fill (logPtGen, fGenJet.eta(), fCaloJet.phi()-fGenJet.phi());
00904
00905 mEScaleFineBin->Fill (logPtGen, fGenJet.eta(), fCaloJet.energy()/fGenJet.energy());
00906
00907 if (fGenJet.pt()>PtThreshold) {
00908 mEScale_pt10->Fill (logPtGen, fGenJet.eta(), fCaloJet.energy()/fGenJet.energy());
00909
00910 }
00911
00912 }
00913 if (fCaloJet.pt() > PtThreshold) {
00914 mDelEta->Fill (fGenJet.eta()-fCaloJet.eta());
00915 mDelPhi->Fill (fGenJet.phi()-fCaloJet.phi());
00916 mDelPt->Fill ((fGenJet.pt()-fCaloJet.pt())/fGenJet.pt());
00917 }
00918
00919 if (fabs(fGenJet.eta())<1.5) {
00920
00921
00922 mpTScaleB_d->Fill (log10(PtGen), PtCalo/PtGen);
00923 mpTScalePhiB_d->Fill (fGenJet.phi(), PtCalo/PtGen);
00924
00925 if (PtGen>30.0 && PtGen<200.0) {
00926 mpTScale1DB_30_200->Fill (fCaloJet.pt()/fGenJet.pt());
00927 }
00928 if (PtGen>200.0 && PtGen<600.0) {
00929 mpTScale1DB_200_600->Fill (fCaloJet.pt()/fGenJet.pt());
00930 }
00931 if (PtGen>300.0 && PtGen<1500.0) {
00932 mpTScale1DB_600_1500->Fill (fCaloJet.pt()/fGenJet.pt());
00933 }
00934 if (PtGen>1500.0 && PtGen<3500.0) {
00935 mpTScale1DB_1500_3500->Fill (fCaloJet.pt()/fGenJet.pt());
00936 }
00937
00938 }
00939
00940 if (fabs(fGenJet.eta())>1.5 && fabs(fGenJet.eta())<3.0) {
00941
00942
00943 mpTScaleE_d->Fill (log10(PtGen), PtCalo/PtGen);
00944 mpTScalePhiE_d->Fill (fGenJet.phi(), PtCalo/PtGen);
00945
00946 if (PtGen>30.0 && PtGen<200.0) {
00947 mpTScale1DE_30_200->Fill (fCaloJet.pt()/fGenJet.pt());
00948 }
00949 if (PtGen>200.0 && PtGen<600.0) {
00950 mpTScale1DE_200_600->Fill (fCaloJet.pt()/fGenJet.pt());
00951 }
00952 if (PtGen>600.0 && PtGen<1500.0) {
00953 mpTScale1DE_600_1500->Fill (fCaloJet.pt()/fGenJet.pt());
00954 }
00955 if (PtGen>1500.0 && PtGen<3500.0) {
00956 mpTScale1DE_1500_3500->Fill (fCaloJet.pt()/fGenJet.pt());
00957 }
00958
00959 }
00960
00961 if (fabs(fGenJet.eta())>3.0 && fabs(fGenJet.eta())<6.0) {
00962
00963
00964 mpTScaleF_d->Fill (log10(PtGen), PtCalo/PtGen);
00965 mpTScalePhiF_d->Fill (fGenJet.phi(), PtCalo/PtGen);
00966
00967 if (PtGen>30.0 && PtGen<200.0) {
00968 mpTScale1DF_30_200->Fill (fCaloJet.pt()/fGenJet.pt());
00969 }
00970 if (PtGen>200.0 && PtGen<600.0) {
00971 mpTScale1DF_200_600->Fill (fCaloJet.pt()/fGenJet.pt());
00972 }
00973 if (PtGen>600.0 && PtGen<1500.0) {
00974 mpTScale1DF_600_1500->Fill (fCaloJet.pt()/fGenJet.pt());
00975 }
00976 if (PtGen>1500.0 && PtGen<3500.0) {
00977 mpTScale1DF_1500_3500->Fill (fCaloJet.pt()/fGenJet.pt());
00978 }
00979
00980 }
00981
00982 if (fGenJet.pt()>30.0 && fGenJet.pt()<200.0) {
00983 mpTScale_30_200_d->Fill (fGenJet.eta(),fCaloJet.pt()/fGenJet.pt());
00984 }
00985
00986 if (fGenJet.pt()>200.0 && fGenJet.pt()<600.0) {
00987 mpTScale_200_600_d->Fill (fGenJet.eta(),fCaloJet.pt()/fGenJet.pt());
00988 }
00989
00990 if (fGenJet.pt()>600.0 && fGenJet.pt()<1500.0) {
00991 mpTScale_600_1500_d->Fill (fGenJet.eta(),fCaloJet.pt()/fGenJet.pt());
00992 }
00993
00994 if (fGenJet.pt()>1500.0 && fGenJet.pt()<3500.0) {
00995 mpTScale_1500_3500_d->Fill (fGenJet.eta(),fCaloJet.pt()/fGenJet.pt());
00996 }
00997
00998 if (fabs(fGenJet.eta())<1.3) {
00999 if(fGenJet.pt()>60.0 && fGenJet.pt()<120.0) {
01000 if(goodVertices.size()<=5) mpTScale_a_nvtx_0_5->Fill( PtCalo/PtGen);
01001 }
01002 if(fGenJet.pt()>200.0 && fGenJet.pt()<300.0) {
01003 if(goodVertices.size()<=5) mpTScale_b_nvtx_0_5->Fill( PtCalo/PtGen);
01004 }
01005 if(fGenJet.pt()>600.0 && fGenJet.pt()<900.0) {
01006 if(goodVertices.size()<=5) mpTScale_c_nvtx_0_5->Fill( PtCalo/PtGen);
01007 }
01008
01009 if(fGenJet.pt()>60.0 && fGenJet.pt()<120.0) {
01010 if(goodVertices.size()>5 && goodVertices.size()<=10) mpTScale_a_nvtx_5_10->Fill( PtCalo/PtGen);
01011 }
01012 if(fGenJet.pt()>200.0 && fGenJet.pt()<300.0) {
01013 if(goodVertices.size()>5 && goodVertices.size()<=10) mpTScale_b_nvtx_5_10->Fill( PtCalo/PtGen);
01014 }
01015 if(fGenJet.pt()>600.0 && fGenJet.pt()<900.0) {
01016 if(goodVertices.size()>5 && goodVertices.size()<=10) mpTScale_c_nvtx_5_10->Fill( PtCalo/PtGen);
01017 }
01018
01019 if(fGenJet.pt()>60.0 && fGenJet.pt()<120.0) {
01020 if(goodVertices.size()>10 && goodVertices.size()<=15) mpTScale_a_nvtx_10_15->Fill( PtCalo/PtGen);
01021 }
01022 if(fGenJet.pt()>200.0 && fGenJet.pt()<300.0) {
01023 if(goodVertices.size()>10 && goodVertices.size()<=15) mpTScale_b_nvtx_10_15->Fill( PtCalo/PtGen);
01024 }
01025 if(fGenJet.pt()>600.0 && fGenJet.pt()<900.0) {
01026 if(goodVertices.size()>10 && goodVertices.size()<=15) mpTScale_c_nvtx_10_15->Fill( PtCalo/PtGen);
01027 }
01028
01029 if(fGenJet.pt()>60.0 && fGenJet.pt()<120.0) {
01030 if(goodVertices.size()>15 && goodVertices.size()<=20) mpTScale_a_nvtx_15_20->Fill( PtCalo/PtGen);
01031 }
01032 if(fGenJet.pt()>200.0 && fGenJet.pt()<300.0) {
01033 if(goodVertices.size()>15 && goodVertices.size()<=20) mpTScale_b_nvtx_15_20->Fill( PtCalo/PtGen);
01034 }
01035 if(fGenJet.pt()>600.0 && fGenJet.pt()<900.0) {
01036 if(goodVertices.size()>15 && goodVertices.size()<=20) mpTScale_c_nvtx_15_20->Fill( PtCalo/PtGen);
01037 }
01038
01039 if(fGenJet.pt()>60.0 && fGenJet.pt()<120.0) {
01040 if(goodVertices.size()>20 && goodVertices.size()<=30) mpTScale_a_nvtx_20_30->Fill( PtCalo/PtGen);
01041 }
01042 if(fGenJet.pt()>200.0 && fGenJet.pt()<300.0) {
01043 if(goodVertices.size()>20 && goodVertices.size()<=30) mpTScale_b_nvtx_20_30->Fill( PtCalo/PtGen);
01044 }
01045 if(fGenJet.pt()>600.0 && fGenJet.pt()<900.0) {
01046 if(goodVertices.size()>20 && goodVertices.size()<=30) mpTScale_c_nvtx_20_30->Fill( PtCalo/PtGen);
01047 }
01048
01049 if(fGenJet.pt()>60.0 && fGenJet.pt()<120.0) {
01050 if(goodVertices.size()>30) mpTScale_a_nvtx_30_inf->Fill( PtCalo/PtGen);
01051 }
01052 if(fGenJet.pt()>200.0 && fGenJet.pt()<300.0) {
01053 if(goodVertices.size()>30) mpTScale_b_nvtx_30_inf->Fill( PtCalo/PtGen);
01054 }
01055 if(fGenJet.pt()>600.0 && fGenJet.pt()<900.0) {
01056 if(goodVertices.size()>30) mpTScale_c_nvtx_30_inf->Fill( PtCalo/PtGen);
01057 }
01059 if(goodVertices.size()<=5) mpTScale_nvtx_0_5->Fill(log10(PtGen),PtCalo/PtGen);
01060 if(goodVertices.size()>5 && goodVertices.size()<=10) mpTScale_nvtx_5_10->Fill(log10(PtGen),PtCalo/PtGen);
01061 if(goodVertices.size()>10 && goodVertices.size()<=15) mpTScale_nvtx_10_15->Fill(log10(PtGen),PtCalo/PtGen);
01062 if(goodVertices.size()>15 && goodVertices.size()<=20) mpTScale_nvtx_15_20->Fill(log10(PtGen), PtCalo/PtGen);
01063 if(goodVertices.size()>20 && goodVertices.size()<=30) mpTScale_nvtx_20_30->Fill(log10(PtGen), PtCalo/PtGen);
01064 if(goodVertices.size()>30) mpTScale_nvtx_30_inf->Fill(log10(PtGen), PtCalo/PtGen);
01065 }
01066 if (fabs(fGenJet.eta())<1.3) {
01067 if(fGenJet.pt()>60.0 && fGenJet.pt()<120.0) mpTScale_a->Fill(PtCalo/PtGen);
01068 if(fGenJet.pt()>200.0 && fGenJet.pt()<300.0) mpTScale_b->Fill(PtCalo/PtGen);
01069 if(fGenJet.pt()>600.0 && fGenJet.pt()<900.0) mpTScale_c->Fill(PtCalo/PtGen);
01070 }
01071 mpTScale_pT->Fill (log10(PtGen), PtCalo/PtGen);
01072 }
01073