CMS 3D CMS Logo

SortMuonSegmentMatches Struct Reference

functor predicate for standard library sort algorithm More...

#include <RecoMuon/MuonIdentification/interface/MuonArbitrationMethods.h>

List of all members.

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_


Detailed Description

functor predicate for standard library sort algorithm

Definition at line 9 of file MuonArbitrationMethods.h.


Constructor & Destructor Documentation

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    }


Member Function Documentation

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    }


Member Data Documentation

unsigned int SortMuonSegmentMatches::flag_

Definition at line 53 of file MuonArbitrationMethods.h.

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


The documentation for this struct was generated from the following file:
Generated on Tue Jun 9 18:32:40 2009 for CMSSW by  doxygen 1.5.4