#include <RecoPixelVertexing/PixelTrackFitting/interface/PixelTrackCleanerBySharedHits.h>
Public Types | |
typedef pixeltrackfitting::TracksWithRecHits | TracksWithRecHits |
Public Member Functions | |
virtual TracksWithRecHits | cleanTracks (const TracksWithRecHits &tracksWithRecHits) |
PixelTrackCleanerBySharedHits (const edm::ParameterSet &cfg) | |
virtual | ~PixelTrackCleanerBySharedHits () |
Private Member Functions | |
void | cleanTrack () |
bool | recHitsAreEqual (const TrackingRecHit *recHit1, const TrackingRecHit *recHit2) |
Private Attributes | |
int | iTrack1 |
int | iTrack2 |
reco::Track * | track1 |
reco::Track * | track2 |
std::vector< bool > | trackOk |
Definition at line 15 of file PixelTrackCleanerBySharedHits.h.
Reimplemented from PixelTrackCleaner.
Definition at line 22 of file PixelTrackCleanerBySharedHits.h.
PixelTrackCleanerBySharedHits::PixelTrackCleanerBySharedHits | ( | const edm::ParameterSet & | cfg | ) |
PixelTrackCleanerBySharedHits::~PixelTrackCleanerBySharedHits | ( | ) | [virtual] |
void PixelTrackCleanerBySharedHits::cleanTrack | ( | ) | [private] |
TracksWithRecHits PixelTrackCleanerBySharedHits::cleanTracks | ( | const TracksWithRecHits & | tracksWithRecHits | ) | [virtual] |
Implements PixelTrackCleaner.
Definition at line 19 of file PixelTrackCleanerBySharedHits.cc.
References cleanTrack(), i, int, iTrack1, iTrack2, LogDebug, recHitsAreEqual(), size, track1, track2, and trackOk.
00020 { 00021 typedef std::vector<const TrackingRecHit *> RecHits; 00022 trackOk.clear(); 00023 00024 LogDebug("PixelTrackCleanerBySharedHits") << "Cleanering tracks" << "\n"; 00025 int size = trackHitPairs.size(); 00026 for (int i = 0; i < size; i++) trackOk.push_back(true); 00027 00028 for (iTrack1 = 0; iTrack1 < size; iTrack1++) 00029 { 00030 track1 = trackHitPairs.at(iTrack1).first; 00031 RecHits recHits1 = trackHitPairs.at(iTrack1).second; 00032 00033 if (!trackOk.at(iTrack1)) continue; 00034 00035 for (iTrack2 = iTrack1 + 1; iTrack2 < size; iTrack2++) 00036 { 00037 if (!trackOk.at(iTrack1) || !trackOk.at(iTrack2)) continue; 00038 00039 track2 = trackHitPairs.at(iTrack2).first; 00040 RecHits recHits2 = trackHitPairs.at(iTrack2).second; 00041 00042 int commonRecHits = 0; 00043 for (int iRecHit1 = 0; iRecHit1 < (int)recHits1.size(); iRecHit1++) 00044 { 00045 for (int iRecHit2 = 0; iRecHit2 < (int)recHits2.size(); iRecHit2++) 00046 { 00047 if (recHitsAreEqual(recHits1.at(iRecHit1), recHits2.at(iRecHit2))) commonRecHits++; 00048 } 00049 } 00050 if (commonRecHits > 1) cleanTrack(); 00051 } 00052 } 00053 00054 vector<TrackWithRecHits> cleanedTracks; 00055 00056 for (int i = 0; i < size; i++) 00057 { 00058 if (trackOk.at(i)) cleanedTracks.push_back(trackHitPairs.at(i)); 00059 else delete trackHitPairs.at(i).first; 00060 } 00061 return cleanedTracks; 00062 }
bool PixelTrackCleanerBySharedHits::recHitsAreEqual | ( | const TrackingRecHit * | recHit1, | |
const TrackingRecHit * | recHit2 | |||
) | [private] |
Definition at line 72 of file PixelTrackCleanerBySharedHits.cc.
References TrackingRecHit::geographicalId(), TrackingRecHit::localPosition(), PV3DBase< T, PVType, FrameType >::x(), and PV3DBase< T, PVType, FrameType >::y().
Referenced by cleanTracks().
00073 { 00074 if (recHit1->geographicalId() != recHit2->geographicalId()) return false; 00075 LocalPoint pos1 = recHit1->localPosition(); 00076 LocalPoint pos2 = recHit2->localPosition(); 00077 return ((pos1.x() == pos2.x()) && (pos1.y() == pos2.y())); 00078 }
int PixelTrackCleanerBySharedHits::iTrack1 [private] |
Definition at line 32 of file PixelTrackCleanerBySharedHits.h.
Referenced by cleanTrack(), and cleanTracks().
int PixelTrackCleanerBySharedHits::iTrack2 [private] |
Definition at line 32 of file PixelTrackCleanerBySharedHits.h.
Referenced by cleanTrack(), and cleanTracks().
reco::Track* PixelTrackCleanerBySharedHits::track1 [private] |
Definition at line 31 of file PixelTrackCleanerBySharedHits.h.
Referenced by cleanTrack(), and cleanTracks().
reco::Track * PixelTrackCleanerBySharedHits::track2 [private] |
Definition at line 31 of file PixelTrackCleanerBySharedHits.h.
Referenced by cleanTrack(), and cleanTracks().
std::vector<bool> PixelTrackCleanerBySharedHits::trackOk [private] |
Definition at line 30 of file PixelTrackCleanerBySharedHits.h.
Referenced by cleanTrack(), and cleanTracks().