22#ifndef TrigInDetAnalysisUtils_Associator_DeltaEtaPhi_H
23#define TrigInDetAnalysisUtils_Associator_DeltaEtaPhi_H
41 ~Associator_DeltaEtaPhi() { }
45 virtual void match(
const std::vector<TIDA::Track*>& referenceTracks,
46 const std::vector<TIDA::Track*>& testTracks) {
53 std::vector<TIDA::Track*>::const_iterator
reference, referenceEnd=referenceTracks.end();
54 for(reference=referenceTracks.begin(); reference!=referenceEnd; reference++) {
59 TIDA::Track* bestMatch = NULL;
60 double bestDeltaR=1000;
62 std::vector<TIDA::Track*>::const_iterator
test, testEnd=testTracks.end();
63 for(test=testTracks.begin(); test!=testEnd; test++) {
66 double deta = (*reference)->eta() - (*test)->eta();
67 double dphi = (*reference)->phi() - (*test)->phi();
71 if (fabs(deta)>m_deltaEta || fabs(dphi)>m_deltaPhi)
continue;
73 double deltaR = (deta*deta)/(m_deltaEta*m_deltaEta)+(dphi*dphi)/(m_deltaPhi*m_deltaPhi);
76 if(bestMatch==NULL ||
deltaR<bestDeltaR) {
85 mmatched.insert(map_type::value_type(*reference, bestMatch));
86 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 Associator * clone()=0
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 .