Go to the documentation of this file.00001 #include "RecoTracker/CkfPattern/interface/SeedCleanerByHitPosition.h"
00002 #include "TrackingTools/TransientTrackingRecHit/interface/RecHitComparatorByPosition.h"
00003
00004 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00005
00006 void SeedCleanerByHitPosition::done() {
00007
00008
00009
00010 trajectories = 0;
00011 }
00012 bool SeedCleanerByHitPosition::good(const TrajectorySeed *seed) {
00013 static RecHitComparatorByPosition comp;
00014 typedef TrajectorySeed::const_iterator SI;
00015 typedef Trajectory::RecHitContainer::const_iterator TI;
00016 TrajectorySeed::range range = seed->recHits();
00017 SI first = range.first, curr = range.first, last = range.second;
00018
00019 for (std::vector<Trajectory>::const_iterator trj = trajectories->begin(),
00020 trjEnd =trajectories->end();
00021 trj != trjEnd; ++trj) {
00022
00023 Trajectory::RecHitContainer hits = trj->recHits();
00024 TI ts = hits.begin(), tc = ts, te = hits.end();
00025 for (curr = first; curr < last; ++curr) {
00026 bool found = false;
00027 for (TI it = tc; it != te; ++it) {
00028
00029 if (comp.equals(&(*curr), &(**it))) {
00030 tc = it; found = true; break;
00031 }
00032 }
00033 if (found == false) {
00034 for (TI it = ts; it != tc; ++it) {
00035
00036 if (comp.equals(&(*curr), &(**it))) {
00037 tc = it; found = true; break;
00038 }
00039 }
00040 if (found == false) break;
00041 }
00042 }
00043 if (curr == last) return false;
00044 }
00045 return true;
00046 }