File indexing completed on 2024-04-06 12:09:31
0001
0002
0003
0004
0005
0006
0007
0008
0009 #include "DQMOffline/JetMET/interface/JetAnalyzer_HeavyIons.h"
0010
0011 using namespace edm;
0012 using namespace reco;
0013 using namespace std;
0014
0015
0016
0017 JetAnalyzer_HeavyIons::JetAnalyzer_HeavyIons(const edm::ParameterSet &iConfig)
0018 : mInputCollection(iConfig.getParameter<edm::InputTag>("src")),
0019 mInputVtxCollection(iConfig.getUntrackedParameter<edm::InputTag>("srcVtx", edm::InputTag("hiSelectedVertex"))),
0020 mInputPFCandCollection(iConfig.getParameter<edm::InputTag>("PFcands")),
0021 mInputCsCandCollection(iConfig.exists("CScands") ? iConfig.getParameter<edm::InputTag>("CScands")
0022 : edm::InputTag()),
0023 mOutputFile(iConfig.getUntrackedParameter<std::string>("OutputFile", "")),
0024 JetType(iConfig.getUntrackedParameter<std::string>("JetType")),
0025 UEAlgo(iConfig.getUntrackedParameter<std::string>("UEAlgo")),
0026 mRecoJetPtThreshold(iConfig.getParameter<double>("recoJetPtThreshold")),
0027 mReverseEnergyFractionThreshold(iConfig.getParameter<double>("reverseEnergyFractionThreshold")),
0028 mRThreshold(iConfig.getParameter<double>("RThreshold")),
0029 JetCorrectionService(iConfig.getParameter<std::string>("JetCorrections")) {
0030 std::string inputCollectionLabel(mInputCollection.label());
0031
0032 isCaloJet = (std::string("calo") == JetType);
0033 isJPTJet = (std::string("jpt") == JetType);
0034 isPFJet = (std::string("pf") == JetType);
0035
0036
0037 pvToken_ = consumes<std::vector<reco::Vertex>>(edm::InputTag("offlinePrimaryVertices"));
0038 caloTowersToken_ = consumes<CaloTowerCollection>(edm::InputTag("towerMaker"));
0039 if (isCaloJet)
0040 caloJetsToken_ = consumes<reco::CaloJetCollection>(mInputCollection);
0041 if (isJPTJet)
0042 jptJetsToken_ = consumes<reco::JPTJetCollection>(mInputCollection);
0043 if (isPFJet) {
0044 if (std::string("Pu") == UEAlgo)
0045 basicJetsToken_ = consumes<reco::BasicJetCollection>(mInputCollection);
0046 if (std::string("Cs") == UEAlgo)
0047 pfJetsToken_ = consumes<reco::PFJetCollection>(mInputCollection);
0048 }
0049
0050 pfCandToken_ = consumes<reco::PFCandidateCollection>(mInputPFCandCollection);
0051 csCandToken_ = mayConsume<reco::PFCandidateCollection>(mInputCsCandCollection);
0052 pfCandViewToken_ = consumes<reco::CandidateView>(mInputPFCandCollection);
0053 caloCandViewToken_ = consumes<reco::CandidateView>(edm::InputTag("towerMaker"));
0054
0055 centralityTag_ = iConfig.getParameter<InputTag>("centralitycollection");
0056 centralityToken = consumes<reco::Centrality>(centralityTag_);
0057
0058 centralityBinToken = mayConsume<int>(iConfig.exists("centralitybincollection")
0059 ? iConfig.getParameter<edm::InputTag>("centralitybincollection")
0060 : edm::InputTag());
0061
0062 hiVertexToken_ = consumes<std::vector<reco::Vertex>>(mInputVtxCollection);
0063
0064 etaToken_ = mayConsume<std::vector<double>>(iConfig.exists("etaMap") ? iConfig.getParameter<edm::InputTag>("etaMap")
0065 : edm::InputTag());
0066 rhoToken_ = mayConsume<std::vector<double>>(iConfig.exists("rho") ? iConfig.getParameter<edm::InputTag>("rho")
0067 : edm::InputTag());
0068 rhomToken_ = mayConsume<std::vector<double>>(iConfig.exists("rhom") ? iConfig.getParameter<edm::InputTag>("rhom")
0069 : edm::InputTag());
0070
0071
0072 if (isPFJet) {
0073 mNPFpart = nullptr;
0074 mPFPt = nullptr;
0075 mPFEta = nullptr;
0076 mPFPhi = nullptr;
0077
0078 mSumPFPt = nullptr;
0079 mSumPFPt_eta = nullptr;
0080 mSumSquaredPFPt = nullptr;
0081 mSumSquaredPFPt_eta = nullptr;
0082 mSumPFPt_HF = nullptr;
0083
0084 mPFDeltaR = nullptr;
0085 mPFDeltaR_Scaled_R = nullptr;
0086
0087 for (int ieta = 0; ieta < etaBins_; ieta++) {
0088 mSumPFPtEtaDep[ieta] = nullptr;
0089 }
0090
0091
0092 mRhoDist_vsEta = nullptr;
0093 mRhoMDist_vsEta = nullptr;
0094 mRhoDist_vsPt = nullptr;
0095 mRhoMDist_vsPt = nullptr;
0096
0097 rhoEtaRange = nullptr;
0098 for (int ieta = 0; ieta < etaBins_; ieta++) {
0099 mCSCandpT_vsPt[ieta] = nullptr;
0100 mRhoDist_vsCent[ieta] = nullptr;
0101 mRhoMDist_vsCent[ieta] = nullptr;
0102 for (int ipt = 0; ipt < ptBins_; ipt++) {
0103 mSubtractedEFrac[ipt][ieta] = nullptr;
0104 mSubtractedE[ipt][ieta] = nullptr;
0105 }
0106 }
0107
0108 mPFCandpT_vs_eta_Unknown = nullptr;
0109 mPFCandpT_vs_eta_ChargedHadron = nullptr;
0110 mPFCandpT_vs_eta_electron = nullptr;
0111 mPFCandpT_vs_eta_muon = nullptr;
0112 mPFCandpT_vs_eta_photon = nullptr;
0113 mPFCandpT_vs_eta_NeutralHadron = nullptr;
0114 mPFCandpT_vs_eta_HadE_inHF = nullptr;
0115 mPFCandpT_vs_eta_EME_inHF = nullptr;
0116
0117 mPFCandpT_Barrel_Unknown = nullptr;
0118 mPFCandpT_Barrel_ChargedHadron = nullptr;
0119 mPFCandpT_Barrel_electron = nullptr;
0120 mPFCandpT_Barrel_muon = nullptr;
0121 mPFCandpT_Barrel_photon = nullptr;
0122 mPFCandpT_Barrel_NeutralHadron = nullptr;
0123 mPFCandpT_Barrel_HadE_inHF = nullptr;
0124 mPFCandpT_Barrel_EME_inHF = nullptr;
0125
0126 mPFCandpT_Endcap_Unknown = nullptr;
0127 mPFCandpT_Endcap_ChargedHadron = nullptr;
0128 mPFCandpT_Endcap_electron = nullptr;
0129 mPFCandpT_Endcap_muon = nullptr;
0130 mPFCandpT_Endcap_photon = nullptr;
0131 mPFCandpT_Endcap_NeutralHadron = nullptr;
0132 mPFCandpT_Endcap_HadE_inHF = nullptr;
0133 mPFCandpT_Endcap_EME_inHF = nullptr;
0134
0135 mPFCandpT_Forward_Unknown = nullptr;
0136 mPFCandpT_Forward_ChargedHadron = nullptr;
0137 mPFCandpT_Forward_electron = nullptr;
0138 mPFCandpT_Forward_muon = nullptr;
0139 mPFCandpT_Forward_photon = nullptr;
0140 mPFCandpT_Forward_NeutralHadron = nullptr;
0141 mPFCandpT_Forward_HadE_inHF = nullptr;
0142 mPFCandpT_Forward_EME_inHF = nullptr;
0143 }
0144 if (isCaloJet) {
0145 mNCalopart = nullptr;
0146 mCaloPt = nullptr;
0147 mCaloEta = nullptr;
0148 mCaloPhi = nullptr;
0149
0150 mSumCaloPt = nullptr;
0151 mSumCaloPt_eta = nullptr;
0152 mSumSquaredCaloPt = nullptr;
0153 mSumSquaredCaloPt_eta = nullptr;
0154 mSumCaloPt_HF = nullptr;
0155
0156 for (int ieta = 0; ieta < etaBins_; ieta++) {
0157 mSumCaloPtEtaDep[ieta] = nullptr;
0158 }
0159 }
0160
0161 mSumpt = nullptr;
0162
0163
0164 mNvtx = nullptr;
0165 mHF = nullptr;
0166
0167
0168
0169
0170 mEta = nullptr;
0171 mPhi = nullptr;
0172 mEnergy = nullptr;
0173 mP = nullptr;
0174 mPt = nullptr;
0175 mMass = nullptr;
0176 mConstituents = nullptr;
0177 mJetArea = nullptr;
0178 mjetpileup = nullptr;
0179 mNJets_40 = nullptr;
0180 mNJets = nullptr;
0181 }
0182
0183 void JetAnalyzer_HeavyIons::bookHistograms(DQMStore::IBooker &ibooker,
0184 edm::Run const &iRun,
0185 edm::EventSetup const &iSetup) {
0186 ibooker.setCurrentFolder("JetMET/HIJetValidation/" + mInputCollection.label());
0187
0188 TH2F *h2D_etabins_vs_pt2 =
0189 new TH2F("h2D_etabins_vs_pt2", ";#eta;sum p_{T}^{2}", etaBins_, edge_pseudorapidity, 10000, 0, 10000);
0190 TH2F *h2D_etabins_vs_pt =
0191 new TH2F("h2D_etabins_vs_pt", ";#eta;sum p_{T}", etaBins_, edge_pseudorapidity, 500, 0, 500);
0192 TH2F *h2D_pfcand_etabins_vs_pt =
0193 new TH2F("h2D_etabins_vs_pt", ";#eta;sum p_{T}", etaBins_, edge_pseudorapidity, 300, 0, 300);
0194
0195 const int nHihfBins = 100;
0196 const double hihfBins[nHihfBins + 1] = {
0197 0, 11.282305, 11.82962, 12.344717, 13.029054, 13.698554, 14.36821, 15.140326,
0198 15.845786, 16.684441, 17.449186, 18.364939, 19.247023, 20.448898, 21.776642, 22.870239,
0199 24.405788, 26.366919, 28.340206, 30.661842, 33.657627, 36.656773, 40.028049, 44.274784,
0200 48.583706, 52.981358, 56.860199, 61.559853, 66.663689, 72.768196, 78.265915, 84.744431,
0201 92.483459, 100.281021, 108.646576, 117.023911, 125.901093, 135.224899, 147.046875, 159.864258,
0202 171.06015, 184.76535, 197.687103, 212.873535, 229.276413, 245.175369, 262.498322, 280.54599,
0203 299.570801, 317.188446, 336.99881, 357.960144, 374.725922, 400.638367, 426.062103, 453.07251,
0204 483.99704, 517.556396, 549.421143, 578.050781, 608.358643, 640.940979, 680.361755, 719.215027,
0205 757.798645, 793.882385, 839.83728, 887.268127, 931.233276, 980.856689, 1023.191833, 1080.281494,
0206 1138.363892, 1191.303345, 1251.439453, 1305.288818, 1368.290894, 1433.700684, 1501.597412, 1557.918335,
0207 1625.636475, 1695.08374, 1761.771484, 1848.941162, 1938.178345, 2027.55603, 2127.364014, 2226.186523,
0208 2315.188965, 2399.225342, 2501.608643, 2611.077881, 2726.316162, 2848.74707, 2972.975342, 3096.565674,
0209 3219.530762, 3361.178223, 3568.028564, 3765.690186, 50000};
0210
0211 TH2F *h2D_etabins_forRho =
0212 new TH2F("etabinsForRho", "#rho vs. #eta;#eta;#rho", etaBins_, edge_pseudorapidity, 500, 0, 300);
0213 TH2F *h2D_ptBins_forRho = new TH2F("ptBinsForRho", "#rho vs. p_{T};p_{T};#rho", 300, 0, 300, 500, 0, 300);
0214 TH2F *h2D_centBins_forRho = new TH2F("centBinsForRho", "dummy;HIHF;#rho", nHihfBins, hihfBins, 500, 0, 300);
0215
0216 TH2F *h2D_etabins_forRhoM =
0217 new TH2F("etabinsForRho", "#rho_{M} vs. #eta;#eta;#rho_{M}", etaBins_, edge_pseudorapidity, 100, 0, 1.5);
0218 TH2F *h2D_ptBins_forRhoM = new TH2F("ptBinsForRho", "#rho_{M} vs. p_{T};p_{T};#rho_{M}", 300, 0, 300, 100, 0, 1.5);
0219 TH2F *h2D_centBins_forRhoM = new TH2F("centBinsForRho", "dummy;HIHF;#rho_{M}", nHihfBins, hihfBins, 100, 0, 1.5);
0220
0221 if (isPFJet) {
0222 mNPFpart = ibooker.book1D("NPFpart", "No of particle flow candidates", 1000, 0, 1000);
0223 mPFPt = ibooker.book1D("PFPt", "PF candidate p_{T}", 10000, -500, 500);
0224 mPFEta = ibooker.book1D("PFEta", "PF candidate #eta", 120, -6, 6);
0225 mPFPhi = ibooker.book1D("PFPhi", "PF candidate #phi", 70, -3.5, 3.5);
0226
0227 mPFDeltaR = ibooker.book1D("PFDeltaR", "PF candidate DeltaR", 100, 0, 4);
0228 mPFDeltaR_Scaled_R =
0229 ibooker.book1D("PFDeltaR_Scaled_R", "PF candidate DeltaR Divided by DeltaR square", 100, 0, 4);
0230
0231 mSumPFPt = ibooker.book1D("SumPFPt", "Sum of initial PF p_{T}", 1000, -10000, 10000);
0232 mSumPFPt_eta = ibooker.book2D("SumPFPt_etaBins", h2D_etabins_vs_pt);
0233
0234 mSumSquaredPFPt = ibooker.book1D("SumSquaredPFPt", "Sum of initial PF p_{T} squared", 10000, 0, 10000);
0235 mSumSquaredPFPt_eta = ibooker.book2D("SumSquaredPFPt_etaBins", h2D_etabins_vs_pt2);
0236
0237 mSumPFPt_HF = ibooker.book2D(
0238 "SumPFPt_HF", "HF energy (y axis) vs Sum initial PF p_{T} (x axis)", 1000, -1000, 1000, 1000, 0, 10000);
0239
0240 for (int ieta = 0; ieta < etaBins_; ieta++) {
0241 int range = 1000;
0242 if (ieta < 2 || etaBins_ - ieta <= 2)
0243 range = 500;
0244 const char *lc = edge_pseudorapidity[ieta] < 0 ? "n" : "p";
0245 const char *rc = edge_pseudorapidity[ieta + 1] < 0 ? "n" : "p";
0246 std::string histoName =
0247 Form("mSumCaloPt_%s%.3g_%s%.3g", lc, abs(edge_pseudorapidity[ieta]), rc, abs(edge_pseudorapidity[ieta + 1]));
0248 for (int id = 0; id < 2; id++) {
0249 if (histoName.find('.') != std::string::npos) {
0250 histoName.replace(histoName.find('.'), 1, "p");
0251 }
0252 }
0253 mSumPFPtEtaDep[ieta] = ibooker.book1D(
0254 histoName.c_str(),
0255 Form("Sum PFPt in the eta range %.3g to %.3g", edge_pseudorapidity[ieta], edge_pseudorapidity[ieta + 1]),
0256 500,
0257 0,
0258 range);
0259 }
0260
0261 if (std::string("Cs") == UEAlgo) {
0262 mRhoDist_vsEta = ibooker.book2D("rhoDist_vsEta", h2D_etabins_forRho);
0263 mRhoMDist_vsEta = ibooker.book2D("rhoMDist_vsEta", h2D_etabins_forRhoM);
0264 mRhoDist_vsPt = ibooker.book2D("rhoDist_vsPt", h2D_ptBins_forRho);
0265 mRhoMDist_vsPt = ibooker.book2D("rhoMDist_vsPt", h2D_ptBins_forRhoM);
0266
0267
0268 rhoEtaRange = ibooker.book1D("rhoEtaRange", "", 500, -5.5, 5.5);
0269 for (int ieta = 0; ieta < etaBins_; ieta++) {
0270 mCSCandpT_vsPt[ieta] =
0271 ibooker.book1D(Form("csCandPt_etaBin%d", ieta), "CS candidate pt, eta-by-eta", 150, 0, 300);
0272
0273 const char *lc = edge_pseudorapidity[ieta] < 0 ? "n" : "p";
0274 const char *rc = edge_pseudorapidity[ieta + 1] < 0 ? "n" : "p";
0275 std::string histoName = Form(
0276 "Dist_vsCent_%s%.3g_%s%.3g", lc, abs(edge_pseudorapidity[ieta]), rc, abs(edge_pseudorapidity[ieta + 1]));
0277 for (int id = 0; id < 2; id++) {
0278 if (histoName.find('.') != std::string::npos) {
0279 histoName.replace(histoName.find('.'), 1, "p");
0280 }
0281 }
0282 std::string rhoName = "rho";
0283 rhoName.append(histoName);
0284 h2D_centBins_forRho->SetTitle(Form(
0285 "#rho vs. HIHF in the range %.3g < #eta < %.3g", edge_pseudorapidity[ieta], edge_pseudorapidity[ieta + 1]));
0286 mRhoDist_vsCent[ieta] = ibooker.book2D(rhoName.c_str(), h2D_centBins_forRho);
0287 std::string rhoMName = "rhoM";
0288 rhoMName.append(histoName);
0289 h2D_centBins_forRhoM->SetTitle(Form("#rho_{M} vs. HIHF in the range %.3g < #eta < %.3g",
0290 edge_pseudorapidity[ieta],
0291 edge_pseudorapidity[ieta + 1]));
0292 mRhoMDist_vsCent[ieta] = ibooker.book2D(rhoMName.c_str(), h2D_centBins_forRhoM);
0293 for (int ipt = 0; ipt < ptBins_; ipt++) {
0294 mSubtractedEFrac[ipt][ieta] =
0295 ibooker.book1D(Form("subtractedEFrac_JetPt%d_to_%d_etaBin%d", ptBin[ipt], ptBin[ipt + 1], ieta),
0296 "subtracted fraction of CS jet",
0297 50,
0298 0,
0299 1);
0300 mSubtractedE[ipt][ieta] =
0301 ibooker.book1D(Form("subtractedE_JetPt%d_to_%d_etaBin%d", ptBin[ipt], ptBin[ipt + 1], ieta),
0302 "subtracted total of CS jet",
0303 300,
0304 0,
0305 300);
0306 }
0307 mCSCand_corrPFcand[ieta] = ibooker.book2D(
0308 Form("csCandCorrPF%d", ieta), "CS to PF candidate correlation, eta-by-eta", 300, 0, 300, 300, 0, 300);
0309 }
0310 }
0311
0312 mPFCandpT_vs_eta_Unknown = ibooker.book2D("PF_cand_X_unknown", h2D_pfcand_etabins_vs_pt);
0313 mPFCandpT_vs_eta_ChargedHadron = ibooker.book2D("PF_cand_chargedHad", h2D_pfcand_etabins_vs_pt);
0314 mPFCandpT_vs_eta_electron = ibooker.book2D("PF_cand_electron", h2D_pfcand_etabins_vs_pt);
0315 mPFCandpT_vs_eta_muon = ibooker.book2D("PF_cand_muon", h2D_pfcand_etabins_vs_pt);
0316 mPFCandpT_vs_eta_photon = ibooker.book2D("PF_cand_photon", h2D_pfcand_etabins_vs_pt);
0317 mPFCandpT_vs_eta_NeutralHadron = ibooker.book2D("PF_cand_neutralHad", h2D_pfcand_etabins_vs_pt);
0318 mPFCandpT_vs_eta_HadE_inHF = ibooker.book2D("PF_cand_HadEner_inHF", h2D_pfcand_etabins_vs_pt);
0319 mPFCandpT_vs_eta_EME_inHF = ibooker.book2D("PF_cand_EMEner_inHF", h2D_pfcand_etabins_vs_pt);
0320
0321 mPFCandpT_Barrel_Unknown = ibooker.book1D("mPFCandpT_Barrel_Unknown",
0322 Form(";PF candidate p_{T}, |#eta|<%2.2f; counts", BarrelEta),
0323 300,
0324 0,
0325 300);
0326 mPFCandpT_Barrel_ChargedHadron = ibooker.book1D("mPFCandpT_Barrel_ChargedHadron",
0327 Form(";PF candidate p_{T}, |#eta|<%2.2f; counts", BarrelEta),
0328 300,
0329 0,
0330 300);
0331 mPFCandpT_Barrel_electron = ibooker.book1D("mPFCandpT_Barrel_electron",
0332 Form(";PF candidate p_{T}, |#eta|<%2.2f; counts", BarrelEta),
0333 300,
0334 0,
0335 300);
0336 mPFCandpT_Barrel_muon = ibooker.book1D("mPFCandpT_Barrel_muon",
0337 Form(";PF candidate p_{T}, |#eta|<%2.2f; counts", BarrelEta),
0338 300,
0339 0,
0340 300);
0341 mPFCandpT_Barrel_photon = ibooker.book1D("mPFCandpT_Barrel_photon",
0342 Form(";PF candidate p_{T}, |#eta|<%2.2f; counts", BarrelEta),
0343 300,
0344 0,
0345 300);
0346 mPFCandpT_Barrel_NeutralHadron = ibooker.book1D("mPFCandpT_Barrel_NeutralHadron",
0347 Form(";PF candidate p_{T}, |#eta|<%2.2f; counts", BarrelEta),
0348 300,
0349 0,
0350 300);
0351 mPFCandpT_Barrel_HadE_inHF = ibooker.book1D("mPFCandpT_Barrel_HadE_inHF",
0352 Form(";PF candidate p_{T}, |#eta|<%2.2f; counts", BarrelEta),
0353 300,
0354 0,
0355 300);
0356 mPFCandpT_Barrel_EME_inHF = ibooker.book1D("mPFCandpT_Barrel_EME_inHF",
0357 Form(";PF candidate p_{T}, |#eta|<%2.2f; counts", BarrelEta),
0358 300,
0359 0,
0360 300);
0361
0362 mPFCandpT_Endcap_Unknown =
0363 ibooker.book1D("mPFCandpT_Endcap_Unknown",
0364 Form(";PF candidate p_{T}, %2.2f<|#eta|<%2.2f; counts", BarrelEta, EndcapEta),
0365 300,
0366 0,
0367 300);
0368 mPFCandpT_Endcap_ChargedHadron =
0369 ibooker.book1D("mPFCandpT_Endcap_ChargedHadron",
0370 Form(";PF candidate p_{T}, %2.2f<|#eta|<%2.2f; counts", BarrelEta, EndcapEta),
0371 300,
0372 0,
0373 300);
0374 mPFCandpT_Endcap_electron =
0375 ibooker.book1D("mPFCandpT_Endcap_electron",
0376 Form(";PF candidate p_{T}, %2.2f<|#eta|<%2.2f; counts", BarrelEta, EndcapEta),
0377 300,
0378 0,
0379 300);
0380 mPFCandpT_Endcap_muon =
0381 ibooker.book1D("mPFCandpT_Endcap_muon",
0382 Form(";PF candidate p_{T}, %2.2f<|#eta|<%2.2f; counts", BarrelEta, EndcapEta),
0383 300,
0384 0,
0385 300);
0386 mPFCandpT_Endcap_photon =
0387 ibooker.book1D("mPFCandpT_Endcap_photon",
0388 Form(";PF candidate p_{T}, %2.2f<|#eta|<%2.2f; counts", BarrelEta, EndcapEta),
0389 300,
0390 0,
0391 300);
0392 mPFCandpT_Endcap_NeutralHadron =
0393 ibooker.book1D("mPFCandpT_Endcap_NeutralHadron",
0394 Form(";PF candidate p_{T}, %2.2f<|#eta|<%2.2f; counts", BarrelEta, EndcapEta),
0395 300,
0396 0,
0397 300);
0398 mPFCandpT_Endcap_HadE_inHF =
0399 ibooker.book1D("mPFCandpT_Endcap_HadE_inHF",
0400 Form(";PF candidate p_{T}, %2.2f<|#eta|<%2.2f; counts", BarrelEta, EndcapEta),
0401 300,
0402 0,
0403 300);
0404 mPFCandpT_Endcap_EME_inHF =
0405 ibooker.book1D("mPFCandpT_Endcap_EME_inHF",
0406 Form(";PF candidate p_{T}, %2.2f<|#eta|<%2.2f; counts", BarrelEta, EndcapEta),
0407 300,
0408 0,
0409 300);
0410
0411 mPFCandpT_Forward_Unknown =
0412 ibooker.book1D("mPFCandpT_Forward_Unknown",
0413 Form(";PF candidate p_{T}, %2.2f<|#eta|<%2.2f; counts", EndcapEta, ForwardEta),
0414 300,
0415 0,
0416 300);
0417 mPFCandpT_Forward_ChargedHadron =
0418 ibooker.book1D("mPFCandpT_Forward_ChargedHadron",
0419 Form(";PF candidate p_{T}, %2.2f<|#eta|<%2.2f; counts", EndcapEta, ForwardEta),
0420 300,
0421 0,
0422 300);
0423 mPFCandpT_Forward_electron =
0424 ibooker.book1D("mPFCandpT_Forward_electron",
0425 Form(";PF candidate p_{T}, %2.2f<|#eta|<%2.2f; counts", EndcapEta, ForwardEta),
0426 300,
0427 0,
0428 300);
0429 mPFCandpT_Forward_muon =
0430 ibooker.book1D("mPFCandpT_Forward_muon",
0431 Form(";PF candidate p_{T}, %2.2f<|#eta|<%2.2f; counts", EndcapEta, ForwardEta),
0432 300,
0433 0,
0434 300);
0435 mPFCandpT_Forward_photon =
0436 ibooker.book1D("mPFCandpT_Forward_photon",
0437 Form(";PF candidate p_{T}, %2.2f<|#eta|<%2.2f; counts", EndcapEta, ForwardEta),
0438 300,
0439 0,
0440 300);
0441 mPFCandpT_Forward_NeutralHadron =
0442 ibooker.book1D("mPFCandpT_Forward_NeutralHadron",
0443 Form(";PF candidate p_{T}, %2.2f<|#eta|<%2.2f; counts", EndcapEta, ForwardEta),
0444 300,
0445 0,
0446 300);
0447 mPFCandpT_Forward_HadE_inHF =
0448 ibooker.book1D("mPFCandpT_Forward_HadE_inHF",
0449 Form(";PF candidate p_{T}, %2.2f<|#eta|<%2.2f; counts", EndcapEta, ForwardEta),
0450 300,
0451 0,
0452 300);
0453 mPFCandpT_Forward_EME_inHF =
0454 ibooker.book1D("mPFCandpT_Forward_EME_inHF",
0455 Form(";PF candidate p_{T}, %2.2f<|#eta|<%2.2f; counts", EndcapEta, ForwardEta),
0456 300,
0457 0,
0458 300);
0459 }
0460
0461 if (isCaloJet) {
0462 mNCalopart = ibooker.book1D("NCalopart", "No of particle flow candidates", 1000, 0, 10000);
0463 mCaloPt = ibooker.book1D("CaloPt", "Calo candidate p_{T}", 1000, -5000, 5000);
0464 mCaloEta = ibooker.book1D("CaloEta", "Calo candidate #eta", 120, -6, 6);
0465 mCaloPhi = ibooker.book1D("CaloPhi", "Calo candidate #phi", 70, -3.5, 3.5);
0466
0467 mSumCaloPt = ibooker.book1D("SumCaloPt", "Sum Calo p_{T}", 1000, -10000, 10000);
0468 mSumCaloPt_eta = ibooker.book2D("SumCaloPt_etaBins", h2D_etabins_vs_pt);
0469
0470 mSumSquaredCaloPt = ibooker.book1D("SumSquaredCaloPt", "Sum of initial Calo tower p_{T} squared", 10000, 0, 10000);
0471 mSumSquaredCaloPt_eta = ibooker.book2D("SumSquaredCaloPt_etaBins", h2D_etabins_vs_pt2);
0472
0473 mSumCaloPt_HF =
0474 ibooker.book2D("SumCaloPt_HF", "HF Energy (y axis) vs Sum Calo tower p_{T}", 1000, -1000, 1000, 1000, 0, 10000);
0475
0476 for (int ieta = 0; ieta < etaBins_; ieta++) {
0477 int range = 1000;
0478 if (ieta < 2 || etaBins_ - ieta <= 2)
0479 range = 5000;
0480 const char *lc = edge_pseudorapidity[ieta] < 0 ? "n" : "p";
0481 const char *rc = edge_pseudorapidity[ieta + 1] < 0 ? "n" : "p";
0482 std::string histoName =
0483 Form("mSumCaloPt_%s%.3g_%s%.3g", lc, abs(edge_pseudorapidity[ieta]), rc, abs(edge_pseudorapidity[ieta + 1]));
0484 for (int id = 0; id < 2; id++) {
0485 if (histoName.find('.') != std::string::npos) {
0486 histoName.replace(histoName.find('.'), 1, "p");
0487 }
0488 }
0489 mSumCaloPtEtaDep[ieta] = ibooker.book1D(histoName.c_str(),
0490 Form("Sum Calo tower Pt in the eta range %.3g to %.3g",
0491 edge_pseudorapidity[ieta],
0492 edge_pseudorapidity[ieta + 1]),
0493 1000,
0494 -1 * range,
0495 range);
0496 }
0497 }
0498
0499
0500 mSumpt = ibooker.book1D("SumpT", "Sum p_{T} of all the PF candidates per event", 1000, 0, 10000);
0501
0502
0503 mNvtx = ibooker.book1D("Nvtx", "number of vertices", 60, 0, 60);
0504 mHF = ibooker.book1D("HF", "HF energy distribution", 1000, 0, 10000);
0505
0506
0507 mEta = ibooker.book1D("Eta", "Eta", 120, -6, 6);
0508 mPhi = ibooker.book1D("Phi", "Phi", 70, -3.5, 3.5);
0509 mPt = ibooker.book1D("Pt", "Pt", 1000, 0, 500);
0510 mP = ibooker.book1D("P", "P", 100, 0, 1000);
0511 mEnergy = ibooker.book1D("Energy", "Energy", 100, 0, 1000);
0512 mMass = ibooker.book1D("Mass", "Mass", 100, 0, 200);
0513 mConstituents = ibooker.book1D("Constituents", "Constituents", 100, 0, 100);
0514 mJetArea = ibooker.book1D("JetArea", "JetArea", 100, 0, 4);
0515 mjetpileup = ibooker.book1D("jetPileUp", "jetPileUp", 100, 0, 150);
0516 mNJets_40 = ibooker.book1D("NJets_pt_greater_40", "NJets pT > 40 GeV", 50, 0, 50);
0517 mNJets = ibooker.book1D("NJets", "NJets", 100, 0, 100);
0518
0519 if (mOutputFile.empty())
0520 LogInfo("OutputInfo") << " Histograms will NOT be saved";
0521 else
0522 LogInfo("OutputInfo") << " Histograms will be saved to file:" << mOutputFile;
0523
0524 delete h2D_etabins_vs_pt2;
0525 delete h2D_etabins_vs_pt;
0526 delete h2D_pfcand_etabins_vs_pt;
0527 delete h2D_etabins_forRho;
0528 delete h2D_ptBins_forRho;
0529 delete h2D_centBins_forRho;
0530 delete h2D_centBins_forRhoM;
0531 }
0532
0533
0534
0535
0536 JetAnalyzer_HeavyIons::~JetAnalyzer_HeavyIons() {}
0537
0538
0539
0540
0541 void JetAnalyzer_HeavyIons::analyze(const edm::Event &mEvent, const edm::EventSetup &mSetup) {
0542
0543
0544
0545
0546
0547 edm::Handle<vector<reco::Vertex>> pvHandle;
0548 mEvent.getByToken(pvToken_, pvHandle);
0549 reco::Vertex::Point vtx(0, 0, 0);
0550 edm::Handle<reco::VertexCollection> vtxs;
0551
0552 mEvent.getByToken(hiVertexToken_, vtxs);
0553 int greatestvtx = 0;
0554 int nVertex = vtxs->size();
0555
0556 for (unsigned int i = 0; i < vtxs->size(); ++i) {
0557 unsigned int daughter = (*vtxs)[i].tracksSize();
0558 if (daughter > (*vtxs)[greatestvtx].tracksSize())
0559 greatestvtx = i;
0560 }
0561
0562 if (nVertex <= 0) {
0563 vtx = reco::Vertex::Point(0, 0, 0);
0564 }
0565 vtx = (*vtxs)[greatestvtx].position();
0566
0567 int nGoodVertices = 0;
0568
0569 if (pvHandle.isValid()) {
0570 for (unsigned i = 0; i < pvHandle->size(); i++) {
0571 if ((*pvHandle)[i].ndof() > 4 && (fabs((*pvHandle)[i].z()) <= 24) && (fabs((*pvHandle)[i].position().rho()) <= 2))
0572 nGoodVertices++;
0573 }
0574 }
0575
0576 mNvtx->Fill(nGoodVertices);
0577
0578
0579
0580
0581 std::vector<Jet> recoJets;
0582 recoJets.clear();
0583
0584 edm::Handle<CaloJetCollection> caloJets;
0585 edm::Handle<JPTJetCollection> jptJets;
0586 edm::Handle<PFJetCollection> pfJets;
0587 edm::Handle<BasicJetCollection> basicJets;
0588
0589
0590 edm::Handle<reco::PFCandidateCollection> pfCandidates;
0591 edm::Handle<reco::PFCandidateCollection> csCandidates;
0592 edm::Handle<CaloTowerCollection> caloCandidates;
0593 edm::Handle<reco::CandidateView> pfcandidates_;
0594 edm::Handle<reco::CandidateView> calocandidates_;
0595
0596
0597 edm::Handle<std::vector<double>> etaRanges;
0598 edm::Handle<std::vector<double>> rho;
0599 edm::Handle<std::vector<double>> rhom;
0600 if (std::string("Cs") == UEAlgo) {
0601 mEvent.getByToken(etaToken_, etaRanges);
0602 mEvent.getByToken(rhoToken_, rho);
0603 mEvent.getByToken(rhomToken_, rhom);
0604 const int rhoSize = (int)etaRanges->size();
0605 double rhoRange[rhoSize];
0606 for (int irho = 0; irho < rhoSize; irho++) {
0607 rhoRange[irho] = etaRanges->at(irho);
0608 }
0609 double yaxisLimits[501];
0610 for (int ibin = 0; ibin < 501; ibin++)
0611 yaxisLimits[ibin] = ibin * 2;
0612 if (mRhoDist_vsEta->getNbinsX() != rhoSize - 1) {
0613 mRhoDist_vsEta->getTH2F()->SetBins(
0614 rhoSize - 1, const_cast<double *>(rhoRange), 500, const_cast<double *>(yaxisLimits));
0615 mRhoMDist_vsEta->getTH2F()->SetBins(
0616 rhoSize - 1, const_cast<double *>(rhoRange), 500, const_cast<double *>(yaxisLimits));
0617 }
0618 }
0619
0620 if (isCaloJet)
0621 mEvent.getByToken(caloJetsToken_, caloJets);
0622 if (isJPTJet)
0623 mEvent.getByToken(jptJetsToken_, jptJets);
0624 if (isPFJet) {
0625 if (std::string("Pu") == UEAlgo)
0626 mEvent.getByToken(basicJetsToken_, basicJets);
0627 if (std::string("Cs") == UEAlgo)
0628 mEvent.getByToken(pfJetsToken_, pfJets);
0629 if (std::string("Vs") == UEAlgo)
0630 return;
0631 }
0632
0633 mEvent.getByToken(pfCandToken_, pfCandidates);
0634 mEvent.getByToken(pfCandViewToken_, pfcandidates_);
0635 if (std::string("Cs") == UEAlgo)
0636 mEvent.getByToken(csCandToken_, csCandidates);
0637
0638 mEvent.getByToken(caloTowersToken_, caloCandidates);
0639 mEvent.getByToken(caloCandViewToken_, calocandidates_);
0640
0641
0642 edm::Handle<reco::Centrality> cent;
0643 mEvent.getByToken(centralityToken, cent);
0644
0645 if (!cent.isValid())
0646 return;
0647
0648 mHF->Fill(cent->EtHFtowerSum());
0649 Float_t HF_energy = cent->EtHFtowerSum();
0650
0651
0652
0653
0654
0655
0656
0657
0658
0659
0660 const reco::PFCandidateCollection *pfCandidateColl = pfCandidates.product();
0661
0662 Int_t NPFpart = 0;
0663 Int_t NCaloTower = 0;
0664 Float_t pfPt = 0;
0665 Float_t pfEta = 0;
0666 Float_t pfPhi = 0;
0667 Int_t pfID = 0;
0668 Float_t pfDeltaR = 0;
0669 Float_t caloPt = 0;
0670 Float_t caloEta = 0;
0671 Float_t caloPhi = 0;
0672 Float_t SumPt_value = 0;
0673
0674 vector<vector<float>> numbers;
0675 vector<float> tempVector;
0676 numbers.clear();
0677 tempVector.clear();
0678
0679 if (isCaloJet) {
0680 Float_t SumCaloPt[etaBins_];
0681 Float_t SumSquaredCaloPt[etaBins_];
0682
0683
0684 TH1F *hSumCaloPt[nedge_pseudorapidity - 1];
0685
0686 for (int i = 0; i < etaBins_; ++i) {
0687 SumCaloPt[i] = 0;
0688 SumSquaredCaloPt[i] = 0;
0689 hSumCaloPt[i] = new TH1F(Form("hSumCaloPt_%d", i), "", 10000, -10000, 10000);
0690 }
0691
0692 for (unsigned icand = 0; icand < caloCandidates->size(); icand++) {
0693 const CaloTower &tower = (*caloCandidates)[icand];
0694 reco::CandidateViewRef ref(calocandidates_, icand);
0695
0696 if (tower.p4(vtx).Et() < 0.1)
0697 continue;
0698
0699 NCaloTower++;
0700
0701 caloPt = tower.p4(vtx).Et();
0702 caloEta = tower.p4(vtx).Eta();
0703 caloPhi = tower.p4(vtx).Phi();
0704
0705 for (size_t k = 0; k < nedge_pseudorapidity - 1; k++) {
0706 if (caloEta >= edge_pseudorapidity[k] && caloEta < edge_pseudorapidity[k + 1]) {
0707 SumCaloPt[k] = SumCaloPt[k] + caloPt;
0708 SumSquaredCaloPt[k] = SumSquaredCaloPt[k] + caloPt * caloPt;
0709 break;
0710 }
0711
0712 }
0713
0714 SumPt_value = SumPt_value + caloPt;
0715
0716 mCaloPt->Fill(caloPt);
0717 mCaloEta->Fill(caloEta);
0718 mCaloPhi->Fill(caloPhi);
0719
0720 }
0721
0722 for (int k = 0; k < nedge_pseudorapidity - 1; k++) {
0723 hSumCaloPt[k]->Fill(SumCaloPt[k]);
0724
0725 }
0726
0727 Float_t Evt_SumCaloPt = 0;
0728 Float_t Evt_SumSquaredCaloPt = 0;
0729
0730 for (int ieta = 0; ieta < etaBins_; ieta++) {
0731 mSumCaloPtEtaDep[ieta]->Fill(SumCaloPt[ieta]);
0732 }
0733
0734 for (size_t k = 0; k < nedge_pseudorapidity - 1; k++) {
0735 Evt_SumCaloPt = Evt_SumCaloPt + SumCaloPt[k];
0736 mSumCaloPt_eta->Fill(edge_pseudorapidity[k], SumCaloPt[k]);
0737
0738 Evt_SumSquaredCaloPt = Evt_SumSquaredCaloPt + SumSquaredCaloPt[k];
0739 mSumSquaredCaloPt_eta->Fill(edge_pseudorapidity[k], hSumCaloPt[k]->GetRMS(1));
0740
0741 delete hSumCaloPt[k];
0742
0743 }
0744
0745 mSumCaloPt->Fill(Evt_SumCaloPt);
0746 mSumCaloPt_HF->Fill(Evt_SumCaloPt, HF_energy);
0747
0748 mSumSquaredCaloPt->Fill(Evt_SumSquaredCaloPt);
0749
0750 mNCalopart->Fill(NCaloTower);
0751 mSumpt->Fill(SumPt_value);
0752
0753 }
0754
0755 if (isPFJet) {
0756 Float_t SumPFPt[etaBins_];
0757
0758 Float_t SumSquaredPFPt[etaBins_];
0759
0760
0761 TH1F *hSumPFPt[nedge_pseudorapidity - 1];
0762
0763 for (int i = 0; i < etaBins_; i++) {
0764 SumPFPt[i] = 0;
0765 SumSquaredPFPt[i] = 0;
0766
0767 hSumPFPt[i] = new TH1F(Form("hSumPFPt_%d", i), "", 10000, -10000, 10000);
0768 }
0769
0770 vector<vector<float>> PF_Space(1, vector<float>(3));
0771
0772 if (std::string("Cs") == UEAlgo) {
0773 const reco::PFCandidateCollection *csCandidateColl = csCandidates.product();
0774
0775 for (unsigned iCScand = 0; iCScand < csCandidateColl->size(); iCScand++) {
0776 assert(csCandidateColl->size() <= pfCandidateColl->size());
0777 const reco::PFCandidate csCandidate = csCandidateColl->at(iCScand);
0778 const reco::PFCandidate pfCandidate = pfCandidateColl->at(iCScand);
0779 int ieta = 0;
0780 while (csCandidate.eta() > edge_pseudorapidity[ieta] && ieta < etaBins_ - 1)
0781 ieta++;
0782 mCSCandpT_vsPt[ieta]->Fill(csCandidate.pt());
0783 mCSCand_corrPFcand[ieta]->Fill(csCandidate.pt(), pfCandidate.pt());
0784 }
0785 }
0786
0787 for (unsigned icand = 0; icand < pfCandidateColl->size(); icand++) {
0788 const reco::PFCandidate pfCandidate = pfCandidateColl->at(icand);
0789 reco::CandidateViewRef ref(pfcandidates_, icand);
0790 if (pfCandidate.pt() < 5)
0791 continue;
0792
0793 NPFpart++;
0794 pfPt = pfCandidate.pt();
0795 pfEta = pfCandidate.eta();
0796 pfPhi = pfCandidate.phi();
0797 pfID = pfCandidate.particleId();
0798
0799 bool isBarrel = false;
0800 bool isEndcap = false;
0801 bool isForward = false;
0802
0803 if (fabs(pfEta) < BarrelEta)
0804 isBarrel = true;
0805 if (fabs(pfEta) >= BarrelEta && fabs(pfEta) < EndcapEta)
0806 isEndcap = true;
0807 if (fabs(pfEta) >= EndcapEta && fabs(pfEta) < ForwardEta)
0808 isForward = true;
0809
0810 switch (pfID) {
0811 case 0:
0812 mPFCandpT_vs_eta_Unknown->Fill(pfPt, pfEta);
0813 if (isBarrel)
0814 mPFCandpT_Barrel_Unknown->Fill(pfPt);
0815 if (isEndcap)
0816 mPFCandpT_Endcap_Unknown->Fill(pfPt);
0817 if (isForward)
0818 mPFCandpT_Forward_Unknown->Fill(pfPt);
0819 break;
0820 case 1:
0821 mPFCandpT_vs_eta_ChargedHadron->Fill(pfPt, pfEta);
0822 if (isBarrel)
0823 mPFCandpT_Barrel_ChargedHadron->Fill(pfPt);
0824 if (isEndcap)
0825 mPFCandpT_Endcap_ChargedHadron->Fill(pfPt);
0826 if (isForward)
0827 mPFCandpT_Forward_ChargedHadron->Fill(pfPt);
0828 break;
0829 case 2:
0830 mPFCandpT_vs_eta_electron->Fill(pfPt, pfEta);
0831 if (isBarrel)
0832 mPFCandpT_Barrel_electron->Fill(pfPt);
0833 if (isEndcap)
0834 mPFCandpT_Endcap_electron->Fill(pfPt);
0835 if (isForward)
0836 mPFCandpT_Forward_electron->Fill(pfPt);
0837 break;
0838 case 3:
0839 mPFCandpT_vs_eta_muon->Fill(pfPt, pfEta);
0840 if (isBarrel)
0841 mPFCandpT_Barrel_muon->Fill(pfPt);
0842 if (isEndcap)
0843 mPFCandpT_Endcap_muon->Fill(pfPt);
0844 if (isForward)
0845 mPFCandpT_Forward_muon->Fill(pfPt);
0846 break;
0847 case 4:
0848 mPFCandpT_vs_eta_photon->Fill(pfPt, pfEta);
0849 if (isBarrel)
0850 mPFCandpT_Barrel_photon->Fill(pfPt);
0851 if (isEndcap)
0852 mPFCandpT_Endcap_photon->Fill(pfPt);
0853 if (isForward)
0854 mPFCandpT_Forward_photon->Fill(pfPt);
0855 break;
0856 case 5:
0857 mPFCandpT_vs_eta_NeutralHadron->Fill(pfPt, pfEta);
0858 if (isBarrel)
0859 mPFCandpT_Barrel_NeutralHadron->Fill(pfPt);
0860 if (isEndcap)
0861 mPFCandpT_Endcap_NeutralHadron->Fill(pfPt);
0862 if (isForward)
0863 mPFCandpT_Forward_NeutralHadron->Fill(pfPt);
0864 break;
0865 case 6:
0866 mPFCandpT_vs_eta_HadE_inHF->Fill(pfPt, pfEta);
0867 if (isBarrel)
0868 mPFCandpT_Barrel_HadE_inHF->Fill(pfPt);
0869 if (isEndcap)
0870 mPFCandpT_Endcap_HadE_inHF->Fill(pfPt);
0871 if (isForward)
0872 mPFCandpT_Forward_HadE_inHF->Fill(pfPt);
0873 break;
0874 case 7:
0875 mPFCandpT_vs_eta_EME_inHF->Fill(pfPt, pfEta);
0876 if (isBarrel)
0877 mPFCandpT_Barrel_EME_inHF->Fill(pfPt);
0878 if (isEndcap)
0879 mPFCandpT_Endcap_EME_inHF->Fill(pfPt);
0880 if (isForward)
0881 mPFCandpT_Forward_EME_inHF->Fill(pfPt);
0882 break;
0883 }
0884
0885
0886 tempVector.push_back(pfPt);
0887 tempVector.push_back(pfEta);
0888 tempVector.push_back(pfPhi);
0889
0890 numbers.push_back(tempVector);
0891 tempVector.clear();
0892
0893 for (size_t k = 0; k < nedge_pseudorapidity - 1; k++) {
0894 if (pfEta >= edge_pseudorapidity[k] && pfEta < edge_pseudorapidity[k + 1]) {
0895 SumPFPt[k] = SumPFPt[k] + pfPt;
0896 SumSquaredPFPt[k] = SumSquaredPFPt[k] + pfPt * pfPt;
0897 break;
0898 }
0899
0900 }
0901
0902 SumPt_value = SumPt_value + pfPt;
0903
0904 mPFPt->Fill(pfPt);
0905 mPFEta->Fill(pfEta);
0906 mPFPhi->Fill(pfPhi);
0907
0908 }
0909
0910 for (int k = 0; k < nedge_pseudorapidity - 1; k++) {
0911 hSumPFPt[k]->Fill(SumPFPt[k]);
0912
0913 }
0914
0915 Float_t Evt_SumPFPt = 0;
0916 Float_t Evt_SumSquaredPFPt = 0;
0917
0918 for (int ieta = 0; ieta < etaBins_; ieta++) {
0919 mSumPFPtEtaDep[ieta]->Fill(SumPFPt[ieta]);
0920 }
0921
0922 for (size_t k = 0; k < nedge_pseudorapidity - 1; k++) {
0923 Evt_SumPFPt = Evt_SumPFPt + SumPFPt[k];
0924 mSumPFPt_eta->Fill(edge_pseudorapidity[k], SumPFPt[k]);
0925
0926 Evt_SumSquaredPFPt = Evt_SumSquaredPFPt + SumSquaredPFPt[k];
0927 mSumSquaredPFPt_eta->Fill(edge_pseudorapidity[k], hSumPFPt[k]->GetRMS(1));
0928
0929 delete hSumPFPt[k];
0930
0931 }
0932
0933 mSumPFPt->Fill(Evt_SumPFPt);
0934 mSumPFPt_HF->Fill(Evt_SumPFPt, HF_energy);
0935
0936 mSumSquaredPFPt->Fill(Evt_SumSquaredPFPt);
0937
0938 mNPFpart->Fill(NPFpart);
0939 mSumpt->Fill(SumPt_value);
0940 }
0941
0942 if (isCaloJet) {
0943 for (unsigned ijet = 0; ijet < caloJets->size(); ijet++) {
0944 recoJets.push_back((*caloJets)[ijet]);
0945 }
0946 }
0947
0948 if (isJPTJet) {
0949 for (unsigned ijet = 0; ijet < jptJets->size(); ijet++)
0950 recoJets.push_back((*jptJets)[ijet]);
0951 }
0952
0953 if (isPFJet) {
0954 if (std::string("Pu") == UEAlgo) {
0955 for (unsigned ijet = 0; ijet < basicJets->size(); ijet++) {
0956 recoJets.push_back((*basicJets)[ijet]);
0957 }
0958 }
0959 if (std::string("Cs") == UEAlgo) {
0960 for (unsigned ijet = 0; ijet < pfJets->size(); ijet++) {
0961 recoJets.push_back((*pfJets)[ijet]);
0962 }
0963 }
0964 }
0965
0966 if (isCaloJet && !caloJets.isValid()) {
0967 return;
0968 }
0969 if (isJPTJet && !jptJets.isValid()) {
0970 return;
0971 }
0972 if (isPFJet) {
0973 if (std::string("Pu") == UEAlgo) {
0974 if (!basicJets.isValid())
0975 return;
0976 }
0977 if (std::string("Cs") == UEAlgo) {
0978 if (!pfJets.isValid())
0979 return;
0980 }
0981 if (std::string("Vs") == UEAlgo) {
0982 return;
0983 }
0984 }
0985
0986 int nJet_40 = 0;
0987
0988 mNJets->Fill(recoJets.size());
0989
0990 for (unsigned ijet = 0; ijet < recoJets.size(); ijet++) {
0991 if (recoJets[ijet].pt() > mRecoJetPtThreshold) {
0992
0993
0994 if (recoJets[ijet].pt() > 40)
0995 nJet_40++;
0996 if (mEta)
0997 mEta->Fill(recoJets[ijet].eta());
0998 if (mjetpileup)
0999 mjetpileup->Fill(recoJets[ijet].pileup());
1000 if (mJetArea)
1001 mJetArea->Fill(recoJets[ijet].jetArea());
1002 if (mPhi)
1003 mPhi->Fill(recoJets[ijet].phi());
1004 if (mEnergy)
1005 mEnergy->Fill(recoJets[ijet].energy());
1006 if (mP)
1007 mP->Fill(recoJets[ijet].p());
1008 if (mPt)
1009 mPt->Fill(recoJets[ijet].pt());
1010 if (mMass)
1011 mMass->Fill(recoJets[ijet].mass());
1012 if (mConstituents)
1013 mConstituents->Fill(recoJets[ijet].nConstituents());
1014
1015 if (std::string("Cs") == UEAlgo) {
1016 int ipt = 0, ieta = 0;
1017 while (recoJets[ijet].pt() > ptBin[ipt + 1] && ipt < ptBins_ - 1)
1018 ipt++;
1019 while (recoJets[ijet].eta() > etaRanges->at(ieta + 1) && ieta < (int)(rho->size() - 1))
1020 ieta++;
1021 mSubtractedEFrac[ipt][ieta]->Fill((double)recoJets[ijet].pileup() / (double)recoJets[ijet].energy());
1022 mSubtractedE[ipt][ieta]->Fill(recoJets[ijet].pileup());
1023
1024 for (unsigned irho = 0; irho < rho->size(); irho++) {
1025 mRhoDist_vsEta->Fill(recoJets[ijet].eta(), rho->at(irho));
1026 mRhoMDist_vsEta->Fill(recoJets[ijet].eta(), rhom->at(irho));
1027 mRhoDist_vsPt->Fill(recoJets[ijet].pt(), rho->at(irho));
1028 mRhoMDist_vsPt->Fill(recoJets[ijet].pt(), rhom->at(irho));
1029 mRhoDist_vsCent[ieta]->Fill(HF_energy, rho->at(irho));
1030 mRhoMDist_vsCent[ieta]->Fill(HF_energy, rhom->at(irho));
1031 }
1032 }
1033
1034 for (size_t iii = 0; iii < numbers.size(); iii++) {
1035 pfDeltaR = sqrt((numbers[iii][2] - recoJets[ijet].phi()) * (numbers[iii][2] - recoJets[ijet].phi()) +
1036 (numbers[iii][1] - recoJets[ijet].eta()) * (numbers[iii][1] - recoJets[ijet].eta()));
1037
1038 mPFDeltaR->Fill(pfDeltaR);
1039 mPFDeltaR_Scaled_R->Fill(pfDeltaR, 1. / pow(pfDeltaR, 2));
1040 }
1041 }
1042 }
1043 if (mNJets_40)
1044 mNJets_40->Fill(nJet_40);
1045
1046 numbers.clear();
1047 }