64 float maxFracShared = 0;
69 const HitPattern& gsfHitPattern = gsfTrackRef->hitPattern();
72 TrackCollection::const_iterator ctfTkIter ;
73 for ( ctfTkIter = ctfTrackCollection->begin() , counter = 0 ;
74 ctfTkIter != ctfTrackCollection->end() ; ctfTkIter++, counter++ )
77 double dEta = gsfTrackRef->eta() - ctfTkIter->eta();
78 double dPhi = gsfTrackRef->phi() - ctfTkIter->phi();
79 double pi = acos(-1.);
83 if(
sqrt(dEta*dEta + dPhi*dPhi) > 0.3)
continue;
85 unsigned int shared = 0 ;
86 int gsfHitCounter = 0 ;
87 int numGsfInnerHits = 0 ;
88 int numCtfInnerHits = 0 ;
90 const HitPattern& ctfHitPattern = ctfTkIter->hitPattern() ;
93 for ( elHitsIt = gsfTrackRef->recHitsBegin() ;
94 elHitsIt != gsfTrackRef->recHitsEnd() ;
95 elHitsIt++, gsfHitCounter++ )
97 if(!((**elHitsIt).isValid()))
101 uint32_t gsfHit = gsfHitPattern.
getHitPattern(gsfHitCounter) ;
109 int ctfHitsCounter = 0 ;
110 numCtfInnerHits = 0 ;
112 for ( ctfHitsIt = ctfTkIter->recHitsBegin() ;
113 ctfHitsIt != ctfTkIter->recHitsEnd() ;
114 ctfHitsIt++, ctfHitsCounter++ )
116 if(!((**ctfHitsIt).isValid()))
119 uint32_t ctfHit = ctfHitPattern.
getHitPattern(ctfHitsCounter);
137 if ((numGsfInnerHits==0)||(numCtfInnerHits==0))
140 if ( static_cast<float>(shared)/
std::min(numGsfInnerHits,numCtfInnerHits) > maxFracShared )
142 maxFracShared =
static_cast<float>(shared)/
std::min(numGsfInnerHits, numCtfInnerHits);
148 return make_pair(ctfTrackRef,maxFracShared) ;
std::vector< Track > TrackCollection
collection of Tracks
bool stripTIBHitFilter(uint32_t pattern) const
edm::Handle< reco::TrackCollection > ctfTracksH_
double dPhi(double phi1, double phi2)
bool pixelHitFilter(uint32_t pattern) const
edm::Ref< TrackCollection > TrackRef
persistent reference to a Track
T const * product() const
uint32_t getHitPattern(int position) const
bool stripTIDHitFilter(uint32_t pattern) const