Author: [log in to unmask] Date: Thu Sep 1 05:12:00 2016 New Revision: 4480 Log: (empty) Added: java/trunk/users/src/main/java/org/hps/users/spaul/moller/Cleanup.java Added: java/trunk/users/src/main/java/org/hps/users/spaul/moller/Cleanup.java ============================================================================= --- java/trunk/users/src/main/java/org/hps/users/spaul/moller/Cleanup.java (added) +++ java/trunk/users/src/main/java/org/hps/users/spaul/moller/Cleanup.java Thu Sep 1 05:12:00 2016 @@ -0,0 +1,59 @@ +package org.hps.users.spaul.moller; + +import hep.physics.vec.Hep3Vector; + +import java.util.ArrayList; +import java.util.List; + +import org.hps.recon.tracking.TrackType; +import org.hps.recon.tracking.TrackUtils; +import org.lcsim.event.ReconstructedParticle; +import org.lcsim.event.Vertex; + +public class Cleanup { + + public static void purgeDuplicates(List<Vertex> vertices) { + ArrayList<Vertex> trashcan = new ArrayList(); + outer : for(Vertex p1 : vertices){ + if(trashcan.contains(p1)) + continue; + for(Vertex p2 : vertices){ + if(p1 == p2) continue; + if(trashcan.contains(p2)) + continue; + + + if(p1.getAssociatedParticle().getEnergy() == p2.getAssociatedParticle().getEnergy()){ //tracks matched to same cluster + Vertex loser = getWorseParticle(p1, p2); + trashcan.add(loser); + } + if(trashcan.contains(p1)) + continue outer; + + } + + } + vertices.removeAll(trashcan); + } + + static Vertex getWorseParticle(Vertex v1, Vertex v2){ + + ReconstructedParticle p1 = v1.getAssociatedParticle(); + ReconstructedParticle p2 = v2.getAssociatedParticle(); + if(TrackType.isGBL(p1.getType()) && !TrackType.isGBL(p2.getType())) + return v2; + if(TrackType.isGBL(p2.getType())&& !TrackType.isGBL(p1.getType())) + return v1; + + if(v1.getChi2() < v2.getChi2()) + return v2; + return v1; + } + + + + + + + +}