File indexing completed on 2024-04-06 12:26:59
0001 #ifndef _MuonIdentification_MuonMesh_h_
0002 #define _MuonIdentification_MuonMesh_h_
0003
0004
0005
0006
0007
0008 #include <vector>
0009 #include <utility>
0010 #include <map>
0011 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0012 #include "DataFormats/MuonReco/interface/Muon.h"
0013 #include "DataFormats/TrackingRecHit/interface/RecSegment.h"
0014
0015 class CSCGeometry;
0016
0017 class MuonMesh {
0018 typedef std::map<reco::Muon*,
0019 std::vector<std::pair<reco::Muon*, std::pair<reco::MuonChamberMatch*, reco::MuonSegmentMatch*> > > >
0020 MeshType;
0021
0022 typedef std::vector<std::pair<reco::Muon*, std::pair<reco::MuonChamberMatch*, reco::MuonSegmentMatch*> > >
0023 AssociationType;
0024
0025 public:
0026 MuonMesh(const edm::ParameterSet&);
0027
0028 void runMesh(std::vector<reco::Muon>* p) {
0029 fillMesh(p);
0030 pruneMesh();
0031 }
0032
0033 void clearMesh() { mesh_.clear(); }
0034
0035 void setCSCGeometry(const CSCGeometry* pg) { geometry_ = pg; }
0036
0037 bool isDuplicateOf(const CSCSegmentRef& lhs, const CSCSegmentRef& rhs) const;
0038 bool isDuplicateOf(const std::pair<CSCDetId, CSCSegmentRef>& rhs,
0039 const std::pair<CSCDetId, CSCSegmentRef>& lhs) const;
0040 bool isClusteredWith(const std::pair<CSCDetId, CSCSegmentRef>& lhs,
0041 const std::pair<CSCDetId, CSCSegmentRef>& rhs) const;
0042
0043 private:
0044 void fillMesh(std::vector<reco::Muon>*);
0045
0046 void pruneMesh();
0047
0048
0049
0050 bool withinTwoSigma(const std::pair<CSCDetId, CSCSegmentRef>& rhs,
0051 const std::pair<CSCDetId, CSCSegmentRef>& lhs) const {
0052 return false;
0053 }
0054
0055 MeshType mesh_;
0056
0057
0058 const CSCGeometry* geometry_;
0059
0060
0061 const bool doME1a, doOverlaps, doClustering;
0062
0063 const double OverlapDPhi, OverlapDTheta, ClusterDPhi, ClusterDTheta;
0064 };
0065
0066 #endif