8 #ifndef L1T_OmtfP1_TOOLS_MUONCANDIDATEMATCHER_H_ 9 #define L1T_OmtfP1_TOOLS_MUONCANDIDATEMATCHER_H_ 110 const std::shared_ptr<OMTFinput>&,
113 const std::vector<l1t::RegionalMuonCand>& candMuons)
override;
118 std::unique_ptr<l1t::RegionalMuonCandBxCollection>& finalCandidates)
override;
153 std::vector<const l1t::RegionalMuonCand*>& muonCands,
156 std::vector<MatchingResult>
match(std::vector<const l1t::RegionalMuonCand*>& muonCands,
162 std::vector<MatchingResult>
match(std::vector<const l1t::RegionalMuonCand*>& muonCands,
170 std::vector<MatchingResult>
matchSimple(std::vector<const l1t::RegionalMuonCand*>& muonCands,
const SimVertex * simVertex
MatchingResult match(const l1t::RegionalMuonCand *omtfCand, const AlgoMuonPtr &procMuon, const SimTrack &simTrack, TrajectoryStateOnSurface &tsof)
Vector momentum() const
spatial momentum vector
TH1D * deltaPhiPropCandStdDev
edm::ESHandle< MagneticField > magField
TrajectoryStateOnSurface atStation2(const FreeTrajectoryState &ftsStart) const
const l1t::RegionalMuonCand * muonCand
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 math::XYZTLorentzVectorD & momentum() const
const TrackingParticle * trackingParticle
std::vector< MatchingResult > cleanMatching(std::vector< MatchingResult > matchingResults, std::vector< const l1t::RegionalMuonCand *> &muonCands, AlgoMuons &ghostBustedProcMuons)
int type() const
particle type (HEP PDT convension)
std::vector< MatchingResult > matchSimple(std::vector< const l1t::RegionalMuonCand *> &muonCands, AlgoMuons &ghostBustedProcMuons, const edm::SimTrackContainer *simTracks, const edm::SimVertexContainer *simVertices, std::function< bool(const SimTrack &)> const &simTrackFilter)
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()
std::vector< SimVertex > SimVertexContainer
edm::ESHandle< Propagator > propagator
double matchingLikelihood
std::vector< AlgoMuonPtr > AlgoMuons
MatchingResult(const TrackingParticle &trackingParticle)
Monte Carlo truth information used for tracking validation.
std::shared_ptr< AlgoMuon > AlgoMuonPtr
std::vector< TrackingParticle > TrackingParticleCollection
double pt() const
Transverse momentum. Note this is taken from the first SimTrack only.
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
std::vector< const l1t::RegionalMuonCand * > ghostBust(const l1t::RegionalMuonCandBxCollection *mtfCands, const AlgoMuons &gbCandidates, AlgoMuons &ghostBustedProcMuons)