File indexing completed on 2024-04-06 12:30:47
0001 #ifndef SimMuon_MCTruth_MuonToTrackingParticleAssociatorByHitsImpl_h
0002 #define SimMuon_MCTruth_MuonToTrackingParticleAssociatorByHitsImpl_h
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024 #include <functional>
0025
0026
0027 #include "SimDataFormats/Associations/interface/MuonToTrackingParticleAssociatorBaseImpl.h"
0028 #include "SimMuon/MCTruth/interface/MuonAssociatorByHitsHelper.h"
0029
0030
0031 class TrackerMuonHitExtractor;
0032
0033 class MuonToTrackingParticleAssociatorByHitsImpl : public reco::MuonToTrackingParticleAssociatorBaseImpl {
0034 public:
0035 using TrackHitsCollection = MuonAssociatorByHitsHelper::TrackHitsCollection;
0036
0037 MuonToTrackingParticleAssociatorByHitsImpl(
0038 TrackerMuonHitExtractor const &iHitExtractor,
0039 TrackerHitAssociator::Config const &iTracker,
0040 CSCHitAssociator::Config const &iCSC,
0041 DTHitAssociator::Config const &iDT,
0042 RPCHitAssociator::Config const &iRPC,
0043 GEMHitAssociator::Config const &iGEM,
0044 edm::Event const &iEvent,
0045 edm::EventSetup const &iSetup,
0046 const TrackerTopology *iTopo,
0047 std::function<void(const TrackHitsCollection &, const TrackingParticleCollection &)>,
0048 MuonAssociatorByHitsHelper const *iHelper);
0049
0050 MuonToTrackingParticleAssociatorByHitsImpl(const MuonToTrackingParticleAssociatorByHitsImpl &) =
0051 delete;
0052
0053 const MuonToTrackingParticleAssociatorByHitsImpl &operator=(const MuonToTrackingParticleAssociatorByHitsImpl &) =
0054 delete;
0055
0056
0057 void associateMuons(reco::MuonToSimCollection &recoToSim,
0058 reco::SimToMuonCollection &simToReco,
0059 const edm::RefToBaseVector<reco::Muon> &muons,
0060 reco::MuonTrackType type,
0061 const edm::RefVector<TrackingParticleCollection> &tpColl) const override;
0062
0063 void associateMuons(reco::MuonToSimCollection &recoToSim,
0064 reco::SimToMuonCollection &simToReco,
0065 const edm::Handle<edm::View<reco::Muon>> &muons,
0066 reco::MuonTrackType type,
0067 const edm::Handle<TrackingParticleCollection> &tpColl) const override;
0068
0069
0070
0071
0072
0073 private:
0074
0075 TrackerMuonHitExtractor const *m_hitExtractor;
0076 TrackerHitAssociator const m_tracker;
0077 CSCHitAssociator const m_csc;
0078 DTHitAssociator const m_dt;
0079 RPCHitAssociator const m_rpc;
0080 GEMHitAssociator const m_gem;
0081 MuonAssociatorByHitsHelper::Resources m_resources;
0082 MuonAssociatorByHitsHelper const *m_helper;
0083 };
0084
0085 #endif