CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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

virtual bool hltFilter (edm::Event &, const edm::EventSetup &, trigger::TriggerFilterObjectWithRefs &filterproduct) const override
 
 HLTMuonTrkFilter (const edm::ParameterSet &)
 
virtual ~HLTMuonTrkFilter ()
 
- 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
 
virtual ~HLTFilter ()
 
- Public Member Functions inherited from edm::global::EDFilter<>
 EDFilter ()=default
 
- Public Member Functions inherited from edm::global::EDFilterBase
 EDFilterBase ()
 
ModuleDescription const & moduleDescription () const
 
virtual ~EDFilterBase ()
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 ProducerBase ()
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription
const &)> 
registrationCallback () const
 used by the fwk to register list of products More...
 
virtual ~ProducerBase ()
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
 EDConsumerBase ()
 
ProductHolderIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
std::vector
< ProductHolderIndexAndSkipBit >
const & 
itemsToGetFromEvent () const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesDependentUpon (const std::string &iProcessName, std::vector< const char * > &oModuleLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
bool registeredToConsume (ProductHolderIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

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::RecoChargedCandidateCollection
m_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::MuonCollection
m_muonsToken
 
edm::InputTag m_previousCandTag
 
edm::EDGetTokenT
< trigger::TriggerFilterObjectWithRefs
m_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
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 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
virtual HLTMuonTrkFilter::~HLTMuonTrkFilter ( )
inlinevirtual

Definition at line 17 of file HLTMuonTrkFilter.h.

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(), HLT_25ns14e33_v1_cff::InputTag, 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(), edm::errors::Configuration, deltaR(), edm::Event::getByToken(), 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, patZpeak::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 (std::vector<l1extra::L1MuonParticleRef>::iterator 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 }
int i
Definition: DBlmapReader.cc:9
edm::EDGetTokenT< reco::MuonCollection > m_muonsToken
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:464
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&lt;C&gt;)
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
double deltaR(double eta1, double eta2, double phi1, double phi2)
Definition: TreeUtility.cc:17
void addCollectionTag(const edm::InputTag &collectionTag)
collectionTags
bool saveTags() const
Definition: HLTFilter.h:45
tuple muons
Definition: patZpeak.py:38
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().