From b2e69bda7b250efa9543c9a4ad528d87be3a094a Mon Sep 17 00:00:00 2001 From: David Sheffield Date: Mon, 24 Aug 2015 10:47:57 -0500 Subject: [PATCH 1/2] Add scouting electron, photon, and muon classes and producers --- .../Scouting/interface/ScoutingElectron.h | 63 ++++ DataFormats/Scouting/interface/ScoutingMuon.h | 71 +++++ .../Scouting/interface/ScoutingPhoton.h | 43 +++ DataFormats/Scouting/src/classes.h | 6 + DataFormats/Scouting/src/classes_def.xml | 15 + HLTrigger/Egamma/BuildFile.xml | 1 + HLTrigger/Egamma/plugins/BuildFile.xml | 7 + .../plugins/HLTScoutingEgammaProducer.cc | 282 ++++++++++++++++++ HLTrigger/Muon/BuildFile.xml | 1 + HLTrigger/Muon/plugins/BuildFile.xml | 7 + .../Muon/plugins/HLTScoutingMuonProducer.cc | 179 +++++++++++ 11 files changed, 675 insertions(+) create mode 100644 DataFormats/Scouting/interface/ScoutingElectron.h create mode 100644 DataFormats/Scouting/interface/ScoutingMuon.h create mode 100644 DataFormats/Scouting/interface/ScoutingPhoton.h create mode 100644 HLTrigger/Egamma/plugins/BuildFile.xml create mode 100644 HLTrigger/Egamma/plugins/HLTScoutingEgammaProducer.cc create mode 100644 HLTrigger/Muon/plugins/BuildFile.xml create mode 100644 HLTrigger/Muon/plugins/HLTScoutingMuonProducer.cc diff --git a/DataFormats/Scouting/interface/ScoutingElectron.h b/DataFormats/Scouting/interface/ScoutingElectron.h new file mode 100644 index 0000000000000..5e4bc83764a19 --- /dev/null +++ b/DataFormats/Scouting/interface/ScoutingElectron.h @@ -0,0 +1,63 @@ +#ifndef DataFormats_ScoutingElectron_h +#define DataFormats_ScoutingElectron_h + +#include + +// Class for holding electron information, for use in data scouting +// IMPORTANT: the content of this class should be changed only in backwards compatible ways! +class ScoutingElectron +{ + public: + //constructor with values for all data fields + ScoutingElectron(float pt, float eta, float phi, float m, float d0, float dz, float dEtaIn, + float dPhiIn, float sigmaIetaIeta, float hOverE, float ooEMOop, + int missingHits, int charge, float ecalIso, float hcalIso, float trackIso): + pt_(pt), eta_(eta), phi_(phi), m_(m), d0_(d0), dz_(dz), dEtaIn_(dEtaIn), + dPhiIn_(dPhiIn), sigmaIetaIeta_(sigmaIetaIeta), hOverE_(hOverE), ooEMOop_(ooEMOop), + missingHits_(missingHits), charge_(charge), ecalIso_(ecalIso), hcalIso_(hcalIso), + trackIso_(trackIso) {} + //default constructor + ScoutingElectron(): pt_(0), eta_(0), phi_(0), m_(0), d0_(0), dz_(0), dEtaIn_(0), dPhiIn_(0), + sigmaIetaIeta_(0), hOverE_(0), ooEMOop_(0), missingHits_(0), charge_(0), ecalIso_(0), + hcalIso_(0), trackIso_(0) {} + + //accessor functions + float pt() const { return pt_; } + float eta() const { return eta_; } + float phi() const { return phi_; } + float m() const { return m_; } + float d0() const { return d0_; } + float dz() const { return dz_; } + float dEtaIn() const { return dEtaIn_; } + float dPhiIn() const { return dPhiIn_; } + float sigmaIetaIeta() const { return sigmaIetaIeta_; } + float hOverE() const { return hOverE_; } + float ooEMOop() const { return ooEMOop_; } + int missingHits() const { return missingHits_; } + int charge() const { return charge_; } + float ecalIso() const { return ecalIso_; } + float hcalIso() const { return hcalIso_; } + float trackIso() const { return trackIso_; } + + private: + float pt_; + float eta_; + float phi_; + float m_; + float d0_; + float dz_; + float dEtaIn_; + float dPhiIn_; + float sigmaIetaIeta_; + float hOverE_; + float ooEMOop_; + int missingHits_; + int charge_; + float ecalIso_; + float hcalIso_; + float trackIso_; +}; + +typedef std::vector ScoutingElectronCollection; + +#endif diff --git a/DataFormats/Scouting/interface/ScoutingMuon.h b/DataFormats/Scouting/interface/ScoutingMuon.h new file mode 100644 index 0000000000000..84452c16e281b --- /dev/null +++ b/DataFormats/Scouting/interface/ScoutingMuon.h @@ -0,0 +1,71 @@ +#ifndef DataFormats_ScoutingMuon_h +#define DataFormats_ScoutingMuon_h + +#include + +// Class for holding muon information, for use in data scouting +// IMPORTANT: the content of this class should be changed only in backwards compatible ways! +class ScoutingMuon +{ + public: + //constructor with values for all data fields + ScoutingMuon(float pt, float eta, float phi, float m, float ecalIso, float hcalIso, + float trackIso, float chi2, float ndof, int charge, float dxy, float dz, + int nValidMuonHits, int nValidPixelHits, int nMatchedStations, + int nTrackerLayersWithMeasurement, int type): + pt_(pt), eta_(eta), phi_(phi), m_(m), + ecalIso_(ecalIso), hcalIso_(hcalIso), trackIso_(trackIso), + chi2_(chi2), ndof_(ndof), charge_(charge), dxy_(dxy), dz_(dz), + nValidMuonHits_(nValidMuonHits), nValidPixelHits_(nValidPixelHits), + nMatchedStations_(nMatchedStations), + nTrackerLayersWithMeasurement_(nTrackerLayersWithMeasurement), type_(type) {} + //default constructor + ScoutingMuon():pt_(0), eta_(0), phi_(0), m_(0), ecalIso_(0), hcalIso_(0), trackIso_(0), + chi2_(0), ndof_(0), charge_(0), dxy_(0), dz_(0), nValidMuonHits_(0), + nValidPixelHits_(0), nMatchedStations_(0), nTrackerLayersWithMeasurement_(0), + type_(0) {} + + //accessor functions + float pt() const { return pt_; } + float eta() const { return eta_; } + float phi() const { return phi_; } + float m() const { return m_; } + float ecalIso() const { return ecalIso_; } + float hcalIso() const { return hcalIso_; } + float trackIso() const { return trackIso_; } + float chi2() const { return chi2_; } + float ndof() const { return ndof_; } + int charge() const { return charge_; } + float dxy() const { return dxy_; } + float dz() const { return dz_; } + int nValidMuonHits() const { return nValidMuonHits_; } + int nValidPixelHits() const { return nValidPixelHits_; } + int nMatchedStations() const { return nMatchedStations_; } + int nTrackerLayersWithMeasurement() const { return nTrackerLayersWithMeasurement_; } + int type() const { return type_; } + bool isGlobalMuon() const { return type_ & 1<<1; } + bool isTrackerMuon() const { return type_ & 1<<2; } + + private: + float pt_; + float eta_; + float phi_; + float m_; + float ecalIso_; + float hcalIso_; + float trackIso_; + float chi2_; + float ndof_; + int charge_; + float dxy_; + float dz_; + int nValidMuonHits_; + int nValidPixelHits_; + int nMatchedStations_; + int nTrackerLayersWithMeasurement_; + int type_; +}; + +typedef std::vector ScoutingMuonCollection; + +#endif diff --git a/DataFormats/Scouting/interface/ScoutingPhoton.h b/DataFormats/Scouting/interface/ScoutingPhoton.h new file mode 100644 index 0000000000000..7972234e73d63 --- /dev/null +++ b/DataFormats/Scouting/interface/ScoutingPhoton.h @@ -0,0 +1,43 @@ +#ifndef DataFormats_ScoutingPhoton_h +#define DataFormats_ScoutingPhoton_h + +#include + +// Class for holding photon information, for use in data scouting +// IMPORTANT: the content of this class should be changed only in backwards compatible ways! +class ScoutingPhoton +{ + public: + //constructor with values for all data fields + ScoutingPhoton(float pt, float eta, float phi, float m, float sigmaIetaIeta, float hOverE, + float ecalIso, float hcalIso): + pt_(pt), eta_(eta), phi_(phi), m_(m), sigmaIetaIeta_(sigmaIetaIeta), hOverE_(hOverE), + ecalIso_(ecalIso), hcalIso_(hcalIso) {} + //default constructor + ScoutingPhoton(): pt_(0), eta_(0), phi_(0), m_(0), sigmaIetaIeta_(0), hOverE_(0), + ecalIso_(0), hcalIso_(0) {} + + //accessor functions + float pt() const { return pt_; } + float eta() const { return eta_; } + float phi() const { return phi_; } + float m() const { return m_; } + float sigmaIetaIeta() const { return sigmaIetaIeta_; } + float hOverE() const { return hOverE_; } + float ecalIso() const { return ecalIso_; } + float hcalIso() const { return hcalIso_; } + + private: + float pt_; + float eta_; + float phi_; + float m_; + float sigmaIetaIeta_; + float hOverE_; + float ecalIso_; + float hcalIso_; +}; + +typedef std::vector ScoutingPhotonCollection; + +#endif diff --git a/DataFormats/Scouting/src/classes.h b/DataFormats/Scouting/src/classes.h index 93ab8ec08480f..0a43ece569c5e 100755 --- a/DataFormats/Scouting/src/classes.h +++ b/DataFormats/Scouting/src/classes.h @@ -2,6 +2,9 @@ #include "DataFormats/Scouting/interface/ScoutingPFJet.h" #include "DataFormats/Scouting/interface/ScoutingParticle.h" #include "DataFormats/Scouting/interface/ScoutingVertex.h" +#include "DataFormats/Scouting/interface/ScoutingElectron.h" +#include "DataFormats/Scouting/interface/ScoutingMuon.h" +#include "DataFormats/Scouting/interface/ScoutingPhoton.h" #include "DataFormats/Common/interface/Wrapper.h" #include "DataFormats/Common/interface/Ref.h" @@ -12,5 +15,8 @@ namespace DataFormats_Scouting { edm::Wrapper sc2; edm::Wrapper sc3; edm::Wrapper sc4; + edm::Wrapper sc5; + edm::Wrapper sc6; + edm::Wrapper sc7; }; } diff --git a/DataFormats/Scouting/src/classes_def.xml b/DataFormats/Scouting/src/classes_def.xml index 6ff839cd37b9d..02149d0e16d01 100755 --- a/DataFormats/Scouting/src/classes_def.xml +++ b/DataFormats/Scouting/src/classes_def.xml @@ -12,12 +12,27 @@ + + + + + + + + + + + + + + + diff --git a/HLTrigger/Egamma/BuildFile.xml b/HLTrigger/Egamma/BuildFile.xml index b4c63d05653d5..4e9b4958ebc12 100644 --- a/HLTrigger/Egamma/BuildFile.xml +++ b/HLTrigger/Egamma/BuildFile.xml @@ -5,6 +5,7 @@ + diff --git a/HLTrigger/Egamma/plugins/BuildFile.xml b/HLTrigger/Egamma/plugins/BuildFile.xml new file mode 100644 index 0000000000000..147b6972ec457 --- /dev/null +++ b/HLTrigger/Egamma/plugins/BuildFile.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/HLTrigger/Egamma/plugins/HLTScoutingEgammaProducer.cc b/HLTrigger/Egamma/plugins/HLTScoutingEgammaProducer.cc new file mode 100644 index 0000000000000..f890db7d6d48b --- /dev/null +++ b/HLTrigger/Egamma/plugins/HLTScoutingEgammaProducer.cc @@ -0,0 +1,282 @@ +// -*- C++ -*- +// +// Package: HLTrigger/Egamma +// Class: HLTScoutingEgammaProducer +// +/**\class HLTScoutingEgammaProducer HLTScoutingEgammaProducer.cc HLTrigger/Egamma/plugin/HLTScoutingEgammaProducer.cc + +Description: Producer for ScoutingElectron and ScoutingPhoton + +*/ +// +// Original Author: David G. Sheffield (Rutgers) +// Created: Mon, 20 Jul 2015 +// +// + +// system include files +#include + +// user include files +#include "FWCore/Framework/interface/Frameworkfwd.h" +#include "FWCore/Framework/interface/global/EDProducer.h" +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/MakerMacros.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" + +#include "DataFormats/Common/interface/AssociationMap.h" +#include "DataFormats/Common/interface/getRef.h" +#include "DataFormats/EgammaReco/interface/ElectronSeed.h" +#include "DataFormats/EgammaReco/interface/ElectronSeedFwd.h" +#include "DataFormats/EgammaReco/interface/SuperCluster.h" +#include "DataFormats/GsfTrackReco/interface/GsfTrack.h" +#include "DataFormats/GsfTrackReco/interface/GsfTrackFwd.h" +#include "DataFormats/RecoCandidate/interface/RecoEcalCandidateFwd.h" +#include "DataFormats/RecoCandidate/interface/RecoEcalCandidate.h" +#include "DataFormats/TrajectorySeed/interface/TrajectorySeedCollection.h" + +#include "DataFormats/Scouting/interface/ScoutingElectron.h" +#include "DataFormats/Scouting/interface/ScoutingPhoton.h" + +class HLTScoutingEgammaProducer : public edm::global::EDProducer<> { + typedef edm::AssociationMap, float, + unsigned int> > RecoEcalCandMap; + public: + explicit HLTScoutingEgammaProducer(const edm::ParameterSet&); + ~HLTScoutingEgammaProducer(); + + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); + + private: + virtual void produce(edm::StreamID sid, edm::Event & iEvent, edm::EventSetup const & setup) + const override final; + + const edm::EDGetTokenT EgammaCandidateCollection_; + const edm::EDGetTokenT EgammaGsfTrackCollection_; + const edm::EDGetTokenT SigmaIEtaIEtaMap_; + const edm::EDGetTokenT HoverEMap_; + const edm::EDGetTokenT DetaMap_; + const edm::EDGetTokenT DphiMap_; + const edm::EDGetTokenT MissingHitsMap_; + const edm::EDGetTokenT OneOEMinusOneOPMap_; + const edm::EDGetTokenT EcalPFClusterIsoMap_; + const edm::EDGetTokenT EleGsfTrackIsoMap_; + const edm::EDGetTokenT HcalPFClusterIsoMap_; + + const double egammaPtCut; + const double egammaEtaCut; + const double egammaHoverECut; +}; + +// +// constructors and destructor +// +HLTScoutingEgammaProducer::HLTScoutingEgammaProducer(const edm::ParameterSet& iConfig): + EgammaCandidateCollection_(consumes + (iConfig.getParameter("EgammaCandidates"))), + EgammaGsfTrackCollection_(consumes + (iConfig.getParameter("EgammaGsfTracks"))), + SigmaIEtaIEtaMap_(consumes(iConfig.getParameter( + "SigmaIEtaIEtaMap"))), + HoverEMap_(consumes(iConfig.getParameter("HoverEMap"))), + DetaMap_(consumes(iConfig.getParameter("DetaMap"))), + DphiMap_(consumes(iConfig.getParameter("DphiMap"))), + MissingHitsMap_(consumes(iConfig.getParameter( + "MissingHitsMap"))), + OneOEMinusOneOPMap_(consumes(iConfig.getParameter( + "OneOEMinusOneOPMap"))), + EcalPFClusterIsoMap_(consumes(iConfig.getParameter( + "EcalPFClusterIsoMap"))), + EleGsfTrackIsoMap_(consumes(iConfig.getParameter( + "EleGsfTrackIsoMap"))), + HcalPFClusterIsoMap_(consumes(iConfig.getParameter( + "HcalPFClusterIsoMap"))), + egammaPtCut(iConfig.getParameter("egammaPtCut")), + egammaEtaCut(iConfig.getParameter("egammaEtaCut")), + egammaHoverECut(iConfig.getParameter("egammaHoverECut")) +{ + //register products + produces(); + produces(); +} + +HLTScoutingEgammaProducer::~HLTScoutingEgammaProducer() +{ } + +// ------------ method called to produce the data ------------ +void HLTScoutingEgammaProducer::produce(edm::StreamID sid, edm::Event & iEvent, edm::EventSetup const & setup) const +{ + using namespace edm; + + // Get RecoEcalCandidate + Handle EgammaCandidateCollection; + if(!iEvent.getByToken(EgammaCandidateCollection_, + EgammaCandidateCollection)){ + edm::LogError ("HLTScoutingEgammaProducer") + << "invalid collection: EgammaCandidateCollection" << "\n"; + return; + } + + // Get GsfTrack + Handle EgammaGsfTrackCollection; + if(!iEvent.getByToken(EgammaGsfTrackCollection_, + EgammaGsfTrackCollection)){ + edm::LogError ("HLTScoutingEgammaProducer") + << "invalid collection: EgammaGsfTrackCollection" << "\n"; + return; + } + + // Get SigmaIEtaIEtaMap + Handle SigmaIEtaIEtaMap; + if(!iEvent.getByToken(SigmaIEtaIEtaMap_, SigmaIEtaIEtaMap)){ + edm::LogError ("HLTScoutingEgammaProducer") + << "invalid collection: hltEgammaClusterShape:sigmaIEtaIEta5x5" << "\n"; + return; + } + + // Get HoverEMap + Handle HoverEMap; + if(!iEvent.getByToken(HoverEMap_, HoverEMap)){ + edm::LogError ("HLTScoutingEgammaProducer") + << "invalid collection: hltEgammaHoverE" << "\n"; + return; + } + + // Get DetaMap + Handle DetaMap; + if(!iEvent.getByToken(DetaMap_, DetaMap)){ + edm::LogError ("HLTScoutingEgammaProducer") + << "invalid collection: hltEgammaGsfTrackVars:Deta" << "\n"; + return; + } + + // Get DphiMap + Handle DphiMap; + if(!iEvent.getByToken(DphiMap_, DphiMap)){ + edm::LogError ("HLTScoutingEgammaProducer") + << "invalid collection: hltEgammaGsfTrackVars:Dphi" << "\n"; + return; + } + + // Get MissingHitsMap + Handle MissingHitsMap; + if(!iEvent.getByToken(MissingHitsMap_, MissingHitsMap)){ + edm::LogError ("HLTScoutingEgammaProducer") + << "invalid collection: hltEgammaGsfTrackVars:MissingHits" << "\n"; + return; + } + + // Get 1/E - 1/p Map + Handle OneOEMinusOneOPMap; + if(!iEvent.getByToken(OneOEMinusOneOPMap_, OneOEMinusOneOPMap)){ + edm::LogError ("HLTScoutingEgammaProducer") + << "invalid collection: hltEgammaGsfTrackVars:OneOESuperMinusOneOP" << "\n"; + return; + } + + // Get EcalPFClusterIsoMap + Handle EcalPFClusterIsoMap; + if(!iEvent.getByToken(EcalPFClusterIsoMap_, EcalPFClusterIsoMap)){ + edm::LogError ("HLTScoutingEgammaProducer") + << "invalid collection: hltEgammaEcalPFClusterIso" << "\n"; + return; + } + + // Get EleGsfTrackIsoMap + Handle EleGsfTrackIsoMap; + if(!iEvent.getByToken(EleGsfTrackIsoMap_, EleGsfTrackIsoMap)){ + edm::LogError ("HLTScoutingEgammaProducer") + << "invalid collection: hltEgammaEleGsfTrackIso" << "\n"; + return; + } + + // Get HcalPFClusterIsoMap + Handle HcalPFClusterIsoMap; + if(!iEvent.getByToken(HcalPFClusterIsoMap_, HcalPFClusterIsoMap)){ + edm::LogError ("HLTScoutingEgammaProducer") + << "invalid collection: HcalPFClusterIso" << "\n"; + return; + } + + // Produce electrons and photons + std::auto_ptr outElectrons(new ScoutingElectronCollection()); + std::auto_ptr outPhotons(new ScoutingPhotonCollection()); + int index = 0; + for (auto &candidate : *EgammaCandidateCollection) { + reco::RecoEcalCandidateRef candidateRef = getRef(EgammaCandidateCollection, index); + ++index; + if (candidateRef.isNull() && !candidateRef.isAvailable()) + continue; + + if ((*HoverEMap)[candidateRef] > egammaHoverECut) + continue; + if (candidate.pt() < egammaPtCut) + continue; + if (fabs(candidate.eta()) > egammaEtaCut) + continue; + + reco::SuperClusterRef scRef = candidate.superCluster(); + if (scRef.isNull() && !scRef.isAvailable()) + continue; + float d0 = 0.0; + float dz = 0.0; + int charge = -999; + for (auto &track: *EgammaGsfTrackCollection) { + RefToBase seed = track.extra()->seedRef(); + reco::ElectronSeedRef elseed = seed.castTo(); + RefToBase caloCluster = elseed->caloCluster(); + reco::SuperClusterRef scRefFromTrk = caloCluster.castTo() ; + if (scRefFromTrk == scRef) { + d0 = track.d0(); + dz = track.dz(); + charge = track.charge(); + } + } + if (charge == -999) { // No associated track. Candidate is a scouting photon + outPhotons->emplace_back(candidate.pt(), candidate.eta(), candidate.phi(), + candidate.mass(), (*SigmaIEtaIEtaMap)[candidateRef], + (*HoverEMap)[candidateRef], + (*EcalPFClusterIsoMap)[candidateRef], + (*HcalPFClusterIsoMap)[candidateRef]); + } else { // Candidate is a scouting electron + outElectrons->emplace_back(candidate.pt(), candidate.eta(), candidate.phi(), + candidate.mass(), d0, dz, (*DetaMap)[candidateRef], + (*DphiMap)[candidateRef], (*SigmaIEtaIEtaMap)[candidateRef], + (*HoverEMap)[candidateRef], + (*OneOEMinusOneOPMap)[candidateRef], + (*MissingHitsMap)[candidateRef], charge, + (*EcalPFClusterIsoMap)[candidateRef], + (*HcalPFClusterIsoMap)[candidateRef], + (*EleGsfTrackIsoMap)[candidateRef]); + } + } + + // Put output + iEvent.put(outElectrons); + iEvent.put(outPhotons); +} + +// ------------ method fills 'descriptions' with the allowed parameters for the module ------------ +void HLTScoutingEgammaProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + edm::ParameterSetDescription desc; + desc.add("EgammaCandidates", edm::InputTag("hltEgammaCandidates")); + desc.add("EgammaGsfTracks", edm::InputTag("hltEgammaGsfTracks")); + desc.add("SigmaIEtaIEtaMap", edm::InputTag( + "hltEgammaClusterShape:sigmaIEtaIEta5x5")); + desc.add("HoverEMap", edm::InputTag("hltEgammaHoverE")); + desc.add("DetaMap", edm::InputTag("hltEgammaGsfTrackVars:Deta")); + desc.add("DphiMap", edm::InputTag("hltEgammaGsfTrackVars:Dphi")); + desc.add("MissingHitsMap", edm::InputTag("hltEgammaGsfTrackVars:MissingHits")); + desc.add("OneOEMinusOneOPMap", edm::InputTag( + "hltEgammaGsfTrackVars:OneOESuperMinusOneOP")); + desc.add("EcalPFClusterIsoMap", edm::InputTag("hltEgammaEcalPFClusterIso")); + desc.add("EleGsfTrackIsoMap", edm::InputTag("hltEgammaEleGsfTrackIso")); + desc.add("HcalPFClusterIsoMap", edm::InputTag("hltEgammaHcalPFClusterIso")); + desc.add("egammaPtCut", 4.0); + desc.add("egammaEtaCut", 2.5); + desc.add("egammaHoverECut", 1.0); + descriptions.add("hltScoutingEgammaProducer", desc); +} + +//define this as a plug-in +DEFINE_FWK_MODULE(HLTScoutingEgammaProducer); diff --git a/HLTrigger/Muon/BuildFile.xml b/HLTrigger/Muon/BuildFile.xml index bafca0efc7fcc..4efaf0ad087d0 100644 --- a/HLTrigger/Muon/BuildFile.xml +++ b/HLTrigger/Muon/BuildFile.xml @@ -8,6 +8,7 @@ + diff --git a/HLTrigger/Muon/plugins/BuildFile.xml b/HLTrigger/Muon/plugins/BuildFile.xml new file mode 100644 index 0000000000000..bb2e5083cb903 --- /dev/null +++ b/HLTrigger/Muon/plugins/BuildFile.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/HLTrigger/Muon/plugins/HLTScoutingMuonProducer.cc b/HLTrigger/Muon/plugins/HLTScoutingMuonProducer.cc new file mode 100644 index 0000000000000..de097328aa9f6 --- /dev/null +++ b/HLTrigger/Muon/plugins/HLTScoutingMuonProducer.cc @@ -0,0 +1,179 @@ +// -*- C++ -*- +// +// Package: HLTrigger/Muon +// Class: HLTScoutingMuonProducer +// +/**\class HLTScoutingMuonProducer HLTScoutingMuonProducer.cc HLTrigger/Muon/plugin/HLTScoutingMuonProducer.cc + +Description: Producer for ScoutingElectron + +*/ +// +// Original Author: David G. Sheffield (Rutgers) +// Created: Fri, 31 Jul 2015 +// +// + +// system include files +#include + +// user include files +#include "FWCore/Framework/interface/Frameworkfwd.h" +#include "FWCore/Framework/interface/global/EDProducer.h" +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/MakerMacros.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" + +#include "DataFormats/Common/interface/AssociationMap.h" +#include "DataFormats/Common/interface/getRef.h" +#include "DataFormats/Common/interface/ValueMap.h" +#include "DataFormats/RecoCandidate/interface/RecoChargedCandidate.h" +#include "DataFormats/RecoCandidate/interface/RecoChargedCandidateFwd.h" +#include "DataFormats/TrackReco/interface/HitPattern.h" +#include "DataFormats/TrackReco/interface/Track.h" +#include "DataFormats/TrackReco/interface/TrackFwd.h" + +#include "DataFormats/Scouting/interface/ScoutingMuon.h" + +class HLTScoutingMuonProducer : public edm::global::EDProducer<> { + typedef edm::AssociationMap, float, + unsigned int> > RecoChargedCandMap; + public: + explicit HLTScoutingMuonProducer(const edm::ParameterSet&); + ~HLTScoutingMuonProducer(); + + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); + + private: + virtual void produce(edm::StreamID sid, edm::Event & iEvent, edm::EventSetup const & setup) + const override final; + + const edm::EDGetTokenT ChargedCandidateCollection_; + const edm::EDGetTokenT TrackCollection_; + const edm::EDGetTokenT EcalPFClusterIsoMap_; + const edm::EDGetTokenT HcalPFClusterIsoMap_; + const edm::EDGetTokenT> TrackIsoMap_; + + const double muonPtCut; + const double muonEtaCut; +}; + +// +// constructors and destructor +// +HLTScoutingMuonProducer::HLTScoutingMuonProducer(const edm::ParameterSet& iConfig): + ChargedCandidateCollection_(consumes + (iConfig.getParameter("ChargedCandidates"))), + TrackCollection_(consumes + (iConfig.getParameter("Tracks"))), + EcalPFClusterIsoMap_(consumes(iConfig.getParameter( + "EcalPFClusterIsoMap"))), + HcalPFClusterIsoMap_(consumes(iConfig.getParameter( + "HcalPFClusterIsoMap"))), + TrackIsoMap_(consumes>(iConfig.getParameter( + "TrackIsoMap"))), + muonPtCut(iConfig.getParameter("muonPtCut")), + muonEtaCut(iConfig.getParameter("muonEtaCut")) +{ + //register products + produces(); +} + +HLTScoutingMuonProducer::~HLTScoutingMuonProducer() +{ } + +// ------------ method called to produce the data ------------ +void HLTScoutingMuonProducer::produce(edm::StreamID sid, edm::Event & iEvent, + edm::EventSetup const & setup) const +{ + using namespace edm; + + // Get RecoChargedCandidate + Handle ChargedCandidateCollection; + if(!iEvent.getByToken(ChargedCandidateCollection_, ChargedCandidateCollection)){ + edm::LogError ("HLTScoutingMuonProducer") + << "invalid collection: ChargedCandidateCollection" << "\n"; + return; + } + + // Get Track + Handle TrackCollection; + if(!iEvent.getByToken(TrackCollection_, TrackCollection)){ + edm::LogError ("HLTScoutingMuonProducer") + << "invalid collection: TrackCollection" << "\n"; + return; + } + + // Get EcalPFClusterIsoMap + Handle EcalPFClusterIsoMap; + if(!iEvent.getByToken(EcalPFClusterIsoMap_, EcalPFClusterIsoMap)){ + edm::LogError ("HLTScoutingMuonProducer") + << "invalid collection: hltMuonEcalPFClusterIsoForMuons" << "\n"; + return; + } + + // Get HcalPFClusterIsoMap + Handle HcalPFClusterIsoMap; + if(!iEvent.getByToken(HcalPFClusterIsoMap_, HcalPFClusterIsoMap)){ + edm::LogError ("HLTScoutingMuonProducer") + << "invalid collection: hltMuonHcalPFClusterIsoForMuons" << "\n"; + return; + } + + // Get TrackIsoMap + Handle> TrackIsoMap; + if(!iEvent.getByToken(TrackIsoMap_, TrackIsoMap)){ + edm::LogError ("HLTScoutingMuonProducer") + << "invalid collection: TrackIsoMap" << "\n"; + return; + } + + // Produce muons + std::auto_ptr outMuons(new ScoutingMuonCollection()); + int index = 0; + for (auto &muon : *ChargedCandidateCollection) { + reco::RecoChargedCandidateRef muonRef = getRef(ChargedCandidateCollection, index); + ++index; + if (muonRef.isNull() || !muonRef.isAvailable()) + continue; + + reco::TrackRef track = muon.track(); + if (track.isNull() || !track.isAvailable()) + continue; + + if (muon.pt() < muonPtCut) + continue; + if (fabs(muon.eta()) > muonEtaCut) + continue; + + outMuons->emplace_back(muon.pt(), muon.eta(), muon.phi(), muon.mass(), + (*EcalPFClusterIsoMap)[muonRef], (*HcalPFClusterIsoMap)[muonRef], + (*TrackIsoMap)[muonRef], track->chi2(), track->ndof(), + track->charge(), track->dxy(), track->dz(), + track->hitPattern().numberOfValidMuonHits(), + track->hitPattern().numberOfValidPixelHits(), + 0, // nMatchedStations + track->hitPattern().trackerLayersWithMeasurement(), + 2); // Global muon + } + + // Put output + iEvent.put(outMuons); +} + +// ------------ method fills 'descriptions' with the allowed parameters for the module ------------ +void HLTScoutingMuonProducer::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { + edm::ParameterSetDescription desc; + desc.add("ChargedCandidates", edm::InputTag("hltL3MuonCandidates")); + desc.add("Tracks", edm::InputTag("hltL3Muons")); + desc.add("EcalPFClusterIsoMap", edm::InputTag("hltMuonEcalPFClusterIsoForMuons")); + desc.add("HcalPFClusterIsoMap", edm::InputTag("hltMuonHcalPFClusterIsoForMuons")); + desc.add("TrackIsoMap", edm::InputTag( + "hltMuonTkRelIsolationCut0p09Map:combinedRelativeIsoDeposits")); + desc.add("muonPtCut", 4.0); + desc.add("muonEtaCut", 2.4); + descriptions.add("scoutingMuonProducer", desc); +} + +//define this as a plug-in +DEFINE_FWK_MODULE(HLTScoutingMuonProducer); From 61d53657e5445e64e532499a9ca18af7050b204b Mon Sep 17 00:00:00 2001 From: David Sheffield Date: Fri, 4 Sep 2015 13:11:57 -0500 Subject: [PATCH 2/2] Move producers to src directory --- .../interface/HLTScoutingEgammaProducer.h | 74 +++++++++++++++++++ HLTrigger/Egamma/plugins/BuildFile.xml | 7 -- .../HLTScoutingEgammaProducer.cc | 59 +-------------- HLTrigger/Egamma/src/SealModule.cc | 4 + .../Muon/interface/HLTScoutingMuonProducer.h | 64 ++++++++++++++++ HLTrigger/Muon/plugins/BuildFile.xml | 7 -- .../HLTScoutingMuonProducer.cc | 51 +------------ HLTrigger/Muon/src/SealModule.cc | 3 +- 8 files changed, 149 insertions(+), 120 deletions(-) create mode 100644 HLTrigger/Egamma/interface/HLTScoutingEgammaProducer.h delete mode 100644 HLTrigger/Egamma/plugins/BuildFile.xml rename HLTrigger/Egamma/{plugins => src}/HLTScoutingEgammaProducer.cc (79%) create mode 100644 HLTrigger/Muon/interface/HLTScoutingMuonProducer.h delete mode 100644 HLTrigger/Muon/plugins/BuildFile.xml rename HLTrigger/Muon/{plugins => src}/HLTScoutingMuonProducer.cc (72%) diff --git a/HLTrigger/Egamma/interface/HLTScoutingEgammaProducer.h b/HLTrigger/Egamma/interface/HLTScoutingEgammaProducer.h new file mode 100644 index 0000000000000..eeff9c8fbb5be --- /dev/null +++ b/HLTrigger/Egamma/interface/HLTScoutingEgammaProducer.h @@ -0,0 +1,74 @@ +#ifndef HLTScoutingEgammaProducer_h +#define HLTScoutingEgammaProducer_h + +// -*- C++ -*- +// +// Package: HLTrigger/Egamma +// Class: HLTScoutingEgammaProducer +// +/**\class HLTScoutingEgammaProducer HLTScoutingEgammaProducer.h HLTrigger/Egamma/interface/HLTScoutingEgammaProducer.h + +Description: Producer for ScoutingElectron and ScoutingPhoton + +*/ +// +// Original Author: David G. Sheffield (Rutgers) +// Created: Mon, 20 Jul 2015 +// +// + +// system include files +#include + +// user include files +#include "FWCore/Framework/interface/Frameworkfwd.h" +#include "FWCore/Framework/interface/global/EDProducer.h" +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/MakerMacros.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" + +#include "DataFormats/Common/interface/AssociationMap.h" +#include "DataFormats/Common/interface/getRef.h" +#include "DataFormats/EgammaReco/interface/ElectronSeed.h" +#include "DataFormats/EgammaReco/interface/ElectronSeedFwd.h" +#include "DataFormats/EgammaReco/interface/SuperCluster.h" +#include "DataFormats/GsfTrackReco/interface/GsfTrack.h" +#include "DataFormats/GsfTrackReco/interface/GsfTrackFwd.h" +#include "DataFormats/RecoCandidate/interface/RecoEcalCandidateFwd.h" +#include "DataFormats/RecoCandidate/interface/RecoEcalCandidate.h" +#include "DataFormats/TrajectorySeed/interface/TrajectorySeedCollection.h" + +#include "DataFormats/Scouting/interface/ScoutingElectron.h" +#include "DataFormats/Scouting/interface/ScoutingPhoton.h" + +class HLTScoutingEgammaProducer : public edm::global::EDProducer<> { + typedef edm::AssociationMap, float, + unsigned int> > RecoEcalCandMap; + public: + explicit HLTScoutingEgammaProducer(const edm::ParameterSet&); + ~HLTScoutingEgammaProducer(); + + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); + + private: + virtual void produce(edm::StreamID sid, edm::Event & iEvent, edm::EventSetup const & setup) + const override final; + + const edm::EDGetTokenT EgammaCandidateCollection_; + const edm::EDGetTokenT EgammaGsfTrackCollection_; + const edm::EDGetTokenT SigmaIEtaIEtaMap_; + const edm::EDGetTokenT HoverEMap_; + const edm::EDGetTokenT DetaMap_; + const edm::EDGetTokenT DphiMap_; + const edm::EDGetTokenT MissingHitsMap_; + const edm::EDGetTokenT OneOEMinusOneOPMap_; + const edm::EDGetTokenT EcalPFClusterIsoMap_; + const edm::EDGetTokenT EleGsfTrackIsoMap_; + const edm::EDGetTokenT HcalPFClusterIsoMap_; + + const double egammaPtCut; + const double egammaEtaCut; + const double egammaHoverECut; +}; + +#endif diff --git a/HLTrigger/Egamma/plugins/BuildFile.xml b/HLTrigger/Egamma/plugins/BuildFile.xml deleted file mode 100644 index 147b6972ec457..0000000000000 --- a/HLTrigger/Egamma/plugins/BuildFile.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/HLTrigger/Egamma/plugins/HLTScoutingEgammaProducer.cc b/HLTrigger/Egamma/src/HLTScoutingEgammaProducer.cc similarity index 79% rename from HLTrigger/Egamma/plugins/HLTScoutingEgammaProducer.cc rename to HLTrigger/Egamma/src/HLTScoutingEgammaProducer.cc index f890db7d6d48b..b176baebc6f91 100644 --- a/HLTrigger/Egamma/plugins/HLTScoutingEgammaProducer.cc +++ b/HLTrigger/Egamma/src/HLTScoutingEgammaProducer.cc @@ -3,7 +3,7 @@ // Package: HLTrigger/Egamma // Class: HLTScoutingEgammaProducer // -/**\class HLTScoutingEgammaProducer HLTScoutingEgammaProducer.cc HLTrigger/Egamma/plugin/HLTScoutingEgammaProducer.cc +/**\class HLTScoutingEgammaProducer HLTScoutingEgammaProducer.cc HLTrigger/Egamma/src/HLTScoutingEgammaProducer.cc Description: Producer for ScoutingElectron and ScoutingPhoton @@ -14,59 +14,7 @@ Description: Producer for ScoutingElectron and ScoutingPhoton // // -// system include files -#include - -// user include files -#include "FWCore/Framework/interface/Frameworkfwd.h" -#include "FWCore/Framework/interface/global/EDProducer.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/MakerMacros.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" - -#include "DataFormats/Common/interface/AssociationMap.h" -#include "DataFormats/Common/interface/getRef.h" -#include "DataFormats/EgammaReco/interface/ElectronSeed.h" -#include "DataFormats/EgammaReco/interface/ElectronSeedFwd.h" -#include "DataFormats/EgammaReco/interface/SuperCluster.h" -#include "DataFormats/GsfTrackReco/interface/GsfTrack.h" -#include "DataFormats/GsfTrackReco/interface/GsfTrackFwd.h" -#include "DataFormats/RecoCandidate/interface/RecoEcalCandidateFwd.h" -#include "DataFormats/RecoCandidate/interface/RecoEcalCandidate.h" -#include "DataFormats/TrajectorySeed/interface/TrajectorySeedCollection.h" - -#include "DataFormats/Scouting/interface/ScoutingElectron.h" -#include "DataFormats/Scouting/interface/ScoutingPhoton.h" - -class HLTScoutingEgammaProducer : public edm::global::EDProducer<> { - typedef edm::AssociationMap, float, - unsigned int> > RecoEcalCandMap; - public: - explicit HLTScoutingEgammaProducer(const edm::ParameterSet&); - ~HLTScoutingEgammaProducer(); - - static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); - - private: - virtual void produce(edm::StreamID sid, edm::Event & iEvent, edm::EventSetup const & setup) - const override final; - - const edm::EDGetTokenT EgammaCandidateCollection_; - const edm::EDGetTokenT EgammaGsfTrackCollection_; - const edm::EDGetTokenT SigmaIEtaIEtaMap_; - const edm::EDGetTokenT HoverEMap_; - const edm::EDGetTokenT DetaMap_; - const edm::EDGetTokenT DphiMap_; - const edm::EDGetTokenT MissingHitsMap_; - const edm::EDGetTokenT OneOEMinusOneOPMap_; - const edm::EDGetTokenT EcalPFClusterIsoMap_; - const edm::EDGetTokenT EleGsfTrackIsoMap_; - const edm::EDGetTokenT HcalPFClusterIsoMap_; - - const double egammaPtCut; - const double egammaEtaCut; - const double egammaHoverECut; -}; +#include "HLTrigger/Egamma/interface/HLTScoutingEgammaProducer.h" // // constructors and destructor @@ -277,6 +225,3 @@ void HLTScoutingEgammaProducer::fillDescriptions(edm::ConfigurationDescriptions& desc.add("egammaHoverECut", 1.0); descriptions.add("hltScoutingEgammaProducer", desc); } - -//define this as a plug-in -DEFINE_FWK_MODULE(HLTScoutingEgammaProducer); diff --git a/HLTrigger/Egamma/src/SealModule.cc b/HLTrigger/Egamma/src/SealModule.cc index 3667a5cf3dbea..f1608349ae9eb 100644 --- a/HLTrigger/Egamma/src/SealModule.cc +++ b/HLTrigger/Egamma/src/SealModule.cc @@ -40,6 +40,8 @@ #include "HLTrigger/Egamma/interface/HLTElectronPFMTFilter.h" #include "HLTrigger/Egamma/src/HLTElectronPFMTFilter.cc" +#include "HLTrigger/Egamma/interface/HLTScoutingEgammaProducer.h" + DEFINE_FWK_MODULE(HLTEgammaGenericQuadraticFilter); DEFINE_FWK_MODULE(HLTEgammaGenericQuadraticEtaFilter); DEFINE_FWK_MODULE(HLTEgammaEtFilter); @@ -75,3 +77,5 @@ DEFINE_FWK_MODULE(HLTEgammaAllCombMassFilter); DEFINE_FWK_MODULE(HLTDisplacedEgammaFilter); DEFINE_FWK_MODULE(HLTElectronMissingHitsFilter); + +DEFINE_FWK_MODULE(HLTScoutingEgammaProducer); diff --git a/HLTrigger/Muon/interface/HLTScoutingMuonProducer.h b/HLTrigger/Muon/interface/HLTScoutingMuonProducer.h new file mode 100644 index 0000000000000..89caffb4a53dc --- /dev/null +++ b/HLTrigger/Muon/interface/HLTScoutingMuonProducer.h @@ -0,0 +1,64 @@ +#ifndef HLTScoutingMuonProducer_h +#define HLTScoutingMuonProducer_h + +// -*- C++ -*- +// +// Package: HLTrigger/Muon +// Class: HLTScoutingMuonProducer +// +/**\class HLTScoutingMuonProducer HLTScoutingMuonProducer.h HLTrigger/Muon/interface/HLTScoutingMuonProducer.h + +Description: Producer for ScoutingMuon + +*/ +// +// Original Author: David G. Sheffield (Rutgers) +// Created: Fri, 31 Jul 2015 +// +// + +// system include files +#include + +// user include files +#include "FWCore/Framework/interface/Frameworkfwd.h" +#include "FWCore/Framework/interface/global/EDProducer.h" +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/MakerMacros.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" + +#include "DataFormats/Common/interface/AssociationMap.h" +#include "DataFormats/Common/interface/getRef.h" +#include "DataFormats/Common/interface/ValueMap.h" +#include "DataFormats/RecoCandidate/interface/RecoChargedCandidate.h" +#include "DataFormats/RecoCandidate/interface/RecoChargedCandidateFwd.h" +#include "DataFormats/TrackReco/interface/HitPattern.h" +#include "DataFormats/TrackReco/interface/Track.h" +#include "DataFormats/TrackReco/interface/TrackFwd.h" + +#include "DataFormats/Scouting/interface/ScoutingMuon.h" + +class HLTScoutingMuonProducer : public edm::global::EDProducer<> { + typedef edm::AssociationMap, float, + unsigned int> > RecoChargedCandMap; + public: + explicit HLTScoutingMuonProducer(const edm::ParameterSet&); + ~HLTScoutingMuonProducer(); + + static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); + + private: + virtual void produce(edm::StreamID sid, edm::Event & iEvent, edm::EventSetup const & setup) + const override final; + + const edm::EDGetTokenT ChargedCandidateCollection_; + const edm::EDGetTokenT TrackCollection_; + const edm::EDGetTokenT EcalPFClusterIsoMap_; + const edm::EDGetTokenT HcalPFClusterIsoMap_; + const edm::EDGetTokenT> TrackIsoMap_; + + const double muonPtCut; + const double muonEtaCut; +}; + +#endif diff --git a/HLTrigger/Muon/plugins/BuildFile.xml b/HLTrigger/Muon/plugins/BuildFile.xml deleted file mode 100644 index bb2e5083cb903..0000000000000 --- a/HLTrigger/Muon/plugins/BuildFile.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/HLTrigger/Muon/plugins/HLTScoutingMuonProducer.cc b/HLTrigger/Muon/src/HLTScoutingMuonProducer.cc similarity index 72% rename from HLTrigger/Muon/plugins/HLTScoutingMuonProducer.cc rename to HLTrigger/Muon/src/HLTScoutingMuonProducer.cc index de097328aa9f6..6cc293cef48c2 100644 --- a/HLTrigger/Muon/plugins/HLTScoutingMuonProducer.cc +++ b/HLTrigger/Muon/src/HLTScoutingMuonProducer.cc @@ -3,9 +3,9 @@ // Package: HLTrigger/Muon // Class: HLTScoutingMuonProducer // -/**\class HLTScoutingMuonProducer HLTScoutingMuonProducer.cc HLTrigger/Muon/plugin/HLTScoutingMuonProducer.cc +/**\class HLTScoutingMuonProducer HLTScoutingMuonProducer.cc HLTrigger/Muon/src/HLTScoutingMuonProducer.cc -Description: Producer for ScoutingElectron +Description: Producer for ScoutingMuon */ // @@ -14,49 +14,7 @@ Description: Producer for ScoutingElectron // // -// system include files -#include - -// user include files -#include "FWCore/Framework/interface/Frameworkfwd.h" -#include "FWCore/Framework/interface/global/EDProducer.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/MakerMacros.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" - -#include "DataFormats/Common/interface/AssociationMap.h" -#include "DataFormats/Common/interface/getRef.h" -#include "DataFormats/Common/interface/ValueMap.h" -#include "DataFormats/RecoCandidate/interface/RecoChargedCandidate.h" -#include "DataFormats/RecoCandidate/interface/RecoChargedCandidateFwd.h" -#include "DataFormats/TrackReco/interface/HitPattern.h" -#include "DataFormats/TrackReco/interface/Track.h" -#include "DataFormats/TrackReco/interface/TrackFwd.h" - -#include "DataFormats/Scouting/interface/ScoutingMuon.h" - -class HLTScoutingMuonProducer : public edm::global::EDProducer<> { - typedef edm::AssociationMap, float, - unsigned int> > RecoChargedCandMap; - public: - explicit HLTScoutingMuonProducer(const edm::ParameterSet&); - ~HLTScoutingMuonProducer(); - - static void fillDescriptions(edm::ConfigurationDescriptions& descriptions); - - private: - virtual void produce(edm::StreamID sid, edm::Event & iEvent, edm::EventSetup const & setup) - const override final; - - const edm::EDGetTokenT ChargedCandidateCollection_; - const edm::EDGetTokenT TrackCollection_; - const edm::EDGetTokenT EcalPFClusterIsoMap_; - const edm::EDGetTokenT HcalPFClusterIsoMap_; - const edm::EDGetTokenT> TrackIsoMap_; - - const double muonPtCut; - const double muonEtaCut; -}; +#include "HLTrigger/Muon/interface/HLTScoutingMuonProducer.h" // // constructors and destructor @@ -174,6 +132,3 @@ void HLTScoutingMuonProducer::fillDescriptions(edm::ConfigurationDescriptions& d desc.add("muonEtaCut", 2.4); descriptions.add("scoutingMuonProducer", desc); } - -//define this as a plug-in -DEFINE_FWK_MODULE(HLTScoutingMuonProducer); diff --git a/HLTrigger/Muon/src/SealModule.cc b/HLTrigger/Muon/src/SealModule.cc index 81f2cdb427c85..20d1a517758e4 100644 --- a/HLTrigger/Muon/src/SealModule.cc +++ b/HLTrigger/Muon/src/SealModule.cc @@ -14,6 +14,7 @@ #include "HLTrigger/Muon/interface/HLTMuonPFIsoFilter.h" #include "HLTrigger/Muon/interface/HLTMuonTrkFilter.h" #include "HLTrigger/Muon/interface/HLTL1MuonSelector.h" +#include "HLTrigger/Muon/interface/HLTScoutingMuonProducer.h" DEFINE_FWK_MODULE(HLTMuonL1Filter); DEFINE_FWK_MODULE(HLTMuonL1RegionalFilter); DEFINE_FWK_MODULE(HLTMuonL2PreFilter); @@ -27,4 +28,4 @@ DEFINE_FWK_MODULE(HLTDiMuonGlbTrkFilter); DEFINE_FWK_MODULE(HLTMuonPFIsoFilter); DEFINE_FWK_MODULE(HLTMuonTrkFilter); DEFINE_FWK_MODULE(HLTL1MuonSelector); - +DEFINE_FWK_MODULE(HLTScoutingMuonProducer);