6 #include "marlin/VerbosityLevels.h"
8 #include "KiTrack/Subset.h"
15 template <
class T,
class QI >
18 SorterQI( QI getQI ): _getQI( getQI ){}
20 bool operator()( T a, T b ){
return ( _getQI( a ) > _getQI( b ) ); }
118 template<
class GetQI,
class AreCompatible >
129 template<
class T>
template<
class GetQI,
class AreCompatible>
133 unsigned nAccepted=0;
134 unsigned nRejected=0;
138 std::vector< T > elements = this->_elements;
142 sort( elements.begin(), elements.end() , sorterQI );
144 streamlog_out( DEBUG3 ) <<
"The elements and their QIs sorted:\n";
145 for(
unsigned i=0; i < elements.size(); i++ ){
147 double qi = getQI( elements[i] );
148 streamlog_out( DEBUG3 ) << elements[i] <<
"\t" << qi <<
"\n";
159 while( elements.size() > 0 ){
163 for(
unsigned i=1; i < elements.size(); i++){
166 if( areCompatible( elements[0] , elements[i] ) == false ){
170 this->_rejectedElements.push_back( elements[i] );
172 streamlog_out( DEBUG2 ) <<
"reject " << elements[i] <<
"\n";
174 elements.erase( elements.begin() + i );
182 streamlog_out( DEBUG2 ) <<
"accept " << elements[0] <<
"\n";
184 this->_acceptedElements.push_back( elements[0] );
187 elements.erase( elements.begin() );
193 streamlog_out( DEBUG4 ) <<
"SubsetSimple accepted " << nAccepted
194 <<
" elements and rejected " << nRejected <<
" elements of all in all "
195 << nAccepted + nRejected <<
" elements.\n";
A base class for subsets.
Definition: Subset.h:19
void calculateBestSet(AreCompatible areCompatible, GetQI getQI)
Calculates the best set using a very simple method.
Definition: SubsetSimple.h:130
A class to get the best subset by taking the element with the highest quality indicator and throwing ...
Definition: SubsetSimple.h:32
Definition: SubsetSimple.h:16