1 #ifndef MuonAnalysis_MuonAssociators_interface_L1MuonMatcherAlgo_h 2 #define MuonAnalysis_MuonAssociators_interface_L1MuonMatcherAlgo_h 61 return propagated.
isValid() ?
match(propagated, l1, deltaR, deltaPhi) :
false;
73 return propagated.
isValid() ?
match(propagated, l1, deltaR, deltaPhi) :
false;
89 const std::vector<l1extra::L1MuonParticle> &l1,
94 return propagated.
isValid() ?
match(propagated, l1, deltaR, deltaPhi) : -1;
102 const std::vector<l1extra::L1MuonParticle> &l1,
107 return propagated.
isValid() ?
match(propagated, l1, deltaR, deltaPhi) : -1;
115 const std::vector<l1extra::L1MuonParticle> &l1,
117 float &deltaPhi)
const;
124 template <
typename Collection,
typename Selector>
126 const Collection &l1,
140 template <
typename Collection,
typename Selector>
142 const Collection &l1,
156 template <
typename Collection,
typename Selector>
158 const Collection &l1,
161 float &deltaPhi)
const;
177 template <
typename Collection,
typename Selector>
179 const Collection &
l1s,
188 for (
int i = 0,
n = l1s.size();
i <
n; ++
i) {
189 const obj &l1 = l1s[
i];
191 double thisDeltaPhi =
::deltaPhi(
double(pos.
phi()), l1.phi());
192 double thisDeltaR2 =
::deltaR2(
double(pos.
eta()),
double(pos.
phi()), l1.eta(), l1.phi());
194 if (
sortByDeltaPhi_ ? (fabs(thisDeltaPhi) < fabs(minDeltaPhi)) : (thisDeltaR2 < minDeltaR2)) {
197 deltaPhi = thisDeltaPhi;
199 minDeltaPhi = thisDeltaPhi;
201 minDeltaR2 = thisDeltaR2;
L1Selector preselectionCut_
Preselection cut to apply to L1 candidates before matching.
TrajectoryStateOnSurface extrapolate(const FreeTrajectoryState &state) const
void init(const edm::EventSetup &iSetup)
TrajectoryStateOnSurface extrapolate(const reco::Track &tk) const
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
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...
Container::value_type value_type
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
Functor that operates on <T>
PropagateToMuon & propagatorToMuon()
Return the propagator to second muon station (in case it's needed)
bool match(const reco::Candidate &c, const l1extra::L1MuonParticle &l1, float &deltaR, float &deltaPhi, TrajectoryStateOnSurface &propagated) const
constexpr auto deltaR2(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
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
double deltaR2_
Matching cuts.