CMS 3D CMS Logo

PixelTrackCleanerBySharedHits Class Reference

#include <RecoPixelVertexing/PixelTrackFitting/interface/PixelTrackCleanerBySharedHits.h>

Inheritance diagram for PixelTrackCleanerBySharedHits:

PixelTrackCleaner

List of all members.

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::Tracktrack1
reco::Tracktrack2
std::vector< booltrackOk


Detailed Description

Definition at line 15 of file PixelTrackCleanerBySharedHits.h.


Member Typedef Documentation

typedef pixeltrackfitting::TracksWithRecHits PixelTrackCleanerBySharedHits::TracksWithRecHits

Reimplemented from PixelTrackCleaner.

Definition at line 22 of file PixelTrackCleanerBySharedHits.h.


Constructor & Destructor Documentation

PixelTrackCleanerBySharedHits::PixelTrackCleanerBySharedHits ( const edm::ParameterSet cfg  ) 

Definition at line 13 of file PixelTrackCleanerBySharedHits.cc.

00014 {}

PixelTrackCleanerBySharedHits::~PixelTrackCleanerBySharedHits (  )  [virtual]

Definition at line 16 of file PixelTrackCleanerBySharedHits.cc.

00017 {}


Member Function Documentation

void PixelTrackCleanerBySharedHits::cleanTrack (  )  [private]

Definition at line 65 of file PixelTrackCleanerBySharedHits.cc.

References iTrack1, iTrack2, reco::TrackBase::pt(), track1, track2, and trackOk.

Referenced by cleanTracks().

00066 {
00067   if (track1->pt() > track2->pt()) trackOk.at(iTrack2) = false;
00068   else trackOk.at(iTrack1) = false;
00069 }

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 }


Member Data Documentation

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().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:30:06 2009 for CMSSW by  doxygen 1.5.4