File indexing completed on 2024-04-06 12:32:51
0001 #ifndef Validation_MuonHits_GEMSimHitMatcher_h
0002 #define Validation_MuonHits_GEMSimHitMatcher_h
0003
0004
0005
0006
0007
0008
0009
0010
0011 #include "FWCore/Utilities/interface/ESGetToken.h"
0012 #include "Geometry/Records/interface/MuonGeometryRecord.h"
0013 #include "Geometry/GEMGeometry/interface/GEMGeometry.h"
0014 #include "Validation/MuonHits/interface/MuonSimHitMatcher.h"
0015
0016 class GEMSimHitMatcher : public MuonSimHitMatcher {
0017 public:
0018
0019 GEMSimHitMatcher(const edm::ParameterSet& iPS, edm::ConsumesCollector&& iC);
0020
0021
0022 ~GEMSimHitMatcher() {}
0023
0024
0025 void init(const edm::Event& e, const edm::EventSetup& eventSetup);
0026
0027
0028 void match(const SimTrack& t, const SimVertex& v);
0029
0030
0031 std::set<unsigned int> detIds(int gem_type = MuonHitHelper::GEM_ALL) const;
0032
0033
0034 std::set<unsigned int> chamberIds(int gem_type = MuonHitHelper::GEM_ALL) const;
0035
0036
0037
0038 std::set<unsigned int> detIdsCoincidences() const;
0039
0040
0041 std::set<unsigned int> superChamberIds() const;
0042
0043
0044 std::set<unsigned int> superChamberIdsCoincidences() const;
0045
0046
0047 const edm::PSimHitContainer& hitsInSuperChamber(unsigned int) const;
0048
0049
0050 bool hitStation(int, int) const;
0051
0052
0053 int nStations(int nl = 2) const;
0054
0055
0056 int nLayersWithHitsInSuperChamber(unsigned int) const;
0057
0058
0059 int nPadsWithHits() const;
0060
0061
0062 int nCoincidencePadsWithHits() const;
0063
0064
0065 float simHitsGEMCentralPosition(const edm::PSimHitContainer& sim_hits) const;
0066
0067
0068 float simHitsMeanStrip(const edm::PSimHitContainer& sim_hits) const;
0069
0070 std::set<int> hitStripsInDetId(unsigned int, int margin_n_strips = 1) const;
0071 std::set<int> hitPadsInDetId(unsigned int) const;
0072 std::set<int> hitCoPadsInDetId(unsigned int) const;
0073
0074
0075 std::set<int> hitPartitions() const;
0076
0077 private:
0078 void matchSimHitsToSimTrack();
0079
0080 void clear();
0081
0082 edm::ESGetToken<GEMGeometry, MuonGeometryRecord> geomToken_;
0083
0084 std::map<unsigned int, edm::PSimHitContainer> superchamber_to_hits_;
0085
0086
0087 std::map<unsigned int, std::set<int> > detids_to_pads_;
0088
0089
0090 std::map<unsigned int, std::set<int> > detids_to_copads_;
0091 };
0092
0093 #endif