CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Types | Static Private Member Functions | Private Attributes
reco::VertexSorting< SecondaryVertex > Class Template Reference

#include <VertexSorting.h>

Public Member Functions

std::vector< unsigned int > operator() (const std::vector< SecondaryVertex > &svCandidates) const
 
 VertexSorting (const edm::ParameterSet &params)
 
 ~VertexSorting ()
 

Private Types

enum  SortCriterium {
  sortDist3dVal = 0, sortDist3dErr, sortDist3dSig, sortDist2dErr,
  sortDist2dSig, sortDist2dVal
}
 

Static Private Member Functions

static SortCriterium getSortCriterium (const std::string &criterium)
 

Private Attributes

SortCriterium sortCriterium
 

Detailed Description

template<class SecondaryVertex>
class reco::VertexSorting< SecondaryVertex >

Definition at line 20 of file VertexSorting.h.

Member Enumeration Documentation

template<class SecondaryVertex>
enum reco::VertexSorting::SortCriterium
private
Enumerator
sortDist3dVal 
sortDist3dErr 
sortDist3dSig 
sortDist2dErr 
sortDist2dSig 
sortDist2dVal 

Definition at line 30 of file VertexSorting.h.

Constructor & Destructor Documentation

template<class SecondaryVertex>
reco::VertexSorting< SecondaryVertex >::VertexSorting ( const edm::ParameterSet params)
inline

Definition at line 22 of file VertexSorting.h.

22  :
23  sortCriterium(getSortCriterium(params.getParameter<std::string>("sortCriterium"))){}
T getParameter(std::string const &) const
SortCriterium sortCriterium
Definition: VertexSorting.h:41
static SortCriterium getSortCriterium(const std::string &criterium)
Definition: VertexSorting.h:46
template<class SecondaryVertex>
reco::VertexSorting< SecondaryVertex >::~VertexSorting ( )
inline

Definition at line 24 of file VertexSorting.h.

24 {}

Member Function Documentation

template<class SecondaryVertex >
VertexSorting< SecondaryVertex >::SortCriterium reco::VertexSorting< SecondaryVertex >::getSortCriterium ( const std::string &  criterium)
staticprivate

Definition at line 46 of file VertexSorting.h.

References Exception.

47 {
48  if (criterium == "dist3dError")
49  return sortDist3dErr;
50  if (criterium == "dist3dValue")
51  return sortDist3dVal;
52  if (criterium == "dist3dSignificance")
53  return sortDist3dSig;
54  if (criterium == "dist2dError")
55  return sortDist2dErr;
56  if (criterium == "dist2dValue")
57  return sortDist2dVal;
58  if (criterium == "dist2dSignificance")
59  return sortDist2dSig;
60 
61  throw cms::Exception("InvalidArgument")
62  << "Vertex sort criterium \"" << criterium << "\" is invalid."
63  << std::endl;
64 }
template<class SecondaryVertex>
std::vector< unsigned int > reco::VertexSorting< SecondaryVertex >::operator() ( const std::vector< SecondaryVertex > &  svCandidates) const

Definition at line 69 of file VertexSorting.h.

References funct::abs(), reco::TemplatedSecondaryVertex< SV >::dist2d(), reco::TemplatedSecondaryVertex< SV >::dist3d(), Measurement1D::error(), i, query::result, Measurement1D::significance(), Measurement1D::value(), and relativeConstraints::value.

71 {
72  Measurement1D (SecondaryVertex::*measurementFn)() const = 0;
73  switch(sortCriterium) {
74  case sortDist3dErr:
75  case sortDist3dVal:
76  case sortDist3dSig:
77  measurementFn = &SecondaryVertex::dist3d;
78  break;
79  case sortDist2dErr:
80  case sortDist2dVal:
81  case sortDist2dSig:
82  measurementFn = &SecondaryVertex::dist2d;
83  break;
84  }
85 
86  double (Measurement1D::*valueFn)() const = 0;
87  switch(sortCriterium) {
88  case sortDist3dErr:
89  case sortDist2dErr:
90  valueFn = &Measurement1D::error;
91  break;
92  case sortDist3dVal:
93  case sortDist2dVal:
94  valueFn = &Measurement1D::value;
95  break;
96  case sortDist3dSig:
97  case sortDist2dSig:
98  valueFn = &Measurement1D::significance;
99  break;
100  }
101 
102  std::multimap<double, unsigned int> sortedMap;
103  unsigned int i = 0;
104  for(typename std::vector<SecondaryVertex>::const_iterator iter =
105  svCandidates.begin(); iter != svCandidates.end(); iter++) {
106 
107  double value = std::abs((((*iter).*measurementFn)().*valueFn)());
108  sortedMap.insert(std::make_pair(value, i++));
109  }
110 
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);
115 
116  return result;
117 }
int i
Definition: DBlmapReader.cc:9
TemplatedSecondaryVertex< reco::Vertex > SecondaryVertex
double error() const
Definition: Measurement1D.h:30
SortCriterium sortCriterium
Definition: VertexSorting.h:41
tuple result
Definition: query.py:137
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
double significance() const
Definition: Measurement1D.h:32
double value() const
Definition: Measurement1D.h:28

Member Data Documentation

template<class SecondaryVertex>
SortCriterium reco::VertexSorting< SecondaryVertex >::sortCriterium
private

Definition at line 41 of file VertexSorting.h.