1 #ifndef MuonAnalysis_MuonAssociators_interface_L1MuonMatcherAlgo_h
2 #define MuonAnalysis_MuonAssociators_interface_L1MuonMatcherAlgo_h
52 return propagated.
isValid() ?
match(propagated, l1, deltaR, deltaPhi) :
false;
59 return propagated.
isValid() ?
match(propagated, l1, deltaR, deltaPhi) :
false;
71 return propagated.
isValid() ?
match(propagated, l1, deltaR, deltaPhi) : -1;
79 return propagated.
isValid() ?
match(propagated, l1, deltaR, deltaPhi) : -1;
92 template<
typename Collection,
typename Selector>
102 template<
typename Collection,
typename Selector>
112 template<
typename Collection,
typename Selector>
130 template<
typename Collection,
typename Selector>
138 for (
int i = 0,
n = l1s.size();
i <
n; ++
i) {
139 const obj &l1 = l1s[
i];
141 double thisDeltaPhi =
::deltaPhi(
double(pos.
phi()), l1.phi());
142 double thisDeltaR2 =
::deltaR2(
double(pos.
eta()),
double(pos.
phi()), l1.eta(), l1.phi());
144 if (
sortByDeltaPhi_ ? (fabs(thisDeltaPhi) < fabs(minDeltaPhi)) : (thisDeltaR2 < minDeltaR2)) {
147 deltaPhi = thisDeltaPhi;
148 if (
sortByDeltaPhi_) minDeltaPhi = thisDeltaPhi;
else minDeltaR2 = thisDeltaR2;
L1Selector preselectionCut_
Preselection cut to apply to L1 candidates before matching.
TrajectoryStateOnSurface extrapolate(const FreeTrajectoryState &state) const
Extrapolate a FreeTrajectoryState to the muon station 2, return an invalid TSOS if it fails...
void init(const edm::EventSetup &iSetup)
Call this method at the beginning of each run, to initialize geometry, magnetic field and propagators...
TrajectoryStateOnSurface extrapolate(const reco::Track &tk) const
Extrapolate reco::Track to the muon station 2, return an invalid TSOS if it fails.
int matchGeneric(const reco::Candidate &c, const Collection &l1, const Selector &sel, float &deltaR, float &deltaPhi, TrajectoryStateOnSurface &propagated) const
TrajectoryStateOnSurface extrapolate(const reco::Track &tk) const
Extrapolate reco::Track to the muon station 2, return an invalid TSOS if it fails.
Geom::Phi< T > phi() const
GlobalPoint globalPosition() const
bool sortByDeltaPhi_
Sort by deltaPhi instead of deltaR.
const PropagateToMuon & propagatorToMuon() const
Return the propagator to second muon station (in case it's needed)
Propagate an object (usually a track) to the second muon station. Support for other muon stations wil...
int match(const reco::Track &tk, const std::vector< l1extra::L1MuonParticle > &l1, float &deltaR, float &deltaPhi, TrajectoryStateOnSurface &propagated) const
int match(const reco::Candidate &c, const std::vector< l1extra::L1MuonParticle > &l1, float &deltaR, float &deltaPhi, TrajectoryStateOnSurface &propagated) const
double deltaR2(const T1 &t1, const T2 &t2)
Container::value_type value_type
Functor that operates on <T>
PropagateToMuon & propagatorToMuon()
Return the propagator to second muon station (in case it's needed)
double deltaR(double eta1, double eta2, double phi1, double phi2)
bool match(const reco::Candidate &c, const l1extra::L1MuonParticle &l1, float &deltaR, float &deltaPhi, TrajectoryStateOnSurface &propagated) const
bool match(const reco::Track &tk, const l1extra::L1MuonParticle &l1, float &deltaR, float &deltaPhi, TrajectoryStateOnSurface &propagated) const
int matchGeneric(const reco::Track &tk, const Collection &l1, const Selector &sel, float &deltaR, float &deltaPhi, TrajectoryStateOnSurface &propagated) const
StringCutObjectSelector< l1extra::L1MuonParticle > L1Selector
L1MuonMatcherAlgo(const edm::ParameterSet &iConfig)
Matcher of reconstructed objects to L1 Muons.
TrajectoryStateOnSurface extrapolate(const reco::Candidate &tk) const
Extrapolate reco::Candidate to the muon station 2, return an invalid TSOS if it fails.
double deltaR2_
Matching cuts.