CMS 3D CMS Logo

MuonArbitrationMethods.h
Go to the documentation of this file.
1 #ifndef MuonIdentification_MuonArbitrationMethods_h
2 #define MuonIdentification_MuonArbitrationMethods_h
3 
6 
7 #include <utility>
8 
9 // Author: Jake Ribnik (UCSB)
10 
14  SortMuonSegmentMatches( unsigned int flag ) {
15  flag_ = flag;
16  }
18  bool operator() ( std::pair<reco::MuonChamberMatch*,reco::MuonSegmentMatch*> p1,
19  std::pair<reco::MuonChamberMatch*,reco::MuonSegmentMatch*> p2 )
20  {
21  reco::MuonChamberMatch* cm1 = p1.first;
22  reco::MuonSegmentMatch* sm1 = p1.second;
23  reco::MuonChamberMatch* cm2 = p2.first;
24  reco::MuonSegmentMatch* sm2 = p2.second;
25 
29  return fabs(sm1->x-cm1->x) < fabs(sm2->x-cm2->x);
33  {
34  if((! sm1->hasZed()) || (! sm2->hasZed())) // no y information so return dx
35  return fabs(sm1->x-cm1->x) < fabs(sm2->x-cm2->x);
36  return sqrt(pow(sm1->x-cm1->x,2)+pow(sm1->y-cm1->y,2)) <
37  sqrt(pow(sm2->x-cm2->x,2)+pow(sm2->y-cm2->y,2));
38  }
42  return fabs(sm1->dXdZ-cm1->dXdZ) < fabs(sm2->dXdZ-cm2->dXdZ);
46  {
47  if((! sm1->hasZed()) || (! sm2->hasZed())) // no y information so return dx
48  return fabs(sm1->dXdZ-cm1->dXdZ) < fabs(sm2->dXdZ-cm2->dXdZ);
49  return sqrt(pow(sm1->dXdZ-cm1->dXdZ,2)+pow(sm1->dYdZ-cm1->dYdZ,2)) <
50  sqrt(pow(sm2->dXdZ-cm2->dXdZ,2)+pow(sm2->dYdZ-cm2->dYdZ,2));
51  }
52 
53  return false; // is this appropriate? fix this
54  }
55 
56  unsigned int flag_;
57 };
58 
59 #endif
static const unsigned int BestInStationByDRSlope
static const unsigned int BelongsToTrackByDXSlope
static const unsigned int BestInStationByDR
SortMuonSegmentMatches(unsigned int flag)
constructor takes arbitration type
T sqrt(T t)
Definition: SSEVec.h:18
static const unsigned int BestInChamberByDX
static const unsigned int BestInChamberByDR
double p2[4]
Definition: TauolaWrapper.h:90
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
double p1[4]
Definition: TauolaWrapper.h:89
functor predicate for standard library sort algorithm
static const unsigned int BestInStationByDX
static const unsigned int BestInChamberByDRSlope
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
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40