CMS 3D CMS Logo

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

#include <HLTMuonL3SimplePreFilter.h>

Inheritance diagram for HLTMuonL3SimplePreFilter:
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
 
 HLTMuonL3SimplePreFilter (const edm::ParameterSet &)
 
 ~HLTMuonL3SimplePreFilter () 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)
 

Static Private Member Functions

static bool triggerdByPreviousLevel (const reco::RecoChargedCandidateRef &, const std::vector< reco::RecoChargedCandidateRef > &)
 

Private Attributes

edm::InputTag beamspotTag_
 
edm::EDGetTokenT< reco::BeamSpotbeamspotToken_
 
edm::InputTag candTag_
 
edm::EDGetTokenT< reco::RecoChargedCandidateCollectioncandToken_
 
bool matchPreviousCand_
 
const double max_DXYBeamSpot_
 
const double max_Dz_
 
const double max_Eta_
 
const double max_NormalizedChi2_
 
const double max_PtDifference_
 
const double min_DXYBeamSpot_
 
const double min_DxySig_
 
const int min_N_
 
const int min_Nhits_
 
const int min_NmuonHits_
 
const double min_Pt_
 
const double min_TrackPt_
 
const double nsigma_Pt_
 
edm::InputTag previousCandTag_
 
edm::EDGetTokenT< trigger::TriggerFilterObjectWithRefspreviousCandToken_
 

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

See header file for documentation

This class is an HLTFilter (-> EDFilter) implementing the a simple filtering for HLT muons

Original author: S. Folgueras santi.nosp@m.ago..nosp@m.folgu.nosp@m.eras.nosp@m.@cern.nosp@m..ch

Definition at line 21 of file HLTMuonL3SimplePreFilter.h.

Constructor & Destructor Documentation

HLTMuonL3SimplePreFilter::HLTMuonL3SimplePreFilter ( const edm::ParameterSet iConfig)
explicit

Definition at line 31 of file HLTMuonL3SimplePreFilter.cc.

References beamspotTag_, beamspotToken_, candTag_, candToken_, previousCandTag_, previousCandToken_, and ~HLTMuonL3SimplePreFilter().

31  : HLTFilter(iConfig),
32  candTag_ (iConfig.getParameter< edm::InputTag > ("CandTag") ),
33  previousCandTag_ (iConfig.getParameter< edm::InputTag > ("PreviousCandTag")),
34  beamspotTag_ (iConfig.getParameter< edm::InputTag > ("BeamSpotTag")),
35  min_N_ (iConfig.getParameter<int> ("MinN")),
36  max_Eta_ (iConfig.getParameter<double> ("MaxEta")),
37  min_Nhits_ (iConfig.getParameter<int> ("MinNhits")),
38  max_Dz_ (iConfig.getParameter<double> ("MaxDz")),
39  min_DxySig_ (iConfig.getParameter<double> ("MinDxySig")),
40  min_Pt_ (iConfig.getParameter<double> ("MinPt")),
41  nsigma_Pt_ (iConfig.getParameter<double> ("NSigmaPt")),
42  max_NormalizedChi2_ (iConfig.getParameter<double> ("MaxNormalizedChi2")),
43  max_DXYBeamSpot_ (iConfig.getParameter<double> ("MaxDXYBeamSpot")),
44  min_DXYBeamSpot_ (iConfig.getParameter<double> ("MinDXYBeamSpot")),
45  min_NmuonHits_ (iConfig.getParameter<int> ("MinNmuonHits")),
46  max_PtDifference_ (iConfig.getParameter<double> ("MaxPtDifference")),
47  min_TrackPt_ (iConfig.getParameter<double> ("MinTrackPt")),
48  matchPreviousCand_( iConfig.getParameter<bool>("MatchToPreviousCand") )
49 {
50  candToken_ = consumes<reco::RecoChargedCandidateCollection>(candTag_);
51  previousCandToken_ = consumes<trigger::TriggerFilterObjectWithRefs>(previousCandTag_);
52  beamspotToken_ = consumes<reco::BeamSpot>(beamspotTag_);
53 
54 }
T getParameter(std::string const &) const
edm::EDGetTokenT< reco::BeamSpot > beamspotToken_
edm::EDGetTokenT< trigger::TriggerFilterObjectWithRefs > previousCandToken_
HLTFilter(const edm::ParameterSet &config)
Definition: HLTFilter.cc:20
edm::EDGetTokenT< reco::RecoChargedCandidateCollection > candToken_
HLTMuonL3SimplePreFilter::~HLTMuonL3SimplePreFilter ( )
overridedefault

Member Function Documentation

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

Definition at line 63 of file HLTMuonL3SimplePreFilter.cc.

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

63  {
66  desc.add<edm::InputTag>("BeamSpotTag",edm::InputTag("hltOfflineBeamSpot"));
67  desc.add<edm::InputTag>("CandTag",edm::InputTag("hltL3MuonCandidates"));
68  desc.add<edm::InputTag>("PreviousCandTag",edm::InputTag(""));
69  desc.add<int>("MinN",1);
70  desc.add<double>("MaxEta",2.5);
71  desc.add<int>("MinNhits",0);
72  desc.add<double>("MaxDz",9999.0);
73  desc.add<double>("MinDxySig",-1.0);
74  desc.add<double>("MinPt",3.0);
75  desc.add<double>("NSigmaPt",0.0);
76  desc.add<double>("MaxNormalizedChi2",9999.0);
77  desc.add<double>("MaxDXYBeamSpot",9999.0);
78  desc.add<double>("MinDXYBeamSpot",-1.0);
79  desc.add<int>("MinNmuonHits",0);
80  desc.add<double>("MaxPtDifference",9999.0);
81  desc.add<double>("MinTrackPt",0.0);
82  desc.add<bool>("MatchToPreviousCand", true);
83  descriptions.add("hltMuonL3SimplePreFilter", desc);
84 }
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 HLTMuonL3SimplePreFilter::hltFilter ( edm::Event iEvent,
const edm::EventSetup iSetup,
trigger::TriggerFilterObjectWithRefs filterproduct 
) const
overridevirtual

Implements HLTFilter.

Definition at line 88 of file HLTMuonL3SimplePreFilter.cc.

References funct::abs(), accept(), trigger::TriggerFilterObjectWithRefs::addCollectionTag(), trigger::TriggerRefsCollections::addObject(), ecalDrivenElectronSeedsParameters_cff::beamSpot, beamspotToken_, candTag_, candToken_, edm::Event::getByToken(), trigger::TriggerRefsCollections::getObjects(), edm::Ref< C, T, F >::isNonnull(), edm::HandleBase::isValid(), LogDebug, LogTrace, matchPreviousCand_, max_DXYBeamSpot_, max_Dz_, max_Eta_, max_NormalizedChi2_, max_PtDifference_, min_DXYBeamSpot_, min_DxySig_, min_N_, min_Nhits_, min_NmuonHits_, min_Pt_, min_TrackPt_, gen::n, nsigma_Pt_, reco::HitPattern::numberOfValidMuonHits(), reco::BeamSpot::position(), previousCandToken_, EnergyCorrector::pt, HLTFilter::saveTags(), listHistos::trackPt, triggerdByPreviousLevel(), trigger::TriggerMuon, reco::BeamSpot::x0(), reco::BeamSpot::y0(), and reco::BeamSpot::z0().

89 {
90 
91  // All HLT filters must create and fill an HLT filter object,
92  // recording any reconstructed physics objects satisfying (or not)
93  // this HLT filter, and place it in the Event.
94 
95  if (saveTags()) filterproduct.addCollectionTag(candTag_);
96 
97  // get hold of trks
99  iEvent.getByToken (candToken_,mucands);
100  Handle<TriggerFilterObjectWithRefs> previousLevelCands;
101  iEvent.getByToken (previousCandToken_,previousLevelCands);
102  vector<RecoChargedCandidateRef> vcands;
103  if (previousLevelCands.isValid()) {
104  previousLevelCands->getObjects(TriggerMuon,vcands);
105  }
106 
107  Handle<BeamSpot> recoBeamSpotHandle;
108  iEvent.getByToken(beamspotToken_,recoBeamSpotHandle);
109 
110  // Number of objects passing the L3 Trigger:
111  int n = 0;
112  for (unsigned int iMu=0; iMu<mucands->size(); iMu++) {
113 
114  RecoChargedCandidateRef cand(mucands,iMu);
115  LogDebug("HLTMuonL3SimplePreFilter") << "cand isNonnull " << cand.isNonnull();
116 
117  //did this candidate triggered at previous stage.
118  if (matchPreviousCand_ && !triggerdByPreviousLevel(cand,vcands)) continue;
119 
120  if (std::abs(cand->eta())>max_Eta_) continue;
121 
122  TrackRef tk = cand->track();
123  LogDebug("HLTMuonL3SimplePreFilter") << " Muon in loop, q*pt= " << tk->charge()*tk->pt() <<" (" << cand->charge()*cand->pt() << ") "
124  << ", eta= " << tk->eta() << " (" << cand->eta() << ") " << ", hits= " << tk->numberOfValidHits()
125  << ", d0= " << tk->d0() << ", dz= " << tk->dz();
126 
127  // cut on number of hits
128  if (tk->numberOfValidHits()<min_Nhits_) continue;
129 
130  //normalizedChi2 cut
131  if (tk->normalizedChi2() > max_NormalizedChi2_ ) continue;
132 
133 
134  if (recoBeamSpotHandle.isValid()){
135  const BeamSpot& beamSpot = *recoBeamSpotHandle;
136 
137  //dz cut
138  if (std::abs((cand->vz()-beamSpot.z0()) - ((cand->vx()-beamSpot.x0())*cand->px()+(cand->vy()-beamSpot.y0())*cand->py())/cand->pt() * cand->pz()/cand->pt())>max_Dz_) continue;
139 
140  // dxy significance cut (safeguard against bizarre values)
141  if (min_DxySig_ > 0 && (tk->dxyError() <= 0 || std::abs(tk->dxy(beamSpot.position())/tk->dxyError()) < min_DxySig_)) continue;
142 
143  //dxy beamspot cut
144  float absDxy = std::abs(tk->dxy(beamSpot.position()));
145  if (absDxy > max_DXYBeamSpot_ || absDxy < min_DXYBeamSpot_ ) continue;
146  }
147 
148  //min muon hits cut
149  const reco::HitPattern& trackHits = tk->hitPattern();
150  if (trackHits.numberOfValidMuonHits() < min_NmuonHits_ ) continue;
151 
152  //pt difference cut
153  double candPt = cand->pt();
154  double trackPt = tk->pt();
155 
156  if (std::abs(candPt - trackPt) > max_PtDifference_ ) continue;
157 
158  //track pt cut
159  if (trackPt < min_TrackPt_ ) continue;
160 
161  // Pt threshold cut
162  double pt = cand->pt();
163  double err0 = tk->error(0);
164  double abspar0 = std::abs(tk->parameter(0));
165  double ptLx = pt;
166  // convert 50% efficiency threshold to 90% efficiency threshold
167  if (abspar0>0) ptLx += nsigma_Pt_*err0/abspar0*pt;
168  LogTrace("HLTMuonL3SimplePreFilter") << " ...Muon in loop, trackkRef pt= "
169  << tk->pt() << ", ptLx= " << ptLx
170  << " cand pT " << cand->pt();
171  if (ptLx<min_Pt_) continue;
172 
173  n++;
174  filterproduct.addObject(TriggerMuon,cand);
175  }//for iMu
176 
177  // filter decision
178  const bool accept (n >= min_N_);
179 
180  LogDebug("HLTMuonL3SimplePreFilter") << " >>>>> Result of HLTMuonL3PreFilter is " << accept << ", number of muons passing thresholds= " << n;
181 
182  return accept;
183 }
#define LogDebug(id)
double z0() const
z coordinate
Definition: BeamSpot.h:68
void getObjects(Vids &ids, VRphoton &refs) const
various physics-level getters:
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:517
static bool triggerdByPreviousLevel(const reco::RecoChargedCandidateRef &, const std::vector< reco::RecoChargedCandidateRef > &)
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
Definition: TopDQMHelpers.h:30
void addObject(int id, const reco::RecoEcalCandidateRef &ref)
setters for L3 collections: (id=physics type, and Ref<C>)
edm::EDGetTokenT< reco::BeamSpot > beamspotToken_
edm::EDGetTokenT< trigger::TriggerFilterObjectWithRefs > previousCandToken_
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
bool isValid() const
Definition: HandleBase.h:74
#define LogTrace(id)
void addCollectionTag(const edm::InputTag &collectionTag)
collectionTags
edm::EDGetTokenT< reco::RecoChargedCandidateCollection > candToken_
bool saveTags() const
Definition: HLTFilter.h:45
double y0() const
y coordinate
Definition: BeamSpot.h:66
const Point & position() const
position
Definition: BeamSpot.h:62
int numberOfValidMuonHits() const
Definition: HitPattern.h:906
double x0() const
x coordinate
Definition: BeamSpot.h:64
bool HLTMuonL3SimplePreFilter::triggerdByPreviousLevel ( const reco::RecoChargedCandidateRef candref,
const std::vector< reco::RecoChargedCandidateRef > &  vcands 
)
staticprivate

Definition at line 186 of file HLTMuonL3SimplePreFilter.cc.

References DEFINE_FWK_MODULE, and mps_fire::i.

Referenced by hltFilter().

186  {
187  unsigned int i=0;
188  unsigned int i_max=vcands.size();
189  for (;i!=i_max;++i){
190  if (candref == vcands[i]) return true;
191  }
192 
193  return false;
194 }

Member Data Documentation

edm::InputTag HLTMuonL3SimplePreFilter::beamspotTag_
private

Definition at line 36 of file HLTMuonL3SimplePreFilter.h.

Referenced by HLTMuonL3SimplePreFilter().

edm::EDGetTokenT<reco::BeamSpot> HLTMuonL3SimplePreFilter::beamspotToken_
private

Definition at line 37 of file HLTMuonL3SimplePreFilter.h.

Referenced by hltFilter(), and HLTMuonL3SimplePreFilter().

edm::InputTag HLTMuonL3SimplePreFilter::candTag_
private

Definition at line 32 of file HLTMuonL3SimplePreFilter.h.

Referenced by hltFilter(), and HLTMuonL3SimplePreFilter().

edm::EDGetTokenT<reco::RecoChargedCandidateCollection> HLTMuonL3SimplePreFilter::candToken_
private

Definition at line 33 of file HLTMuonL3SimplePreFilter.h.

Referenced by hltFilter(), and HLTMuonL3SimplePreFilter().

bool HLTMuonL3SimplePreFilter::matchPreviousCand_
private

Definition at line 52 of file HLTMuonL3SimplePreFilter.h.

Referenced by hltFilter().

const double HLTMuonL3SimplePreFilter::max_DXYBeamSpot_
private

Definition at line 47 of file HLTMuonL3SimplePreFilter.h.

Referenced by hltFilter().

const double HLTMuonL3SimplePreFilter::max_Dz_
private

Definition at line 42 of file HLTMuonL3SimplePreFilter.h.

Referenced by hltFilter().

const double HLTMuonL3SimplePreFilter::max_Eta_
private

Definition at line 40 of file HLTMuonL3SimplePreFilter.h.

Referenced by hltFilter().

const double HLTMuonL3SimplePreFilter::max_NormalizedChi2_
private

Definition at line 46 of file HLTMuonL3SimplePreFilter.h.

Referenced by hltFilter().

const double HLTMuonL3SimplePreFilter::max_PtDifference_
private

Definition at line 50 of file HLTMuonL3SimplePreFilter.h.

Referenced by hltFilter().

const double HLTMuonL3SimplePreFilter::min_DXYBeamSpot_
private

Definition at line 48 of file HLTMuonL3SimplePreFilter.h.

Referenced by hltFilter().

const double HLTMuonL3SimplePreFilter::min_DxySig_
private

Definition at line 43 of file HLTMuonL3SimplePreFilter.h.

Referenced by hltFilter().

const int HLTMuonL3SimplePreFilter::min_N_
private

Definition at line 39 of file HLTMuonL3SimplePreFilter.h.

Referenced by hltFilter().

const int HLTMuonL3SimplePreFilter::min_Nhits_
private

Definition at line 41 of file HLTMuonL3SimplePreFilter.h.

Referenced by hltFilter().

const int HLTMuonL3SimplePreFilter::min_NmuonHits_
private

Definition at line 49 of file HLTMuonL3SimplePreFilter.h.

Referenced by hltFilter().

const double HLTMuonL3SimplePreFilter::min_Pt_
private

Definition at line 44 of file HLTMuonL3SimplePreFilter.h.

Referenced by hltFilter().

const double HLTMuonL3SimplePreFilter::min_TrackPt_
private

Definition at line 51 of file HLTMuonL3SimplePreFilter.h.

Referenced by hltFilter().

const double HLTMuonL3SimplePreFilter::nsigma_Pt_
private

Definition at line 45 of file HLTMuonL3SimplePreFilter.h.

Referenced by hltFilter().

edm::InputTag HLTMuonL3SimplePreFilter::previousCandTag_
private

Definition at line 34 of file HLTMuonL3SimplePreFilter.h.

Referenced by HLTMuonL3SimplePreFilter().

edm::EDGetTokenT<trigger::TriggerFilterObjectWithRefs> HLTMuonL3SimplePreFilter::previousCandToken_
private

Definition at line 35 of file HLTMuonL3SimplePreFilter.h.

Referenced by hltFilter(), and HLTMuonL3SimplePreFilter().