Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2025-03-02 23:54:08

0001 /*
0002   Scouting EGamma DQM core implementation.
0003 
0004   Description: ScoutingEGammaCollectionMonitoring is developed to enable us to
0005   monitor the comparison between pat::Object and Run3Scouting<Object>.
0006 
0007   Implementation:
0008      * Current runs on top of MINIAOD dataformat of the
0009 ScoutingEGammaCollectionMonitoring dataset.
0010      * Implemented only for electrons as of now.
0011 
0012   Authors: Ting-Hsiang Hsu, Abanti Ranadhir Sahasransu
0013 */
0014 
0015 // system includes
0016 #include <string>
0017 #include <vector>
0018 
0019 // user include files
0020 #include "DQMServices/Core/interface/DQMGlobalEDAnalyzer.h"
0021 #include "DataFormats/Common/interface/TriggerResults.h"
0022 #include "DataFormats/HLTReco/interface/TriggerEvent.h"
0023 #include "DataFormats/HLTReco/interface/TriggerEventWithRefs.h"
0024 #include "DataFormats/HLTReco/interface/TriggerObject.h"
0025 #include "DataFormats/HLTReco/interface/TriggerRefsCollections.h"
0026 #include "DataFormats/L1Trigger/interface/BXVector.h"
0027 #include "DataFormats/L1Trigger/interface/EGamma.h"
0028 #include "DataFormats/L1Trigger/interface/Muon.h"
0029 #include "DataFormats/Math/interface/deltaR.h"
0030 #include "DataFormats/PatCandidates/interface/Electron.h"
0031 #include "DataFormats/PatCandidates/interface/PackedTriggerPrescales.h"
0032 #include "DataFormats/PatCandidates/interface/TriggerObjectStandAlone.h"
0033 #include "DataFormats/Scouting/interface/Run3ScoutingElectron.h"
0034 #include "FWCore/Common/interface/TriggerNames.h"
0035 #include "FWCore/Framework/interface/Event.h"
0036 #include "FWCore/Framework/interface/Frameworkfwd.h"
0037 #include "FWCore/Framework/interface/MakerMacros.h"
0038 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0039 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0040 #include "HLTrigger/HLTcore/interface/HLTConfigProvider.h"
0041 
0042 #include "ScoutingDQMUtils.h"
0043 
0044 /////////////////////////
0045 //  Class declaration  //
0046 /////////////////////////
0047 
0048 struct kSctProbeKinematicHistos {
0049   dqm::reco::MonitorElement* hPt_Barrel;
0050   dqm::reco::MonitorElement* hPt_Endcap;
0051   dqm::reco::MonitorElement* hEta;
0052   dqm::reco::MonitorElement* hEtavPhi;
0053   dqm::reco::MonitorElement* hPhi;
0054   dqm::reco::MonitorElement* hHoverE_Barrel;
0055   dqm::reco::MonitorElement* hHoverE_Endcap;
0056   dqm::reco::MonitorElement* hOoEMOoP_Barrel;
0057   dqm::reco::MonitorElement* hOoEMOoP_Endcap;
0058   dqm::reco::MonitorElement* hdPhiIn_Barrel;
0059   dqm::reco::MonitorElement* hdPhiIn_Endcap;
0060   dqm::reco::MonitorElement* hdEtaIn_Barrel;
0061   dqm::reco::MonitorElement* hdEtaIn_Endcap;
0062   dqm::reco::MonitorElement* hSigmaIetaIeta_Barrel;
0063   dqm::reco::MonitorElement* hSigmaIetaIeta_Endcap;
0064   dqm::reco::MonitorElement* hMissingHits_Barrel;
0065   dqm::reco::MonitorElement* hMissingHits_Endcap;
0066   dqm::reco::MonitorElement* hTrackfbrem_Barrel;
0067   dqm::reco::MonitorElement* hTrackfbrem_Endcap;
0068   dqm::reco::MonitorElement* hTrack_pt_Barrel;
0069   dqm::reco::MonitorElement* hTrack_pt_Endcap;
0070   dqm::reco::MonitorElement* hTrack_pMode_Barrel;
0071   dqm::reco::MonitorElement* hTrack_pMode_Endcap;
0072   dqm::reco::MonitorElement* hTrack_etaMode_Barrel;
0073   dqm::reco::MonitorElement* hTrack_etaMode_Endcap;
0074   dqm::reco::MonitorElement* hTrack_phiMode_Barrel;
0075   dqm::reco::MonitorElement* hTrack_phiMode_Endcap;
0076   dqm::reco::MonitorElement* hTrack_qoverpModeError_Barrel;
0077   dqm::reco::MonitorElement* hTrack_qoverpModeError_Endcap;
0078   dqm::reco::MonitorElement* hRelEcalIsolation_Barrel;
0079   dqm::reco::MonitorElement* hRelEcalIsolation_Endcap;
0080   dqm::reco::MonitorElement* hRelHcalIsolation_Barrel;
0081   dqm::reco::MonitorElement* hRelHcalIsolation_Endcap;
0082   dqm::reco::MonitorElement* hRelTrackIsolation_Barrel;
0083   dqm::reco::MonitorElement* hRelTrackIsolation_Endcap;
0084   dqm::reco::MonitorElement* hInvMass;
0085   dqm::reco::MonitorElement* hPt_Barrel_passID;
0086   dqm::reco::MonitorElement* hPt_Endcap_passID;
0087   dqm::reco::MonitorElement* hPt_Barrel_passDSTsingleEG;
0088   dqm::reco::MonitorElement* hPt_Endcap_passDSTsingleEG;
0089   dqm::reco::MonitorElement* hPt_Barrel_passDSTdoubleEG;
0090   dqm::reco::MonitorElement* hPt_Endcap_passDSTdoubleEG;
0091 };
0092 
0093 struct kSctTagProbeHistos {
0094   kSctProbeKinematicHistos resonanceZ;
0095   kSctProbeKinematicHistos resonanceJ;
0096   kSctProbeKinematicHistos resonanceY;
0097   kSctProbeKinematicHistos resonanceAll;
0098 };
0099 
0100 class ScoutingElectronTagProbeAnalyzer : public DQMGlobalEDAnalyzer<kSctTagProbeHistos> {
0101 public:
0102   explicit ScoutingElectronTagProbeAnalyzer(const edm::ParameterSet& conf);
0103   ~ScoutingElectronTagProbeAnalyzer() override = default;
0104   static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
0105 
0106 private:
0107   void dqmAnalyze(const edm::Event& e, const edm::EventSetup& c, kSctTagProbeHistos const&) const override;
0108 
0109   void bookHistograms(DQMStore::IBooker&, edm::Run const&, edm::EventSetup const&, kSctTagProbeHistos&) const override;
0110 
0111   void bookHistograms_resonance(
0112       DQMStore::IBooker&, edm::Run const&, edm::EventSetup const&, kSctProbeKinematicHistos&, const std::string&) const;
0113 
0114   void fillHistograms_resonance(const kSctProbeKinematicHistos& histos,
0115                                 const Run3ScoutingElectron& el,
0116                                 const float inv_mass,
0117                                 const trigger::TriggerObjectCollection* legObjectsCollection) const;
0118 
0119   bool scoutingElectron_passHLT(const Run3ScoutingElectron& el,
0120                                 const trigger::TriggerObjectCollection& legObjects) const;
0121 
0122   // --------------------- member data  ----------------------
0123   std::string outputInternalPath_;
0124 
0125   const edm::EDGetToken triggerResultsToken_;
0126   const edm::EDGetToken triggerSummaryToken_;
0127   const edm::EDGetTokenT<pat::TriggerObjectStandAloneCollection> triggerObjects_;
0128   const std::vector<std::string> filterToMatch_;
0129 
0130   const edm::EDGetTokenT<std::vector<pat::Electron>> electronCollection_;
0131   const edm::EDGetTokenT<std::vector<Run3ScoutingElectron>> scoutingElectronCollection_;
0132 };
0133 
0134 ScoutingElectronTagProbeAnalyzer::ScoutingElectronTagProbeAnalyzer(const edm::ParameterSet& iConfig)
0135     : outputInternalPath_(iConfig.getParameter<std::string>("OutputInternalPath")),
0136       triggerResultsToken_(consumes<edm::TriggerResults>(iConfig.getParameter<edm::InputTag>("TriggerResultTag"))),
0137       triggerObjects_(
0138           consumes<pat::TriggerObjectStandAloneCollection>(iConfig.getParameter<edm::InputTag>("TriggerObjects"))),
0139       filterToMatch_(iConfig.getParameter<std::vector<std::string>>("FilterToMatch")),
0140       electronCollection_(
0141           consumes<std::vector<pat::Electron>>(iConfig.getParameter<edm::InputTag>("ElectronCollection"))),
0142       scoutingElectronCollection_(consumes<std::vector<Run3ScoutingElectron>>(
0143           iConfig.getParameter<edm::InputTag>("ScoutingElectronCollection"))) {}
0144 
0145 void ScoutingElectronTagProbeAnalyzer::dqmAnalyze(edm::Event const& iEvent,
0146                                                   edm::EventSetup const& iSetup,
0147                                                   kSctTagProbeHistos const& histos) const {
0148   edm::Handle<std::vector<pat::Electron>> patEls;
0149   iEvent.getByToken(electronCollection_, patEls);
0150   if (patEls.failedToGet()) {
0151     edm::LogWarning("ScoutingMonitoring") << "pat::Electron collection not found.";
0152     return;
0153   }
0154 
0155   edm::Handle<std::vector<Run3ScoutingElectron>> sctEls;
0156   iEvent.getByToken(scoutingElectronCollection_, sctEls);
0157   if (sctEls.failedToGet()) {
0158     edm::LogWarning("ScoutingMonitoring") << "Run3ScoutingElectron collection not found.";
0159     return;
0160   }
0161 
0162   // Trigger
0163   edm::Handle<edm::TriggerResults> triggerResults;
0164   edm::Handle<pat::TriggerObjectStandAloneCollection> triggerObjects;
0165   iEvent.getByToken(triggerResultsToken_, triggerResults);
0166   iEvent.getByToken(triggerObjects_, triggerObjects);
0167 
0168   std::vector<std::string> filterToMatch = {"hltDoubleEG11CaloIdLHEFilter", "hltEG30EBTightIDTightIsoTrackIsoFilter"};
0169   size_t numberOfFilters = filterToMatch.size();
0170   trigger::TriggerObjectCollection* legObjects = new trigger::TriggerObjectCollection[numberOfFilters];
0171   for (size_t iteFilter = 0; iteFilter < filterToMatch.size(); iteFilter++) {
0172     std::string filterTag = filterToMatch.at(iteFilter);
0173     for (pat::TriggerObjectStandAlone obj : *triggerObjects) {
0174       obj.unpackNamesAndLabels(iEvent, *triggerResults);
0175       if (obj.hasFilterLabel(filterTag)) {
0176         legObjects[iteFilter].push_back(obj);
0177       }
0178     }
0179   }
0180 
0181   edm::LogInfo("ScoutingMonitoring") << "Process pat::Electrons: " << patEls->size();
0182   edm::LogInfo("ScoutingMonitoring") << "Process Run3ScoutingElectrons: " << sctEls->size();
0183 
0184   for (const auto& sct_el : *sctEls) {
0185     if (!scoutingDQMUtils::scoutingElectronID(sct_el))
0186       continue;
0187     edm::LogInfo("ScoutingElectronTagProbeAnalyzer") << "Process Run3ScoutingElectrons: " << sct_el.sigmaIetaIeta();
0188 
0189     math::PtEtaPhiMLorentzVector tag_sct_el(sct_el.pt(), sct_el.eta(), sct_el.phi(), sct_el.m());
0190     for (const auto& sct_el_second : *sctEls) {
0191       if (&sct_el_second == &sct_el)
0192         continue;
0193       math::PtEtaPhiMLorentzVector probe_sct_el(
0194           sct_el_second.pt(), sct_el_second.eta(), sct_el_second.phi(), sct_el_second.m());
0195       float invMass = (tag_sct_el + probe_sct_el).mass();
0196       edm::LogInfo("ScoutingMonitoring") << "Inv Mass: " << invMass;
0197       if ((80 < invMass) && (invMass < 100)) {
0198         fillHistograms_resonance(histos.resonanceZ, sct_el_second, invMass, legObjects);
0199         fillHistograms_resonance(histos.resonanceAll, sct_el_second, invMass, legObjects);
0200       }
0201       if ((2.8 < invMass) && (invMass < 3.8)) {
0202         fillHistograms_resonance(histos.resonanceJ, sct_el_second, invMass,
0203                                  legObjects);  // J/Psi mass: 3.3 +/- 0.2 GeV
0204         fillHistograms_resonance(histos.resonanceAll, sct_el_second, invMass, legObjects);
0205       }
0206       if ((9.0 < invMass) && (invMass < 12.6)) {
0207         fillHistograms_resonance(histos.resonanceY,
0208                                  sct_el_second,
0209                                  invMass,
0210                                  legObjects);  // Y mass: 9.8 +/- 0.4 GeV & 10.6 +/- 1 GeV
0211         fillHistograms_resonance(histos.resonanceAll, sct_el_second, invMass, legObjects);
0212       }
0213     }
0214   }
0215 }
0216 
0217 bool ScoutingElectronTagProbeAnalyzer::scoutingElectron_passHLT(
0218     const Run3ScoutingElectron& el, const trigger::TriggerObjectCollection& legObjects) const {
0219   bool foundTheLeg = false;
0220   for (unsigned int i = 0; i < legObjects.size(); i++) {
0221     float delR2 = deltaR2(legObjects.at(i).eta(), legObjects.at(i).phi(), el.eta(), el.phi());
0222     if (delR2 < 0.01) {
0223       foundTheLeg = true;
0224       break;
0225     }
0226   }
0227   return foundTheLeg;
0228 }
0229 
0230 void ScoutingElectronTagProbeAnalyzer::fillHistograms_resonance(
0231     const kSctProbeKinematicHistos& histos,
0232     const Run3ScoutingElectron& el,
0233     const float inv_mass,
0234     const trigger::TriggerObjectCollection* legObjectsCollection) const {
0235   histos.hEta->Fill(el.eta());
0236   histos.hPhi->Fill(el.phi());
0237   histos.hInvMass->Fill(inv_mass);
0238 
0239   if (fabs(el.eta()) < 1.5) {
0240     histos.hPt_Barrel->Fill(el.pt());
0241     if (scoutingDQMUtils::scoutingElectronID(el))
0242       histos.hPt_Barrel_passID->Fill(el.pt());
0243     if (scoutingElectron_passHLT(el, legObjectsCollection[0]))
0244       histos.hPt_Barrel_passDSTdoubleEG->Fill(el.pt());
0245     if (scoutingElectron_passHLT(el, legObjectsCollection[1]))
0246       histos.hPt_Barrel_passDSTsingleEG->Fill(el.pt());
0247     histos.hHoverE_Barrel->Fill(el.hOverE());
0248     histos.hOoEMOoP_Barrel->Fill(el.ooEMOop());
0249     histos.hdPhiIn_Barrel->Fill(fabs(el.dPhiIn()));
0250     histos.hdEtaIn_Barrel->Fill(fabs(el.dEtaIn()));
0251     histos.hSigmaIetaIeta_Barrel->Fill(el.sigmaIetaIeta());
0252     histos.hMissingHits_Barrel->Fill(el.missingHits());
0253     histos.hTrackfbrem_Barrel->Fill(el.trackfbrem());
0254     histos.hRelEcalIsolation_Barrel->Fill(el.ecalIso() / el.pt());
0255     histos.hRelHcalIsolation_Barrel->Fill(el.hcalIso() / el.pt());
0256     histos.hRelTrackIsolation_Barrel->Fill(el.trackIso() / el.pt());
0257     for (const auto& trk : el.trkpt()) {
0258       histos.hTrack_pt_Barrel->Fill(trk);
0259     }
0260     for (const auto& trk : el.trkpMode()) {
0261       histos.hTrack_pMode_Barrel->Fill(trk);
0262     }
0263     for (const auto& trk : el.trketaMode()) {
0264       histos.hTrack_etaMode_Barrel->Fill(trk);
0265     }
0266     for (const auto& trk : el.trkphiMode()) {
0267       histos.hTrack_phiMode_Barrel->Fill(trk);
0268     }
0269     for (const auto& trk : el.trkqoverpModeError()) {
0270       histos.hTrack_qoverpModeError_Barrel->Fill(trk);
0271     }
0272   } else {
0273     histos.hPt_Endcap->Fill(el.pt());
0274     if (scoutingDQMUtils::scoutingElectronID(el))
0275       histos.hPt_Endcap_passID->Fill(el.pt());
0276     if (scoutingElectron_passHLT(el, legObjectsCollection[0]))
0277       histos.hPt_Endcap_passDSTdoubleEG->Fill(el.pt());
0278     if (scoutingElectron_passHLT(el, legObjectsCollection[1]))
0279       histos.hPt_Endcap_passDSTsingleEG->Fill(el.pt());
0280     histos.hHoverE_Endcap->Fill(el.hOverE());
0281     histos.hOoEMOoP_Endcap->Fill(el.ooEMOop());
0282     histos.hdPhiIn_Endcap->Fill(fabs(el.dPhiIn()));
0283     histos.hdEtaIn_Endcap->Fill(fabs(el.dEtaIn()));
0284     histos.hSigmaIetaIeta_Endcap->Fill(el.sigmaIetaIeta());
0285     histos.hMissingHits_Endcap->Fill(el.missingHits());
0286     histos.hTrackfbrem_Endcap->Fill(el.trackfbrem());
0287     histos.hRelEcalIsolation_Endcap->Fill(el.ecalIso() / el.pt());
0288     histos.hRelHcalIsolation_Endcap->Fill(el.hcalIso() / el.pt());
0289     histos.hRelTrackIsolation_Endcap->Fill(el.trackIso() / el.pt());
0290     for (const auto& trk : el.trkpt()) {
0291       histos.hTrack_pt_Endcap->Fill(trk);
0292     }
0293     for (const auto& trk : el.trkpMode()) {
0294       histos.hTrack_pMode_Endcap->Fill(trk);
0295     }
0296     for (const auto& trk : el.trketaMode()) {
0297       histos.hTrack_etaMode_Endcap->Fill(trk);
0298     }
0299     for (const auto& trk : el.trkphiMode()) {
0300       histos.hTrack_phiMode_Endcap->Fill(trk);
0301     }
0302     for (const auto& trk : el.trkqoverpModeError()) {
0303       histos.hTrack_qoverpModeError_Endcap->Fill(trk);
0304     }
0305   }
0306 }
0307 
0308 void ScoutingElectronTagProbeAnalyzer::bookHistograms(DQMStore::IBooker& ibook,
0309                                                       edm::Run const& run,
0310                                                       edm::EventSetup const& iSetup,
0311                                                       kSctTagProbeHistos& histos) const {
0312   ibook.setCurrentFolder(outputInternalPath_);
0313   bookHistograms_resonance(ibook, run, iSetup, histos.resonanceZ, "resonanceZ");
0314   bookHistograms_resonance(ibook, run, iSetup, histos.resonanceJ, "resonanceJ");
0315   bookHistograms_resonance(ibook, run, iSetup, histos.resonanceY, "resonanceY");
0316   bookHistograms_resonance(ibook, run, iSetup, histos.resonanceAll, "resonanceAll");
0317 }
0318 
0319 void ScoutingElectronTagProbeAnalyzer::bookHistograms_resonance(DQMStore::IBooker& ibook,
0320                                                                 edm::Run const& run,
0321                                                                 edm::EventSetup const& iSetup,
0322                                                                 kSctProbeKinematicHistos& histos,
0323                                                                 const std::string& name) const {
0324   ibook.setCurrentFolder(outputInternalPath_);
0325   histos.hPt_Barrel =
0326       ibook.book1D(name + "_Probe_sctElectron_Pt_Barrel", name + "_Probe_sctElectron_Pt_Barrel", 500, 0, 500);
0327   histos.hPt_Endcap =
0328       ibook.book1D(name + "_Probe_sctElectron_Pt_Endcap", name + "_Probe_sctElectron_Pt_Endcap", 500, 0, 500);
0329 
0330   histos.hEta = ibook.book1D(name + "_Probe_sctElectron_Eta", name + "_Probe_sctElectron_Eta", 100, -5.0, 5.0);
0331   histos.hPhi = ibook.book1D(name + "_Probe_sctElectron_Phi", name + "_Probe_sctElectron_Phi", 100, -3.3, 3.3);
0332 
0333   histos.hHoverE_Barrel =
0334       ibook.book1D(name + "_Probe_sctElectron_HoverE_Barrel", name + "_Probe_sctElectron_HoverE_Barrel", 500, 0, 0.5);
0335   histos.hHoverE_Endcap =
0336       ibook.book1D(name + "_Probe_sctElectron_HoverE_Endcap", name + "_Probe_sctElectron_HoverE_Endcap", 500, 0, 0.5);
0337 
0338   histos.hOoEMOoP_Barrel = ibook.book1D(
0339       name + "_Probe_sctElectron_OoEMOoP_Barrel", name + "_Probe_sctElectron_OoEMOoP_Barrel", 500, -0.2, 0.2);
0340   histos.hOoEMOoP_Endcap = ibook.book1D(
0341       name + "_Probe_sctElectron_OoEMOoP_Endcap", name + "_Probe_sctElectron_OoEMOoP_Endcap", 500, -0.2, 0.2);
0342 
0343   histos.hdPhiIn_Barrel =
0344       ibook.book1D(name + "_Probe_sctElectron_dPhiIn_Barrel", name + "_Probe_sctElectron_dPhiIn_Barrel", 100, 0, 0.1);
0345   histos.hdPhiIn_Endcap =
0346       ibook.book1D(name + "_Probe_sctElectron_dPhiIn_Endcap", name + "_Probe_sctElectron_dPhiIn_Endcap", 100, 0, 0.1);
0347 
0348   histos.hdEtaIn_Barrel =
0349       ibook.book1D(name + "_Probe_sctElectron_dEtaIn_Barrel", name + "_Probe_sctElectron_dEtaIn_Barrel", 100, 0, 0.1);
0350   histos.hdEtaIn_Endcap =
0351       ibook.book1D(name + "_Probe_sctElectron_dEtaIn_Endcap", name + "_Probe_sctElectron_dEtaIn_Endcap", 100, 0, 0.1);
0352 
0353   histos.hSigmaIetaIeta_Barrel = ibook.book1D(
0354       name + "_Probe_sctElectron_SigmaIetaIeta_Barrel", name + "_Probe_sctElectron_SigmaIetaIeta_Barrel", 500, 0, 0.05);
0355   histos.hSigmaIetaIeta_Endcap = ibook.book1D(
0356       name + "_Probe_sctElectron_SigmaIetaIeta_Endcap", name + "_Probe_sctElectron_SigmaIetaIeta_Endcap", 500, 0, 0.05);
0357 
0358   histos.hMissingHits_Barrel = ibook.book1D(
0359       name + "_Probe_sctElectron_MissingHits_Barrel", name + "_Probe_sctElectron_MissingHits_Barrel", 21, -0.5, 20.5);
0360   histos.hMissingHits_Endcap = ibook.book1D(
0361       name + "_Probe_sctElectron_MissingHits_Endcap", name + "_Probe_sctElectron_MissingHits_Endcap", 21, -0.5, 20.5);
0362 
0363   histos.hTrackfbrem_Barrel = ibook.book1D(
0364       name + "_Probe_sctElectron_Trackfbrem_Barrel", name + "_Probe_sctElectron_Trackfbrem_Barrel", 100, 0, 1.0);
0365   histos.hTrackfbrem_Endcap = ibook.book1D(
0366       name + "_Probe_sctElectron_Trackfbrem_Endcap", name + "_Probe_sctElectron_Trackfbrem_Endcap", 100, 0, 1.0);
0367 
0368   histos.hTrack_pt_Barrel = ibook.book1D(
0369       name + "_Probe_sctElectron_Track_pt_Barrel", name + "_Probe_sctElectron_Track_pt_Barrel", 200, 0, 100.0);
0370   histos.hTrack_pt_Endcap = ibook.book1D(
0371       name + "_Probe_sctElectron_Track_pt_Endcap", name + "_Probe_sctElectron_Track_pt_Endcap", 200, 0, 100.0);
0372 
0373   histos.hTrack_pMode_Barrel = ibook.book1D(
0374       name + "_Probe_sctElectron_Track_pMode_Barrel", name + "_Probe_sctElectron_Track_pMode_Barrel", 50, -0.5, 49.5);
0375   histos.hTrack_pMode_Endcap = ibook.book1D(
0376       name + "_Probe_sctElectron_Track_pMode_Endcap", name + "_Probe_sctElectron_Track_pMode_Endcap", 50, -0.5, 49.5);
0377 
0378   histos.hTrack_etaMode_Barrel = ibook.book1D(
0379       name + "_Probe_sctElectron_Track_etaMode_Barrel", name + "_Probe_sctElectron_Track_etaMode_Barrel", 26, -6.5, 6.5);
0380   histos.hTrack_etaMode_Endcap = ibook.book1D(
0381       name + "_Probe_sctElectron_Track_etaMode_Endcap", name + "_Probe_sctElectron_Track_etaMode_Endcap", 26, -6.5, 6.5);
0382 
0383   histos.hTrack_phiMode_Barrel = ibook.book1D(
0384       name + "_Probe_sctElectron_Track_phiMode_Barrel", name + "_Probe_sctElectron_Track_phiMode_Barrel", 18, -4.5, 4.5);
0385   histos.hTrack_phiMode_Endcap = ibook.book1D(
0386       name + "_Probe_sctElectron_Track_phiMode_Endcap", name + "_Probe_sctElectron_Track_phiMode_Endcap", 18, -4.5, 4.5);
0387 
0388   histos.hTrack_qoverpModeError_Barrel = ibook.book1D(name + "_Probe_sctElectron_Track_qoverpModeError_Barrel",
0389                                                       name + "_Probe_sctElectron_Track_qoverpModeError_Barrel",
0390                                                       36,
0391                                                       -4.5,
0392                                                       4.5);
0393   histos.hTrack_qoverpModeError_Endcap = ibook.book1D(name + "_Probe_sctElectron_Track_qoverpModeError_Endcap",
0394                                                       name + "_Probe_sctElectron_Track_qoverpModeError_Endcap",
0395                                                       36,
0396                                                       -4.5,
0397                                                       4.5);
0398 
0399   histos.hRelEcalIsolation_Barrel = ibook.book1D(name + "_Probe_sctElectron_RelEcalIsolation_Barrel",
0400                                                  name + "_Probe_sctElectron_RelEcalIsolation_Barrel",
0401                                                  100,
0402                                                  0,
0403                                                  1.0);
0404   histos.hRelEcalIsolation_Endcap = ibook.book1D(name + "_Probe_sctElectron_RelEcalIsolation_Endcap",
0405                                                  name + "_Probe_sctElectron_RelEcalIsolation_Endcap",
0406                                                  100,
0407                                                  0,
0408                                                  1.0);
0409 
0410   histos.hRelHcalIsolation_Barrel = ibook.book1D(name + "_Probe_sctElectron_RelHcalIsolation_Barrel",
0411                                                  name + "_Probe_sctElectron_RelHcalIsolation_Barrel",
0412                                                  100,
0413                                                  0,
0414                                                  1.0);
0415   histos.hRelHcalIsolation_Endcap = ibook.book1D(name + "_Probe_sctElectron_RelHcalIsolation_Endcap",
0416                                                  name + "_Probe_sctElectron_RelHcalIsolation_Endcap",
0417                                                  100,
0418                                                  0,
0419                                                  1.0);
0420 
0421   histos.hRelTrackIsolation_Barrel = ibook.book1D(name + "_Probe_sctElectron_RelTrackIsolation_Barrel",
0422                                                   name + "_Probe_sctElectron_RelTrackIsolation_Barrel",
0423                                                   100,
0424                                                   0,
0425                                                   1.0);
0426   histos.hRelTrackIsolation_Endcap = ibook.book1D(name + "_Probe_sctElectron_RelTrackIsolation_Endcap",
0427                                                   name + "_Probe_sctElectron_RelTrackIsolation_Endcap",
0428                                                   100,
0429                                                   0,
0430                                                   1.0);
0431   histos.hInvMass =
0432       ibook.book1D(name + "_sctElectron_Invariant_Mass", name + "_sctElectron_Invariant_Mass", 800, 0, 200);
0433 
0434   histos.hPt_Barrel_passID = ibook.book1D(
0435       name + "_Probe_sctElectron_Pt_Barrel_passID", name + "_Probe_sctElectron_Pt_Barrel_passID", 500, 0, 500);
0436   histos.hPt_Endcap_passID = ibook.book1D(
0437       name + "_Probe_sctElectron_Pt_Endcap_passID", name + "_Probe_sctElectron_Pt_Endcap_passID", 500, 0, 500);
0438   histos.hPt_Barrel_passDSTsingleEG = ibook.book1D(name + "_Probe_sctElectron_Pt_Barrel_passDSTsingleEG",
0439                                                    name + "_Probe_sctElectron_Pt_Barrel_passDSTsingleEG",
0440                                                    500,
0441                                                    0,
0442                                                    500);
0443   histos.hPt_Endcap_passDSTsingleEG = ibook.book1D(name + "_Probe_sctElectron_Pt_Endcap_passDSTsingleEG",
0444                                                    name + "_Probe_sctElectron_Pt_Endcap_passDSTsingleEG",
0445                                                    500,
0446                                                    0,
0447                                                    500);
0448   histos.hPt_Barrel_passDSTdoubleEG = ibook.book1D(name + "_Probe_sctElectron_Pt_Barrel_passDSTdoubleEG",
0449                                                    name + "_Probe_sctElectron_Pt_Barrel_passDSTdoubleEG",
0450                                                    500,
0451                                                    0,
0452                                                    500);
0453   histos.hPt_Endcap_passDSTdoubleEG = ibook.book1D(name + "_Probe_sctElectron_Pt_Endcap_passDSTdoubleEG",
0454                                                    name + "_Probe_sctElectron_Pt_Endcap_passDSTdoubleEG",
0455                                                    500,
0456                                                    0,
0457                                                    500);
0458 }
0459 
0460 // ------------ method fills 'descriptions' with the allowed parameters for the
0461 // module  ------------
0462 void ScoutingElectronTagProbeAnalyzer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
0463   edm::ParameterSetDescription desc;
0464   desc.add<std::string>("OutputInternalPath", "MY_FOLDER");
0465   desc.add<edm::InputTag>("TriggerResultTag", edm::InputTag("TriggerResults", "", "HLT"));
0466   desc.add<std::vector<std::string>>("FilterToMatch",
0467                                      std::vector<std::string>{"hltPreDSTHLTMuonRun3PFScoutingPixelTracking"});
0468   desc.add<edm::InputTag>("TriggerObjects", edm::InputTag("slimmedPatTrigger"));
0469   desc.add<edm::InputTag>("ElectronCollection", edm::InputTag("slimmedElectrons"));
0470   desc.add<edm::InputTag>("ScoutingElectronCollection", edm::InputTag("Run3ScoutingElectrons"));
0471   descriptions.addWithDefaultLabel(desc);
0472 }
0473 
0474 DEFINE_FWK_MODULE(ScoutingElectronTagProbeAnalyzer);