Commit in lcsim/src/org/lcsim/recon/cluster/fixedcone on MAIN
FixedConeClusterDriver.java+4-51.4 -> 1.5
FixedConeClusterer.java+26-111.8 -> 1.9
+30-16
2 modified files
(RC) Update to conform with Clusterer interface and remove passing of decoder - get it from the hits directly

lcsim/src/org/lcsim/recon/cluster/fixedcone
FixedConeClusterDriver.java 1.4 -> 1.5
diff -u -r1.4 -r1.5
--- FixedConeClusterDriver.java	19 Oct 2005 12:22:19 -0000	1.4
+++ FixedConeClusterDriver.java	1 Jul 2006 21:55:43 -0000	1.5
@@ -6,10 +6,11 @@
 import java.util.List;
 import java.util.Map;
 import org.lcsim.event.CalorimeterHit;
+import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.SimCalorimeterHit;
 import org.lcsim.event.util.CalorimeterHitEsort;
-import org.lcsim.geometry.CalorimeterIDDecoder;
+import org.lcsim.geometry.IDDecoder;
 import org.lcsim.recon.cluster.util.*;
 import org.lcsim.util.Driver;
 import org.lcsim.util.fourvec.Lorentz4Vector;
@@ -43,7 +44,7 @@
     private boolean _doall;
     private String _nameExt;
     
-    CalorimeterIDDecoder _decoder;
+    IDDecoder _decoder;
     
     private static final double PI=Math.PI;
     private static final double TWOPI = 2.*PI;
@@ -98,9 +99,7 @@
         }
         if(doit)
         {
-            _decoder = (CalorimeterIDDecoder) event.getMetaData(collection).getIDDecoder();
-//        System.out.println(_decoder);
-            List<BasicCluster> clusters = _clusterer.makeClusters(collection,_decoder);
+            List<Cluster> clusters = _clusterer.createClusters(collection);
 //        System.out.println("found "+clusters.size()+" clusters");
             if (clusters.size() > 0) event.put(name+_nameExt,clusters);
         }

lcsim/src/org/lcsim/recon/cluster/fixedcone
FixedConeClusterer.java 1.8 -> 1.9
diff -u -r1.8 -r1.9
--- FixedConeClusterer.java	18 Oct 2005 18:52:44 -0000	1.8
+++ FixedConeClusterer.java	1 Jul 2006 21:55:43 -0000	1.9
@@ -3,10 +3,13 @@
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
+import java.util.Map;
 import org.lcsim.event.CalorimeterHit;
+import org.lcsim.event.Cluster;
 import org.lcsim.event.util.CalorimeterHitEsort;
-import org.lcsim.geometry.CalorimeterIDDecoder;
+import org.lcsim.geometry.IDDecoder;
 import org.lcsim.recon.cluster.util.BasicCluster;
+import org.lcsim.recon.cluster.util.Clusterer;
 import org.lcsim.recon.cluster.util.ClusterESort;
 import org.lcsim.recon.cluster.util.FixedConeClusterPropertyCalculator;
 import org.lcsim.util.fourvec.Lorentz4Vector;
@@ -25,7 +28,7 @@
  * @version 1.0
  */
 
-public class FixedConeClusterer
+public class FixedConeClusterer implements Clusterer
 {
     private double _radius;
     private double _seedEnergy;
@@ -93,12 +96,21 @@
  */
     
     /**
+     * Make clusters from the input map
+     */
+    public List<Cluster> createClusters(Map<Long,CalorimeterHit> in)
+    {
+        List<CalorimeterHit> list = new ArrayList(in.values());
+        return createClusters(list);
+    }
+    /**
      * Make clusters from the input list
      */
-    public List<BasicCluster> makeClusters(List<CalorimeterHit> in, CalorimeterIDDecoder decoder)
+    public List<Cluster> createClusters(List<CalorimeterHit> in)
     {
-        List<BasicCluster> out = new ArrayList<BasicCluster>();
-        _clusterPropertyCalculator = new FixedConeClusterPropertyCalculator(decoder);
+        IDDecoder decoder;
+        List<Cluster> out = new ArrayList<Cluster>();
+        _clusterPropertyCalculator = new FixedConeClusterPropertyCalculator();
         
         double rsquared = _radius*_radius;
         // sort the vector in descending energy for efficiency
@@ -114,10 +126,11 @@
             if (!used[i])
             {
                 CalorimeterHit p = in.get(i);
-                if (p.getRawEnergy()>_seedEnergy)
+                if (p.getCorrectedEnergy()>_seedEnergy)
                 {
+                    decoder = p.getIDDecoder();
                     decoder.setID(p.getCellID());
-                    double cellE = p.getRawEnergy();
+                    double cellE = p.getCorrectedEnergy();
                     double px = cellE*Math.cos(decoder.getPhi())*Math.sin(decoder.getTheta());
                     double py = cellE*Math.sin(decoder.getPhi())*Math.sin(decoder.getTheta());
                     double pz = cellE*Math.cos(decoder.getTheta());
@@ -171,7 +184,7 @@
                             if(cond)
                             {
                                 //  particle within cone
-                                cellE = p2.getRawEnergy();
+                                cellE = p2.getCorrectedEnergy();
                                 px = cellE*Math.cos(decoder.getPhi())*Math.sin(decoder.getTheta());
                                 py = cellE*Math.sin(decoder.getPhi())*Math.sin(decoder.getTheta());
                                 pz = cellE*Math.cos(decoder.getTheta());
@@ -218,7 +231,7 @@
                     double dTheta = dTheta(out.get(i), out.get(j));
                     if (dTheta<2*_radius)
                     {
-                        resolve(out.get(i), out.get(j), decoder);
+                        resolve((BasicCluster) (out.get(i)),(BasicCluster) (out.get(j)));
                     }
                 }
             }
@@ -237,7 +250,7 @@
      * @return     The angle between the two clusters
      */
     
-    public double dTheta(BasicCluster c1, BasicCluster c2)
+    public double dTheta(Cluster c1, Cluster c2)
     {
         _clusterPropertyCalculator.calculateProperties(c1.getCalorimeterHits());
         Lorentz4Vector v1 = _clusterPropertyCalculator.vector();
@@ -256,7 +269,7 @@
      * @param   c2 Second Cluster
      */
     
-    public void resolve(BasicCluster c1, BasicCluster c2, CalorimeterIDDecoder decoder)
+    public void resolve(BasicCluster c1, BasicCluster c2)
     {
         // do not recalculate cluster axis until all reshuffling is done
         // do not want the cones to shift
@@ -279,6 +292,7 @@
         for(int i=0; i<cells1.size(); ++i)
         {
             CalorimeterHit p2 = (CalorimeterHit) cells1.get(i);
+            IDDecoder decoder = p2.getIDDecoder();
             decoder.setID(p2.getCellID());
             double phi = decoder.getPhi();
             double theta = decoder.getTheta();
@@ -311,6 +325,7 @@
         for(int i=0; i<size2; ++i)
         {
             CalorimeterHit p2 = (CalorimeterHit) cells2.get(i);
+            IDDecoder decoder = p2.getIDDecoder();
             decoder.setID(p2.getCellID());
             double phi = decoder.getPhi();
             double theta = decoder.getTheta();
CVSspam 0.2.8