Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:30:47

0001 #ifndef SimMuon_MCTruth_MuonToTrackingParticleAssociatorByHitsImpl_h
0002 #define SimMuon_MCTruth_MuonToTrackingParticleAssociatorByHitsImpl_h
0003 // -*- C++ -*-
0004 //
0005 // Package:     SimMuon/MCTruth
0006 // Class  :     MuonToTrackingParticleAssociatorByHitsImpl
0007 //
0008 /**\class MuonToTrackingParticleAssociatorByHitsImpl
0009  MuonToTrackingParticleAssociatorByHitsImpl.h
0010  "MuonToTrackingParticleAssociatorByHitsImpl.h"
0011 
0012  Description: [one line class summary]
0013 
0014  Usage:
0015     <usage>
0016 
0017 */
0018 //
0019 // Original Author:  Christopher Jones
0020 //         Created:  Wed, 07 Jan 2015 21:35:52 GMT
0021 //
0022 
0023 // system include files
0024 #include <functional>
0025 
0026 // user include files
0027 #include "SimDataFormats/Associations/interface/MuonToTrackingParticleAssociatorBaseImpl.h"
0028 #include "SimMuon/MCTruth/interface/MuonAssociatorByHitsHelper.h"
0029 
0030 // forward declarations
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;  // stop default
0052 
0053   const MuonToTrackingParticleAssociatorByHitsImpl &operator=(const MuonToTrackingParticleAssociatorByHitsImpl &) =
0054       delete;  // stop default
0055 
0056   // ---------- const member functions ---------------------
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   // ---------- static member functions --------------------
0070 
0071   // ---------- member functions ---------------------------
0072 
0073 private:
0074   // ---------- member data --------------------------------
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