#include <RecoMuon/TrackerSeedGenerator/interface/RedundantSeedCleaner.h>
Public Member Functions | |
virtual void | add (const Trajectory *traj)=0 |
Informs the cleaner that a new trajectory has been made, in case the cleaner keeps a local collection of those tracks (i.e. | |
void | clean (const std::vector< TrajectorySeed > &, std::vector< TrajectorySeed > &) |
clean | |
void | define (std::vector< TrajectorySeed > &) |
collection definition | |
virtual void | done ()=0 |
Tells the cleaner that the seeds are finished, and so it can clear any cache it has. | |
virtual bool | good (const TrajectorySeed *seed)=0 |
Returns true if the seed is not overlapping with another trajectory. | |
virtual void | init (const std::vector< Trajectory > *vect)=0 |
Provides the cleaner a pointer to the vector where trajectories are stored, in case it does not want to keep a local collection of trajectories. | |
RedundantSeedCleaner () | |
constructor | |
virtual | ~RedundantSeedCleaner () |
~RedundantSeedCleaner () | |
destructor | |
Private Attributes | |
std::vector< TrajectorySeed > | seedTriplets |
std::string | theCategory |
Definition at line 23 of file RedundantSeedCleaner.h.
RedundantSeedCleaner::RedundantSeedCleaner | ( | ) | [inline] |
RedundantSeedCleaner::~RedundantSeedCleaner | ( | ) | [inline] |
virtual RedundantSeedCleaner::~RedundantSeedCleaner | ( | ) | [inline, virtual] |
virtual void RedundantSeedCleaner::add | ( | const Trajectory * | traj | ) | [pure virtual] |
Informs the cleaner that a new trajectory has been made, in case the cleaner keeps a local collection of those tracks (i.e.
in a map)
Implemented in CachingSeedCleanerByHitPosition, CachingSeedCleanerBySharedInput, SeedCleanerByHitPosition, and SeedCleanerBySharedInput.
Referenced by cms::CkfTrackCandidateMakerBase::produceBase(), OutInConversionTrackFinder::tracks(), and InOutConversionTrackFinder::tracks().
void RedundantSeedCleaner::clean | ( | const std::vector< TrajectorySeed > & | seedTr, | |
std::vector< TrajectorySeed > & | seed | |||
) |
clean
Definition at line 48 of file RedundantSeedCleaner.cc.
References TrackingRecHit::all, h1, h2, LogDebug, r1, r2, HLT_VtxMuL3::result, s1, s2, and theCategory.
Referenced by define().
00049 { 00050 00051 // loop over triplets 00052 std::vector<TrajectorySeed> result; 00053 00054 std::vector<bool> maskPairs = std::vector<bool>(seed.size(),true); 00055 int iPair = 0; 00056 00057 for(TrajectorySeedCollection::iterator s1 =seed.begin(); s1 != seed.end(); ++s1){ 00058 //rechits from seed 00059 00060 TrajectorySeed::range r1 = s1->recHits(); 00061 00062 for(TrajectorySeedCollection::const_iterator s2 = seedTr.begin(); s2 != seedTr.end(); ++s2){ 00063 //empty 00064 if(s2->nHits()==0) continue ; 00065 00066 TrajectorySeed::range r2 = s2->recHits(); 00067 TrajectorySeed::const_iterator h2 = r2.first; 00068 00069 //number of shared hits; 00070 int shared = 0; 00071 00072 for(;h2 < r2.second;h2++){ 00073 for(TrajectorySeed::const_iterator h1 = r1.first; h1 < r1.second;h1++){ 00074 if(h2->sharesInput(&(*h1),TrackingRecHit::all)) shared++; 00075 if(s1->nHits()!=3) LogDebug(theCategory)<< shared<< " shared hits counter if 2 erease the seed."; 00076 } 00077 } 00078 00079 if(shared ==2 && s1->nHits()!=3) { 00080 maskPairs[iPair] = false; 00081 } 00082 00083 }//end triplets loop 00084 ++iPair; 00085 }// end pairs loop 00086 00087 iPair = 0; 00088 //remove pairs in triplets 00089 for(TrajectorySeedCollection::iterator s1 = seed.begin(); s1 != seed.end(); ++s1){ 00090 if (maskPairs[iPair]) result.push_back(*s1); 00091 ++iPair; 00092 } 00093 00094 // cleaned collection 00095 seed.swap(result); 00096 }
void RedundantSeedCleaner::define | ( | std::vector< TrajectorySeed > & | coll | ) |
collection definition
Definition at line 28 of file RedundantSeedCleaner.cc.
References clean().
Referenced by TrackerSeedCleaner::clean().
00029 { 00030 00031 std::vector<TrajectorySeed> triplets; 00032 00033 //search for triplest 00034 for(TrajectorySeedCollection::iterator itr =coll.begin(); itr != coll.end(); ++itr){ 00035 //fill vector of triplets 00036 if(itr->nHits()==3) triplets.push_back(*itr); 00037 00038 } 00039 00040 // clean from shared input 00041 if (!triplets.empty()) clean(triplets,coll); 00042 }
virtual void RedundantSeedCleaner::done | ( | ) | [pure virtual] |
Tells the cleaner that the seeds are finished, and so it can clear any cache it has.
Implemented in CachingSeedCleanerByHitPosition, CachingSeedCleanerBySharedInput, SeedCleanerByHitPosition, and SeedCleanerBySharedInput.
Referenced by cms::CkfTrackCandidateMakerBase::produceBase(), OutInConversionTrackFinder::tracks(), and InOutConversionTrackFinder::tracks().
virtual bool RedundantSeedCleaner::good | ( | const TrajectorySeed * | seed | ) | [pure virtual] |
Returns true if the seed is not overlapping with another trajectory.
Implemented in CachingSeedCleanerByHitPosition, CachingSeedCleanerBySharedInput, SeedCleanerByHitPosition, and SeedCleanerBySharedInput.
Referenced by cms::CkfTrackCandidateMakerBase::produceBase(), InOutConversionTrackFinder::tracks(), and OutInConversionTrackFinder::tracks().
virtual void RedundantSeedCleaner::init | ( | const std::vector< Trajectory > * | vect | ) | [pure virtual] |
Provides the cleaner a pointer to the vector where trajectories are stored, in case it does not want to keep a local collection of trajectories.
Implemented in CachingSeedCleanerByHitPosition, CachingSeedCleanerBySharedInput, SeedCleanerByHitPosition, and SeedCleanerBySharedInput.
Referenced by cms::CkfTrackCandidateMakerBase::produceBase(), InOutConversionTrackFinder::tracks(), and OutInConversionTrackFinder::tracks().
std::vector<TrajectorySeed> RedundantSeedCleaner::seedTriplets [private] |
Definition at line 39 of file RedundantSeedCleaner.h.
std::string RedundantSeedCleaner::theCategory [private] |