![]() |
![]() |
#include <RecoMuon/MuonIdentification/interface/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 | |
SortMuonSegmentMatches (unsigned int flag) | |
constructor takes arbitration type | |
Public Attributes | |
unsigned int | flag_ |
Definition at line 9 of file MuonArbitrationMethods.h.
SortMuonSegmentMatches::SortMuonSegmentMatches | ( | unsigned int | flag | ) | [inline] |
constructor takes arbitration type
Definition at line 11 of file MuonArbitrationMethods.h.
References flag_.
00011 { 00012 flag_ = flag; 00013 }
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 15 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::MuonSegmentMatch::dXdZ, reco::MuonChamberMatch::dXdZ, reco::MuonSegmentMatch::dYdZ, reco::MuonChamberMatch::dYdZ, flag_, reco::MuonSegmentMatch::hasZed(), funct::pow(), sm2, funct::sqrt(), reco::MuonSegmentMatch::x, reco::MuonChamberMatch::x, reco::MuonSegmentMatch::y, and reco::MuonChamberMatch::y.
00017 { 00018 reco::MuonChamberMatch* cm1 = p1.first; 00019 reco::MuonSegmentMatch* sm1 = p1.second; 00020 reco::MuonChamberMatch* cm2 = p2.first; 00021 reco::MuonSegmentMatch* sm2 = p2.second; 00022 00023 if(flag_ == reco::MuonSegmentMatch::BestInChamberByDX || 00024 flag_ == reco::MuonSegmentMatch::BestInStationByDX || 00025 flag_ == reco::MuonSegmentMatch::BelongsToTrackByDX) 00026 return fabs(sm1->x-cm1->x) < fabs(sm2->x-cm2->x); 00027 if(flag_ == reco::MuonSegmentMatch::BestInChamberByDR || 00028 flag_ == reco::MuonSegmentMatch::BestInStationByDR || 00029 flag_ == reco::MuonSegmentMatch::BelongsToTrackByDR) 00030 { 00031 if((! sm1->hasZed()) || (! sm2->hasZed())) // no y information so return dx 00032 return fabs(sm1->x-cm1->x) < fabs(sm2->x-cm2->x); 00033 return sqrt(pow(sm1->x-cm1->x,2)+pow(sm1->y-cm1->y,2)) < 00034 sqrt(pow(sm2->x-cm2->x,2)+pow(sm2->y-cm2->y,2)); 00035 } 00036 if(flag_ == reco::MuonSegmentMatch::BestInChamberByDXSlope || 00037 flag_ == reco::MuonSegmentMatch::BestInStationByDXSlope || 00038 flag_ == reco::MuonSegmentMatch::BelongsToTrackByDXSlope) 00039 return fabs(sm1->dXdZ-cm1->dXdZ) < fabs(sm2->dXdZ-cm2->dXdZ); 00040 if(flag_ == reco::MuonSegmentMatch::BestInChamberByDRSlope || 00041 flag_ == reco::MuonSegmentMatch::BestInStationByDRSlope || 00042 flag_ == reco::MuonSegmentMatch::BelongsToTrackByDRSlope) 00043 { 00044 if((! sm1->hasZed()) || (! sm2->hasZed())) // no y information so return dx 00045 return fabs(sm1->dXdZ-cm1->dXdZ) < fabs(sm2->dXdZ-cm2->dXdZ); 00046 return sqrt(pow(sm1->dXdZ-cm1->dXdZ,2)+pow(sm1->dYdZ-cm1->dYdZ,2)) < 00047 sqrt(pow(sm2->dXdZ-cm2->dXdZ,2)+pow(sm2->dYdZ-cm2->dYdZ,2)); 00048 } 00049 00050 return false; // is this appropriate? fix this 00051 }
unsigned int SortMuonSegmentMatches::flag_ |
Definition at line 53 of file MuonArbitrationMethods.h.
Referenced by operator()(), and SortMuonSegmentMatches().