70 float maxFracShared = 0;
75 const HitPattern& gsfHitPattern = gsfTrackRef->hitPattern();
77 unsigned int counter ;
78 TrackCollection::const_iterator ctfTkIter ;
79 for ( ctfTkIter = ctfTrackCollection->begin() , counter = 0 ;
80 ctfTkIter != ctfTrackCollection->end() ; ctfTkIter++, counter++ )
83 double dEta = gsfTrackRef->eta() - ctfTkIter->eta();
84 double dPhi = gsfTrackRef->phi() - ctfTkIter->phi();
85 double pi = acos(-1.);
89 if(
sqrt(dEta*dEta + dPhi*dPhi) > 0.3)
continue;
91 unsigned int shared = 0 ;
92 int gsfHitCounter = 0 ;
93 int numGsfInnerHits = 0 ;
94 int numCtfInnerHits = 0 ;
96 const HitPattern& ctfHitPattern = ctfTkIter->hitPattern() ;
99 for ( elHitsIt = gsfTrackRef->recHitsBegin() ;
100 elHitsIt != gsfTrackRef->recHitsEnd() ;
101 elHitsIt++, gsfHitCounter++ )
103 if(!((**elHitsIt).isValid()))
107 uint32_t gsfHit = gsfHitPattern.
getHitPattern(gsfHitCounter) ;
115 int ctfHitsCounter = 0 ;
116 numCtfInnerHits = 0 ;
118 for ( ctfHitsIt = ctfTkIter->recHitsBegin() ;
119 ctfHitsIt != ctfTkIter->recHitsEnd() ;
120 ctfHitsIt++, ctfHitsCounter++ )
122 if(!((**ctfHitsIt).isValid()))
125 uint32_t ctfHit = ctfHitPattern.
getHitPattern(ctfHitsCounter);
143 if ((numGsfInnerHits==0)||(numCtfInnerHits==0))
146 if ( static_cast<float>(shared)/
std::min(numGsfInnerHits,numCtfInnerHits) > maxFracShared )
148 maxFracShared =
static_cast<float>(shared)/
std::min(numGsfInnerHits, numCtfInnerHits);
154 return make_pair(ctfTrackRef,maxFracShared) ;
std::vector< Track > TrackCollection
collection of Tracks
static bool stripTIDHitFilter(uint32_t pattern)
edm::Handle< reco::TrackCollection > ctfTracksH_
double dPhi(double phi1, double phi2)
static bool pixelHitFilter(uint32_t pattern)
edm::Ref< TrackCollection > TrackRef
persistent reference to a Track
T const * product() const
uint32_t getHitPattern(int position) const
static bool stripTIBHitFilter(uint32_t pattern)