CMS 3D CMS Logo

PFMuonSelector.h
Go to the documentation of this file.
1 #ifndef PhysicsTools_PatUtils_interface_PFMuonSelector_h
2 #define PhysicsTools_PatUtils_interface_PFMuonSelector_h
3 
4 #ifndef __GCCXML__
6 #endif
10 
13 
14 #include <iostream>
15 
16 class PFMuonSelector : public Selector<pat::Muon> {
17 public: // interface
18  bool verbose_;
19 
21 
23 
24 #ifndef __GCCXML__
26 #endif
27 
29  verbose_ = false;
30 
31  std::string versionStr = parameters.getParameter<std::string>("version");
32 
34 
35  if (versionStr == "TOPPAG12_LJETS") {
37  } else {
38  throw cms::Exception("InvalidInput") << "Expect version to be one of SPRING11" << std::endl;
39  }
40 
42  parameters.getParameter<double>("Chi2"),
43  parameters.getParameter<int>("minTrackerLayers"),
44  parameters.getParameter<int>("minValidMuHits"),
45  parameters.getParameter<double>("maxIp"),
46  parameters.getParameter<int>("minPixelHits"),
47  parameters.getParameter<int>("minMatchedStations"),
48  parameters.getParameter<double>("maxPfRelIso"));
49  if (parameters.exists("cutsToIgnore"))
50  setIgnoredCuts(parameters.getParameter<std::vector<std::string> >("cutsToIgnore"));
51 
53  }
54 
56  double chi2 = 10.0,
57  int minTrackerLayers = 6,
58  int minValidMuonHits = 1,
59  double maxIp = 0.2,
60  int minPixelHits = 1,
61  int minNMatches = 2,
62  double pfiso = 0.12) {
63  version_ = version;
64 
65  push_back("GlobalMuon", true);
66  push_back("TrackerMuon", true);
67  push_back("Chi2", chi2);
68  push_back("minTrackerLayers", minTrackerLayers);
69  push_back("minValidMuHits", minValidMuonHits);
70  push_back("maxIp", maxIp);
71  push_back("minPixelHits", minPixelHits);
72  push_back("minMatchedStations", minNMatches);
73  push_back("maxPfRelIso", pfiso);
74 
75  set("GlobalMuon");
76  set("TrackerMuon");
77  set("Chi2");
78  set("minTrackerLayers");
79  set("minValidMuHits");
80  set("maxIp");
81  set("minPixelHits");
82  set("minMatchedStations");
83  set("maxPfRelIso");
84 
85  indexChi2_ = index_type(&bits_, "Chi2");
86  indexMinTrackerLayers_ = index_type(&bits_, "minTrackerLayers");
87  indexminValidMuHits_ = index_type(&bits_, "minValidMuHits");
88  indexMaxIp_ = index_type(&bits_, "maxIp");
89  indexPixHits_ = index_type(&bits_, "minPixelHits");
90  indexStations_ = index_type(&bits_, "minMatchedStations");
91  indexmaxPfRelIso_ = index_type(&bits_, "maxPfRelIso");
92 
93  if (version_ == TOPPAG12_LJETS) {
94  set("TrackerMuon", false);
95  }
96  }
97 
98  // Allow for multiple definitions of the cuts.
99  bool operator()(const pat::Muon& muon, pat::strbitset& ret) override {
100  if (version_ == TOPPAG12_LJETS)
101  return TopPag12LjetsCuts(muon, ret);
102  else {
103  return false;
104  }
105  }
106 
108 
110  ret.set(false);
111 
112  bool isGlobal = muon.isGlobalMuon();
113  bool isTracker = muon.isTrackerMuon();
114 
115  double norm_chi2 = 9999999.0;
116  int minTrackerLayers = 0;
117  int minValidMuonHits = 0;
118  int _ip = 0.0;
119  int minPixelHits = 0;
120  if (muon.globalTrack().isNonnull() && muon.globalTrack().isAvailable()) {
121  norm_chi2 = muon.normChi2();
122  minTrackerLayers = static_cast<int>(muon.track()->hitPattern().trackerLayersWithMeasurement());
123  minValidMuonHits = static_cast<int>(muon.globalTrack()->hitPattern().numberOfValidMuonHits());
124  _ip = muon.dB();
125  minPixelHits = muon.innerTrack()->hitPattern().numberOfValidPixelHits();
126  }
127 
128  int minMatchedStations = muon.numberOfMatches();
129 
130  double chIso = muon.userIsolation(pat::PfChargedHadronIso);
131  double nhIso = muon.userIsolation(pat::PfNeutralHadronIso);
132  double gIso = muon.userIsolation(pat::PfGammaIso);
133  double pt = muon.pt();
134 
135  double pfIso = (chIso + nhIso + gIso) / pt;
136 
137  if (isGlobal || ignoreCut("GlobalMuon"))
138  passCut(ret, "GlobalMuon");
139  if (isTracker || ignoreCut("TrackerMuon"))
140  passCut(ret, "TrackerMuon");
141  if (norm_chi2 < cut(indexChi2_, double()) || ignoreCut(indexChi2_))
145  if (minValidMuonHits >= cut(indexminValidMuHits_, int()) || ignoreCut(indexminValidMuHits_))
147  if (_ip < cut(indexMaxIp_, double()) || ignoreCut(indexMaxIp_))
153  if (pfIso < cut(indexmaxPfRelIso_, double()) || ignoreCut(indexmaxPfRelIso_))
155 
156  setIgnored(ret);
157 
158  return (bool)ret;
159  }
160 
161 private: // member variables
163 
171 };
172 
173 #endif
runTheMatrix.ret
ret
prodAgent to be discontinued
Definition: runTheMatrix.py:355
PFMuonSelector::indexmaxPfRelIso_
index_type indexmaxPfRelIso_
Definition: PFMuonSelector.h:170
Selector< pat::Muon >::setIgnored
void setIgnored(pat::strbitset &ret)
set ignored bits
Definition: Selector.h:181
Selector
Functor that operates on <T>
Definition: Selector.h:22
Selector< pat::Muon >::bits_
pat::strbitset bits_
the bitset indexed by strings
Definition: Selector.h:241
MessageLogger.h
PFMuonSelector::operator()
bool operator()(const pat::Muon &muon, pat::strbitset &ret) override
This provides the interface for base classes to select objects.
Definition: PFMuonSelector.h:99
Selector< pat::Muon >::index_type
pat::strbitset::index_type index_type
Definition: Selector.h:25
muon
Definition: MuonCocktails.h:17
DiDispStaMuonMonitor_cfi.pt
pt
Definition: DiDispStaMuonMonitor_cfi.py:39
Muon.h
Selector< pat::Muon >::retInternal_
pat::strbitset retInternal_
internal ret if users don't care about return bits
Definition: Selector.h:242
Selector< pat::Muon >::ignoreCut
bool ignoreCut(std::string const &s) const
ignore the cut at index "s"
Definition: Selector.h:127
PFMuonSelector::N_VERSIONS
Definition: PFMuonSelector.h:20
PFMuonSelector::indexChi2_
index_type indexChi2_
Definition: PFMuonSelector.h:164
pat::strbitset::index_type
Definition: strbitset.h:25
pat::Muon
Analysis-level muon class.
Definition: Muon.h:51
hltPixelTracks_cff.chi2
chi2
Definition: hltPixelTracks_cff.py:25
PFMuonSelector::indexMinTrackerLayers_
index_type indexMinTrackerLayers_
Definition: PFMuonSelector.h:165
Utilities.operator
operator
Definition: Utilities.py:24
parameters
parameters
Definition: BeamSpot_PayloadInspector.cc:14
PFMuonSelector::indexminValidMuHits_
index_type indexminValidMuHits_
Definition: PFMuonSelector.h:166
BeamSpot.h
pat::PfChargedHadronIso
Definition: Isolation.h:14
Selector< pat::Muon >::push_back
virtual void push_back(std::string const &s)
This is the registration of an individual cut string.
Definition: Selector.h:42
pfMuonSelector_cfi.minTrackerLayers
minTrackerLayers
Definition: pfMuonSelector_cfi.py:6
PFMuonSelector::PFMuonSelector
PFMuonSelector()
Definition: PFMuonSelector.h:22
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
beam_dqm_sourceclient-live_cfg.minPixelHits
minPixelHits
Definition: beam_dqm_sourceclient-live_cfg.py:120
Selector< pat::Muon >::getBitTemplate
pat::strbitset getBitTemplate() const
Get an empty bitset with the proper names.
Definition: Selector.h:168
edm::ParameterSet
Definition: ParameterSet.h:36
PFMuonSelector::Version_t
Version_t
Definition: PFMuonSelector.h:20
pat::PfGammaIso
Definition: Isolation.h:16
Selector< pat::Muon >::passCut
void passCut(pat::strbitset &ret, std::string const &s)
Passing cuts.
Definition: Selector.h:142
PFMuonSelector::indexMaxIp_
index_type indexMaxIp_
Definition: PFMuonSelector.h:167
PFMuonSelector::verbose_
bool verbose_
Definition: PFMuonSelector.h:18
PFMuonSelector::initialize
void initialize(Version_t version, double chi2=10.0, int minTrackerLayers=6, int minValidMuonHits=1, double maxIp=0.2, int minPixelHits=1, int minNMatches=2, double pfiso=0.12)
Definition: PFMuonSelector.h:55
pfMuonSelector_cfi.minMatchedStations
minMatchedStations
Definition: pfMuonSelector_cfi.py:10
pat::PfNeutralHadronIso
Definition: Isolation.h:15
Selector< pat::Muon >::setIgnoredCuts
void setIgnoredCuts(std::vector< std::string > const &bitsToIgnore)
set the bits to ignore from a vector
Definition: Selector.h:131
muons_cff.isGlobal
isGlobal
Definition: muons_cff.py:153
PFMuonSelector::TOPPAG12_LJETS
Definition: PFMuonSelector.h:20
pat::strbitset
Definition: strbitset.h:23
PFMuonSelector::version_
Version_t version_
Definition: PFMuonSelector.h:162
pfMuonSelector_cfi.maxIp
maxIp
Definition: pfMuonSelector_cfi.py:8
PFMuonSelector::indexStations_
index_type indexStations_
Definition: PFMuonSelector.h:169
PFMuonSelector
Definition: PFMuonSelector.h:16
Selector< pat::Muon >::cut
int cut(index_type const &i, int val) const
Access the int cut values at index "s".
Definition: Selector.h:158
Exception
Definition: hltDiff.cc:246
Selector< pat::Muon >::set
void set(std::string const &s, bool val=true)
Set a given selection cut, on or off.
Definition: Selector.h:93
ConsumesCollector.h
ParameterSet.h
muons_cff.isTracker
isTracker
Definition: muons_cff.py:154
PFMuonSelector::PFMuonSelector
PFMuonSelector(edm::ParameterSet const &parameters)
Definition: PFMuonSelector.h:28
PFMuonSelector::TopPag12LjetsCuts
bool TopPag12LjetsCuts(const pat::Muon &muon, pat::strbitset &ret)
Definition: PFMuonSelector.h:109
BeamSplash_cfg.version
version
Definition: BeamSplash_cfg.py:45
PFMuonSelector::PFMuonSelector
PFMuonSelector(edm::ParameterSet const &parameters, edm::ConsumesCollector &&iC)
Definition: PFMuonSelector.h:25
Selector.h
edm::ConsumesCollector
Definition: ConsumesCollector.h:39
PFMuonSelector::indexPixHits_
index_type indexPixHits_
Definition: PFMuonSelector.h:168