8 #ifndef L1T_OmtfP1_TOOLS_MUONCANDIDATEMATCHER_H_
9 #define L1T_OmtfP1_TOOLS_MUONCANDIDATEMATCHER_H_
108 const std::shared_ptr<OMTFinput>&,
111 const std::vector<l1t::RegionalMuonCand>& candMuons)
override;
116 std::unique_ptr<l1t::RegionalMuonCandBxCollection>& finalCandidates)
override;
151 std::vector<const l1t::RegionalMuonCand*>& muonCands,
154 std::vector<MatchingResult>
match(std::vector<const l1t::RegionalMuonCand*>& muonCands,
160 std::vector<MatchingResult>
match(std::vector<const l1t::RegionalMuonCand*>& muonCands,
MatchingResult match(const l1t::RegionalMuonCand *omtfCand, const AlgoMuonPtr &procMuon, const SimTrack &simTrack, TrajectoryStateOnSurface &tsof)
std::vector< MatchingResult > cleanMatching(std::vector< MatchingResult > matchingResults, std::vector< const l1t::RegionalMuonCand * > &muonCands, AlgoMuons &ghostBustedProcMuons)
Vector momentum() const
spatial momentum vector
TH1D * deltaPhiPropCandStdDev
int pdgId() const
PDG ID.
edm::ESHandle< MagneticField > magField
const l1t::RegionalMuonCand * muonCand
double pt() const
Transverse momentum. Note this is taken from the first SimTrack only.
void beginRun(edm::EventSetup const &eventSetup) override
TrajectoryStateOnSurface propagate(const SimTrack &simTrack, const edm::SimVertexContainer *simVertices)
CandidateSimMuonMatcher(const edm::ParameterSet &edmCfg, const OMTFConfiguration *omtfConfig, const edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > &magneticFieldEsToken, const edm::ESGetToken< Propagator, TrackingComponentsRecord > &propagatorEsToken)
void observeProcesorEmulation(unsigned int iProcessor, l1t::tftype mtfType, const std::shared_ptr< OMTFinput > &, const AlgoMuons &algoCandidates, const AlgoMuons &gbCandidates, const std::vector< l1t::RegionalMuonCand > &candMuons) override
const OMTFConfiguration * omtfConfig
const TrackingParticle * trackingParticle
const edm::ESGetToken< Propagator, TrackingComponentsRecord > & propagatorEsToken
const edm::ParameterSet & edmCfg
MatchingResult(const SimTrack &simTrack)
TH1D * deltaPhiPropCandMean
FreeTrajectoryState simTrackToFts(const SimTrack &simTrack, const SimVertex &simVertex)
void observeEventBegin(const edm::Event &event) override
std::vector< MatchingResult > getMatchingResults()
TrajectoryStateOnSurface atStation2(FreeTrajectoryState ftsStart, float eta) const
std::vector< SimVertex > SimVertexContainer
edm::ESHandle< Propagator > propagator
double matchingLikelihood
int type() const
particle type (HEP PDT convension)
std::vector< AlgoMuonPtr > AlgoMuons
const math::XYZTLorentzVectorD & momentum() const
MatchingResult(const TrackingParticle &trackingParticle)
Monte Carlo truth information used for tracking validation.
std::shared_ptr< AlgoMuon > AlgoMuonPtr
std::vector< TrackingParticle > TrackingParticleCollection
const SimTrack * simTrack
const edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > & magneticFieldEsToken
std::vector< MatchingResult > matchingResults
std::vector< SimTrack > SimTrackContainer
~CandidateSimMuonMatcher() override
void observeEventEnd(const edm::Event &event, std::unique_ptr< l1t::RegionalMuonCandBxCollection > &finalCandidates) override
static std::vector< const l1t::RegionalMuonCand * > ghostBust(const l1t::RegionalMuonCandBxCollection *mtfCands, const AlgoMuons &gbCandidates, AlgoMuons &ghostBustedProcMuons)