File indexing completed on 2024-10-19 04:58:48
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022 #include "Validation/RecoTau/interface/TauValidationMiniAOD.h"
0023 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0024
0025 using namespace edm;
0026 using namespace std;
0027 using namespace reco;
0028
0029 TauValidationMiniAOD::TauValidationMiniAOD(const edm::ParameterSet &iConfig) {
0030
0031 tauCollection_ = consumes<pat::TauCollection>(iConfig.getParameter<InputTag>("tauCollection"));
0032
0033 refCollectionInputTagToken_ = consumes<edm::View<reco::Candidate>>(iConfig.getParameter<InputTag>("RefCollection"));
0034
0035 extensionName_ = iConfig.getParameter<string>("ExtensionName");
0036
0037 discriminators_ = iConfig.getParameter<std::vector<edm::ParameterSet>>("discriminators");
0038
0039 primaryVertexCollectionToken_ = consumes<std::vector<reco::Vertex>>(iConfig.getParameter<InputTag>("PVCollection"));
0040
0041 prunedGenToken_ = consumes<std::vector<reco::GenParticle>>(iConfig.getParameter<InputTag>("GenCollection"));
0042 }
0043
0044 TauValidationMiniAOD::~TauValidationMiniAOD() {}
0045
0046 void TauValidationMiniAOD::bookHistograms(DQMStore::IBooker &ibooker,
0047 edm::Run const &iRun,
0048 edm::EventSetup const & ) {
0049 MonitorElement *ptTightvsJet, *etaTightvsJet, *phiTightvsJet, *massTightvsJet, *puTightvsJet;
0050 MonitorElement *ptTightvsEle, *etaTightvsEle, *phiTightvsEle, *massTightvsEle, *puTightvsEle;
0051 MonitorElement *ptTightvsMuo, *etaTightvsMuo, *phiTightvsMuo, *massTightvsMuo, *puTightvsMuo;
0052 MonitorElement *ptMediumvsJet, *etaMediumvsJet, *phiMediumvsJet, *massMediumvsJet, *puMediumvsJet;
0053 MonitorElement *ptMediumvsEle, *etaMediumvsEle, *phiMediumvsEle, *massMediumvsEle, *puMediumvsEle;
0054 MonitorElement *ptMediumvsMuo, *etaMediumvsMuo, *phiMediumvsMuo, *massMediumvsMuo, *puMediumvsMuo;
0055 MonitorElement *ptLoosevsJet, *etaLoosevsJet, *phiLoosevsJet, *massLoosevsJet, *puLoosevsJet;
0056 MonitorElement *ptLoosevsEle, *etaLoosevsEle, *phiLoosevsEle, *massLoosevsEle, *puLoosevsEle;
0057 MonitorElement *ptLoosevsMuo, *etaLoosevsMuo, *phiLoosevsMuo, *massLoosevsMuo, *puLoosevsMuo;
0058 MonitorElement *ptTemp, *etaTemp, *phiTemp, *massTemp, *puTemp;
0059 MonitorElement *decayModeFindingTemp, *decayModeTemp, *byDeepTau2018v2p5VSerawTemp;
0060 MonitorElement *byDeepTau2018v2p5VSjetrawTemp, *byDeepTau2018v2p5VSmurawTemp, *summaryTemp;
0061 MonitorElement *mtau_dm0, *mtau_dm1p2, *mtau_dm5, *mtau_dm6, *mtau_dm10, *mtau_dm11;
0062 MonitorElement *dmMigration, *ntau_vs_dm;
0063 MonitorElement *pTOverProng_dm0, *pTOverProng_dm1p2, *pTOverProng_dm5, *pTOverProng_dm6, *pTOverProng_dm10,
0064 *pTOverProng_dm11;
0065
0066
0067
0068 ibooker.setCurrentFolder("RecoTauV/miniAODValidation/" + extensionName_ + "/Summary");
0069 histoInfo summaryHinfo = (histoSettings_.exists("summary"))
0070 ? histoInfo(histoSettings_.getParameter<edm::ParameterSet>("summary"))
0071 : histoInfo(15, -0.5, 14.5);
0072
0073 summaryTemp = ibooker.book1D(
0074 "summaryPlotNum", "Summary Plot: Numerator", summaryHinfo.nbins, summaryHinfo.min, summaryHinfo.max);
0075 summaryTemp->setYTitle("nTaus passing discriminants");
0076 summaryMap.insert(std::make_pair("Num", summaryTemp));
0077
0078 summaryTemp = ibooker.book1D(
0079 "summaryPlotDen", "Summary Plot: Denominator", summaryHinfo.nbins, summaryHinfo.min, summaryHinfo.max);
0080 summaryTemp->setYTitle("nTaus passing discriminants");
0081 summaryMap.insert(std::make_pair("Den", summaryTemp));
0082
0083 summaryTemp =
0084 ibooker.book1D("summaryPlot", "Summary Plot: Efficiency", summaryHinfo.nbins, summaryHinfo.min, summaryHinfo.max);
0085 summaryTemp->setYTitle("Efficiency of discriminants");
0086 summaryMap.insert(std::make_pair("", summaryTemp));
0087
0088 histoInfo mtauHinfo = histoInfo(20, 0.0, 2.0);
0089
0090 mtau_dm0 = ibooker.book1D("mtau_dm0", "mtau: DM = 0", mtauHinfo.nbins, mtauHinfo.min, mtauHinfo.max);
0091 mtau_dm0Map.insert(std::make_pair("", mtau_dm0));
0092
0093 mtau_dm1p2 = ibooker.book1D("mtau_dm1p2", "mtau: DM = 1+2", mtauHinfo.nbins, mtauHinfo.min, mtauHinfo.max);
0094 mtau_dm1p2Map.insert(std::make_pair("", mtau_dm1p2));
0095
0096 mtau_dm5 = ibooker.book1D("mtau_dm5", "mtau: DM = 5", mtauHinfo.nbins, mtauHinfo.min, mtauHinfo.max);
0097 mtau_dm5Map.insert(std::make_pair("", mtau_dm5));
0098
0099 mtau_dm6 = ibooker.book1D("mtau_dm6", "mtau: DM = 6", mtauHinfo.nbins, mtauHinfo.min, mtauHinfo.max);
0100 mtau_dm6Map.insert(std::make_pair("", mtau_dm6));
0101
0102 mtau_dm10 = ibooker.book1D("mtau_dm10", "mtau: DM = 10", mtauHinfo.nbins, mtauHinfo.min, mtauHinfo.max);
0103 mtau_dm10Map.insert(std::make_pair("", mtau_dm10));
0104
0105 mtau_dm11 = ibooker.book1D("mtau_dm11", "mtau: DM = 11", mtauHinfo.nbins, mtauHinfo.min, mtauHinfo.max);
0106 mtau_dm11Map.insert(std::make_pair("", mtau_dm11));
0107
0108 dmMigration = ibooker.book2D("dmMigration", "DM Migration", 15, -0.5, 14.5, 15, -0.5, 14.5);
0109 dmMigration->setXTitle("Generated tau DM");
0110 dmMigration->setYTitle("Reconstructed tau DM");
0111 dmMigrationMap.insert(std::make_pair("", dmMigration));
0112
0113 histoInfo pTOverProngHinfo = (histoSettings_.exists("pTOverProng"))
0114 ? histoInfo(histoSettings_.getParameter<edm::ParameterSet>("pTOverProng"))
0115 : histoInfo(50, 0, 1000);
0116
0117 pTOverProng_dm0 = ibooker.book2D("pTOverProng_dm0",
0118 "pTOverProng: DM = 0",
0119 pTOverProngHinfo.nbins,
0120 pTOverProngHinfo.min,
0121 pTOverProngHinfo.max,
0122 pTOverProngHinfo.nbins,
0123 pTOverProngHinfo.min,
0124 pTOverProngHinfo.max);
0125 pTOverProng_dm0->setXTitle("pT of reconstructed tau");
0126 pTOverProng_dm0->setYTitle("pT of lead charged cand");
0127 pTOverProng_dm0Map.insert(std::make_pair("", pTOverProng_dm0));
0128
0129 pTOverProng_dm1p2 = ibooker.book2D("pTOverProng_dm1p2",
0130 "pTOverProng: DM = 1+2",
0131 pTOverProngHinfo.nbins,
0132 pTOverProngHinfo.min,
0133 pTOverProngHinfo.max,
0134 pTOverProngHinfo.nbins,
0135 pTOverProngHinfo.min,
0136 pTOverProngHinfo.max);
0137 pTOverProng_dm1p2->setXTitle("pT of reconstructed tau");
0138 pTOverProng_dm1p2->setYTitle("pT of lead charged cand");
0139 pTOverProng_dm1p2Map.insert(std::make_pair("", pTOverProng_dm1p2));
0140
0141 pTOverProng_dm5 = ibooker.book2D("pTOverProng_dm5",
0142 "pTOverProng: DM = 5",
0143 pTOverProngHinfo.nbins,
0144 pTOverProngHinfo.min,
0145 pTOverProngHinfo.max,
0146 pTOverProngHinfo.nbins,
0147 pTOverProngHinfo.min,
0148 pTOverProngHinfo.max);
0149 pTOverProng_dm5->setXTitle("pT of reconstructed tau");
0150 pTOverProng_dm5->setYTitle("pT of lead charged cand");
0151 pTOverProng_dm5Map.insert(std::make_pair("", pTOverProng_dm5));
0152
0153 pTOverProng_dm6 = ibooker.book2D("pTOverProng_dm6",
0154 "pTOverProng: DM = 6",
0155 pTOverProngHinfo.nbins,
0156 pTOverProngHinfo.min,
0157 pTOverProngHinfo.max,
0158 pTOverProngHinfo.nbins,
0159 pTOverProngHinfo.min,
0160 pTOverProngHinfo.max);
0161 pTOverProng_dm6->setXTitle("pT of reconstructed tau");
0162 pTOverProng_dm6->setYTitle("pT of lead charged cand");
0163 pTOverProng_dm6Map.insert(std::make_pair("", pTOverProng_dm6));
0164
0165 pTOverProng_dm10 = ibooker.book2D("pTOverProng_dm10",
0166 "pTOverProng: DM = 10",
0167 pTOverProngHinfo.nbins,
0168 pTOverProngHinfo.min,
0169 pTOverProngHinfo.max,
0170 pTOverProngHinfo.nbins,
0171 pTOverProngHinfo.min,
0172 pTOverProngHinfo.max);
0173 pTOverProng_dm10->setXTitle("pT of reconstructed tau");
0174 pTOverProng_dm10->setYTitle("pT of lead charged cand");
0175 pTOverProng_dm10Map.insert(std::make_pair("", pTOverProng_dm10));
0176
0177 pTOverProng_dm11 = ibooker.book2D("pTOverProng_dm11",
0178 "pTOverProng: DM = 11",
0179 pTOverProngHinfo.nbins,
0180 pTOverProngHinfo.min,
0181 pTOverProngHinfo.max,
0182 pTOverProngHinfo.nbins,
0183 pTOverProngHinfo.min,
0184 pTOverProngHinfo.max);
0185 pTOverProng_dm11->setXTitle("pT of reconstructed tau");
0186 pTOverProng_dm11->setYTitle("pT of lead charged cand");
0187 pTOverProng_dm11Map.insert(std::make_pair("", pTOverProng_dm11));
0188
0189 ntau_vs_dm = ibooker.book2D("ntau_vs_dm", "DM vs nTau", 15, 0, 15, 15, 0, 15);
0190 ntau_vs_dm->setXTitle("nTau");
0191 ntau_vs_dm->setYTitle("tau DM");
0192 ntau_vs_dmMap.insert(std::make_pair("", ntau_vs_dm));
0193
0194
0195 unsigned j = 0;
0196 for (const auto &it : discriminators_) {
0197 string DiscriminatorLabel = it.getParameter<string>("discriminator");
0198 summaryMap.find("Den")->second->setBinLabel(j + 1, DiscriminatorLabel);
0199 summaryMap.find("Num")->second->setBinLabel(j + 1, DiscriminatorLabel);
0200 summaryMap.find("")->second->setBinLabel(j + 1, DiscriminatorLabel);
0201 j = j + 1;
0202 }
0203
0204
0205
0206
0207 histoInfo ptHinfo = (histoSettings_.exists("pt")) ? histoInfo(histoSettings_.getParameter<edm::ParameterSet>("pt"))
0208 : histoInfo(200, 0., 1000.);
0209 histoInfo etaHinfo = (histoSettings_.exists("eta")) ? histoInfo(histoSettings_.getParameter<edm::ParameterSet>("eta"))
0210 : histoInfo(60, -3, 3.);
0211 histoInfo phiHinfo = (histoSettings_.exists("phi")) ? histoInfo(histoSettings_.getParameter<edm::ParameterSet>("phi"))
0212 : histoInfo(60, -3, 3.);
0213 histoInfo massHinfo = (histoSettings_.exists("mass"))
0214 ? histoInfo(histoSettings_.getParameter<edm::ParameterSet>("mass"))
0215 : histoInfo(200, 0, 10.);
0216 histoInfo puHinfo = (histoSettings_.exists("pileup"))
0217 ? histoInfo(histoSettings_.getParameter<edm::ParameterSet>("pileup"))
0218 : histoInfo(100, 0., 100.);
0219
0220
0221 histoInfo decayModeFindingHinfo = (histoSettings_.exists("decayModeFinding"))
0222 ? histoInfo(histoSettings_.getParameter<edm::ParameterSet>("decayModeFinding"))
0223 : histoInfo(2, -0.5, 1.5);
0224 histoInfo decayModeHinfo = (histoSettings_.exists("decayMode"))
0225 ? histoInfo(histoSettings_.getParameter<edm::ParameterSet>("decayMode"))
0226 : histoInfo(15, -0.5, 14.5);
0227
0228
0229 histoInfo byDeepTau2018v2p5VSerawHinfo =
0230 (histoSettings_.exists("byDeepTau2018v2p5VSeraw"))
0231 ? histoInfo(histoSettings_.getParameter<edm::ParameterSet>("byDeepTau2018v2p5VSeraw"))
0232 : histoInfo(200, 0., 1.);
0233 histoInfo byDeepTau2018v2p5VSjetrawHinfo =
0234 (histoSettings_.exists("byDeepTau2018v2p5VSjetraw"))
0235 ? histoInfo(histoSettings_.getParameter<edm::ParameterSet>("byDeepTau2018v2p5VSjetraw"))
0236 : histoInfo(200, 0., 1.);
0237 histoInfo byDeepTau2018v2p5VSmurawHinfo =
0238 (histoSettings_.exists("byDeepTau2018v2p5VSmuraw"))
0239 ? histoInfo(histoSettings_.getParameter<edm::ParameterSet>("byDeepTau2018v2p5VSmuraw"))
0240 : histoInfo(200, 0., 1.);
0241
0242
0243 ptTemp = ibooker.book1D("tau_pt", "tau pt", ptHinfo.nbins, ptHinfo.min, ptHinfo.max);
0244 etaTemp = ibooker.book1D("tau_eta", "tau eta", etaHinfo.nbins, etaHinfo.min, etaHinfo.max);
0245 phiTemp = ibooker.book1D("tau_phi", "tau phi", phiHinfo.nbins, phiHinfo.min, phiHinfo.max);
0246 massTemp = ibooker.book1D("tau_mass", "tau mass", massHinfo.nbins, massHinfo.min, massHinfo.max);
0247 puTemp = ibooker.book1D("tau_pu", "tau pileup", puHinfo.nbins, puHinfo.min, puHinfo.max);
0248
0249
0250 ptMap.insert(std::make_pair("", ptTemp));
0251 etaMap.insert(std::make_pair("", etaTemp));
0252 phiMap.insert(std::make_pair("", phiTemp));
0253 massMap.insert(std::make_pair("", massTemp));
0254 puMap.insert(std::make_pair("", puTemp));
0255
0256
0257 decayModeFindingTemp = ibooker.book1D("tau_decayModeFinding",
0258 "tau decayModeFinding",
0259 decayModeFindingHinfo.nbins,
0260 decayModeFindingHinfo.min,
0261 decayModeFindingHinfo.max);
0262 decayModeFindingMap.insert(std::make_pair("", decayModeFindingTemp));
0263
0264 decayModeTemp = ibooker.book1D("tau_decayMode_reco",
0265 "DecayMode: Reconstructed tau",
0266 decayModeHinfo.nbins,
0267 decayModeHinfo.min,
0268 decayModeHinfo.max);
0269 decayModeMap.insert(std::make_pair("pftau", decayModeTemp));
0270
0271 decayModeTemp = ibooker.book1D(
0272 "tau_decayMode_gen", "DecayMode: Generated tau", decayModeHinfo.nbins, decayModeHinfo.min, decayModeHinfo.max);
0273 decayModeMap.insert(std::make_pair("gentau", decayModeTemp));
0274
0275
0276 byDeepTau2018v2p5VSerawTemp = ibooker.book1D("tau_byDeepTau2018v2p5VSeraw",
0277 "byDeepTau2018v2p5VSeraw",
0278 byDeepTau2018v2p5VSerawHinfo.nbins,
0279 byDeepTau2018v2p5VSerawHinfo.min,
0280 byDeepTau2018v2p5VSerawHinfo.max);
0281 byDeepTau2018v2p5VSjetrawTemp = ibooker.book1D("tau_byDeepTau2018v2p5VSjetraw",
0282 "byDeepTau2018v2p5VSjetraw",
0283 byDeepTau2018v2p5VSjetrawHinfo.nbins,
0284 byDeepTau2018v2p5VSjetrawHinfo.min,
0285 byDeepTau2018v2p5VSjetrawHinfo.max);
0286 byDeepTau2018v2p5VSmurawTemp = ibooker.book1D("tau_byDeepTau2018v2p5VSmuraw",
0287 "byDeepTau2018v2p5VSmuraw",
0288 byDeepTau2018v2p5VSmurawHinfo.nbins,
0289 byDeepTau2018v2p5VSmurawHinfo.min,
0290 byDeepTau2018v2p5VSmurawHinfo.max);
0291
0292
0293 byDeepTau2018v2p5VSerawMap.insert(std::make_pair("", byDeepTau2018v2p5VSerawTemp));
0294 byDeepTau2018v2p5VSjetrawMap.insert(std::make_pair("", byDeepTau2018v2p5VSjetrawTemp));
0295 byDeepTau2018v2p5VSmurawMap.insert(std::make_pair("", byDeepTau2018v2p5VSmurawTemp));
0296
0297 qcd = "QCD";
0298 real_data = "RealData";
0299 real_eledata = "RealElectronsData";
0300 real_mudata = "RealMuonsData";
0301 ztt = "ZTT";
0302 zee = "ZEE";
0303 zmm = "ZMM";
0304
0305
0306 if (extensionName_.compare(qcd) == 0 || extensionName_.compare(real_data) == 0 || extensionName_.compare(ztt) == 0) {
0307
0308 ibooker.setCurrentFolder("RecoTauV/miniAODValidation/" + extensionName_ + "/vsJet/tight");
0309
0310 ptTightvsJet = ibooker.book1D("tau_tightvsJet_pt", "tau_tightvsJet_pt", ptHinfo.nbins, ptHinfo.min, ptHinfo.max);
0311 etaTightvsJet =
0312 ibooker.book1D("tau_tightvsJet_eta", "tau_tightvsJet_eta", etaHinfo.nbins, etaHinfo.min, etaHinfo.max);
0313 phiTightvsJet =
0314 ibooker.book1D("tau_tightvsJet_phi", "tau_tightvsJet_phi", phiHinfo.nbins, phiHinfo.min, phiHinfo.max);
0315 massTightvsJet =
0316 ibooker.book1D("tau_tightvsJet_mass", "tau_tightvsJet_mass", massHinfo.nbins, massHinfo.min, massHinfo.max);
0317 puTightvsJet = ibooker.book1D("tau_tightvsJet_pu", "tau_tightvsJet_pu", puHinfo.nbins, puHinfo.min, puHinfo.max);
0318
0319 ptTightvsJetMap.insert(std::make_pair("", ptTightvsJet));
0320 etaTightvsJetMap.insert(std::make_pair("", etaTightvsJet));
0321 phiTightvsJetMap.insert(std::make_pair("", phiTightvsJet));
0322 massTightvsJetMap.insert(std::make_pair("", massTightvsJet));
0323 puTightvsJetMap.insert(std::make_pair("", puTightvsJet));
0324
0325
0326 ibooker.setCurrentFolder("RecoTauV/miniAODValidation/" + extensionName_ + "/vsJet/medium");
0327
0328 ptMediumvsJet = ibooker.book1D("tau_mediumvsJet_pt", "tau_mediumvsJet_pt", ptHinfo.nbins, ptHinfo.min, ptHinfo.max);
0329 etaMediumvsJet =
0330 ibooker.book1D("tau_mediumvsJet_eta", "tau_mediumvsJet_eta", etaHinfo.nbins, etaHinfo.min, etaHinfo.max);
0331 phiMediumvsJet =
0332 ibooker.book1D("tau_mediumvsJet_phi", "tau_mediumvsJet_phi", phiHinfo.nbins, phiHinfo.min, phiHinfo.max);
0333 massMediumvsJet =
0334 ibooker.book1D("tau_mediumvsJet_mass", "tau_mediumvsJet_mass", massHinfo.nbins, massHinfo.min, massHinfo.max);
0335 puMediumvsJet = ibooker.book1D("tau_mediumvsJet_pu", "tau_mediumvsJet_pu", puHinfo.nbins, puHinfo.min, puHinfo.max);
0336
0337 ptMediumvsJetMap.insert(std::make_pair("", ptMediumvsJet));
0338 etaMediumvsJetMap.insert(std::make_pair("", etaMediumvsJet));
0339 phiMediumvsJetMap.insert(std::make_pair("", phiMediumvsJet));
0340 massMediumvsJetMap.insert(std::make_pair("", massMediumvsJet));
0341 puMediumvsJetMap.insert(std::make_pair("", puMediumvsJet));
0342
0343
0344 ibooker.setCurrentFolder("RecoTauV/miniAODValidation/" + extensionName_ + "/vsJet/loose");
0345
0346 ptLoosevsJet = ibooker.book1D("tau_loosevsJet_pt", "tau_loosevsJet_pt", ptHinfo.nbins, ptHinfo.min, ptHinfo.max);
0347 etaLoosevsJet =
0348 ibooker.book1D("tau_loosevsJet_eta", "tau_loosevsJet_eta", etaHinfo.nbins, etaHinfo.min, etaHinfo.max);
0349 phiLoosevsJet =
0350 ibooker.book1D("tau_loosevsJet_phi", "tau_loosevsJet_phi", phiHinfo.nbins, phiHinfo.min, phiHinfo.max);
0351 massLoosevsJet =
0352 ibooker.book1D("tau_loosevsJet_mass", "tau_loosevsJet_mass", massHinfo.nbins, massHinfo.min, massHinfo.max);
0353 puLoosevsJet = ibooker.book1D("tau_loosevsJet_pu", "tau_loosevsJet_pu", puHinfo.nbins, puHinfo.min, puHinfo.max);
0354
0355 ptLoosevsJetMap.insert(std::make_pair("", ptLoosevsJet));
0356 etaLoosevsJetMap.insert(std::make_pair("", etaLoosevsJet));
0357 phiLoosevsJetMap.insert(std::make_pair("", phiLoosevsJet));
0358 massLoosevsJetMap.insert(std::make_pair("", massLoosevsJet));
0359 puLoosevsJetMap.insert(std::make_pair("", puLoosevsJet));
0360 }
0361
0362
0363 if (extensionName_.compare(real_eledata) == 0 || extensionName_.compare(zee) == 0 ||
0364 extensionName_.compare(ztt) == 0) {
0365
0366 ibooker.setCurrentFolder("RecoTauV/miniAODValidation/" + extensionName_ + "/vsEle/tight");
0367
0368 ptTightvsEle = ibooker.book1D("tau_tightvsEle_pt", "tau_tightvsEle_pt", ptHinfo.nbins, ptHinfo.min, ptHinfo.max);
0369 etaTightvsEle =
0370 ibooker.book1D("tau_tightvsEle_eta", "tau_tightvsEle_eta", etaHinfo.nbins, etaHinfo.min, etaHinfo.max);
0371 phiTightvsEle =
0372 ibooker.book1D("tau_tightvsEle_phi", "tau_tightvsEle_phi", phiHinfo.nbins, phiHinfo.min, phiHinfo.max);
0373 massTightvsEle =
0374 ibooker.book1D("tau_tightvsEle_mass", "tau_tightvsEle_mass", massHinfo.nbins, massHinfo.min, massHinfo.max);
0375 puTightvsEle = ibooker.book1D("tau_tightvsEle_pu", "tau_tightvsEle_pu", puHinfo.nbins, puHinfo.min, puHinfo.max);
0376
0377 ptTightvsEleMap.insert(std::make_pair("", ptTightvsEle));
0378 etaTightvsEleMap.insert(std::make_pair("", etaTightvsEle));
0379 phiTightvsEleMap.insert(std::make_pair("", phiTightvsEle));
0380 massTightvsEleMap.insert(std::make_pair("", massTightvsEle));
0381 puTightvsEleMap.insert(std::make_pair("", puTightvsEle));
0382
0383
0384 ibooker.setCurrentFolder("RecoTauV/miniAODValidation/" + extensionName_ + "/vsEle/medium");
0385
0386 ptMediumvsEle = ibooker.book1D("tau_mediumvsEle_pt", "tau_mediumvsEle_pt", ptHinfo.nbins, ptHinfo.min, ptHinfo.max);
0387 etaMediumvsEle =
0388 ibooker.book1D("tau_mediumvsEle_eta", "tau_mediumvsEle_eta", etaHinfo.nbins, etaHinfo.min, etaHinfo.max);
0389 phiMediumvsEle =
0390 ibooker.book1D("tau_mediumvsEle_phi", "tau_mediumvsEle_phi", phiHinfo.nbins, phiHinfo.min, phiHinfo.max);
0391 massMediumvsEle =
0392 ibooker.book1D("tau_mediumvsEle_mass", "tau_mediumvsEle_mass", massHinfo.nbins, massHinfo.min, massHinfo.max);
0393 puMediumvsEle = ibooker.book1D("tau_mediumvsEle_pu", "tau_mediumvsEle_pu", puHinfo.nbins, puHinfo.min, puHinfo.max);
0394
0395 ptMediumvsEleMap.insert(std::make_pair("", ptMediumvsEle));
0396 etaMediumvsEleMap.insert(std::make_pair("", etaMediumvsEle));
0397 phiMediumvsEleMap.insert(std::make_pair("", phiMediumvsEle));
0398 massMediumvsEleMap.insert(std::make_pair("", massMediumvsEle));
0399 puMediumvsEleMap.insert(std::make_pair("", puMediumvsEle));
0400
0401
0402 ibooker.setCurrentFolder("RecoTauV/miniAODValidation/" + extensionName_ + "/vsEle/loose");
0403
0404 ptLoosevsEle = ibooker.book1D("tau_loosevsEle_pt", "tau_loosevsEle_pt", ptHinfo.nbins, ptHinfo.min, ptHinfo.max);
0405 etaLoosevsEle =
0406 ibooker.book1D("tau_loosevsEle_eta", "tau_loosevsEle_eta", etaHinfo.nbins, etaHinfo.min, etaHinfo.max);
0407 phiLoosevsEle =
0408 ibooker.book1D("tau_loosevsEle_phi", "tau_loosevsEle_phi", phiHinfo.nbins, phiHinfo.min, phiHinfo.max);
0409 massLoosevsEle =
0410 ibooker.book1D("tau_loosevsEle_mass", "tau_loosevsEle_mass", massHinfo.nbins, massHinfo.min, massHinfo.max);
0411 puLoosevsEle = ibooker.book1D("tau_loosevsEle_pu", "tau_loosevsEle_pu", puHinfo.nbins, puHinfo.min, puHinfo.max);
0412
0413 ptLoosevsEleMap.insert(std::make_pair("", ptLoosevsEle));
0414 etaLoosevsEleMap.insert(std::make_pair("", etaLoosevsEle));
0415 phiLoosevsEleMap.insert(std::make_pair("", phiLoosevsEle));
0416 massLoosevsEleMap.insert(std::make_pair("", massLoosevsEle));
0417 puLoosevsEleMap.insert(std::make_pair("", puLoosevsEle));
0418 }
0419
0420
0421 if (extensionName_.compare(real_mudata) == 0 || extensionName_.compare(zmm) == 0 ||
0422 extensionName_.compare(ztt) == 0) {
0423
0424 ibooker.setCurrentFolder("RecoTauV/miniAODValidation/" + extensionName_ + "/vsMuo/tight");
0425
0426 ptTightvsMuo = ibooker.book1D("tau_tightvsMuo_pt", "tau_tightvsMuo_pt", ptHinfo.nbins, ptHinfo.min, ptHinfo.max);
0427 etaTightvsMuo =
0428 ibooker.book1D("tau_tightvsMuo_eta", "tau_tightvsMuo_eta", etaHinfo.nbins, etaHinfo.min, etaHinfo.max);
0429 phiTightvsMuo =
0430 ibooker.book1D("tau_tightvsMuo_phi", "tau_tightvsMuo_phi", phiHinfo.nbins, phiHinfo.min, phiHinfo.max);
0431 massTightvsMuo =
0432 ibooker.book1D("tau_tightvsMuo_mass", "tau_tightvsMuo_mass", massHinfo.nbins, massHinfo.min, massHinfo.max);
0433 puTightvsMuo = ibooker.book1D("tau_tightvsMuo_pu", "tau_tightvsMuo_pu", puHinfo.nbins, puHinfo.min, puHinfo.max);
0434
0435 ptTightvsMuoMap.insert(std::make_pair("", ptTightvsMuo));
0436 etaTightvsMuoMap.insert(std::make_pair("", etaTightvsMuo));
0437 phiTightvsMuoMap.insert(std::make_pair("", phiTightvsMuo));
0438 massTightvsMuoMap.insert(std::make_pair("", massTightvsMuo));
0439 puTightvsMuoMap.insert(std::make_pair("", puTightvsMuo));
0440
0441
0442 ibooker.setCurrentFolder("RecoTauV/miniAODValidation/" + extensionName_ + "/vsMuo/medium");
0443
0444 ptMediumvsMuo = ibooker.book1D("tau_mediumvsMuo_pt", "tau_mediumvsMuo_pt", ptHinfo.nbins, ptHinfo.min, ptHinfo.max);
0445 etaMediumvsMuo =
0446 ibooker.book1D("tau_mediumvsMuo_eta", "tau_mediumvsMuo_eta", etaHinfo.nbins, etaHinfo.min, etaHinfo.max);
0447 phiMediumvsMuo =
0448 ibooker.book1D("tau_mediumvsMuo_phi", "tau_mediumvsMuo_phi", phiHinfo.nbins, phiHinfo.min, phiHinfo.max);
0449 massMediumvsMuo =
0450 ibooker.book1D("tau_mediumvsMuo_mass", "tau_mediumvsMuo_mass", massHinfo.nbins, massHinfo.min, massHinfo.max);
0451 puMediumvsMuo = ibooker.book1D("tau_mediumvsMuo_pu", "tau_mediumvsMuo_pu", puHinfo.nbins, puHinfo.min, puHinfo.max);
0452
0453 ptMediumvsMuoMap.insert(std::make_pair("", ptMediumvsMuo));
0454 etaMediumvsMuoMap.insert(std::make_pair("", etaMediumvsMuo));
0455 phiMediumvsMuoMap.insert(std::make_pair("", phiMediumvsMuo));
0456 massMediumvsMuoMap.insert(std::make_pair("", massMediumvsMuo));
0457 puMediumvsMuoMap.insert(std::make_pair("", puMediumvsMuo));
0458
0459
0460 ibooker.setCurrentFolder("RecoTauV/miniAODValidation/" + extensionName_ + "/vsMuo/loose");
0461
0462 ptLoosevsMuo = ibooker.book1D("tau_loosevsMuo_pt", "tau_loosevsMuo_pt", ptHinfo.nbins, ptHinfo.min, ptHinfo.max);
0463 etaLoosevsMuo =
0464 ibooker.book1D("tau_loosevsMuo_eta", "tau_loosevsMuo_eta", etaHinfo.nbins, etaHinfo.min, etaHinfo.max);
0465 phiLoosevsMuo =
0466 ibooker.book1D("tau_loosevsMuo_phi", "tau_loosevsMuo_phi", phiHinfo.nbins, phiHinfo.min, phiHinfo.max);
0467 massLoosevsMuo =
0468 ibooker.book1D("tau_loosevsMuo_mass", "tau_loosevsMuo_mass", massHinfo.nbins, massHinfo.min, massHinfo.max);
0469 puLoosevsMuo = ibooker.book1D("tau_loosevsMuo_pu", "tau_loosevsMuo_pu", puHinfo.nbins, puHinfo.min, puHinfo.max);
0470
0471 ptLoosevsMuoMap.insert(std::make_pair("", ptLoosevsMuo));
0472 etaLoosevsMuoMap.insert(std::make_pair("", etaLoosevsMuo));
0473 phiLoosevsMuoMap.insert(std::make_pair("", phiLoosevsMuo));
0474 massLoosevsMuoMap.insert(std::make_pair("", massLoosevsMuo));
0475 puLoosevsMuoMap.insert(std::make_pair("", puLoosevsMuo));
0476 }
0477 }
0478 void TauValidationMiniAOD::analyze(const edm::Event &iEvent, const edm::EventSetup &iSetup) {
0479
0480 edm::Handle<pat::TauCollection> taus;
0481 bool isTau = iEvent.getByToken(tauCollection_, taus);
0482 if (!isTau) {
0483 edm::LogWarning("TauValidationMiniAOD") << " Tau collection not found while running TauValidationMiniAOD.cc ";
0484 return;
0485 }
0486
0487
0488 edm::Handle<std::vector<reco::GenParticle>> genParticles;
0489 iEvent.getByToken(prunedGenToken_, genParticles);
0490
0491
0492 typedef edm::View<reco::Candidate> refCandidateCollection;
0493 edm::Handle<refCandidateCollection> ReferenceCollection;
0494 bool isRef = iEvent.getByToken(refCollectionInputTagToken_, ReferenceCollection);
0495 if (!isRef) {
0496 std::cerr << "ERROR: Reference collection not found while running TauValidationMiniAOD.cc \n " << std::endl;
0497 return;
0498 }
0499
0500
0501 Handle<std::vector<reco::Vertex>> pvHandle;
0502 bool isPV = iEvent.getByToken(primaryVertexCollectionToken_, pvHandle);
0503 if (!isPV) {
0504 edm::LogWarning("TauValidationMiniAOD") << " PV collection not found while running TauValidationMiniAOD.cc ";
0505 }
0506 std::vector<const reco::GenParticle *> GenTaus;
0507
0508
0509 for (refCandidateCollection::const_iterator RefJet = ReferenceCollection->begin();
0510 RefJet != ReferenceCollection->end();
0511 RefJet++) {
0512 float dRmin = 0.15;
0513 int matchedTauIndex = -99;
0514 float gendRmin = 0.15;
0515 int genmatchedTauIndex = -99;
0516
0517
0518 for (unsigned iTau = 0; iTau < taus->size(); iTau++) {
0519 pat::TauRef tau(taus, iTau);
0520
0521 float dR = deltaR2(tau->eta(), tau->phi(), RefJet->eta(), RefJet->phi());
0522 if (dR < dRmin) {
0523 dRmin = dR;
0524 matchedTauIndex = iTau;
0525 }
0526 }
0527 if (dRmin < 0.15) {
0528 pat::TauRef matchedTau(taus, matchedTauIndex);
0529
0530
0531 ptMap.find("")->second->Fill(matchedTau->pt());
0532 etaMap.find("")->second->Fill(matchedTau->eta());
0533 phiMap.find("")->second->Fill(matchedTau->phi());
0534 massMap.find("")->second->Fill(matchedTau->mass());
0535 puMap.find("")->second->Fill(pvHandle->size());
0536 decayModeMap.find("pftau")->second->Fill(matchedTau->decayMode());
0537
0538
0539 if (matchedTau->isTauIDAvailable("decayModeFindingNewDMs"))
0540 decayModeFindingMap.find("")->second->Fill(matchedTau->tauID("decayModeFindingNewDMs"));
0541 if (matchedTau->isTauIDAvailable("byDeepTau2018v2p5VSeraw"))
0542 byDeepTau2018v2p5VSerawMap.find("")->second->Fill(matchedTau->tauID("byDeepTau2018v2p5VSeraw"));
0543 if (matchedTau->isTauIDAvailable("byDeepTau2018v2p5VSjetraw"))
0544 byDeepTau2018v2p5VSjetrawMap.find("")->second->Fill(matchedTau->tauID("byDeepTau2018v2p5VSjetraw"));
0545 if (matchedTau->isTauIDAvailable("byDeepTau2018v2p5VSmuraw"))
0546 byDeepTau2018v2p5VSmurawMap.find("")->second->Fill(matchedTau->tauID("byDeepTau2018v2p5VSmuraw"));
0547
0548
0549 if (matchedTau->decayMode() == 0) {
0550 mtau_dm0Map.find("")->second->Fill(matchedTau->mass());
0551 pTOverProng_dm0Map.find("")->second->Fill(matchedTau->pt(), matchedTau->ptLeadChargedCand());
0552 } else if (matchedTau->decayMode() == 1 || matchedTau->decayMode() == 2) {
0553 mtau_dm1p2Map.find("")->second->Fill(matchedTau->mass());
0554 pTOverProng_dm1p2Map.find("")->second->Fill(matchedTau->pt(), matchedTau->ptLeadChargedCand());
0555 } else if (matchedTau->decayMode() == 5) {
0556 mtau_dm5Map.find("")->second->Fill(matchedTau->mass());
0557 pTOverProng_dm5Map.find("")->second->Fill(matchedTau->pt(), matchedTau->ptLeadChargedCand());
0558 } else if (matchedTau->decayMode() == 6) {
0559 mtau_dm6Map.find("")->second->Fill(matchedTau->mass());
0560 pTOverProng_dm6Map.find("")->second->Fill(matchedTau->pt(), matchedTau->ptLeadChargedCand());
0561 } else if (matchedTau->decayMode() == 10) {
0562 mtau_dm10Map.find("")->second->Fill(matchedTau->mass());
0563 pTOverProng_dm10Map.find("")->second->Fill(matchedTau->pt(), matchedTau->ptLeadChargedCand());
0564 } else if (matchedTau->decayMode() == 11) {
0565 mtau_dm11Map.find("")->second->Fill(matchedTau->mass());
0566 pTOverProng_dm11Map.find("")->second->Fill(matchedTau->pt(), matchedTau->ptLeadChargedCand());
0567 }
0568
0569
0570 ntau_vs_dmMap.find("")->second->Fill(taus->size(), matchedTau->decayMode());
0571
0572
0573
0574 unsigned genindex = 0;
0575 for (const auto &genParticle : *genParticles) {
0576 if (abs(genParticle.pdgId()) == 15) {
0577 float gendR = deltaR2(matchedTau->eta(), matchedTau->phi(), genParticle.eta(), genParticle.phi());
0578 if (gendR < gendRmin) {
0579 gendRmin = gendR;
0580 genmatchedTauIndex = genindex;
0581 }
0582 }
0583 genindex = genindex + 1;
0584 }
0585
0586 if (gendRmin < 0.15) {
0587 int nPi0s = 0;
0588 int nPis = 0;
0589 auto &gentau = genParticles->at(genmatchedTauIndex);
0590 for (unsigned idtr = 0; idtr < gentau.numberOfDaughters(); idtr++) {
0591 const reco::GenParticle *dtr = dynamic_cast<const reco::GenParticle *>(gentau.daughter(idtr));
0592 int dtrpdgID = std::abs(dtr->pdgId());
0593 int dtrstatus = dtr->status();
0594 if (dtrpdgID == 12 || dtrpdgID == 14 || dtrpdgID == 16)
0595 continue;
0596 if (dtrpdgID == 111 || dtrpdgID == 311)
0597 nPi0s++;
0598 else if (dtrpdgID == 211 || dtrpdgID == 321)
0599 nPis++;
0600 else if (dtrpdgID == 15 && dtrstatus == 2 ) {
0601 for (unsigned idtr2 = 0; idtr2 < dtr->numberOfDaughters(); idtr2++) {
0602 const reco::GenParticle *dtr2 = dynamic_cast<const reco::GenParticle *>(dtr->daughter(idtr2));
0603 int dtr2pdgID = std::abs(dtr2->pdgId());
0604 if (dtr2pdgID == 12 || dtr2pdgID == 14 || dtr2pdgID == 16)
0605 continue;
0606 if (dtr2pdgID == 111 || dtr2pdgID == 311)
0607 nPi0s++;
0608 else if (dtr2pdgID == 211 || dtr2pdgID == 321)
0609 nPis++;
0610 }
0611 }
0612 }
0613 int genTau_dm = findDecayMode(nPis, nPi0s);
0614 decayModeMap.find("gentau")->second->Fill(genTau_dm);
0615 dmMigrationMap.find("")->second->Fill(genTau_dm, matchedTau->decayMode());
0616 }
0617
0618
0619 unsigned j = 0;
0620 for (const auto &it : discriminators_) {
0621 string currentDiscriminator = it.getParameter<string>("discriminator");
0622 double selectionCut = it.getParameter<double>("selectionCut");
0623 summaryMap.find("Den")->second->Fill(j);
0624 if (matchedTau->isTauIDAvailable(currentDiscriminator) &&
0625 matchedTau->tauID(currentDiscriminator) >= selectionCut)
0626 summaryMap.find("Num")->second->Fill(j);
0627 j = j + 1;
0628 }
0629
0630
0631
0632 if (extensionName_.compare(qcd) == 0 || extensionName_.compare(real_data) == 0 ||
0633 extensionName_.compare(ztt) == 0) {
0634
0635 if (matchedTau->isTauIDAvailable("byTightDeepTau2018v2p5VSjet") &&
0636 matchedTau->tauID("byTightDeepTau2018v2p5VSjet") >= 0.5) {
0637 ptTightvsJetMap.find("")->second->Fill(matchedTau->pt());
0638 etaTightvsJetMap.find("")->second->Fill(matchedTau->eta());
0639 phiTightvsJetMap.find("")->second->Fill(matchedTau->phi());
0640 massTightvsJetMap.find("")->second->Fill(matchedTau->mass());
0641 puTightvsJetMap.find("")->second->Fill(pvHandle->size());
0642 }
0643
0644 if (matchedTau->isTauIDAvailable("byMediumDeepTau2018v2p5VSjet") &&
0645 matchedTau->tauID("byMediumDeepTau2018v2p5VSjet") >= 0.5) {
0646 ptMediumvsJetMap.find("")->second->Fill(matchedTau->pt());
0647 etaMediumvsJetMap.find("")->second->Fill(matchedTau->eta());
0648 phiMediumvsJetMap.find("")->second->Fill(matchedTau->phi());
0649 massMediumvsJetMap.find("")->second->Fill(matchedTau->mass());
0650 puMediumvsJetMap.find("")->second->Fill(pvHandle->size());
0651 }
0652
0653 if (matchedTau->isTauIDAvailable("byLooseDeepTau2018v2p5VSjet") &&
0654 matchedTau->tauID("byLooseDeepTau2018v2p5VSjet") >= 0.5) {
0655 ptLoosevsJetMap.find("")->second->Fill(matchedTau->pt());
0656 etaLoosevsJetMap.find("")->second->Fill(matchedTau->eta());
0657 phiLoosevsJetMap.find("")->second->Fill(matchedTau->phi());
0658 massLoosevsJetMap.find("")->second->Fill(matchedTau->mass());
0659 puLoosevsJetMap.find("")->second->Fill(pvHandle->size());
0660 }
0661 }
0662
0663 if (extensionName_.compare(real_eledata) == 0 || extensionName_.compare(zee) == 0 ||
0664 extensionName_.compare(ztt) == 0) {
0665
0666 if (matchedTau->isTauIDAvailable("byTightDeepTau2018v2p5VSe") &&
0667 matchedTau->tauID("byTightDeepTau2018v2p5VSe") >= 0.5) {
0668 ptTightvsEleMap.find("")->second->Fill(matchedTau->pt());
0669 etaTightvsEleMap.find("")->second->Fill(matchedTau->eta());
0670 phiTightvsEleMap.find("")->second->Fill(matchedTau->phi());
0671 massTightvsEleMap.find("")->second->Fill(matchedTau->mass());
0672 puTightvsEleMap.find("")->second->Fill(pvHandle->size());
0673 }
0674
0675 if (matchedTau->isTauIDAvailable("byMediumDeepTau2018v2p5VSe") &&
0676 matchedTau->tauID("byMediumDeepTau2018v2p5VSe") >= 0.5) {
0677 ptMediumvsEleMap.find("")->second->Fill(matchedTau->pt());
0678 etaMediumvsEleMap.find("")->second->Fill(matchedTau->eta());
0679 phiMediumvsEleMap.find("")->second->Fill(matchedTau->phi());
0680 massMediumvsEleMap.find("")->second->Fill(matchedTau->mass());
0681 puMediumvsEleMap.find("")->second->Fill(pvHandle->size());
0682 }
0683
0684 if (matchedTau->isTauIDAvailable("byLooseDeepTau2018v2p5VSe") &&
0685 matchedTau->tauID("byLooseDeepTau2018v2p5VSe") >= 0.5) {
0686 ptLoosevsEleMap.find("")->second->Fill(matchedTau->pt());
0687 etaLoosevsEleMap.find("")->second->Fill(matchedTau->eta());
0688 phiLoosevsEleMap.find("")->second->Fill(matchedTau->phi());
0689 massLoosevsEleMap.find("")->second->Fill(matchedTau->mass());
0690 puLoosevsEleMap.find("")->second->Fill(pvHandle->size());
0691 }
0692 }
0693
0694 if (extensionName_.compare(real_mudata) == 0 || extensionName_.compare(zmm) == 0 ||
0695 extensionName_.compare(ztt) == 0) {
0696
0697 if (matchedTau->isTauIDAvailable("byTightDeepTau2018v2p5VSmu") &&
0698 matchedTau->tauID("byTightDeepTau2018v2p5VSmu") >= 0.5) {
0699 ptTightvsMuoMap.find("")->second->Fill(matchedTau->pt());
0700 etaTightvsMuoMap.find("")->second->Fill(matchedTau->eta());
0701 phiTightvsMuoMap.find("")->second->Fill(matchedTau->phi());
0702 massTightvsMuoMap.find("")->second->Fill(matchedTau->mass());
0703 puTightvsMuoMap.find("")->second->Fill(pvHandle->size());
0704 }
0705
0706 if (matchedTau->isTauIDAvailable("byMediumDeepTau2018v2p5VSmu") &&
0707 matchedTau->tauID("byMediumDeepTau2018v2p5VSmu") >= 0.5) {
0708 ptMediumvsMuoMap.find("")->second->Fill(matchedTau->pt());
0709 etaMediumvsMuoMap.find("")->second->Fill(matchedTau->eta());
0710 phiMediumvsMuoMap.find("")->second->Fill(matchedTau->phi());
0711 massMediumvsMuoMap.find("")->second->Fill(matchedTau->mass());
0712 puMediumvsMuoMap.find("")->second->Fill(pvHandle->size());
0713 }
0714
0715 if (matchedTau->isTauIDAvailable("byLooseDeepTau2018v2p5VSmu") &&
0716 matchedTau->tauID("byLooseDeepTau2018v2p5VSmu") >= 0.5) {
0717 ptLoosevsMuoMap.find("")->second->Fill(matchedTau->pt());
0718 etaLoosevsMuoMap.find("")->second->Fill(matchedTau->eta());
0719 phiLoosevsMuoMap.find("")->second->Fill(matchedTau->phi());
0720 massLoosevsMuoMap.find("")->second->Fill(matchedTau->mass());
0721 puLoosevsMuoMap.find("")->second->Fill(pvHandle->size());
0722 }
0723 }
0724 }
0725 }
0726 }