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 Class 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

Definition at line 13 of file VertexSorting.h.

Member Enumeration Documentation

Enumerator
sortDist3dVal 
sortDist3dErr 
sortDist3dSig 
sortDist2dErr 
sortDist2dSig 
sortDist2dVal 

Definition at line 22 of file VertexSorting.h.

Constructor & Destructor Documentation

VertexSorting::VertexSorting ( const edm::ParameterSet params)

Definition at line 37 of file VertexSorting.cc.

37  :
38  sortCriterium(getSortCriterium(params.getParameter<std::string>("sortCriterium")))
39 {
40 }
T getParameter(std::string const &) const
static SortCriterium getSortCriterium(const std::string &criterium)
SortCriterium sortCriterium
Definition: VertexSorting.h:33
reco::VertexSorting::~VertexSorting ( )
inline

Definition at line 16 of file VertexSorting.h.

16 {}

Member Function Documentation

VertexSorting::SortCriterium VertexSorting::getSortCriterium ( const std::string &  criterium)
staticprivate

Definition at line 17 of file VertexSorting.cc.

References edm::hlt::Exception, sortDist2dErr, sortDist2dSig, sortDist2dVal, sortDist3dErr, sortDist3dSig, and sortDist3dVal.

18 {
19  if (criterium == "dist3dError")
20  return sortDist3dErr;
21  if (criterium == "dist3dValue")
22  return sortDist3dVal;
23  if (criterium == "dist3dSignificance")
24  return sortDist3dSig;
25  if (criterium == "dist2dError")
26  return sortDist2dErr;
27  if (criterium == "dist2dValue")
28  return sortDist2dVal;
29  if (criterium == "dist2dSignificance")
30  return sortDist2dSig;
31 
32  throw cms::Exception("InvalidArgument")
33  << "Vertex sort criterium \"" << criterium << "\" is invalid."
34  << std::endl;
35 }
std::vector< unsigned int > VertexSorting::operator() ( const std::vector< SecondaryVertex > &  svCandidates) const

Definition at line 45 of file VertexSorting.cc.

References abs, reco::SecondaryVertex::dist2d(), reco::SecondaryVertex::dist3d(), Measurement1D::error(), i, query::result, Measurement1D::significance(), sortCriterium, sortDist2dErr, sortDist2dSig, sortDist2dVal, sortDist3dErr, sortDist3dSig, sortDist3dVal, Measurement1D::value(), and relativeConstraints::value.

47 {
48  Measurement1D (SecondaryVertex::*measurementFn)() const = 0;
49  switch(sortCriterium) {
50  case sortDist3dErr:
51  case sortDist3dVal:
52  case sortDist3dSig:
53  measurementFn = &SecondaryVertex::dist3d;
54  break;
55  case sortDist2dErr:
56  case sortDist2dVal:
57  case sortDist2dSig:
58  measurementFn = &SecondaryVertex::dist2d;
59  break;
60  }
61 
62  double (Measurement1D::*valueFn)() const = 0;
63  switch(sortCriterium) {
64  case sortDist3dErr:
65  case sortDist2dErr:
66  valueFn = &Measurement1D::error;
67  break;
68  case sortDist3dVal:
69  case sortDist2dVal:
70  valueFn = &Measurement1D::value;
71  break;
72  case sortDist3dSig:
73  case sortDist2dSig:
74  valueFn = &Measurement1D::significance;
75  break;
76  }
77 
78  std::multimap<double, unsigned int> sortedMap;
79  unsigned int i = 0;
80  for(std::vector<SecondaryVertex>::const_iterator iter =
81  svCandidates.begin(); iter != svCandidates.end(); iter++) {
82 
83  double value = std::abs((((*iter).*measurementFn)().*valueFn)());
84  sortedMap.insert(std::make_pair(value, i++));
85  }
86 
87  std::vector<unsigned int> result;
88  for(std::multimap<double, unsigned int>::const_iterator iter =
89  sortedMap.begin(); iter != sortedMap.end(); iter++)
90  result.push_back(iter->second);
91 
92  return result;
93 }
int i
Definition: DBlmapReader.cc:9
Measurement1D dist3d() const
double error() const
Definition: Measurement1D.h:30
#define abs(x)
Definition: mlp_lapack.h:159
tuple result
Definition: query.py:137
Measurement1D dist2d() const
double significance() const
Definition: Measurement1D.h:32
double value() const
Definition: Measurement1D.h:28
SortCriterium sortCriterium
Definition: VertexSorting.h:33

Member Data Documentation

SortCriterium reco::VertexSorting::sortCriterium
private

Definition at line 33 of file VertexSorting.h.

Referenced by operator()().