lcsim/src/org/lcsim/recon/cluster/fixedcone
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
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();