CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Attributes
HLTMuonTrkFilter Class Reference

#include <HLTMuonTrkFilter.h>

Inheritance diagram for HLTMuonTrkFilter:
HLTFilter edm::global::EDFilter<> edm::global::EDFilterBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

bool hltFilter (edm::Event &, const edm::EventSetup &, trigger::TriggerFilterObjectWithRefs &filterproduct) const override
 
 HLTMuonTrkFilter (const edm::ParameterSet &)
 
 ~HLTMuonTrkFilter () override
 
- Public Member Functions inherited from HLTFilter
 HLTFilter (const edm::ParameterSet &config)
 
int module (edm::Event const &) const
 
const std::string * moduleLabel () const
 
int path (edm::Event const &) const
 
const std::string * pathName (edm::Event const &) const
 
std::pair< int, int > pmid (edm::Event const &) const
 
bool saveTags () const
 
 ~HLTFilter () override
 
- Public Member Functions inherited from edm::global::EDFilter<>
 EDFilter ()=default
 
bool hasAbilityToProduceInLumis () const final
 
bool hasAbilityToProduceInRuns () const final
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
bool wantsStreamLuminosityBlocks () const final
 
bool wantsStreamRuns () const final
 
- Public Member Functions inherited from edm::global::EDFilterBase
 EDFilterBase ()
 
ModuleDescription const & moduleDescription () const
 
 ~EDFilterBase () override
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
 ~ProducerBase () noexcept(false) override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
- Static Public Member Functions inherited from HLTFilter
static void makeHLTFilterDescription (edm::ParameterSetDescription &desc)
 
- Static Public Member Functions inherited from edm::global::EDFilterBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Private Attributes

unsigned int m_allowedTypeMask
 
edm::InputTag m_candsTag
 
edm::EDGetTokenT< reco::RecoChargedCandidateCollectionm_candsToken
 
double m_maxAbsEta
 
double m_maxNormalizedChi2
 
int m_minMuonHits
 
int m_minMuonStations
 
unsigned int m_minN
 
double m_minPt
 
int m_minTrkHits
 
edm::InputTag m_muonsTag
 
edm::EDGetTokenT< reco::MuonCollectionm_muonsToken
 
edm::InputTag m_previousCandTag
 
edm::EDGetTokenT< trigger::TriggerFilterObjectWithRefsm_previousCandToken
 
unsigned int m_requiredTypeMask
 
bool m_saveTags
 
muon::SelectionType m_trkMuonId
 

Additional Inherited Members

- Public Types inherited from edm::global::EDFilterBase
typedef EDFilterBase ModuleType
 
- Public Types inherited from edm::ProducerBase
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex >>
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

Definition at line 14 of file HLTMuonTrkFilter.h.

Constructor & Destructor Documentation

HLTMuonTrkFilter::HLTMuonTrkFilter ( const edm::ParameterSet iConfig)

Definition at line 30 of file HLTMuonTrkFilter.cc.

References edm::ParameterSet::getParameter(), m_allowedTypeMask, m_candsTag, m_candsToken, m_maxAbsEta, m_maxNormalizedChi2, m_minMuonHits, m_minMuonStations, m_minN, m_minPt, m_minTrkHits, m_muonsTag, m_muonsToken, m_previousCandTag, m_previousCandToken, m_requiredTypeMask, and m_trkMuonId.

30  : HLTFilter(iConfig) {
31  m_muonsTag = iConfig.getParameter<edm::InputTag>("inputMuonCollection");
32  m_muonsToken = consumes<reco::MuonCollection>(m_muonsTag);
33  m_candsTag = iConfig.getParameter<edm::InputTag>("inputCandCollection");
34  m_candsToken = consumes<reco::RecoChargedCandidateCollection>(m_candsTag);
35  m_previousCandTag = iConfig.getParameter<edm::InputTag> ("previousCandTag");
36  m_previousCandToken = consumes<trigger::TriggerFilterObjectWithRefs>(m_previousCandTag);
37  m_minTrkHits = iConfig.getParameter<int>("minTrkHits");
38  m_minMuonHits = iConfig.getParameter<int>("minMuonHits");
39  m_minMuonStations = iConfig.getParameter<int>("minMuonStations");
40  m_maxNormalizedChi2 = iConfig.getParameter<double>("maxNormalizedChi2");
41  m_allowedTypeMask = iConfig.getParameter<unsigned int>("allowedTypeMask");
42  m_requiredTypeMask = iConfig.getParameter<unsigned int>("requiredTypeMask");
43  m_trkMuonId = muon::SelectionType(iConfig.getParameter<unsigned int>("trkMuonId"));
44  m_minPt = iConfig.getParameter<double>("minPt");
45  m_minN = iConfig.getParameter<unsigned int>("minN");
46  m_maxAbsEta = iConfig.getParameter<double>("maxAbsEta");
47 }
T getParameter(std::string const &) const
edm::EDGetTokenT< reco::MuonCollection > m_muonsToken
edm::EDGetTokenT< trigger::TriggerFilterObjectWithRefs > m_previousCandToken
edm::InputTag m_candsTag
SelectionType
Selector type.
Definition: MuonSelectors.h:17
edm::EDGetTokenT< reco::RecoChargedCandidateCollection > m_candsToken
unsigned int m_allowedTypeMask
unsigned int m_minN
edm::InputTag m_previousCandTag
muon::SelectionType m_trkMuonId
HLTFilter(const edm::ParameterSet &config)
Definition: HLTFilter.cc:20
unsigned int m_requiredTypeMask
edm::InputTag m_muonsTag
HLTMuonTrkFilter::~HLTMuonTrkFilter ( )
inlineoverride

Definition at line 17 of file HLTMuonTrkFilter.h.

References fillDescriptions().

17 {}

Member Function Documentation

void HLTMuonTrkFilter::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 50 of file HLTMuonTrkFilter.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), and HLTFilter::makeHLTFilterDescription().

50  {
53  desc.add<edm::InputTag>("inputMuonCollection",edm::InputTag(""));
54  desc.add<edm::InputTag>("inputCandCollection",edm::InputTag(""));
55  desc.add<edm::InputTag>("previousCandTag",edm::InputTag(""));
56  desc.add<int>("minTrkHits",-1);
57  desc.add<int>("minMuonHits",-1);
58  desc.add<int>("minMuonStations",-1);
59  desc.add<double>("maxNormalizedChi2",1e99);
60  desc.add<unsigned int>("allowedTypeMask",255);
61  desc.add<unsigned int>("requiredTypeMask",0);
62  desc.add<unsigned int>("trkMuonId",0);
63  desc.add<double>("minPt",24);
64  desc.add<unsigned int>("minN",1);
65  desc.add<double>("maxAbsEta",1e99);
66  descriptions.add("hltMuonTrkFilter",desc);
67 }
ParameterDescriptionBase * add(U const &iLabel, T const &value)
static void makeHLTFilterDescription(edm::ParameterSetDescription &desc)
Definition: HLTFilter.cc:29
void add(std::string const &label, ParameterSetDescription const &psetDescription)
bool HLTMuonTrkFilter::hltFilter ( edm::Event iEvent,
const edm::EventSetup iSetup,
trigger::TriggerFilterObjectWithRefs filterproduct 
) const
overridevirtual

Implements HLTFilter.

Definition at line 70 of file HLTMuonTrkFilter.cc.

References funct::abs(), trigger::TriggerFilterObjectWithRefs::addCollectionTag(), trigger::TriggerRefsCollections::addObject(), egammaForCoreTracking_cff::cands, edm::errors::Configuration, DEFINE_FWK_MODULE, boostedElectronIsolation_cff::deltaR, edm::Event::getByToken(), trigger::TriggerRefsCollections::getObjects(), mps_fire::i, muon::isGoodMuon(), m_allowedTypeMask, m_candsTag, m_candsToken, m_maxAbsEta, m_maxNormalizedChi2, m_minMuonHits, m_minMuonStations, m_minN, m_minPt, m_minTrkHits, m_muonsToken, m_previousCandTag, m_previousCandToken, m_requiredTypeMask, m_trkMuonId, metsig::muon, extraflags_cff::muons, HLTFilter::saveTags(), trigger::TriggerL1Mu, and trigger::TriggerMuon.

71 {
73  iEvent.getByToken(m_muonsToken,muons);
75  iEvent.getByToken(m_candsToken,cands);
76  if ( saveTags() ) filterproduct.addCollectionTag(m_candsTag);
77  if ( cands->size() != muons->size() )
78  throw edm::Exception(edm::errors::Configuration) << "Both input collection must be aligned and represent same physical muon objects";
79 
81  std::vector<l1extra::L1MuonParticleRef> vl1cands;
82  std::vector<l1extra::L1MuonParticleRef>::iterator vl1cands_begin;
83  std::vector<l1extra::L1MuonParticleRef>::iterator vl1cands_end;
84 
85  bool check_l1match = true;
86  if (m_previousCandTag == edm::InputTag("")) check_l1match = false;
87  if (check_l1match) {
88  iEvent.getByToken(m_previousCandToken,previousLevelCands);
89  previousLevelCands->getObjects(trigger::TriggerL1Mu,vl1cands);
90  vl1cands_begin = vl1cands.begin();
91  vl1cands_end = vl1cands.end();
92  }
93 
94  std::vector<unsigned int> filteredMuons;
95  for ( unsigned int i=0; i<muons->size(); ++i ){
96  const reco::Muon& muon(muons->at(i));
97  // check for dR match to L1 muons
98  if (check_l1match) {
99  bool matchl1 = false;
100  for (auto l1cand = vl1cands_begin; l1cand != vl1cands_end; ++l1cand) {
101  if (deltaR(muon,**l1cand) < 0.3) {
102  matchl1 = true;
103  break;
104  }
105  }
106  if (!matchl1) continue;
107  }
108  if ( (muon.type() & m_allowedTypeMask) == 0 ) continue;
109  if ( (muon.type() & m_requiredTypeMask) != m_requiredTypeMask ) continue;
110  if ( muon.numberOfMatchedStations()<m_minMuonStations ) continue;
111  if ( !muon.innerTrack().isNull() ){
112  if (muon.innerTrack()->numberOfValidHits()<m_minTrkHits) continue;
113  }
114  if ( !muon.globalTrack().isNull() ){
115  if (muon.globalTrack()->normalizedChi2()>m_maxNormalizedChi2) continue;
116  if (muon.globalTrack()->hitPattern().numberOfValidMuonHits()<m_minMuonHits) continue;
117  }
118  if ( muon.isTrackerMuon() && !muon::isGoodMuon(muon,m_trkMuonId) ) continue;
119  if ( muon.pt() < m_minPt ) continue;
120  if ( std::abs(muon.eta()) > m_maxAbsEta ) continue;
121  filteredMuons.push_back(i);
122  }
123 
124  for ( std::vector<unsigned int>::const_iterator itr = filteredMuons.begin(); itr != filteredMuons.end(); ++itr )
126 
127  return filteredMuons.size()>=m_minN;
128 }
void getObjects(Vids &ids, VRphoton &refs) const
various physics-level getters:
edm::EDGetTokenT< reco::MuonCollection > m_muonsToken
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:517
enum start value shifted to 81 so as to avoid clashes with PDG codes
edm::EDGetTokenT< trigger::TriggerFilterObjectWithRefs > m_previousCandToken
edm::InputTag m_candsTag
edm::EDGetTokenT< reco::RecoChargedCandidateCollection > m_candsToken
void addObject(int id, const reco::RecoEcalCandidateRef &ref)
setters for L3 collections: (id=physics type, and Ref<C>)
unsigned int m_allowedTypeMask
unsigned int m_minN
edm::InputTag m_previousCandTag
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
muon::SelectionType m_trkMuonId
bool isGoodMuon(const reco::Muon &muon, SelectionType type, reco::Muon::ArbitrationType arbitrationType=reco::Muon::SegmentAndTrackArbitration)
main GoodMuon wrapper call
void addCollectionTag(const edm::InputTag &collectionTag)
collectionTags
bool saveTags() const
Definition: HLTFilter.h:45
unsigned int m_requiredTypeMask

Member Data Documentation

unsigned int HLTMuonTrkFilter::m_allowedTypeMask
private

Definition at line 33 of file HLTMuonTrkFilter.h.

Referenced by hltFilter(), and HLTMuonTrkFilter().

edm::InputTag HLTMuonTrkFilter::m_candsTag
private

Definition at line 26 of file HLTMuonTrkFilter.h.

Referenced by hltFilter(), and HLTMuonTrkFilter().

edm::EDGetTokenT<reco::RecoChargedCandidateCollection> HLTMuonTrkFilter::m_candsToken
private

Definition at line 27 of file HLTMuonTrkFilter.h.

Referenced by hltFilter(), and HLTMuonTrkFilter().

double HLTMuonTrkFilter::m_maxAbsEta
private

Definition at line 38 of file HLTMuonTrkFilter.h.

Referenced by hltFilter(), and HLTMuonTrkFilter().

double HLTMuonTrkFilter::m_maxNormalizedChi2
private

Definition at line 35 of file HLTMuonTrkFilter.h.

Referenced by hltFilter(), and HLTMuonTrkFilter().

int HLTMuonTrkFilter::m_minMuonHits
private

Definition at line 31 of file HLTMuonTrkFilter.h.

Referenced by hltFilter(), and HLTMuonTrkFilter().

int HLTMuonTrkFilter::m_minMuonStations
private

Definition at line 32 of file HLTMuonTrkFilter.h.

Referenced by hltFilter(), and HLTMuonTrkFilter().

unsigned int HLTMuonTrkFilter::m_minN
private

Definition at line 37 of file HLTMuonTrkFilter.h.

Referenced by hltFilter(), and HLTMuonTrkFilter().

double HLTMuonTrkFilter::m_minPt
private

Definition at line 36 of file HLTMuonTrkFilter.h.

Referenced by hltFilter(), and HLTMuonTrkFilter().

int HLTMuonTrkFilter::m_minTrkHits
private

Definition at line 30 of file HLTMuonTrkFilter.h.

Referenced by hltFilter(), and HLTMuonTrkFilter().

edm::InputTag HLTMuonTrkFilter::m_muonsTag
private

Definition at line 24 of file HLTMuonTrkFilter.h.

Referenced by HLTMuonTrkFilter().

edm::EDGetTokenT<reco::MuonCollection> HLTMuonTrkFilter::m_muonsToken
private

Definition at line 25 of file HLTMuonTrkFilter.h.

Referenced by hltFilter(), and HLTMuonTrkFilter().

edm::InputTag HLTMuonTrkFilter::m_previousCandTag
private

Definition at line 28 of file HLTMuonTrkFilter.h.

Referenced by hltFilter(), and HLTMuonTrkFilter().

edm::EDGetTokenT<trigger::TriggerFilterObjectWithRefs> HLTMuonTrkFilter::m_previousCandToken
private

Definition at line 29 of file HLTMuonTrkFilter.h.

Referenced by hltFilter(), and HLTMuonTrkFilter().

unsigned int HLTMuonTrkFilter::m_requiredTypeMask
private

Definition at line 34 of file HLTMuonTrkFilter.h.

Referenced by hltFilter(), and HLTMuonTrkFilter().

bool HLTMuonTrkFilter::m_saveTags
private

Definition at line 40 of file HLTMuonTrkFilter.h.

muon::SelectionType HLTMuonTrkFilter::m_trkMuonId
private

Definition at line 39 of file HLTMuonTrkFilter.h.

Referenced by hltFilter(), and HLTMuonTrkFilter().