lcsim/src/org/lcsim/recon/tracking/seedtracker
diff -u -r1.2 -r1.3
--- MergeSeedLists.java 9 Oct 2008 17:47:30 -0000 1.2
+++ MergeSeedLists.java 26 Oct 2008 18:44:46 -0000 1.3
@@ -7,22 +7,19 @@
package org.lcsim.recon.tracking.seedtracker;
-import hep.physics.vec.Hep3Vector;
-
import java.util.List;
import java.util.ListIterator;
import org.lcsim.fit.helicaltrack.HelicalTrackHit;
import org.lcsim.recon.tracking.seedtracker.diagnostic.ISeedTrackerDiagnostics;
-import org.lcsim.util.aida.AIDA;
/**
*
- * @author partridge
- * @version __VERSION__
+ * @author Richard Partridge
+ * @version 1.0
*/
public class MergeSeedLists {
-
+
private ISeedTrackerDiagnostics diag = null;
/** Creates a new instance of MergeSeedLists */
@@ -30,35 +27,35 @@
}
public void setDiagnostic(ISeedTrackerDiagnostics diagnostic){
- diag = diagnostic;
+ diag = diagnostic;
}
public void Merge(List<SeedCandidate> seedlist, List<SeedCandidate> newseedlist, SeedStrategy strategy) {
- // System.out.println(" Extended seeds before merging"+newseedlist.size());
if(diag!=null) diag.fireMergeStartDiagnostics(newseedlist);
for (SeedCandidate newseed : newseedlist ) {
ListIterator<SeedCandidate> itr = seedlist.listIterator();
- boolean duplicate = false;
+ boolean best = true;
+ int ndup = 0;
while (itr.hasNext()) {
SeedCandidate seed = itr.next();
boolean dupe = isDuplicate(newseed, seed);
if(diag!=null) diag.fireMergeIsDuplicateDiagnostics(newseed, seed, dupe);
if (dupe) {
- duplicate = true;
+ ndup++;
boolean better = isBetter(newseed,seed,strategy);
if(diag!=null) diag.fireMergeIsBetterDiagnostics(newseed, seed, better);
if (better) {
- itr.set(newseed);
+ itr.remove();
+ } else {
+ best = false;
}
- break;
}
}
- if (!duplicate) seedlist.add(newseed);
- }
+ if (best) seedlist.add(newseed);
+ }
return;
}
-
private boolean isDuplicate(SeedCandidate seed1, SeedCandidate seed2) {
int nduplicate = 0;
for (HelicalTrackHit hit1 : seed1.getHits()) {
@@ -81,6 +78,4 @@
if (hitdif == -1) return chisqdif < -strategy.getBadHitChisq();
return false;
}
-
-}
-
\ No newline at end of file
+}
\ No newline at end of file