CMS 3D CMS Logo

List of all members | Public Member Functions | Public Attributes
SortMuonSegmentMatches Struct Reference

functor predicate for standard library sort algorithm More...

#include <MuonArbitrationMethods.h>

Public Member Functions

bool operator() (std::pair< reco::MuonChamberMatch *, reco::MuonSegmentMatch *> p1, std::pair< reco::MuonChamberMatch *, reco::MuonSegmentMatch *> p2)
 sorts vector of pairs of chamber and segment pointers More...
 
 SortMuonSegmentMatches (unsigned int flag)
 constructor takes arbitration type More...
 

Public Attributes

unsigned int flag_
 

Detailed Description

functor predicate for standard library sort algorithm

Definition at line 12 of file MuonArbitrationMethods.h.

Constructor & Destructor Documentation

◆ SortMuonSegmentMatches()

SortMuonSegmentMatches::SortMuonSegmentMatches ( unsigned int  flag)
inline

constructor takes arbitration type

Definition at line 14 of file MuonArbitrationMethods.h.

References RemoveAddSevLevel::flag, and flag_.

Member Function Documentation

◆ operator()()

bool SortMuonSegmentMatches::operator() ( std::pair< reco::MuonChamberMatch *, reco::MuonSegmentMatch *>  p1,
std::pair< reco::MuonChamberMatch *, reco::MuonSegmentMatch *>  p2 
)
inline

sorts vector of pairs of chamber and segment pointers

Definition at line 16 of file MuonArbitrationMethods.h.

References reco::MuonSegmentMatch::BelongsToTrackByDR, reco::MuonSegmentMatch::BelongsToTrackByDRSlope, reco::MuonSegmentMatch::BelongsToTrackByDX, reco::MuonSegmentMatch::BelongsToTrackByDXSlope, reco::MuonSegmentMatch::BestInChamberByDR, reco::MuonSegmentMatch::BestInChamberByDRSlope, reco::MuonSegmentMatch::BestInChamberByDX, reco::MuonSegmentMatch::BestInChamberByDXSlope, reco::MuonSegmentMatch::BestInStationByDR, reco::MuonSegmentMatch::BestInStationByDRSlope, reco::MuonSegmentMatch::BestInStationByDX, reco::MuonSegmentMatch::BestInStationByDXSlope, reco::MuonChamberMatch::dXdZ, reco::MuonSegmentMatch::dXdZ, reco::MuonChamberMatch::dYdZ, reco::MuonSegmentMatch::dYdZ, flag_, reco::MuonSegmentMatch::hasZed(), LaserDQM_cfg::p1, SiStripOfflineCRack_cfg::p2, conifer::pow(), mathSSE::sqrt(), reco::MuonChamberMatch::x, reco::MuonSegmentMatch::x, reco::MuonChamberMatch::y, and reco::MuonSegmentMatch::y.

17  {
18  reco::MuonChamberMatch* cm1 = p1.first;
19  reco::MuonSegmentMatch* sm1 = p1.second;
20  reco::MuonChamberMatch* cm2 = p2.first;
21  reco::MuonSegmentMatch* sm2 = p2.second;
22 
25  return fabs(sm1->x - cm1->x) < fabs(sm2->x - cm2->x);
28  if ((!sm1->hasZed()) || (!sm2->hasZed())) // no y information so return dx
29  return fabs(sm1->x - cm1->x) < fabs(sm2->x - cm2->x);
30  return sqrt(pow(sm1->x - cm1->x, 2) + pow(sm1->y - cm1->y, 2)) <
31  sqrt(pow(sm2->x - cm2->x, 2) + pow(sm2->y - cm2->y, 2));
32  }
36  return fabs(sm1->dXdZ - cm1->dXdZ) < fabs(sm2->dXdZ - cm2->dXdZ);
40  if ((!sm1->hasZed()) || (!sm2->hasZed())) // no y information so return dx
41  return fabs(sm1->dXdZ - cm1->dXdZ) < fabs(sm2->dXdZ - cm2->dXdZ);
42  return sqrt(pow(sm1->dXdZ - cm1->dXdZ, 2) + pow(sm1->dYdZ - cm1->dYdZ, 2)) <
43  sqrt(pow(sm2->dXdZ - cm2->dXdZ, 2) + pow(sm2->dYdZ - cm2->dYdZ, 2));
44  }
45 
46  return false; // is this appropriate? fix this
47  }
constexpr int pow(int x)
Definition: conifer.h:24
static const unsigned int BestInStationByDRSlope
static const unsigned int BelongsToTrackByDXSlope
static const unsigned int BestInStationByDR
T sqrt(T t)
Definition: SSEVec.h:19
static const unsigned int BestInChamberByDX
static const unsigned int BestInChamberByDR
static const unsigned int BestInStationByDXSlope
static const unsigned int BestInChamberByDXSlope
static const unsigned int BelongsToTrackByDRSlope
static const unsigned int BelongsToTrackByDR
static const unsigned int BelongsToTrackByDX
static const unsigned int BestInStationByDX
static const unsigned int BestInChamberByDRSlope

Member Data Documentation

◆ flag_

unsigned int SortMuonSegmentMatches::flag_

Definition at line 49 of file MuonArbitrationMethods.h.

Referenced by operator()(), and SortMuonSegmentMatches().