#include <Associator_BestMatch.h>
|
template<typename Tp , typename Tq > |
std::map< int, int > | matcher (const std::vector< Tp * > &ref, const std::vector< Tq * > &test) |
|
Definition at line 58 of file Associator_BestMatch.h.
◆ map_type
◆ rmap_type
◆ Associator_SecondBestpTMatcher()
Associator_SecondBestpTMatcher::Associator_SecondBestpTMatcher |
( |
const std::string & |
name, |
|
|
double |
d |
|
) |
| |
|
inline |
◆ ~Associator_SecondBestpTMatcher()
virtual Associator_SecondBestpTMatcher::~Associator_SecondBestpTMatcher |
( |
| ) |
|
|
inlinevirtual |
◆ clear()
◆ clone()
◆ distance() [1/2]
template<typename T , typename S = T>
◆ distance() [2/2]
◆ match() [1/2]
template<typename T , typename S = T>
virtual void BestMatcher< T, S >::match |
( |
const std::vector< T * > & |
ref, |
|
|
const std::vector< S * > & |
test |
|
) |
| |
|
inlinevirtualinherited |
◆ match() [2/2]
◆ matched() [1/2]
◆ matched() [2/2]
◆ matcher()
template<typename T , typename S = T>
template<typename Tp , typename Tq >
std::map<int, int> BestMatcher< T, S >::matcher |
( |
const std::vector< Tp * > & |
ref, |
|
|
const std::vector< Tq * > & |
test |
|
) |
| |
|
inlineprotectedinherited |
inserting into a multimatch sorts them into order as they are added so you get the list of best matches imediately NB: probably quicker to add them to a vector and then sort them afterward
now go through from best to worst, adding to another sorted set only the matches that do not use tracks already used by a better matching pair already found
set of unique track pairings NB: for some reason, using the multiset is faster than using a vector, even though we are only iterating through it later
hooray!! now print out the answer, make a map etc this isn't technically needed, could just use the set of "matched" objects, but hey ho
Definition at line 91 of file BestMatcher.h.
99 std::multiset<matched_>
m;
101 for (
unsigned int i=0 ;
i<
ref.size() ;
i++ ) {
103 for (
unsigned int j=0 ; j<
test.size() ; j++ ) {
106 m.insert( matched_(
d,
i, j) );
115 std::vector<bool> refused(
ref.size(),
false );
116 std::vector<bool> testused(
test.size(),
false );
122 std::multiset<matched_>
unique;
128 for ( ; mitr!=
m.end() ; mitr++ ) {
130 int rind = mitr->first();
131 int tind = mitr->second();
133 if ( refused[rind] )
continue;
134 if ( testused[tind] )
continue;
136 refused[rind] =
true;
137 testused[tind] =
true;
141 chi2 += (mitr->d()*mitr->d());
154 std::map<int, int> matches;
158 while ( mitr!=
unique.end() ) {
159 matches.insert( std::map<int, int>::value_type( mitr->first(), mitr->second() ) );
◆ revmatched() [1/2]
◆ revmatched() [2/2]
◆ size()
◆ m_d
template<typename T , typename S = T>
◆ mmatched
◆ mname
◆ mrevmatched
The documentation for this class was generated from the following file:
DataModel_detail::iterator< DVL > unique(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of unique for DataVector/List.