22#ifndef TrigInDetAnalysisUtils_Associator_DeltaEtaPhi_H
23#define TrigInDetAnalysisUtils_Associator_DeltaEtaPhi_H
41 ~Associator_DeltaEtaPhi() { }
44 virtual void match(
const std::vector<TIDA::Track*>& referenceTracks,
45 const std::vector<TIDA::Track*>& testTracks) {
52 std::vector<TIDA::Track*>::const_iterator
reference, referenceEnd=referenceTracks.end();
53 for(reference=referenceTracks.begin(); reference!=referenceEnd; reference++) {
58 TIDA::Track* bestMatch = NULL;
59 double bestDeltaR=1000;
61 std::vector<TIDA::Track*>::const_iterator
test, testEnd=testTracks.end();
62 for(test=testTracks.begin(); test!=testEnd; test++) {
65 double deta = (*reference)->eta() - (*test)->eta();
66 double dphi = (*reference)->phi() - (*test)->phi();
70 if (fabs(deta)>m_deltaEta || fabs(dphi)>m_deltaPhi)
continue;
72 double deltaR = (deta*deta)/(m_deltaEta*m_deltaEta)+(dphi*dphi)/(m_deltaPhi*m_deltaPhi);
75 if(bestMatch==NULL ||
deltaR<bestDeltaR) {
84 mmatched.insert(map_type::value_type(*reference, bestMatch));
85 mrevmatched.insert(map_type::value_type(bestMatch, *reference));
Scalar deltaPhi(const MatrixBase< Derived > &vec) const
Scalar deltaR(const MatrixBase< Derived > &vec) const
TIDA::Associator< TIDA::Track > TrackAssociator
virtual void match(const std::vector< TIDA::Track * > &s1, const std::vector< TIDA::Track * > &s2)=0
double deltaEta(const I4Momentum &p1, const I4Momentum &p2)
Computes efficiently .