File indexing completed on 2025-01-28 23:24:24
0001 #include "DQMServices/Core/interface/DQMEDAnalyzer.h"
0002 #include "FWCore/Framework/interface/Frameworkfwd.h"
0003 #include "FWCore/Framework/interface/MakerMacros.h"
0004 #include "FWCore/Framework/interface/Event.h"
0005 #include "FWCore/Utilities/interface/transform.h"
0006
0007 #include "DataFormats/PatCandidates/interface/Jet.h"
0008
0009 #include "DataFormats/BTauReco/interface/JetFeatures.h"
0010 #include "DataFormats/BTauReco/interface/SecondaryVertexFeatures.h"
0011 #include "DataFormats/BTauReco/interface/ChargedCandidateFeatures.h"
0012 #include "DataFormats/BTauReco/interface/NeutralCandidateFeatures.h"
0013 #include "DataFormats/BTauReco/interface/LostTracksFeatures.h"
0014
0015 #include "DataFormats/BTauReco/interface/DeepFlavourTagInfo.h"
0016 #include "DataFormats/BTauReco/interface/DeepFlavourFeatures.h"
0017
0018 #include "DataFormats/BTauReco/interface/DeepBoostedJetTagInfo.h"
0019 #include "DataFormats/BTauReco/interface/DeepBoostedJetFeatures.h"
0020
0021 #include "DataFormats/BTauReco/interface/UnifiedParticleTransformerAK4TagInfo.h"
0022 #include "DataFormats/BTauReco/interface/UnifiedParticleTransformerAK4Features.h"
0023
0024
0025
0026
0027
0028
0029 class MiniAODTagInfoAnalyzer : public DQMEDAnalyzer {
0030 public:
0031 explicit MiniAODTagInfoAnalyzer(const edm::ParameterSet& pSet);
0032 ~MiniAODTagInfoAnalyzer() override = default;
0033
0034 void analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) override;
0035
0036 private:
0037 void bookHistograms(DQMStore::IBooker&, edm::Run const&, edm::EventSetup const&) override;
0038 void analyzeTagInfoDeepJet(const reco::DeepFlavourTagInfo*);
0039 void analyzeTagInfoParticleNet(const reco::DeepBoostedJetTagInfo*);
0040 void analyzeTagInfoUnifiedParticleTransformerAK4(const reco::UnifiedParticleTransformerAK4TagInfo*);
0041
0042 const edm::EDGetTokenT<edm::View<reco::Jet>> jetToken_;
0043 const std::vector<std::string> jetTagInfos_;
0044 const double ptMin_;
0045 const double absEtaMin_;
0046 const double absEtaMax_;
0047 const int jetPartonFlavour_;
0048 std::vector<edm::InputTag> tagInfoTags_;
0049 std::vector<edm::EDGetTokenT<edm::View<reco::BaseTagInfo>>> tagInfoTokens_;
0050
0051 bool doDeepJet_;
0052 bool doParticleNetCentral_;
0053 bool doParticleNetForward_;
0054 bool doUnifiedParticleTransformerAK4_;
0055
0056 std::string partonFlavourLabel_;
0057
0058 std::unordered_map<std::string, MonitorElement*> map_ME_DeepJet_;
0059 std::unordered_map<std::string, MonitorElement*> map_ME_ParticleNet_;
0060 std::unordered_map<std::string, MonitorElement*> map_ME_UParT_;
0061 };
0062
0063 MiniAODTagInfoAnalyzer::MiniAODTagInfoAnalyzer(const edm::ParameterSet& pSet)
0064 : jetToken_(consumes<edm::View<reco::Jet>>(pSet.getParameter<edm::InputTag>("jets"))),
0065 jetTagInfos_(pSet.getParameter<std::vector<std::string>>("jetTagInfos")),
0066 ptMin_(pSet.getParameter<double>("ptMin")),
0067 absEtaMin_(pSet.getParameter<double>("absEtaMin")),
0068 absEtaMax_(pSet.getParameter<double>("absEtaMax")),
0069 jetPartonFlavour_(pSet.getParameter<int>("jetPartonFlavour")) {
0070 tagInfoTokens_ = edm::vector_transform(jetTagInfos_, [this](std::string const& jetTagInfoStr) {
0071 return mayConsume<edm::View<reco::BaseTagInfo>>(edm::InputTag(jetTagInfoStr));
0072 });
0073
0074 partonFlavourLabel_ = "Inc";
0075 if (jetPartonFlavour_ == 5)
0076 partonFlavourLabel_ = "B";
0077 else if (jetPartonFlavour_ == 4)
0078 partonFlavourLabel_ = "C";
0079 else if (jetPartonFlavour_ == 1)
0080 partonFlavourLabel_ = "L";
0081
0082 doDeepJet_ = false;
0083 doParticleNetCentral_ = false;
0084 doParticleNetForward_ = false;
0085 doUnifiedParticleTransformerAK4_ = false;
0086 for (const auto& jetTagInfoLabel : jetTagInfos_) {
0087 if (jetTagInfoLabel.find("pfDeepFlavour") != std::string::npos) {
0088 doDeepJet_ = true;
0089 } else if (jetTagInfoLabel.find("pfParticleNetFromMiniAODAK4PuppiCentral") != std::string::npos) {
0090 doParticleNetCentral_ = true;
0091 } else if (jetTagInfoLabel.find("pfParticleNetFromMiniAODAK4PuppiForward") != std::string::npos) {
0092 doParticleNetForward_ = true;
0093 } else if (jetTagInfoLabel.find("pfUnifiedParticleTransformerAK4") != std::string::npos) {
0094 doUnifiedParticleTransformerAK4_ = true;
0095 }
0096 }
0097 }
0098
0099 void MiniAODTagInfoAnalyzer::bookHistograms(DQMStore::IBooker& ibook, edm::Run const& run, edm::EventSetup const& es) {
0100 if (doDeepJet_) {
0101 ibook.setCurrentFolder("Btag/TagInfo_pfDeepFlavour_" + partonFlavourLabel_);
0102 map_ME_DeepJet_["c_pf_btagPf_trackEtaRel"] = ibook.book1D("c_pf_btagPf_trackEtaRel", "", 50, 0., 10.);
0103 map_ME_DeepJet_["c_pf_btagPf_trackPtRel"] = ibook.book1D("c_pf_btagPf_trackPtRel", "", 100, 0., 5.);
0104 map_ME_DeepJet_["c_pf_btagPf_trackPPar"] = ibook.book1D("c_pf_btagPf_trackPPar", "", 100, 0., 500.);
0105 map_ME_DeepJet_["c_pf_btagPf_trackDeltaR"] = ibook.book1D("c_pf_btagPf_trackDeltaR", "", 50, 0., 1);
0106 map_ME_DeepJet_["c_pf_btagPf_trackPParRatio"] = ibook.book1D("c_pf_btagPf_trackPParRatio", "", 150, 0.7, 1.);
0107 map_ME_DeepJet_["c_pf_btagPf_trackSip2dVal"] = ibook.book1D("c_pf_btagPf_trackSip2dVal", "", 60, -0.15, 0.15);
0108 map_ME_DeepJet_["c_pf_btagPf_trackSip2dSig"] = ibook.book1D("c_pf_btagPf_trackSip2dSig", "", 120, -5., 25.);
0109 map_ME_DeepJet_["c_pf_btagPf_trackSip3dVal"] = ibook.book1D("c_pf_btagPf_trackSip3dVal", "", 60, -0.15, 0.15);
0110 map_ME_DeepJet_["c_pf_btagPf_trackSip3dSig"] = ibook.book1D("c_pf_btagPf_trackSip3dSig", "", 120, -5., 25.);
0111 map_ME_DeepJet_["c_pf_btagPf_trackJetDistVal"] = ibook.book1D("c_pf_btagPf_trackJetDistVal", "", 110, -1.0, 0.1);
0112 map_ME_DeepJet_["c_pf_ptrel"] = ibook.book1D("c_pf_ptrel", "", 100, -1.2, 0.2);
0113 map_ME_DeepJet_["c_pf_drminsv"] = ibook.book1D("c_pf_drminsv", "", 120, -0.5, 0.1);
0114 map_ME_DeepJet_["c_pf_vtx_ass"] = ibook.book1D("c_pf_vtx_ass", "", 10, 0, 10);
0115 map_ME_DeepJet_["c_pf_puppiw"] = ibook.book1D("c_pf_puppiw", "", 20, 0., 1.);
0116 map_ME_DeepJet_["c_pf_chi2"] = ibook.book1D("c_pf_chi2", "", 15, 0., 15.);
0117 map_ME_DeepJet_["c_pf_quality"] = ibook.book1D("c_pf_quality", "", 10, 0., 10);
0118 map_ME_DeepJet_["n_pf_ptrel"] = ibook.book1D("n_pf_ptrel", "", 50, -1., 0.);
0119 map_ME_DeepJet_["n_pf_deltaR"] = ibook.book1D("n_pf_deltaR", "", 50, -1., 0.);
0120 map_ME_DeepJet_["n_pf_isGamma"] = ibook.book1D("n_pf_isGamma", "", 2, -0.5, 1.5);
0121 map_ME_DeepJet_["n_pf_hadFrac"] = ibook.book1D("n_pf_hadFrac", "", 20, 0., 1.);
0122 map_ME_DeepJet_["n_pf_drminsv"] = ibook.book1D("n_pf_drminsv", "", 10, 0., 0.5);
0123 map_ME_DeepJet_["n_pf_puppiw"] = ibook.book1D("n_pf_puppiw", "", 20, 0., 1.);
0124 map_ME_DeepJet_["sv_pt"] = ibook.book1D("sv_pt", "", 50, 0., 200.);
0125 map_ME_DeepJet_["sv_deltaR"] = ibook.book1D("sv_deltaR", "", 100, -0.8, 0.2);
0126 map_ME_DeepJet_["sv_mass"] = ibook.book1D("sv_mass", "", 40, 0., 10.);
0127 map_ME_DeepJet_["sv_ntracks"] = ibook.book1D("sv_ntracks", "", 15, -0.5, 14.5);
0128 map_ME_DeepJet_["sv_chi2"] = ibook.book1D("sv_chi2", "", 40., 0., 20.);
0129 map_ME_DeepJet_["sv_normchi2"] = ibook.book1D("sv_normchi2", "", 40., 0., 20.);
0130 map_ME_DeepJet_["sv_dxy"] = ibook.book1D("sv_dxy", "", 100, 0., 0.5);
0131 map_ME_DeepJet_["sv_dxysig"] = ibook.book1D("sv_dxysig", "", 140, 0., 70.);
0132 map_ME_DeepJet_["sv_d3d"] = ibook.book1D("sv_d3d", "", 20, 0., 1.);
0133 map_ME_DeepJet_["sv_d3dsig"] = ibook.book1D("sv_d3dsig", "", 140, 0., 70.);
0134 map_ME_DeepJet_["sv_costhetasvpv"] = ibook.book1D("sv_costhetasvpv", "", 100, -1., 1.);
0135 map_ME_DeepJet_["sv_enratio"] = ibook.book1D("sv_enratio", "", 20, 0., 1.);
0136 map_ME_DeepJet_["max_cpf_n"] = ibook.book1D("max_cpf_n", "", 31, -0.5, 30.5);
0137 map_ME_DeepJet_["max_npf_n"] = ibook.book1D("max_npf_n", "", 31, -0.5, 30.5);
0138 map_ME_DeepJet_["max_sv_n"] = ibook.book1D("max_sv_n", "", 6, -0.5, 5.5);
0139 map_ME_DeepJet_["pv_n"] = ibook.book1D("pv_n", "", 100, -0.5, 100.5);
0140 }
0141 if (doParticleNetCentral_ || doParticleNetForward_) {
0142 if (doParticleNetCentral_) {
0143 ibook.setCurrentFolder("Btag/TagInfo_pfParticleNetFromMiniAODAK4PuppiCentral_" + partonFlavourLabel_);
0144 } else if (doParticleNetForward_) {
0145 ibook.setCurrentFolder("Btag/TagInfo_pfParticleNetFromMiniAODAK4PuppiForward_" + partonFlavourLabel_);
0146 }
0147 map_ME_ParticleNet_["pfcand_pt_log"] = ibook.book1D("pfcand_pt_log", "", 120, -0.5, 5.5);
0148 map_ME_ParticleNet_["pfcand_energy_log"] = ibook.book1D("pfcand_energy_log", "", 120, -0.5, 5.5);
0149 map_ME_ParticleNet_["pfcand_deta"] = ibook.book1D("pfcand_deta", "", 60, -0.6, 0.6);
0150 map_ME_ParticleNet_["pfcand_dphi"] = ibook.book1D("pfcand_dphi", "", 60, -0.6, 0.6);
0151 map_ME_ParticleNet_["pfcand_eta"] = ibook.book1D("pfcand_eta", "", 100, -5.0, 5.0);
0152 map_ME_ParticleNet_["pfcand_charge"] = ibook.book1D("pfcand_charge", "", 3, -1.5, 1.5);
0153 map_ME_ParticleNet_["pfcand_frompv"] = ibook.book1D("pfcand_frompv", "", 10, 0, 10);
0154 map_ME_ParticleNet_["pfcand_nlostinnerhits"] = ibook.book1D("pfcand_nlostinnerhits", "", 100, -1.2, 0.2);
0155 map_ME_ParticleNet_["pfcand_track_chi2"] = ibook.book1D("pfcand_track_chi2", "", 15, 0., 15);
0156 map_ME_ParticleNet_["pfcand_track_qual"] = ibook.book1D("pfcand_track_qual", "", 10, 0., 10);
0157 map_ME_ParticleNet_["pfcand_dz"] = ibook.book1D("pfcand_dz", "", 100, -10., 10.);
0158 map_ME_ParticleNet_["pfcand_dzsig"] = ibook.book1D("pfcand_dzsig", "", 100, 0., 20.);
0159 map_ME_ParticleNet_["pfcand_dxy"] = ibook.book1D("pfcand_dxy", "", 100, -10., 10.);
0160 map_ME_ParticleNet_["pfcand_dxysig"] = ibook.book1D("pfcand_dxysig", "", 100, 0., 20.);
0161 map_ME_ParticleNet_["pfcand_etarel"] = ibook.book1D("pfcand_etarel", "", 40, -10., 10.);
0162 map_ME_ParticleNet_["pfcand_pperp_ratio"] = ibook.book1D("pfcand_pperp_ratio", "", 20, 0., 1.);
0163 map_ME_ParticleNet_["pfcand_ppara_ratio"] = ibook.book1D("pfcand_ppara_ratio", "", 20, 0., 1.);
0164 map_ME_ParticleNet_["pfcand_trackjet_d3d"] = ibook.book1D("pfcand_trackjet_d3d", "", 100, -20., 20.);
0165 map_ME_ParticleNet_["pfcand_trackjet_d3dsig"] = ibook.book1D("pfcand_trackjet_d3dsig", "", 100, -20., 20.);
0166 map_ME_ParticleNet_["pfcand_trackjet_dist"] = ibook.book1D("pfcand_trackjet_dist", "", 100, -20., 20.);
0167 map_ME_ParticleNet_["pfcand_nhits"] = ibook.book1D("pfcand_nhits", "", 21, -0.5, 20.5);
0168 map_ME_ParticleNet_["pfcand_npixhits"] = ibook.book1D("pfcand_npixhits", "", 21, -0.5, 20.5);
0169 map_ME_ParticleNet_["pfcand_nstriphits"] = ibook.book1D("pfcand_nstriphits", "", 21, -0.5, 20.5);
0170 map_ME_ParticleNet_["pfcand_trackjet_decayL"] = ibook.book1D("pfcand_trackjet_decayL", "", 100, -20., 20.);
0171 map_ME_ParticleNet_["pfcand_id"] = ibook.book1D("pfcand_id", "", 11, -0.5, 10.5);
0172 map_ME_ParticleNet_["pfcand_calofraction"] = ibook.book1D("pfcand_calofraction", "", 60, 0., 3.);
0173 map_ME_ParticleNet_["pfcand_hcalfraction"] = ibook.book1D("pfcand_hcalfraction", "", 20, 0., 1.);
0174 map_ME_ParticleNet_["pfcand_puppiw"] = ibook.book1D("pfcand_puppiw", "", 20, 0., 1.);
0175 map_ME_ParticleNet_["pfcand_muon_id"] = ibook.book1D("pfcand_muon_id", "", 100, -1.2, 0.2);
0176 map_ME_ParticleNet_["pfcand_muon_isglobal"] = ibook.book1D("pfcand_muon_isglobal", "", 2, -0.5, 1.5);
0177 map_ME_ParticleNet_["pfcand_muon_segcomp"] = ibook.book1D("pfcand_muon_segcomp", "", 40., 0., 20.);
0178 map_ME_ParticleNet_["pfcand_muon_chi2"] = ibook.book1D("pfcand_muon_chi2", "", 40., 0., 20.);
0179 map_ME_ParticleNet_["pfcand_muon_nvalidhit"] = ibook.book1D("pfcand_muon_nvalidhit", "", 11, -0.5, 10.5);
0180 map_ME_ParticleNet_["pfcand_muon_nstation"] = ibook.book1D("pfcand_muon_nstation", "", 11, -0.5, 10.5);
0181 map_ME_ParticleNet_["pfcand_electron_detaIn"] = ibook.book1D("pfcand_electron_detaIn", "", 100, -1.2, 0.2);
0182 map_ME_ParticleNet_["pfcand_electron_dphiIn"] = ibook.book1D("pfcand_electron_dphiIn", "", 100, -1.2, 0.2);
0183 map_ME_ParticleNet_["pfcand_electron_sigIetaIeta"] =
0184 ibook.book1D("pfcand_electron_sigIetaIeta", "", 100, -1.2, 0.2);
0185 map_ME_ParticleNet_["pfcand_electron_sigIphiIphi"] =
0186 ibook.book1D("pfcand_electron_sigIphiIphi", "", 100, -1.2, 0.2);
0187 map_ME_ParticleNet_["pfcand_electron_r9"] = ibook.book1D("pfcand_electron_r9", "", 100, -1.2, 0.2);
0188 map_ME_ParticleNet_["pfcand_electron_convProb"] = ibook.book1D("pfcand_electron_convProb", "", 100, -1.2, 0.2);
0189 map_ME_ParticleNet_["pfcand_photon_sigIetaIeta"] = ibook.book1D("pfcand_photon_sigIetaIeta", "", 100, -1.2, 0.2);
0190 map_ME_ParticleNet_["pfcand_photon_r9"] = ibook.book1D("pfcand_photon_r9", "", 100, -1.2, 0.2);
0191 map_ME_ParticleNet_["pfcand_photon_eVeto"] = ibook.book1D("pfcand_photon_eVeto", "", 2, 0, 2);
0192 map_ME_ParticleNet_["pfcand_tau_signal"] = ibook.book1D("pfcand_tau_signal", "", 2, 0, 2);
0193
0194 map_ME_ParticleNet_["sv_pt_log"] = ibook.book1D("sv_pt_log", "", 120, -0.5, 5.5);
0195 map_ME_ParticleNet_["sv_mass"] = ibook.book1D("sv_mass", "", 40, 0., 10.);
0196 map_ME_ParticleNet_["sv_deta"] = ibook.book1D("sv_deta", "", 80, -0.4, 0.4);
0197 map_ME_ParticleNet_["sv_dphi"] = ibook.book1D("sv_dphi", "", 80, -0.4, 0.4);
0198 map_ME_ParticleNet_["sv_eta"] = ibook.book1D("sv_eta", "", 60, -3.0, 3.0);
0199 map_ME_ParticleNet_["sv_ntrack"] = ibook.book1D("sv_ntrack", "", 15, -0.5, 14.5);
0200 map_ME_ParticleNet_["sv_chi2"] = ibook.book1D("sv_chi2", "", 40., 0., 20.);
0201 map_ME_ParticleNet_["sv_dxy"] = ibook.book1D("sv_dxy", "", 100, -5., 5.);
0202 map_ME_ParticleNet_["sv_dxysig"] = ibook.book1D("sv_dxysig", "", 120, 0., 30.);
0203 map_ME_ParticleNet_["sv_d3d"] = ibook.book1D("sv_d3d", "", 100, 0., 5.);
0204 map_ME_ParticleNet_["sv_d3dsig"] = ibook.book1D("sv_d3dsig", "", 120, 0., 30.);
0205
0206 map_ME_ParticleNet_["losttrack_pt_log"] = ibook.book1D("losttrack_pt_log", "", 120, -0.5, 5.5);
0207 map_ME_ParticleNet_["losttrack_eta"] = ibook.book1D("losttrack_eta", "", 100, -5.0, 5.0);
0208 map_ME_ParticleNet_["losttrack_deta"] = ibook.book1D("losttrack_deta", "", 80, -0.4, 0.4);
0209 map_ME_ParticleNet_["losttrack_dphi"] = ibook.book1D("losttrack_dphi", "", 80, -0.4, 0.4);
0210 map_ME_ParticleNet_["losttrack_charge"] = ibook.book1D("losttrack_charge", "", 3, -1.5, 1.5);
0211 map_ME_ParticleNet_["losttrack_frompv"] = ibook.book1D("losttrack_frompv", "", 10, 0, 10);
0212 map_ME_ParticleNet_["losttrack_track_chi2"] = ibook.book1D("losttrack_track_chi2", "", 15, 0., 15.);
0213 map_ME_ParticleNet_["losttrack_track_qual"] = ibook.book1D("losttrack_track_qual", "", 100, -1.2, 0.2);
0214 map_ME_ParticleNet_["losttrack_dz"] = ibook.book1D("losttrack_dz", "", 100, 0., 0.5);
0215 map_ME_ParticleNet_["losttrack_dxy"] = ibook.book1D("losttrack_dxy", "", 140, 0., 70.);
0216 map_ME_ParticleNet_["losttrack_dzsig"] = ibook.book1D("losttrack_dzsig", "", 50, 0., 1.0);
0217 map_ME_ParticleNet_["losttrack_dxysig"] = ibook.book1D("losttrack_dxysig", "", 140, 0., 70.);
0218 map_ME_ParticleNet_["losttrack_etarel"] = ibook.book1D("losttrack_etarel", "", 40, -10., 10.);
0219 map_ME_ParticleNet_["losttrack_trackjet_d3d"] = ibook.book1D("losttrack_trackjet_d3d", "", 60, -0.15, 0.15);
0220 map_ME_ParticleNet_["losttrack_trackjet_d3dsig"] = ibook.book1D("losttrack_trackjet_d3dsig", "", 120, -5., 25.);
0221 map_ME_ParticleNet_["losttrack_trackjet_dist"] = ibook.book1D("losttrack_trackjet_dist", "", 20, -10., 10.);
0222 map_ME_ParticleNet_["losttrack_trackjet_decayL"] = ibook.book1D("losttrack_trackjet_decayL", "", 20, -10., 10.);
0223 map_ME_ParticleNet_["losttrack_npixhits"] = ibook.book1D("losttrack_npixhits", "", 21, -0.5, 20.5);
0224 map_ME_ParticleNet_["losttrack_nstriphits"] = ibook.book1D("losttrack_nstriphits", "", 21, -0.5, 20.5);
0225
0226 map_ME_ParticleNet_["pfcand_n"] = ibook.book1D("pfcand_n", "", 41, -0.5, 40.5);
0227 map_ME_ParticleNet_["sv_n"] = ibook.book1D("sv_n", "", 11, -0.5, 10.5);
0228 map_ME_ParticleNet_["lt_n"] = ibook.book1D("lt_n", "", 11, -0.5, 10.5);
0229 }
0230 if (doUnifiedParticleTransformerAK4_) {
0231 ibook.setCurrentFolder("Btag/TagInfo_pfUnifiedParticleTransformerAK4_" + partonFlavourLabel_);
0232 map_ME_UParT_["c_pf_btagPf_trackEtaRel"] = ibook.book1D("c_pf_btagPf_trackEtaRel", "", 50, 0., 10.);
0233 map_ME_UParT_["c_pf_btagPf_trackPtRel"] = ibook.book1D("c_pf_btagPf_trackPtRel", "", 100, 0., 5.);
0234 map_ME_UParT_["c_pf_btagPf_trackPPar"] = ibook.book1D("c_pf_btagPf_trackPPar", "", 100, 0., 500.);
0235 map_ME_UParT_["c_pf_btagPf_trackDeltaR"] = ibook.book1D("c_pf_btagPf_trackDeltaR", "", 50, 0., 1);
0236 map_ME_UParT_["c_pf_btagPf_trackPParRatio"] = ibook.book1D("c_pf_btagPf_trackPParRatio", "", 120, 0.4, 1.);
0237 map_ME_UParT_["c_pf_btagPf_trackSip2dVal"] = ibook.book1D("c_pf_btagPf_trackSip2dVal", "", 60, -0.15, 0.15);
0238 map_ME_UParT_["c_pf_btagPf_trackSip2dSig"] = ibook.book1D("c_pf_btagPf_trackSip2dSig", "", 100, -5., 15.);
0239 map_ME_UParT_["c_pf_btagPf_trackSip3dVal"] = ibook.book1D("c_pf_btagPf_trackSip3dVal", "", 60, -0.15, 0.15);
0240 map_ME_UParT_["c_pf_btagPf_trackSip3dSig"] = ibook.book1D("c_pf_btagPf_trackSip3dSig", "", 100, -5., 15.);
0241 map_ME_UParT_["c_pf_btagPf_trackJetDistVal"] = ibook.book1D("c_pf_btagPf_trackJetDistVal", "", 110, -1.0, 0.1);
0242 map_ME_UParT_["c_pf_btagPf_trackDecayLen"] = ibook.book1D("c_pf_btagPf_trackDecayLen", "", 50, 0., 50.);
0243 map_ME_UParT_["c_pf_ptrel"] = ibook.book1D("c_pf_ptrel", "", 100, -1.2, 0.2);
0244 map_ME_UParT_["c_pf_drminsv"] = ibook.book1D("c_pf_drminsv", "", 120, -0.5, 0.);
0245 map_ME_UParT_["c_pf_vtx_ass"] = ibook.book1D("c_pf_vtx_ass", "", 10, 0, 10);
0246 map_ME_UParT_["c_pf_puppiw"] = ibook.book1D("c_pf_puppiw", "", 20, 0., 1.);
0247 map_ME_UParT_["c_pf_chi2"] = ibook.book1D("c_pf_chi2", "", 15, 0., 15);
0248 map_ME_UParT_["c_pf_quality"] = ibook.book1D("c_pf_quality", "", 10, 0., 10);
0249 map_ME_UParT_["c_pf_charge"] = ibook.book1D("c_pf_charge", "", 3, -1.5, 1.5);
0250 map_ME_UParT_["c_pf_dz"] = ibook.book1D("c_pf_dz", "", 50, 0., 50.);
0251 map_ME_UParT_["c_pf_HadFrac"] = ibook.book1D("c_pf_HadFrac", "", 20, 0., 1.);
0252 map_ME_UParT_["c_pf_CaloFrac"] = ibook.book1D("c_pf_CaloFrac", "", 60, 0., 3.);
0253 map_ME_UParT_["c_pf_pdgID"] = ibook.book1D("c_pf_pdgID", "", 11, -0.5, 10.5);
0254 map_ME_UParT_["c_pf_lostInnerHits"] = ibook.book1D("c_pf_lostInnerHits", "", 11, -0.5, 10.5);
0255 map_ME_UParT_["c_pf_numberOfPixelHits"] = ibook.book1D("c_pf_numberOfPixelHits", "", 21, -0.5, 20.5);
0256 map_ME_UParT_["c_pf_numberOfStripHits"] = ibook.book1D("c_pf_numberOfStripHits", "", 21, -0.5, 20.5);
0257 map_ME_UParT_["lt_btagPf_trackEtaRel"] = ibook.book1D("lt_btagPf_trackEtaRel", "", 50, 0., 10.);
0258 map_ME_UParT_["lt_btagPf_trackPtRel"] = ibook.book1D("lt_btagPf_trackPtRel", "", 100, 0., 5.);
0259 map_ME_UParT_["lt_btagPf_trackPPar"] = ibook.book1D("lt_btagPf_trackPPar", "", 100, 0., 500.);
0260 map_ME_UParT_["lt_btagPf_trackDeltaR"] = ibook.book1D("lt_btagPf_trackDeltaR", "", 50, 0., 1);
0261 map_ME_UParT_["lt_btagPf_trackPParRatio"] = ibook.book1D("lt_btagPf_trackPParRatio", "", 150, 0.7, 1.);
0262 map_ME_UParT_["lt_btagPf_trackSip2dVal"] = ibook.book1D("lt_btagPf_trackSip2dVal", "", 60, -0.15, 0.15);
0263 map_ME_UParT_["lt_btagPf_trackSip2dSig"] = ibook.book1D("lt_btagPf_trackSip2dSig", "", 120, -5., 25.);
0264 map_ME_UParT_["lt_btagPf_trackSip3dVal"] = ibook.book1D("lt_btagPf_trackSip3dVal", "", 60, -0.15, 0.15);
0265 map_ME_UParT_["lt_btagPf_trackSip3dSig"] = ibook.book1D("lt_btagPf_trackSip3dSig", "", 120, -5., 25.);
0266 map_ME_UParT_["lt_btagPf_trackJetDistVal"] = ibook.book1D("lt_btagPf_trackJetDistVal", "", 110, -1.0, 0.1);
0267 map_ME_UParT_["lt_drminsv"] = ibook.book1D("lt_drminsv", "", 500, -0.5, 0.5);
0268 map_ME_UParT_["lt_charge"] = ibook.book1D("lt_charge", "", 3, -1.5, 1.5);
0269 map_ME_UParT_["lt_puppiw"] = ibook.book1D("lt_puppiw", "", 20, 0., 1.);
0270 map_ME_UParT_["lt_chi2"] = ibook.book1D("lt_chi2", "", 15, 0., 15.);
0271 map_ME_UParT_["lt_quality"] = ibook.book1D("lt_quality", "", 10, 0., 10);
0272 map_ME_UParT_["lt_lostInnerHits"] = ibook.book1D("lt_lostInnerHits", "", 11, -0.5, 10.5);
0273 map_ME_UParT_["lt_numberOfPixelHits"] = ibook.book1D("lt_numberOfPixelHits", "", 21, -0.5, 20.5);
0274 map_ME_UParT_["lt_numberOfStripHits"] = ibook.book1D("lt_numberOfStripHits", "", 21, -0.5, 20.5);
0275 map_ME_UParT_["n_pf_ptrel"] = ibook.book1D("n_pf_ptrel", "", 100, -1.2, 0.2);
0276 map_ME_UParT_["n_pf_etarel"] = ibook.book1D("n_pf_etarel", "", 40, -10., 10.);
0277 map_ME_UParT_["n_pf_phirel"] = ibook.book1D("n_pf_phirel", "", 40, -10., 10.);
0278 map_ME_UParT_["n_pf_deltaR"] = ibook.book1D("n_pf_deltaR", "", 50, -1., 0.);
0279 map_ME_UParT_["n_pf_isGamma"] = ibook.book1D("n_pf_isGamma", "", 2, -0.5, 1.5);
0280 map_ME_UParT_["n_pf_hadFrac"] = ibook.book1D("n_pf_hadFrac", "", 20, 0., 4.);
0281 map_ME_UParT_["n_pf_drminsv"] = ibook.book1D("n_pf_drminsv", "", 500, -0.5, 0.5);
0282 map_ME_UParT_["n_pf_puppiw"] = ibook.book1D("n_pf_puppiw", "", 20, 0., 1.);
0283 map_ME_UParT_["sv_pt"] = ibook.book1D("sv_pt", "", 50, 0., 200.);
0284 map_ME_UParT_["sv_deltaR"] = ibook.book1D("sv_deltaR", "", 100, -0.8, 0.2);
0285 map_ME_UParT_["sv_mass"] = ibook.book1D("sv_mass", "", 40, 0., 10.);
0286 map_ME_UParT_["sv_etarel"] = ibook.book1D("sv_etarel", "", 100, -1., 1.);
0287 map_ME_UParT_["sv_phirel"] = ibook.book1D("sv_phirel", "", 100, -1., 1.);
0288 map_ME_UParT_["sv_ntracks"] = ibook.book1D("sv_ntracks", "", 15, -0.5, 14.5);
0289 map_ME_UParT_["sv_chi2"] = ibook.book1D("sv_chi2", "", 40., 0., 20.);
0290 map_ME_UParT_["sv_normchi2"] = ibook.book1D("sv_normchi2", "", 40., 0., 20.);
0291 map_ME_UParT_["sv_dxy"] = ibook.book1D("sv_dxy", "", 100, -5., 5.);
0292 map_ME_UParT_["sv_dxysig"] = ibook.book1D("sv_dxysig", "", 120, 0., 30.);
0293 map_ME_UParT_["sv_d3d"] = ibook.book1D("sv_d3d", "", 100, 0., 5.);
0294 map_ME_UParT_["sv_d3dsig"] = ibook.book1D("sv_d3dsig", "", 120, 0., 30.);
0295 map_ME_UParT_["sv_costhetasvpv"] = ibook.book1D("sv_costhetasvpv", "", 100, -1., 1.);
0296 map_ME_UParT_["sv_enratio"] = ibook.book1D("sv_enratio", "", 100, 0., 1.);
0297 map_ME_UParT_["max_cpf_n"] = ibook.book1D("max_cpf_n", "", 31, -0.5, 30.5);
0298 map_ME_UParT_["max_lt_n"] = ibook.book1D("max_lt_n", "", 11, -0.5, 10.5);
0299 map_ME_UParT_["max_npf_n"] = ibook.book1D("max_npf_n", "", 31, -0.5, 30.5);
0300 map_ME_UParT_["max_sv_n"] = ibook.book1D("max_sv_n", "", 11, -0.5, 10.5);
0301 }
0302 }
0303
0304 void MiniAODTagInfoAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) {
0305
0306 edm::Handle<edm::View<reco::Jet>> jetCollection;
0307 iEvent.getByToken(jetToken_, jetCollection);
0308
0309
0310 std::vector<edm::Handle<edm::View<reco::BaseTagInfo>>> jetTagInfos;
0311 jetTagInfos.resize(tagInfoTokens_.size());
0312 for (size_t i = 0; i < tagInfoTokens_.size(); ++i) {
0313 iEvent.getByToken(tagInfoTokens_[i], jetTagInfos[i]);
0314 }
0315
0316
0317
0318
0319 size_t idx = 0;
0320 edm::View<reco::Jet>::const_iterator jet;
0321
0322 for (jet = jetCollection->begin(), idx = 0; jet != jetCollection->end(); ++jet, ++idx) {
0323 if (jet->pt() < ptMin_)
0324 continue;
0325 if (std::abs(jet->eta()) > absEtaMax_ || std::abs(jet->eta()) < absEtaMin_)
0326 continue;
0327
0328 edm::RefToBase<reco::Jet> jetRef = jetCollection->refAt(idx);
0329
0330 const pat::Jet* patjet = nullptr;
0331 patjet = dynamic_cast<const pat::Jet*>(&(*jet));
0332 if (patjet) {
0333 if (jetPartonFlavour_ == 5) {
0334 if (abs(patjet->partonFlavour()) != 5)
0335 continue;
0336 } else if (jetPartonFlavour_ == 4) {
0337 if (abs(patjet->partonFlavour()) != 4)
0338 continue;
0339 } else if (jetPartonFlavour_ == 1) {
0340 bool isLightJet = abs(patjet->partonFlavour()) >= 1 && abs(patjet->partonFlavour()) <= 3;
0341 bool isGluonJet = patjet->partonFlavour() == 21;
0342 bool isUndefJet = patjet->partonFlavour() == 0;
0343 if (!(isLightJet || isGluonJet || isUndefJet))
0344 continue;
0345 }
0346 }
0347
0348
0349
0350
0351 for (size_t k = 0; k < jetTagInfos.size(); ++k) {
0352 const edm::View<reco::BaseTagInfo>& taginfos = *jetTagInfos[k];
0353
0354
0355
0356
0357
0358 edm::Ptr<reco::BaseTagInfo> match;
0359
0360 if ((idx < taginfos.size()) && (taginfos[idx].jet() == jetRef)) {
0361 match = taginfos.ptrAt(idx);
0362 } else {
0363
0364 for (edm::View<reco::BaseTagInfo>::const_iterator itTI = taginfos.begin(), edTI = taginfos.end(); itTI != edTI;
0365 ++itTI) {
0366 if (itTI->jet() == jetRef) {
0367 match = taginfos.ptrAt(itTI - taginfos.begin());
0368 break;
0369 }
0370 }
0371 }
0372
0373
0374
0375 if (match.isNonnull()) {
0376 if (jetTagInfos_[k].find("pfDeepFlavour") != std::string::npos && doDeepJet_) {
0377 const reco::DeepFlavourTagInfo* taginfo = static_cast<const reco::DeepFlavourTagInfo*>(match.get());
0378 if (!taginfo) {
0379 throw cms::Exception("Configuration")
0380 << "MiniAODTagInfoAnalyzer: not of type DeepFlavourTagInfo. " << std::endl;
0381 }
0382 analyzeTagInfoDeepJet(taginfo);
0383 } else if (jetTagInfos_[k].find("pfParticleNetFromMiniAODAK4PuppiCentral") != std::string::npos &&
0384 doParticleNetCentral_) {
0385 const reco::DeepBoostedJetTagInfo* taginfo = static_cast<const reco::DeepBoostedJetTagInfo*>(match.get());
0386 if (!taginfo) {
0387 throw cms::Exception("Configuration")
0388 << "MiniAODTagInfoAnalyzer: not of type DeepBoostedJetTagInfo. " << std::endl;
0389 }
0390 analyzeTagInfoParticleNet(taginfo);
0391 } else if (jetTagInfos_[k].find("pfParticleNetFromMiniAODAK4PuppiForward") != std::string::npos &&
0392 doParticleNetForward_) {
0393 const reco::DeepBoostedJetTagInfo* taginfo = static_cast<const reco::DeepBoostedJetTagInfo*>(match.get());
0394 if (!taginfo) {
0395 throw cms::Exception("Configuration")
0396 << "MiniAODTagInfoAnalyzer: not of type DeepBoostedJetTagInfo. " << std::endl;
0397 }
0398 analyzeTagInfoParticleNet(taginfo);
0399 } else if (jetTagInfos_[k].find("pfUnifiedParticleTransformerAK4") != std::string::npos &&
0400 doUnifiedParticleTransformerAK4_) {
0401 const reco::UnifiedParticleTransformerAK4TagInfo* taginfo =
0402 static_cast<const reco::UnifiedParticleTransformerAK4TagInfo*>(match.get());
0403 if (!taginfo) {
0404 throw cms::Exception("Configuration")
0405 << "MiniAODTagInfoAnalyzer: not of type UnifiedParticleTransformerAK4TagInfo. " << std::endl;
0406 }
0407 analyzeTagInfoUnifiedParticleTransformerAK4(taginfo);
0408 }
0409 }
0410 }
0411 }
0412 }
0413
0414 void MiniAODTagInfoAnalyzer::analyzeTagInfoDeepJet(const reco::DeepFlavourTagInfo* taginfo) {
0415 const auto& features = taginfo->features();
0416
0417 size_t n_cpf_ = (unsigned int)25;
0418 size_t n_npf_ = (unsigned int)25;
0419 size_t n_sv_ = (unsigned int)4;
0420
0421
0422 auto max_c_pf_n = std::min(features.c_pf_features.size(), n_cpf_);
0423 for (std::size_t c_pf_n = 0; c_pf_n < max_c_pf_n; c_pf_n++) {
0424 const auto& c_pf_features = features.c_pf_features.at(c_pf_n);
0425 map_ME_DeepJet_["c_pf_btagPf_trackEtaRel"]->Fill(c_pf_features.btagPf_trackEtaRel);
0426 map_ME_DeepJet_["c_pf_btagPf_trackPtRel"]->Fill(c_pf_features.btagPf_trackPtRel);
0427 map_ME_DeepJet_["c_pf_btagPf_trackPPar"]->Fill(c_pf_features.btagPf_trackPPar);
0428 map_ME_DeepJet_["c_pf_btagPf_trackDeltaR"]->Fill(c_pf_features.btagPf_trackDeltaR);
0429 map_ME_DeepJet_["c_pf_btagPf_trackPParRatio"]->Fill(c_pf_features.btagPf_trackPParRatio);
0430 map_ME_DeepJet_["c_pf_btagPf_trackSip2dVal"]->Fill(c_pf_features.btagPf_trackSip2dVal);
0431 map_ME_DeepJet_["c_pf_btagPf_trackSip2dSig"]->Fill(c_pf_features.btagPf_trackSip2dSig);
0432 map_ME_DeepJet_["c_pf_btagPf_trackSip3dVal"]->Fill(c_pf_features.btagPf_trackSip3dVal);
0433 map_ME_DeepJet_["c_pf_btagPf_trackSip3dSig"]->Fill(c_pf_features.btagPf_trackSip3dSig);
0434 map_ME_DeepJet_["c_pf_btagPf_trackJetDistVal"]->Fill(c_pf_features.btagPf_trackJetDistVal);
0435 map_ME_DeepJet_["c_pf_ptrel"]->Fill(c_pf_features.ptrel);
0436 map_ME_DeepJet_["c_pf_drminsv"]->Fill(c_pf_features.drminsv);
0437 map_ME_DeepJet_["c_pf_vtx_ass"]->Fill(c_pf_features.vtx_ass);
0438 map_ME_DeepJet_["c_pf_puppiw"]->Fill(c_pf_features.puppiw);
0439 map_ME_DeepJet_["c_pf_chi2"]->Fill(c_pf_features.chi2);
0440 map_ME_DeepJet_["c_pf_quality"]->Fill(c_pf_features.quality);
0441 }
0442
0443 auto max_n_pf_n = std::min(features.n_pf_features.size(), n_npf_);
0444 for (std::size_t n_pf_n = 0; n_pf_n < max_n_pf_n; n_pf_n++) {
0445 const auto& n_pf_features = features.n_pf_features.at(n_pf_n);
0446 map_ME_DeepJet_["n_pf_ptrel"]->Fill(n_pf_features.ptrel);
0447 map_ME_DeepJet_["n_pf_deltaR"]->Fill(n_pf_features.deltaR);
0448 map_ME_DeepJet_["n_pf_isGamma"]->Fill(n_pf_features.isGamma);
0449 map_ME_DeepJet_["n_pf_hadFrac"]->Fill(n_pf_features.hadFrac);
0450 map_ME_DeepJet_["n_pf_drminsv"]->Fill(n_pf_features.drminsv);
0451 map_ME_DeepJet_["n_pf_puppiw"]->Fill(n_pf_features.puppiw);
0452 }
0453
0454 auto max_sv_n = std::min(features.sv_features.size(), n_sv_);
0455 for (std::size_t sv_n = 0; sv_n < max_sv_n; sv_n++) {
0456 const auto& sv_features = features.sv_features.at(sv_n);
0457 map_ME_DeepJet_["sv_pt"]->Fill(sv_features.pt);
0458 map_ME_DeepJet_["sv_deltaR"]->Fill(sv_features.deltaR);
0459 map_ME_DeepJet_["sv_mass"]->Fill(sv_features.mass);
0460 map_ME_DeepJet_["sv_ntracks"]->Fill(sv_features.ntracks);
0461 map_ME_DeepJet_["sv_chi2"]->Fill(sv_features.chi2);
0462 map_ME_DeepJet_["sv_normchi2"]->Fill(sv_features.normchi2);
0463 map_ME_DeepJet_["sv_dxy"]->Fill(sv_features.dxy);
0464 map_ME_DeepJet_["sv_dxysig"]->Fill(sv_features.dxysig);
0465 map_ME_DeepJet_["sv_d3d"]->Fill(sv_features.d3d);
0466 map_ME_DeepJet_["sv_d3dsig"]->Fill(sv_features.d3dsig);
0467 map_ME_DeepJet_["sv_costhetasvpv"]->Fill(sv_features.costhetasvpv);
0468 map_ME_DeepJet_["sv_enratio"]->Fill(sv_features.enratio);
0469 }
0470 map_ME_DeepJet_["max_cpf_n"]->Fill(max_c_pf_n);
0471 map_ME_DeepJet_["max_npf_n"]->Fill(max_n_pf_n);
0472 map_ME_DeepJet_["max_sv_n"]->Fill(max_sv_n);
0473 map_ME_DeepJet_["pv_n"]->Fill(features.npv);
0474 }
0475
0476 void MiniAODTagInfoAnalyzer::analyzeTagInfoParticleNet(const reco::DeepBoostedJetTagInfo* taginfo) {
0477 const auto& features = taginfo->features();
0478
0479 int nfeatures_pfcand = features.get("pfcand_mask").size();
0480 int nfeatures_sv = features.get("sv_mask").size();
0481 int nfeatures_lt = features.get("lt_mask").size();
0482
0483 for (int i = 0; i < nfeatures_pfcand; i++) {
0484 map_ME_ParticleNet_["pfcand_pt_log"]->Fill(features.get("jet_pfcand_pt_log")[i]);
0485 map_ME_ParticleNet_["pfcand_energy_log"]->Fill(features.get("jet_pfcand_energy_log")[i]);
0486 map_ME_ParticleNet_["pfcand_deta"]->Fill(features.get("jet_pfcand_deta")[i]);
0487 map_ME_ParticleNet_["pfcand_dphi"]->Fill(features.get("jet_pfcand_dphi")[i]);
0488 map_ME_ParticleNet_["pfcand_eta"]->Fill(features.get("jet_pfcand_eta")[i]);
0489 map_ME_ParticleNet_["pfcand_charge"]->Fill(features.get("jet_pfcand_charge")[i]);
0490 map_ME_ParticleNet_["pfcand_frompv"]->Fill(features.get("jet_pfcand_frompv")[i]);
0491 map_ME_ParticleNet_["pfcand_nlostinnerhits"]->Fill(features.get("jet_pfcand_nlostinnerhits")[i]);
0492 map_ME_ParticleNet_["pfcand_track_chi2"]->Fill(features.get("jet_pfcand_track_chi2")[i]);
0493 map_ME_ParticleNet_["pfcand_track_qual"]->Fill(features.get("jet_pfcand_track_qual")[i]);
0494 map_ME_ParticleNet_["pfcand_dz"]->Fill(features.get("jet_pfcand_dz")[i]);
0495 map_ME_ParticleNet_["pfcand_dzsig"]->Fill(features.get("jet_pfcand_dzsig")[i]);
0496 map_ME_ParticleNet_["pfcand_dxy"]->Fill(features.get("jet_pfcand_dxy")[i]);
0497 map_ME_ParticleNet_["pfcand_dxysig"]->Fill(features.get("jet_pfcand_dxysig")[i]);
0498 map_ME_ParticleNet_["pfcand_etarel"]->Fill(features.get("jet_pfcand_etarel")[i]);
0499 map_ME_ParticleNet_["pfcand_pperp_ratio"]->Fill(features.get("jet_pfcand_pperp_ratio")[i]);
0500 map_ME_ParticleNet_["pfcand_ppara_ratio"]->Fill(features.get("jet_pfcand_ppara_ratio")[i]);
0501 map_ME_ParticleNet_["pfcand_trackjet_d3d"]->Fill(features.get("jet_pfcand_trackjet_d3d")[i]);
0502 map_ME_ParticleNet_["pfcand_trackjet_d3dsig"]->Fill(features.get("jet_pfcand_trackjet_d3dsig")[i]);
0503 map_ME_ParticleNet_["pfcand_trackjet_dist"]->Fill(features.get("jet_pfcand_trackjet_dist")[i]);
0504 map_ME_ParticleNet_["pfcand_nhits"]->Fill(features.get("jet_pfcand_nhits")[i]);
0505 map_ME_ParticleNet_["pfcand_npixhits"]->Fill(features.get("jet_pfcand_npixhits")[i]);
0506 map_ME_ParticleNet_["pfcand_nstriphits"]->Fill(features.get("jet_pfcand_nstriphits")[i]);
0507 map_ME_ParticleNet_["pfcand_trackjet_decayL"]->Fill(features.get("jet_pfcand_trackjet_decayL")[i]);
0508 map_ME_ParticleNet_["pfcand_id"]->Fill(features.get("jet_pfcand_id")[i]);
0509 map_ME_ParticleNet_["pfcand_calofraction"]->Fill(features.get("jet_pfcand_calofraction")[i]);
0510 map_ME_ParticleNet_["pfcand_hcalfraction"]->Fill(features.get("jet_pfcand_hcalfraction")[i]);
0511 map_ME_ParticleNet_["pfcand_puppiw"]->Fill(features.get("jet_pfcand_puppiw")[i]);
0512 map_ME_ParticleNet_["pfcand_muon_id"]->Fill(features.get("jet_pfcand_muon_id")[i]);
0513 map_ME_ParticleNet_["pfcand_muon_isglobal"]->Fill(features.get("jet_pfcand_muon_isglobal")[i]);
0514 map_ME_ParticleNet_["pfcand_muon_segcomp"]->Fill(features.get("jet_pfcand_muon_segcomp")[i]);
0515 map_ME_ParticleNet_["pfcand_muon_chi2"]->Fill(features.get("jet_pfcand_muon_chi2")[i]);
0516 map_ME_ParticleNet_["pfcand_muon_nvalidhit"]->Fill(features.get("jet_pfcand_muon_nvalidhit")[i]);
0517 map_ME_ParticleNet_["pfcand_muon_nstation"]->Fill(features.get("jet_pfcand_muon_nstation")[i]);
0518 map_ME_ParticleNet_["pfcand_electron_detaIn"]->Fill(features.get("jet_pfcand_electron_detaIn")[i]);
0519 map_ME_ParticleNet_["pfcand_electron_dphiIn"]->Fill(features.get("jet_pfcand_electron_dphiIn")[i]);
0520 map_ME_ParticleNet_["pfcand_electron_sigIetaIeta"]->Fill(features.get("jet_pfcand_electron_sigIetaIeta")[i]);
0521 map_ME_ParticleNet_["pfcand_electron_sigIphiIphi"]->Fill(features.get("jet_pfcand_electron_sigIphiIphi")[i]);
0522 map_ME_ParticleNet_["pfcand_electron_r9"]->Fill(features.get("jet_pfcand_electron_r9")[i]);
0523 map_ME_ParticleNet_["pfcand_electron_convProb"]->Fill(features.get("jet_pfcand_electron_convProb")[i]);
0524 map_ME_ParticleNet_["pfcand_photon_sigIetaIeta"]->Fill(features.get("jet_pfcand_photon_sigIetaIeta")[i]);
0525 map_ME_ParticleNet_["pfcand_photon_r9"]->Fill(features.get("jet_pfcand_photon_r9")[i]);
0526 map_ME_ParticleNet_["pfcand_photon_eVeto"]->Fill(features.get("jet_pfcand_photon_eVeto")[i]);
0527 map_ME_ParticleNet_["pfcand_tau_signal"]->Fill(features.get("jet_pfcand_tau_signal")[i]);
0528 }
0529 for (int i = 0; i < nfeatures_sv; i++) {
0530 map_ME_ParticleNet_["sv_pt_log"]->Fill(features.get("jet_sv_pt_log")[i]);
0531 map_ME_ParticleNet_["sv_mass"]->Fill(features.get("jet_sv_mass")[i]);
0532 map_ME_ParticleNet_["sv_deta"]->Fill(features.get("jet_sv_deta")[i]);
0533 map_ME_ParticleNet_["sv_dphi"]->Fill(features.get("jet_sv_dphi")[i]);
0534 map_ME_ParticleNet_["sv_eta"]->Fill(features.get("jet_sv_eta")[i]);
0535 map_ME_ParticleNet_["sv_ntrack"]->Fill(features.get("jet_sv_ntrack")[i]);
0536 map_ME_ParticleNet_["sv_chi2"]->Fill(features.get("jet_sv_chi2")[i]);
0537 map_ME_ParticleNet_["sv_dxy"]->Fill(features.get("jet_sv_dxy")[i]);
0538 map_ME_ParticleNet_["sv_dxysig"]->Fill(features.get("jet_sv_dxysig")[i]);
0539 map_ME_ParticleNet_["sv_d3d"]->Fill(features.get("jet_sv_d3d")[i]);
0540 map_ME_ParticleNet_["sv_d3dsig"]->Fill(features.get("jet_sv_d3dsig")[i]);
0541 }
0542 for (int i = 0; i < nfeatures_lt; i++) {
0543 map_ME_ParticleNet_["losttrack_pt_log"]->Fill(features.get("jet_losttrack_pt_log")[i]);
0544 map_ME_ParticleNet_["losttrack_eta"]->Fill(features.get("jet_losttrack_eta")[i]);
0545 map_ME_ParticleNet_["losttrack_deta"]->Fill(features.get("jet_losttrack_deta")[i]);
0546 map_ME_ParticleNet_["losttrack_dphi"]->Fill(features.get("jet_losttrack_dphi")[i]);
0547 map_ME_ParticleNet_["losttrack_charge"]->Fill(features.get("jet_losttrack_charge")[i]);
0548 map_ME_ParticleNet_["losttrack_frompv"]->Fill(features.get("jet_losttrack_frompv")[i]);
0549 map_ME_ParticleNet_["losttrack_track_chi2"]->Fill(features.get("jet_losttrack_track_chi2")[i]);
0550 map_ME_ParticleNet_["losttrack_track_qual"]->Fill(features.get("jet_losttrack_track_qual")[i]);
0551 map_ME_ParticleNet_["losttrack_dz"]->Fill(features.get("jet_losttrack_dz")[i]);
0552 map_ME_ParticleNet_["losttrack_dxy"]->Fill(features.get("jet_losttrack_dxy")[i]);
0553 map_ME_ParticleNet_["losttrack_dzsig"]->Fill(features.get("jet_losttrack_dzsig")[i]);
0554 map_ME_ParticleNet_["losttrack_dxysig"]->Fill(features.get("jet_losttrack_dxysig")[i]);
0555 map_ME_ParticleNet_["losttrack_etarel"]->Fill(features.get("jet_losttrack_etarel")[i]);
0556 map_ME_ParticleNet_["losttrack_trackjet_d3d"]->Fill(features.get("jet_losttrack_trackjet_d3d")[i]);
0557 map_ME_ParticleNet_["losttrack_trackjet_d3dsig"]->Fill(features.get("jet_losttrack_trackjet_d3dsig")[i]);
0558 map_ME_ParticleNet_["losttrack_trackjet_dist"]->Fill(features.get("jet_losttrack_trackjet_dist")[i]);
0559 map_ME_ParticleNet_["losttrack_trackjet_decayL"]->Fill(features.get("jet_losttrack_trackjet_decayL")[i]);
0560 map_ME_ParticleNet_["losttrack_npixhits"]->Fill(features.get("jet_losttrack_npixhits")[i]);
0561 map_ME_ParticleNet_["losttrack_nstriphits"]->Fill(features.get("jet_losttrack_nstriphits")[i]);
0562 }
0563 map_ME_ParticleNet_["pfcand_n"]->Fill(nfeatures_pfcand);
0564 map_ME_ParticleNet_["sv_n"]->Fill(nfeatures_sv);
0565 map_ME_ParticleNet_["lt_n"]->Fill(nfeatures_lt);
0566 }
0567
0568 void MiniAODTagInfoAnalyzer::analyzeTagInfoUnifiedParticleTransformerAK4(
0569 const reco::UnifiedParticleTransformerAK4TagInfo* taginfo) {
0570 const auto& features = taginfo->features();
0571
0572 size_t n_cpf_ = (unsigned int)29;
0573 size_t n_lt_ = (unsigned int)5;
0574 size_t n_npf_ = (unsigned int)25;
0575 size_t n_sv_ = (unsigned int)5;
0576
0577 auto max_c_pf_n = std::min(features.c_pf_features.size(), (std::size_t)n_cpf_);
0578 for (std::size_t c_pf_n = 0; c_pf_n < max_c_pf_n; c_pf_n++) {
0579 const auto& c_pf_features = features.c_pf_features.at(c_pf_n);
0580 map_ME_UParT_["c_pf_btagPf_trackEtaRel"]->Fill(c_pf_features.btagPf_trackEtaRel);
0581 map_ME_UParT_["c_pf_btagPf_trackPtRel"]->Fill(c_pf_features.btagPf_trackPtRel);
0582 map_ME_UParT_["c_pf_btagPf_trackPPar"]->Fill(c_pf_features.btagPf_trackPPar);
0583 map_ME_UParT_["c_pf_btagPf_trackDeltaR"]->Fill(c_pf_features.btagPf_trackDeltaR);
0584 map_ME_UParT_["c_pf_btagPf_trackPParRatio"]->Fill(c_pf_features.btagPf_trackPParRatio);
0585 map_ME_UParT_["c_pf_btagPf_trackSip2dVal"]->Fill(c_pf_features.btagPf_trackSip2dVal);
0586 map_ME_UParT_["c_pf_btagPf_trackSip2dSig"]->Fill(c_pf_features.btagPf_trackSip2dSig);
0587 map_ME_UParT_["c_pf_btagPf_trackSip3dVal"]->Fill(c_pf_features.btagPf_trackSip3dVal);
0588 map_ME_UParT_["c_pf_btagPf_trackSip3dSig"]->Fill(c_pf_features.btagPf_trackSip3dSig);
0589 map_ME_UParT_["c_pf_btagPf_trackJetDistVal"]->Fill(c_pf_features.btagPf_trackJetDistVal);
0590 map_ME_UParT_["c_pf_btagPf_trackDecayLen"]->Fill(c_pf_features.btagPf_trackDecayLen);
0591 map_ME_UParT_["c_pf_ptrel"]->Fill(c_pf_features.ptrel);
0592 map_ME_UParT_["c_pf_drminsv"]->Fill(c_pf_features.drminsv);
0593 map_ME_UParT_["c_pf_vtx_ass"]->Fill(c_pf_features.vtx_ass);
0594 map_ME_UParT_["c_pf_puppiw"]->Fill(c_pf_features.puppiw);
0595 map_ME_UParT_["c_pf_chi2"]->Fill(c_pf_features.chi2);
0596 map_ME_UParT_["c_pf_quality"]->Fill(c_pf_features.quality);
0597 map_ME_UParT_["c_pf_charge"]->Fill(c_pf_features.charge);
0598 map_ME_UParT_["c_pf_dz"]->Fill(c_pf_features.dz);
0599 map_ME_UParT_["c_pf_HadFrac"]->Fill(c_pf_features.HadFrac);
0600 map_ME_UParT_["c_pf_CaloFrac"]->Fill(c_pf_features.CaloFrac);
0601 map_ME_UParT_["c_pf_pdgID"]->Fill(c_pf_features.pdgID);
0602 map_ME_UParT_["c_pf_lostInnerHits"]->Fill(c_pf_features.lostInnerHits);
0603 map_ME_UParT_["c_pf_numberOfPixelHits"]->Fill(c_pf_features.numberOfPixelHits);
0604 map_ME_UParT_["c_pf_numberOfStripHits"]->Fill(c_pf_features.numberOfStripHits);
0605 }
0606
0607 auto max_lt_n = std::min(features.lt_features.size(), (std::size_t)n_lt_);
0608 for (std::size_t lt_n = 0; lt_n < max_lt_n; lt_n++) {
0609 const auto& lt_features = features.lt_features.at(lt_n);
0610 map_ME_UParT_["lt_btagPf_trackEtaRel"]->Fill(lt_features.btagPf_trackEtaRel);
0611 map_ME_UParT_["lt_btagPf_trackPtRel"]->Fill(lt_features.btagPf_trackPtRel);
0612 map_ME_UParT_["lt_btagPf_trackPPar"]->Fill(lt_features.btagPf_trackPPar);
0613 map_ME_UParT_["lt_btagPf_trackDeltaR"]->Fill(lt_features.btagPf_trackDeltaR);
0614 map_ME_UParT_["lt_btagPf_trackPParRatio"]->Fill(lt_features.btagPf_trackPParRatio);
0615 map_ME_UParT_["lt_btagPf_trackSip2dVal"]->Fill(lt_features.btagPf_trackSip2dVal);
0616 map_ME_UParT_["lt_btagPf_trackSip2dSig"]->Fill(lt_features.btagPf_trackSip2dSig);
0617 map_ME_UParT_["lt_btagPf_trackSip3dVal"]->Fill(lt_features.btagPf_trackSip3dVal);
0618 map_ME_UParT_["lt_btagPf_trackSip3dSig"]->Fill(lt_features.btagPf_trackSip3dSig);
0619 map_ME_UParT_["lt_btagPf_trackJetDistVal"]->Fill(lt_features.btagPf_trackJetDistVal);
0620 map_ME_UParT_["lt_drminsv"]->Fill(lt_features.drminsv);
0621 map_ME_UParT_["lt_charge"]->Fill(lt_features.charge);
0622 map_ME_UParT_["lt_puppiw"]->Fill(lt_features.puppiw);
0623 map_ME_UParT_["lt_chi2"]->Fill(lt_features.chi2);
0624 map_ME_UParT_["lt_quality"]->Fill(lt_features.quality);
0625 map_ME_UParT_["lt_lostInnerHits"]->Fill(lt_features.lostInnerHits);
0626 map_ME_UParT_["lt_numberOfPixelHits"]->Fill(lt_features.numberOfPixelHits);
0627 map_ME_UParT_["lt_numberOfStripHits"]->Fill(lt_features.numberOfStripHits);
0628 }
0629
0630 auto max_n_pf_n = std::min(features.n_pf_features.size(), (std::size_t)n_npf_);
0631 for (std::size_t n_pf_n = 0; n_pf_n < max_n_pf_n; n_pf_n++) {
0632 const auto& n_pf_features = features.n_pf_features.at(n_pf_n);
0633 map_ME_UParT_["n_pf_ptrel"]->Fill(n_pf_features.ptrel);
0634 map_ME_UParT_["n_pf_etarel"]->Fill(n_pf_features.etarel);
0635 map_ME_UParT_["n_pf_phirel"]->Fill(n_pf_features.phirel);
0636 map_ME_UParT_["n_pf_deltaR"]->Fill(n_pf_features.deltaR);
0637 map_ME_UParT_["n_pf_isGamma"]->Fill(n_pf_features.isGamma);
0638 map_ME_UParT_["n_pf_hadFrac"]->Fill(n_pf_features.hadFrac);
0639 map_ME_UParT_["n_pf_drminsv"]->Fill(n_pf_features.drminsv);
0640 map_ME_UParT_["n_pf_puppiw"]->Fill(n_pf_features.puppiw);
0641 }
0642
0643 auto max_sv_n = std::min(features.sv_features.size(), (std::size_t)n_sv_);
0644 for (std::size_t sv_n = 0; sv_n < max_sv_n; sv_n++) {
0645 const auto& sv_features = features.sv_features.at(sv_n);
0646 map_ME_UParT_["sv_pt"]->Fill(sv_features.pt);
0647 map_ME_UParT_["sv_deltaR"]->Fill(sv_features.deltaR);
0648 map_ME_UParT_["sv_mass"]->Fill(sv_features.mass);
0649 map_ME_UParT_["sv_etarel"]->Fill(sv_features.etarel);
0650 map_ME_UParT_["sv_phirel"]->Fill(sv_features.phirel);
0651 map_ME_UParT_["sv_ntracks"]->Fill(sv_features.ntracks);
0652 map_ME_UParT_["sv_chi2"]->Fill(sv_features.chi2);
0653 map_ME_UParT_["sv_normchi2"]->Fill(sv_features.normchi2);
0654 map_ME_UParT_["sv_dxy"]->Fill(sv_features.dxy);
0655 map_ME_UParT_["sv_dxysig"]->Fill(sv_features.dxysig);
0656 map_ME_UParT_["sv_d3d"]->Fill(sv_features.d3d);
0657 map_ME_UParT_["sv_d3dsig"]->Fill(sv_features.d3dsig);
0658 map_ME_UParT_["sv_costhetasvpv"]->Fill(sv_features.costhetasvpv);
0659 map_ME_UParT_["sv_enratio"]->Fill(sv_features.enratio);
0660 }
0661
0662 map_ME_UParT_["max_cpf_n"]->Fill(max_c_pf_n);
0663 map_ME_UParT_["max_lt_n"]->Fill(max_lt_n);
0664 map_ME_UParT_["max_npf_n"]->Fill(max_n_pf_n);
0665 map_ME_UParT_["max_sv_n"]->Fill(max_sv_n);
0666 }
0667
0668
0669 DEFINE_FWK_MODULE(MiniAODTagInfoAnalyzer);