File indexing completed on 2025-04-24 01:30:21
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016 #include <string>
0017 #include <vector>
0018
0019
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/Math/interface/deltaR.h"
0027 #include "DataFormats/PatCandidates/interface/Electron.h"
0028 #include "DataFormats/PatCandidates/interface/PackedTriggerPrescales.h"
0029 #include "DataFormats/PatCandidates/interface/TriggerObjectStandAlone.h"
0030 #include "DataFormats/Scouting/interface/Run3ScoutingElectron.h"
0031 #include "FWCore/Common/interface/TriggerNames.h"
0032 #include "FWCore/Framework/interface/Event.h"
0033 #include "FWCore/Framework/interface/Frameworkfwd.h"
0034 #include "FWCore/Framework/interface/MakerMacros.h"
0035 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0036 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0037 #include "HLTrigger/HLTcore/interface/HLTConfigProvider.h"
0038
0039 #include "ScoutingDQMUtils.h"
0040
0041
0042
0043
0044
0045 struct kSctProbeFilterHistos {
0046 dqm::reco::MonitorElement* hPt_Barrel_passBaseDST;
0047 dqm::reco::MonitorElement* hPt_Endcap_passBaseDST;
0048 dqm::reco::MonitorElement* hEta_passBaseDST;
0049 std::vector<dqm::reco::MonitorElement*> hPt_Barrel_fireTrigObj;
0050 std::vector<dqm::reco::MonitorElement*> hPt_Endcap_fireTrigObj;
0051 std::vector<dqm::reco::MonitorElement*> hEta_fireTrigObj;
0052 };
0053
0054 struct kSctProbeKinematicHistos {
0055 dqm::reco::MonitorElement* hPt_Barrel;
0056 dqm::reco::MonitorElement* hPt_Endcap;
0057 dqm::reco::MonitorElement* hEta;
0058 dqm::reco::MonitorElement* hEtavPhi;
0059 dqm::reco::MonitorElement* hPhi;
0060 dqm::reco::MonitorElement* hHoverE_Barrel;
0061 dqm::reco::MonitorElement* hHoverE_Endcap;
0062 dqm::reco::MonitorElement* hOoEMOoP_Barrel;
0063 dqm::reco::MonitorElement* hOoEMOoP_Endcap;
0064 dqm::reco::MonitorElement* hdPhiIn_Barrel;
0065 dqm::reco::MonitorElement* hdPhiIn_Endcap;
0066 dqm::reco::MonitorElement* hdEtaIn_Barrel;
0067 dqm::reco::MonitorElement* hdEtaIn_Endcap;
0068 dqm::reco::MonitorElement* hSigmaIetaIeta_Barrel;
0069 dqm::reco::MonitorElement* hSigmaIetaIeta_Endcap;
0070 dqm::reco::MonitorElement* hMissingHits_Barrel;
0071 dqm::reco::MonitorElement* hMissingHits_Endcap;
0072 dqm::reco::MonitorElement* hTrackfbrem_Barrel;
0073 dqm::reco::MonitorElement* hTrackfbrem_Endcap;
0074 dqm::reco::MonitorElement* hTrack_pt_Barrel;
0075 dqm::reco::MonitorElement* hTrack_pt_Endcap;
0076 dqm::reco::MonitorElement* hTrack_pMode_Barrel;
0077 dqm::reco::MonitorElement* hTrack_pMode_Endcap;
0078 dqm::reco::MonitorElement* hTrack_etaMode_Barrel;
0079 dqm::reco::MonitorElement* hTrack_etaMode_Endcap;
0080 dqm::reco::MonitorElement* hTrack_phiMode_Barrel;
0081 dqm::reco::MonitorElement* hTrack_phiMode_Endcap;
0082 dqm::reco::MonitorElement* hTrack_qoverpModeError_Barrel;
0083 dqm::reco::MonitorElement* hTrack_qoverpModeError_Endcap;
0084 dqm::reco::MonitorElement* hRelEcalIsolation_Barrel;
0085 dqm::reco::MonitorElement* hRelEcalIsolation_Endcap;
0086 dqm::reco::MonitorElement* hRelHcalIsolation_Barrel;
0087 dqm::reco::MonitorElement* hRelHcalIsolation_Endcap;
0088 dqm::reco::MonitorElement* hRelTrackIsolation_Barrel;
0089 dqm::reco::MonitorElement* hRelTrackIsolation_Endcap;
0090 dqm::reco::MonitorElement* hInvMass;
0091 dqm::reco::MonitorElement* hPt_Barrel_passID;
0092 dqm::reco::MonitorElement* hPt_Endcap_passID;
0093 kSctProbeFilterHistos leading_electron;
0094 kSctProbeFilterHistos subleading_electron;
0095 };
0096
0097 struct kSctTagProbeHistos {
0098 kSctProbeKinematicHistos resonanceZ;
0099 kSctProbeKinematicHistos resonanceJ;
0100 kSctProbeKinematicHistos resonanceY;
0101 kSctProbeKinematicHistos resonanceAll;
0102 };
0103
0104 class ScoutingElectronTagProbeAnalyzer : public DQMGlobalEDAnalyzer<kSctTagProbeHistos> {
0105 public:
0106 explicit ScoutingElectronTagProbeAnalyzer(const edm::ParameterSet& conf);
0107 ~ScoutingElectronTagProbeAnalyzer() override = default;
0108 static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
0109
0110 private:
0111 void dqmAnalyze(const edm::Event& e, const edm::EventSetup& c, kSctTagProbeHistos const&) const override;
0112
0113 void bookHistograms(DQMStore::IBooker&, edm::Run const&, edm::EventSetup const&, kSctTagProbeHistos&) const override;
0114
0115 void bookHistograms_resonance(
0116 DQMStore::IBooker&, edm::Run const&, edm::EventSetup const&, kSctProbeKinematicHistos&, const std::string&) const;
0117
0118 void fillHistograms_resonance(const kSctProbeKinematicHistos& histos,
0119 const Run3ScoutingElectron& el,
0120 const float inv_mass,
0121 const trigger::TriggerObjectCollection* legObjectsCollection,
0122 const bool passBaseDST,
0123 const int pt_order) const;
0124
0125 bool scoutingElectron_passHLT(const Run3ScoutingElectron& el,
0126 const trigger::TriggerObjectCollection& legObjects) const;
0127
0128
0129 std::string outputInternalPath_;
0130
0131 const std::vector<std::string> vBaseTriggerSelection_;
0132 const std::vector<std::string> vtriggerSelection_;
0133 const std::vector<std::string> filterToMatch_;
0134
0135 const edm::EDGetToken triggerResultsToken_;
0136 const edm::EDGetTokenT<pat::TriggerObjectStandAloneCollection> triggerObjects_;
0137
0138 const edm::EDGetTokenT<std::vector<Run3ScoutingElectron>> scoutingElectronCollection_;
0139 };
0140
0141 ScoutingElectronTagProbeAnalyzer::ScoutingElectronTagProbeAnalyzer(const edm::ParameterSet& iConfig)
0142 : outputInternalPath_(iConfig.getParameter<std::string>("OutputInternalPath")),
0143 vBaseTriggerSelection_{iConfig.getParameter<vector<string>>("BaseTriggerSelection")},
0144 vtriggerSelection_{iConfig.getParameter<vector<string>>("triggerSelection")},
0145 filterToMatch_{iConfig.getParameter<vector<string>>("finalfilterSelection")},
0146 triggerResultsToken_(consumes<edm::TriggerResults>(iConfig.getParameter<edm::InputTag>("TriggerResultTag"))),
0147 triggerObjects_(
0148 consumes<pat::TriggerObjectStandAloneCollection>(iConfig.getParameter<edm::InputTag>("TriggerObjects"))),
0149 scoutingElectronCollection_(consumes<std::vector<Run3ScoutingElectron>>(
0150 iConfig.getParameter<edm::InputTag>("ScoutingElectronCollection"))) {}
0151
0152 void ScoutingElectronTagProbeAnalyzer::dqmAnalyze(edm::Event const& iEvent,
0153 edm::EventSetup const& iSetup,
0154 kSctTagProbeHistos const& histos) const {
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
0163 edm::Handle<edm::TriggerResults> triggerResults;
0164 edm::Handle<pat::TriggerObjectStandAloneCollection> triggerObjects;
0165 iEvent.getByToken(triggerResultsToken_, triggerResults);
0166 iEvent.getByToken(triggerObjects_, triggerObjects);
0167
0168
0169 if (triggerResults.failedToGet()) {
0170 edm::LogWarning("ScoutingEGammaCollectionMonitoring") << "Trgger Results not found.";
0171 return;
0172 }
0173 int nTriggers = triggerResults->size();
0174 std::vector<bool> vtrigger_result(vtriggerSelection_.size(), false);
0175 bool passBaseDST = false;
0176 const edm::TriggerNames& triggerNames = iEvent.triggerNames(*triggerResults);
0177 for (int i_Trig = 0; i_Trig < nTriggers; i_Trig++) {
0178 if (triggerResults.product()->accept(i_Trig)) {
0179 TString TrigPath = triggerNames.triggerName(i_Trig);
0180 for (unsigned int i_selectTrig = 0; i_selectTrig < vtriggerSelection_.size(); i_selectTrig++) {
0181 if (TrigPath.Index(vtriggerSelection_.at(i_selectTrig)) >= 0) {
0182 vtrigger_result[i_selectTrig] = true;
0183 }
0184 }
0185
0186 for (unsigned int i_BaseTrig = 0; i_BaseTrig < vBaseTriggerSelection_.size(); i_BaseTrig++) {
0187 if (TrigPath.Index(vBaseTriggerSelection_.at(i_BaseTrig)) >= 0) {
0188 passBaseDST = true;
0189 }
0190 }
0191 }
0192 }
0193
0194
0195 size_t numberOfFilters = filterToMatch_.size();
0196 trigger::TriggerObjectCollection* legObjects = new trigger::TriggerObjectCollection[numberOfFilters];
0197 for (size_t iteFilter = 0; iteFilter < filterToMatch_.size(); iteFilter++) {
0198 std::string filterTag = filterToMatch_.at(iteFilter);
0199 for (pat::TriggerObjectStandAlone obj : *triggerObjects) {
0200 obj.unpackNamesAndLabels(iEvent, *triggerResults);
0201 if (obj.hasFilterLabel(filterTag)) {
0202 legObjects[iteFilter].push_back(obj);
0203 }
0204 }
0205 }
0206
0207 edm::LogInfo("ScoutingMonitoring") << "Process Run3ScoutingElectrons: " << sctEls->size();
0208
0209
0210
0211 std::vector<std::pair<size_t, Run3ScoutingElectron>> indexed_sctElectrons;
0212 for (size_t i = 0; i < sctEls->size(); i++) {
0213 indexed_sctElectrons.emplace_back(i, (*sctEls)[i]);
0214 }
0215 std::sort(indexed_sctElectrons.begin(), indexed_sctElectrons.end(), [](const auto& a, const auto& b) {
0216 return a.second.pt() > b.second.pt();
0217 });
0218
0219 for (size_t sct_local_index = 0; sct_local_index < indexed_sctElectrons.size(); sct_local_index++) {
0220 const auto sct_el = indexed_sctElectrons[sct_local_index].second;
0221
0222 if (!scoutingDQMUtils::scoutingElectronID(sct_el))
0223 continue;
0224 edm::LogInfo("ScoutingElectronTagProbeAnalyzer") << "Process Run3ScoutingElectrons: " << sct_el.sigmaIetaIeta();
0225
0226 math::PtEtaPhiMLorentzVector tag_sct_el(sct_el.pt(), sct_el.eta(), sct_el.phi(), sct_el.m());
0227 int second_sct_pt_order = -1;
0228 for (size_t second_sct_local_index = 0; second_sct_local_index < indexed_sctElectrons.size();
0229 second_sct_local_index++) {
0230 const auto sct_el_second = indexed_sctElectrons[second_sct_local_index].second;
0231 if (scoutingDQMUtils::scoutingElectronID(sct_el_second))
0232 second_sct_pt_order += 1;
0233 if (&sct_el_second == &sct_el)
0234 continue;
0235 math::PtEtaPhiMLorentzVector probe_sct_el(
0236 sct_el_second.pt(), sct_el_second.eta(), sct_el_second.phi(), sct_el_second.m());
0237 float invMass = (tag_sct_el + probe_sct_el).mass();
0238 edm::LogInfo("ScoutingMonitoring") << "Inv Mass: " << invMass;
0239 if ((80 < invMass) && (invMass < 100)) {
0240 fillHistograms_resonance(
0241 histos.resonanceZ, sct_el_second, invMass, legObjects, passBaseDST, second_sct_pt_order);
0242 fillHistograms_resonance(
0243 histos.resonanceAll, sct_el_second, invMass, legObjects, passBaseDST, second_sct_pt_order);
0244 }
0245 if ((2.8 < invMass) && (invMass < 3.8)) {
0246 fillHistograms_resonance(histos.resonanceJ,
0247 sct_el_second,
0248 invMass,
0249 legObjects,
0250 passBaseDST,
0251 second_sct_pt_order);
0252 fillHistograms_resonance(
0253 histos.resonanceAll, sct_el_second, invMass, legObjects, passBaseDST, second_sct_pt_order);
0254 }
0255 if ((9.0 < invMass) && (invMass < 12.6)) {
0256 fillHistograms_resonance(histos.resonanceY,
0257 sct_el_second,
0258 invMass,
0259 legObjects,
0260 passBaseDST,
0261 second_sct_pt_order);
0262 fillHistograms_resonance(
0263 histos.resonanceAll, sct_el_second, invMass, legObjects, passBaseDST, second_sct_pt_order);
0264 }
0265 }
0266 }
0267 }
0268
0269 bool ScoutingElectronTagProbeAnalyzer::scoutingElectron_passHLT(
0270 const Run3ScoutingElectron& el, const trigger::TriggerObjectCollection& legObjects) const {
0271 bool foundTheLeg = false;
0272 for (unsigned int i = 0; i < legObjects.size(); i++) {
0273 float delR2 = deltaR2(legObjects.at(i).eta(), legObjects.at(i).phi(), el.eta(), el.phi());
0274 if (delR2 < 0.01) {
0275 foundTheLeg = true;
0276 break;
0277 }
0278 }
0279 return foundTheLeg;
0280 }
0281
0282 void ScoutingElectronTagProbeAnalyzer::fillHistograms_resonance(
0283 const kSctProbeKinematicHistos& histos,
0284 const Run3ScoutingElectron& el,
0285 const float inv_mass,
0286 const trigger::TriggerObjectCollection* legObjectsCollection,
0287 const bool passBaseDST,
0288 const int pt_order) const {
0289 histos.hEta->Fill(el.eta());
0290 histos.hPhi->Fill(el.phi());
0291 histos.hInvMass->Fill(inv_mass);
0292
0293 if (fabs(el.eta()) < 1.5) {
0294 histos.hPt_Barrel->Fill(el.pt());
0295 if (scoutingDQMUtils::scoutingElectronID(el))
0296 histos.hPt_Barrel_passID->Fill(el.pt());
0297 histos.hHoverE_Barrel->Fill(el.hOverE());
0298 histos.hOoEMOoP_Barrel->Fill(el.ooEMOop());
0299 histos.hdPhiIn_Barrel->Fill(fabs(el.dPhiIn()));
0300 histos.hdEtaIn_Barrel->Fill(fabs(el.dEtaIn()));
0301 histos.hSigmaIetaIeta_Barrel->Fill(el.sigmaIetaIeta());
0302 histos.hMissingHits_Barrel->Fill(el.missingHits());
0303 histos.hTrackfbrem_Barrel->Fill(el.trackfbrem());
0304 histos.hRelEcalIsolation_Barrel->Fill(el.ecalIso() / el.pt());
0305 histos.hRelHcalIsolation_Barrel->Fill(el.hcalIso() / el.pt());
0306 histos.hRelTrackIsolation_Barrel->Fill(el.trackIso() / el.pt());
0307 for (const auto& trk : el.trkpt()) {
0308 histos.hTrack_pt_Barrel->Fill(trk);
0309 }
0310 for (const auto& trk : el.trkpMode()) {
0311 histos.hTrack_pMode_Barrel->Fill(trk);
0312 }
0313 for (const auto& trk : el.trketaMode()) {
0314 histos.hTrack_etaMode_Barrel->Fill(trk);
0315 }
0316 for (const auto& trk : el.trkphiMode()) {
0317 histos.hTrack_phiMode_Barrel->Fill(trk);
0318 }
0319 for (const auto& trk : el.trkqoverpModeError()) {
0320 histos.hTrack_qoverpModeError_Barrel->Fill(trk);
0321 }
0322
0323 if (passBaseDST) {
0324 if (pt_order == 0) {
0325 histos.leading_electron.hPt_Barrel_passBaseDST->Fill(el.pt());
0326 histos.leading_electron.hEta_passBaseDST->Fill(el.eta());
0327 for (unsigned int iTrig = 0; iTrig < vtriggerSelection_.size(); iTrig++) {
0328 if (scoutingElectron_passHLT(el, legObjectsCollection[iTrig])) {
0329 histos.leading_electron.hPt_Barrel_fireTrigObj[iTrig]->Fill(el.pt());
0330 histos.leading_electron.hEta_fireTrigObj[iTrig]->Fill(el.eta());
0331 }
0332 }
0333 } else if (pt_order == 1) {
0334 histos.subleading_electron.hPt_Barrel_passBaseDST->Fill(el.pt());
0335 histos.subleading_electron.hEta_passBaseDST->Fill(el.eta());
0336 for (unsigned int iTrig = 0; iTrig < vtriggerSelection_.size(); iTrig++) {
0337 if (scoutingElectron_passHLT(el, legObjectsCollection[iTrig])) {
0338 histos.subleading_electron.hPt_Barrel_fireTrigObj[iTrig]->Fill(el.pt());
0339 histos.subleading_electron.hEta_fireTrigObj[iTrig]->Fill(el.eta());
0340 }
0341 }
0342 }
0343 }
0344 } else {
0345 histos.hPt_Endcap->Fill(el.pt());
0346 if (scoutingDQMUtils::scoutingElectronID(el))
0347 histos.hPt_Endcap_passID->Fill(el.pt());
0348 histos.hHoverE_Endcap->Fill(el.hOverE());
0349 histos.hOoEMOoP_Endcap->Fill(el.ooEMOop());
0350 histos.hdPhiIn_Endcap->Fill(fabs(el.dPhiIn()));
0351 histos.hdEtaIn_Endcap->Fill(fabs(el.dEtaIn()));
0352 histos.hSigmaIetaIeta_Endcap->Fill(el.sigmaIetaIeta());
0353 histos.hMissingHits_Endcap->Fill(el.missingHits());
0354 histos.hTrackfbrem_Endcap->Fill(el.trackfbrem());
0355 histos.hRelEcalIsolation_Endcap->Fill(el.ecalIso() / el.pt());
0356 histos.hRelHcalIsolation_Endcap->Fill(el.hcalIso() / el.pt());
0357 histos.hRelTrackIsolation_Endcap->Fill(el.trackIso() / el.pt());
0358 for (const auto& trk : el.trkpt()) {
0359 histos.hTrack_pt_Endcap->Fill(trk);
0360 }
0361 for (const auto& trk : el.trkpMode()) {
0362 histos.hTrack_pMode_Endcap->Fill(trk);
0363 }
0364 for (const auto& trk : el.trketaMode()) {
0365 histos.hTrack_etaMode_Endcap->Fill(trk);
0366 }
0367 for (const auto& trk : el.trkphiMode()) {
0368 histos.hTrack_phiMode_Endcap->Fill(trk);
0369 }
0370 for (const auto& trk : el.trkqoverpModeError()) {
0371 histos.hTrack_qoverpModeError_Endcap->Fill(trk);
0372 }
0373
0374 if (passBaseDST) {
0375 if (pt_order == 0) {
0376 histos.leading_electron.hPt_Endcap_passBaseDST->Fill(el.pt());
0377 histos.leading_electron.hEta_passBaseDST->Fill(el.eta());
0378 for (unsigned int iTrig = 0; iTrig < vtriggerSelection_.size(); iTrig++) {
0379 if (scoutingElectron_passHLT(el, legObjectsCollection[iTrig])) {
0380 histos.leading_electron.hPt_Endcap_fireTrigObj[iTrig]->Fill(el.pt());
0381 histos.leading_electron.hEta_fireTrigObj[iTrig]->Fill(el.eta());
0382 }
0383 }
0384 } else if (pt_order == 1) {
0385 histos.subleading_electron.hPt_Endcap_passBaseDST->Fill(el.pt());
0386 histos.subleading_electron.hEta_passBaseDST->Fill(el.eta());
0387 for (unsigned int iTrig = 0; iTrig < vtriggerSelection_.size(); iTrig++) {
0388 if (scoutingElectron_passHLT(el, legObjectsCollection[iTrig])) {
0389 histos.subleading_electron.hPt_Endcap_fireTrigObj[iTrig]->Fill(el.pt());
0390 histos.subleading_electron.hEta_fireTrigObj[iTrig]->Fill(el.eta());
0391 }
0392 }
0393 }
0394 }
0395 }
0396 }
0397
0398 void ScoutingElectronTagProbeAnalyzer::bookHistograms(DQMStore::IBooker& ibook,
0399 edm::Run const& run,
0400 edm::EventSetup const& iSetup,
0401 kSctTagProbeHistos& histos) const {
0402 ibook.setCurrentFolder(outputInternalPath_);
0403 bookHistograms_resonance(ibook, run, iSetup, histos.resonanceZ, "resonanceZ");
0404 bookHistograms_resonance(ibook, run, iSetup, histos.resonanceJ, "resonanceJ");
0405 bookHistograms_resonance(ibook, run, iSetup, histos.resonanceY, "resonanceY");
0406 bookHistograms_resonance(ibook, run, iSetup, histos.resonanceAll, "resonanceAll");
0407 }
0408
0409 void ScoutingElectronTagProbeAnalyzer::bookHistograms_resonance(DQMStore::IBooker& ibook,
0410 edm::Run const& run,
0411 edm::EventSetup const& iSetup,
0412 kSctProbeKinematicHistos& histos,
0413 const std::string& name) const {
0414 ibook.setCurrentFolder(outputInternalPath_);
0415 histos.hPt_Barrel =
0416 ibook.book1D(name + "_Probe_sctElectron_Pt_Barrel", name + "_Probe_sctElectron_Pt_Barrel", 500, 0, 500);
0417 histos.hPt_Endcap =
0418 ibook.book1D(name + "_Probe_sctElectron_Pt_Endcap", name + "_Probe_sctElectron_Pt_Endcap", 500, 0, 500);
0419
0420 histos.hEta = ibook.book1D(name + "_Probe_sctElectron_Eta", name + "_Probe_sctElectron_Eta", 100, -5.0, 5.0);
0421 histos.hPhi = ibook.book1D(name + "_Probe_sctElectron_Phi", name + "_Probe_sctElectron_Phi", 100, -3.3, 3.3);
0422
0423 histos.hHoverE_Barrel =
0424 ibook.book1D(name + "_Probe_sctElectron_HoverE_Barrel", name + "_Probe_sctElectron_HoverE_Barrel", 500, 0, 0.5);
0425 histos.hHoverE_Endcap =
0426 ibook.book1D(name + "_Probe_sctElectron_HoverE_Endcap", name + "_Probe_sctElectron_HoverE_Endcap", 500, 0, 0.5);
0427
0428 histos.hOoEMOoP_Barrel = ibook.book1D(
0429 name + "_Probe_sctElectron_OoEMOoP_Barrel", name + "_Probe_sctElectron_OoEMOoP_Barrel", 500, -0.2, 0.2);
0430 histos.hOoEMOoP_Endcap = ibook.book1D(
0431 name + "_Probe_sctElectron_OoEMOoP_Endcap", name + "_Probe_sctElectron_OoEMOoP_Endcap", 500, -0.2, 0.2);
0432
0433 histos.hdPhiIn_Barrel =
0434 ibook.book1D(name + "_Probe_sctElectron_dPhiIn_Barrel", name + "_Probe_sctElectron_dPhiIn_Barrel", 100, 0, 0.1);
0435 histos.hdPhiIn_Endcap =
0436 ibook.book1D(name + "_Probe_sctElectron_dPhiIn_Endcap", name + "_Probe_sctElectron_dPhiIn_Endcap", 100, 0, 0.1);
0437
0438 histos.hdEtaIn_Barrel =
0439 ibook.book1D(name + "_Probe_sctElectron_dEtaIn_Barrel", name + "_Probe_sctElectron_dEtaIn_Barrel", 100, 0, 0.1);
0440 histos.hdEtaIn_Endcap =
0441 ibook.book1D(name + "_Probe_sctElectron_dEtaIn_Endcap", name + "_Probe_sctElectron_dEtaIn_Endcap", 100, 0, 0.1);
0442
0443 histos.hSigmaIetaIeta_Barrel = ibook.book1D(
0444 name + "_Probe_sctElectron_SigmaIetaIeta_Barrel", name + "_Probe_sctElectron_SigmaIetaIeta_Barrel", 500, 0, 0.05);
0445 histos.hSigmaIetaIeta_Endcap = ibook.book1D(
0446 name + "_Probe_sctElectron_SigmaIetaIeta_Endcap", name + "_Probe_sctElectron_SigmaIetaIeta_Endcap", 500, 0, 0.05);
0447
0448 histos.hMissingHits_Barrel = ibook.book1D(
0449 name + "_Probe_sctElectron_MissingHits_Barrel", name + "_Probe_sctElectron_MissingHits_Barrel", 21, -0.5, 20.5);
0450 histos.hMissingHits_Endcap = ibook.book1D(
0451 name + "_Probe_sctElectron_MissingHits_Endcap", name + "_Probe_sctElectron_MissingHits_Endcap", 21, -0.5, 20.5);
0452
0453 histos.hTrackfbrem_Barrel = ibook.book1D(
0454 name + "_Probe_sctElectron_Trackfbrem_Barrel", name + "_Probe_sctElectron_Trackfbrem_Barrel", 100, 0, 1.0);
0455 histos.hTrackfbrem_Endcap = ibook.book1D(
0456 name + "_Probe_sctElectron_Trackfbrem_Endcap", name + "_Probe_sctElectron_Trackfbrem_Endcap", 100, 0, 1.0);
0457
0458 histos.hTrack_pt_Barrel = ibook.book1D(
0459 name + "_Probe_sctElectron_Track_pt_Barrel", name + "_Probe_sctElectron_Track_pt_Barrel", 200, 0, 100.0);
0460 histos.hTrack_pt_Endcap = ibook.book1D(
0461 name + "_Probe_sctElectron_Track_pt_Endcap", name + "_Probe_sctElectron_Track_pt_Endcap", 200, 0, 100.0);
0462
0463 histos.hTrack_pMode_Barrel = ibook.book1D(
0464 name + "_Probe_sctElectron_Track_pMode_Barrel", name + "_Probe_sctElectron_Track_pMode_Barrel", 50, -0.5, 49.5);
0465 histos.hTrack_pMode_Endcap = ibook.book1D(
0466 name + "_Probe_sctElectron_Track_pMode_Endcap", name + "_Probe_sctElectron_Track_pMode_Endcap", 50, -0.5, 49.5);
0467
0468 histos.hTrack_etaMode_Barrel = ibook.book1D(
0469 name + "_Probe_sctElectron_Track_etaMode_Barrel", name + "_Probe_sctElectron_Track_etaMode_Barrel", 26, -6.5, 6.5);
0470 histos.hTrack_etaMode_Endcap = ibook.book1D(
0471 name + "_Probe_sctElectron_Track_etaMode_Endcap", name + "_Probe_sctElectron_Track_etaMode_Endcap", 26, -6.5, 6.5);
0472
0473 histos.hTrack_phiMode_Barrel = ibook.book1D(
0474 name + "_Probe_sctElectron_Track_phiMode_Barrel", name + "_Probe_sctElectron_Track_phiMode_Barrel", 18, -4.5, 4.5);
0475 histos.hTrack_phiMode_Endcap = ibook.book1D(
0476 name + "_Probe_sctElectron_Track_phiMode_Endcap", name + "_Probe_sctElectron_Track_phiMode_Endcap", 18, -4.5, 4.5);
0477
0478 histos.hTrack_qoverpModeError_Barrel = ibook.book1D(name + "_Probe_sctElectron_Track_qoverpModeError_Barrel",
0479 name + "_Probe_sctElectron_Track_qoverpModeError_Barrel",
0480 36,
0481 -4.5,
0482 4.5);
0483 histos.hTrack_qoverpModeError_Endcap = ibook.book1D(name + "_Probe_sctElectron_Track_qoverpModeError_Endcap",
0484 name + "_Probe_sctElectron_Track_qoverpModeError_Endcap",
0485 36,
0486 -4.5,
0487 4.5);
0488
0489 histos.hRelEcalIsolation_Barrel = ibook.book1D(name + "_Probe_sctElectron_RelEcalIsolation_Barrel",
0490 name + "_Probe_sctElectron_RelEcalIsolation_Barrel",
0491 100,
0492 0,
0493 1.0);
0494 histos.hRelEcalIsolation_Endcap = ibook.book1D(name + "_Probe_sctElectron_RelEcalIsolation_Endcap",
0495 name + "_Probe_sctElectron_RelEcalIsolation_Endcap",
0496 100,
0497 0,
0498 1.0);
0499
0500 histos.hRelHcalIsolation_Barrel = ibook.book1D(name + "_Probe_sctElectron_RelHcalIsolation_Barrel",
0501 name + "_Probe_sctElectron_RelHcalIsolation_Barrel",
0502 100,
0503 0,
0504 1.0);
0505 histos.hRelHcalIsolation_Endcap = ibook.book1D(name + "_Probe_sctElectron_RelHcalIsolation_Endcap",
0506 name + "_Probe_sctElectron_RelHcalIsolation_Endcap",
0507 100,
0508 0,
0509 1.0);
0510
0511 histos.hRelTrackIsolation_Barrel = ibook.book1D(name + "_Probe_sctElectron_RelTrackIsolation_Barrel",
0512 name + "_Probe_sctElectron_RelTrackIsolation_Barrel",
0513 100,
0514 0,
0515 1.0);
0516 histos.hRelTrackIsolation_Endcap = ibook.book1D(name + "_Probe_sctElectron_RelTrackIsolation_Endcap",
0517 name + "_Probe_sctElectron_RelTrackIsolation_Endcap",
0518 100,
0519 0,
0520 1.0);
0521 histos.hInvMass =
0522 ibook.book1D(name + "_sctElectron_Invariant_Mass", name + "_sctElectron_Invariant_Mass", 800, 0, 200);
0523
0524 histos.hPt_Barrel_passID = ibook.book1D(
0525 name + "_Probe_sctElectron_Pt_Barrel_passID", name + "_Probe_sctElectron_Pt_Barrel_passID", 500, 0, 500);
0526 histos.hPt_Endcap_passID = ibook.book1D(
0527 name + "_Probe_sctElectron_Pt_Endcap_passID", name + "_Probe_sctElectron_Pt_Endcap_passID", 500, 0, 500);
0528
0529
0530 histos.leading_electron.hPt_Barrel_passBaseDST =
0531 ibook.book1D(name + "_leading_Pt_Barrel_passBaseDST", name + "_leading_Pt_Barrel_passBaseDST", 40, 0, 200);
0532 histos.leading_electron.hPt_Endcap_passBaseDST =
0533 ibook.book1D(name + "_leading_Pt_Endcap_passBaseDST", name + "_leading_Pt_Endcap_passBaseDST", 40, 0, 200);
0534 histos.leading_electron.hEta_passBaseDST =
0535 ibook.book1D(name + "_leading_Eta_passBaseDST", name + "_leading_Eta_passBaseDST", 20, -5.0, 5.0);
0536
0537
0538 histos.subleading_electron.hPt_Barrel_passBaseDST =
0539 ibook.book1D(name + "_subleading_Pt_Barrel_passBaseDST", name + "_subleading_Pt_Barrel_passBaseDST", 40, 0, 200);
0540 histos.subleading_electron.hPt_Endcap_passBaseDST =
0541 ibook.book1D(name + "_subleading_Pt_Endcap_passBaseDST", name + "_subleading_Pt_Endcap_passBaseDST", 40, 0, 200);
0542 histos.subleading_electron.hEta_passBaseDST =
0543 ibook.book1D(name + "_subleading_Eta_passBaseDST", name + "_subleading_Eta_passBaseDST", 20, -5.0, 5.0);
0544
0545 for (auto const& vt : vtriggerSelection_) {
0546 std::string cleaned_vt = vt;
0547 cleaned_vt.erase(std::remove(cleaned_vt.begin(), cleaned_vt.end(), '*'), cleaned_vt.end());
0548
0549
0550
0551 histos.leading_electron.hPt_Barrel_fireTrigObj.push_back(
0552 ibook.book1D(name + "_leading_Pt_Barrel_pass" + cleaned_vt + "_fireTrigObj",
0553 name + "_leading_Pt_Barrel_pass" + cleaned_vt + "_fireTrigObj",
0554 40,
0555 0,
0556 200));
0557 histos.leading_electron.hPt_Endcap_fireTrigObj.push_back(
0558 ibook.book1D(name + "_leading_Pt_Endcap_pass" + cleaned_vt + "_fireTrigObj",
0559 name + "_leading_Pt_Endcap_pass" + cleaned_vt + "_fireTrigObj",
0560 40,
0561 0,
0562 200));
0563 histos.leading_electron.hEta_fireTrigObj.push_back(
0564 ibook.book1D(name + "_leading_Eta_pass" + cleaned_vt + "_fireTrigObj",
0565 name + "_leading_Eta_pass" + cleaned_vt + "_fireTrigObj",
0566 20,
0567 -5.0,
0568 5.0));
0569
0570
0571
0572 histos.subleading_electron.hPt_Barrel_fireTrigObj.push_back(
0573 ibook.book1D(name + "_subleading_Pt_Barrel_pass" + cleaned_vt + "_fireTrigObj",
0574 name + "_subleading_Pt_Barrel_pass" + cleaned_vt + "_fireTrigObj",
0575 40,
0576 0,
0577 200));
0578 histos.subleading_electron.hPt_Endcap_fireTrigObj.push_back(
0579 ibook.book1D(name + "_subleading_Pt_Endcap_pass" + cleaned_vt + "_fireTrigObj",
0580 name + "_subleading_Pt_Endcap_pass" + cleaned_vt + "_fireTrigObj",
0581 40,
0582 0,
0583 200));
0584 histos.subleading_electron.hEta_fireTrigObj.push_back(
0585 ibook.book1D(name + "_subleading_Eta_pass" + cleaned_vt + "_fireTrigObj",
0586 name + "_subleading_Eta_pass" + cleaned_vt + "_fireTrigObj",
0587 20,
0588 -5.0,
0589 5.0));
0590 }
0591 }
0592
0593
0594
0595 void ScoutingElectronTagProbeAnalyzer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
0596 edm::ParameterSetDescription desc;
0597 desc.add<std::string>("OutputInternalPath", "MY_FOLDER");
0598 desc.add<vector<string>>("BaseTriggerSelection", {});
0599 desc.add<vector<string>>("triggerSelection", {});
0600 desc.add<vector<string>>("finalfilterSelection", {});
0601 desc.add<edm::InputTag>("TriggerResultTag", edm::InputTag("TriggerResults", "", "HLT"));
0602 desc.add<edm::InputTag>("TriggerObjects", edm::InputTag("slimmedPatTrigger"));
0603 desc.add<edm::InputTag>("ElectronCollection", edm::InputTag("slimmedElectrons"));
0604 desc.add<edm::InputTag>("ScoutingElectronCollection", edm::InputTag("Run3ScoutingElectrons"));
0605 descriptions.addWithDefaultLabel(desc);
0606 }
0607
0608 DEFINE_FWK_MODULE(ScoutingElectronTagProbeAnalyzer);