CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
MuonSelectors.h
Go to the documentation of this file.
1 #ifndef MuonReco_MuonSelectors_h
2 #define MuonReco_MuonSelectors_h
3 //
4 // Package: MuonReco
5 //
6 //
7 // Original Author: Jake Ribnik, Dmytro Kovalskyi
8 
10 #include "TMath.h"
11 #include <string>
12 
13 namespace reco{class Vertex;}
14 
15 namespace muon {
18  All = 0, // dummy options - always true
19  AllGlobalMuons = 1, // checks isGlobalMuon flag
20  AllStandAloneMuons = 2, // checks isStandAloneMuon flag
21  AllTrackerMuons = 3, // checks isTrackerMuon flag
22  TrackerMuonArbitrated = 4, // resolve ambiguity of sharing segments
23  AllArbitrated = 5, // all muons with the tracker muon arbitrated
24  GlobalMuonPromptTight = 6, // global muons with tighter fit requirements
25  TMLastStationLoose = 7, // penetration depth loose selector
26  TMLastStationTight = 8, // penetration depth tight selector
27  TM2DCompatibilityLoose = 9, // likelihood based loose selector
28  TM2DCompatibilityTight = 10, // likelihood based tight selector
29  TMOneStationLoose = 11, // require one well matched segment
30  TMOneStationTight = 12, // require one well matched segment
31  TMLastStationOptimizedLowPtLoose = 13, // combination of TMLastStation and TMOneStation
32  TMLastStationOptimizedLowPtTight = 14, // combination of TMLastStation and TMOneStation
33  GMTkChiCompatibility = 15, // require tk stub have good chi2 relative to glb track
34  GMStaChiCompatibility = 16, // require sta stub have good chi2 compatibility relative to glb track
35  GMTkKinkTight = 17, // require a small kink value in the tracker stub
36  TMLastStationAngLoose = 18, // TMLastStationLoose with additional angular cuts
37  TMLastStationAngTight = 19, // TMLastStationTight with additional angular cuts
38  TMOneStationAngLoose = 20, // TMOneStationLoose with additional angular cuts
39  TMOneStationAngTight = 21, // TMOneStationTight with additional angular cuts
40  // The two algorithms that follow are identical to what were known as
41  // TMLastStationOptimizedLowPt* (sans the Barrel) as late as revision
42  // 1.7 of this file. The names were changed because indeed the low pt
43  // optimization applies only to the barrel region, whereas the sel-
44  // ectors above are more efficient at low pt in the endcaps, which is
45  // what we feel is more suggestive of the algorithm name. This will be
46  // less confusing for future generations of CMS members, I hope...
47  TMLastStationOptimizedBarrelLowPtLoose = 22, // combination of TMLastStation and TMOneStation but with low pT optimization in barrel only
48  TMLastStationOptimizedBarrelLowPtTight = 23, // combination of TMLastStation and TMOneStation but with low pT optimization in barrel only
49  RPCMuLoose = 24 // checks isRPCMuon flag (require two well matched hits in different RPC layers)
50  };
51 
55 
59 
60  // ===========================================================================
61  // Support functions
62  //
64 
65  // specialized GoodMuon functions called from main wrapper
66  bool isGoodMuon( const reco::Muon& muon,
68  double minCompatibility,
69  reco::Muon::ArbitrationType arbitrationType );
70 
71  bool isGoodMuon( const reco::Muon& muon,
73  int minNumberOfMatches,
74  double maxAbsDx,
75  double maxAbsPullX,
76  double maxAbsDy,
77  double maxAbsPullY,
78  double maxChamberDist,
79  double maxChamberDistPull,
80  reco::Muon::ArbitrationType arbitrationType,
81  bool syncMinNMatchesNRequiredStationsInBarrelOnly = true,//this is what we had originally
82  bool applyAlsoAngularCuts = false);
83 
84  bool isTightMuon(const reco::Muon&, const reco::Vertex&);
85  bool isLooseMuon(const reco::Muon&);
86  bool isSoftMuon(const reco::Muon&, const reco::Vertex&);
87  bool isHighPtMuon(const reco::Muon&, const reco::Vertex&);
88 
89  // determine if station was crossed well withing active volume
90  unsigned int RequiredStationMask( const reco::Muon& muon,
91  double maxChamberDist,
92  double maxChamberDistPull,
93  reco::Muon::ArbitrationType arbitrationType );
94 
95  // ------------ method to return the calo compatibility for a track with matched muon info ------------
96  float caloCompatibility(const reco::Muon& muon);
97 
98  // ------------ method to calculate the segment compatibility for a track with matched muon info ------------
100 
101  // Check if two muon trajectory overlap
102  // The overlap is performed by comparing distance between two muon
103  // trajectories if they cross the same muon chamber. Trajectories
104  // overlap if distance/uncertainty is smaller than allowed pullX
105  // and pullY
106  bool overlap( const reco::Muon& muon1, const reco::Muon& muon2,
107  double pullX = 1.0, double pullY = 1.0, bool checkAdjacentChambers = false);
108 
111  int sharedSegments( const reco::Muon& muon1, const reco::Muon& muon2,
112  unsigned int segmentArbitrationMask = reco::MuonSegmentMatch::BestInChamberByDR ) ;
113 
114 }
115 #endif
type
Definition: HCALResponse.h:21
AlgorithmType
Definition: MuonSelectors.h:63
float caloCompatibility(const reco::Muon &muon)
bool isLooseMuon(const reco::Muon &)
SelectionType
Selector type.
Definition: MuonSelectors.h:17
bool overlap(const reco::Muon &muon1, const reco::Muon &muon2, double pullX=1.0, double pullY=1.0, bool checkAdjacentChambers=false)
bool isSoftMuon(const reco::Muon &, const reco::Vertex &)
ArbitrationType
define arbitration schemes
Definition: Muon.h:178
float segmentCompatibility(const reco::Muon &muon, reco::Muon::ArbitrationType arbitrationType=reco::Muon::SegmentAndTrackArbitration)
static const unsigned int BestInChamberByDR
bool isGoodMuon(const reco::Muon &muon, SelectionType type, reco::Muon::ArbitrationType arbitrationType=reco::Muon::SegmentAndTrackArbitration)
main GoodMuon wrapper call
int sharedSegments(const reco::Muon &muon1, const reco::Muon &muon2, unsigned int segmentArbitrationMask=reco::MuonSegmentMatch::BestInChamberByDR)
bool isHighPtMuon(const reco::Muon &, const reco::Vertex &)
SelectionType selectionTypeFromString(const std::string &label)
Definition: MuonSelectors.cc:9
a lightweight &quot;map&quot; for selection type string label and enum value
Definition: MuonSelectors.h:53
unsigned int RequiredStationMask(const reco::Muon &muon, double maxChamberDist, double maxChamberDistPull, reco::Muon::ArbitrationType arbitrationType)
bool isTightMuon(const reco::Muon &, const reco::Vertex &)