Author: [log in to unmask]
Date: Sun Jan 3 10:49:02 2016
New Revision: 4076
Log: (empty)
Added:
java/trunk/users/src/main/java/org/hps/users/spaul/feecc/RemoveDuplicateParticles.java
Added: java/trunk/users/src/main/java/org/hps/users/spaul/feecc/RemoveDuplicateParticles.java
=============================================================================
--- java/trunk/users/src/main/java/org/hps/users/spaul/feecc/RemoveDuplicateParticles.java (added)
+++ java/trunk/users/src/main/java/org/hps/users/spaul/feecc/RemoveDuplicateParticles.java Sun Jan 3 10:49:02 2016
@@ -0,0 +1,67 @@
+package org.hps.users.spaul.feecc;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.hps.recon.tracking.TrackType;
+import org.lcsim.event.ReconstructedParticle;
+
+public class RemoveDuplicateParticles {
+ public static List<ReconstructedParticle> removeDuplicateParticles(List<ReconstructedParticle> input){
+ //System.out.println("\n" + input.size());
+ List<ReconstructedParticle> output = new ArrayList();
+ for(ReconstructedParticle p : input){
+ boolean add = true;
+ boolean replace = false;
+ ReconstructedParticle duplicate = null;
+ /*if(p.getTracks().size() == 0){
+ //System.out.println("no track");
+ continue;
+ }
+ if(!TrackType.isGBL(p.getTracks().get(0).getType())){
+ //System.out.println("non gbl track");
+ continue;
+ }*/
+ inner : for(ReconstructedParticle p2 : output){
+ if(p.getEnergy() == p2.getEnergy()){
+
+ if(betterThan(p, p2)){
+ duplicate = p2;
+ replace = true;
+ }
+ else{
+ add = false; //keep the one that is already there
+ }
+ break inner;
+ }
+ }
+ if(replace){
+ output.remove(duplicate);
+ //System.out.println("replaced");
+ output.add(p);
+ }else if(add){
+ output.add(p);
+ //System.out.println("added");
+ }else{
+ //System.out.println("retained");
+ }
+ }
+ //System.out.println(output.size());
+ return output;
+ }
+
+ private static boolean betterThan(ReconstructedParticle p,
+ ReconstructedParticle p2) {
+ if(p.getTracks().size() == 0)
+ return false;
+ if(p.getTracks().size() == 1 && p.getTracks().size() == 0)
+ return true;
+ if(TrackType.isGBL(p.getTracks().get(0).getType()) && !TrackType.isGBL(p.getTracks().get(0).getType()))
+ return true;
+
+ if(p.getTracks().get(0).getChi2() < p2.getTracks().get(0).getChi2()){
+ return true;
+ }
+ return false;
+ }
+}
|