1 #ifndef RecoBTag_SecondaryVertex_VertexSorting_h 2 #define RecoBTag_SecondaryVertex_VertexSorting_h 19 template <
class SecondaryVertex>
26 std::vector<unsigned int>
27 operator () (
const std::vector<SecondaryVertex>&svCandidates)
const;
44 template <
class SecondaryVertex>
48 if (criterium ==
"dist3dError")
50 if (criterium ==
"dist3dValue")
52 if (criterium ==
"dist3dSignificance")
54 if (criterium ==
"dist2dError")
56 if (criterium ==
"dist2dValue")
58 if (criterium ==
"dist2dSignificance")
62 <<
"Vertex sort criterium \"" << criterium <<
"\" is invalid." 68 template <
class SecondaryVertex>
70 const std::vector<SecondaryVertex> &svCandidates)
const 102 std::multimap<double, unsigned int> sortedMap;
104 for(
typename std::vector<SecondaryVertex>::const_iterator iter =
105 svCandidates.begin(); iter != svCandidates.end(); iter++) {
107 double value =
std::abs((((*iter).*measurementFn)().*valueFn)());
108 sortedMap.insert(std::make_pair(value, i++));
111 std::vector<unsigned int>
result;
112 for(std::multimap<double, unsigned int>::const_iterator iter =
113 sortedMap.begin(); iter != sortedMap.end(); iter++)
114 result.push_back(iter->second);
120 #endif // RecoBTag_SecondaryVertex_VertexSorting_h
Measurement1D dist3d() const
Measurement1D dist2d() const
SortCriterium sortCriterium
std::vector< unsigned int > operator()(const std::vector< SecondaryVertex > &svCandidates) const
Abs< T >::type abs(const T &t)
VertexSorting(const edm::ParameterSet ¶ms)
double significance() const
static SortCriterium getSortCriterium(const std::string &criterium)