Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:33:19

0001 // -*- C++ -*-
0002 //
0003 // Package:    TauValidationMiniAOD
0004 // Class:      TauValidationMiniAOD
0005 //
0006 /**\class TauValidationMiniAOD TauValidationMiniAOD.cc
0007 
0008  Description: <one line class summary>
0009 
0010  Class used to do the Validation of the Tau in miniAOD
0011 
0012  Implementation:
0013  <Notes on implementation>
0014  */
0015 // Original Author:  Aniello Spiezia
0016 //         Created:  August 13, 2019
0017 // Updated By:       Ece Asilar
0018 //                   Gage DeZoort
0019 //       Date:       April 6th, 2020
0020 // Updated By:       Gourab Saha
0021 //       Date:       July 4th, 2023
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   // Input collection of legitimate taus:
0031   tauCollection_ = consumes<pat::TauCollection>(iConfig.getParameter<InputTag>("tauCollection"));
0032   // Input collection to compare to taus:
0033   refCollectionInputTagToken_ = consumes<edm::View<reco::Candidate>>(iConfig.getParameter<InputTag>("RefCollection"));
0034   // Information about reference collection:
0035   extensionName_ = iConfig.getParameter<string>("ExtensionName");
0036   // List of discriminators and their cuts:
0037   discriminators_ = iConfig.getParameter<std::vector<edm::ParameterSet>>("discriminators");
0038   // Input primaryVertex collection:
0039   primaryVertexCollectionToken_ = consumes<std::vector<reco::Vertex>>(iConfig.getParameter<InputTag>("PVCollection"));
0040   // Input genetated particle collection:
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 & /* iSetup */) {
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   // ---------------------------- Book, Map Summary Histograms -------------------------------
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   // add discriminator labels to summary plots
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   // --------------- Book, Map Discriminator/Kinematic Histograms -----------------------
0205 
0206   // pt, eta, phi, mass, pileup
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   // decayMode, decayModeFinding
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   // raw distributions for deepTau (e, jet, mu)
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   // book the temp histograms
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   // map the histograms
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   // book decay mode histograms
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   // book the deepTau histograms
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   // map the deepTau histograms
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   // ---------------------------- /vsJet/ ---------------------------------------------
0306   if (extensionName_.compare(qcd) == 0 || extensionName_.compare(real_data) == 0 || extensionName_.compare(ztt) == 0) {
0307     // ---------------------------- /vsJet/tight ---------------------------------------------
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     // ---------------------------- /vsJet/medium -------------------------------------------
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     // ---------------------------- /vsJet/loose --------------------------------------------
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   // ---------------------------- /vsEle/ ---------------------------------------------
0362   //if (strcmp(extensionName_, real_eledata) == 0 || strcmp(extensionName_, zee) == 0 || strcmp(extensionName_, ztt) == 0) {
0363   if (extensionName_.compare(real_eledata) == 0 || extensionName_.compare(zee) == 0 ||
0364       extensionName_.compare(ztt) == 0) {
0365     // ---------------------------- /vsEle/tight ---------------------------------------------
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     // ---------------------------- /vsEle/medium -------------------------------------------
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     // ---------------------------- /vsEle/loose --------------------------------------------
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   // ---------------------------- /vsMuo/ ---------------------------------------------
0420   //if (strcmp(extensionName_, real_mudata) == 0 || strcmp(extensionName_, zmm) == 0 || strcmp(extensionName_, ztt) == 0) {
0421   if (extensionName_.compare(real_mudata) == 0 || extensionName_.compare(zmm) == 0 ||
0422       extensionName_.compare(ztt) == 0) {
0423     // ---------------------------- /vsMuo/tight ---------------------------------------------
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     // ---------------------------- /vsMuo/medium -------------------------------------------
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     // ---------------------------- /vsMuo/loose --------------------------------------------
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   // create a handle to the tau collection
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   // create a handle to the gen Part collection
0488   edm::Handle<std::vector<reco::GenParticle>> genParticles;
0489   iEvent.getByToken(prunedGenToken_, genParticles);
0490 
0491   // create a handle to the reference collection
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   // create a handle to the primary vertex collection
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   // dR match reference object to tau
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     // find best matched tau
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       // fill histograms with matchedTau quantities
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       // fill select discriminators with matchedTau quantities
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       // fill tau mass for decay modes 0,1+2,5,6,7,10,11
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       // fill decay mode population plot
0570       ntau_vs_dmMap.find("")->second->Fill(taus->size(), matchedTau->decayMode());
0571 
0572       //Fill decay mode migration 2D histogragms
0573       //First do a gen Matching
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 /*&& dtr->isLastCopy()*/) {
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       // count number of taus passing each discriminator's selection cut
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->tauID(currentDiscriminator) >= selectionCut)
0625           summaryMap.find("Num")->second->Fill(j);
0626         j = j + 1;
0627       }
0628 
0629       // fill the vsXXX histograms against (jet, e, mu)
0630       // vsJet/
0631       if (extensionName_.compare(qcd) == 0 || extensionName_.compare(real_data) == 0 ||
0632           extensionName_.compare(ztt) == 0) {
0633         // vsJet/tight
0634         if (matchedTau->tauID("byTightDeepTau2018v2p5VSjet") >= 0.5) {
0635           ptTightvsJetMap.find("")->second->Fill(matchedTau->pt());
0636           etaTightvsJetMap.find("")->second->Fill(matchedTau->eta());
0637           phiTightvsJetMap.find("")->second->Fill(matchedTau->phi());
0638           massTightvsJetMap.find("")->second->Fill(matchedTau->mass());
0639           puTightvsJetMap.find("")->second->Fill(pvHandle->size());
0640         }
0641         // vsJet/medium
0642         if (matchedTau->tauID("byMediumDeepTau2018v2p5VSjet") >= 0.5) {
0643           ptMediumvsJetMap.find("")->second->Fill(matchedTau->pt());
0644           etaMediumvsJetMap.find("")->second->Fill(matchedTau->eta());
0645           phiMediumvsJetMap.find("")->second->Fill(matchedTau->phi());
0646           massMediumvsJetMap.find("")->second->Fill(matchedTau->mass());
0647           puMediumvsJetMap.find("")->second->Fill(pvHandle->size());
0648         }
0649         // vsJet/loose
0650         if (matchedTau->tauID("byLooseDeepTau2018v2p5VSjet") >= 0.5) {
0651           ptLoosevsJetMap.find("")->second->Fill(matchedTau->pt());
0652           etaLoosevsJetMap.find("")->second->Fill(matchedTau->eta());
0653           phiLoosevsJetMap.find("")->second->Fill(matchedTau->phi());
0654           massLoosevsJetMap.find("")->second->Fill(matchedTau->mass());
0655           puLoosevsJetMap.find("")->second->Fill(pvHandle->size());
0656         }
0657       }
0658       // vsEle/
0659       if (extensionName_.compare(real_eledata) == 0 || extensionName_.compare(zee) == 0 ||
0660           extensionName_.compare(ztt) == 0) {
0661         // vsEle/tight
0662         if (matchedTau->tauID("byTightDeepTau2018v2p5VSe") >= 0.5) {
0663           ptTightvsEleMap.find("")->second->Fill(matchedTau->pt());
0664           etaTightvsEleMap.find("")->second->Fill(matchedTau->eta());
0665           phiTightvsEleMap.find("")->second->Fill(matchedTau->phi());
0666           massTightvsEleMap.find("")->second->Fill(matchedTau->mass());
0667           puTightvsEleMap.find("")->second->Fill(pvHandle->size());
0668         }
0669         // vsEle/medium
0670         if (matchedTau->tauID("byMediumDeepTau2018v2p5VSe") >= 0.5) {
0671           ptMediumvsEleMap.find("")->second->Fill(matchedTau->pt());
0672           etaMediumvsEleMap.find("")->second->Fill(matchedTau->eta());
0673           phiMediumvsEleMap.find("")->second->Fill(matchedTau->phi());
0674           massMediumvsEleMap.find("")->second->Fill(matchedTau->mass());
0675           puMediumvsEleMap.find("")->second->Fill(pvHandle->size());
0676         }
0677         // vsEle/loose
0678         if (matchedTau->tauID("byLooseDeepTau2018v2p5VSe") >= 0.5) {
0679           ptLoosevsEleMap.find("")->second->Fill(matchedTau->pt());
0680           etaLoosevsEleMap.find("")->second->Fill(matchedTau->eta());
0681           phiLoosevsEleMap.find("")->second->Fill(matchedTau->phi());
0682           massLoosevsEleMap.find("")->second->Fill(matchedTau->mass());
0683           puLoosevsEleMap.find("")->second->Fill(pvHandle->size());
0684         }
0685       }
0686       // vsMuo/
0687       if (extensionName_.compare(real_mudata) == 0 || extensionName_.compare(zmm) == 0 ||
0688           extensionName_.compare(ztt) == 0) {
0689         // vsMuo/tight
0690         if (matchedTau->tauID("byTightDeepTau2018v2p5VSmu") >= 0.5) {
0691           ptTightvsMuoMap.find("")->second->Fill(matchedTau->pt());
0692           etaTightvsMuoMap.find("")->second->Fill(matchedTau->eta());
0693           phiTightvsMuoMap.find("")->second->Fill(matchedTau->phi());
0694           massTightvsMuoMap.find("")->second->Fill(matchedTau->mass());
0695           puTightvsMuoMap.find("")->second->Fill(pvHandle->size());
0696         }
0697         // vsMuo/medium
0698         if (matchedTau->tauID("byMediumDeepTau2018v2p5VSmu") >= 0.5) {
0699           ptMediumvsMuoMap.find("")->second->Fill(matchedTau->pt());
0700           etaMediumvsMuoMap.find("")->second->Fill(matchedTau->eta());
0701           phiMediumvsMuoMap.find("")->second->Fill(matchedTau->phi());
0702           massMediumvsMuoMap.find("")->second->Fill(matchedTau->mass());
0703           puMediumvsMuoMap.find("")->second->Fill(pvHandle->size());
0704         }
0705         // vsMuo/loose
0706         if (matchedTau->tauID("byLooseDeepTau2018v2p5VSmu") >= 0.5) {
0707           ptLoosevsMuoMap.find("")->second->Fill(matchedTau->pt());
0708           etaLoosevsMuoMap.find("")->second->Fill(matchedTau->eta());
0709           phiLoosevsMuoMap.find("")->second->Fill(matchedTau->phi());
0710           massLoosevsMuoMap.find("")->second->Fill(matchedTau->mass());
0711           puLoosevsMuoMap.find("")->second->Fill(pvHandle->size());
0712         }
0713       }
0714     }
0715   }
0716 }