Print

Print


Commit in lcsim/src/org/lcsim/recon/cluster/density on MAIN
CalculateDistance.java-581.1 removed
Cluster.java-221.3 removed
ClusterBuilder.java-351.4 removed
DTreeAnalysis.java-4491.4 removed
DirectedTreeClusterer.java-3971.4 removed
HitWeightingClusterPropertyCalculator.java-841.1 removed
Kinem.java-181.2 removed
LoadMyCalorimeterHit.java-1101.8 removed
MyTools.java-1171.4 removed
RunControlParameters.java-1911.3 removed
TrackHitMatcher.java-1501.1 removed
TrackHitRelation.java-181.1 removed
TrackMatchingDriver.java-2371.1 removed
-1886
13 removed files
GL: renamed directory density -> directedtree

lcsim/src/org/lcsim/recon/cluster/density
CalculateDistance.java removed after 1.1
diff -N CalculateDistance.java
--- CalculateDistance.java	12 Aug 2005 19:59:49 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,58 +0,0 @@
-package org.lcsim.recon.cluster.density;
-//import java.util.*;
-import Jama.*;
-
-public class CalculateDistance{
-
-    public double CalculateDistance(String distType,double[] a,double[] b){
-
-        double dist = 0.0;
-
-        if(distType=="Euclidean"){
-            double delX = a[0]-b[0];
-            double delY = a[1]-b[1];
-            double delZ = a[2]-b[2];
-            dist = delX*delX+delY*delY+delZ*delZ;
-            if(dist!=0.0) dist = Math.sqrt(dist);
-        }
-
-        if(distType=="Angular"){
-            double theta1 = Kinem.calcTheta(a);
-            double phi1 = Kinem.calcPhi(a);
-            double theta2 = Kinem.calcTheta(b);
-            double phi2 = Kinem.calcPhi(b);
-            double delTheta = Math.abs(theta1-theta2);
-            double delPhi = Math.abs(phi1-phi2);
-            if(delPhi>Math.PI) delPhi = 2.0*Math.PI-delPhi;
-            dist = delTheta*delTheta+delPhi*delPhi;
-            if(dist!=0.0) dist = Math.sqrt(dist);
-        }
-
-        if(distType=="Mahalanobis"){
-            double[][] del = new double[3][1];
-            for(int m=0;m<3;m++){
-                for(int n=0;n<1;n++){
-                    del[m][n] = a[m]-b[m];
-                }
-            }
-            Matrix M1 = new Matrix(del);
-            Matrix M2 = M1.transpose();
-
-            double[][] covar = new double[3][3];
-            for(int m=0;m<3;m++){
-                for(int n=0;n<3;n++){
-                    covar[m][n] += (a[m]-b[m])*(a[n]-b[n]);
-                }
-            }
-            Matrix cov = new Matrix(covar);
-            Matrix covInv = cov.inverse();
-            Matrix temp1 = M2.times(covInv);
-            Matrix temp2 = temp1.times(M1);
-            dist = temp2.trace();
-            if(dist>0.) dist = Math.sqrt(dist);
-        }
-
-        return dist;
-    }
-
-}

lcsim/src/org/lcsim/recon/cluster/density
Cluster.java removed after 1.3
diff -N Cluster.java
--- Cluster.java	29 Sep 2005 19:08:36 -0000	1.3
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,22 +0,0 @@
-package org.lcsim.recon.cluster.density;
-
-import java.util.Vector;
-import org.lcsim.event.CalorimeterHit;
-import org.lcsim.recon.cluster.util.BasicCluster;
-
-public class Cluster extends BasicCluster {
-
-    public Cluster(double ene,double xpos,double ypos,double zpos,
-		   Vector<CalorimeterHit> hitColl)
-    {
-        _ene = ene;
-        _xpos = xpos;
-        _ypos = ypos;
-        _zpos = zpos;
-	for( CalorimeterHit hit : hitColl ) {
-	    addHit( hit );
-	}
-    }
-
-    double _ene,_xpos,_ypos,_zpos;
-}

lcsim/src/org/lcsim/recon/cluster/density
ClusterBuilder.java removed after 1.4
diff -N ClusterBuilder.java
--- ClusterBuilder.java	7 Dec 2005 18:57:11 -0000	1.4
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,35 +0,0 @@
-package org.lcsim.recon.cluster.density;
-import java.util.Vector;
-import java.util.List;
-import java.util.ArrayList;
-import org.lcsim.event.CalorimeterHit;
-import org.lcsim.recon.cluster.util.BasicCluster;
-
-public class ClusterBuilder {
-
-    HitWeightingClusterPropertyCalculator _hitWeightingCPC = new HitWeightingClusterPropertyCalculator();
-
-    public List<BasicCluster> makeClusters(Vector<Vector<CalorimeterHit>> inClusters)
-    {
-        int nclus = inClusters.size();
-	assert nclus > 0 : "ClusterBuilder: no clusters received.";
-
-        List<BasicCluster> outClusters = new ArrayList<BasicCluster>();
-
-	// loop over clusters
-        for( Vector<CalorimeterHit> hits : inClusters ){
-            int cluSize = hits.size();
-	    assert cluSize > 0 : "ClusterBuilder: zero-hits cluster found.";
-
-	    // create cluster
-            BasicCluster clus = new BasicCluster();
-	    for( CalorimeterHit hit : hits ) clus.addHit( hit );
-
-	    // change cluster's hit-weighting scheme
- 	    clus.setPropertyCalculator( _hitWeightingCPC );
-
-            outClusters.add(clus);
-        }
-        return outClusters;
-    }
-}

lcsim/src/org/lcsim/recon/cluster/density
DTreeAnalysis.java removed after 1.4
diff -N DTreeAnalysis.java
--- DTreeAnalysis.java	30 Dec 2005 22:02:58 -0000	1.4
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,449 +0,0 @@
-package org.lcsim.recon.cluster.density;
-
-import java.io.IOException;
-import java.util.*;
-import hep.aida.*;
-import hep.physics.vec.Hep3Vector;
-import hep.physics.vec.BasicHep3Vector;
-
-import org.lcsim.util.aida.AIDA;
-import org.lcsim.util.Driver;
-import org.lcsim.event.EventHeader;
-import org.lcsim.event.SimCalorimeterHit;
-import org.lcsim.event.CalorimeterHit;
-import org.lcsim.event.MCParticle;
-import org.lcsim.geometry.compact.Readout;
-import org.lcsim.digisim.CellSelector;
-import org.lcsim.recon.cluster.util.CalHitMapMgr;
-import org.lcsim.recon.cluster.util.BasicCluster;
-import org.lcsim.recon.cluster.util.SortClustersBySize;
-import org.lcsim.geometry.IDDecoder;
-
-public class DTreeAnalysis extends Driver {
-
-    private int _debug=1;
-
-    public DTreeAnalysis() {
-        _runPar = RunControlParameters.getInstance();
-	_emEcut = _runPar.getEMmip() * _runPar.getEMthresh() / _runPar.getEMweight();
-	_hdEcut = _runPar.getHDmip() * _runPar.getHDthresh() / _runPar.getHDweight();
-
-	// aida stuff
-	AIDA aida = AIDA.defaultInstance();
-        _tree = aida.tree();
-        _tf = aida.analysisFactory().createTupleFactory(_tree);
-        _tree.mkdir("DirectedTree");
-        _tree.cd("DirectedTree");
-        bookDirectedTreeNtuple();
-        _tree.cd("..");
-    }
-
-    public void process(EventHeader event) {
-
-        _evtnum = event.getEventNumber();
-	if(_debug>0) {
-	    System.out.println("Starting DTreeAnalysis, event # "+_evtnum);
-	}
-        _tree.cd("DirectedTree");
-
-	String embName = "EcalBarrHits";
-	String emeName = "EcalEndcapHits";
-	String hdbName = "HcalBarrHits";
-	String hdeName = "HcalEndcapHits";
-	embhitmap = _expert.getCollHitMap(embName, _emEcut);
-	emehitmap = _expert.getCollHitMap(emeName, _emEcut);
-	hdbhitmap = _expert.getCollHitMap(hdbName, _hdEcut);
-	hdehitmap = _expert.getCollHitMap(hdeName, _hdEcut);
-
-	if(_debug>0) {
-	  System.out.println("DTree: #hits: "
-			     +" EMB="+embhitmap.size()
-			     +", EMEC="+emehitmap.size()
-			     +", HDB="+hdbhitmap.size()
-			     +", HDEC="+hdehitmap.size());
-	}
-
-        if(_runPar.ClusterSeparately()){
-            _calType = "EM";
-	    _nClusEM = 0;  _nMCClusEM = 0;
- 	    processCollection(event,embName,embhitmap);
-  	    processCollection(event,emeName,emehitmap);
-
-            _calType = "HD";
-	    _nClusHD = 0; _nMCClusHD = 0;
- 	    processCollection(event,hdbName,hdbhitmap);
-  	    processCollection(event,hdeName,hdehitmap);
-
-	    finalizeTuple();
-        }
-        else {
-	  assert false : "Sorry, single-pass clustering unavailable for now.";
-        }
-
-        _tree.cd("..");
-    }
-
-    public void bookDirectedTreeNtuple(){
-
-	String[] columnNamesEvent = {"evtno"};
-	Class[] columnClassesEvent = {Integer.TYPE};
-	_tupleEvt = _tf.create("EVT","Event Parameters",columnNamesEvent,columnClassesEvent);
-
-        if(_runPar.ClusterSeparately()){
-            String[] columnNamesEM = {"nclusEM","emClusFolder={float ene,float x,float y,float z,int size}",
-                                      "emCellFolder={float cellE,float cellX,float cellY,float cellZ,float cellD,int cellTag,int ily,int iz,int iphi}","evtno"};
-            Class[] columnClassesEM = {Integer.TYPE,ITuple.class,ITuple.class,Integer.TYPE};
-            _tupleEM = _tf.create("EM","Recon Clusters",columnNamesEM,columnClassesEM);
-
-            String[] columnNamesHD = {"nclusHD","hdClusFolder={float ene,float x,float y,float z,int size}",
-                                      "hdCellFolder={float cellE,float cellX,float cellY,float cellZ,float cellD,int cellTag,int ily,int iz,int iphi}","evtno"};
-            Class[] columnClassesHD = {Integer.TYPE,ITuple.class,ITuple.class,Integer.TYPE};
-            _tupleHD = _tf.create("HD","Recon Clusters",columnNamesHD,columnClassesHD);
-
-            String[] columnNamesMCem = {"nclusMCem","emmcClusFolder={float ene,float x,float y,float z,int size,int pid,float chrg,float e,float px,float py,float pz,float vx,float vy,float vz}","emmcCellFolder={float cellE,float cellX,float cellY,float cellZ,float cellD,int cellTagG,int cellTagR,int ily,int iz,int iphi,float r,float phi,float theta,float time}","evtno"};
-            Class[] columnClassesMCem = {Integer.TYPE,ITuple.class,ITuple.class,Integer.TYPE};
-            _tupleMCem = _tf.create("MCEM","Gen Clusters in EM",columnNamesMCem,columnClassesMCem);
-
-            String[] columnNamesMChd = {"nclusMChd","hdmcClusFolder={float ene,float x,float y,float z,int size,int pid,float chrg,float e,float px,float py,float pz,float vx,float vy,float vz}","hdmcCellFolder={float cellE,float cellX,float cellY,float cellZ,float cellD,int cellTagG,int cellTagR,int ily,int iz,int iphi,float r,float phi,float theta,float time}","evtno"};
-            Class[] columnClassesMChd = {Integer.TYPE,ITuple.class,ITuple.class,Integer.TYPE};
-            _tupleMChd = _tf.create("MCHD","Gen Clusters in HD",columnNamesMChd,columnClassesMChd);
-        }
-        else{
-        }
-    }
-
-    public void fillDirectedTreeNtuple(List<BasicCluster> recon,
-				       List<BasicCluster> mctruth,
-				       IDDecoder decoder)
-    {
-        if(_calType=="EM"){
-            emClusFolder = _tupleEM.getTuple(1);
-            emCellFolder = _tupleEM.getTuple(2);
-	    emmcClusFolder = _tupleMCem.getTuple(1);
-	    emmcCellFolder = _tupleMCem.getTuple(2);
-        }
-
-        if(_calType=="HD"){
-            hdClusFolder = _tupleHD.getTuple(1);
-            hdCellFolder = _tupleHD.getTuple(2);
-	    hdmcClusFolder = _tupleMChd.getTuple(1);
-	    hdmcCellFolder = _tupleMChd.getTuple(2);
-        }
-
-	// Fill tuples with reco info
-        int tag = 0;
-	if(_calType=="EM") tag = _nClusEM;
-	if(_calType=="HD") tag = _nClusHD;
-	Map<CalorimeterHit,Integer> recTagMap
-	    = new HashMap<CalorimeterHit,Integer>();
-	for(BasicCluster clust : recon ) {
-            List<CalorimeterHit> cellVec = clust.getCalorimeterHits();
-//  	    System.out.println("reco tag: "+tag+", #hits="+cellVec.size());
-	    if(cellVec.size()==0)
-		System.out.println("*** bad cellVec in "+_calType);
-	    for(CalorimeterHit ihit : cellVec) {
-		Integer tagObject = new Integer(tag);
-//   		System.out.println("putting <"+MyTools.printID(ihit.getCellID())+" -> "+tagObject+">");
-		recTagMap.put(ihit,tagObject);
-                double[] pos = ihit.getPosition();
-		double cdens = _loader.getDensity(ihit);
-		long jid = ihit.getCellID();
-		decoder.setID( ihit.getCellID() );
-		int ily = decoder.getValue(0); // layer
-		int iu = decoder.getValue(3);  // either theta, phi or x
-		int iv = decoder.getValue(4);  // either phi, z or y
-
-// 		int ily1 = MyTools.getLayer(jid);
-// 		int iz = MyTools.getThetaBin(jid);
-// 		int iphi = MyTools.getPhiBin(jid);
-//  		System.out.println("ilay="+ily1+" "+ily+", iu="+iphi+" "+iu+", iv="+iz+" "+iv);
-// 		assert ily==ily1 : "problem in layer index";
-// 		assert iphi==iu : "problem in phi/iU index";
-// 		assert iz==iv : "problem in iz/iV index";
-
-		ITuple cellFolder = null;
-		if(_calType=="EM") cellFolder = emCellFolder;
-		if(_calType=="HD") cellFolder = hdCellFolder;
-		if(cellFolder!=null) {
-                    cellFolder.fill(0,(float) ihit.getRawEnergy());
-                    cellFolder.fill(1,(float)pos[0]);
-                    cellFolder.fill(2,(float)pos[1]);
-                    cellFolder.fill(3,(float)pos[2]);
-		    cellFolder.fill(4,(float)cdens);
-                    cellFolder.fill(5,tag);
-		    cellFolder.fill(6,ily);
-		    cellFolder.fill(7,iu);
-		    cellFolder.fill(8,iv);
-                    cellFolder.addRow();
-                }
-            }
-	    ITuple clusFolder = null;
-            if(_calType=="EM") clusFolder = emClusFolder;
-	    if(_calType=="HD") clusFolder = hdClusFolder;
-	    if(clusFolder!=null) {
-		Hep3Vector pos = new BasicHep3Vector( clust.getPosition() );
-                clusFolder.fill(0,(float) clust.getRawEnergy());
-                clusFolder.fill(1,(float) pos.x());
-                clusFolder.fill(2,(float) pos.y());
-                clusFolder.fill(3,(float) pos.z());
-                clusFolder.fill(4, clust.getSize());
-                clusFolder.addRow();
-            }
-            tag++;
-	}
-	if(_calType=="EM") _nClusEM = tag;
-	if(_calType=="HD") _nClusHD = tag;
-// 	System.out.println("calType="+_calType+", tag="+tag+", nrecoEM="+_nClusEM+", nrecoHD="+_nClusHD);
-
-	// Fill tuples with MC info
-        tag = 0;
-	if(_calType=="EM") tag = _nMCClusEM;
-	if(_calType=="HD") tag = _nMCClusHD;
-	for( BasicCluster clust : mctruth ) {
-	  for( CalorimeterHit ihit : clust.getCalorimeterHits() ) {
-	    Integer tagObject = recTagMap.get(ihit);
-
-  	    int rtag = -1;
-  	    if(tagObject!=null) rtag = tagObject.intValue();
-// 	    int rtag = tagObject.intValue();
-// 	    System.out.println("getting <"+MyTools.printID(ihit.getCellID())+" -> "+rtag+">");
-	    double[] pos = ihit.getPosition();
-	    double cdens = _loader.getDensity(ihit);
-	    if(cdens==0) continue;  // skip hits below energy cut
-	    long jid = ihit.getCellID();
-	    decoder.setID( ihit.getCellID() );
-	    int ily = decoder.getValue(0); // layer
-	    int iu = decoder.getValue(3);  // either theta, phi or x
-	    int iv = decoder.getValue(4);  // either phi, z or y
-
-// 	    int ily1 = MyTools.getLayer(jid);
-// 	    int iz = MyTools.getThetaBin(jid);
-// 	    int iphi = MyTools.getPhiBin(jid);
-//  	    System.out.println("ilay="+ily1+" "+ily+", iu="+iz+" "+iu+", iv="+iphi+" "+iv);
-// 	    assert ily==ily1 : "problem in layer index";
-// 	    assert iphi==iv : "problem in phi/iV index";
-// 	    assert iz==iu : "problem in iz/iU index";
-
-	    double cellR = Math.sqrt(pos[0]*pos[0]+pos[1]*pos[1]);
-	    double theta = Math.atan2(cellR,pos[2]);
-	    double phi = Math.atan2(pos[1],pos[0]);
-	    if(phi<0.) phi += 2.0*Math.PI;
-	    SimCalorimeterHit iihit = (SimCalorimeterHit)ihit;
-	    int npart = iihit.getMCParticleCount();
-	    double timeStamp = 99999.;
-	    for(int j=0;j<npart;j++) {
-		double tmpTime = (double) iihit.getContributedTime(j);
-		if(tmpTime<timeStamp){
-		    timeStamp = tmpTime;
-		}
-	    }
-
-	    ITuple mcCellFolder = null;
-	    if(_calType=="EM") mcCellFolder = emmcCellFolder;
-	    if(_calType=="HD") mcCellFolder = hdmcCellFolder;
-	    if(mcCellFolder!=null) {
-	      mcCellFolder.fill(0,(float) ihit.getRawEnergy());
-	      mcCellFolder.fill(1,(float)pos[0]);
-	      mcCellFolder.fill(2,(float)pos[1]);
-	      mcCellFolder.fill(3,(float)pos[2]);
-	      mcCellFolder.fill(4,(float) cdens);
-//  	      System.out.println("Gtag="+tag+", Rtag="+rtag);
-	      mcCellFolder.fill(5,tag);
-	      mcCellFolder.fill(6,rtag);
-	      mcCellFolder.fill(7,ily);
-	      mcCellFolder.fill(8,iu);
-	      mcCellFolder.fill(9,iv);
-	      mcCellFolder.fill(10,(float) cellR);
-	      mcCellFolder.fill(11,(float) phi);
-	      mcCellFolder.fill(12,(float) theta);
-	      mcCellFolder.fill(13,(float) timeStamp);
-	      mcCellFolder.addRow();
-//  	      System.out.println("EM Clus cells tag="+tag+", rtag="+rtag
-//  				 +", id="+MyTools.printID(jid)
-// // 				 +", pos="+pos[0]+" "+pos[1]+" "+pos[2]
-//  				 +", dens="+cdens);
-	    }
-	  }
-
-	  MCParticle mcpart = getMCParticleInCluster(clust);
-	  if(mcpart!=null) {
-	    float charge = (float)mcpart.getCharge();
-	    int particleID = mcpart.getType().getPDGID();
-	    float mcE = (float)mcpart.getEnergy();
-	    Hep3Vector mcMom = mcpart.getMomentum();
-	    double[] pos = clust.getPosition();
-	    Hep3Vector vert = mcpart.getOrigin();
-
-	    ITuple mcClusFolder = null;
-	    if(_calType=="EM") mcClusFolder = emmcClusFolder;
-	    if(_calType=="HD") mcClusFolder = hdmcClusFolder;
-	    if(mcClusFolder!=null) {
-	      mcClusFolder.fill(0,(float) clust.getRawEnergy());
-	      mcClusFolder.fill(1, (float)pos[0] );
-	      mcClusFolder.fill(2, (float)pos[1] );
-	      mcClusFolder.fill(3, (float)pos[2] );
-	      mcClusFolder.fill(4, clust.getSize() );
-	      mcClusFolder.fill(5, particleID);
-	      mcClusFolder.fill(6, charge);
-	      mcClusFolder.fill(7, mcE);
-	      mcClusFolder.fill(8, (float)mcMom.x());
-	      mcClusFolder.fill(9,(float)mcMom.y());
-	      mcClusFolder.fill(10,(float)mcMom.z());
-	      mcClusFolder.fill(11,(float) vert.x());
-	      mcClusFolder.fill(12,(float) vert.y());
-	      mcClusFolder.fill(13,(float) vert.z());
-	      mcClusFolder.addRow();
-	    }
-	    tag++;
-	  }
-	}
-	if(_calType=="EM") _nMCClusEM = tag;
-	if(_calType=="HD") _nMCClusHD = tag;
-// 	System.out.println("calType="+_calType+", tag="+tag+", nMCEM="+_nMCClusEM+", nMCHD="+_nMCClusHD);
-
-	recTagMap.clear();
-    }
-
-    public void finalizeTuple() {
-	// EM
-	_tupleEM.fill(0,_nClusEM);
-	_tupleEM.fill(3,_evtnum);
-	_tupleEM.addRow();
-	_tupleMCem.fill(0,_nMCClusEM);
-	_tupleMCem.fill(3,_evtnum);
-	_tupleMCem.addRow();
-	// HD
-	_tupleHD.fill(0,_nClusHD);
-	_tupleHD.fill(3,_evtnum);
-	_tupleHD.addRow();
-	_tupleMChd.fill(0,_nMCClusHD);
-	_tupleMChd.fill(3,_evtnum);
-	_tupleMChd.addRow();
-	// event
-	_tupleEvt.fill(0,_evtnum);
-	_tupleEvt.addRow();
-    }
-
-    private void processCollection(EventHeader event, String colName,
-				   Map<Long,CalorimeterHit> hitmap)
-    {
-      if(hitmap.size()==0) return;
-      IDDecoder decoder = _expert.getIDDecoder(colName);
-
-      // get NearestNeighbor clusters
-      List<BasicCluster> nnClusColl = new ArrayList<BasicCluster>();
-      try {
-	nnClusColl = event.get(BasicCluster.class, colName+"NNClusters");
-      }
-      catch(IllegalArgumentException x) {
-	  // ignore
-      }
-
-      // get reco clusters
-      List<BasicCluster> recoClusColl = new ArrayList<BasicCluster>();
-      try {
-	recoClusColl = event.get(BasicCluster.class, colName+"DTreeClusters");
-      }
-      catch(IllegalArgumentException x) {
-	  // ignore
-      }
-
-      // get MC clusters
-      List<BasicCluster> mcClusColl
-	  = event.get(BasicCluster.class, colName+"Clusters");
-
-      Collections.sort( mcClusColl, new SortClustersBySize() );
-      if(_debug>0) {
-	System.out.println("*** DTreeAnalysis: colName="+colName
-			   +", # of MCclusters: "+mcClusColl.size()
-			   +", # of NNclusters: "+nnClusColl.size());
-      }
-
-      // Analyze MC clusters
-      int mchits=0;
-      for( BasicCluster iclus : mcClusColl ) {
-	double pos[] = iclus.getPosition();
-	List<CalorimeterHit> iHits = iclus.getCalorimeterHits();
-	mchits += iHits.size(); // includes hits below threshold
-      }
-      int nclusCheat = mcClusColl==null ? 0 : mcClusColl.size();
-
-      // Analyze NN clusters
-      int nnhits=0;
-      for( BasicCluster iclus : nnClusColl ) {
-	double pos[] = iclus.getPosition();
-	List<CalorimeterHit> iHits = iclus.getCalorimeterHits();
-	nnhits += iHits.size(); // includes hits below threshold
-      }
-      int nNNclus = nnClusColl==null ? 0 : nnClusColl.size();
-
-      // Analyze DirectedTree clusters
-      int dthits=0;
-      for( BasicCluster iclus : recoClusColl ) {
-	double pos[] = iclus.getPosition();
-	List<CalorimeterHit> iHits = iclus.getCalorimeterHits();
-	dthits += iHits.size(); // includes hits below threshold
-      }
-      int nDTclus = recoClusColl==null ? 0 : recoClusColl.size();
-
-      if(_debug>0) {
-	System.out.println(" Comparing #clusters: "
-			   +" MCclus="+nclusCheat
-			   +" NNclus="+nNNclus
-			   +" DTclus="+nDTclus
-			   );
-	System.out.println(" Comparing total #hits: "
-			   +" in event: "+hitmap.size()
-			   +", in MCclus="+mchits
-			   +", in NNclus="+nnhits
-			   +", in DTclus="+dthits );
-      }
-
-      int nhits = hitmap.size();
-      AIDA aida = AIDA.defaultInstance();
-      aida.cloud1D(colName+"-Nhits").fill( nhits );
-      aida.cloud1D(colName+"-NmcHits").fill(mchits);
-      aida.cloud1D(colName+"-diffHitsColl-mc").fill(nhits-mchits);
-      aida.cloud1D(colName+"-numCheatClusters").fill(nclusCheat);
-
-      fillDirectedTreeNtuple( recoClusColl, mcClusColl, decoder );
-    }
-
-    private MCParticle getMCParticleInCluster(BasicCluster clust) {
-	for( CalorimeterHit hit : clust.getCalorimeterHits() ) {
-	    SimCalorimeterHit simhit = (SimCalorimeterHit)hit;
-	    if( simhit!=null && simhit.getMCParticleCount()==1 ) {
-		return simhit.getMCParticle(0);
-	    }
-	}
-	return null;
-    }
-
-    private static Map<String,Readout> _roMap;
-    private static RunControlParameters _runPar;
-    private LoadMyCalorimeterHit _loader = LoadMyCalorimeterHit.getInstance();
-    private CalHitMapMgr _expert = CalHitMapMgr.getInstance();
-    private Map<Long,Long> _ParentMap;
-    private Map<Long,CalorimeterHit> embhitmap,emehitmap,hdbhitmap,hdehitmap;
-    private String _distType,_calType;
-    private int _nLyr;
-    private int _nZ;
-    private int _nPhi;
-    private int _evtnum;
-
-    private ITree _tree;
-    private ITupleFactory _tf;
-    private ITuple _tupleEM;
-    private ITuple _tupleHD;
-    private ITuple _tupleMCem,_tupleMChd;
-    private ITuple _tupleEvt;
-    private ITuple emClusFolder,emCellFolder;
-    private ITuple hdClusFolder,hdCellFolder;
-    private ITuple emmcClusFolder,emmcCellFolder;
-    private ITuple hdmcClusFolder,hdmcCellFolder;
-    private ClusterBuilder clusBuilder = new ClusterBuilder();
-    private int layerIndex, uIndex, vIndex;
-    private double _emEcut, _hdEcut;
-
-    private int _nClusEM,_nMCClusEM,_nClusHD,_nMCClusHD;
-}

lcsim/src/org/lcsim/recon/cluster/density
DirectedTreeClusterer.java removed after 1.4
diff -N DirectedTreeClusterer.java
--- DirectedTreeClusterer.java	30 Dec 2005 22:02:58 -0000	1.4
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,397 +0,0 @@
-package org.lcsim.recon.cluster.density;
-
-import java.io.IOException;
-import java.util.*;
-import hep.aida.*;
-import hep.physics.vec.Hep3Vector;
-import hep.physics.vec.BasicHep3Vector;
-
-import org.lcsim.util.aida.AIDA;
-import org.lcsim.util.Driver;
-import org.lcsim.event.EventHeader;
-import org.lcsim.event.CalorimeterHit;
-import org.lcsim.event.MCParticle;
-import org.lcsim.geometry.compact.Readout;
-import org.lcsim.geometry.segmentation.SegmentationBase;
-import org.lcsim.digisim.CellSelector;
-import org.lcsim.recon.cluster.util.CalHitMapMgr;
-import org.lcsim.recon.cluster.util.BasicCluster;
-import org.lcsim.recon.cluster.util.SortClustersBySize;
-
-public class DirectedTreeClusterer extends Driver {
-
-    private int _debug = 0;
-
-    public DirectedTreeClusterer() {
-        _runPar = RunControlParameters.getInstance();
-	_emEcut = _runPar.getEMmip() * _runPar.getEMthresh() / _runPar.getEMweight();
-	_hdEcut = _runPar.getHDmip() * _runPar.getHDthresh() / _runPar.getHDweight();
-    }
-
-    public void process(EventHeader event) {
-
-        _evtnum = event.getEventNumber();
-	if(_debug>0) {
-	  System.out.println("Start DirectedTreeClusterer, event #"+_evtnum);
-	}
-
-        _roMap = event.getDetector().getReadouts();
-
-	String embName = "EcalBarrHits";
-	String emeName = "EcalEndcapHits";
-	String hdbName = "HcalBarrHits";
-	String hdeName = "HcalEndcapHits";
-	embhitmap = _expert.getCollHitMap(embName, _emEcut);
-	emehitmap = _expert.getCollHitMap(emeName, _emEcut);
-	hdbhitmap = _expert.getCollHitMap(hdbName, _hdEcut);
-	hdehitmap = _expert.getCollHitMap(hdeName, _hdEcut);
-	_loader.setDensities(embName, embhitmap);
-	_loader.setDensities(emeName, emehitmap);
-	_loader.setDensities(hdbName, hdbhitmap);
-	_loader.setDensities(hdeName, hdehitmap);
-
-	if(_debug>0) {
-	    System.out.println("DTree: #hits: EMB="+embhitmap.size()
-			       +", EMEC="+emehitmap.size()
-			       +", HB="+hdbhitmap.size()
-			       +", HEC="+hdehitmap.size());
-	}
-
-        if(_runPar.ClusterSeparately()) {
-            _calType = "EM";
-	    processCollection(event, embName, embhitmap);
-  	    processCollection(event, emeName, emehitmap);
-
-            _calType = "HD";
-	    processCollection(event, hdbName, hdbhitmap);
-  	    processCollection(event, hdeName, hdehitmap);
-        }
-        else {
-	  assert false : "Sorry, single-pass clustering unavailable for now.";
-//             Vector calhit = new Vector();
-//             calhit.addAll(embhit.values());
-//             calhit.addAll(emehit.values());
-//             calhit.addAll(hdbhit.values());
-//             calhit.addAll(hdehit.values());
-
-//             cahitmap = new HashMap();
-//             cahitmap.putAll(embhitmap);
-//             cahitmap.putAll(emehitmap);
-//             cahitmap.putAll(hdbhitmap);
-//             cahitmap.putAll(hdehitmap);
-
-//             Vector[] calTrees = makeTree(calhit,cahitmap);
-
-//             ClusterBuilder clus = new ClusterBuilder();
-//             List caClusters = clus.makeClusters(calTrees,_runPar);
-        }
-
-    }
-
-    public Vector<Vector<CalorimeterHit>>
-	makeTree(Map<Long,CalorimeterHit> cahitmap, SegmentationBase segm) {
-
-	if(_debug>0) {
-	  System.out.println("makeTree: cahitmap size="+cahitmap.size());
-	}
-        _ParentMap = new HashMap<Long,Long>();
-        Vector<CalorimeterHit> RootVec = new Vector<CalorimeterHit>();
-
-        for( CalorimeterHit ihit : cahitmap.values() ) {
-            long cellid = ihit.getCellID();
-            double idens = _loader.getDensity( cellid );
-//	    if(_evtnum==81 && cellid== 1672347904) System.out.println("density="+idens);
-
-	    segm.setID(cellid);
-//  	    System.out.println("makeTree ihit: cellID="+MyTools.printID(cellid)
-//  			       +", layer "+segm.getLayer()
-//  			       +", dens="+idens);
-
-            double maxdensDiff = -999999.;
-	    long maxdensID = -999999;
-            Vector<Long> nVec = new Vector<Long>();
-	    // changed from !=0
-            if(idens>=0.0) {
-	       double[] ipos = ihit.getPosition();
-	       if(_calType=="EM"){
-		 int nLyrOrig = _runPar.getLyrNeighEM();
-		 int nZOrig = _runPar.getZNeighEM();
-		 int nPhiOrig = _runPar.getPhiNeighEM();
-		 int dRegion = emDensityRegion(idens,nLyrOrig,nZOrig,nPhiOrig);
-		 int[] lyrCon = _runPar.getLyrContracEM();
-		 int[] zCon = _runPar.getZContracEM();
-		 int[] phiCon = _runPar.getPhiContracEM();
-//  		 System.out.println("Original Window"+" "+nLyrOrig+" "+nZOrig+" "+nPhiOrig);
-		 if(dRegion==1){
-		     _nLyr = nLyrOrig - lyrCon[0];
-		     _nZ = nZOrig - zCon[0];
-		     _nPhi = nPhiOrig - phiCon[0];
-		 }
-		 if(dRegion==2){
-		     _nLyr = nLyrOrig - lyrCon[1];
-		     _nZ = nZOrig - zCon[1];
-		     _nPhi = nPhiOrig - phiCon[1];
-		 }
-		 if(dRegion==3){
-		     _nLyr = nLyrOrig - lyrCon[2];
-		     _nZ = nZOrig - zCon[2];
-		     _nPhi = nPhiOrig - phiCon[2];
-		 }
-	       }
-	       if(_calType=="HD"){
-		 int nLyrOrig = _runPar.getLyrNeighHD();
-		 int nZOrig = _runPar.getZNeighHD();
-		 int nPhiOrig = _runPar.getPhiNeighHD();
-		 int dRegion = hdDensityRegion(idens,nLyrOrig,nZOrig,nPhiOrig);
-		 int[] lyrCon = _runPar.getLyrContracHD();
-		 int[] zCon = _runPar.getZContracHD();
-		 int[] phiCon = _runPar.getPhiContracHD();
-//  		 System.out.println("Original Window"+" "+nLyrOrig+" "+nZOrig+" "+nPhiOrig);
-		 if(dRegion==0){
-		     _nLyr = nLyrOrig;
-		     _nZ = nZOrig;
-		     _nPhi = nPhiOrig;
-		 }
-		 if(dRegion==1){
-		     _nLyr = nLyrOrig - lyrCon[0];
-		     _nZ = nZOrig - zCon[0];
-		     _nPhi = nPhiOrig - phiCon[0];
-		 }
-		 if(dRegion==2){
-		     _nLyr = nLyrOrig - lyrCon[1];
-		     _nZ = nZOrig - zCon[1];
-		     _nPhi = nPhiOrig - phiCon[1];
-		 }
-		 if(dRegion==3){
-		     _nLyr = nLyrOrig - lyrCon[2];
-		     _nZ = nZOrig - zCon[2];
-		     _nPhi = nPhiOrig - phiCon[2];
-		 }
-	       }
-
-//                int neigh[] = segm.getNeighbors(cellid,_nLyr,_nZ,_nPhi);
-// 		if(_calType=="HD") System.out.println("window in directed tree "+_nLyr+" "+_nZ+" "+_nPhi);
-		segm.setID(cellid);
-//  		System.out.println("Processing ihit: cellID="+MyTools.printID(cellid));
-		long neigh[] = segm.getNeighbourIDs(_nLyr, _nZ, _nPhi);
-
-                for(int j=0; j<neigh.length; j++){
-                    long jid = neigh[j];
-                    CalorimeterHit jhit = cahitmap.get(jid);
-                    if(jhit==null) continue;
-                    double jdens = _loader.getDensity(jhit);
-                    double[] jpos = jhit.getPosition();
-
-                    _distType = _runPar.getDistanceType();
-                    CalculateDistance calcD = new CalculateDistance();
-                    double distance = calcD.CalculateDistance(_distType,ipos,jpos);
-                    double densDiff = (jdens-idens)/distance;
-//???		    if(distance==0) densDiff=0;
-
-                    if(densDiff==0.0) nVec.add(jid);
-//  		    System.out.println(" jhit: layer="+(jid&0x7f)
-//  				       +", cellID="+MyTools.printID(jid)
-// 				       +", idens="+idens
-//  				       +", jdens="+jdens
-//  				       +", dist="+distance
-//  				       +", densDiff="+densDiff);
-
-                    if(densDiff>maxdensDiff){
-                        maxdensDiff = densDiff;
-                        maxdensID = jid;
-                    }
-                    calcD = null;
-                }
-
-		if(maxdensDiff<0.0){
-		    RootVec.add(ihit);
-//  		    System.out.println("Bonafide root");
-		}
-
-                if(maxdensDiff>0.0){
-                  Long key1 = new Long(cellid);
-		  Long key2 = new Long(maxdensID);
-		  _ParentMap.put(key1,key2);
-//  		  System.out.println(" maxdensDiff>0: "
-//  				     +" id="+MyTools.printID(maxdensID)
-//  				     +", parent of "+MyTools.printID(cellid));
-                }
-
-                if(maxdensDiff==0.0){
-                    Vector<Long> removeItems = new Vector<Long>();
-                    for(Long jkey : nVec) {
-                        Vector<Long> temporary = new Vector<Long>();
-                        Long parent = _ParentMap.get(jkey);
-
-                        while(parent!=null){
-                            temporary.add(parent);
-                            Long lkey = parent;
-                            parent = _ParentMap.get(lkey);
-                        }
-                        if(temporary.contains(cellid)){
-                            removeItems.add(jkey);
-                        }
-                    }
-                    nVec.removeAll(removeItems);
-
-                    if(nVec.size()==0){
-                        RootVec.add(ihit);
-                    }
-                    else{
-                        double dmin = 9999.;
-                        long parentKey = 0;
-                        for(Long jkey : nVec) {
-                            CalorimeterHit jhit = cahitmap.get(jkey);
-                            double[] jpos = jhit.getPosition();
-                            CalculateDistance calcD = new CalculateDistance();
-                            double distance = calcD.CalculateDistance(_distType,ipos,jpos);
-                            if(distance<dmin){
-                                dmin = distance;
-                                parentKey = jkey;
-                            }
-                        }
-                        _ParentMap.put(cellid,parentKey);
-//  			System.out.println("Cell is matched to identical density neighbor");
-                    }
-                }
-	    }
-            else{
-                RootVec.add(ihit);
-// 		System.out.println("Zero density root");
-            }
-        }
-
-        Vector<CalorimeterHit> startingPoints = new Vector<CalorimeterHit>();
-        for( CalorimeterHit ihit : cahitmap.values() ) {
-            long cellid = ihit.getCellID();
-            boolean isParent = _ParentMap.containsValue(cellid);
-            boolean isRoot = RootVec.contains(ihit);
-            if(!isParent && !isRoot){
-                startingPoints.add(ihit);
-            }
-        }
-	if(_debug>0) {
-	    System.out.println("# starting points = "+startingPoints.size());
-	}
-
-        Vector<Vector<CalorimeterHit>> branches = new Vector<Vector<CalorimeterHit>>();
-        for(int i=0;i<startingPoints.size();i++) {
-            branches.add( new Vector<CalorimeterHit>() );
-        }
-        for(int i=0;i<startingPoints.size();i++){
-            CalorimeterHit ihit = startingPoints.get(i);
-            branches.get(i).add(ihit);
-            long cellid = ihit.getCellID();
-	    Long key = new Long(cellid);
-            while(_ParentMap.containsKey(cellid)){
-		Long jkey = _ParentMap.get(cellid);
-		CalorimeterHit jhit = cahitmap.get(jkey);
-                branches.get(i).add(jhit);
-                cellid = jkey.longValue();
-            }
-        }
-
-	int nTrivial = 0;
-        int vsiz = RootVec.size();
-	if(_debug>0) System.out.println("no. of roots = "+vsiz);
-        Vector<Vector<CalorimeterHit>> caTrees = new Vector<Vector<CalorimeterHit>>();
-        for(int i=0;i<vsiz;i++){
-            caTrees.add( new Vector<CalorimeterHit>() );
-        }
-
-        for(int i=0;i<vsiz;i++){
-          CalorimeterHit ihit = RootVec.get(i);
-	  long tmpID = ihit.getCellID();
-	  caTrees.get(i).add(ihit);
-	  for(int j=0;j<startingPoints.size();j++) {
-            CalorimeterHit parentHit = branches.get(j).lastElement();
-	    if(parentHit.equals(ihit)) {
-	      for( CalorimeterHit jhit : branches.get(j) ) {
-		if(!caTrees.get(i).contains(jhit)){
-		  caTrees.get(i).add(jhit);
-		  long tmppID = jhit.getCellID();
-// 		  System.out.println("Branches id="+MyTools.printID(tmppID));
-		}
-	      }
-	    }
-	  }
-	  if(_debug>0) {
-	      if(caTrees.get(i).size()>1) {
-		  System.out.println("ROOT id="+MyTools.printID(tmpID)
-				     +", #hits="+caTrees.get(i).size());
-	      }
-	      else 	      ++nTrivial;  // for single-hit clusters
-	  }
-        }
-	if(_debug>0) {
-	  System.out.println("*** plus "+nTrivial+" single-hit clusters.");
-	}
-
-// 	for( Vector<MyCalorimeterHit> rootHits : caTrees ) {
-// 	    System.out.println("ROOT: #hits="+rootHits.size());
-// 	}
-
-        return caTrees;
-    }
-
-    public int emDensityRegion(double dens,int nl,int nz,int np){
-	int region = 0;
-	//	if(nl==6 && nz==3 && np==3){
-	if(dens<6.) region=1;
-	if(dens>=6. && dens<26.) region=2;
-	if(dens>=26.) region=3;
-	//	}
-	return region;
-    }
-
-    public int hdDensityRegion(double dens,int nl,int nz,int np){
-	int region = 0;
-	if(dens<=6.) region=1;
-	if(dens>=6. && dens<26.) region=2;
-	if(dens>=26.) region=3;
-	return region;
-    }
-
-    private void processCollection(EventHeader event, String colName,
-				   Map<Long,CalorimeterHit> hitmap) {
-
-      if(_debug>0) {
-	  System.out.println("*** procColl: colName="+colName
-			     +", # hits="+hitmap.size());
-      }
-
-      SegmentationBase segm
-	  = (SegmentationBase)_roMap.get(colName).getSegmentation();
-      Vector<Vector<CalorimeterHit>> trees = makeTree(hitmap, segm);
-
-      List<BasicCluster> recoClusColl = new ArrayList<BasicCluster>();
-      if(trees.size()>0)
-	  recoClusColl = clusBuilder.makeClusters( trees );
-      if (recoClusColl.size() > 0) {
-	  String newName = new String(colName+"DTreeClusters");
-	  event.put( newName, recoClusColl, Cluster.class, (1<<31) );
-      }
-
-//       int nhits = hitmap.size();
-//       AIDA aida = AIDA.defaultInstance();
-//       aida.cloud1D(colName+"-Nhits").fill( nhits );
-//       aida.cloud1D(colName+"-NmcHits").fill(mchits);
-//       aida.cloud1D(colName+"-diffHitsColl-mc").fill(nhits-mchits);
-//       aida.cloud1D(colName+"-numCheatClusters").fill(nclusCheat);
-    }
-
-    private static Map<String,Readout> _roMap;
-    private static RunControlParameters _runPar;
-    private LoadMyCalorimeterHit _loader = LoadMyCalorimeterHit.getInstance();
-    private CalHitMapMgr _expert = CalHitMapMgr.getInstance();
-    private Map<Long,Long> _ParentMap;
-    private Map<Long,CalorimeterHit> embhitmap,emehitmap,hdbhitmap,hdehitmap;
-    private String _distType,_calType;
-    private int _nLyr;
-    private int _nZ;
-    private int _nPhi;
-    private int _evtnum;
-    private double _emEcut, _hdEcut;
-
-    private ClusterBuilder clusBuilder = new ClusterBuilder();
-}

lcsim/src/org/lcsim/recon/cluster/density
HitWeightingClusterPropertyCalculator.java removed after 1.1
diff -N HitWeightingClusterPropertyCalculator.java
--- HitWeightingClusterPropertyCalculator.java	7 Dec 2005 18:57:12 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,84 +0,0 @@
-package org.lcsim.recon.cluster.density;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import org.lcsim.event.CalorimeterHit;
-import org.lcsim.event.Cluster;
-import org.lcsim.recon.cluster.util.DefaultClusterPropertyCalculator;
-
-/**
- * Density weighting implementation of a ClusterPropertyCalculator object.
- *
- * <br>This alternative hit-weighting scheme can be used for new cluster
- * properties in two significantly different ways:
- *
- * <ol>
- * <li> By permanently changing the weighting scheme of the Cluster objects:
- * <pre>
- *      aCluster.setPropertyCalculator( myCalculator );
- *      Hep3Vector newPos = new BasicHep3Vector( aCluster.getPosition() );
- * </pre></li>
- *
- * <li> Using another weighting scheme without altering the scheme used
- *    by the Cluster objects:
- * <pre>
- *      myCalculator.calculateProperties( cluster.getCalorimeterHits() );
- *      Hep3Vector newPos = new BasicHep3Vector( myCalculator.getPosition() );
- * </pre></li>
- * </ol>
- *
- * @author Guilherme Lima
- */
-public class HitWeightingClusterPropertyCalculator extends DefaultClusterPropertyCalculator
-{
-    RunControlParameters _runPar = RunControlParameters.getInstance();
-    LoadMyCalorimeterHit _loader = LoadMyCalorimeterHit.getInstance();
-
-    public void calculateProperties(List<CalorimeterHit> hits)
-    {
-      double cluE = 0.0;
-      double sumWt = 0.0;
-      double cluX = 0.0; double cluY = 0.0; double cluZ = 0.0;
-      int cluSize = hits.size();
-      if(cluSize==0) System.out.println("Damn 2");
-      assert cluSize > 0 : "ClusterBuilder: zero-hits cluster found.";
-
-      for( CalorimeterHit hit : hits ){
-	  double ene = hit.getRawEnergy();
-	  double[] pos = hit.getPosition();
-	  cluE += ene;
-	  if(_runPar.getCentroidWeightType()=="Energy") {
-	      cluX += ene*pos[0];
-	      cluY += ene*pos[1];
-	      cluZ += ene*pos[2];
-	      sumWt += ene;
-	  }
-	  if(_runPar.getCentroidWeightType()=="Density") {
-// 	    if(cluSize>1) {
-	      long id = hit.getCellID();
-	      double dens = _loader.getDensity(hit.getCellID());
-	      cluX += dens*pos[0];
-	      cluY += dens*pos[1];
-	      cluZ += dens*pos[2];
-	      sumWt += dens;
-// 	    }
-// 	    else {
-// 		cluX = pos[0];
-// 		cluY = pos[1];
-// 		cluZ = pos[2];
-// 		sumWt = 1.0;
-// 	    }
-	  }
-      }
-      if(sumWt>0.){
-	  cluX /= sumWt;
-	  cluY /= sumWt;
-	  cluZ /= sumWt;
-      }
-
-      position[0] = cluX;
-      position[1] = cluY;
-      position[2] = cluZ;
-    }
-}

lcsim/src/org/lcsim/recon/cluster/density
Kinem.java removed after 1.2
diff -N Kinem.java
--- Kinem.java	7 Dec 2005 18:57:18 -0000	1.2
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,18 +0,0 @@
-package org.lcsim.recon.cluster.density;
-
-public class Kinem {
-
-    public static double calcTheta(double[] pos){
-        double theta = 0.0;
-        double r = Math.sqrt(pos[0]*pos[0]+pos[1]*pos[1]);
-        theta = Math.atan2(r,pos[2]);
-        return theta;
-    }
-
-    public static double calcPhi(double[] pos){
-        double phi = 0.0;
-        phi = Math.atan2(pos[1],pos[0]);
-        if(phi<0.0) phi += 2.0*Math.PI;
-        return phi;
-    }
-}

lcsim/src/org/lcsim/recon/cluster/density
LoadMyCalorimeterHit.java removed after 1.8
diff -N LoadMyCalorimeterHit.java
--- LoadMyCalorimeterHit.java	30 Dec 2005 22:02:56 -0000	1.8
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,110 +0,0 @@
-package org.lcsim.recon.cluster.density;
-
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Map;
-import java.util.HashMap;
-import org.lcsim.util.aida.AIDA;
-import org.lcsim.util.Driver;
-import org.lcsim.event.EventHeader;
-import org.lcsim.event.CalorimeterHit;
-import org.lcsim.event.CalorimeterHit;
-import org.lcsim.geometry.segmentation.SegmentationBase;
-import org.lcsim.geometry.compact.Readout;
-import org.lcsim.geometry.Subdetector;
-import org.lcsim.recon.cluster.util.CalHitMapMgr;
-import org.lcsim.geometry.IDDecoder;
-
-public class LoadMyCalorimeterHit {
-
-    public static LoadMyCalorimeterHit getInstance() {
- 	if(_me==null) {
- 	    new LoadMyCalorimeterHit();
-	    System.out.println("LoadMyCalorimeterHit object at "+_me);
- 	}
-	assert _me != null : "Problem constructing LoadMyCalorimeterHit.";
- 	return _me;
-    }
-
-    private LoadMyCalorimeterHit() {
-	if(_me==null) _me=this;
-	_densityMap = new HashMap<Long,Double>();
-        _runPar = RunControlParameters.getInstance();
-    }
-
-    public void setEvent(EventHeader event) {
-	if( event != _event ) {
-	    this.reset();
-	}
-    }
-
-    public void reset() {
-      // clear hit maps for each subdetector collection
-      _densityMap.clear();
-    }
-
-    // assign densities to every hit in *new* hitmap,
-    // thus density=0 for hits failing energy cut
-    public void setDensities(String colName, Map<Long,CalorimeterHit> hitmap) {
-
-      if( colName.contains("Ecal") ) {
-	_thresh = _runPar.getEMthresh();
-	_nLyr = _runPar.getLyrNeighEM();
-	_nZ = _runPar.getZNeighEM();
-	_nPhi = _runPar.getPhiNeighEM();
-      }
-      else if( colName.contains("Hcal") ) {
-	_thresh = _runPar.getHDthresh();
-	_nLyr = _runPar.getLyrNeighHD();
-	_nZ = _runPar.getZNeighHD();
-	_nPhi = _runPar.getPhiNeighHD();
-      }
-
-      for( CalorimeterHit khit : hitmap.values() ) {
-	long cellid = khit.getCellID();
-	IDDecoder decoder = khit.getSubdetector().getIDDecoder();
-	SegmentationBase segm = (SegmentationBase)decoder;	  
-
-	double nNeigh = 1.0;  // count hit itself + neighbors (never zero)
-	segm.setID(cellid);
-	long neigh[] = segm.getNeighbourIDs(_nLyr,_nZ,_nPhi);
-	for(int j=0; j<neigh.length; ++j) {
-	  long jid = neigh[j];
-	  CalorimeterHit lhit = hitmap.get(jid);
-	  if(lhit!=null) nNeigh++;
-	}
-
-	_densityMap.put(cellid,nNeigh);
-	if(nNeigh<50) AIDA.defaultInstance().cloud1D("density").fill(nNeigh);
-      }
-    }
-
-    // Get hit density from a hit reference
-    double getDensity(final CalorimeterHit hit) {
-	if(hit==null) return 0.0;
-	return this.getDensity( hit.getCellID() );
-    }
-
-    // Get hit density from cellID
-    double getDensity(long cellid) {
-	try {
-	    return _densityMap.get( cellid );
-	}
-	catch(NullPointerException e) {
-	    // Hits below threshold end up here, should return density=0
-	    return 0.0;
-	}
-    }
-
-    //*** FIELDS ***
-
-    private static LoadMyCalorimeterHit _me = null;
-    /** Current event */
-    private EventHeader _event;
-    private static RunControlParameters _runPar;
-    private double _thresh;
-    private int _nLyr;
-    private int _nZ;
-    private int _nPhi;
-    private Map<Long,Double> _densityMap;
-}

lcsim/src/org/lcsim/recon/cluster/density
MyTools.java removed after 1.4
diff -N MyTools.java
--- MyTools.java	27 Dec 2005 16:33:53 -0000	1.4
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,117 +0,0 @@
-/*
- * MyTools.java
- *
- * Created on Nov. 2003
- * G.Lima, J. McCormick (NICADD/NIU)
- */
-
-package org.lcsim.recon.cluster.density;
-import org.lcsim.event.EventHeader;
-
-/**
- *
- * @author G.Lima, J.McCormick
- */
-public class MyTools
-{
-    // 1=sidaug05;  2=sidaug05_tcmt;  3=sdnphoct04
-    static int detector = 3;
-
-//     // This returns the index of object obj in collection col
-//     public static int indexOf( LCObject obj, LCCollection col )
-//     {
-// 	int fail = -1;
-// 	if( obj == null ) return fail;
-
-// 	for(int i=0; i<col.getNumberOfElements(); i++) {
-// 	    if( obj == col.getElementAt(i) ) return i;
-// 	}
-
-// 	return fail;
-//     }
-
-//     public static void listCollections(EventHeader evt)
-//     {
-// 	String[] colls = evt.getCollectionNames();
-// 	for(int i=0; i<colls.length; i++) {
-// 	    System.out.println("Collection name: "+colls[i]);
-// 	}
-//     }
-
-    public static int getSystem( long cellid ) {
-	if(detector==1)	     return (int)(cellid>>7)&0x3f;
-	else if(detector==2) return (int)(cellid>>7)&0x3f;
-	else if(detector==3) return (int)(cellid>>16)&0x3f;
-	else return 0;
-    }
-
-    public static int getSystemBarrel( long cellid ) {
-	if(detector==1)	     return (int)((cellid>>7) & 0x1ff);
-	else if(detector==2) return (int)((cellid>>7) & 0x1ff);
-	else if(detector==3) return (int)((cellid>>16) & 0x1ff);
-	else return 0;
-    }
-
-    public static int getLayer( long cellid ) {
-	if(detector==1)	     return (int)((cellid>>0) & 0x7f);
-	else if(detector==2) return (int)((cellid>>0) & 0x7f);
-	else if(detector==3) return (int)((cellid>>0) & 0xffff);
-	else return 0;
-    }
-
-    public static int getThetaBin( long cellid ) {
-	int thetabin = 0;
-	if(detector==1) {
-	    int max = 1<<11;  // for 11 bits
-	    thetabin = (int)((cellid>>32) & 0x7ff);
-	}
-	if(detector==2) {
-	    int max = 1<<16;  // for 16 bits
-	    thetabin = (int)((cellid>>48) & 0xffff);
-	    // sign bit
-	    if( thetabin > max/2-1 ) thetabin = thetabin - max;
-	}
-	if(detector==3) {
-	    int max = 1<<16;  // for 16 bits
-	    thetabin = (int)((cellid>>32) & 0xffff);
-	    // sign bit
-	    if( thetabin > max/2-1 ) thetabin = thetabin - max;
-	}
-	return thetabin;
-    }
-
-    public static int getPhiBin( long cellid ) {
-	int phibin = 0;
-	if(detector==1) {
-	    int max = 1<<11;  // for 11 bits
-	    phibin = (int)((cellid>>43) & 0x7ff);
-	    if( phibin > max/2-1 ) phibin = phibin - max;
-	}
-	if(detector==2) phibin = (int)((cellid>>32) & 0xffff);
-	if(detector==3) phibin = (int)((cellid>>48) & 0xffff);
- 	return phibin;
-    }
-
-    public static int getECalLayerTB( float[] pos ) {
-	double aux = (584.30 - pos[1])/5;
-	int layer = (int)(aux+0.5);
-	if(layer>29 || layer<0) System.out.println(" Bad ECal layer="+layer);
-	return layer;
-    }
-
-    public static int getHCalLayerTB( float[] pos ) {
-	double aux = (435.0 - pos[1])/25;
-	int layer = (int)(aux+0.5);
-	if(layer>34 || layer<0) System.out.println(" Bad HCal layer="+layer+", pos="+pos[1]);
-	return (int)(aux+0.5);
-    }
-
-    public static String printID(long id) {
-	return new String("<"+Long.toHexString(id)
-			  +": "+Integer.toString( getSystemBarrel(id) )
-			  +" "+Integer.toString( getLayer(id) )
-			  +" "+Integer.toString( getThetaBin(id))
-			  +" "+Integer.toString( getPhiBin(id) )
-			  +">");
-    }
-}

lcsim/src/org/lcsim/recon/cluster/density
RunControlParameters.java removed after 1.3
diff -N RunControlParameters.java
--- RunControlParameters.java	27 Dec 2005 16:33:55 -0000	1.3
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,191 +0,0 @@
-package org.lcsim.recon.cluster.density;
-
-public class RunControlParameters {
-
-    static RunControlParameters getInstance() {
-        if(_me==null) {
-            _me = new RunControlParameters();
-        }
-        return _me;
-    }
-
-    private RunControlParameters() {
-        if(_me==null) _me=this;
-        _EMsampWt = 1.0/0.022;
-        _HDsampWt = 1.0/0.03;
-        _EMmip = 0.008;  // in GeV (corrected energy)
-        _HDmip = 0.031;  // in GeV (corrected energy)
-        _EMthresh = 0.25; // was 0.25
-        _HDthresh = 0.25; // was 0.25
-        _lyrNeighEM = 8; // was 8 ???
-        _zNeighEM = 4; // was 4 ???
-        _phiNeighEM = 4; // was 4 ???
-        _lyrNeighHD = 8; // was 8 ???
-        _zNeighHD = 4; // was 4 ???
-        _phiNeighHD = 4; // was 4 ???
-	_lyrContractionEM = new int[3];
-	_lyrContractionEM[0] = 0;
-	_lyrContractionEM[1] = -7;
-	_lyrContractionEM[2] = -7;
-	_zContractionEM = new int[3];
-	_zContractionEM[0] = -4;
-	_zContractionEM[1] = 0;
-	_zContractionEM[2] = 2;
-	_phiContractionEM = new int[3];
-	_phiContractionEM[0] = -6;
-	_phiContractionEM[1] = 0;
-	_phiContractionEM[2] = 2;
-	_lyrContractionHD = new int[3];
-	_zContractionHD = new int[3];
-	_phiContractionHD = new int[3];
-        _distanceType = "Euclidean";
-        _clusterSeparately = true;
-        _centroidWeightType = "Density";
-        _ModeValleyFactors = new double[2][2];
-        _ModeValleyFactors[0][0] = 0.8;
-        _ModeValleyFactors[0][1] = 0.15;
-        _ModeValleyFactors[1][0] = 0.025;
-        _ModeValleyFactors[1][1] = 0.025;
-        _convergenceParameter = 0.001;
-	_prune = true;
-	_pruningDist = 500.;
-	_maxMaskSize = 20;
-	_emSigma = new double[3];
-	_emSigma[0] = 1.5;
-	_emSigma[1] = 1.5;
-	_emSigma[2] = 1.5;
-    }
-
-    public double getEMweight(){
-        return this._EMsampWt;
-    }
-
-    public double getEMmip(){
-        return this._EMmip;
-    }
-
-    public double getEMthresh(){
-        return this._EMthresh;
-    }
-
-    public double getHDweight(){
-        return this._HDsampWt;
-    }
-
-    public double getHDmip(){
-        return this._HDmip;
-    }
-
-    public double getHDthresh(){
-        return this._HDthresh;
-    }
-
-    public int getLyrNeighEM(){
-        return this._lyrNeighEM;
-    }
-
-    public int getZNeighEM(){
-        return this._zNeighEM;
-    }
-
-    public int getPhiNeighEM(){
-        return this._phiNeighEM;
-    }
-
-    public int getLyrNeighHD(){
-        return this._lyrNeighHD;
-    }
-
-    public int getZNeighHD(){
-        return this._zNeighHD;
-    }
-
-    public int getPhiNeighHD(){
-        return this._phiNeighHD;
-    }
-
-    public String getDistanceType(){
-        return this._distanceType;
-    }
-
-    public String getCentroidWeightType(){
-        return this._centroidWeightType;
-    }
-
-    public boolean ClusterSeparately(){
-        return this._clusterSeparately;
-    }
-
-    public double[][] getInfluenceFactors(){
-        return this._ModeValleyFactors;
-    }
-
-    public double getConvergenceParameter(){
-        return this._convergenceParameter;
-    }
-
-    public boolean Prune(){
-	return this._prune;
-    }
-
-    public double getPruningDist(){
-	return this._pruningDist;
-    }
-
-    public int getMaxMaskSize(){
-	return this._maxMaskSize;
-    }
-
-    public double[] getEMGaussWidths(){
-	return this._emSigma;
-    }
-
-    public int[] getLyrContracEM(){
-	return this._lyrContractionEM;
-    }
-
-    public int[] getZContracEM(){
-	return this._zContractionEM;
-    }
-
-    public int[] getPhiContracEM(){
-	return this._phiContractionEM;
-    }
-
-    public int[] getLyrContracHD(){
-	return this._lyrContractionHD;
-    }
-
-    public int[] getZContracHD(){
-	return this._zContractionHD;
-    }
-
-    public int[] getPhiContracHD(){
-	return this._phiContractionHD;
-    }
-
-    private static RunControlParameters _me=null;
-
-    private double _EMsampWt;
-    private double _HDsampWt;
-    private double _EMmip;
-    private double _HDmip;
-    private double _EMthresh;
-    private double _HDthresh;
-    private double _convergenceParameter;
-    private double _pruningDist;
-    private int _lyrNeighEM,_lyrNeighHD;
-    private int _zNeighEM,_zNeighHD;
-    private int _phiNeighEM,_phiNeighHD;
-    private int _maxMaskSize;
-    private String _distanceType;
-    private String _centroidWeightType;
-    private boolean _clusterSeparately;
-    private boolean _prune;
-    private double[][] _ModeValleyFactors;
-    private double[] _emSigma;
-    private int[] _lyrContractionEM,_lyrContractionHD;
-    private int[] _zContractionEM,_zContractionHD;
-    private int[] _phiContractionEM,_phiContractionHD;
-
-}

lcsim/src/org/lcsim/recon/cluster/density
TrackHitMatcher.java removed after 1.1
diff -N TrackHitMatcher.java
--- TrackHitMatcher.java	27 Dec 2005 16:08:36 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,150 +0,0 @@
-package org.lcsim.recon.cluster.density;
-
-import java.util.Map;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Vector;
-import hep.physics.vec.Hep3Vector;
-import hep.physics.vec.BasicHep3Vector;
-
-// import org.lcsim.util.aida.AIDA;
-import org.lcsim.event.EventHeader;
-import org.lcsim.event.CalorimeterHit;
-import org.lcsim.event.Track;
-import org.lcsim.geometry.compact.Subdetector;
-import org.lcsim.geometry.subdetector.CylindricalCalorimeter;
-import org.lcsim.geometry.layer.Layering;
-import org.lcsim.geometry.segmentation.SegmentationBase;
-import org.lcsim.geometry.IDDecoder;
-import org.lcsim.recon.cluster.util.CalHitMapMgr;
-
-/**
- * A helper class for track-hit matching in a single calorimeter component
- *
- * @author Guilherme Lima
- * @version $Id: TrackHitMatcher.java,v 1.1 2005/12/27 16:08:36 lima Exp $
- */
-public class TrackHitMatcher {
-
-    int _debug = 0;  // debug level, 0 for no printout
-
-    // constructors
-    public TrackHitMatcher(String colName, double[] layers) {
-	this(colName, layers, 2, 2, 0);
-    }
-    public TrackHitMatcher(String colName, double[] layers, int dU, int dV) {
-	this(colName, layers, dU, dV, 0);
-    }
-
-    public TrackHitMatcher(String colName, double[] layers, int dU, int dV, int debug)
-    {
-	_colName = colName;
-	_layers = layers;
-	_debug = debug;
-	_subdet = _expert.getSubdetector( colName );
-	_segm = (SegmentationBase)_expert.getIDDecoder( colName );
-	_dU = dU;
-	_dV = dV;
-    }
-
-    public void findMatches(EventHeader event,
-			    Map<Track,Vector<Hep3Vector>> intersects,
-			    Map<Track,List<CalorimeterHit>> trkHitsMap)
-    {
-      if(!_init) initialize(event);
-      this.reset();
-
-      // Load hit collections
-      _hitmap = _expert.getCollHitMap(_colName);
-
-      // loop over tracks
-      for( Track trk : event.get(Track.class,"CombinedTracks") ) {
-	_trk = trk;
-	_trkHitsMap = trkHitsMap;
-	_trkHits = trkHitsMap.get( trk );
-	int nhitsBefore = (_trkHits!=null ? _trkHits.size() : 0);
-
-	Hep3Vector pvec = new BasicHep3Vector( trk.getMomentum() );
-	Vector<Hep3Vector> trkIntercepts = intersects.get(trk);
-	if( trkIntercepts == null) continue;
-
-	for( Hep3Vector pos : trkIntercepts ) {
-	  // find cell containing track-cylinder intersection
-	  long cellid = _segm.findCellContainingXYZ( pos );
-	  if(cellid==0) continue;
-
-	  // save matched hits
-	  this.addHitToTrack( cellid );
-
-	  _segm.setID( cellid );
-// 	  double rhoCell = _segm.getDistanceToSensitive(i);
-//  	  System.out.println("layer="+i+", pos="+pos+", cell pos=("
-//  	        +_segm.getX()+"; "+_segm.getY()+"; "
-//              +_segm.getZ()+")"
-//  	        +", rhoSwim="+Math.sqrt(pos.x()*pos.x()+pos.y()*pos.y())
-//  		+", rhoCell="+rhoCell+", #hits="+_hitmap.size());
-
-          // save matched hits in neighborhood
-	  long[] neighs = _segm.getNeighbourIDs( 0, _dU, _dV );
-	  for(int i=0; i<neighs.length; ++i) {
-	      this.addHitToTrack( neighs[i] );
-	  }
-	}
-
-	if(_debug>0) {
-	  int nhitsAfter = (_trkHits!=null ? _trkHits.size() : 0);
-	  System.out.println(_colName+" matcher:"
-	     +" pvec=("+pvec.x()+"; "+pvec.y()+"; "+pvec.z()+")"
-	     +", #intersects="+intersects.get(trk).size()
-	     +", #matches="+(nhitsAfter-nhitsBefore) );
-	}
-      }
-    }
-
-    private void reset() {
-    }
-
-    private void initialize(EventHeader event) {
-      // layer info
-      CylindricalCalorimeter embSubdet = (CylindricalCalorimeter)_expert.getSubdetector(_colName);
-      Layering layers = embSubdet.getLayering();
-      int nlayers = layers.getLayerCount();
-      _layers = new double[nlayers];
-      for(int i=0; i<nlayers; ++i) {
-	_layers[i] = layers.getDistanceToLayerSensorMid(i);
-      }
-
-      _init = true;
-    }
-
-    // Checks whether hit is valid
-    private void addHitToTrack( long cellid ) {
-	CalorimeterHit ihit = _hitmap.get(cellid);
-	if(ihit!=null) {
-	    if(_trkHits==null) {
-		_trkHits = new ArrayList<CalorimeterHit>();
-		_trkHitsMap.put( _trk, _trkHits );
-	    }
-	    if(_debug>1) System.out.println("  add "+MyTools.printID(cellid));
-	    _trkHits.add( ihit );
-	}
-    }
-
-    //***** FIELDS ****
-
-    // track currently being processed
-    private boolean _init = false;
-    private String _colName;
-    private double[] _layers;
-    private Subdetector _subdet = null;
-    private SegmentationBase _segm = null;
-    private Map<Long,CalorimeterHit> _hitmap = null;
-//     private LoadMyCalorimeterHit _loader = LoadMyCalorimeterHit.getInstance();
-    private CalHitMapMgr _expert = CalHitMapMgr.getInstance();
-    private int _dU, _dV;
-//     private AIDA _aida = AIDA.defaultInstance();
-    // these are for loop optimization
-    private Track _trk = null;
-    private List<CalorimeterHit> _trkHits = null;
-    private Map<Track,List<CalorimeterHit>> _trkHitsMap = null;
-}

lcsim/src/org/lcsim/recon/cluster/density
TrackHitRelation.java removed after 1.1
diff -N TrackHitRelation.java
--- TrackHitRelation.java	27 Dec 2005 16:08:36 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,18 +0,0 @@
-package org.lcsim.recon.cluster.density;
-
-import java.util.List;
-import org.lcsim.event.CalorimeterHit;
-import org.lcsim.event.Track;
-
-public class TrackHitRelation {
-    TrackHitRelation(Track track, List<CalorimeterHit> hits) {
-	_track = track;
-	_hits = hits;
-    }
-
-    public Track getTrack() { return _track; }
-    public List<CalorimeterHit> getHits() { return _hits; }
-
-    private Track _track;
-    private List<CalorimeterHit> _hits;
-}

lcsim/src/org/lcsim/recon/cluster/density
TrackMatchingDriver.java removed after 1.1
diff -N TrackMatchingDriver.java
--- TrackMatchingDriver.java	27 Dec 2005 16:08:36 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,237 +0,0 @@
-package org.lcsim.recon.cluster.density;
-
-import java.util.Map;
-import java.util.List;
-import java.util.Vector;
-import java.util.HashMap;
-import java.util.ArrayList;
-import hep.physics.vec.Hep3Vector;
-import hep.physics.vec.BasicHep3Vector;
-
-import org.lcsim.util.Driver;
-import org.lcsim.event.EventHeader;
-import org.lcsim.event.SimCalorimeterHit;
-import org.lcsim.event.CalorimeterHit;
-import org.lcsim.event.Track;
-import org.lcsim.geometry.util.CalorimeterIDDecoder;
-import org.lcsim.geometry.compact.Subdetector;
-import org.lcsim.geometry.segmentation.BarrelCylinderSegmentationBase;
-import org.lcsim.geometry.subdetector.CylindricalCalorimeter;
-import org.lcsim.geometry.layer.Layering;
-import org.lcsim.util.swim.HelixSwimmer;
-import org.lcsim.util.swim.HelixSwim;
-import org.lcsim.geometry.IDDecoder;
-import org.lcsim.event.ReconstructedParticle;
-import org.lcsim.recon.cluster.util.CalHitMapMgr;
-
-/**
- * A driver for track matching using the swimmer.
- *
- * @author Guilherme Lima
- * @version $Id: TrackMatchingDriver.java,v 1.1 2005/12/27 16:08:36 lima Exp $
- */
-public class TrackMatchingDriver extends Driver {
-
-    int _debug = 2;  // debug level, 0 for no printout
-
-    public TrackMatchingDriver() {
-    }
-
-    public void process(EventHeader event) {
-
-      if(_debug>0) {
-	System.out.println("******** Track to calorimeter hit matching ***");
-      }
-
-      if(!_init) initialize(event);
-      this.reset();
-
-      Map<Track,Vector<Hep3Vector>> emInterceptsMap = new HashMap<Track,Vector<Hep3Vector>>();
-      Map<Track,Vector<Hep3Vector>> hadInterceptsMap = new HashMap<Track,Vector<Hep3Vector>>();
-
-      // loop over tracks
-      List<Track> recoTracks = event.get(Track.class, "CombinedTracks");
-      System.out.println("TrackingCheater: # parts="+recoTracks.size());
-      for( Track trk : recoTracks ) {
-	Hep3Vector vtx = new BasicHep3Vector( trk.getReferencePoint() );
-	Hep3Vector pvec = new BasicHep3Vector( trk.getMomentum() );
-        int icharge = trk.getCharge();
-	if(_debug>1) {
-	    System.out.println("*** New track"
-			   +", pvec=("+pvec.x()+"; "+pvec.y()+"; "+pvec.z()+")"
-			   +", vtx=("+vtx.x()+"; "+vtx.y()+"; "+vtx.z()+")"
-			   +", q="+icharge);
-	}
-
-	// setup the swimmer for this track
-	_swimmer.setTrack( pvec, vtx, icharge );
-	double sParm1 = _swimmer.getDistanceToCylinder( 1270, 3000 );
-	Hep3Vector pos1 = _swimmer.getPointAtDistance( sParm1 );
-	double rho1 = Math.sqrt(pos1.x()*pos1.x()+pos1.y()*pos1.y());
-	System.out.println("Swimmer@EMentrance: ("+pos1.x()+"; "+pos1.y()+"; "+pos1.z()+", rho="+rho1);
-
-	// Swim the particle to each sensitive layer, saving intersections
-	boolean looping = false;
-	Vector<Hep3Vector> emIntercepts = new Vector<Hep3Vector>();
-	for(int i=0; i<_layersEMB.length; ++i) {
-	  if(looping) break;
-
-	  double rcyl = _layersEMB[i];
-	  double zcyl = _layersEME[i];
-// 	  System.out.println("*** Swimming to layer "+i
-// 			     +", rcyl="+rcyl+", zcyl="+zcyl);
-	  double sParm = _swimmer.getDistanceToCylinder( rcyl, zcyl );
-	  Hep3Vector pos = _swimmer.getPointAtDistance( sParm );
-
-	  // correction for plug-like endcaps
-	  double rho = Math.sqrt(pos.x()*pos.x()+pos.y()*pos.y());
-	  if( rcyl-rho>1.e-3 && rho>_rhoMinEM ) {
-//          System.out.println("Plug-type correction: pos="+pos+", rho="+rho);
-	    sParm = _swimmer.getDistanceToRadius( rcyl );
-	    pos = _swimmer.getPointAtDistance( sParm );
-	    rho = Math.sqrt(pos.x()*pos.x()+pos.y()*pos.y());
-	    if(rho!=rcyl) {
-		looping = true;
- 		if(_debug>1) System.out.println("Track seems to be looping.  Break.");
-		break;
-	    }
-	  }
-  	  if(_debug>1) System.out.println("Swimmer: layer="+i+", pos="+pos);
-	  emIntercepts.add(i,pos);
-	}
-
-	Vector<Hep3Vector> hadIntercepts = new Vector<Hep3Vector>();
-	for(int i=0; i<_layersHDB.length; ++i) {
-	  if(looping) break;
-
-	  double rcyl = _layersHDB[i];
-	  double zcyl = _layersHDE[i];
-// 	  System.out.println("*** Swimming to layer "+i
-// 			     +", rcyl="+rcyl+", zcyl="+zcyl);
-	  double sParm = _swimmer.getDistanceToCylinder( rcyl, zcyl );
-	  Hep3Vector pos = _swimmer.getPointAtDistance( sParm );
-
-	  // correction for plug-like endcaps
-	  double rho = Math.sqrt(pos.x()*pos.x()+pos.y()*pos.y());
-	  if( rcyl-rho>1.e-3 && rho>_rhoMinHAD ) {
-//          System.out.println("Plug-type correction: pos="+pos+", rho="+rho);
-	    sParm = _swimmer.getDistanceToRadius( rcyl );
-	    pos = _swimmer.getPointAtDistance( sParm );
-	    rho = Math.sqrt(pos.x()*pos.x()+pos.y()*pos.y());
-	    if(rho!=rcyl) {
-		looping = true;
-  		if(_debug>1) System.out.println("Track seems to be looping.  Break.");
-		break;
-	    }
-	  }
-  	  if(_debug>1) System.out.println("Swimmer: layer="+i+", pos="+pos);
-	  hadIntercepts.add(i,pos);
-	}
-	if(emIntercepts.size()>0) emInterceptsMap.put( trk, emIntercepts );
-	if(hadIntercepts.size()>0) hadInterceptsMap.put( trk, hadIntercepts );
-      }
-
-      // call track-hit matchers
-      Map<Track,List<CalorimeterHit>> trkHitsMap
-	  = new HashMap<Track,List<CalorimeterHit>>();
-
-      _embMatcher.findMatches( event, emInterceptsMap, trkHitsMap );
-      _emeMatcher.findMatches( event, emInterceptsMap, trkHitsMap );
-      _hdbMatcher.findMatches( event, hadInterceptsMap, trkHitsMap );
-      _hdeMatcher.findMatches( event, hadInterceptsMap, trkHitsMap );
-
-      // summary
-      int i=0;
-      List<TrackHitRelation> trackHitRels = new ArrayList<TrackHitRelation>();
-      for( Track trk : recoTracks ) {
-	  List<CalorimeterHit> hits = trkHitsMap.get(trk);
-	  if(_debug>0) {
-	      System.out.println("Track "+i+": #match hits="
-				 +( hits!=null ? hits.size() : 0 ) );
-	  }
-	  trackHitRels.add( new TrackHitRelation(trk, hits) );
-	  ++i;
-      }
-
-      // stores track-hit associations into event
-      event.put("TrkHitsSwimmer", trackHitRels, TrackHitRelation.class, 0);
-    }
-
-    private void reset() {
-    }
-
-    private void initialize(EventHeader event) {
-      CalHitMapMgr expert = CalHitMapMgr.getInstance();
-
-      // face of EM calorimeter
-      CylindricalCalorimeter embSubdet = (CylindricalCalorimeter)expert.getSubdetector(_embName);
-      _rhoMinEM = embSubdet.getInnerRadius();
-      Layering layers = embSubdet.getLayering();
-      int nlayers = layers.getLayerCount();
-      _layersEMB = new double[nlayers];
-      for(int i=0; i<nlayers; ++i) {
-	_layersEMB[i] = layers.getDistanceToLayerSensorMid(i);
-      }
-
-      CylindricalCalorimeter emeSubdet = (CylindricalCalorimeter)expert.getSubdetector(_emeName);
-      layers = emeSubdet.getLayering();
-      nlayers = layers.getLayerCount();
-      _layersEME = new double[nlayers];
-      for(int i=0; i<nlayers; ++i) {
-	  _layersEME[i] = layers.getDistanceToLayerSensorMid(i);
-      }
-
-      // face of HAD calorimeter
-      CylindricalCalorimeter hdbSubdet = (CylindricalCalorimeter)expert.getSubdetector(_hdbName);
-      _rhoMinHAD = hdbSubdet.getInnerRadius();
-      layers = hdbSubdet.getLayering();
-      nlayers = layers.getLayerCount();
-      _layersHDB = new double[nlayers];
-      for(int i=0; i<nlayers; ++i) {
-	  _layersHDB[i] = layers.getDistanceToLayerSensorMid(i);
-      }
-
-      CylindricalCalorimeter hdeSubdet = (CylindricalCalorimeter)expert.getSubdetector(_hdeName);
-      layers = hdeSubdet.getLayering();
-      nlayers = layers.getLayerCount();
-      _layersHDE = new double[nlayers];
-      for(int i=0; i<nlayers; ++i) {
-	  _layersHDE[i] = layers.getDistanceToLayerSensorMid(i);
-      }
-
-      // setup a swimmer
-      double[] pos = {0,0,0};
-      double[] field = event.getDetector().getFieldMap().getField(pos);
-      _swimmer = new HelixSwimmer( field[2] );
-
-      // setup track-hit matchers
-      _embMatcher = new TrackHitMatcher(_embName, _layersEMB, 0, 0, _debug);
-      _emeMatcher = new TrackHitMatcher(_emeName, _layersEME, 0, 0, _debug);
-      _hdbMatcher = new TrackHitMatcher(_hdbName, _layersHDB, 0, 0, _debug);
-      _hdeMatcher = new TrackHitMatcher(_hdeName, _layersHDE, 0, 0, _debug);
-
-      _init = true;
-    }
-
-    //***** FIELDS ****
-
-    private boolean _init = false;
-    private double _rhoMinEM;
-    private double _rhoMinHAD;
-
-    private String _embName = "EcalBarrHits";
-    private String _hdbName = "HcalBarrHits";
-    private String _emeName = "EcalEndcapHits";
-    private String _hdeName = "HcalEndcapHits";
-    private double[] _layersEMB;
-    private double[] _layersEME;
-    private double[] _layersHDB;
-    private double[] _layersHDE;
-    private TrackHitMatcher _embMatcher;
-    private TrackHitMatcher _emeMatcher;
-    private TrackHitMatcher _hdbMatcher;
-    private TrackHitMatcher _hdeMatcher;
-
-    private HelixSwimmer _swimmer;
-    private LoadMyCalorimeterHit _loader = LoadMyCalorimeterHit.getInstance();
-}
CVSspam 0.2.8