CMS 3D CMS Logo

MuonMesh.h
Go to the documentation of this file.
1 #ifndef _MuonIdentification_MuonMesh_h_
2 #define _MuonIdentification_MuonMesh_h_
3 //
4 // Creates a mesh of muons connected by overlapping segments
5 // Original author: Lindsey Gray
6 //
7 
8 #include <vector>
9 #include <utility>
10 #include <map>
14 
15 class CSCGeometry;
16 
17 class MuonMesh {
18  typedef std::map<reco::Muon*,
19  std::vector<std::pair<reco::Muon*, std::pair<reco::MuonChamberMatch*, reco::MuonSegmentMatch*> > > >
21 
22  typedef std::vector<std::pair<reco::Muon*, std::pair<reco::MuonChamberMatch*, reco::MuonSegmentMatch*> > >
24 
25 public:
27 
28  void runMesh(std::vector<reco::Muon>* p) {
29  fillMesh(p);
30  pruneMesh();
31  }
32 
33  void clearMesh() { mesh_.clear(); }
34 
35  void setCSCGeometry(const CSCGeometry* pg) { geometry_ = pg; }
36 
37  bool isDuplicateOf(const CSCSegmentRef& lhs, const CSCSegmentRef& rhs) const;
38  bool isDuplicateOf(const std::pair<CSCDetId, CSCSegmentRef>& rhs,
39  const std::pair<CSCDetId, CSCSegmentRef>& lhs) const;
40  bool isClusteredWith(const std::pair<CSCDetId, CSCSegmentRef>& lhs,
41  const std::pair<CSCDetId, CSCSegmentRef>& rhs) const;
42 
43 private:
44  void fillMesh(std::vector<reco::Muon>*);
45 
46  void pruneMesh();
47 
48  // implement to remove cases where two segments in the same
49  // chamber overlap within 2 sigma of ALL of their errors
50  bool withinTwoSigma(const std::pair<CSCDetId, CSCSegmentRef>& rhs,
51  const std::pair<CSCDetId, CSCSegmentRef>& lhs) const {
52  return false;
53  }
54 
56 
57  // geometry cache for segment arbitration
59 
60  // do various cleanings?
62  // overlap and clustering parameters
64 };
65 
66 #endif
MuonMesh::runMesh
void runMesh(std::vector< reco::Muon > *p)
Definition: MuonMesh.h:28
Muon.h
MuonMesh::isClusteredWith
bool isClusteredWith(const std::pair< CSCDetId, CSCSegmentRef > &lhs, const std::pair< CSCDetId, CSCSegmentRef > &rhs) const
Definition: MuonMesh.cc:443
MuonMesh::ClusterDPhi
const double ClusterDPhi
Definition: MuonMesh.h:63
MuonMesh::pruneMesh
void pruneMesh()
Definition: MuonMesh.cc:151
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
MuonMesh::fillMesh
void fillMesh(std::vector< reco::Muon > *)
Definition: MuonMesh.cc:18
reco::Muon
Definition: Muon.h:27
edm::Ref< CSCSegmentCollection >
CSCGeometry
Definition: CSCGeometry.h:24
MuonMesh::setCSCGeometry
void setCSCGeometry(const CSCGeometry *pg)
Definition: MuonMesh.h:35
MuonMesh::MuonMesh
MuonMesh(const edm::ParameterSet &)
Definition: MuonMesh.cc:9
MuonMesh::OverlapDPhi
const double OverlapDPhi
Definition: MuonMesh.h:63
MuonMesh::doME1a
const bool doME1a
Definition: MuonMesh.h:61
MuonMesh::clearMesh
void clearMesh()
Definition: MuonMesh.h:33
edm::ParameterSet
Definition: ParameterSet.h:47
MuonMesh::doOverlaps
const bool doOverlaps
Definition: MuonMesh.h:61
MuonMesh::ClusterDTheta
const double ClusterDTheta
Definition: MuonMesh.h:63
MuonMesh::withinTwoSigma
bool withinTwoSigma(const std::pair< CSCDetId, CSCSegmentRef > &rhs, const std::pair< CSCDetId, CSCSegmentRef > &lhs) const
Definition: MuonMesh.h:50
MuonMesh::mesh_
MeshType mesh_
Definition: MuonMesh.h:55
MuonMesh::geometry_
const CSCGeometry * geometry_
Definition: MuonMesh.h:58
MuonMesh::MeshType
std::map< reco::Muon *, std::vector< std::pair< reco::Muon *, std::pair< reco::MuonChamberMatch *, reco::MuonSegmentMatch * > > > > MeshType
Definition: MuonMesh.h:20
MuonMesh::OverlapDTheta
const double OverlapDTheta
Definition: MuonMesh.h:63
MuonMesh::doClustering
const bool doClustering
Definition: MuonMesh.h:61
genParticles_cff.map
map
Definition: genParticles_cff.py:11
MuonMesh::isDuplicateOf
bool isDuplicateOf(const CSCSegmentRef &lhs, const CSCSegmentRef &rhs) const
Definition: MuonMesh.cc:297
ParameterSet.h
MuonMesh
Definition: MuonMesh.h:17
RecSegment.h
MuonMesh::AssociationType
std::vector< std::pair< reco::Muon *, std::pair< reco::MuonChamberMatch *, reco::MuonSegmentMatch * > > > AssociationType
Definition: MuonMesh.h:23