CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Public Attributes
EgAmbiguityTools::isInnerMost Struct Reference

#include <EgAmbiguityTools.h>

Public Member Functions

 isInnerMost (edm::ESHandle< TrackerGeometry > &geom)
 
bool operator() (const reco::GsfElectron *, const reco::GsfElectron *)
 

Public Attributes

edm::ESHandle< TrackerGeometrytrackerHandle_
 

Detailed Description

Definition at line 55 of file EgAmbiguityTools.h.

Constructor & Destructor Documentation

EgAmbiguityTools::isInnerMost::isInnerMost ( edm::ESHandle< TrackerGeometry > &  geom)
inline

Definition at line 58 of file EgAmbiguityTools.h.

58 : trackerHandle_(geom) {}
edm::ESHandle< TrackerGeometry > trackerHandle_

Member Function Documentation

bool EgAmbiguityTools::isInnerMost::operator() ( const reco::GsfElectron e1,
const reco::GsfElectron e2 
)

Definition at line 72 of file EgAmbiguityTools.cc.

References reco::HitPattern::getHitPattern(), reco::HitPattern::getLayer(), reco::HitPattern::getSubStructure(), and EgAmbiguityTools::isBetter().

73  {
74  reco::HitPattern gsfHitPattern1 = e1->gsfTrack()->hitPattern() ;
75  reco::HitPattern gsfHitPattern2 = e2->gsfTrack()->hitPattern() ;
76 
77  // retreive first valid hit
78  int gsfHitCounter1 = 0 ;
79  trackingRecHit_iterator elHitsIt1 ;
80  for
81  ( elHitsIt1 = e1->gsfTrack()->recHitsBegin() ;
82  elHitsIt1 != e1->gsfTrack()->recHitsEnd() ;
83  elHitsIt1++, gsfHitCounter1++ )
84  { if (((**elHitsIt1).isValid())) break ; }
85 
86  int gsfHitCounter2 = 0 ;
87  trackingRecHit_iterator elHitsIt2 ;
88  for
89  ( elHitsIt2 = e2->gsfTrack()->recHitsBegin() ;
90  elHitsIt2 != e2->gsfTrack()->recHitsEnd() ;
91  elHitsIt2++, gsfHitCounter2++ )
92  { if (((**elHitsIt2).isValid())) break ; }
93 
94  uint32_t gsfHit1 = gsfHitPattern1.getHitPattern(gsfHitCounter1) ;
95  uint32_t gsfHit2 = gsfHitPattern2.getHitPattern(gsfHitCounter2) ;
96  if (gsfHitPattern1.getSubStructure(gsfHit1)!=gsfHitPattern2.getSubStructure(gsfHit2))
97  { return (gsfHitPattern1.getSubStructure(gsfHit1)<gsfHitPattern2.getSubStructure(gsfHit2)) ; }
98  else if (gsfHitPattern1.getLayer(gsfHit1)!=gsfHitPattern2.getLayer(gsfHit2))
99  { return (gsfHitPattern1.getLayer(gsfHit1)<gsfHitPattern2.getLayer(gsfHit2)) ; }
100  else
101  { return isBetter(e1,e2) ; }
102  }
uint32_t getSubStructure(uint32_t pattern) const
Definition: HitPattern.cc:133
bool isBetter(const reco::GsfElectron *, const reco::GsfElectron *)
uint32_t getLayer(uint32_t pattern) const
Definition: HitPattern.cc:219
GsfTrackRef gsfTrack() const
reference to a GsfTrack
Definition: GsfElectron.h:169
uint32_t getHitPattern(int position) const
Definition: HitPattern.cc:86

Member Data Documentation

edm::ESHandle<TrackerGeometry> EgAmbiguityTools::isInnerMost::trackerHandle_

Definition at line 57 of file EgAmbiguityTools.h.