LISTSERV mailing list manager LISTSERV 16.5

Help for HPS-SVN Archives


HPS-SVN Archives

HPS-SVN Archives


HPS-SVN@LISTSERV.SLAC.STANFORD.EDU


View:

Message:

[

First

|

Previous

|

Next

|

Last

]

By Topic:

[

First

|

Previous

|

Next

|

Last

]

By Author:

[

First

|

Previous

|

Next

|

Last

]

Font:

Proportional Font

LISTSERV Archives

LISTSERV Archives

HPS-SVN Home

HPS-SVN Home

HPS-SVN  January 2015

HPS-SVN January 2015

Subject:

r1886 - in /java/trunk: analysis/src/main/java/org/hps/analysis/dataquality/ analysis/src/main/java/org/hps/analysis/ecal/ ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/exec/ ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/io/ ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/lcsim/ ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/ ecal-readout-sim/src/main/java/org/hps/readout/ecal/ ecal-recon/src/main/java/org/hps/recon/ecal/ monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/ monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/ users/src/main/java/org/hps/users/holly/ users/src/main/java/org/hps/users/kmccarty/ users/src/main/java/org/hps/users/luca/ users/src/main/java/org/hps/users/mgraham/ users/src/main/java/org/hps/users/omoreno/ users/src/main/java/org/hps/users/phansson/

From:

[log in to unmask]

Reply-To:

Notification of commits to the hps svn repository <[log in to unmask]>

Date:

Tue, 6 Jan 2015 20:54:40 -0000

Content-Type:

text/plain

Parts/Attachments:

Parts/Attachments

text/plain (4984 lines)

Author: [log in to unmask]
Date: Tue Jan  6 12:54:22 2015
New Revision: 1886

Log:
Remove usage of HPSEcalCluster and HPSEcalClusterIC where possible.

Modified:
    java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/EcalMonitoring.java
    java/trunk/analysis/src/main/java/org/hps/analysis/ecal/EcalEventMonitor.java
    java/trunk/analysis/src/main/java/org/hps/analysis/ecal/EcalMonitoringPlots.java
    java/trunk/analysis/src/main/java/org/hps/analysis/ecal/HPSEcalFADCPlotsDriver.java
    java/trunk/analysis/src/main/java/org/hps/analysis/ecal/HPSEcalPlotsDriver.java
    java/trunk/analysis/src/main/java/org/hps/analysis/ecal/HPSEcalTriggerPlotsDriver.java
    java/trunk/analysis/src/main/java/org/hps/analysis/ecal/TestRunRateAnalysis.java
    java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/exec/EventDisplayDriver.java
    java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/io/LCIOManager.java
    java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/lcsim/EventDisplayOutputDriver.java
    java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/lcsim/LCIOBridgeDriver.java
    java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/PEventViewer.java
    java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/POccupancyViewer.java
    java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/PassiveViewer.java
    java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/FADCPrimaryTriggerDriver.java
    java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/FADCTriggerDriver.java
    java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/FADCTriggerVariableDriver.java
    java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/MollerTriggerDriver.java
    java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/NeutralPionTriggerDriver.java
    java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/OccupancyAnalysisDriver.java
    java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/SSPTriggerLogic.java
    java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/SinglesTriggerDriver.java
    java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/TestRunTriggerDriver.java
    java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/ECalUtils.java
    java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTEventDisplay.java
    java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/TrackingReconstructionPlots.java
    java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalClusterPlots.java
    java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalEventDisplay.java
    java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalMonitoringPlots.java
    java/trunk/users/src/main/java/org/hps/users/holly/EcalClustererCosmics.java
    java/trunk/users/src/main/java/org/hps/users/kmccarty/ClusterAnalysisDriver.java
    java/trunk/users/src/main/java/org/hps/users/luca/CalibClusterAnalizer.java
    java/trunk/users/src/main/java/org/hps/users/luca/CalibTest.java
    java/trunk/users/src/main/java/org/hps/users/luca/CalibTest2.java
    java/trunk/users/src/main/java/org/hps/users/luca/ClusterSorterReconData.java
    java/trunk/users/src/main/java/org/hps/users/luca/FADCVariableTriggerFEEDriver.java
    java/trunk/users/src/main/java/org/hps/users/luca/FEETrigger.java
    java/trunk/users/src/main/java/org/hps/users/luca/FEETrigger2.java
    java/trunk/users/src/main/java/org/hps/users/luca/FeeTriggerAna.java
    java/trunk/users/src/main/java/org/hps/users/luca/HitSeedHitConf.java
    java/trunk/users/src/main/java/org/hps/users/luca/PositronAna.java
    java/trunk/users/src/main/java/org/hps/users/luca/RawDataReader.java
    java/trunk/users/src/main/java/org/hps/users/luca/ReconData.java
    java/trunk/users/src/main/java/org/hps/users/luca/ReconDataPos.java
    java/trunk/users/src/main/java/org/hps/users/luca/TriggerAna.java
    java/trunk/users/src/main/java/org/hps/users/luca/TriggerAnaFEE.java
    java/trunk/users/src/main/java/org/hps/users/luca/TriggerTest.java
    java/trunk/users/src/main/java/org/hps/users/luca/TruthReader.java
    java/trunk/users/src/main/java/org/hps/users/luca/myTriggerDriver.java
    java/trunk/users/src/main/java/org/hps/users/luca/mycluster.java
    java/trunk/users/src/main/java/org/hps/users/luca/mycluster2.java
    java/trunk/users/src/main/java/org/hps/users/luca/mycluster3.java
    java/trunk/users/src/main/java/org/hps/users/mgraham/TrackExtrapolationAnalysis.java
    java/trunk/users/src/main/java/org/hps/users/omoreno/SvtHitEfficiency.java
    java/trunk/users/src/main/java/org/hps/users/omoreno/SvtTrackAnalysis.java
    java/trunk/users/src/main/java/org/hps/users/omoreno/TestRunTrackReconEfficiency.java
    java/trunk/users/src/main/java/org/hps/users/phansson/FastTrackResidualDriver.java
    java/trunk/users/src/main/java/org/hps/users/phansson/ROOTFlatTupleDriver.java
    java/trunk/users/src/main/java/org/hps/users/phansson/SimpleResiduals.java
    java/trunk/users/src/main/java/org/hps/users/phansson/TrackingReconstructionPlots.java
    java/trunk/users/src/main/java/org/hps/users/phansson/TrigRateDriver.java
    java/trunk/users/src/main/java/org/hps/users/phansson/TriggerTurnOnAnalysis.java

Modified: java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/EcalMonitoring.java
 =============================================================================
--- java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/EcalMonitoring.java	(original)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/dataquality/EcalMonitoring.java	Tue Jan  6 12:54:22 2015
@@ -145,9 +145,9 @@
         }
 
         List<Cluster> clusters;
-        if (event.hasCollection(HPSEcalCluster.class, clusterCollectionName))
+        if (event.hasCollection(Cluster.class, clusterCollectionName))
             clusters = event.get(Cluster.class, clusterCollectionName);
-        else if (event.hasCollection(HPSEcalClusterIC.class, clusterCollectionName))
+        else if (event.hasCollection(Cluster.class, clusterCollectionName))
             clusters = event.get(Cluster.class, clusterCollectionName);
         else if (event.hasCollection(Cluster.class, clusterCollectionName))
             clusters = event.get(Cluster.class, clusterCollectionName);

Modified: java/trunk/analysis/src/main/java/org/hps/analysis/ecal/EcalEventMonitor.java
 =============================================================================
--- java/trunk/analysis/src/main/java/org/hps/analysis/ecal/EcalEventMonitor.java	(original)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/ecal/EcalEventMonitor.java	Tue Jan  6 12:54:22 2015
@@ -13,6 +13,7 @@
 
 import org.hps.recon.ecal.HPSEcalCluster;
 import org.lcsim.event.CalorimeterHit;
+import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
 import org.lcsim.geometry.Detector;
 import org.lcsim.util.Driver;
@@ -96,10 +97,10 @@
                 hitPlot.fill(hit.getIdentifierFieldValue("ix"), hit.getIdentifierFieldValue("iy"), hit.getRawEnergy());
             }
         }
-        if (event.hasCollection(HPSEcalCluster.class, clusterCollectionName)) {
-            List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, clusterCollectionName);
-            for (HPSEcalCluster cluster : clusters) {
-                CalorimeterHit seedHit = cluster.getSeedHit();
+        if (event.hasCollection(Cluster.class, clusterCollectionName)) {
+            List<Cluster> clusters = event.get(Cluster.class, clusterCollectionName);
+            for (Cluster cluster : clusters) {
+                CalorimeterHit seedHit = cluster.getCalorimeterHits().get(0);
                 clusterPlot.fill(seedHit.getIdentifierFieldValue("ix"), seedHit.getIdentifierFieldValue("iy"), cluster.getEnergy());
             }
         }

Modified: java/trunk/analysis/src/main/java/org/hps/analysis/ecal/EcalMonitoringPlots.java
 =============================================================================
--- java/trunk/analysis/src/main/java/org/hps/analysis/ecal/EcalMonitoringPlots.java	(original)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/ecal/EcalMonitoringPlots.java	Tue Jan  6 12:54:22 2015
@@ -6,8 +6,8 @@
 
 import java.util.List;
 
-import org.hps.recon.ecal.HPSEcalCluster;
 import org.lcsim.event.CalorimeterHit;
+import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.RawTrackerHit;
 import org.lcsim.event.base.BaseRawCalorimeterHit;
@@ -89,11 +89,11 @@
                 hitCountFillPlot.fill(hit.getIdentifierFieldValue("ix"), hit.getIdentifierFieldValue("iy"));
             }
         }
-        if (event.hasCollection(HPSEcalCluster.class, clusterCollection)) {
-            List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, clusterCollection);
+        if (event.hasCollection(Cluster.class, clusterCollection)) {
+            List<Cluster> clusters = event.get(Cluster.class, clusterCollection);
 //if (clusters.size()>1)            
-            for (HPSEcalCluster cluster : clusters) {
-                clusterCountFillPlot.fill(cluster.getSeedHit().getIdentifierFieldValue("ix"), cluster.getSeedHit().getIdentifierFieldValue("iy"));
+            for (Cluster cluster : clusters) {
+                clusterCountFillPlot.fill(cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix"), cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy"));
             }
         }
         if (eventRefreshRate > 0 && ++eventn % eventRefreshRate == 0) {

Modified: java/trunk/analysis/src/main/java/org/hps/analysis/ecal/HPSEcalFADCPlotsDriver.java
 =============================================================================
--- java/trunk/analysis/src/main/java/org/hps/analysis/ecal/HPSEcalFADCPlotsDriver.java	(original)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/ecal/HPSEcalFADCPlotsDriver.java	Tue Jan  6 12:54:22 2015
@@ -5,7 +5,6 @@
 
 import java.util.List;
 
-import org.hps.recon.ecal.HPSEcalCluster;
 import org.hps.recon.ecal.HPSRawCalorimeterHit;
 import org.lcsim.event.CalorimeterHit;
 import org.lcsim.event.Cluster;
@@ -70,7 +69,7 @@
 	}
 
 	public void process(EventHeader event) {
-		List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, clusterCollectionName);
+		List<Cluster> clusters = event.get(Cluster.class, clusterCollectionName);
 		if (clusters == null)
 			throw new RuntimeException("Missing cluster collection!");
 

Modified: java/trunk/analysis/src/main/java/org/hps/analysis/ecal/HPSEcalPlotsDriver.java
 =============================================================================
--- java/trunk/analysis/src/main/java/org/hps/analysis/ecal/HPSEcalPlotsDriver.java	(original)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/ecal/HPSEcalPlotsDriver.java	Tue Jan  6 12:54:22 2015
@@ -17,7 +17,6 @@
 
 import org.hps.readout.ecal.ClockSingleton;
 import org.hps.readout.ecal.TriggerDriver;
-import org.hps.recon.ecal.HPSEcalCluster;
 import org.lcsim.detector.identifier.IIdentifier;
 import org.lcsim.detector.identifier.IIdentifierHelper;
 import org.lcsim.event.CalorimeterHit;
@@ -199,7 +198,7 @@
         MCParticle primary = getPrimary(mcparticles);
         double primaryE = primary.getEnergy();
 
-        List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, ecalClusterCollectionName);
+        List<Cluster> clusters = event.get(Cluster.class, ecalClusterCollectionName);
         if (clusters == null)
             throw new RuntimeException("Missing cluster collection!");
 
@@ -230,14 +229,14 @@
         IIdentifierHelper helper =
                 event.getMetaData(hits).getIDDecoder().getSubdetector().getDetectorElement().getIdentifierHelper();
 
-        for (HPSEcalCluster clus : clusters) {
+        for (Cluster clus : clusters) {
 
             clusNHits.fill(clus.getCalorimeterHits().size());
 
             double e = clus.getEnergy();
             clusEPlot.fill(e);
             clusE += e;
-            CalorimeterHit seedHit = (CalorimeterHit) clus.getSeedHit();
+            CalorimeterHit seedHit = (CalorimeterHit) clus.getCalorimeterHits().get(0);
             //double maxe = 0;
             for (CalorimeterHit hit : clus.getCalorimeterHits()) {
                 if (hitClusMap.containsKey(hit)) {

Modified: java/trunk/analysis/src/main/java/org/hps/analysis/ecal/HPSEcalTriggerPlotsDriver.java
 =============================================================================
--- java/trunk/analysis/src/main/java/org/hps/analysis/ecal/HPSEcalTriggerPlotsDriver.java	(original)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/ecal/HPSEcalTriggerPlotsDriver.java	Tue Jan  6 12:54:22 2015
@@ -1,5 +1,7 @@
 package org.hps.analysis.ecal;
 
+import static org.hps.recon.ecal.ECalUtils.maxVolt;
+import static org.hps.recon.ecal.ECalUtils.nBit;
 import hep.aida.IHistogram2D;
 
 import java.util.ArrayList;
@@ -7,10 +9,9 @@
 
 import org.hps.readout.ecal.TriggerDriver;
 import org.hps.recon.ecal.ECalUtils;
-import static org.hps.recon.ecal.ECalUtils.maxVolt;
-import static org.hps.recon.ecal.ECalUtils.nBit;
 import org.hps.recon.ecal.HPSEcalCluster;
 import org.lcsim.event.CalorimeterHit;
+import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
 import org.lcsim.util.Driver;
 import org.lcsim.util.aida.AIDA;
@@ -85,12 +86,12 @@
     	
     	// If the current event has the indicated cluster collection,
     	// use it as the cluster list.
-    	List<HPSEcalCluster> clusters;
-    	if(event.hasCollection(HPSEcalCluster.class, clusterCollectionName)) {
-    		clusters = event.get(HPSEcalCluster.class, clusterCollectionName);
+    	List<Cluster> clusters;
+    	if(event.hasCollection(Cluster.class, clusterCollectionName)) {
+    		clusters = event.get(Cluster.class, clusterCollectionName);
     	}
     	// If it does not, then use an empty list to avoid crashing.
-    	else { clusters = new ArrayList<HPSEcalCluster>(0); }
+    	else { clusters = new ArrayList<Cluster>(0); }
         
         // Populate hit plots.
         for (CalorimeterHit hit : hits) {
@@ -120,9 +121,9 @@
         boolean trigger = TriggerDriver.triggerBit();
         
         // Populate cluster based plots.
-        for (HPSEcalCluster cluster : clusters) {
+        for (Cluster cluster : clusters) {
         	// Get the cluster's seed hit position.
-        	CalorimeterHit seed = cluster.getSeedHit();
+        	CalorimeterHit seed = cluster.getCalorimeterHits().get(0);
             int ix = seed.getIdentifierFieldValue("ix");
             int iy = seed.getIdentifierFieldValue("iy");
             

Modified: java/trunk/analysis/src/main/java/org/hps/analysis/ecal/TestRunRateAnalysis.java
 =============================================================================
--- java/trunk/analysis/src/main/java/org/hps/analysis/ecal/TestRunRateAnalysis.java	(original)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/ecal/TestRunRateAnalysis.java	Tue Jan  6 12:54:22 2015
@@ -5,8 +5,8 @@
 
 import java.util.List;
 
-import org.hps.recon.ecal.HPSEcalCluster;
 import org.lcsim.event.CalorimeterHit;
+import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.MCParticle;
 import org.lcsim.event.base.ParticleTypeClassifier;
@@ -86,22 +86,23 @@
 //        MCParticle particle = mcparticles.get(0);
 
         // Get the list of raw ECal hits.
-        List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, clusterCollectionName);
+        List<Cluster> clusters = event.get(Cluster.class, clusterCollectionName);
         if (clusters == null) {
             throw new RuntimeException("Event is missing ECal clusters collection!");
         }
 
         boolean trigger = false;
 
-        for (HPSEcalCluster cluster : clusters) {
-            if (cluster.getEnergy() > clusterEnergyLow && cluster.getSeedHit().getIdentifierFieldValue("ix") < 0) {
+        for (Cluster cluster : clusters) {
+            CalorimeterHit seedHit = cluster.getCalorimeterHits().get(0);
+            if (cluster.getEnergy() > clusterEnergyLow && seedHit.getIdentifierFieldValue("ix") < 0) {
 //            if (cluster.getEnergy() > clusterEnergyLow && cluster.getSeedHit().getIdentifierFieldValue("iy")>0 && cluster.getSeedHit().getIdentifierFieldValue("ix")<0) {
-                triggersY[Math.abs(cluster.getSeedHit().getIdentifierFieldValue("iy")) - 1]++;
-                if (Math.abs(cluster.getSeedHit().getIdentifierFieldValue("iy")) > 1) {
+                triggersY[Math.abs(seedHit.getIdentifierFieldValue("iy")) - 1]++;
+                if (Math.abs(seedHit.getIdentifierFieldValue("iy")) > 1) {
                     trigger = true;
                 }
             }
-            if (cluster.getSeedHit().getIdentifierFieldValue("ix") < 0 && Math.abs(cluster.getSeedHit().getIdentifierFieldValue("iy")) > 1) {
+            if (seedHit.getIdentifierFieldValue("ix") < 0 && Math.abs(seedHit.getIdentifierFieldValue("iy")) > 1) {
                 for (MCParticle particle : mcparticles) {
                     if (ParticleTypeClassifier.isElectron(particle.getPDGID())) {
                         electronEClusterVsP.fill(1000.0 * particle.getPZ(), 1000.0 * cluster.getEnergy());

Modified: java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/exec/EventDisplayDriver.java
 =============================================================================
--- java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/exec/EventDisplayDriver.java	(original)
+++ java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/exec/EventDisplayDriver.java	Tue Jan  6 12:54:22 2015
@@ -2,11 +2,10 @@
 
 import java.util.List;
 
-import org.hps.monitoring.ecal.eventdisplay.event.Cluster;
 import org.hps.monitoring.ecal.eventdisplay.event.EcalHit;
 import org.hps.monitoring.ecal.eventdisplay.ui.PEventViewer;
-import org.hps.recon.ecal.HPSEcalCluster;
 import org.lcsim.event.CalorimeterHit;
+import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
 import org.lcsim.geometry.Detector;
 import org.lcsim.util.Driver;
@@ -55,7 +54,7 @@
         viewer.resetDisplay();
         viewer.updateDisplay();
 
-        Cluster eventDisplayCluster;
+        org.hps.monitoring.ecal.eventdisplay.event.Cluster eventDisplayCluster;
 
         if (event.hasCollection(CalorimeterHit.class, inputCollection)) {
             List<CalorimeterHit> hits = event.get(CalorimeterHit.class, inputCollection);
@@ -63,11 +62,11 @@
                 viewer.addHit(new EcalHit(hit.getIdentifierFieldValue("ix"), hit.getIdentifierFieldValue("iy"), hit.getRawEnergy()));
             }
         }
-        if (event.hasCollection(HPSEcalCluster.class, clusterCollection)) {
-            List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, clusterCollection);
-            for (HPSEcalCluster cluster : clusters) {
-                CalorimeterHit seedHit = cluster.getSeedHit();
-                eventDisplayCluster = new Cluster(seedHit.getIdentifierFieldValue("ix"), seedHit.getIdentifierFieldValue("iy"), cluster.getEnergy());
+        if (event.hasCollection(Cluster.class, clusterCollection)) {
+            List<Cluster> clusters = event.get(Cluster.class, clusterCollection);
+            for (Cluster cluster : clusters) {
+                CalorimeterHit seedHit = cluster.getCalorimeterHits().get(0);
+                eventDisplayCluster = new org.hps.monitoring.ecal.eventdisplay.event.Cluster(seedHit.getIdentifierFieldValue("ix"), seedHit.getIdentifierFieldValue("iy"), cluster.getEnergy());
                 for (CalorimeterHit hit : cluster.getCalorimeterHits()) {
                     if (hit.getRawEnergy() != 0)
                         eventDisplayCluster.addComponentHit(hit.getIdentifierFieldValue("ix"), hit.getIdentifierFieldValue("iy"));

Modified: java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/io/LCIOManager.java
 =============================================================================
--- java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/io/LCIOManager.java	(original)
+++ java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/io/LCIOManager.java	Tue Jan  6 12:54:22 2015
@@ -7,7 +7,7 @@
 
 import org.hps.monitoring.ecal.eventdisplay.event.Cluster;
 import org.hps.monitoring.ecal.eventdisplay.event.EcalHit;
-import org.hps.recon.ecal.HPSEcalCluster;
+//import org.hps.recon.ecal.HPSEcalCluster;
 import org.lcsim.event.CalorimeterHit;
 import org.lcsim.event.EventHeader;
 import org.lcsim.lcio.LCIOReader;
@@ -88,15 +88,15 @@
         // from the LCIO event.
         else {
             // Check to see if the event has a cluster collection.
-            if(current.hasCollection(HPSEcalCluster.class, clusterCollectionName)) {
+            if(current.hasCollection(org.lcsim.event.Cluster.class, clusterCollectionName)) {
                 // Get the list of LCIO clusters.
-                List<HPSEcalCluster> lcioList = current.get(HPSEcalCluster.class, clusterCollectionName);
+                List<org.lcsim.event.Cluster> lcioList = current.get(org.lcsim.event.Cluster.class, clusterCollectionName);
                 
                 // Create a list to store event display clusters.
                 List<Cluster> displayList = new ArrayList<Cluster>(lcioList.size());
                 
                 // Convert the LCIO clusters to display clusters.
-                for(HPSEcalCluster lcioCluster : lcioList) {
+                for(org.lcsim.event.Cluster lcioCluster : lcioList) {
                     displayList.add(toPanelCluster(lcioCluster));
                 }
                 
@@ -193,13 +193,13 @@
     
     // TODO: LCIO files can't actually store an HPSEcalCluster; this
     // needs to be converted to use regular LCIO clusters instead.
-    public static final Cluster toPanelCluster(HPSEcalCluster lcioCluster) {
+    public static final Cluster toPanelCluster(org.lcsim.event.Cluster lcioCluster) {
         // If the argument is null, return null.
         if(lcioCluster == null) { return null; }
         
         // Otherwise, get the cluster x/y indices and energy.
-        int ix = lcioCluster.getSeedHit().getIdentifierFieldValue("ix");
-        int iy = lcioCluster.getSeedHit().getIdentifierFieldValue("iy");
+        int ix = lcioCluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix");
+        int iy = lcioCluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy");
         double energy = lcioCluster.getEnergy();
         
         // Create and return a panel cluster from the above values.

Modified: java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/lcsim/EventDisplayOutputDriver.java
 =============================================================================
--- java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/lcsim/EventDisplayOutputDriver.java	(original)
+++ java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/lcsim/EventDisplayOutputDriver.java	Tue Jan  6 12:54:22 2015
@@ -7,7 +7,7 @@
 
 import org.lcsim.event.CalorimeterHit;
 import org.lcsim.event.EventHeader;
-import org.hps.recon.ecal.HPSEcalCluster;
+//import org.hps.recon.ecal.HPSEcalCluster;
 import org.lcsim.util.Driver;
 
 /**
@@ -50,15 +50,15 @@
      */
     public void process(EventHeader event) {
         // Get the list of clusters.
-        List<HPSEcalCluster> clusters;
+        List<org.lcsim.event.Cluster> clusters;
 
         // If no cluster collection is present, then make an
         // empty list instead to avoid crashes.
         try {
-            clusters = event.get(HPSEcalCluster.class, clusterCollectionName);
+            clusters = event.get(org.lcsim.event.Cluster.class, clusterCollectionName);
             if (clusters == null) { throw new RuntimeException("Missing cluster collection!"); }
         }
-        catch(IllegalArgumentException e) { clusters = new ArrayList<HPSEcalCluster>(0); }
+        catch(IllegalArgumentException e) { clusters = new ArrayList<org.lcsim.event.Cluster>(0); }
         
         // Get the list of calorimeter hits.
         List<CalorimeterHit> hits;
@@ -103,9 +103,9 @@
                 // Only write clusters if the option is selected.
                 if(outputClusters) {
 	                // Process the clusters.
-	                for (HPSEcalCluster cluster : clusters) {
+	                for (org.lcsim.event.Cluster cluster : clusters) {
 	                    // Get the seed hit for the cluster.
-	                    CalorimeterHit seedHit = (CalorimeterHit)cluster.getSeedHit();
+	                    CalorimeterHit seedHit = (CalorimeterHit)cluster.getCalorimeterHits().get(0);
 	                    int ix = seedHit.getIdentifierFieldValue("ix");
 	                    int iy = seedHit.getIdentifierFieldValue("iy");
 	                    double time = seedHit.getTime();

Modified: java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/lcsim/LCIOBridgeDriver.java
 =============================================================================
--- java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/lcsim/LCIOBridgeDriver.java	(original)
+++ java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/lcsim/LCIOBridgeDriver.java	Tue Jan  6 12:54:22 2015
@@ -5,7 +5,6 @@
 import org.hps.monitoring.ecal.eventdisplay.event.Cluster;
 import org.hps.monitoring.ecal.eventdisplay.event.EcalHit;
 import org.hps.monitoring.ecal.eventdisplay.ui.PEventViewer;
-import org.hps.recon.ecal.HPSEcalCluster;
 import org.lcsim.event.CalorimeterHit;
 import org.lcsim.event.EventHeader;
 import org.lcsim.util.Driver;
@@ -49,7 +48,7 @@
             List<CalorimeterHit> hits = event.get(CalorimeterHit.class, ecalCollectionName);
             
             // Define a list of clusters from the event.
-            List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, clusterCollectionName);
+            List<org.lcsim.event.Cluster> clusters = event.get(org.lcsim.event.Cluster.class, clusterCollectionName);
             
             // Increment the number of events we have seen.
             eventsProcessed++;
@@ -74,12 +73,12 @@
             	}
             	
             	// Add all the clusters.
-            	for(HPSEcalCluster cluster : clusters) {
+            	for(org.lcsim.event.Cluster cluster : clusters) {
             		// Get the seed hit.
-            		CalorimeterHit seed = cluster.getSeedHit();
+            		CalorimeterHit seed = cluster.getCalorimeterHits().get(0);
             		int ix = seed.getIdentifierFieldValue("ix");
             		int iy = seed.getIdentifierFieldValue("iy");
-            		double energy = seed.getRawEnergy();
+            		double energy = seed.getRawEnergy(); // FIXME: Should this be getCorrectedEnergy() instead? --JM
             		
             		// Add the cluster center to the event display.
             		Cluster cc = new Cluster(ix, iy, energy);

Modified: java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/PEventViewer.java
 =============================================================================
--- java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/PEventViewer.java	(original)
+++ java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/PEventViewer.java	Tue Jan  6 12:54:22 2015
@@ -32,7 +32,7 @@
     public void addCluster(Cluster cluster) { clusterList.add(cluster); }
     
     @Override
-    public void addCluster(HPSEcalCluster lcioCluster) { clusterList.add(toPanelCluster(lcioCluster)); }
+    public void addCluster(org.lcsim.event.Cluster lcioCluster) { clusterList.add(toPanelCluster(lcioCluster)); }
     
     /**
      * Removes all of the hit data from the viewer.

Modified: java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/POccupancyViewer.java
 =============================================================================
--- java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/POccupancyViewer.java	(original)
+++ java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/POccupancyViewer.java	Tue Jan  6 12:54:22 2015
@@ -72,7 +72,7 @@
      * <b>Note:</b> This operation is not supported for occupancies.
      */
     @Override
-    public void addCluster(HPSEcalCluster cluster) { }
+    public void addCluster(org.lcsim.event.Cluster cluster) { }
     
     /**
      * Removes a hit from the display.

Modified: java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/PassiveViewer.java
 =============================================================================
--- java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/PassiveViewer.java	(original)
+++ java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/PassiveViewer.java	Tue Jan  6 12:54:22 2015
@@ -2,8 +2,9 @@
 
 import org.hps.monitoring.ecal.eventdisplay.event.Cluster;
 import org.hps.monitoring.ecal.eventdisplay.event.EcalHit;
-import org.hps.recon.ecal.HPSEcalCluster;
 import org.hps.recon.ecal.HPSEcalClusterIC;
+//import org.hps.recon.ecal.HPSEcalCluster;
+//import org.hps.recon.ecal.HPSEcalClusterIC;
 import org.lcsim.event.CalorimeterHit;
 
 /**
@@ -38,7 +39,7 @@
      * Adds a new cluster to the display.
      * @param cluster - The cluster to be added.
      */
-    public abstract void addCluster(HPSEcalCluster cluster);
+    public abstract void addCluster(org.lcsim.event.Cluster cluster);
     
     /**
      * Clears any hits or clusters that have been added to the viewer.
@@ -79,10 +80,10 @@
      * @return Returns the argument cluster as a <code>Cluster</code>
      * object that can be used with the <code>Viewer</code>.
      */
-    public static final Cluster toPanelCluster(HPSEcalCluster lcioCluster) {
+    public static final Cluster toPanelCluster(org.lcsim.event.Cluster lcioCluster) {
         // Get the cluster data from the LCIO cluster.
-        int ix = lcioCluster.getSeedHit().getIdentifierFieldValue("ix");
-        int iy = lcioCluster.getSeedHit().getIdentifierFieldValue("iy");
+        int ix = lcioCluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix");
+        int iy = lcioCluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy");
         double energy = lcioCluster.getEnergy();
         
         // Generate a new cluster.
@@ -90,6 +91,7 @@
         
         // If this is an IC cluster, cast it so that shared hits can
         // be properly displayed.
+        // FIXME: This should be changed to use the standard LCSim Cluster interface.  --JM
         if(lcioCluster instanceof HPSEcalClusterIC) {
         	// Cast the cluster object.
         	HPSEcalClusterIC icCluster = (HPSEcalClusterIC) lcioCluster;

Modified: java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/FADCPrimaryTriggerDriver.java
 =============================================================================
--- java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/FADCPrimaryTriggerDriver.java	(original)
+++ java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/FADCPrimaryTriggerDriver.java	Tue Jan  6 12:54:22 2015
@@ -12,7 +12,7 @@
 import java.util.Queue;
 
 import org.hps.recon.ecal.ECalUtils;
-import org.hps.recon.ecal.HPSEcalCluster;
+import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
 import org.lcsim.util.aida.AIDA;
 
@@ -54,8 +54,8 @@
     // ==================================================================
     // ==== Driver Internal Variables ===================================
     // ==================================================================
-    private Queue<List<HPSEcalCluster>> topClusterQueue = null;    // Store clusters on the top half of the calorimeter.
-    private Queue<List<HPSEcalCluster>> botClusterQueue = null;    // Store clusters on the bottom half of the calorimeter.
+    private Queue<List<Cluster>> topClusterQueue = null;    // Store clusters on the top half of the calorimeter.
+    private Queue<List<Cluster>> botClusterQueue = null;    // Store clusters on the bottom half of the calorimeter.
     private int allClusters = 0;                                   // Track the number of clusters processed.
     private int allPairs = 0;                                      // Track the number of cluster pairs processed.
     private int clusterTotalEnergyCount = 0;                       // Track the clusters which pass the total energy cut.
@@ -160,27 +160,27 @@
     @Override
     public void process(EventHeader event) {
         // Process the list of clusters for the event, if it exists.
-        if (event.hasCollection(HPSEcalCluster.class, clusterCollectionName)) {
+        if (event.hasCollection(Cluster.class, clusterCollectionName)) {
             // Get the collection of clusters.
-            List<HPSEcalCluster> clusterList = event.get(HPSEcalCluster.class, clusterCollectionName);
+            List<Cluster> clusterList = event.get(Cluster.class, clusterCollectionName);
             
             // Create a list to hold clusters which pass the single
             // cluster cuts.
-            List<HPSEcalCluster> goodClusterList = new ArrayList<HPSEcalCluster>(clusterList.size());
+            List<Cluster> goodClusterList = new ArrayList<Cluster>(clusterList.size());
             
             // Sort through the cluster list and add clusters that pass
             // the single cluster cuts to the good list.
             clusterLoop:
-            for(HPSEcalCluster cluster : clusterList) {
+            for(Cluster cluster : clusterList) {
                 // Increment the number of processed clusters.
                 allClusters++;
                 
                 // Get the cluster plot values.
                 int hitCount = cluster.getCalorimeterHits().size();
-                double seedEnergy = cluster.getSeedHit().getCorrectedEnergy();
+                double seedEnergy = cluster.getCalorimeterHits().get(0).getCorrectedEnergy();
                 double clusterEnergy = cluster.getEnergy();
-                int ix = cluster.getSeedHit().getIdentifierFieldValue("ix");
-                int iy = cluster.getSeedHit().getIdentifierFieldValue("iy");
+                int ix = cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix");
+                int iy = cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy");
                 channel.x = ix;
                 channel.y = iy;
                 
@@ -424,19 +424,19 @@
         }
         
         // Initialize the top and bottom cluster queues.
-        topClusterQueue = new LinkedList<List<HPSEcalCluster>>();
-        botClusterQueue = new LinkedList<List<HPSEcalCluster>>();
+        topClusterQueue = new LinkedList<List<Cluster>>();
+        botClusterQueue = new LinkedList<List<Cluster>>();
         
         // Populate the top cluster queue. It should be populated with
         // a number of empty lists equal to (2 * pairCoincidence + 1).
         for (int i = 0; i < 2 * pairCoincidence + 1; i++) {
-            topClusterQueue.add(new ArrayList<HPSEcalCluster>());
+            topClusterQueue.add(new ArrayList<Cluster>());
         }
         
         // Populate the bottom cluster queue. It should be populated with
         // a number of empty lists equal to (2 * pairCoincidence + 1).
         for (int i = 0; i < pairCoincidence + 1; i++) {
-            botClusterQueue.add(new ArrayList<HPSEcalCluster>());
+            botClusterQueue.add(new ArrayList<Cluster>());
         }
         
         // If a background level has been set, pick the correct cuts.
@@ -463,31 +463,31 @@
 
     /**
      * Get a list of all unique cluster pairs in the event.
-     * @return A <code>List</code> collection of <code>HPSEcalCLuster
-     * </code> objects containing all cluster pairs.
-     */
-    protected List<HPSEcalCluster[]> getClusterPairsTopBot() {
+     * @return A <code>List</code> collection of <code>Cluster</code> 
+     * objects containing all cluster pairs.
+     */
+    protected List<Cluster[]> getClusterPairsTopBot() {
         // Create a list to store cluster pairs. 
-        List<HPSEcalCluster[]> clusterPairs = new ArrayList<HPSEcalCluster[]>();
+        List<Cluster[]> clusterPairs = new ArrayList<Cluster[]>();
         
         // Loop over all top-bottom pairs of clusters; higher-energy cluster goes first in the pair
         // To apply pair coincidence time, use only bottom clusters from the 
         // readout cycle pairCoincidence readout cycles ago, and top clusters 
         // from all 2*pairCoincidence+1 previous readout cycles
-        for (HPSEcalCluster botCluster : botClusterQueue.element()) {
-            for (List<HPSEcalCluster> topClusters : topClusterQueue) {
-                for (HPSEcalCluster topCluster : topClusters) {
+        for (Cluster botCluster : botClusterQueue.element()) {
+            for (List<Cluster> topClusters : topClusterQueue) {
+                for (Cluster topCluster : topClusters) {
                     // The first cluster in a pair should always be
                     // the higher energy cluster. If the top cluster
                     // is higher energy, it goes first.
                     if (topCluster.getEnergy() > botCluster.getEnergy()) {
-                        HPSEcalCluster[] clusterPair = {topCluster, botCluster};
+                        Cluster[] clusterPair = {topCluster, botCluster};
                         clusterPairs.add(clusterPair);
                     }
                     
                     // Otherwise, the bottom cluster goes first.
                     else {
-                        HPSEcalCluster[] clusterPair = {botCluster, topCluster};
+                        Cluster[] clusterPair = {botCluster, topCluster};
                         clusterPairs.add(clusterPair);
                     }
                 }
@@ -507,7 +507,7 @@
     protected boolean triggerDecision(EventHeader event) {
         // If there is a list of clusters present for this event,
         // check whether it passes the trigger conditions.
-        if (event.hasCollection(HPSEcalCluster.class, clusterCollectionName)) {
+        if (event.hasCollection(Cluster.class, clusterCollectionName)) {
             return testTrigger();
         }
         
@@ -603,13 +603,13 @@
      */
     private boolean testTrigger() {
         // Get the list of cluster pairs.
-        List<HPSEcalCluster[]> clusterPairs = getClusterPairsTopBot();
+        List<Cluster[]> clusterPairs = getClusterPairsTopBot();
         
         // Iterate over the cluster pairs and perform each of the cluster
         // pair cuts on them. A cluster pair that passes all of the
         // cuts registers as a trigger.
         pairLoop:
-        for (HPSEcalCluster[] clusterPair : clusterPairs) {
+        for (Cluster[] clusterPair : clusterPairs) {
             // Increment the number of processed cluster pairs.
             allPairs++;
             
@@ -676,10 +676,10 @@
             int[] iy = new int[2];
             for(int i = 0; i < 2; i++) {
                 hitCount[i] = clusterPair[i].getCalorimeterHits().size();
-                seedEnergy[i] = clusterPair[i].getSeedHit().getCorrectedEnergy();
+                seedEnergy[i] = clusterPair[i].getCalorimeterHits().get(0).getCorrectedEnergy();
                 clusterEnergy[i] = clusterPair[i].getEnergy();
-                ix[i] = clusterPair[i].getSeedHit().getIdentifierFieldValue("ix");
-                iy[i] = clusterPair[i].getSeedHit().getIdentifierFieldValue("iy");
+                ix[i] = clusterPair[i].getCalorimeterHits().get(0).getIdentifierFieldValue("ix");
+                iy[i] = clusterPair[i].getCalorimeterHits().get(0).getIdentifierFieldValue("iy");
                 if(ix[i] > 0) { ix[i] = ix[i] - 1; }
             }
             
@@ -711,16 +711,16 @@
      * queues so that they may be formed into pairs.
      * @param clusterList - The clusters to add to the queues.
      */
-    private void updateClusterQueues(List<HPSEcalCluster> clusterList) {
+    private void updateClusterQueues(List<Cluster> clusterList) {
         // Create lists to store the top and bottom clusters.
-        ArrayList<HPSEcalCluster> topClusterList = new ArrayList<HPSEcalCluster>();
-        ArrayList<HPSEcalCluster> botClusterList = new ArrayList<HPSEcalCluster>();
+        ArrayList<Cluster> topClusterList = new ArrayList<Cluster>();
+        ArrayList<Cluster> botClusterList = new ArrayList<Cluster>();
         
         // Loop over the clusters in the cluster list.
-        for (HPSEcalCluster cluster : clusterList) {
+        for (Cluster cluster : clusterList) {
             // If the cluster is on the top of the calorimeter, it
             // goes into the top cluster list.
-            if (cluster.getSeedHit().getIdentifierFieldValue("iy") > 0) {
+            if (cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy") > 0) {
                 topClusterList.add(cluster);
             }
             

Modified: java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/FADCTriggerDriver.java
 =============================================================================
--- java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/FADCTriggerDriver.java	(original)
+++ java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/FADCTriggerDriver.java	Tue Jan  6 12:54:22 2015
@@ -2,8 +2,8 @@
 
 import hep.aida.IHistogram1D;
 import hep.aida.IHistogram2D;
+
 import java.io.IOException;
-
 import java.io.PrintWriter;
 import java.util.ArrayList;
 import java.util.EnumSet;
@@ -12,7 +12,6 @@
 import java.util.Queue;
 
 import org.hps.recon.ecal.ECalUtils;
-import org.hps.recon.ecal.HPSEcalCluster;
 import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
 import org.lcsim.geometry.Detector;
@@ -62,8 +61,8 @@
     protected String clusterCollectionName = "EcalClusters";
     // FIFO queues of lists of clusters in each ECal half.
     // Each list corresponds to one readout cycle.
-    private Queue<List<HPSEcalCluster>> topClusterQueue = null;
-    private Queue<List<HPSEcalCluster>> botClusterQueue = null;
+    private Queue<List<Cluster>> topClusterQueue = null;
+    private Queue<List<Cluster>> botClusterQueue = null;
     PrintWriter pairWriter;
 
     private enum Flag {
@@ -276,13 +275,13 @@
     @Override
     public void startOfData() {
         //initialize queues and fill with empty lists
-        topClusterQueue = new LinkedList<List<HPSEcalCluster>>();
-        botClusterQueue = new LinkedList<List<HPSEcalCluster>>();
+        topClusterQueue = new LinkedList<List<Cluster>>();
+        botClusterQueue = new LinkedList<List<Cluster>>();
         for (int i = 0; i < 2 * pairCoincidence + 1; i++) {
-            topClusterQueue.add(new ArrayList<HPSEcalCluster>());
+            topClusterQueue.add(new ArrayList<Cluster>());
         }
         for (int i = 0; i < pairCoincidence + 1; i++) {
-            botClusterQueue.add(new ArrayList<HPSEcalCluster>());
+            botClusterQueue.add(new ArrayList<Cluster>());
         }
         super.startOfData();
         if (clusterCollectionName == null) {
@@ -300,19 +299,19 @@
 
     @Override
     public void process(EventHeader event) {
-        if (event.hasCollection(HPSEcalCluster.class, clusterCollectionName)) {
+        if (event.hasCollection(Cluster.class, clusterCollectionName)) {
             // this needs to run every readout cycle whether or not trigger is live
-            updateClusterQueues(event.get(HPSEcalCluster.class, clusterCollectionName));
+            updateClusterQueues(event.get(Cluster.class, clusterCollectionName));
 
             if (pairWriter != null) {
-                List<HPSEcalCluster[]> clusterPairs = getClusterPairsTopBot();
-                for (HPSEcalCluster[] pair : clusterPairs) {
+                List<Cluster[]> clusterPairs = getClusterPairsTopBot();
+                for (Cluster[] pair : clusterPairs) {
                     pairWriter.format("%d\t", ClockSingleton.getClock());
-                    for (HPSEcalCluster cluster : pair) {
-                        pairWriter.format("%f\t", cluster.getSeedHit().getTime());
-                        pairWriter.format("%f\t", cluster.getSeedHit().getRawEnergy());
-                        pairWriter.format("%d\t", cluster.getSeedHit().getIdentifierFieldValue("ix"));
-                        pairWriter.format("%d\t", cluster.getSeedHit().getIdentifierFieldValue("iy"));
+                    for (Cluster cluster : pair) {
+                        pairWriter.format("%f\t", cluster.getCalorimeterHits().get(0).getTime());
+                        pairWriter.format("%f\t", cluster.getCalorimeterHits().get(0).getRawEnergy());
+                        pairWriter.format("%d\t", cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix"));
+                        pairWriter.format("%d\t", cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy"));
                         pairWriter.format("%d\t", cluster.getSize());
                         pairWriter.format("%f\t", cluster.getEnergy());
                         pairWriter.format("%f\t", getClusterAngle(cluster));
@@ -329,7 +328,7 @@
     @Override
     protected boolean triggerDecision(EventHeader event) {
         // Get the list of raw ECal hits.
-        if (event.hasCollection(HPSEcalCluster.class, clusterCollectionName)) {
+        if (event.hasCollection(Cluster.class, clusterCollectionName)) {
             return testTrigger();
         } else {
             return false;
@@ -339,22 +338,22 @@
     public boolean testTrigger() {
         boolean trigger = false;
 
-        List<HPSEcalCluster[]> clusterPairs = getClusterPairsTopBot();
+        List<Cluster[]> clusterPairs = getClusterPairsTopBot();
 
         //--- Apply Trigger Cuts ---//
 
         // Iterate through all cluster pairs present in the event.  If at least
         // one of the cluster pairs satisfies all of the trigger conditions,
         // a trigger signal is sent to all other detectors.
-        for (HPSEcalCluster[] clusterPair : clusterPairs) {
+        for (Cluster[] clusterPair : clusterPairs) {
 
             EnumSet<Flag> bits = EnumSet.noneOf(Flag.class);
 
             if (outputStream != null) {
                 outputStream.printf("Event %d: cluster pair (energy %f in quadrant %d (%s), energy %f in quadrant %d (%s))\n",
                         ClockSingleton.getClock(),
-                        clusterPair[0].getEnergy(), ECalUtils.getQuadrant(clusterPair[0]), clusterPair[0].getSeedHit().getPositionVec().toString(),
-                        clusterPair[1].getEnergy(), ECalUtils.getQuadrant(clusterPair[1]), clusterPair[1].getSeedHit().getPositionVec().toString());
+                        clusterPair[0].getEnergy(), ECalUtils.getQuadrant(clusterPair[0]), clusterPair[0].getCalorimeterHits().get(0).getPositionVec().toString(),
+                        clusterPair[1].getEnergy(), ECalUtils.getQuadrant(clusterPair[1]), clusterPair[1].getCalorimeterHits().get(0).getPositionVec().toString());
             }
 
             allPairs++;
@@ -467,9 +466,9 @@
                 }
                 trigger = true;
 
-                for (HPSEcalCluster cluster : clusterPair) {
-                    int ix = cluster.getSeedHit().getIdentifierFieldValue("ix");
-                    int iy = cluster.getSeedHit().getIdentifierFieldValue("iy");
+                for (Cluster cluster : clusterPair) {
+                    int ix = cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix");
+                    int iy = cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy");
                     trigClusterSeeds.fill(ix - 0.5 * Math.signum(ix), iy);
                 }
             }
@@ -508,19 +507,19 @@
         writer.close();
     }
 
-    protected void updateClusterQueues(List<HPSEcalCluster> ecalClusters) {
-        ArrayList<HPSEcalCluster> topClusterList = new ArrayList<HPSEcalCluster>();
-        ArrayList<HPSEcalCluster> botClusterList = new ArrayList<HPSEcalCluster>();
-        for (HPSEcalCluster ecalCluster : ecalClusters) {
-//            System.out.format("add cluster\t%f\t%d\n", ecalCluster.getSeedHit().getTime(), ecalCluster.getSeedHit().getIdentifierFieldValue("iy"));
-            if (ecalCluster.getSeedHit().getIdentifierFieldValue("iy") > 0) {
+    protected void updateClusterQueues(List<Cluster> ecalClusters) {
+        ArrayList<Cluster> topClusterList = new ArrayList<Cluster>();
+        ArrayList<Cluster> botClusterList = new ArrayList<Cluster>();
+        for (Cluster ecalCluster : ecalClusters) {
+//            System.out.format("add cluster\t%f\t%d\n", ecalCluster.getCalorimeterHits().get(0).getTime(), ecalCluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy"));
+            if (ecalCluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy") > 0) {
                 topClusterList.add(ecalCluster);
             } else {
                 botClusterList.add(ecalCluster);
             }
 
-            int ix = ecalCluster.getSeedHit().getIdentifierFieldValue("ix");
-            int iy = ecalCluster.getSeedHit().getIdentifierFieldValue("iy");
+            int ix = ecalCluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix");
+            int iy = ecalCluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy");
             clusterSeeds.fill(ix - 0.5 * Math.signum(ix), iy);
         }
 
@@ -536,23 +535,23 @@
      * @param ecalClusters : List of ECal clusters
      * @return list of cluster pairs
      */
-    protected List<HPSEcalCluster[]> getClusterPairsTopBot() {
+    protected List<Cluster[]> getClusterPairsTopBot() {
         // Make a list of cluster pairs
-        List<HPSEcalCluster[]> clusterPairs = new ArrayList<HPSEcalCluster[]>();
+        List<Cluster[]> clusterPairs = new ArrayList<Cluster[]>();
 
         // Loop over all top-bottom pairs of clusters; higher-energy cluster goes first in the pair
         // To apply pair coincidence time, use only bottom clusters from the 
         // readout cycle pairCoincidence readout cycles ago, and top clusters 
         // from all 2*pairCoincidence+1 previous readout cycles
-        for (HPSEcalCluster botCluster : botClusterQueue.element()) {
-            for (List<HPSEcalCluster> topClusters : topClusterQueue) {
-                for (HPSEcalCluster topCluster : topClusters) {
-//                    System.out.format("%f\t%f\n", topCluster.getSeedHit().getTime(), botCluster.getSeedHit().getTime());
+        for (Cluster botCluster : botClusterQueue.element()) {
+            for (List<Cluster> topClusters : topClusterQueue) {
+                for (Cluster topCluster : topClusters) {
+//                    System.out.format("%f\t%f\n", topCluster.getCalorimeterHits().get(0).getTime(), botCluster.getCalorimeterHits().get(0).getTime());
                     if (topCluster.getEnergy() > botCluster.getEnergy()) {
-                        HPSEcalCluster[] clusterPair = {topCluster, botCluster};
+                        Cluster[] clusterPair = {topCluster, botCluster};
                         clusterPairs.add(clusterPair);
                     } else {
-                        HPSEcalCluster[] clusterPair = {botCluster, topCluster};
+                        Cluster[] clusterPair = {botCluster, topCluster};
                         clusterPairs.add(clusterPair);
                     }
                 }
@@ -568,7 +567,7 @@
      * @param clusterPair : pair of clusters
      * @return true if opposite quadrants, false otherwise
      */
-    protected boolean oppositeQuadrantsCut(HPSEcalCluster[] clusterPair) {
+    protected boolean oppositeQuadrantsCut(Cluster[] clusterPair) {
         int quad1 = ECalUtils.getQuadrant(clusterPair[0]);
         int quad2 = ECalUtils.getQuadrant(clusterPair[1]);
 
@@ -588,7 +587,7 @@
      * @param clusterPair: pair of clusters
      * @return true if pair passes cut, false if fail
      */
-    protected boolean clusterHitCount(HPSEcalCluster[] clusterPair) {
+    protected boolean clusterHitCount(Cluster[] clusterPair) {
         return (clusterPair[0].getCalorimeterHits().size() >= minHitCount
                 && clusterPair[1].getCalorimeterHits().size() >= minHitCount);
     }
@@ -600,7 +599,7 @@
      * @param clusterPair : pair of clusters
      * @return true if a pair is found, false otherwise
      */
-    protected boolean clusterECut(HPSEcalCluster[] clusterPair) {
+    protected boolean clusterECut(Cluster[] clusterPair) {
         return (clusterPair[0].getEnergy() < clusterEnergyHigh
                 && clusterPair[1].getEnergy() < clusterEnergyHigh
                 && clusterPair[0].getEnergy() > clusterEnergyLow
@@ -626,7 +625,7 @@
      * @param clusterPair : pair of clusters
      * @return true if pair is found, false otherwise
      */
-    protected boolean energyDifference(HPSEcalCluster[] clusterPair) {
+    protected boolean energyDifference(Cluster[] clusterPair) {
         double clusterEDifference = clusterPair[0].getEnergy() - clusterPair[1].getEnergy();
 
         return (clusterEDifference < energyDifferenceThreshold);
@@ -639,8 +638,8 @@
      * @param clusterPair : pair of clusters
      * @return true if pair is found, false otherwise
      */
-    protected boolean energyDistanceCut(HPSEcalCluster[] clusterPair) {
-        HPSEcalCluster lowEnergyCluster = clusterPair[1];
+    protected boolean energyDistanceCut(Cluster[] clusterPair) {
+        Cluster lowEnergyCluster = clusterPair[1];
 
         // Calculate its position
         double lowEClusterDistance = getClusterDistance(clusterPair[1]);
@@ -656,23 +655,23 @@
      * @param clusterPair : pair of clusters
      * @return true if pair is found, false otherwise
      */
-    protected boolean coplanarityCut(HPSEcalCluster[] clusterPair) {
+    protected boolean coplanarityCut(Cluster[] clusterPair) {
         return (Math.abs(pairUncoplanarity(clusterPair)) < maxCoplanarityAngle);
     }
 
-    protected double pairUncoplanarity(HPSEcalCluster[] clusterPair) { // Find the angle between clusters in the pair
+    protected double pairUncoplanarity(Cluster[] clusterPair) { // Find the angle between clusters in the pair
         double cluster1Angle = (getClusterAngle(clusterPair[0]) + 180.0) % 180.0;
         double cluster2Angle = (getClusterAngle(clusterPair[1]) + 180.0) % 180.0;
 
         return cluster2Angle - cluster1Angle;
     }
 
-    protected double getClusterAngle(HPSEcalCluster cluster) { //returns angle in range of -180 to 180
-        double position[] = cluster.getSeedHit().getPosition();
+    protected double getClusterAngle(Cluster cluster) { //returns angle in range of -180 to 180
+        double position[] = cluster.getCalorimeterHits().get(0).getPosition();
         return Math.toDegrees(Math.atan2(position[1], position[0] - originX));
     }
 
-    protected double getClusterDistance(HPSEcalCluster cluster) {
-        return Math.hypot(cluster.getSeedHit().getPosition()[0] - originX, cluster.getSeedHit().getPosition()[1]);
+    protected double getClusterDistance(Cluster cluster) {
+        return Math.hypot(cluster.getCalorimeterHits().get(0).getPosition()[0] - originX, cluster.getCalorimeterHits().get(0).getPosition()[1]);
     }
 }

Modified: java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/FADCTriggerVariableDriver.java
 =============================================================================
--- java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/FADCTriggerVariableDriver.java	(original)
+++ java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/FADCTriggerVariableDriver.java	Tue Jan  6 12:54:22 2015
@@ -11,7 +11,7 @@
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import org.hps.recon.ecal.HPSEcalCluster;
+import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
 import org.lcsim.geometry.Detector;
 
@@ -56,40 +56,40 @@
     public void process(EventHeader event) {
     //    super.process(event);
 
-        if (event.hasCollection(HPSEcalCluster.class, clusterCollectionName)) {
+        if (event.hasCollection(Cluster.class, clusterCollectionName)) {
 
 
-            List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, clusterCollectionName);
+            List<Cluster> clusters = event.get(Cluster.class, clusterCollectionName);
 
             //System.out.printf("%d ecal clusters in event\n", clusters.size());
             //System.out.printf("%s: %d clusters\n",this.getClass().getSimpleName(),clusters.size());
-        	//for(HPSEcalCluster cl : clusters) {
+        	//for(Cluster cl : clusters) {
         	//	System.out.printf("%s: cl E %f x %f y %f \n",this.getClass().getSimpleName(),cl.getEnergy(),cl.getPosition()[0],cl.getPosition()[1]);
         	//}
-        	List<HPSEcalCluster> unique_clusters = this.getUniqueClusters(clusters);
+        	List<Cluster> unique_clusters = this.getUniqueClusters(clusters);
         	//System.out.printf("%s: %d unique clusters\n",this.getClass().getSimpleName(),unique_clusters.size());
-        	//for(HPSEcalCluster cl : unique_clusters) {
+        	//for(Cluster cl : unique_clusters) {
         	//	System.out.printf("%s: cl E %f x %f y %f \n",this.getClass().getSimpleName(),cl.getEnergy(),cl.getPosition()[0],cl.getPosition()[1]);
         	//}
 
             updateClusterQueues(unique_clusters);
-            List<HPSEcalCluster[]> clusterPairs = getClusterPairsTopBot();
+            List<Cluster[]> clusterPairs = getClusterPairsTopBot();
             boolean foundClusterPairs = !clusterPairs.isEmpty();
 
             if (foundClusterPairs) {
 
             int ipair = 0;
-            for(HPSEcalCluster[] pair : clusterPairs) {
+            for(Cluster[] pair : clusterPairs) {
             
                 String evString = String.format("%d %f %d ", event.getEventNumber(),this.beamEnergy,ipair);
                 for(int icluster = 0; icluster!=2; icluster++ ) {
                     
-                    HPSEcalCluster cluster = pair[icluster];
+                    Cluster cluster = pair[icluster];
                     
                     //int quad = ECalUtils.getQuadrant(cluster);
                     double E = cluster.getEnergy();
-                    double pos[] = cluster.getSeedHit().getPosition();
-                    //System.out.printf("x %f y %f ix %d iy %d \n", pos[0], pos[1], cluster.getSeedHit().getIdentifierFieldValue("ix"), cluster.getSeedHit().getIdentifierFieldValue("iy"));
+                    double pos[] = cluster.getCalorimeterHits().get(0).getPosition();
+                    //System.out.printf("x %f y %f ix %d iy %d \n", pos[0], pos[1], cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix"), cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy"));
                     
                     evString += String.format("%f %f %f ", E, pos[0], pos[1]);
                 }
@@ -121,12 +121,12 @@
 
     
     
-    private List<HPSEcalCluster> getUniqueClusters(List<HPSEcalCluster> clusters) {
-    	List<HPSEcalCluster> unique = new ArrayList<HPSEcalCluster>();
-    	for(HPSEcalCluster loop_cl : clusters) {
-			HPSEcalClusterCmp loop_clCmp = new HPSEcalClusterCmp(loop_cl);
+    private List<Cluster> getUniqueClusters(List<Cluster> clusters) {
+    	List<Cluster> unique = new ArrayList<Cluster>();
+    	for(Cluster loop_cl : clusters) {
+			ClusterCmp loop_clCmp = new ClusterCmp(loop_cl);
     		boolean found = false;
-			for(HPSEcalCluster cl : unique) {
+			for(Cluster cl : unique) {
     			if( loop_clCmp.compareTo(cl) == 0 ) {
     				found = true;
     			}
@@ -139,13 +139,13 @@
     }
 
 
-    private static class HPSEcalClusterCmp implements Comparable<HPSEcalCluster> {
-    	private HPSEcalCluster _cluster;
-		public HPSEcalClusterCmp(HPSEcalCluster cl) {
+    private static class ClusterCmp implements Comparable<Cluster> {
+    	private Cluster _cluster;
+		public ClusterCmp(Cluster cl) {
 			set_cluster(cl);
 		}
 		@Override
-		public int compareTo(HPSEcalCluster cl) {
+		public int compareTo(Cluster cl) {
 				if(cl.getEnergy()==get_cluster().getEnergy() && cl.getPosition()[0]==get_cluster().getPosition()[0] && cl.getPosition()[1]==get_cluster().getPosition()[1] ) {
 					return 0;
 				} else {
@@ -156,10 +156,10 @@
 					}
 				}
 		}
-		public HPSEcalCluster get_cluster() {
+		public Cluster get_cluster() {
 			return _cluster;
 		}
-		public void set_cluster(HPSEcalCluster _cluster) {
+		public void set_cluster(Cluster _cluster) {
 			this._cluster = _cluster;
 		}
     	

Modified: java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/MollerTriggerDriver.java
 =============================================================================
--- java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/MollerTriggerDriver.java	(original)
+++ java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/MollerTriggerDriver.java	Tue Jan  6 12:54:22 2015
@@ -8,7 +8,7 @@
 import java.util.List;
 import java.util.Set;
 
-import org.hps.recon.ecal.HPSEcalCluster;
+import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
 import org.lcsim.util.aida.AIDA;
 
@@ -117,7 +117,7 @@
         // Check if there is a cluster collection. If not, there is no
         // reason to continue; a trigger can not be produced if there
         // are no clusters.
-        if(!event.hasCollection(HPSEcalCluster.class, clusterCollectionName)) {
+        if(!event.hasCollection(Cluster.class, clusterCollectionName)) {
             // VERBOSE :: Note that no cluster collection exists for
             //            this event.
             if(verbose) { System.out.println("No cluster collection is present for event."); }
@@ -131,7 +131,7 @@
         if(verbose) { System.out.println("Cluster collection is present for event."); }
         
         // Get the cluster list from the event.
-        List<HPSEcalCluster> eventList = event.get(HPSEcalCluster.class, clusterCollectionName);
+        List<Cluster> eventList = event.get(Cluster.class, clusterCollectionName);
         
         // VERBOSE :: Output the number of extant clusters.
         if(verbose) { System.out.printf("%d clusters in event.%n", eventList.size()); }
@@ -139,29 +139,29 @@
         // Add the clusters from the event into the cluster list
         // if they pass the minimum total cluster energy and seed
         // energy thresholds.
-        for(HPSEcalCluster cluster : eventList) {
+        for(Cluster cluster : eventList) {
             // Increment the clusters processed count.
             allClusters++;
             
             // Plot the seed energy / cluster energy histogram.
-            seedPercent.fill(cluster.getSeedHit().getCorrectedEnergy() / cluster.getEnergy(), 1);
+            seedPercent.fill(cluster.getCalorimeterHits().get(0).getCorrectedEnergy() / cluster.getEnergy(), 1);
             
             // Get the cluster position indices.
-            int ix = cluster.getSeedHit().getIdentifierFieldValue("ix");
-            int iy = cluster.getSeedHit().getIdentifierFieldValue("iy");
+            int ix = cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix");
+            int iy = cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy");
             
             // VERBOSE :: Output the current cluster's properties.
             if(verbose) {
                 System.out.printf("\tTesting cluster at (%d, %d) with total energy %f and seed energy %f.%n",
-                        ix, iy, cluster.getSeedHit().getCorrectedEnergy(), cluster.getEnergy());
+                        ix, iy, cluster.getCalorimeterHits().get(0).getCorrectedEnergy(), cluster.getEnergy());
             }
             
             // Add the clusters to the uncut histograms.
             clusterHitCount.fill(cluster.getCalorimeterHits().size());
             clusterTotalEnergy.fill(cluster.getEnergy());
-            clusterSeedEnergy.fill(cluster.getSeedHit().getCorrectedEnergy());
+            clusterSeedEnergy.fill(cluster.getCalorimeterHits().get(0).getCorrectedEnergy());
             clusterDistribution.fill(ix > 0 ? ix - 1 : ix, iy, 1);
-            if(cluster.getSeedHit().getCorrectedEnergy() > 0.100) { clusterDistribution100.fill(ix > 0 ? ix - 1 : ix, iy, 1); }
+            if(cluster.getCalorimeterHits().get(0).getCorrectedEnergy() > 0.100) { clusterDistribution100.fill(ix > 0 ? ix - 1 : ix, iy, 1); }
             
             // VERBOSE :: Output the single cluster trigger thresholds.
             if(verbose) {
@@ -214,7 +214,7 @@
 	                // Add the clusters to the cut histograms.
 	                aClusterHitCount.fill(cluster.getCalorimeterHits().size());
 	                aClusterTotalEnergy.fill(cluster.getEnergy());
-	                aClusterSeedEnergy.fill(cluster.getSeedHit().getCorrectedEnergy());
+	                aClusterSeedEnergy.fill(cluster.getCalorimeterHits().get(0).getCorrectedEnergy());
 	                aClusterDistribution.fill(ix > 0 ? ix - 1 : ix, iy, 1);
 	                
 	                // Increment the trigger count.
@@ -247,7 +247,7 @@
      * @return Returns <code>true</code> if the cluster passes and <code>
      * false</code> if it does not.
      */
-    private boolean clusterHitCountCut(HPSEcalCluster cluster) {
+    private boolean clusterHitCountCut(Cluster cluster) {
         return cluster.getCalorimeterHits().size() >= clusterHitCountThreshold;
     }
     
@@ -258,9 +258,9 @@
      * @return Returns <code>true</code> if the cluster passes and <code>
      * false</code> if it does not.
      */
-    private boolean clusterSeedEnergyCut(HPSEcalCluster cluster) {
+    private boolean clusterSeedEnergyCut(Cluster cluster) {
         // Get the seed energy value.
-        double seedEnergy = cluster.getSeedHit().getCorrectedEnergy();
+        double seedEnergy = cluster.getCalorimeterHits().get(0).getCorrectedEnergy();
         
         // Perform the seed energy cut.
         return seedEnergy >= clusterSeedEnergyThresholdLow && seedEnergy <= clusterSeedEnergyThresholdHigh;
@@ -273,7 +273,7 @@
      * @return Returns <code>true</code> if the cluster passes and <code>
      * false</code> if it does not.
      */
-    private boolean clusterTotalEnergyCut(HPSEcalCluster cluster) {
+    private boolean clusterTotalEnergyCut(Cluster cluster) {
         // Get the cluster energy.
         double clusterEnergy = cluster.getEnergy();
         
@@ -288,10 +288,10 @@
      * @return Returns <code>true</code> if the cluster passes and <code>
      * false</code> if it does not.
      */
-    private boolean clusterPositionCut(HPSEcalCluster cluster) {
+    private boolean clusterPositionCut(Cluster cluster) {
         // Get the cluster position.
-        Point seedLoc =  new Point(cluster.getSeedHit().getIdentifierFieldValue("ix"),
-                cluster.getSeedHit().getIdentifierFieldValue("iy"));
+        Point seedLoc =  new Point(cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix"),
+                cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy"));
         
         // Check if it is one of the allowed seed crystals.
         return allowedSeedSet.contains(seedLoc);
@@ -302,7 +302,7 @@
     // ==================================================================
     
     /**
-     * Sets the LCIO collection name where <code>HPSEcalCluster</code>
+     * Sets the LCIO collection name where <code>Cluster</code>
      * objects are stored for use in the trigger.
      * @param clusterCollectionName - The name of the LCIO collection.
      */
@@ -428,7 +428,7 @@
     private Set<Point> allowedSeedSet = new HashSet<Point>();
     
     /**
-     * The name of the LCIO collection containing <code>HPSEcalCluster
+     * The name of the LCIO collection containing <code>Cluster
      * </code> objects.
      */
     private String clusterCollectionName = "EcalClusters";

Modified: java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/NeutralPionTriggerDriver.java
 =============================================================================
--- java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/NeutralPionTriggerDriver.java	(original)
+++ java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/NeutralPionTriggerDriver.java	Tue Jan  6 12:54:22 2015
@@ -12,10 +12,10 @@
 import java.util.List;
 import java.util.Map;
 
-import org.hps.recon.ecal.HPSEcalCluster;
 import org.lcsim.detector.IGeometryInfo;
 import org.lcsim.detector.solids.Trd;
 import org.lcsim.event.CalorimeterHit;
+import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
 import org.lcsim.util.aida.AIDA;
 
@@ -79,16 +79,16 @@
     public void process(EventHeader event) {
         // Generate a temporary list to store the good clusters
         // in before they are added to the buffer.
-        List<HPSEcalCluster> tempList = new ArrayList<HPSEcalCluster>();
+        List<Cluster> tempList = new ArrayList<Cluster>();
         
         // If the current event has a cluster collection, get it.
-        if(event.hasCollection(HPSEcalCluster.class, clusterCollectionName)) {
+        if(event.hasCollection(Cluster.class, clusterCollectionName)) {
             // VERBOSE :: Note that a cluster collection exists for
             //            this event.
             if(verbose) { System.out.println("Cluster collection is present for event."); }
             
             // Get the cluster list from the event.
-            List<HPSEcalCluster> eventList = event.get(HPSEcalCluster.class, clusterCollectionName);
+            List<Cluster> eventList = event.get(Cluster.class, clusterCollectionName);
             
             // VERBOSE :: Output the number of extant clusters.
             if(verbose) { System.out.printf("%d clusters in event.%n", eventList.size()); }
@@ -96,27 +96,27 @@
             // Add the clusters from the event into the cluster list
             // if they pass the minimum total cluster energy and seed
             // energy thresholds.
-            for(HPSEcalCluster cluster : eventList) {
+            for(Cluster cluster : eventList) {
                 // Increment the clusters processed count.
                 allClusters++;
                 
                 // Plot the seed energy / cluster energy histogram.
-                seedPercent.fill(cluster.getSeedHit().getCorrectedEnergy() / cluster.getEnergy(), 1);
+                seedPercent.fill(cluster.getCalorimeterHits().get(0).getCorrectedEnergy() / cluster.getEnergy(), 1);
                 
                 // Get the cluster position indices.
-                int ix = cluster.getSeedHit().getIdentifierFieldValue("ix");
-                int iy = cluster.getSeedHit().getIdentifierFieldValue("iy");
+                int ix = cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix");
+                int iy = cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy");
                 
                 // VERBOSE :: Output the current cluster's properties.
                 if(verbose) {
                     System.out.printf("\tTesting cluster at (%d, %d) with total energy %f and seed energy %f.%n",
-                            ix, iy, cluster.getSeedHit().getCorrectedEnergy(), cluster.getEnergy());
+                            ix, iy, cluster.getCalorimeterHits().get(0).getCorrectedEnergy(), cluster.getEnergy());
                 }
                 
                 // Add the clusters to the uncut histograms.
                 clusterHitCount.fill(cluster.getCalorimeterHits().size());
                 clusterTotalEnergy.fill(cluster.getEnergy());
-                clusterSeedEnergy.fill(cluster.getSeedHit().getCorrectedEnergy());
+                clusterSeedEnergy.fill(cluster.getCalorimeterHits().get(0).getCorrectedEnergy());
                 clusterDistribution.fill(ix, iy, 1);
                 
                 // VERBOSE :: Output the single cluster trigger thresholds.
@@ -180,7 +180,7 @@
                     // Add the cluster information to the single cut histograms.
                     pClusterHitCount.fill(cluster.getCalorimeterHits().size());
                     pClusterTotalEnergy.fill(cluster.getEnergy());
-                    pClusterSeedEnergy.fill(cluster.getSeedHit().getCorrectedEnergy());
+                    pClusterSeedEnergy.fill(cluster.getCalorimeterHits().get(0).getCorrectedEnergy());
                     pClusterDistribution.fill(ix, iy, 1);
                 }
             }
@@ -204,9 +204,9 @@
         
         // Loop over all of the cluster lists in the cluster buffer.
         double[] energy = { 0.0, 0.0, 0.0 };
-        for(List<HPSEcalCluster> bufferList : clusterBuffer) {
+        for(List<Cluster> bufferList : clusterBuffer) {
             // Loop over all of the clusters in each buffer list.
-            for(HPSEcalCluster cluster : bufferList) {
+            for(Cluster cluster : bufferList) {
                 // If the new cluster is higher energy than the first
                 // slot cluster, move the subsequent clusters down and
                 // insert the new one.
@@ -249,11 +249,11 @@
     
     public void startOfData() {
         // Initialize the cluster buffer to the size of the coincidence window.
-        clusterBuffer = new LinkedList<List<HPSEcalCluster>>();
+        clusterBuffer = new LinkedList<List<Cluster>>();
         
         // Populate the buffer with empty lists.
         for(int i = 0; i < coincidenceWindow; i++) {
-            clusterBuffer.add(new ArrayList<HPSEcalCluster>(0));
+            clusterBuffer.add(new ArrayList<Cluster>(0));
         }
         
         // Initialize the cluster hit count diagnostic plots.
@@ -316,18 +316,18 @@
         allPairs++;
         
         // Get the cluster position indices.
-        int[] ix = { clusterPair[0].getSeedHit().getIdentifierFieldValue("ix"), clusterPair[1].getSeedHit().getIdentifierFieldValue("ix") };
-        int[] iy = { clusterPair[0].getSeedHit().getIdentifierFieldValue("iy"), clusterPair[1].getSeedHit().getIdentifierFieldValue("iy") };
+        int[] ix = { clusterPair[0].getCalorimeterHits().get(0).getIdentifierFieldValue("ix"), clusterPair[1].getCalorimeterHits().get(0).getIdentifierFieldValue("ix") };
+        int[] iy = { clusterPair[0].getCalorimeterHits().get(0).getIdentifierFieldValue("iy"), clusterPair[1].getCalorimeterHits().get(0).getIdentifierFieldValue("iy") };
         
         // VERBOSE :: Output the clusters selected for triggering.
         if(verbose) {
             System.out.printf("\tTesting first cluster at (%d, %d) with total energy %f and seed energy %f.%n",
-                    ix[0], iy[0], clusterPair[0].getSeedHit().getCorrectedEnergy(), clusterPair[0].getEnergy());
+                    ix[0], iy[0], clusterPair[0].getCalorimeterHits().get(0).getCorrectedEnergy(), clusterPair[0].getEnergy());
             System.out.printf("\tTesting second cluster at (%d, %d) with total energy %f and seed energy %f.%n",
-                    ix[1], iy[1], clusterPair[1].getSeedHit().getCorrectedEnergy(), clusterPair[1].getEnergy());
+                    ix[1], iy[1], clusterPair[1].getCalorimeterHits().get(0).getCorrectedEnergy(), clusterPair[1].getEnergy());
             if(useClusterTriplet) {
                 System.out.printf("\tTesting third cluster at (%d, %d) with total energy %f and seed energy %f.%n",
-                        ix[1], iy[1], clusterTriplet[2].getSeedHit().getCorrectedEnergy(), clusterTriplet[2].getEnergy());
+                        ix[1], iy[1], clusterTriplet[2].getCalorimeterHits().get(0).getCorrectedEnergy(), clusterTriplet[2].getEnergy());
             }
         }
         
@@ -371,8 +371,8 @@
                 aClusterHitCount.fill(clusterPair[1].getCalorimeterHits().size());
                 aClusterTotalEnergy.fill(clusterPair[0].getEnergy());
                 aClusterTotalEnergy.fill(clusterPair[1].getEnergy());
-                aClusterSeedEnergy.fill(clusterPair[0].getSeedHit().getCorrectedEnergy());
-                aClusterSeedEnergy.fill(clusterPair[1].getSeedHit().getCorrectedEnergy());
+                aClusterSeedEnergy.fill(clusterPair[0].getCalorimeterHits().get(0).getCorrectedEnergy());
+                aClusterSeedEnergy.fill(clusterPair[1].getCalorimeterHits().get(0).getCorrectedEnergy());
                 aClusterDistribution.fill(ix[0], iy[0], 1);
                 aClusterDistribution.fill(ix[1], iy[1], 1);
                 
@@ -400,8 +400,8 @@
             aClusterHitCount.fill(clusterPair[1].getCalorimeterHits().size());
             aClusterTotalEnergy.fill(clusterPair[0].getEnergy());
             aClusterTotalEnergy.fill(clusterPair[1].getEnergy());
-            aClusterSeedEnergy.fill(clusterPair[0].getSeedHit().getCorrectedEnergy());
-            aClusterSeedEnergy.fill(clusterPair[1].getSeedHit().getCorrectedEnergy());
+            aClusterSeedEnergy.fill(clusterPair[0].getCalorimeterHits().get(0).getCorrectedEnergy());
+            aClusterSeedEnergy.fill(clusterPair[1].getCalorimeterHits().get(0).getCorrectedEnergy());
             aClusterDistribution.fill(ix[0], iy[0], 1);
             aClusterDistribution.fill(ix[1], iy[1], 1);
             
@@ -428,7 +428,7 @@
      * @return Returns <code>true</code> if the cluster passes and <code>
      * false</code> if it does not.
      */
-    private boolean clusterHitCountCut(HPSEcalCluster cluster) {
+    private boolean clusterHitCountCut(Cluster cluster) {
         return cluster.getCalorimeterHits().size() >= clusterHitCountThreshold;
     }
     
@@ -439,9 +439,9 @@
      * @return Returns <code>true</code> if the cluster passes and <code>
      * false</code> if it does not.
      */
-    private boolean clusterSeedEnergyCut(HPSEcalCluster cluster) {
+    private boolean clusterSeedEnergyCut(Cluster cluster) {
         // Get the seed energy value.
-        double seedEnergy = cluster.getSeedHit().getCorrectedEnergy();
+        double seedEnergy = cluster.getCalorimeterHits().get(0).getCorrectedEnergy();
         
         // Perform the seed energy cut.
         return seedEnergy >= clusterSeedEnergyThresholdLow && seedEnergy <= clusterSeedEnergyThresholdHigh;
@@ -454,7 +454,7 @@
      * @return Returns <code>true</code> if the cluster passes and <code>
      * false</code> if it does not.
      */
-    private boolean clusterTotalEnergyCut(HPSEcalCluster cluster) {
+    private boolean clusterTotalEnergyCut(Cluster cluster) {
         // Get the cluster energy.
         double clusterEnergy = cluster.getEnergy();
         
@@ -469,12 +469,12 @@
      * cut value.
      * @return Returns the cut value as a <code>double</code>.
      */
-    private static double getEnergySumValue(HPSEcalCluster[] clusterGroup) {
+    private static double getEnergySumValue(Cluster[] clusterGroup) {
         // Track the sum.
         double energySum = 0.0;
         
         // Add the energies of all clusters in the array.
-        for(HPSEcalCluster cluster : clusterGroup) { energySum += cluster.getEnergy(); }
+        for(Cluster cluster : clusterGroup) { energySum += cluster.getEnergy(); }
         
         // Return the sum.
         return energySum;
@@ -487,18 +487,18 @@
      * cut value.
      * @return Returns the cut value as a <code>double</code>.
      */
-    private double getInvariantMassValue(HPSEcalCluster[] clusterPair) {
+    private double getInvariantMassValue(Cluster[] clusterPair) {
         // Store the x/y positions for the seeds.
         double x[] = new double[2];
         double y[] = new double[2];
         
         // Get the seed hits.
-        CalorimeterHit[] seed = { clusterPair[0].getSeedHit(), clusterPair[1].getSeedHit() };
+        CalorimeterHit[] seed = { clusterPair[0].getCalorimeterHits().get(0), clusterPair[1].getCalorimeterHits().get(0) };
         
         // Set the positions for each seed.
         for(int index = 0; index < seed.length; index++) {
             // Get the seed position array stored in the position map.
-            Double[] seedPos = seedPosMap.get(clusterPair[index].getSeedHit());
+            Double[] seedPos = seedPosMap.get(clusterPair[index].getCalorimeterHits().get(0));
             
             // If there is a position array for the seed, use it.
             if(seedPos != null) {
@@ -509,7 +509,7 @@
             // Otherwise, calculate the position at the crystal face.
             else {
                 // Get the position and store it in a double array.
-                IGeometryInfo geom = clusterPair[index].getSeedHit().getDetectorElement().getGeometry();
+                IGeometryInfo geom = clusterPair[index].getCalorimeterHits().get(0).getDetectorElement().getGeometry();
                 double[] pos = geom.transformLocalToGlobal(VecOp.add(geom.transformGlobalToLocal(geom.getPosition()),
                         (Hep3Vector) new BasicHep3Vector(0, 0, -1 * ((Trd) geom.getLogicalVolume().getSolid()).getZHalfLength()))).v();
                 
@@ -519,7 +519,7 @@
                 
                 // Store the seed location for future use.
                 Double[] positionVec = { pos[0], pos[1], pos[2] };
-                seedPosMap.put(clusterPair[index].getSeedHit(), positionVec);
+                seedPosMap.put(clusterPair[index].getCalorimeterHits().get(0), positionVec);
             }
         }
         
@@ -538,10 +538,10 @@
      * @return Returns <code>true</code> if the cluster seed is on the
      * edge of the calorimeter and <code>false</code> otherwise.
      */
-    private static boolean isEdgeCluster(HPSEcalCluster cluster) {
+    private static boolean isEdgeCluster(Cluster cluster) {
         // Get the x- and y-indices of the cluster seed hit.
-        int ix = cluster.getSeedHit().getIdentifierFieldValue("ix");
-        int iy = cluster.getSeedHit().getIdentifierFieldValue("iy");
+        int ix = cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix");
+        int iy = cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy");
         
         // Track whether the cluster is an edge cluster or not.
         boolean edge = false;
@@ -571,7 +571,7 @@
      * @return Returns <code>true</code> if the clusters pass and <code>
      * false</code> if they does not.
      */
-    private boolean pairEnergySumCut(HPSEcalCluster[] clusterPair) {
+    private boolean pairEnergySumCut(Cluster[] clusterPair) {
         // Get the energy sum value.
         double energySum = getEnergySumValue(clusterPair);
         
@@ -587,7 +587,7 @@
      * @return Returns <code>true</code> if the clusters pass and <code>
      * false</code> if they does not.
      */
-    private boolean pairInvariantMassCut(HPSEcalCluster[] clusterPair) {
+    private boolean pairInvariantMassCut(Cluster[] clusterPair) {
         // Calculate the invariant mass.
         double myy2 = getInvariantMassValue(clusterPair);
         
@@ -603,7 +603,7 @@
      * @return Returns <code>true</code> if the clusters pass and <code>
      * false</code> if they does not.
      */
-    private boolean tripletEnergySumCut(HPSEcalCluster[] clusterTriplet) {
+    private boolean tripletEnergySumCut(Cluster[] clusterTriplet) {
         return (getEnergySumValue(clusterTriplet) >= tripletEnergySumThreshold);
     }
     
@@ -615,15 +615,15 @@
      * @return Returns <code>true</code> if the clusters pass and <code>
      * false</code> if they does not.
      */
-    private static boolean tripletHorizontalCut(HPSEcalCluster[] clusterTriplet) {
+    private static boolean tripletHorizontalCut(Cluster[] clusterTriplet) {
         // Track whether a cluster has occurred on each horizontal side
         // of the calorimeter.
         boolean leftCluster = false;
         boolean rightCluster = false;
         
         // Sort through the cluster triplet and check where they occur.
-        for(HPSEcalCluster cluster : clusterTriplet) {
-            int ix = cluster.getSeedHit().getIdentifierFieldValue("ix");
+        for(Cluster cluster : clusterTriplet) {
+            int ix = cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix");
             if(ix < 0) { leftCluster = true; }
             if(ix > 0) { rightCluster = true; }
         }
@@ -633,10 +633,10 @@
         else { return false; }
     }
     
-    private boolean tripletTotalEnergyCut(HPSEcalCluster[] clusterTriplet) {
+    private boolean tripletTotalEnergyCut(Cluster[] clusterTriplet) {
         // Check to see if each cluster passes the check.
-        for(HPSEcalCluster cluster1 : clusterTriplet) {
-            for(HPSEcalCluster cluster2 : clusterTriplet) {
+        for(Cluster cluster1 : clusterTriplet) {
+            for(Cluster cluster2 : clusterTriplet) {
                 // The cluster pair must be two different clusters.
                 if(cluster1 == cluster2) { continue; }
                 
@@ -670,7 +670,7 @@
     // ==================================================================
     
     /**
-     * Sets the LCIO collection name where <code>HPSEcalCluster</code>
+     * Sets the LCIO collection name where <code>Cluster</code>
      * objects are stored for use in the trigger.
      * @param clusterCollectionName - The name of the LCIO collection.
      */
@@ -897,29 +897,29 @@
     
     /**
      * <b>clusterBuffer</b><br/><br/>
-     * <code>private LinkedList<List<HPSEcalCluster>> <b>clusterBuffer</b></code><br/><br/>
+     * <code>private LinkedList<List<Cluster>> <b>clusterBuffer</b></code><br/><br/>
      * Stores the list of clusters from each event for a finite-sized
      * buffer. The size of the buffer is determined by the coincidence
      * window.
      */
-    private LinkedList<List<HPSEcalCluster>> clusterBuffer;
+    private LinkedList<List<Cluster>> clusterBuffer;
     
     /**
      * <b>clusterCollectionName</b><br/><br/>
      * <code>private String <b>clusterCollectionName</b></code><br/><br/>
-     * The name of the LCIO collection containing <code>HPSEcalCluster
+     * The name of the LCIO collection containing <code>Cluster
      * </code> objects.
      */
     private String clusterCollectionName = "EcalClusters";
     
     /**
      * <b>clusterPair</b><br/><br/>
-     * <code>private HPSEcalCluster[] <b>clusterPair</b></code><br/><br/>
+     * <code>private Cluster[] <b>clusterPair</b></code><br/><br/>
      * Stores the two highest energy clusters located in the cluster
      * buffer. These are sorted by energy, with the highest energy
      * cluster first in the array.
      */
-    private HPSEcalCluster[] clusterPair = new HPSEcalCluster[2];
+    private Cluster[] clusterPair = new Cluster[2];
     
     /**
      * <b>clusterHitCountThreshold</b><br/><br/>
@@ -963,12 +963,12 @@
     
     /**
      * <b>clusterTriplet</b><br/><br/>
-     * <code>private HPSEcalCluster[] <b>clusterTriplet</b></code><br/><br/>
+     * <code>private Cluster[] <b>clusterTriplet</b></code><br/><br/>
      * Stores the three highest energy clusters located in the cluster
      * buffer. These are sorted by energy, with the highest energy
      * cluster first in the array.
      */
-    private HPSEcalCluster[] clusterTriplet = new HPSEcalCluster[3]; 
+    private Cluster[] clusterTriplet = new Cluster[3]; 
     
     /**
      * <b>coincidenceWindow</b><br/><br/>

Modified: java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/OccupancyAnalysisDriver.java
 =============================================================================
--- java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/OccupancyAnalysisDriver.java	(original)
+++ java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/OccupancyAnalysisDriver.java	Tue Jan  6 12:54:22 2015
@@ -1,12 +1,12 @@
 package org.hps.readout.ecal;
-
-import java.util.List;
 
 import hep.aida.IHistogram1D;
 import hep.aida.IHistogram2D;
 
-import org.hps.recon.ecal.HPSEcalCluster;
+import java.util.List;
+
 import org.lcsim.event.CalorimeterHit;
+import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
 import org.lcsim.util.Driver;
 import org.lcsim.util.aida.AIDA;
@@ -62,22 +62,22 @@
     @Override
     public void process(EventHeader event) {
     	// If clusters are present, process them.
-    	if(event.hasCollection(HPSEcalCluster.class, clusterCollectionName)) {
+    	if(event.hasCollection(Cluster.class, clusterCollectionName)) {
     		// Get the list of clusters.
-    		List<HPSEcalCluster> clusterList = event.get(HPSEcalCluster.class, clusterCollectionName);
+    		List<Cluster> clusterList = event.get(Cluster.class, clusterCollectionName);
     		
     		// Use the clusters to populate the cluster plots.
-    		for(HPSEcalCluster cluster : clusterList) {
+    		for(Cluster cluster : clusterList) {
     			// Get the ix and iy values for the cluster.
-    			int ix = cluster.getSeedHit().getIdentifierFieldValue("ix");
-    			int iy = cluster.getSeedHit().getIdentifierFieldValue("iy");
+    			int ix = cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix");
+    			int iy = cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy");
     			
     			// If we want to ignore the beam gap rows, make sure
     			// that iy exceeds two.
     			if(!ignoreBeamGapRows || (Math.abs(iy) > 2)) {
 	        		// If the cluster passes the seed threshold, place it in
 	        		// the level 1 plots.
-	    			if(cluster.getSeedHit().getCorrectedEnergy() >= seedThreshold) {
+	    			if(cluster.getCalorimeterHits().get(0).getCorrectedEnergy() >= seedThreshold) {
 	    				clusterDistribution[0].fill(ix, iy, scalingFactor);
 	    				clusterHitDistribution[0].fill(cluster.getCalorimeterHits().size(), scalingFactor);
 	    				clusterEnergyDistribution[0].fill(cluster.getEnergy() * beamRatio, scalingFactor);

Modified: java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/SSPTriggerLogic.java
 =============================================================================
--- java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/SSPTriggerLogic.java	(original)
+++ java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/SSPTriggerLogic.java	Tue Jan  6 12:54:22 2015
@@ -1,6 +1,6 @@
 package org.hps.readout.ecal;
 
-import org.hps.recon.ecal.HPSEcalCluster;
+import org.lcsim.event.Cluster;
 
 /**
  * Class <code>SSPLogic</code> implements each of the trigger cuts. It
@@ -21,7 +21,7 @@
      * @return Returns <code>true</code> if the cluster passes the cut
      * and <code>false</code> if the cluster does not.
      */
-    public static final boolean clusterHitCountCut(HPSEcalCluster cluster, int thresholdLow) {
+    public static final boolean clusterHitCountCut(Cluster cluster, int thresholdLow) {
         return (getValueClusterHitCount(cluster) >= thresholdLow);
     }
     
@@ -32,7 +32,7 @@
      * @return Returns <code>true</code> if the cluster passes the cut
      * and <code>false</code> if the cluster does not.
      */
-    public static final boolean clusterSeedEnergyCut(HPSEcalCluster cluster, double thresholdLow, double thresholdHigh) {
+    public static final boolean clusterSeedEnergyCut(Cluster cluster, double thresholdLow, double thresholdHigh) {
         // Get the cluster seed energy.
         double energy = getValueClusterSeedEnergy(cluster);
         
@@ -50,7 +50,7 @@
      * @return Returns <code>true</code> if the cluster passes the cut
      * and <code>false</code> if the cluster does not.
      */
-    public static final boolean clusterTotalEnergyCut(HPSEcalCluster cluster, double thresholdLow, double thresholdHigh) {
+    public static final boolean clusterTotalEnergyCut(Cluster cluster, double thresholdLow, double thresholdHigh) {
         // Get the total cluster energy.
         double energy = getValueClusterTotalEnergy(cluster);
         
@@ -65,8 +65,8 @@
      * be calculated.
      * @return Returns the distance between the clusters.
      */
-    public static final double getClusterDistance(HPSEcalCluster cluster) {
-        return Math.hypot(cluster.getSeedHit().getPosition()[0] - ORIGIN_X, cluster.getSeedHit().getPosition()[1]);
+    public static final double getClusterDistance(Cluster cluster) {
+        return Math.hypot(cluster.getCalorimeterHits().get(0).getPosition()[0] - ORIGIN_X, cluster.getCalorimeterHits().get(0).getPosition()[1]);
     }
     
     /**
@@ -75,7 +75,7 @@
      * derived.
      * @return Returns the cut value.
      */
-    public static final double getValueClusterTotalEnergy(HPSEcalCluster cluster) {
+    public static final double getValueClusterTotalEnergy(Cluster cluster) {
         return cluster.getEnergy();
     }
     
@@ -85,7 +85,7 @@
      * derived.
      * @return Returns the cut value.
      */
-    public static final int getValueClusterHitCount(HPSEcalCluster cluster) {
+    public static final int getValueClusterHitCount(Cluster cluster) {
         return cluster.getCalorimeterHits().size();
     }
     
@@ -95,8 +95,8 @@
      * derived.
      * @return Returns the cut value.
      */
-    public static final double getValueClusterSeedEnergy(HPSEcalCluster cluster) {
-        return cluster.getSeedHit().getCorrectedEnergy();
+    public static final double getValueClusterSeedEnergy(Cluster cluster) {
+        return cluster.getCalorimeterHits().get(0).getCorrectedEnergy();
     }
     
     /**
@@ -106,11 +106,11 @@
      * @param originX - The calorimeter center.
      * @return Returns the cut value.
      */
-    public static final double getValueCoplanarity(HPSEcalCluster[] clusterPair) {
+    public static final double getValueCoplanarity(Cluster[] clusterPair) {
         // Get the cluster angles.
         double[] clusterAngle = new double[2];
         for(int i = 0; i < 2; i++) {
-            double position[] = clusterPair[i].getSeedHit().getPosition();
+            double position[] = clusterPair[i].getCalorimeterHits().get(0).getPosition();
             clusterAngle[i] = (Math.toDegrees(Math.atan2(position[1], position[0] - ORIGIN_X)) + 180.0) % 180.0;
         }
         
@@ -124,7 +124,7 @@
      * be calculated.
      * @return Returns the cut value.
      */
-    public static final double getValueEnergyDifference(HPSEcalCluster[] clusterPair) {
+    public static final double getValueEnergyDifference(Cluster[] clusterPair) {
         return clusterPair[0].getEnergy() - clusterPair[1].getEnergy();
     }
     
@@ -136,7 +136,7 @@
      * energy slope equation E_low + R_min * F.
      * @return Returns the cut value.
      */
-    public static final double getValueEnergySlope(HPSEcalCluster[] clusterPair, double energySlopeParamF) {
+    public static final double getValueEnergySlope(Cluster[] clusterPair, double energySlopeParamF) {
         // E + R*F
         // Get the low energy cluster energy.
         double slopeParamE = clusterPair[1].getEnergy();
@@ -154,7 +154,7 @@
      * be calculated.
      * @return Returns the cut value.
      */
-    public static final double getValueEnergySum(HPSEcalCluster[] clusterPair) {
+    public static final double getValueEnergySum(Cluster[] clusterPair) {
         return clusterPair[0].getEnergy() + clusterPair[1].getEnergy();
     }
     
@@ -166,7 +166,7 @@
      * @return Returns <code>true</code> if the cluster pair passes
      * the cut and <code>false</code> if it does not.
      */
-    public static final boolean pairCoplanarityCut(HPSEcalCluster[] clusterPair, double thresholdHigh) {
+    public static final boolean pairCoplanarityCut(Cluster[] clusterPair, double thresholdHigh) {
         return (getValueCoplanarity(clusterPair) < thresholdHigh);
     }
     
@@ -178,7 +178,7 @@
      * @return Returns <code>true</code> if the cluster pair passes
      * the cut and <code>false</code> if it does not.
      */
-    public static final boolean pairEnergyDifferenceCut(HPSEcalCluster[] clusterPair, double thresholdHigh) {
+    public static final boolean pairEnergyDifferenceCut(Cluster[] clusterPair, double thresholdHigh) {
         return (getValueEnergyDifference(clusterPair) < thresholdHigh);
     }
     
@@ -190,7 +190,7 @@
      * @param thresholdLow - The lower bound for the cut.
      * @return true if pair is found, false otherwise
      */
-    public static final boolean pairEnergySlopeCut(HPSEcalCluster[] clusterPair, double thresholdLow, double energySlopeParamF) {
+    public static final boolean pairEnergySlopeCut(Cluster[] clusterPair, double thresholdLow, double energySlopeParamF) {
         return (getValueEnergySlope(clusterPair, energySlopeParamF) > thresholdLow);
     }
     
@@ -203,7 +203,7 @@
      * @return Returns <code>true</code> if the cluster pair passes
      * the cut and <code>false</code> if it does not.
      */
-    public static final boolean pairEnergySumCut(HPSEcalCluster[] clusterPair, double thresholdLow, double thresholdHigh) {
+    public static final boolean pairEnergySumCut(Cluster[] clusterPair, double thresholdLow, double thresholdHigh) {
         // Get the energy sum value.
         double energySum = getValueEnergySum(clusterPair);
         

Modified: java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/SinglesTriggerDriver.java
 =============================================================================
--- java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/SinglesTriggerDriver.java	(original)
+++ java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/SinglesTriggerDriver.java	Tue Jan  6 12:54:22 2015
@@ -5,7 +5,7 @@
 
 import java.util.List;
 
-import org.hps.recon.ecal.HPSEcalCluster;
+import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
 import org.lcsim.util.aida.AIDA;
 
@@ -44,19 +44,19 @@
     @Override
     public void process(EventHeader event) {
         // Make sure that there are clusters in the event.
-        if(event.hasCollection(HPSEcalCluster.class, clusterCollectionName)) {
+        if(event.hasCollection(Cluster.class, clusterCollectionName)) {
             // Get the list of clusters.
-            List<HPSEcalCluster> clusterList = event.get(HPSEcalCluster.class, clusterCollectionName);
+            List<Cluster> clusterList = event.get(Cluster.class, clusterCollectionName);
             
             // Iterate over the clusters.
-            for(HPSEcalCluster cluster : clusterList) {
+            for(Cluster cluster : clusterList) {
                 // Get the x and y indices.
-                int ix = cluster.getSeedHit().getIdentifierFieldValue("ix");
-                int iy = cluster.getSeedHit().getIdentifierFieldValue("iy");
+                int ix = cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix");
+                int iy = cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy");
                 ix = ix > 0 ? ix - 1 : ix;
                 
                 // Populate the uncut plots.
-                clusterSeedEnergy.fill(cluster.getSeedHit().getCorrectedEnergy(), 1);
+                clusterSeedEnergy.fill(cluster.getCalorimeterHits().get(0).getCorrectedEnergy(), 1);
                 clusterTotalEnergy.fill(cluster.getEnergy(), 1);
                 clusterHitCount.fill(cluster.getCalorimeterHits().size(), 1);
                 clusterDistribution.fill(ix, iy, 1);
@@ -73,13 +73,13 @@
     @Override
     protected boolean triggerDecision(EventHeader event) {
         // Check that there is a cluster object collection.
-        if(event.hasCollection(HPSEcalCluster.class, clusterCollectionName)) {
+        if(event.hasCollection(Cluster.class, clusterCollectionName)) {
             // Get the list of hits.
-            List<HPSEcalCluster> clusterList = event.get(HPSEcalCluster.class, clusterCollectionName);
+            List<Cluster> clusterList = event.get(Cluster.class, clusterCollectionName);
             
             // Iterate over the hits and perform the cuts.
             triggerLoop:
-            for(HPSEcalCluster cluster : clusterList) {
+            for(Cluster cluster : clusterList) {
                 // Perform the hit count cut.
                 if(!SSPTriggerLogic.clusterHitCountCut(cluster, hitCountLow)) {
                     continue triggerLoop;
@@ -96,12 +96,12 @@
                 }
                 
                 // Get the x and y indices.
-                int ix = cluster.getSeedHit().getIdentifierFieldValue("ix");
-                int iy = cluster.getSeedHit().getIdentifierFieldValue("iy");
+                int ix = cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix");
+                int iy = cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy");
                 ix = ix > 0 ? ix - 1 : ix;
                 
                 // Populate the cut plots.
-                clusterSeedEnergySingle.fill(cluster.getSeedHit().getCorrectedEnergy(), 1);
+                clusterSeedEnergySingle.fill(cluster.getCalorimeterHits().get(0).getCorrectedEnergy(), 1);
                 clusterTotalEnergySingle.fill(cluster.getEnergy(), 1);
                 clusterHitCountSingle.fill(cluster.getCalorimeterHits().size(), 1);
                 clusterDistributionSingle.fill(ix, iy, 1);

Modified: java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/TestRunTriggerDriver.java
 =============================================================================
--- java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/TestRunTriggerDriver.java	(original)
+++ java/trunk/ecal-readout-sim/src/main/java/org/hps/readout/ecal/TestRunTriggerDriver.java	Tue Jan  6 12:54:22 2015
@@ -3,7 +3,7 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import org.hps.recon.ecal.HPSEcalCluster;
+import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
 
 /**
@@ -55,9 +55,9 @@
 
     @Override
     protected boolean triggerDecision(EventHeader event) {
-        if (event.hasCollection(HPSEcalCluster.class, clusterCollectionName)) {
+        if (event.hasCollection(Cluster.class, clusterCollectionName)) {
             cycleCounter++;
-            if (testTrigger(event.get(HPSEcalCluster.class, clusterCollectionName))) {
+            if (testTrigger(event.get(Cluster.class, clusterCollectionName))) {
                 triggerThisCycle = true;
             }
         }
@@ -71,12 +71,12 @@
         }
     }
 
-    public boolean testTrigger(List<HPSEcalCluster> clusters) {
+    public boolean testTrigger(List<Cluster> clusters) {
         boolean trigger = false;
 
         topBits <<= 1;
         botBits <<= 1;
-        for (HPSEcalCluster cluster : clusters) {
+        for (Cluster cluster : clusters) {
             if (cluster.getEnergy() > clusterEnergyLow) {
                 if (cluster.getPosition()[1] > 0) {
                     topBits |= 1;

Modified: java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/ECalUtils.java
 =============================================================================
--- java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/ECalUtils.java	(original)
+++ java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/ECalUtils.java	Tue Jan  6 12:54:22 2015
@@ -1,6 +1,7 @@
 package org.hps.recon.ecal;
 
 import org.lcsim.event.CalorimeterHit;
+import org.lcsim.event.Cluster;
 
 /**
  *
@@ -34,8 +35,8 @@
      * @param ecalCluster : ECal cluster
      * @return Quadrant number
      */
-    public static int getQuadrant(HPSEcalCluster ecalCluster) {
-        return getQuadrant(ecalCluster.getSeedHit());
+    public static int getQuadrant(Cluster ecalCluster) {
+        return getQuadrant(ecalCluster.getCalorimeterHits().get(0));
     }
 
     public static int getQuadrant(CalorimeterHit hit) {

Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTEventDisplay.java
 =============================================================================
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTEventDisplay.java	(original)
+++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/SVTEventDisplay.java	Tue Jan  6 12:54:22 2015
@@ -8,10 +8,10 @@
 
 import java.util.List;
 
-import org.hps.recon.ecal.HPSEcalCluster;
 import org.lcsim.detector.tracker.silicon.SiSensor;
 import org.lcsim.detector.tracker.silicon.SiSensorElectrodes;
 import org.lcsim.detector.tracker.silicon.SiStrips;
+import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.RawTrackerHit;
 import org.lcsim.fit.helicaltrack.HelicalTrackHit;
@@ -85,9 +85,9 @@
                 fillPlots(hrth);
             }
 
-            List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, ecalCollectionName);
+            List<Cluster> clusters = event.get(Cluster.class, ecalCollectionName);
             //             System.out.println("Number of ECAL clusters="+clusters.size());
-            for (HPSEcalCluster cluster : clusters) {
+            for (Cluster cluster : clusters) {
 //                dec.setID(cluster.getSeedHit().getCellID());
 //                CalorimeterHit seedHit = cluster.getSeedHit();
 //                    System.out.println("z = "+seedHit.getPosition()[2]+" y = "+seedHit.getPosition()[1]);

Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/TrackingReconstructionPlots.java
 =============================================================================
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/TrackingReconstructionPlots.java	(original)
+++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/svt/TrackingReconstructionPlots.java	Tue Jan  6 12:54:22 2015
@@ -17,7 +17,6 @@
 //===> import org.hps.conditions.deprecated.HPSSVTCalibrationConstants;
 //===> import org.hps.conditions.deprecated.HPSSVTCalibrationConstants.ChannelConstants;
 //===> import org.hps.conditions.deprecated.SvtUtils;
-import org.hps.recon.ecal.HPSEcalCluster;
 import org.hps.recon.tracking.BeamlineConstants;
 import org.hps.recon.tracking.DumbShaperFit;
 import org.hps.recon.tracking.HelixConverter;
@@ -25,8 +24,9 @@
 import org.hps.recon.tracking.ShaperFitAlgorithm;
 import org.hps.recon.tracking.StraightLineTrack;
 import org.hps.recon.tracking.TrackUtils;
+import org.lcsim.detector.tracker.silicon.HpsSiSensor;
 import org.lcsim.detector.tracker.silicon.SiSensor;
-import org.lcsim.detector.tracker.silicon.HpsSiSensor;
+import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.LCIOParameters.ParameterName;
 import org.lcsim.event.RawTrackerHit;
@@ -626,9 +626,9 @@
 
         List<Track> tracks = event.get(Track.class, trackCollectionName);
         nTracks.fill(tracks.size());
-        if (event.hasCollection(HPSEcalCluster.class, ecalCollectionName)) {
-            List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, ecalCollectionName);
-            for (HPSEcalCluster cluster : clusters) {
+        if (event.hasCollection(Cluster.class, ecalCollectionName)) {
+            List<Cluster> clusters = event.get(Cluster.class, ecalCollectionName);
+            for (Cluster cluster : clusters) {
                 if (cluster.getPosition()[1] > 0) {
                     aida.histogram2D("Top ECal Cluster Position").fill(cluster.getPosition()[0], cluster.getPosition()[1]);
                 }
@@ -829,10 +829,10 @@
                     }
                 }
             }
-            if(event.hasCollection(HPSEcalCluster.class,ecalCollectionName)) {
-                List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, ecalCollectionName);
-
-                HPSEcalCluster clust = findClosestCluster(posAtEcal, clusters);
+            if(event.hasCollection(Cluster.class,ecalCollectionName)) {
+                List<Cluster> clusters = event.get(Cluster.class, ecalCollectionName);
+
+                Cluster clust = findClosestCluster(posAtEcal, clusters);
 
                 //           if (clust != null) {
                 if (clust != null) {
@@ -1008,10 +1008,10 @@
         //bottomFrame.dispose();
     }
 
-    private HPSEcalCluster findClosestCluster(Hep3Vector posonhelix, List<HPSEcalCluster> clusters) {
-        HPSEcalCluster closest = null;
+    private Cluster findClosestCluster(Hep3Vector posonhelix, List<Cluster> clusters) {
+        Cluster closest = null;
         double minDist = 9999;
-        for (HPSEcalCluster cluster : clusters) {
+        for (Cluster cluster : clusters) {
             double[] clPos = cluster.getPosition();
             double clEne = cluster.getEnergy();
             double dist = Math.sqrt(Math.pow(clPos[0] - posonhelix.x(), 2) + Math.pow(clPos[1] - posonhelix.y(), 2)); //coordinates!!!

Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalClusterPlots.java
 =============================================================================
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalClusterPlots.java	(original)
+++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalClusterPlots.java	Tue Jan  6 12:54:22 2015
@@ -11,8 +11,8 @@
 import org.apache.commons.math.stat.StatUtils;
 import org.hps.readout.ecal.SSPTriggerLogic;
 import org.hps.recon.ecal.ECalUtils;
-import org.hps.recon.ecal.HPSEcalCluster;
 import org.lcsim.event.CalorimeterHit;
+import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
 import org.lcsim.geometry.Detector;
 import org.lcsim.util.Driver;
@@ -167,20 +167,20 @@
     @Override
     public void process(EventHeader event) {
     	// Check whether the event has clusters or not.
-    	if(event.hasCollection(HPSEcalCluster.class, clusterCollectionName)) {
+    	if(event.hasCollection(Cluster.class, clusterCollectionName)) {
     		// Get the list of clusters.
-    		List<HPSEcalCluster> clusterList = event.get(HPSEcalCluster.class, clusterCollectionName);
+    		List<Cluster> clusterList = event.get(Cluster.class, clusterCollectionName);
     		
     		// Create lists to store the clusters from the top of the
     		// calorimeter and the bottom.
-    		List<HPSEcalCluster> topList = new ArrayList<HPSEcalCluster>();
-    		List<HPSEcalCluster> bottomList = new ArrayList<HPSEcalCluster>();
+    		List<Cluster> topList = new ArrayList<Cluster>();
+    		List<Cluster> bottomList = new ArrayList<Cluster>();
     		
     		// Track the highest energy cluster in the event.
     		double maxEnergy = 0.0;
     		
     		// Process each of the clusters.
-    		for(HPSEcalCluster cluster : clusterList) {
+    		for(Cluster cluster : clusterList) {
     			// If this cluster has a higher energy then was seen
     			// previously, it is now the highest energy cluster.
 				if (cluster.getEnergy() > maxEnergy) {
@@ -221,7 +221,7 @@
     			// Cluster pairs are formed from all top/bottom cluster
     			// combinations. To create these pairs, separate the
     			// clusters into two lists based on their y-indices.
-    			if(cluster.getSeedHit().getIdentifierFieldValue("ix") > 0) {
+    			if(cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix") > 0) {
     				topList.add(cluster);
     			} else {
     				bottomList.add(cluster);
@@ -233,14 +233,14 @@
     		if(maxEnergy > 0) { clusterMaxEnergyPlot.fill(maxEnergy); }
     		
     		// Create a list to store cluster pairs.
-    		List<HPSEcalCluster[]> pairList = new ArrayList<HPSEcalCluster[]>(topList.size() * bottomList.size());
+    		List<Cluster[]> pairList = new ArrayList<Cluster[]>(topList.size() * bottomList.size());
     		
     		// Form pairs from all possible combinations of clusters
     		// from the top and bottom lists.
-    		for(HPSEcalCluster topCluster : topList) {
-    			for(HPSEcalCluster bottomCluster : bottomList) {
+    		for(Cluster topCluster : topList) {
+    			for(Cluster bottomCluster : bottomList) {
     				// Make a cluster pair array.
-    				HPSEcalCluster[] pair = new HPSEcalCluster[2];
+    				Cluster[] pair = new Cluster[2];
     				
     				// The lower energy cluster goes in the second slot.
     				if(topCluster.getEnergy() > bottomCluster.getEnergy()) {
@@ -257,7 +257,7 @@
     		}
     		
     		// Iterate over each pair and calculate the pair cut values.
-    		for(HPSEcalCluster[] pair : pairList) {
+    		for(Cluster[] pair : pairList) {
     			// Get the energy slope value.
     			double energySumValue = SSPTriggerLogic.getValueEnergySum(pair);
     			double energyDifferenceValue = SSPTriggerLogic.getValueEnergyDifference(pair);

Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalEventDisplay.java
 =============================================================================
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalEventDisplay.java	(original)
+++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalEventDisplay.java	Tue Jan  6 12:54:22 2015
@@ -9,11 +9,10 @@
 import java.awt.Point;
 import java.awt.event.ActionEvent;
 import java.awt.event.ActionListener;
+import java.io.File;
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
-import java.lang.System;
-import java.io.File;
-import java.io.IOException;
 
 import org.hps.monitoring.ecal.eventdisplay.ui.PDataEventViewer;
 import org.hps.monitoring.ecal.eventdisplay.ui.PEventViewer;
@@ -21,10 +20,9 @@
 import org.hps.monitoring.ecal.eventdisplay.util.CrystalEvent;
 import org.hps.monitoring.ecal.eventdisplay.util.CrystalListener;
 import org.hps.recon.ecal.ECalUtils;
-import org.hps.recon.ecal.HPSEcalCluster;
 import org.lcsim.event.CalorimeterHit;
+import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
-import org.lcsim.event.RawTrackerHit;
 import org.lcsim.geometry.Detector;
 import org.lcsim.util.Driver;
 import org.lcsim.util.aida.AIDA;
@@ -330,16 +328,16 @@
 		}
 		
 		// If there are clusters in the event...
-		if (event.hasCollection(HPSEcalCluster.class, clusterCollection)) {
+		if (event.hasCollection(Cluster.class, clusterCollection)) {
 			// Get the list of clusters.
-			List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, clusterCollection);
+			List<Cluster> clusters = event.get(Cluster.class, clusterCollection);
 			
 			// Iterate over the clusters and add them to the event
 			// display if appropriate.
-			for (HPSEcalCluster cluster : clusters) {
+			for (Cluster cluster : clusters) {
 				// Get the ix and iy indices for the seed.
-				int ix = cluster.getSeedHit().getIdentifierFieldValue("ix");
-				int iy = cluster.getSeedHit().getIdentifierFieldValue("iy");
+				int ix = cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix");
+				int iy = cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy");
 				
 				// Get the histogram index for the hit.
 				int id = ECalUtils.getHistoIDFromRowColumn(iy, ix);

Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalMonitoringPlots.java
 =============================================================================
--- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalMonitoringPlots.java	(original)
+++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalMonitoringPlots.java	Tue Jan  6 12:54:22 2015
@@ -1,16 +1,14 @@
 package org.hps.monitoring.ecal.plots;
 
-import hep.aida.IHistogram1D;
 import hep.aida.IHistogram2D;
 import hep.aida.IPlotter;
 import hep.aida.IPlotterStyle;
 
-import java.util.ArrayList;
 import java.util.List;
 
-import org.hps.recon.ecal.HPSEcalCluster;
 import org.hps.recon.ecal.ECalUtils;
 import org.lcsim.event.CalorimeterHit;
+import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
 import org.lcsim.geometry.Detector;
 import org.lcsim.util.Driver;
@@ -162,10 +160,10 @@
             }
         }
 
-        if (event.hasCollection(HPSEcalCluster.class, clusterCollection)) {
-            List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, clusterCollection);
-            for (HPSEcalCluster cluster : clusters) {
-                clusterCountFillPlot.fill(cluster.getSeedHit().getIdentifierFieldValue("ix"), cluster.getSeedHit().getIdentifierFieldValue("iy"));
+        if (event.hasCollection(Cluster.class, clusterCollection)) {
+            List<Cluster> clusters = event.get(Cluster.class, clusterCollection);
+            for (Cluster cluster : clusters) {
+                clusterCountFillPlot.fill(cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix"), cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy"));
             }
         }
        

Modified: java/trunk/users/src/main/java/org/hps/users/holly/EcalClustererCosmics.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/holly/EcalClustererCosmics.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/holly/EcalClustererCosmics.java	Tue Jan  6 12:54:22 2015
@@ -7,9 +7,10 @@
 import java.util.Set;
 
 import org.hps.recon.ecal.ECalUtils;
-import org.hps.recon.ecal.HPSEcalCluster;
 import org.lcsim.event.CalorimeterHit;
+import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
+import org.lcsim.event.base.BaseCluster;
 import org.lcsim.geometry.Detector;
 import org.lcsim.geometry.subdetector.HPSEcal3;
 import org.lcsim.geometry.subdetector.HPSEcal3.NeighborMap;
@@ -112,14 +113,14 @@
 
             // Put Cluster collection into event.
             int flag = 1 << LCIOConstants.CLBIT_HITS;
-            event.put(clusterCollectionName, createClusters(hitMap), HPSEcalCluster.class, flag);
+            event.put(clusterCollectionName, createClusters(hitMap), Cluster.class, flag);
         }
     }
 
-    public List<HPSEcalCluster> createClusters(Map<Long, CalorimeterHit> map) {
+    public List<Cluster> createClusters(Map<Long, CalorimeterHit> map) {
 
         // New Cluster list to be added to event.
-        List<HPSEcalCluster> clusters = new ArrayList<HPSEcalCluster>();
+        List<Cluster> clusters = new ArrayList<Cluster>();
 
         // Loop over ECal hits to find cluster seeds.
         for (CalorimeterHit hit : map.values()) {
@@ -169,7 +170,7 @@
             // Did we find a seed?
             if (isSeed) {
                 // Make a cluster from the hit list.
-                HPSEcalCluster cluster = new HPSEcalCluster(hit.getCellID());
+                BaseCluster cluster = new BaseCluster();
                 cluster.addHit(hit);
                 for (CalorimeterHit clusHit : neighborHits) {
                     cluster.addHit(clusHit);

Modified: java/trunk/users/src/main/java/org/hps/users/kmccarty/ClusterAnalysisDriver.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/kmccarty/ClusterAnalysisDriver.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/kmccarty/ClusterAnalysisDriver.java	Tue Jan  6 12:54:22 2015
@@ -1,11 +1,11 @@
 package org.hps.users.kmccarty;
-
-import java.util.List;
 
 import hep.aida.IHistogram1D;
 import hep.aida.IHistogram2D;
 
-import org.hps.recon.ecal.HPSEcalCluster;
+import java.util.List;
+
+import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
 import org.lcsim.util.Driver;
 import org.lcsim.util.aida.AIDA;
@@ -58,32 +58,32 @@
 	
 	public void process(EventHeader event) {
 		// Check if there exists a cluster collection.
-		if(event.hasCollection(HPSEcalCluster.class, clusterCollectionName)) {
+		if(event.hasCollection(Cluster.class, clusterCollectionName)) {
 			// Get the raw hit collection.
-			List<HPSEcalCluster> clusterList = event.get(HPSEcalCluster.class, clusterCollectionName);
+			List<Cluster> clusterList = event.get(Cluster.class, clusterCollectionName);
 			
 			// Output the information on each hit to the histograms.
-			for(HPSEcalCluster cluster : clusterList) {
+			for(Cluster cluster : clusterList) {
 				// Get the x and y indices for the hits.
-				int ix = cluster.getSeedHit().getIdentifierFieldValue("ix");
-				int iy = cluster.getSeedHit().getIdentifierFieldValue("iy");
+				int ix = cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix");
+				int iy = cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy");
 				if(ix > 0) { ix = ix - 1; }
 				
 				// Write to the histograms.
 				clusterTotalEnergy.fill(cluster.getEnergy());
-				clusterSeedEnergy.fill(cluster.getSeedHit().getCorrectedEnergy());
+				clusterSeedEnergy.fill(cluster.getCalorimeterHits().get(0).getCorrectedEnergy());
 				clusterHitCount.fill(cluster.getCalorimeterHits().size());
 				clusterDistribution.fill(ix, iy, 1.0);
 				
-				if(cluster.getSeedHit().getCorrectedEnergy() > 0.100) {
+				if(cluster.getCalorimeterHits().get(0).getCorrectedEnergy() > 0.100) {
 					fClusterTotalEnergy.fill(cluster.getEnergy());
-					fClusterSeedEnergy.fill(cluster.getSeedHit().getCorrectedEnergy());
+					fClusterSeedEnergy.fill(cluster.getCalorimeterHits().get(0).getCorrectedEnergy());
 					fClusterHitCount.fill(cluster.getCalorimeterHits().size());
 					fClusterDistribution.fill(ix, iy, 1.0);
 					
 					if(cluster.getCalorimeterHits().size() > 1) {
 						nClusterTotalEnergy.fill(cluster.getEnergy());
-						nClusterSeedEnergy.fill(cluster.getSeedHit().getCorrectedEnergy());
+						nClusterSeedEnergy.fill(cluster.getCalorimeterHits().get(0).getCorrectedEnergy());
 						nClusterHitCount.fill(cluster.getCalorimeterHits().size());
 						nClusterDistribution.fill(ix, iy, 1.0);
 					}

Modified: java/trunk/users/src/main/java/org/hps/users/luca/CalibClusterAnalizer.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/luca/CalibClusterAnalizer.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/luca/CalibClusterAnalizer.java	Tue Jan  6 12:54:22 2015
@@ -7,31 +7,13 @@
 package org.hps.users.luca;
 
 import hep.aida.IHistogram1D;
-import hep.aida.IHistogram2D;
-import java.io.IOException;
-import java.util.*;
-import java.io.PrintWriter;
-import java.util.ArrayList;
-import java.util.EnumSet;
-import java.util.LinkedList;
+
 import java.util.List;
-import java.util.Queue;
-import org.hps.readout.ecal.ClockSingleton;
-import org.hps.readout.ecal.TriggerDriver;
 
-
-import org.hps.recon.ecal.ECalUtils;
-import org.hps.recon.ecal.HPSEcalCluster;
 import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
-import org.lcsim.geometry.Detector;
+import org.lcsim.util.Driver;
 import org.lcsim.util.aida.AIDA;
-import org.lcsim.util.Driver;
-import hep.aida.*;
-import hep.aida.IHistogram1D;
-import java.io.FileWriter;
-import org.lcsim.event.CalorimeterHit;
-import org.lcsim.event.MCParticle;
 /**
  *
  * @author mac
@@ -51,7 +33,7 @@
         {List<Cluster> clusters= event.get(Cluster.class,"EcalClusters");
         for(Cluster cluster : clusters){
         eneTuttiPlot.fill(cluster.getEnergy());
-       SeedHitPlot.fill(HPSEcalCluster.getSeedHit(cluster).getCorrectedEnergy());
+       SeedHitPlot.fill(cluster.getCalorimeterHits().get(0).getCorrectedEnergy());
         }
         
         

Modified: java/trunk/users/src/main/java/org/hps/users/luca/CalibTest.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/luca/CalibTest.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/luca/CalibTest.java	Tue Jan  6 12:54:22 2015
@@ -2,13 +2,14 @@
 package org.hps.users.luca;
 
 //import hep.aida.ITupleColumn.String;
+
+import hep.aida.IHistogram1D;
 
 import java.util.List;
 
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.MCParticle;
 import org.lcsim.util.Driver;
-import hep.aida.IHistogram1D;
 import org.lcsim.util.aida.AIDA;
 // the class has to be derived from the driver class
 public class CalibTest extends Driver {

Modified: java/trunk/users/src/main/java/org/hps/users/luca/CalibTest2.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/luca/CalibTest2.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/luca/CalibTest2.java	Tue Jan  6 12:54:22 2015
@@ -2,18 +2,12 @@
 
 //import hep.aida.ITupleColumn.String;
 import hep.aida.IHistogram1D;
-import hep.aida.IHistogram2D;
-import java.io.IOException;
-import java.io.*;
-
 
 import java.util.List;
 
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.MCParticle;
-
 import org.lcsim.util.Driver;
-
 import org.lcsim.util.aida.AIDA;
 
 /**

Modified: java/trunk/users/src/main/java/org/hps/users/luca/ClusterSorterReconData.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/luca/ClusterSorterReconData.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/luca/ClusterSorterReconData.java	Tue Jan  6 12:54:22 2015
@@ -5,31 +5,15 @@
  */
 
 package org.hps.users.luca;
-import hep.aida.IHistogram1D;
-import hep.aida.IHistogram2D;
+import java.io.FileWriter;
 import java.io.IOException;
-import java.util.*;
-import java.io.PrintWriter;
 import java.util.ArrayList;
-import java.util.EnumSet;
 import java.util.LinkedList;
 import java.util.List;
-import java.util.Queue;
-import org.hps.readout.ecal.ClockSingleton;
-import org.hps.readout.ecal.TriggerDriver;
-
-import org.hps.recon.ecal.ECalUtils;
-import org.hps.recon.ecal.HPSEcalCluster;
+
 import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
-import org.lcsim.geometry.Detector;
-import org.lcsim.util.aida.AIDA;
 import org.lcsim.util.Driver;
-import hep.aida.*;
-import hep.aida.IHistogram3D;
-import java.io.FileWriter;
-import org.lcsim.event.CalorimeterHit;
-import org.lcsim.event.MCParticle;
 
 /**
  * 
@@ -169,14 +153,14 @@
          
          //ciclo for nel set di currentCluster, ovvero il set nel mezzo del buffer
     for(Cluster cluster : currentClusters){ 
-    if((HPSEcalCluster.getSeedHit(cluster).getIdentifierFieldValue("ix")== posx) && (HPSEcalCluster.getSeedHit(cluster).getIdentifierFieldValue("iy")==posy )&& (cluster.getEnergy() > energyThreshold)){
+    if((cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix")== posx) && (cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy")==posy )&& (cluster.getEnergy() > energyThreshold)){
         
            if(ClusterChecker(cluster)){
             int id;
             Clustercount++;
            id=getCrystal(cluster);
            try{
-     writer.append(id + " " + cluster.getEnergy()+ " " + cluster.getSize() + " " + HPSEcalCluster.getSeedHit(cluster).getCorrectedEnergy() + " " + HPSEcalCluster.getSeedHit(cluster).getIdentifierFieldValue("ix")+" " +HPSEcalCluster.getSeedHit(cluster).getIdentifierFieldValue("iy"));
+     writer.append(id + " " + cluster.getEnergy()+ " " + cluster.getSize() + " " + cluster.getCalorimeterHits().get(0).getCorrectedEnergy() + " " + cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix")+" " +cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy"));
      /*for(CalorimeterHit hit : cluster.getCalorimeterHits())
      {writer.append(hit.getRawEnergy()+ " ");
        }*/
@@ -220,7 +204,7 @@
          for(Cluster currentcluster : currentList){
            if(currentcluster!= cluster){
              //if there is a cluster in the buffer that is in the considered radius in a time window lower than expected, the loop is brocken and the analyzed cluster is not good
-         if(!((HPSEcalCluster.getSeedHit(currentcluster).getIdentifierFieldValue("ix") < posx-radius || HPSEcalCluster.getSeedHit(currentcluster).getIdentifierFieldValue("ix")> posx+radius)&& (HPSEcalCluster.getSeedHit(currentcluster).getIdentifierFieldValue("iy")< posy-radius || HPSEcalCluster.getSeedHit(currentcluster).getIdentifierFieldValue("iy")> posy+radius))&& Math.abs(HPSEcalCluster.getSeedHit(cluster).getTime()-HPSEcalCluster.getSeedHit(currentcluster).getTime())<timeDifference){
+         if(!((cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix") < posx-radius || cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix")> posx+radius)&& (cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy")< posy-radius || cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy")> posy+radius))&& Math.abs(cluster.getCalorimeterHits().get(0).getTime()-cluster.getCalorimeterHits().get(0).getTime())<timeDifference){
          check=false;
          break loops;
          }
@@ -243,8 +227,8 @@
  
  public int getCrystal (Cluster cluster){
  int x,y,id=0;
- x= (-1)*HPSEcalCluster.getSeedHit(cluster).getIdentifierFieldValue("ix");
- y= HPSEcalCluster.getSeedHit(cluster).getIdentifierFieldValue("iy");
+ x= (-1)*cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix");
+ y= cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy");
  
  if(y==5){
  if(x<0)

Modified: java/trunk/users/src/main/java/org/hps/users/luca/FADCVariableTriggerFEEDriver.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/luca/FADCVariableTriggerFEEDriver.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/luca/FADCVariableTriggerFEEDriver.java	Tue Jan  6 12:54:22 2015
@@ -5,10 +5,11 @@
 import java.util.List;
 import java.util.Queue;
 
+import org.hps.readout.ecal.FADCTriggerDriver;
+import org.hps.readout.ecal.TriggerDriver;
 import org.hps.recon.ecal.ECalUtils;
-import org.hps.recon.ecal.HPSEcalCluster;
+import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
-import org.hps.readout.ecal.TriggerDriver;
 /**
  * Class <code>FADCVariableTriggerDriver</code> reads reconstructed
  * clusters and makes trigger decisions on them. It is designed to
@@ -47,8 +48,8 @@
     // ==================================================================
     // ==== Driver Internal Variables ===================================
     // ==================================================================
-    private Queue<List<HPSEcalCluster>> topClusterQueue = null;	// Store clusters on the top half of the calorimeter.
-    private Queue<List<HPSEcalCluster>> botClusterQueue = null;	// Store clusters on the bottom half of the calorimeter.
+    private Queue<List<Cluster>> topClusterQueue = null;	// Store clusters on the top half of the calorimeter.
+    private Queue<List<Cluster>> botClusterQueue = null;	// Store clusters on the bottom half of the calorimeter.
     private int allClusters = 0;								// Track the number of clusters processed.
     private int allPairs = 0;									// Track the number of cluster pairs processed.
     private int clusterTotalEnergyCount = 0;					// Track the clusters which pass the total energy cut.
@@ -92,18 +93,18 @@
     @Override
     public void process(EventHeader event) {
     	// Process the list of clusters for the event, if it exists.
-        if (event.hasCollection(HPSEcalCluster.class, clusterCollectionName)) {
+        if (event.hasCollection(Cluster.class, clusterCollectionName)) {
         	// Get the collection of clusters.
-        	List<HPSEcalCluster> clusterList = event.get(HPSEcalCluster.class, clusterCollectionName);
+        	List<Cluster> clusterList = event.get(Cluster.class, clusterCollectionName);
         	
         	// Create a list to hold clusters which pass the single
         	// cluster cuts.
-        	List<HPSEcalCluster> goodClusterList = new ArrayList<HPSEcalCluster>(clusterList.size());
+        	List<Cluster> goodClusterList = new ArrayList<Cluster>(clusterList.size());
         	
         	// Sort through the cluster list and add clusters that pass
         	// the single cluster cuts to the good list.
         	clusterLoop:
-        	for(HPSEcalCluster cluster : clusterList) {
+        	for(Cluster cluster : clusterList) {
         		// Increment the number of processed clusters.
         		allClusters++;
         		
@@ -305,19 +306,19 @@
         }
     	
         // Initialize the top and bottom cluster queues.
-        topClusterQueue = new LinkedList<List<HPSEcalCluster>>();
-        botClusterQueue = new LinkedList<List<HPSEcalCluster>>();
+        topClusterQueue = new LinkedList<List<Cluster>>();
+        botClusterQueue = new LinkedList<List<Cluster>>();
         
         // Populate the top cluster queue. It should be populated with
         // a number of empty lists equal to (2 * pairCoincidence + 1).
         for (int i = 0; i < 2 * pairCoincidence + 1; i++) {
-            topClusterQueue.add(new ArrayList<HPSEcalCluster>());
+            topClusterQueue.add(new ArrayList<Cluster>());
         }
         
         // Populate the bottom cluster queue. It should be populated with
         // a number of empty lists equal to (2 * pairCoincidence + 1).
         for (int i = 0; i < pairCoincidence + 1; i++) {
-            botClusterQueue.add(new ArrayList<HPSEcalCluster>());
+            botClusterQueue.add(new ArrayList<Cluster>());
         }
         
         // If a background level has been set, pick the correct cuts.
@@ -333,28 +334,28 @@
      * @param ecalClusters : List of ECal clusters
      * @return list of cluster pairs
      */
-    protected List<HPSEcalCluster[]> getClusterPairsTopBot() {
+    protected List<Cluster[]> getClusterPairsTopBot() {
         // Create a list to store cluster pairs. 
-        List<HPSEcalCluster[]> clusterPairs = new ArrayList<HPSEcalCluster[]>();
+        List<Cluster[]> clusterPairs = new ArrayList<Cluster[]>();
         
         // Loop over all top-bottom pairs of clusters; higher-energy cluster goes first in the pair
         // To apply pair coincidence time, use only bottom clusters from the 
         // readout cycle pairCoincidence readout cycles ago, and top clusters 
         // from all 2*pairCoincidence+1 previous readout cycles
-        for (HPSEcalCluster botCluster : botClusterQueue.element()) {
-            for (List<HPSEcalCluster> topClusters : topClusterQueue) {
-                for (HPSEcalCluster topCluster : topClusters) {
+        for (Cluster botCluster : botClusterQueue.element()) {
+            for (List<Cluster> topClusters : topClusterQueue) {
+                for (Cluster topCluster : topClusters) {
                 	// The first cluster in a pair should always be
                 	// the higher energy cluster. If the top cluster
                 	// is higher energy, it goes first.
                     if (topCluster.getEnergy() > botCluster.getEnergy()) {
-                        HPSEcalCluster[] clusterPair = {topCluster, botCluster};
+                        Cluster[] clusterPair = {topCluster, botCluster};
                         clusterPairs.add(clusterPair);
                     }
                     
                     // Otherwise, the bottom cluster goes first.
                     else {
-                        HPSEcalCluster[] clusterPair = {botCluster, topCluster};
+                        Cluster[] clusterPair = {botCluster, topCluster};
                         clusterPairs.add(clusterPair);
                     }
                 }
@@ -375,7 +376,7 @@
 	protected boolean triggerDecision(EventHeader event) {
     	// If there is a list of clusters present for this event,
     	// check whether it passes the trigger conditions.
-    	if (event.hasCollection(HPSEcalCluster.class, clusterCollectionName)) {
+    	if (event.hasCollection(Cluster.class, clusterCollectionName)) {
         	return testTrigger();
         }
         
@@ -392,7 +393,7 @@
      * @return Returns <code>true</code> if the cluster passes the cut
      * and <code>false</code> if the cluster does not.
      */
-    private boolean clusterHitCountCut(HPSEcalCluster cluster) {
+    private boolean clusterHitCountCut(Cluster cluster) {
     	return (getValueClusterHitCount(cluster) >= minHitCount);
     }
     
@@ -404,7 +405,7 @@
      * @return Returns <code>true</code> if the cluster passes the cut
      * and <code>false</code> if the cluster does not.
      */
-    private boolean clusterSeedEnergyCut(HPSEcalCluster cluster) {
+    private boolean clusterSeedEnergyCut(Cluster cluster) {
     	// Get the cluster seed energy.
     	double energy = getValueClusterSeedEnergy(cluster);
     	
@@ -421,7 +422,7 @@
      * @return Returns <code>true</code> if the cluster passes the cut
      * and <code>false</code> if the cluster does not.
      */
-    private boolean clusterTotalEnergyCut(HPSEcalCluster cluster) {
+    private boolean clusterTotalEnergyCut(Cluster cluster) {
     	// Get the total cluster energy.
     	double energy = getValueClusterTotalEnergy(cluster);
     	
@@ -437,8 +438,8 @@
      * be calculated.
      * @return Returns the distance between the clusters.
      */
-    private double getClusterDistance(HPSEcalCluster cluster) {
-        return Math.hypot(cluster.getSeedHit().getPosition()[0] - originX, cluster.getSeedHit().getPosition()[1]);
+    private double getClusterDistance(Cluster cluster) {
+        return Math.hypot(cluster.getCalorimeterHits().get(0).getPosition()[0] - originX, cluster.getCalorimeterHits().get(0).getPosition()[1]);
     }
     
     /**
@@ -448,7 +449,7 @@
      * derived.
      * @return Returns the cut value.
      */
-    private double getValueClusterTotalEnergy(HPSEcalCluster cluster) {
+    private double getValueClusterTotalEnergy(Cluster cluster) {
     	return cluster.getEnergy();
     }
     
@@ -459,7 +460,7 @@
      * derived.
      * @return Returns the cut value.
      */
-    private int getValueClusterHitCount(HPSEcalCluster cluster) {
+    private int getValueClusterHitCount(Cluster cluster) {
     	return cluster.getCalorimeterHits().size();
     }
     
@@ -470,8 +471,8 @@
      * derived.
      * @return Returns the cut value.
      */
-    private double getValueClusterSeedEnergy(HPSEcalCluster cluster) {
-    	return cluster.getSeedHit().getCorrectedEnergy();
+    private double getValueClusterSeedEnergy(Cluster cluster) {
+    	return cluster.getCalorimeterHits().get(0).getCorrectedEnergy();
     }
     
     /**
@@ -481,11 +482,11 @@
      * be calculated.
      * @return Returns the cut value.
      */
-    private double getValueCoplanarity(HPSEcalCluster[] clusterPair) {
+    private double getValueCoplanarity(Cluster[] clusterPair) {
     	// Get the cluster angles.
     	double[] clusterAngle = new double[2];
     	for(int i = 0; i < 2; i++) {
-            double position[] = clusterPair[i].getSeedHit().getPosition();
+            double position[] = clusterPair[i].getCalorimeterHits().get(0).getPosition();
             //clusterAngle[i] = Math.toDegrees(Math.atan2(position[1], position[0] - originX));
             //clusterAngle[i] = (clusterAngle[i] + 180.0) % 180.0;
             clusterAngle[i] = (Math.toDegrees(Math.atan2(position[1], position[0] - originX)) + 180.0) % 180.0;
@@ -502,7 +503,7 @@
      * be calculated.
      * @return Returns the cut value.
      */
-    private double getValueEnergyDifference(HPSEcalCluster[] clusterPair) {
+    private double getValueEnergyDifference(Cluster[] clusterPair) {
     	return clusterPair[0].getEnergy() - clusterPair[1].getEnergy();
     }
     
@@ -513,7 +514,7 @@
      * be calculated.
      * @return Returns the cut value.
      */
-    private double getValueEnergySlope(HPSEcalCluster[] clusterPair) {
+    private double getValueEnergySlope(Cluster[] clusterPair) {
     	// E + R*F
     	// Get the low energy cluster energy.
     	double slopeParamE = clusterPair[1].getEnergy();
@@ -532,7 +533,7 @@
      * be calculated.
      * @return Returns the cut value.
      */
-    private double getValueEnergySum(HPSEcalCluster[] clusterPair) {
+    private double getValueEnergySum(Cluster[] clusterPair) {
     	return clusterPair[0].getEnergy() + clusterPair[1].getEnergy();
     }
     
@@ -544,7 +545,7 @@
      * @return Returns <code>true</code> if the cluster pair passes
      * the cut and <code>false</code> if it does not.
      */
-    private boolean pairCoplanarityCut(HPSEcalCluster[] clusterPair) {
+    private boolean pairCoplanarityCut(Cluster[] clusterPair) {
         return (getValueCoplanarity(clusterPair) < coplanarityHigh);
     }
     
@@ -556,7 +557,7 @@
      * @return Returns <code>true</code> if the cluster pair passes
      * the cut and <code>false</code> if it does not.
      */
-    private boolean pairEnergyDifferenceCut(HPSEcalCluster[] clusterPair) {
+    private boolean pairEnergyDifferenceCut(Cluster[] clusterPair) {
         return (getValueEnergyDifference(clusterPair) < energyDifferenceHigh);
     }
     
@@ -568,7 +569,7 @@
      * @param clusterPair : pair of clusters
      * @return true if pair is found, false otherwise
      */
-    private boolean pairEnergySlopeCut(HPSEcalCluster[] clusterPair) {
+    private boolean pairEnergySlopeCut(Cluster[] clusterPair) {
     	return (getValueEnergySlope(clusterPair) > energySlopeLow);
     }
     
@@ -580,7 +581,7 @@
      * @return Returns <code>true</code> if the cluster pair passes
      * the cut and <code>false</code> if it does not.
      */
-    private boolean pairEnergySumCut(HPSEcalCluster[] clusterPair) {
+    private boolean pairEnergySumCut(Cluster[] clusterPair) {
     	// Get the energy sum value.
     	double energySum = getValueEnergySum(clusterPair);
     	
@@ -701,13 +702,13 @@
 	 */
     private boolean testTrigger() {
     	// Get the list of cluster pairs.
-    	List<HPSEcalCluster[]> clusterPairs = getClusterPairsTopBot();
+    	List<Cluster[]> clusterPairs = getClusterPairsTopBot();
         
         // Iterate over the cluster pairs and perform each of the cluster
         // pair cuts on them. A cluster pair that passes all of the
         // cuts registers as a trigger.
     	pairLoop:
-        for (HPSEcalCluster[] clusterPair : clusterPairs) {
+        for (Cluster[] clusterPair : clusterPairs) {
     		// Increment the number of processed cluster pairs.
     		allPairs++;
     		
@@ -759,16 +760,16 @@
      * 
      * @param clusterList - The clusters to add to the queues.
      */
-    private void updateClusterQueues(List<HPSEcalCluster> clusterList) {
+    private void updateClusterQueues(List<Cluster> clusterList) {
     	// Create lists to store the top and bottom clusters.
-        ArrayList<HPSEcalCluster> topClusterList = new ArrayList<HPSEcalCluster>();
-        ArrayList<HPSEcalCluster> botClusterList = new ArrayList<HPSEcalCluster>();
+        ArrayList<Cluster> topClusterList = new ArrayList<Cluster>();
+        ArrayList<Cluster> botClusterList = new ArrayList<Cluster>();
         
         // Loop over the clusters in the cluster list.
-        for (HPSEcalCluster cluster : clusterList) {
+        for (Cluster cluster : clusterList) {
         	// If the cluster is on the top of the calorimeter, it
         	// goes into the top cluster list.
-            if (cluster.getSeedHit().getIdentifierFieldValue("iy") > 0) {
+            if (cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy") > 0) {
                 topClusterList.add(cluster);
             }
             

Modified: java/trunk/users/src/main/java/org/hps/users/luca/FEETrigger.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/luca/FEETrigger.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/luca/FEETrigger.java	Tue Jan  6 12:54:22 2015
@@ -3,8 +3,7 @@
 import java.util.List;
 
 import org.hps.readout.ecal.TriggerDriver;
-import org.hps.recon.ecal.HPSEcalCluster;
-
+import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
 
 /**
@@ -72,18 +71,18 @@
 	 */
 	@Override
 	public void process(EventHeader event) {
-		if(event.hasCollection(HPSEcalCluster.class, clusterCollectionName)) {
+		if(event.hasCollection(Cluster.class, clusterCollectionName)) {
 			// Get the list of clusters from the event.
-			List<HPSEcalCluster> clusterList = event.get(HPSEcalCluster.class, clusterCollectionName);
+			List<Cluster> clusterList = event.get(Cluster.class, clusterCollectionName);
 			
 			// Loop over the clusters and check for any that pass the threshold.
-			for(HPSEcalCluster cluster : clusterList) {
+			for(Cluster cluster : clusterList) {
 				// Check if the current cluster exceeds the energy
 				// threshold. If it does not, continue to the next
 				// cluster in the list.
 				if(cluster.getEnergy() > energyThreshold) {
 					// Get the x-index of the seed hit.
-					int ix = cluster.getSeedHit().getIdentifierFieldValue("ix");
+					int ix = cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix");
 					
 					// Determine in which region the cluster is located
 					// and increment the counter for that region. Zones
@@ -171,7 +170,7 @@
 	protected boolean triggerDecision(EventHeader event) {
 		// Check if the event has clusters. An event with no clusters
 		// should never result in a trigger.
-		if(event.hasCollection(HPSEcalCluster.class, clusterCollectionName)) {
+		if(event.hasCollection(Cluster.class, clusterCollectionName)) {
 			// Check if any of the zone counts are high enough to trigger.
 			return triggerTest();
 		}

Modified: java/trunk/users/src/main/java/org/hps/users/luca/FEETrigger2.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/luca/FEETrigger2.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/luca/FEETrigger2.java	Tue Jan  6 12:54:22 2015
@@ -3,8 +3,7 @@
 import java.util.List;
 
 import org.hps.readout.ecal.TriggerDriver;
-import org.hps.recon.ecal.HPSEcalCluster;
-
+import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
 
 /**
@@ -73,18 +72,18 @@
 	 */
 	@Override
 	public void process(EventHeader event) {
-		if(event.hasCollection(HPSEcalCluster.class, clusterCollectionName)) {
+		if(event.hasCollection(Cluster.class, clusterCollectionName)) {
 			// Get the list of clusters from the event.
-			List<HPSEcalCluster> clusterList = event.get(HPSEcalCluster.class, clusterCollectionName);
+			List<Cluster> clusterList = event.get(Cluster.class, clusterCollectionName);
 			
 			// Loop over the clusters and check for any that pass the threshold.
-			for(HPSEcalCluster cluster : clusterList) {
+			for(Cluster cluster : clusterList) {
 				// Check if the current cluster exceeds the energy
 				// threshold. If it does not, continue to the next
 				// cluster in the list.
 				if(cluster.getEnergy() > energyThreshold) {
 					// Get the x-index of the seed hit.
-					int ix = cluster.getSeedHit().getIdentifierFieldValue("ix");
+					int ix = cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix");
 					
 					// Determine in which region the cluster is located
 					// and increment the counter for that region. Zones
@@ -115,7 +114,7 @@
 	protected boolean triggerDecision(EventHeader event) {
 		// Check if the event has clusters. An event with no clusters
 		// should never result in a trigger.
-		if(event.hasCollection(HPSEcalCluster.class, clusterCollectionName)) {
+		if(event.hasCollection(Cluster.class, clusterCollectionName)) {
 			// Check if any of the zone counts are high enough to trigger.
 			return triggerTest();
 		}

Modified: java/trunk/users/src/main/java/org/hps/users/luca/FeeTriggerAna.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/luca/FeeTriggerAna.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/luca/FeeTriggerAna.java	Tue Jan  6 12:54:22 2015
@@ -5,30 +5,17 @@
  */
 
 package org.hps.users.luca;
-import hep.aida.IHistogram1D;
-import hep.aida.IHistogram2D;
+import java.io.FileWriter;
 import java.io.IOException;
-import java.util.*;
-import java.io.PrintWriter;
 import java.util.ArrayList;
-import java.util.EnumSet;
 import java.util.LinkedList;
 import java.util.List;
-import java.util.Queue;
-import org.hps.readout.ecal.ClockSingleton;
+
 import org.hps.readout.ecal.TriggerDriver;
-
-import org.hps.recon.ecal.ECalUtils;
-import org.hps.recon.ecal.HPSEcalCluster;
-
+import org.lcsim.event.CalorimeterHit;
+import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
-import org.lcsim.geometry.Detector;
-import org.lcsim.util.aida.AIDA;
 import org.lcsim.util.Driver;
-import hep.aida.*;
-
-import java.io.FileWriter;
-import org.lcsim.event.CalorimeterHit;
 
 
 /**
@@ -43,7 +30,7 @@
     int TotalCluster=0;
     double timeDifference;
     double energyThreshold=0;
-    private LinkedList<ArrayList<HPSEcalCluster>> clusterBuffer;
+    private LinkedList<ArrayList<Cluster>> clusterBuffer;
     protected String clusterCollectionName = "EcalClusters";
     
  //AIDA aida = AIDA.defaultInstance();
@@ -91,12 +78,12 @@
 public void startOfData(){
 
     //initialize the clusterbuffer
-    clusterBuffer= new LinkedList<ArrayList<HPSEcalCluster>>();
+    clusterBuffer= new LinkedList<ArrayList<Cluster>>();
  //populate the clusterbuffer with (2*clusterWindow + 1)
  // empty events, representing the fact that the first few events will not have any events in the past portion of the buffer
     int bufferSize=(2*clusterWindow)+1;
     for(int i = 0;i<bufferSize; i++){
-    clusterBuffer.add(new ArrayList<HPSEcalCluster>(0));
+    clusterBuffer.add(new ArrayList<Cluster>(0));
     }
     
     
@@ -155,21 +142,21 @@
      //get the clusters from the event
     if(TriggerDriver.triggerBit()){ //if they have triggered!
       
-     if(event.hasCollection(HPSEcalCluster.class, "EcalClusters")) {
+     if(event.hasCollection(Cluster.class, "EcalClusters")) {
          
-        List<HPSEcalCluster> clusterList =event.get(HPSEcalCluster.class,clusterCollectionName );    
+        List<Cluster> clusterList =event.get(Cluster.class,clusterCollectionName );    
              
      //put the clusters in the arraylist
      
-     ArrayList<HPSEcalCluster> clusterSet = new ArrayList<HPSEcalCluster>(); 
-     for(HPSEcalCluster cluster : clusterList){
+     ArrayList<Cluster> clusterSet = new ArrayList<Cluster>(); 
+     for(Cluster cluster : clusterList){
       //   clusterEne.fill(cluster.getEnergy());
          TotalCluster++;
         // clusterSet.add(cluster);
      int id;
      id=getCrystal(cluster);
      try{
-      writer.append(id + " " + cluster.getEnergy()+ " " + cluster.getSize() + " " + cluster.getSeedHit().getRawEnergy() + " " + cluster.getSeedHit().getIdentifierFieldValue("ix")+" " +cluster.getSeedHit().getIdentifierFieldValue("iy"));
+      writer.append(id + " " + cluster.getEnergy()+ " " + cluster.getSize() + " " + cluster.getCalorimeterHits().get(0).getRawEnergy() + " " + cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix")+" " +cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy"));
      /*for(CalorimeterHit hit : cluster.getCalorimeterHits())
      {writer.append(hit.getRawEnergy()+ " ");
        }*/
@@ -199,7 +186,7 @@
   */
  public void ClusterAnalyzer(){
  //get the cluster list at the current time in the buffer
-ArrayList<HPSEcalCluster> currentClusters = clusterBuffer.get(clusterWindow+1);
+ArrayList<Cluster> currentClusters = clusterBuffer.get(clusterWindow+1);
 
 
  ///cerca i cluster nella posizione che ci interessa poi chiama la funzione che decide se sono "isolati"
@@ -210,20 +197,20 @@
       posy=y;
          
          //ciclo for nel set di currentCluster, ovvero il set nel mezzo del buffer
-    for(HPSEcalCluster cluster : currentClusters){ 
-    if((cluster.getSeedHit().getIdentifierFieldValue("ix")== posx) && (cluster.getSeedHit().getIdentifierFieldValue("iy")==posy )&& (cluster.getEnergy() > energyThreshold)){
+    for(Cluster cluster : currentClusters){ 
+    if((cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix")== posx) && (cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy")==posy )&& (cluster.getEnergy() > energyThreshold)){
         
            if(ClusterChecker(cluster)){
             int id;
             Clustercount++;
            id=getCrystal(cluster);
            try{
-     writer.append(id + " " + cluster.getEnergy()+ " " + cluster.getSize() + " " + cluster.getSeedHit().getRawEnergy() + " " + cluster.getSeedHit().getIdentifierFieldValue("ix")+" " +cluster.getSeedHit().getIdentifierFieldValue("iy"));
+     writer.append(id + " " + cluster.getEnergy()+ " " + cluster.getSize() + " " + cluster.getCalorimeterHits().get(0).getRawEnergy() + " " + cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix")+" " +cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy"));
      /*for(CalorimeterHit hit : cluster.getCalorimeterHits())
      {writer.append(hit.getRawEnergy()+ " ");
        }*/
      writer.append("\n");
-  //  SeedHistograms.get(id-1).fill(cluster.getSeedHit().getRawEnergy());
+  //  SeedHistograms.get(id-1).fill(cluster.getCalorimeterHits().get(0).getRawEnergy());
   //   ClustHistograms.get(id-1).fill(cluster.getEnergy());
      }
      
@@ -251,19 +238,19 @@
   * @return 
   */
  
-public boolean ClusterChecker (HPSEcalCluster cluster){
+public boolean ClusterChecker (Cluster cluster){
 //System.out.println("Sono nel clustercheck! \n");
     
 boolean check=true;
   
     //ciclo sulle liste del buffer
 loops:
-     for(ArrayList<HPSEcalCluster> currentList : clusterBuffer){
+     for(ArrayList<Cluster> currentList : clusterBuffer){
      //ciclo sui cluster della lista corrente
-         for(HPSEcalCluster currentcluster : currentList){
+         for(Cluster currentcluster : currentList){
            if(currentcluster!= cluster){
              //if there is a cluster in the buffer that is in the considered radius in a time window lower than expected, the loop is brocken and the analyzed cluster is not good
-         if(!((currentcluster.getSeedHit().getIdentifierFieldValue("ix") < posx-radius || currentcluster.getSeedHit().getIdentifierFieldValue("ix")> posx+radius)&& (currentcluster.getSeedHit().getIdentifierFieldValue("iy")< posy-radius || currentcluster.getSeedHit().getIdentifierFieldValue("iy")> posy+radius))&& Math.abs(cluster.getSeedHit().getTime()-currentcluster.getSeedHit().getTime())<timeDifference){
+         if(!((currentcluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix") < posx-radius || currentcluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix")> posx+radius)&& (currentcluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy")< posy-radius || currentcluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy")> posy+radius))&& Math.abs(cluster.getCalorimeterHits().get(0).getTime()-currentcluster.getCalorimeterHits().get(0).getTime())<timeDifference){
          check=false;
          break loops;
          }
@@ -284,10 +271,10 @@
       
  
  
- public int getCrystal (HPSEcalCluster cluster){
+ public int getCrystal (Cluster cluster){
  int x,y,id=0;
- x= (-1)*cluster.getSeedHit().getIdentifierFieldValue("ix");
- y= cluster.getSeedHit().getIdentifierFieldValue("iy");
+ x= (-1)*cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix");
+ y= cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy");
  
  if(y==5){
  if(x<0)

Modified: java/trunk/users/src/main/java/org/hps/users/luca/HitSeedHitConf.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/luca/HitSeedHitConf.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/luca/HitSeedHitConf.java	Tue Jan  6 12:54:22 2015
@@ -5,31 +5,14 @@
  */
 
 package org.hps.users.luca;
-import hep.aida.IHistogram1D;
-import hep.aida.IHistogram2D;
+import java.io.FileWriter;
 import java.io.IOException;
-import java.util.*;
-import java.io.PrintWriter;
-import java.util.ArrayList;
-import java.util.EnumSet;
-import java.util.LinkedList;
 import java.util.List;
-import java.util.Queue;
-import org.hps.readout.ecal.ClockSingleton;
-import org.hps.readout.ecal.TriggerDriver;
-
-import org.hps.recon.ecal.ECalUtils;
-import org.hps.recon.ecal.HPSEcalCluster;
+
+import org.lcsim.event.CalorimeterHit;
 import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
-import org.lcsim.geometry.Detector;
-import org.lcsim.util.aida.AIDA;
 import org.lcsim.util.Driver;
-import hep.aida.*;
-import hep.aida.IHistogram3D;
-import java.io.FileWriter;
-import org.lcsim.event.CalorimeterHit;
-import org.lcsim.event.MCParticle;
 
 /**
  * 
@@ -105,13 +88,13 @@
            
      
      //get the clusters from the event
-     if(event.hasCollection(HPSEcalCluster.class, "EcalClusters")) {
-        List<HPSEcalCluster> clusterList =event.get(HPSEcalCluster.class,clusterCollectionName );    
-           for(HPSEcalCluster cluster : clusterList){
+     if(event.hasCollection(Cluster.class, "EcalClusters")) {
+        List<Cluster> clusterList =event.get(Cluster.class,clusterCollectionName );    
+           for(Cluster cluster : clusterList){
            if(cluster.getEnergy()>1.5){
            int id=getCrystal(cluster);
            try{
-               writer.append(id + " " + cluster.getSeedHit().getRawEnergy() + " " + cluster.getEnergy()+"\n");
+               writer.append(id + " " + cluster.getCalorimeterHits().get(0).getRawEnergy() + " " + cluster.getEnergy()+"\n");
            }
            catch(IOException e ){System.err.println("Error writing to output for event display");}   
            
@@ -144,10 +127,10 @@
       
  
  
-public int getCrystal (HPSEcalCluster cluster){
+public int getCrystal (Cluster cluster){
  int x,y,id=0;
- x= (-1)*cluster.getSeedHit().getIdentifierFieldValue("ix");
- y= cluster.getSeedHit().getIdentifierFieldValue("iy");
+ x= (-1)*cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix");
+ y= cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy");
  
  if(y==5){
  if(x<0)

Modified: java/trunk/users/src/main/java/org/hps/users/luca/PositronAna.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/luca/PositronAna.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/luca/PositronAna.java	Tue Jan  6 12:54:22 2015
@@ -6,32 +6,17 @@
 
 package org.hps.users.luca;
 import hep.aida.IHistogram1D;
-import hep.aida.IHistogram2D;
+
+import java.io.FileWriter;
 import java.io.IOException;
-import java.util.*;
-import java.io.PrintWriter;
-import java.util.ArrayList;
-import java.util.EnumSet;
-import java.util.LinkedList;
 import java.util.List;
-import java.util.Queue;
-import org.hps.readout.ecal.ClockSingleton;
-import org.hps.readout.ecal.TriggerDriver;
-
-import org.hps.recon.ecal.ECalUtils;
-import org.hps.recon.ecal.HPSEcalCluster;
+
+import org.lcsim.event.CalorimeterHit;
 import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
-import org.lcsim.geometry.Detector;
+import org.lcsim.event.ReconstructedParticle;
+import org.lcsim.util.Driver;
 import org.lcsim.util.aida.AIDA;
-import org.lcsim.util.Driver;
-import hep.aida.*;
-import hep.aida.IHistogram3D;
-import java.io.FileWriter;
-import org.lcsim.event.ReconstructedParticle;
-import org.lcsim.event.CalorimeterHit;
-import org.lcsim.event.MCParticle;
-import org.hps.recon.particle.HpsReconParticleDriver;
 /**
  *
  * @author Luca
@@ -111,7 +96,7 @@
       cluscount++;
           int id=getCrystal(cluster);
           try{
-          writer.append(id + " " + cluster.getEnergy() + " " + cluster.getSize() + " " + HPSEcalCluster.getSeedHit(cluster).getCorrectedEnergy() + " " + HPSEcalCluster.getSeedHit(cluster).getIdentifierFieldValue("ix")+" " +HPSEcalCluster.getSeedHit(cluster).getIdentifierFieldValue("iy")+ "\n");
+          writer.append(id + " " + cluster.getEnergy() + " " + cluster.getSize() + " " + cluster.getCalorimeterHits().get(0).getCorrectedEnergy() + " " + cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix")+" " +cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy")+ "\n");
           }
           
         catch(IOException e ){System.err.println("Error writing to output for event display");} 
@@ -131,8 +116,8 @@
    
  public int getCrystal (Cluster cluster){
  int x,y,id=0;
- x= (-1)*HPSEcalCluster.getSeedHit(cluster).getIdentifierFieldValue("ix");
- y= HPSEcalCluster.getSeedHit(cluster).getIdentifierFieldValue("iy");
+ x= (-1)*cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix");
+ y= cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy");
  
  if(y==5){
  if(x<0)

Modified: java/trunk/users/src/main/java/org/hps/users/luca/RawDataReader.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/luca/RawDataReader.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/luca/RawDataReader.java	Tue Jan  6 12:54:22 2015
@@ -8,17 +8,13 @@
 
 import java.io.FileWriter;
 import java.io.IOException;
-import java.util.ArrayList;
 import java.util.List;
-import org.hps.recon.ecal.HPSRawCalorimeterHit;
+
 import org.lcsim.event.CalorimeterHit;
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.RawCalorimeterHit;
+import org.lcsim.geometry.IDDecoder;
 import org.lcsim.util.Driver;
-import org.lcsim.lcio.LCIOConstants;
-import java.io.PrintWriter;
-import org.lcsim.geometry.IDDecoder;
-import org.lcsim.event.CalorimeterHit;
 
 /**
  *

Modified: java/trunk/users/src/main/java/org/hps/users/luca/ReconData.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/luca/ReconData.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/luca/ReconData.java	Tue Jan  6 12:54:22 2015
@@ -6,30 +6,18 @@
 
 package org.hps.users.luca;
 import hep.aida.IHistogram1D;
-import hep.aida.IHistogram2D;
+
+import java.io.FileWriter;
 import java.io.IOException;
-import java.util.*;
-import java.io.PrintWriter;
 import java.util.ArrayList;
-import java.util.EnumSet;
 import java.util.LinkedList;
 import java.util.List;
-import java.util.Queue;
-import org.hps.readout.ecal.ClockSingleton;
-import org.hps.readout.ecal.TriggerDriver;
-
-import org.hps.recon.ecal.ECalUtils;
-import org.hps.recon.ecal.HPSEcalCluster;
+
+import org.lcsim.event.CalorimeterHit;
 import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
-import org.lcsim.geometry.Detector;
+import org.lcsim.util.Driver;
 import org.lcsim.util.aida.AIDA;
-import org.lcsim.util.Driver;
-import hep.aida.*;
-import hep.aida.IHistogram3D;
-import java.io.FileWriter;
-import org.lcsim.event.CalorimeterHit;
-import org.lcsim.event.MCParticle;
 
 /**
  * 
@@ -199,19 +187,19 @@
          
          //ciclo for nel set di currentCluster, ovvero il set nel mezzo del buffer
     for(Cluster cluster : currentClusters){ 
-    if((HPSEcalCluster.getSeedHit(cluster).getIdentifierFieldValue("ix")== posx) && (HPSEcalCluster.getSeedHit(cluster).getIdentifierFieldValue("iy")==posy )&& (cluster.getEnergy() > energyThreshold)){
+    if((cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix")== posx) && (cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy")==posy )&& (cluster.getEnergy() > energyThreshold)){
         
            if(ClusterChecker(cluster)){
             int id;
             Clustercount++;
            id=getCrystal(cluster);
            try{
-     writer.append(id + " " + cluster.getEnergy()+ " " + cluster.getSize() + " " + HPSEcalCluster.getSeedHit(cluster).getCorrectedEnergy() + " " + HPSEcalCluster.getSeedHit(cluster).getIdentifierFieldValue("ix")+" " +HPSEcalCluster.getSeedHit(cluster).getIdentifierFieldValue("iy"));
+     writer.append(id + " " + cluster.getEnergy()+ " " + cluster.getSize() + " " + cluster.getCalorimeterHits().get(0).getCorrectedEnergy() + " " + cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix")+" " +cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy"));
      /*for(CalorimeterHit hit : cluster.getCalorimeterHits())
      {writer.append(hit.getRawEnergy()+ " ");
        }*/
      writer.append("\n");
-     SeedHistograms.get(id-1).fill(HPSEcalCluster.getSeedHit(cluster).getCorrectedEnergy());
+     SeedHistograms.get(id-1).fill(cluster.getCalorimeterHits().get(0).getCorrectedEnergy());
      ClustHistograms.get(id-1).fill(cluster.getEnergy());
     
      }
@@ -252,7 +240,7 @@
          for(Cluster currentcluster : currentList){
            if(currentcluster!= cluster){
              //if there is a cluster in the buffer that is in the considered radius in a time window lower than expected, the loop is brocken and the analyzed cluster is not good
-         if(!((HPSEcalCluster.getSeedHit(currentcluster).getIdentifierFieldValue("ix") < posx-radius || HPSEcalCluster.getSeedHit(currentcluster).getIdentifierFieldValue("ix")> posx+radius)&& (HPSEcalCluster.getSeedHit(currentcluster).getIdentifierFieldValue("iy")< posy-radius || HPSEcalCluster.getSeedHit(currentcluster).getIdentifierFieldValue("iy")> posy+radius))&& Math.abs(HPSEcalCluster.getSeedHit(cluster).getTime()-HPSEcalCluster.getSeedHit(currentcluster).getTime())<timeDifference){
+         if(!((cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix") < posx-radius || cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix")> posx+radius)&& (cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy")< posy-radius || cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy")> posy+radius))&& Math.abs(cluster.getCalorimeterHits().get(0).getTime()-cluster.getCalorimeterHits().get(0).getTime())<timeDifference){
          check=false;
          break loops;
          }
@@ -275,8 +263,8 @@
  
  public int getCrystal (Cluster cluster){
  int x,y,id=0;
- x= (-1)*HPSEcalCluster.getSeedHit(cluster).getIdentifierFieldValue("ix");
- y= HPSEcalCluster.getSeedHit(cluster).getIdentifierFieldValue("iy");
+ x= (-1)*cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix");
+ y= cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy");
  
  if(y==5){
  if(x<0)

Modified: java/trunk/users/src/main/java/org/hps/users/luca/ReconDataPos.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/luca/ReconDataPos.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/luca/ReconDataPos.java	Tue Jan  6 12:54:22 2015
@@ -6,30 +6,19 @@
 
 package org.hps.users.luca;
 import hep.aida.IHistogram1D;
-import hep.aida.IHistogram2D;
+
+import java.io.FileWriter;
 import java.io.IOException;
-import java.util.*;
-import java.io.PrintWriter;
 import java.util.ArrayList;
-import java.util.EnumSet;
 import java.util.LinkedList;
 import java.util.List;
-import java.util.Queue;
-
-
-import org.hps.recon.ecal.ECalUtils;
-import org.hps.recon.ecal.HPSEcalCluster;
+
+import org.lcsim.event.CalorimeterHit;
 import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
-import org.lcsim.geometry.Detector;
+import org.lcsim.event.ReconstructedParticle;
+import org.lcsim.util.Driver;
 import org.lcsim.util.aida.AIDA;
-import org.lcsim.util.Driver;
-import hep.aida.*;
-import hep.aida.IHistogram3D;
-import java.io.FileWriter;
-import org.lcsim.event.CalorimeterHit;
-import org.lcsim.event.MCParticle;
-import org.lcsim.event.ReconstructedParticle;
 
 /**
  * 
@@ -171,7 +160,7 @@
       
           int id=getCrystal(cluster);
           try{
-          writer.append(id + " " + cluster.getEnergy() + " " + cluster.getSize() + " " + HPSEcalCluster.getSeedHit(cluster).getCorrectedEnergy() + " " + HPSEcalCluster.getSeedHit(cluster).getIdentifierFieldValue("ix")+" " +HPSEcalCluster.getSeedHit(cluster).getIdentifierFieldValue("iy")+ "\n");
+          writer.append(id + " " + cluster.getEnergy() + " " + cluster.getSize() + " " + cluster.getCalorimeterHits().get(0).getCorrectedEnergy() + " " + cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix")+" " +cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy")+ "\n");
           }
           
         catch(IOException e ){System.err.println("Error writing to output for event display");} 
@@ -237,19 +226,19 @@
          
          //ciclo for nel set di currentCluster, ovvero il set nel mezzo del buffer
     for(Cluster cluster : currentClusters){ 
-    if((HPSEcalCluster.getSeedHit(cluster).getIdentifierFieldValue("ix")== posx) && (HPSEcalCluster.getSeedHit(cluster).getIdentifierFieldValue("iy")==posy )){
+    if((cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix")== posx) && (cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy")==posy )){
         
            if(ClusterChecker(cluster)){
             int id;
             Clustercount++;
            id=getCrystal(cluster);
            try{
-     writer.append(id + " " + cluster.getEnergy()+ " " + cluster.getSize() + " " + HPSEcalCluster.getSeedHit(cluster).getCorrectedEnergy() + " " + HPSEcalCluster.getSeedHit(cluster).getIdentifierFieldValue("ix")+" " +HPSEcalCluster.getSeedHit(cluster).getIdentifierFieldValue("iy"));
+     writer.append(id + " " + cluster.getEnergy()+ " " + cluster.getSize() + " " + cluster.getCalorimeterHits().get(0).getCorrectedEnergy() + " " + cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix")+" " +cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy"));
      /*for(CalorimeterHit hit : cluster.getCalorimeterHits())
      {writer.append(hit.getRawEnergy()+ " ");
        }*/
      writer.append("\n");
-     SeedHistograms.get(id-1).fill(HPSEcalCluster.getSeedHit(cluster).getCorrectedEnergy());
+     SeedHistograms.get(id-1).fill(cluster.getCalorimeterHits().get(0).getCorrectedEnergy());
      ClustHistograms.get(id-1).fill(cluster.getEnergy());
     
      }
@@ -290,7 +279,7 @@
          for(Cluster currentcluster : currentList){
            if(currentcluster!= cluster){
              //if there is a cluster in the buffer that is in the considered radius in a time window lower than expected, the loop is brocken and the analyzed cluster is not good
-         if(!((HPSEcalCluster.getSeedHit(currentcluster).getIdentifierFieldValue("ix") < posx-radius || HPSEcalCluster.getSeedHit(currentcluster).getIdentifierFieldValue("ix")> posx+radius)&& (HPSEcalCluster.getSeedHit(currentcluster).getIdentifierFieldValue("iy")< posy-radius || HPSEcalCluster.getSeedHit(currentcluster).getIdentifierFieldValue("iy")> posy+radius))&& Math.abs(HPSEcalCluster.getSeedHit(cluster).getTime()-HPSEcalCluster.getSeedHit(currentcluster).getTime())<timeDifference){
+         if(!((cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix") < posx-radius || cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix")> posx+radius)&& (cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy")< posy-radius || cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy")> posy+radius))&& Math.abs(cluster.getCalorimeterHits().get(0).getTime()-cluster.getCalorimeterHits().get(0).getTime())<timeDifference){
          check=false;
          break loops;
          }
@@ -313,8 +302,8 @@
  
  public int getCrystal (Cluster cluster){
  int x,y,id=0;
- x= (-1)*HPSEcalCluster.getSeedHit(cluster).getIdentifierFieldValue("ix");
- y= HPSEcalCluster.getSeedHit(cluster).getIdentifierFieldValue("iy");
+ x= (-1)*cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix");
+ y= cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy");
  
  if(y==5){
  if(x<0)

Modified: java/trunk/users/src/main/java/org/hps/users/luca/TriggerAna.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/luca/TriggerAna.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/luca/TriggerAna.java	Tue Jan  6 12:54:22 2015
@@ -5,30 +5,17 @@
  */
 
 package org.hps.users.luca;
-import hep.aida.IHistogram1D;
-import hep.aida.IHistogram2D;
+import java.io.FileWriter;
 import java.io.IOException;
-import java.util.*;
-import java.io.PrintWriter;
 import java.util.ArrayList;
-import java.util.EnumSet;
 import java.util.LinkedList;
 import java.util.List;
-import java.util.Queue;
-import org.hps.readout.ecal.ClockSingleton;
+
 import org.hps.readout.ecal.TriggerDriver;
-
-import org.hps.recon.ecal.ECalUtils;
-import org.hps.recon.ecal.HPSEcalCluster;
-
+import org.lcsim.event.CalorimeterHit;
+import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
-import org.lcsim.geometry.Detector;
-import org.lcsim.util.aida.AIDA;
 import org.lcsim.util.Driver;
-import hep.aida.*;
-
-import java.io.FileWriter;
-import org.lcsim.event.CalorimeterHit;
 
 
 /**
@@ -43,7 +30,7 @@
     int TotalCluster=0;
     double timeDifference;
     double energyThreshold=0;
-    private LinkedList<ArrayList<HPSEcalCluster>> clusterBuffer;
+    private LinkedList<ArrayList<Cluster>> clusterBuffer;
     protected String clusterCollectionName = "EcalClusters";
     
  //AIDA aida = AIDA.defaultInstance();
@@ -91,12 +78,12 @@
 public void startOfData(){
 
     //initialize the clusterbuffer
-    clusterBuffer= new LinkedList<ArrayList<HPSEcalCluster>>();
+    clusterBuffer= new LinkedList<ArrayList<Cluster>>();
  //populate the clusterbuffer with (2*clusterWindow + 1)
  // empty events, representing the fact that the first few events will not have any events in the past portion of the buffer
     int bufferSize=(2*clusterWindow)+1;
     for(int i = 0;i<bufferSize; i++){
-    clusterBuffer.add(new ArrayList<HPSEcalCluster>(0));
+    clusterBuffer.add(new ArrayList<Cluster>(0));
     }
     
     
@@ -140,14 +127,14 @@
  @Override  
  public void process (EventHeader event){
    
-         /* if(event.hasCollection(HPSEcalCluster.class, "EcalClusters")) {
-        List<HPSEcalCluster> clusterList =event.get(HPSEcalCluster.class,clusterCollectionName );   
-            for(HPSEcalCluster cluster : clusterList){
+         /* if(event.hasCollection(Cluster.class, "EcalClusters")) {
+        List<Cluster> clusterList =event.get(Cluster.class,clusterCollectionName );   
+            for(Cluster cluster : clusterList){
                 
                 if(cluster.getEnergy()>energyThreshold){
                  int idd=getCrystal(cluster); 
                     try{
-                        writer3.append(idd + " " + cluster.getEnergy()+ " " + cluster.getSize() + " " + cluster.getSeedHit().getRawEnergy() + " " + cluster.getSeedHit().getIdentifierFieldValue("ix")+" " +cluster.getSeedHit().getIdentifierFieldValue("iy")+"\n");
+                        writer3.append(idd + " " + cluster.getEnergy()+ " " + cluster.getSize() + " " + cluster.getCalorimeterHits().get(0).getRawEnergy() + " " + cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix")+" " +cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy")+"\n");
                         }
                     catch(IOException e ){System.err.println("Error writing to output for event display");} 
                  }
@@ -158,20 +145,20 @@
      
      //get the clusters from the event IF they are triggered
     if(TriggerDriver.triggerBit()){
-     if(event.hasCollection(HPSEcalCluster.class, "EcalClusters")) {
-        List<HPSEcalCluster> clusterList =event.get(HPSEcalCluster.class,clusterCollectionName );    
+     if(event.hasCollection(Cluster.class, "EcalClusters")) {
+        List<Cluster> clusterList =event.get(Cluster.class,clusterCollectionName );    
              
      //put the clusters in the arraylist
      
      
-     for(HPSEcalCluster cluster : clusterList){
+     for(Cluster cluster : clusterList){
         // clusterEne.fill(cluster.getEnergy());
          TotalCluster++;
         int id;
             Clustercount++;
            id=getCrystal(cluster);
            try{
-     writer.append(id + " " + cluster.getEnergy()+ " " + cluster.getSize() + " " + cluster.getSeedHit().getRawEnergy() + " " + cluster.getSeedHit().getIdentifierFieldValue("ix")+" " +cluster.getSeedHit().getIdentifierFieldValue("iy"));
+     writer.append(id + " " + cluster.getEnergy()+ " " + cluster.getSize() + " " + cluster.getCalorimeterHits().get(0).getRawEnergy() + " " + cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix")+" " +cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy"));
      /*for(CalorimeterHit hit : cluster.getCalorimeterHits())
      {writer.append(hit.getRawEnergy()+ " ");
        }*/
@@ -191,10 +178,10 @@
 }
  
  
- public int getCrystal (HPSEcalCluster cluster){
+ public int getCrystal (Cluster cluster){
  int x,y,id=0;
- x= (-1)*cluster.getSeedHit().getIdentifierFieldValue("ix");
- y= cluster.getSeedHit().getIdentifierFieldValue("iy");
+ x= (-1)*cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix");
+ y= cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy");
  
  if(y==5){
  if(x<0)

Modified: java/trunk/users/src/main/java/org/hps/users/luca/TriggerAnaFEE.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/luca/TriggerAnaFEE.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/luca/TriggerAnaFEE.java	Tue Jan  6 12:54:22 2015
@@ -5,30 +5,17 @@
  */
 
 package org.hps.users.luca;
-import hep.aida.IHistogram1D;
-import hep.aida.IHistogram2D;
+import java.io.FileWriter;
 import java.io.IOException;
-import java.util.*;
-import java.io.PrintWriter;
 import java.util.ArrayList;
-import java.util.EnumSet;
 import java.util.LinkedList;
 import java.util.List;
-import java.util.Queue;
-import org.hps.readout.ecal.ClockSingleton;
+
 import org.hps.readout.ecal.TriggerDriver;
-
-import org.hps.recon.ecal.ECalUtils;
-import org.hps.recon.ecal.HPSEcalCluster;
-
+import org.lcsim.event.CalorimeterHit;
+import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
-import org.lcsim.geometry.Detector;
-import org.lcsim.util.aida.AIDA;
 import org.lcsim.util.Driver;
-import hep.aida.*;
-
-import java.io.FileWriter;
-import org.lcsim.event.CalorimeterHit;
 
 
 /**
@@ -43,7 +30,7 @@
     int TotalCluster=0;
     double timeDifference;
     double energyThreshold=0;
-    private LinkedList<ArrayList<HPSEcalCluster>> clusterBuffer;
+    private LinkedList<ArrayList<Cluster>> clusterBuffer;
     protected String clusterCollectionName = "EcalClusters";
     
  //AIDA aida = AIDA.defaultInstance();
@@ -88,12 +75,12 @@
 public void startOfData(){
 
     //initialize the clusterbuffer
-    clusterBuffer= new LinkedList<ArrayList<HPSEcalCluster>>();
+    clusterBuffer= new LinkedList<ArrayList<Cluster>>();
  //populate the clusterbuffer with (2*clusterWindow + 1)
  // empty events, representing the fact that the first few events will not have any events in the past portion of the buffer
     int bufferSize=(2*clusterWindow)+1;
     for(int i = 0;i<bufferSize; i++){
-    clusterBuffer.add(new ArrayList<HPSEcalCluster>(0));
+    clusterBuffer.add(new ArrayList<Cluster>(0));
     }
     
     
@@ -141,20 +128,20 @@
      
      //get the clusters from the event IF they are triggered
     if(TriggerDriver.triggerBit()){
-     if(event.hasCollection(HPSEcalCluster.class, "EcalClusters")) {
-        List<HPSEcalCluster> clusterList =event.get(HPSEcalCluster.class,clusterCollectionName );    
+     if(event.hasCollection(Cluster.class, "EcalClusters")) {
+        List<Cluster> clusterList =event.get(Cluster.class,clusterCollectionName );    
              
     
      
     
-     for(HPSEcalCluster cluster : clusterList){
+     for(Cluster cluster : clusterList){
         // clusterEne.fill(cluster.getEnergy());
          TotalCluster++;
         int id;
             Clustercount++;
            id=getCrystal(cluster);
            try{
-     writer.append(id + " " + cluster.getEnergy()+ " " + cluster.getSize() + " " + cluster.getSeedHit().getRawEnergy() + " " + cluster.getSeedHit().getIdentifierFieldValue("ix")+" " +cluster.getSeedHit().getIdentifierFieldValue("iy"));
+     writer.append(id + " " + cluster.getEnergy()+ " " + cluster.getSize() + " " + cluster.getCalorimeterHits().get(0).getRawEnergy() + " " + cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix")+" " +cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy"));
      /*for(CalorimeterHit hit : cluster.getCalorimeterHits())
      {writer.append(hit.getRawEnergy()+ " ");
        }*/
@@ -180,10 +167,10 @@
       
  
  
- public int getCrystal (HPSEcalCluster cluster){
+ public int getCrystal (Cluster cluster){
  int x,y,id=0;
- x= (-1)*cluster.getSeedHit().getIdentifierFieldValue("ix");
- y= cluster.getSeedHit().getIdentifierFieldValue("iy");
+ x= (-1)*cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix");
+ y= cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy");
  
  if(y==5){
  if(x<0)

Modified: java/trunk/users/src/main/java/org/hps/users/luca/TriggerTest.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/luca/TriggerTest.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/luca/TriggerTest.java	Tue Jan  6 12:54:22 2015
@@ -3,11 +3,13 @@
 
 //import hep.aida.ITupleColumn.String;
 import hep.aida.IHistogram1D;
-import org.lcsim.util.aida.AIDA;
+
 import java.util.List;
+
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.MCParticle;
 import org.lcsim.util.Driver;
+import org.lcsim.util.aida.AIDA;
 
 
 // the class has to be derived from the driver class

Modified: java/trunk/users/src/main/java/org/hps/users/luca/TruthReader.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/luca/TruthReader.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/luca/TruthReader.java	Tue Jan  6 12:54:22 2015
@@ -6,29 +6,15 @@
 
 package org.hps.users.luca;
 import hep.aida.IHistogram1D;
-import hep.aida.IHistogram2D;
-import java.io.IOException;
-import java.util.*;
-import java.io.PrintWriter;
-import java.util.ArrayList;
-import java.util.EnumSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Queue;
-import org.hps.readout.ecal.ClockSingleton;
-import org.hps.readout.ecal.TriggerDriver;
-
-import org.hps.recon.ecal.ECalUtils;
-import org.hps.recon.ecal.HPSEcalCluster;
-import org.lcsim.event.SimCalorimeterHit; 
-import org.lcsim.event.EventHeader;
-import org.lcsim.geometry.Detector;
-import org.lcsim.util.aida.AIDA;
-import org.lcsim.util.Driver;
-import hep.aida.*;
 
 import java.io.FileWriter;
-import org.lcsim.event.CalorimeterHit;
+import java.io.IOException;
+import java.util.List;
+
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.SimCalorimeterHit;
+import org.lcsim.util.Driver;
+import org.lcsim.util.aida.AIDA;
 /**
  * This driver is supposed to read the truth information out of a SLIC output about the energy deposition in a given crystal
  * @author Luca

Modified: java/trunk/users/src/main/java/org/hps/users/luca/myTriggerDriver.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/luca/myTriggerDriver.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/luca/myTriggerDriver.java	Tue Jan  6 12:54:22 2015
@@ -10,19 +10,18 @@
 
 import hep.aida.IHistogram1D;
 import hep.aida.IHistogram2D;
+
 import java.io.IOException;
-
 import java.io.PrintWriter;
 import java.util.ArrayList;
 import java.util.EnumSet;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Queue;
+
 import org.hps.readout.ecal.ClockSingleton;
 import org.hps.readout.ecal.TriggerDriver;
-
 import org.hps.recon.ecal.ECalUtils;
-import org.hps.recon.ecal.HPSEcalCluster;
 import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
 import org.lcsim.geometry.Detector;
@@ -72,8 +71,8 @@
     protected String clusterCollectionName = "EcalClusters";
     // FIFO queues of lists of clusters in each ECal half.
     // Each list corresponds to one readout cycle.
-    private Queue<List<HPSEcalCluster>> topClusterQueue = null;
-    private Queue<List<HPSEcalCluster>> botClusterQueue = null;
+    private Queue<List<Cluster>> topClusterQueue = null;
+    private Queue<List<Cluster>> botClusterQueue = null;
     PrintWriter pairWriter;
 
     private enum Flag {
@@ -286,13 +285,13 @@
     @Override
     public void startOfData() {
         //initialize queues and fill with empty lists
-        topClusterQueue = new LinkedList<List<HPSEcalCluster>>();
-        botClusterQueue = new LinkedList<List<HPSEcalCluster>>();
+        topClusterQueue = new LinkedList<List<Cluster>>();
+        botClusterQueue = new LinkedList<List<Cluster>>();
         for (int i = 0; i < 2 * pairCoincidence + 1; i++) {
-            topClusterQueue.add(new ArrayList<HPSEcalCluster>());
+            topClusterQueue.add(new ArrayList<Cluster>());
         }
         for (int i = 0; i < pairCoincidence + 1; i++) {
-            botClusterQueue.add(new ArrayList<HPSEcalCluster>());
+            botClusterQueue.add(new ArrayList<Cluster>());
         }
         super.startOfData();
         if (clusterCollectionName == null) {
@@ -310,19 +309,19 @@
 
     @Override
     public void process(EventHeader event) {
-        if (event.hasCollection(HPSEcalCluster.class, clusterCollectionName)) {
+        if (event.hasCollection(Cluster.class, clusterCollectionName)) {
             // this needs to run every readout cycle whether or not trigger is live
-            updateClusterQueues(event.get(HPSEcalCluster.class, clusterCollectionName));
+            updateClusterQueues(event.get(Cluster.class, clusterCollectionName));
 
             if (pairWriter != null) {
-                List<HPSEcalCluster[]> clusterPairs = getClusterPairsTopBot();
-                for (HPSEcalCluster[] pair : clusterPairs) {
+                List<Cluster[]> clusterPairs = getClusterPairsTopBot();
+                for (Cluster[] pair : clusterPairs) {
                     pairWriter.format("%d\t", ClockSingleton.getClock());
-                    for (HPSEcalCluster cluster : pair) {
-                        pairWriter.format("%f\t", cluster.getSeedHit().getTime());
-                        pairWriter.format("%f\t", cluster.getSeedHit().getRawEnergy());
-                        pairWriter.format("%d\t", cluster.getSeedHit().getIdentifierFieldValue("ix"));
-                        pairWriter.format("%d\t", cluster.getSeedHit().getIdentifierFieldValue("iy"));
+                    for (Cluster cluster : pair) {
+                        pairWriter.format("%f\t", cluster.getCalorimeterHits().get(0).getTime());
+                        pairWriter.format("%f\t", cluster.getCalorimeterHits().get(0).getRawEnergy());
+                        pairWriter.format("%d\t", cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix"));
+                        pairWriter.format("%d\t", cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy"));
                         pairWriter.format("%d\t", cluster.getSize());
                         pairWriter.format("%f\t", cluster.getEnergy());
                         pairWriter.format("%f\t", getClusterAngle(cluster));
@@ -339,7 +338,7 @@
     @Override
     protected boolean triggerDecision(EventHeader event) {
         // Get the list of raw ECal hits.
-        if (event.hasCollection(HPSEcalCluster.class, clusterCollectionName)) {
+        if (event.hasCollection(Cluster.class, clusterCollectionName)) {
             return testTrigger();
         } else {
             return false;
@@ -349,22 +348,22 @@
     public boolean testTrigger() {
         boolean trigger = false;
 
-        List<HPSEcalCluster[]> clusterPairs = getClusterPairsTopBot();
+        List<Cluster[]> clusterPairs = getClusterPairsTopBot();
 
         //--- Apply Trigger Cuts ---//
 
         // Iterate through all cluster pairs present in the event.  If at least
         // one of the cluster pairs satisfies all of the trigger conditions,
         // a trigger signal is sent to all other detectors.
-        for (HPSEcalCluster[] clusterPair : clusterPairs) {
+        for (Cluster[] clusterPair : clusterPairs) {
 
             EnumSet<Flag> bits = EnumSet.noneOf(Flag.class);
 
             if (outputStream != null) {
                 outputStream.printf("Event %d: cluster pair (energy %f in quadrant %d (%s), energy %f in quadrant %d (%s))\n",
                         ClockSingleton.getClock(),
-                        clusterPair[0].getEnergy(), ECalUtils.getQuadrant(clusterPair[0]), clusterPair[0].getSeedHit().getPositionVec().toString(),
-                        clusterPair[1].getEnergy(), ECalUtils.getQuadrant(clusterPair[1]), clusterPair[1].getSeedHit().getPositionVec().toString());
+                        clusterPair[0].getEnergy(), ECalUtils.getQuadrant(clusterPair[0]), clusterPair[0].getCalorimeterHits().get(0).getPositionVec().toString(),
+                        clusterPair[1].getEnergy(), ECalUtils.getQuadrant(clusterPair[1]), clusterPair[1].getCalorimeterHits().get(0).getPositionVec().toString());
             }
 
             allPairs++;
@@ -477,9 +476,9 @@
                 }
                 trigger = true;
 
-                for (HPSEcalCluster cluster : clusterPair) {
-                    int ix = cluster.getSeedHit().getIdentifierFieldValue("ix");
-                    int iy = cluster.getSeedHit().getIdentifierFieldValue("iy");
+                for (Cluster cluster : clusterPair) {
+                    int ix = cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix");
+                    int iy = cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy");
                     trigClusterSeeds.fill(ix - 0.5 * Math.signum(ix), iy);
                 }
             }
@@ -518,19 +517,19 @@
         writer.close();
     }
 
-    protected void updateClusterQueues(List<HPSEcalCluster> ecalClusters) {
-        ArrayList<HPSEcalCluster> topClusterList = new ArrayList<HPSEcalCluster>();
-        ArrayList<HPSEcalCluster> botClusterList = new ArrayList<HPSEcalCluster>();
-        for (HPSEcalCluster ecalCluster : ecalClusters) {
-//            System.out.format("add cluster\t%f\t%d\n", ecalCluster.getSeedHit().getTime(), ecalCluster.getSeedHit().getIdentifierFieldValue("iy"));
-            if (ecalCluster.getSeedHit().getIdentifierFieldValue("iy") > 0) {
+    protected void updateClusterQueues(List<Cluster> ecalClusters) {
+        ArrayList<Cluster> topClusterList = new ArrayList<Cluster>();
+        ArrayList<Cluster> botClusterList = new ArrayList<Cluster>();
+        for (Cluster ecalCluster : ecalClusters) {
+//            System.out.format("add cluster\t%f\t%d\n", ecalCluster.getCalorimeterHits().get(0).getTime(), ecalCluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy"));
+            if (ecalCluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy") > 0) {
                 topClusterList.add(ecalCluster);
             } else {
                 botClusterList.add(ecalCluster);
             }
 
-            int ix = ecalCluster.getSeedHit().getIdentifierFieldValue("ix");
-            int iy = ecalCluster.getSeedHit().getIdentifierFieldValue("iy");
+            int ix = ecalCluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix");
+            int iy = ecalCluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy");
             clusterSeeds.fill(ix - 0.5 * Math.signum(ix), iy);
         }
 
@@ -546,23 +545,23 @@
      * @param ecalClusters : List of ECal clusters
      * @return list of cluster pairs
      */
-    protected List<HPSEcalCluster[]> getClusterPairsTopBot() {
+    protected List<Cluster[]> getClusterPairsTopBot() {
         // Make a list of cluster pairs
-        List<HPSEcalCluster[]> clusterPairs = new ArrayList<HPSEcalCluster[]>();
+        List<Cluster[]> clusterPairs = new ArrayList<Cluster[]>();
 
         // Loop over all top-bottom pairs of clusters; higher-energy cluster goes first in the pair
         // To apply pair coincidence time, use only bottom clusters from the 
         // readout cycle pairCoincidence readout cycles ago, and top clusters 
         // from all 2*pairCoincidence+1 previous readout cycles
-        for (HPSEcalCluster botCluster : botClusterQueue.element()) {   /////da come capisco sembra un for su tutti i cluster solo della testa della queue..e gli altri?
-            for (List<HPSEcalCluster> topClusters : topClusterQueue) {
-                for (HPSEcalCluster topCluster : topClusters) {
-//                    System.out.format("%f\t%f\n", topCluster.getSeedHit().getTime(), botCluster.getSeedHit().getTime());
+        for (Cluster botCluster : botClusterQueue.element()) {   /////da come capisco sembra un for su tutti i cluster solo della testa della queue..e gli altri?
+            for (List<Cluster> topClusters : topClusterQueue) {
+                for (Cluster topCluster : topClusters) {
+//                    System.out.format("%f\t%f\n", topCluster.getCalorimeterHits().get(0).getTime(), botCluster.getCalorimeterHits().get(0).getTime());
                     if (topCluster.getEnergy() > botCluster.getEnergy()) {
-                        HPSEcalCluster[] clusterPair = {topCluster, botCluster};
+                        Cluster[] clusterPair = {topCluster, botCluster};
                         clusterPairs.add(clusterPair);
                     } else {
-                        HPSEcalCluster[] clusterPair = {botCluster, topCluster};
+                        Cluster[] clusterPair = {botCluster, topCluster};
                         clusterPairs.add(clusterPair);
                     }
                 }
@@ -578,7 +577,7 @@
      * @param clusterPair : pair of clusters
      * @return true if opposite quadrants, false otherwise
      */
-    protected boolean oppositeQuadrantsCut(HPSEcalCluster[] clusterPair) {
+    protected boolean oppositeQuadrantsCut(Cluster[] clusterPair) {
         int quad1 = ECalUtils.getQuadrant(clusterPair[0]);
         int quad2 = ECalUtils.getQuadrant(clusterPair[1]);
 
@@ -598,7 +597,7 @@
      * @param clusterPair: pair of clusters
      * @return true if pair passes cut, false if fail
      */
-    protected boolean clusterHitCount(HPSEcalCluster[] clusterPair) {
+    protected boolean clusterHitCount(Cluster[] clusterPair) {
         return (clusterPair[0].getCalorimeterHits().size() >= minHitCount
                 && clusterPair[1].getCalorimeterHits().size() >= minHitCount);
     }
@@ -610,7 +609,7 @@
      * @param clusterPair : pair of clusters
      * @return true if a pair is found, false otherwise
      */
-    protected boolean clusterECut(HPSEcalCluster[] clusterPair) {
+    protected boolean clusterECut(Cluster[] clusterPair) {
         return (clusterPair[0].getEnergy() < clusterEnergyHigh
                 && clusterPair[1].getEnergy() < clusterEnergyHigh
                 && clusterPair[0].getEnergy() > clusterEnergyLow
@@ -636,7 +635,7 @@
      * @param clusterPair : pair of clusters
      * @return true if pair is found, false otherwise
      */
-    protected boolean energyDifference(HPSEcalCluster[] clusterPair) {
+    protected boolean energyDifference(Cluster[] clusterPair) {
         double clusterEDifference = clusterPair[0].getEnergy() - clusterPair[1].getEnergy();
 
         return (clusterEDifference < energyDifferenceThreshold);
@@ -649,8 +648,8 @@
      * @param clusterPair : pair of clusters
      * @return true if pair is found, false otherwise
      */
-    protected boolean energyDistanceCut(HPSEcalCluster[] clusterPair) {
-        HPSEcalCluster lowEnergyCluster = clusterPair[1];
+    protected boolean energyDistanceCut(Cluster[] clusterPair) {
+        Cluster lowEnergyCluster = clusterPair[1];
 
         // Calculate its position
         double lowEClusterDistance = getClusterDistance(clusterPair[1]);
@@ -666,23 +665,23 @@
      * @param clusterPair : pair of clusters
      * @return true if pair is found, false otherwise
      */
-    protected boolean coplanarityCut(HPSEcalCluster[] clusterPair) {
+    protected boolean coplanarityCut(Cluster[] clusterPair) {
         return (Math.abs(pairUncoplanarity(clusterPair)) < maxCoplanarityAngle);
     }
 
-    protected double pairUncoplanarity(HPSEcalCluster[] clusterPair) { // Find the angle between clusters in the pair
+    protected double pairUncoplanarity(Cluster[] clusterPair) { // Find the angle between clusters in the pair
         double cluster1Angle = (getClusterAngle(clusterPair[0]) + 180.0) % 180.0;
         double cluster2Angle = (getClusterAngle(clusterPair[1]) + 180.0) % 180.0;
 
         return cluster2Angle - cluster1Angle;
     }
 
-    protected double getClusterAngle(HPSEcalCluster cluster) { //returns angle in range of -180 to 180
-        double position[] = cluster.getSeedHit().getPosition();
+    protected double getClusterAngle(Cluster cluster) { //returns angle in range of -180 to 180
+        double position[] = cluster.getCalorimeterHits().get(0).getPosition();
         return Math.toDegrees(Math.atan2(position[1], position[0] - originX));
     }
 
-    protected double getClusterDistance(HPSEcalCluster cluster) {
-        return Math.hypot(cluster.getSeedHit().getPosition()[0] - originX, cluster.getSeedHit().getPosition()[1]);
+    protected double getClusterDistance(Cluster cluster) {
+        return Math.hypot(cluster.getCalorimeterHits().get(0).getPosition()[0] - originX, cluster.getCalorimeterHits().get(0).getPosition()[1]);
     }
 }

Modified: java/trunk/users/src/main/java/org/hps/users/luca/mycluster.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/luca/mycluster.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/luca/mycluster.java	Tue Jan  6 12:54:22 2015
@@ -6,26 +6,14 @@
 
 package org.hps.users.luca;
 import hep.aida.IHistogram1D;
-import hep.aida.IHistogram2D;
-import java.io.IOException;
-
 
 import java.util.List;
-import java.util.Queue;
-import org.hps.readout.ecal.ClockSingleton;
-import org.hps.readout.ecal.TriggerDriver;
 
-import org.hps.recon.ecal.ECalUtils;
-import org.hps.recon.ecal.HPSEcalCluster;
+import org.lcsim.event.CalorimeterHit;
 import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
-import org.lcsim.geometry.Detector;
+import org.lcsim.util.Driver;
 import org.lcsim.util.aida.AIDA;
-import org.lcsim.util.Driver;
-import hep.aida.*;
-import hep.aida.IHistogram3D;
-import java.io.FileWriter;
-import org.lcsim.event.CalorimeterHit;
 
 /**
  *
@@ -100,16 +88,16 @@
   
      }
      
-     if(event.hasCollection(HPSEcalCluster.class, "EcalClusters")) {
-            List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, "EcalClusters");
+     if(event.hasCollection(Cluster.class, "EcalClusters")) {
+            List<Cluster> clusters = event.get(Cluster.class, "EcalClusters");
           
             if(clusters.size() > 0) {
-               for(HPSEcalCluster cluster : clusters){
+               for(Cluster cluster : clusters){
                    eneClusterPlot.fill(cluster.getEnergy());
-                   eneSeedPlot.fill(cluster.getSeedHit().getRawEnergy());
+                   eneSeedPlot.fill(cluster.getCalorimeterHits().get(0).getRawEnergy());
                    if(cluster.getEnergy()>=1.4){
                    eneClusterPlotcut.fill(cluster.getEnergy());
-                   eneSeedPlotcut.fill(cluster.getSeedHit().getRawEnergy());
+                   eneSeedPlotcut.fill(cluster.getCalorimeterHits().get(0).getRawEnergy());
                    }
                   
                 }  

Modified: java/trunk/users/src/main/java/org/hps/users/luca/mycluster2.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/luca/mycluster2.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/luca/mycluster2.java	Tue Jan  6 12:54:22 2015
@@ -5,31 +5,14 @@
  */
 
 package org.hps.users.luca;
-import hep.aida.IHistogram1D;
-import hep.aida.IHistogram2D;
+import java.io.FileWriter;
 import java.io.IOException;
-import java.util.*;
-import java.io.PrintWriter;
 import java.util.ArrayList;
-import java.util.EnumSet;
-import java.util.LinkedList;
 import java.util.List;
-import java.util.Queue;
-import org.hps.readout.ecal.ClockSingleton;
-import org.hps.readout.ecal.TriggerDriver;
-
-import org.hps.recon.ecal.ECalUtils;
-import org.hps.recon.ecal.HPSEcalCluster;
+
 import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
-import org.lcsim.geometry.Detector;
-import org.lcsim.util.aida.AIDA;
 import org.lcsim.util.Driver;
-import hep.aida.*;
-import hep.aida.IHistogram3D;
-import java.io.FileWriter;
-import org.lcsim.event.CalorimeterHit;
-import org.lcsim.event.MCParticle;
 
 /**
  * 
@@ -41,8 +24,8 @@
     int Clustercount=0;
     protected String clusterCollectionName = "EcalClusters";
     
-    ArrayList<HPSEcalCluster> ClusterQueue;
-    List<HPSEcalCluster> goodCluster;
+    ArrayList<Cluster> ClusterQueue;
+    List<Cluster> goodCluster;
  
     private FileWriter writer;
     //private FileWriter writer2;
@@ -82,8 +65,8 @@
 public void startOfData(){
 
  
-    ClusterQueue=new ArrayList<HPSEcalCluster>();
-    goodCluster = new ArrayList<HPSEcalCluster>();
+    ClusterQueue=new ArrayList<Cluster>();
+    goodCluster = new ArrayList<Cluster>();
     
     
     try{
@@ -121,9 +104,9 @@
            
      
      
-     if(event.hasCollection(HPSEcalCluster.class, "EcalClusters")) {
+     if(event.hasCollection(Cluster.class, "EcalClusters")) {
             
-         fillQueue(event.get(HPSEcalCluster.class, clusterCollectionName));
+         fillQueue(event.get(Cluster.class, clusterCollectionName));
           
             
             }       
@@ -132,8 +115,8 @@
  /**
  * Puts cluster collected from events in the ClusterQueue
  */
- public void fillQueue (List<HPSEcalCluster> ecalClusters){
- for(HPSEcalCluster cluster : ecalClusters)
+ public void fillQueue (List<Cluster> ecalClusters){
+ for(Cluster cluster : ecalClusters)
  {
      
      ClusterQueue.add(cluster);
@@ -156,7 +139,7 @@
          
          
     for(int i=0; i< ClusterQueue.size(); i++){
-    if(ClusterQueue.get(i).getSeedHit().getIdentifierFieldValue("ix")== posx && ClusterQueue.get(i).getSeedHit().getIdentifierFieldValue("iy")==posy && ClusterQueue.get(i).getEnergy()>1.6){
+    if(ClusterQueue.get(i).getCalorimeterHits().get(0).getIdentifierFieldValue("ix")== posx && ClusterQueue.get(i).getCalorimeterHits().get(0).getIdentifierFieldValue("iy")==posy && ClusterQueue.get(i).getEnergy()>1.6){
         // System.out.println("sono nel primo if, ovvero ci sono cluster dove voglio io");
            if(ClusterChecker(i)){
       goodCluster.add(ClusterQueue.get(i));}
@@ -172,11 +155,11 @@
  
  
  int id;
- for(HPSEcalCluster cluster :goodCluster){
+ for(Cluster cluster :goodCluster){
    Clustercount++;
    id=getCrystal(cluster);
      try{
-     writer.append(id + " " + cluster.getSeedHit().getIdentifierFieldValue("ix") + " " + cluster.getSeedHit().getIdentifierFieldValue("iy")+ " " + cluster.getEnergy()+ " " + cluster.getSize() + " " + cluster.getSeedHit().getRawEnergy() + " ");
+     writer.append(id + " " + cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix") + " " + cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy")+ " " + cluster.getEnergy()+ " " + cluster.getSize() + " " + cluster.getCalorimeterHits().get(0).getRawEnergy() + " ");
      /*for(CalorimeterHit hit : cluster.getCalorimeterHits())
      {writer.append(hit.getRawEnergy()+ " ");
        }*/
@@ -202,7 +185,7 @@
     for (int i=(pos-5);i<pos+5;i++){
         ///controlla che non esca da array
         if(i>=0 && i < ClusterQueue.size()){
-            deltaT=Math.abs(ClusterQueue.get(i).getSeedHit().getTime()-ClusterQueue.get(pos).getSeedHit().getTime());
+            deltaT=Math.abs(ClusterQueue.get(i).getCalorimeterHits().get(0).getTime()-ClusterQueue.get(pos).getCalorimeterHits().get(0).getTime());
     ///controlla la differenza temporale che deve essere >80ns, se è maggiore, check=true, se è minore, checka la posizione
      if(deltaT<80)
      {check=PositionChecker(i);}
@@ -218,9 +201,9 @@
        boolean test=true;
 
 //controllo su posizione orizzontale
-     if(ClusterQueue.get(i).getSeedHit().getIdentifierFieldValue("ix")< posx-2 || ClusterQueue.get(i).getSeedHit().getIdentifierFieldValue("ix")> posx+2){
+     if(ClusterQueue.get(i).getCalorimeterHits().get(0).getIdentifierFieldValue("ix")< posx-2 || ClusterQueue.get(i).getCalorimeterHits().get(0).getIdentifierFieldValue("ix")> posx+2){
         //se orizzonale soddisfatto, controllo verticale
-         if(ClusterQueue.get(i).getSeedHit().getIdentifierFieldValue("iy")< posy-2 || ClusterQueue.get(i).getSeedHit().getIdentifierFieldValue("ix")> posy+2){
+         if(ClusterQueue.get(i).getCalorimeterHits().get(0).getIdentifierFieldValue("iy")< posy-2 || ClusterQueue.get(i).getCalorimeterHits().get(0).getIdentifierFieldValue("ix")> posy+2){
          test= true;
          }
      
@@ -232,10 +215,10 @@
      return test;
  }
  
- public int getCrystal (HPSEcalCluster cluster){
+ public int getCrystal (Cluster cluster){
  int x,y,id=0;
- x= (-1)*cluster.getSeedHit().getIdentifierFieldValue("ix");
- y= cluster.getSeedHit().getIdentifierFieldValue("iy");
+ x= (-1)*cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix");
+ y= cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy");
  
  if(y==5){
  if(x<0)

Modified: java/trunk/users/src/main/java/org/hps/users/luca/mycluster3.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/luca/mycluster3.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/luca/mycluster3.java	Tue Jan  6 12:54:22 2015
@@ -5,30 +5,16 @@
  */
 
 package org.hps.users.luca;
-import hep.aida.IHistogram1D;
-import hep.aida.IHistogram2D;
+import java.io.FileWriter;
 import java.io.IOException;
-import java.util.*;
-import java.io.PrintWriter;
 import java.util.ArrayList;
-import java.util.EnumSet;
 import java.util.LinkedList;
 import java.util.List;
-import java.util.Queue;
-import org.hps.readout.ecal.ClockSingleton;
-import org.hps.readout.ecal.TriggerDriver;
-
-import org.hps.recon.ecal.ECalUtils;
-import org.hps.recon.ecal.HPSEcalCluster;
-
+
+import org.lcsim.event.CalorimeterHit;
+import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
-import org.lcsim.geometry.Detector;
-import org.lcsim.util.aida.AIDA;
 import org.lcsim.util.Driver;
-import hep.aida.*;
-
-import java.io.FileWriter;
-import org.lcsim.event.CalorimeterHit;
 
 
 /**
@@ -43,7 +29,7 @@
     int TotalCluster=0;
     double timeDifference;
     double energyThreshold=0;
-    private LinkedList<ArrayList<HPSEcalCluster>> clusterBuffer;
+    private LinkedList<ArrayList<Cluster>> clusterBuffer;
     protected String clusterCollectionName = "EcalClusters";
     
  //AIDA aida = AIDA.defaultInstance();
@@ -91,12 +77,12 @@
 public void startOfData(){
 
     //initialize the clusterbuffer
-    clusterBuffer= new LinkedList<ArrayList<HPSEcalCluster>>();
+    clusterBuffer= new LinkedList<ArrayList<Cluster>>();
  //populate the clusterbuffer with (2*clusterWindow + 1)
  // empty events, representing the fact that the first few events will not have any events in the past portion of the buffer
     int bufferSize=(2*clusterWindow)+1;
     for(int i = 0;i<bufferSize; i++){
-    clusterBuffer.add(new ArrayList<HPSEcalCluster>(0));
+    clusterBuffer.add(new ArrayList<Cluster>(0));
     }
     
     
@@ -155,14 +141,14 @@
      //get the clusters from the event
    // if(TriggerDriver.triggerBit()){ //if they have triggered!
       
-     if(event.hasCollection(HPSEcalCluster.class, "EcalClusters")) {
+     if(event.hasCollection(Cluster.class, "EcalClusters")) {
          
-        List<HPSEcalCluster> clusterList =event.get(HPSEcalCluster.class,clusterCollectionName );    
+        List<Cluster> clusterList =event.get(Cluster.class,clusterCollectionName );    
              
      //put the clusters in the arraylist
      
-     ArrayList<HPSEcalCluster> clusterSet = new ArrayList<HPSEcalCluster>(); 
-     for(HPSEcalCluster cluster : clusterList){
+     ArrayList<Cluster> clusterSet = new ArrayList<Cluster>(); 
+     for(Cluster cluster : clusterList){
       //   clusterEne.fill(cluster.getEnergy());
          TotalCluster++;
          clusterSet.add(cluster);
@@ -190,7 +176,7 @@
   */
  public void ClusterAnalyzer(){
  //get the cluster list at the current time in the buffer
-ArrayList<HPSEcalCluster> currentClusters = clusterBuffer.get(clusterWindow+1);
+ArrayList<Cluster> currentClusters = clusterBuffer.get(clusterWindow+1);
 
 
  ///cerca i cluster nella posizione che ci interessa poi chiama la funzione che decide se sono "isolati"
@@ -201,20 +187,20 @@
       posy=y;
          
          //ciclo for nel set di currentCluster, ovvero il set nel mezzo del buffer
-    for(HPSEcalCluster cluster : currentClusters){ 
-    if((cluster.getSeedHit().getIdentifierFieldValue("ix")== posx) && (cluster.getSeedHit().getIdentifierFieldValue("iy")==posy )&& (cluster.getEnergy() > energyThreshold)){
+    for(Cluster cluster : currentClusters){ 
+    if((cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix")== posx) && (cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy")==posy )&& (cluster.getEnergy() > energyThreshold)){
         
            if(ClusterChecker(cluster)){
             int id;
             Clustercount++;
            id=getCrystal(cluster);
            try{
-     writer.append(id + " " + cluster.getEnergy()+ " " + cluster.getSize() + " " + cluster.getSeedHit().getRawEnergy() + " " + cluster.getSeedHit().getIdentifierFieldValue("ix")+" " +cluster.getSeedHit().getIdentifierFieldValue("iy"));
+     writer.append(id + " " + cluster.getEnergy()+ " " + cluster.getSize() + " " + cluster.getCalorimeterHits().get(0).getRawEnergy() + " " + cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix")+" " +cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy"));
      /*for(CalorimeterHit hit : cluster.getCalorimeterHits())
      {writer.append(hit.getRawEnergy()+ " ");
        }*/
      writer.append("\n");
-  //  SeedHistograms.get(id-1).fill(cluster.getSeedHit().getRawEnergy());
+  //  SeedHistograms.get(id-1).fill(cluster.getCalorimeterHits().get(0).getRawEnergy());
   //   ClustHistograms.get(id-1).fill(cluster.getEnergy());
      }
      
@@ -242,19 +228,19 @@
   * @return 
   */
  
-public boolean ClusterChecker (HPSEcalCluster cluster){
+public boolean ClusterChecker (Cluster cluster){
 //System.out.println("Sono nel clustercheck! \n");
     
 boolean check=true;
   
     //ciclo sulle liste del buffer
 loops:
-     for(ArrayList<HPSEcalCluster> currentList : clusterBuffer){
+     for(ArrayList<Cluster> currentList : clusterBuffer){
      //ciclo sui cluster della lista corrente
-         for(HPSEcalCluster currentcluster : currentList){
+         for(Cluster currentcluster : currentList){
            if(currentcluster!= cluster){
              //if there is a cluster in the buffer that is in the considered radius in a time window lower than expected, the loop is brocken and the analyzed cluster is not good
-         if(!((currentcluster.getSeedHit().getIdentifierFieldValue("ix") < posx-radius || currentcluster.getSeedHit().getIdentifierFieldValue("ix")> posx+radius)&& (currentcluster.getSeedHit().getIdentifierFieldValue("iy")< posy-radius || currentcluster.getSeedHit().getIdentifierFieldValue("iy")> posy+radius))&& Math.abs(cluster.getSeedHit().getTime()-currentcluster.getSeedHit().getTime())<timeDifference){
+         if(!((currentcluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix") < posx-radius || currentcluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix")> posx+radius)&& (currentcluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy")< posy-radius || currentcluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy")> posy+radius))&& Math.abs(cluster.getCalorimeterHits().get(0).getTime()-currentcluster.getCalorimeterHits().get(0).getTime())<timeDifference){
          check=false;
          break loops;
          }
@@ -275,10 +261,10 @@
       
  
  
- public int getCrystal (HPSEcalCluster cluster){
+ public int getCrystal (Cluster cluster){
  int x,y,id=0;
- x= (-1)*cluster.getSeedHit().getIdentifierFieldValue("ix");
- y= cluster.getSeedHit().getIdentifierFieldValue("iy");
+ x= (-1)*cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix");
+ y= cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy");
  
  if(y==5){
  if(x<0)

Modified: java/trunk/users/src/main/java/org/hps/users/mgraham/TrackExtrapolationAnalysis.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/mgraham/TrackExtrapolationAnalysis.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/mgraham/TrackExtrapolationAnalysis.java	Tue Jan  6 12:54:22 2015
@@ -16,6 +16,7 @@
 import org.hps.recon.tracking.HelixConverter;
 import org.hps.recon.tracking.StraightLineTrack;
 import org.hps.recon.tracking.TrackUtils;
+import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.Track;
 import org.lcsim.fit.helicaltrack.HelicalTrackFit;
@@ -133,8 +134,8 @@
             aida.histogram2D("Extrapolated X: Extend vs SLT").fill(extendAtConverter.y(), slt.getYZAtX(BeamlineConstants.HARP_POSITION_TESTRUN)[0]);
             aida.histogram2D("Extrapolated Y: Extend vs SLT").fill(extendAtConverter.z(), slt.getYZAtX(BeamlineConstants.HARP_POSITION_TESTRUN)[1]);
 
-            List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, ecalCollectionName);
-            HPSEcalCluster clust = findClosestCluster(posAtEcal, clusters);
+            List<Cluster> clusters = event.get(Cluster.class, ecalCollectionName);
+            Cluster clust = findClosestCluster(posAtEcal, clusters);
 
             if (clust != null) {
  //               System.out.println("Cluster Position = ("+clust.getPosition()[0]+","+clust.getPosition()[1]+","+clust.getPosition()[2]+")");
@@ -456,10 +457,10 @@
         style.statisticsBoxStyle().setVisible(true);
     }
 
-    private HPSEcalCluster findClosestCluster(Hep3Vector posonhelix, List<HPSEcalCluster> clusters) {
-        HPSEcalCluster closest = null;
+    private Cluster findClosestCluster(Hep3Vector posonhelix, List<Cluster> clusters) {
+        Cluster closest = null;
         double minDist = 9999;
-        for (HPSEcalCluster cluster : clusters) {
+        for (Cluster cluster : clusters) {
             double[] clPos = cluster.getPosition();
             double clEne = cluster.getEnergy();
 //            double dist = Math.sqrt(Math.pow(clPos[0] - posonhelix.y(), 2) + Math.pow(clPos[1] - posonhelix.z(), 2)); //coordinates!!!

Modified: java/trunk/users/src/main/java/org/hps/users/omoreno/SvtHitEfficiency.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/omoreno/SvtHitEfficiency.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/omoreno/SvtHitEfficiency.java	Tue Jan  6 12:54:22 2015
@@ -15,6 +15,8 @@
 import java.util.List;
 import java.util.Map;
 
+import org.hps.recon.tracking.TrackUtils;
+import org.hps.recon.tracking.TrackerHitUtils;
 import org.lcsim.detector.ITransform3D;
 import org.lcsim.detector.solids.Box;
 import org.lcsim.detector.solids.Point3D;
@@ -30,10 +32,6 @@
 import org.lcsim.geometry.Detector;
 import org.lcsim.util.Driver;
 import org.lcsim.util.aida.AIDA;
-
-import org.hps.recon.ecal.HPSEcalCluster;
-import org.hps.recon.tracking.TrackUtils;
-import org.hps.recon.tracking.TrackerHitUtils;
 
 /**
  * Analysis driver used to calculate the hit efficiency of the SVT.
@@ -250,14 +248,14 @@
         if(tracks.size() >= 2 ) return;
         
         // Get the list of Ecal clusters from the event
-        List<HPSEcalCluster> ecalClusters = event.get(HPSEcalCluster.class, ecalClustersCollectionName);
+        //List<Cluster> ecalClusters = event.get(Cluster.class, ecalClustersCollectionName);
 
         for(Track track : tracks){
         	
             ecalClusterTrackMatch = false;
         	
             // Check if there is an Ecal cluster in the same detector volume as the track
-        	/*for(HPSEcalCluster ecalCluster : ecalClusters){
+        	/*for(Cluster ecalCluster : ecalClusters){
         		if(ecalCluster.getPosition()[1] > 0 && trkUtil.getZ0() > 0){
         			ecalClusterTrackMatch = true;
         			break;

Modified: java/trunk/users/src/main/java/org/hps/users/omoreno/SvtTrackAnalysis.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/omoreno/SvtTrackAnalysis.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/omoreno/SvtTrackAnalysis.java	Tue Jan  6 12:54:22 2015
@@ -10,8 +10,8 @@
 import java.util.List;
 import java.util.Map;
 
-import org.hps.recon.ecal.HPSEcalCluster;
 import org.hps.recon.tracking.TrackUtils;
+import org.lcsim.event.Cluster;
 //--- org.lcsim ---//
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.RawTrackerHit;
@@ -264,7 +264,7 @@
     	List<SeedTrack> tracks = event.get(SeedTrack.class, trackCollectionName);
     	
     	Map<Hep3Vector,SeedTrack> trackToEcalPosition = new HashMap<Hep3Vector, SeedTrack>();
-     	Map<SeedTrack, HPSEcalCluster> trackToCluster = new HashMap<SeedTrack, HPSEcalCluster>();
+     	Map<SeedTrack, Cluster> trackToCluster = new HashMap<SeedTrack, Cluster>();
     	List<Hep3Vector> ecalPos = new ArrayList<Hep3Vector>();
     	
     	for(SeedTrack track : tracks){
@@ -318,14 +318,14 @@
     		ecalPos.add(positionEcal);  		
     	}
     	
-    	if(!event.hasCollection(HPSEcalCluster.class, "EcalClusters")) return;
-    	List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, "EcalClusters");
+    	if(!event.hasCollection(Cluster.class, "EcalClusters")) return;
+    	List<Cluster> clusters = event.get(Cluster.class, "EcalClusters");
     	
 
     	for(Hep3Vector ecalP : ecalPos){
         	double xdiff = 1000; 
         	double ydiff = 1000;
-    		for(HPSEcalCluster cluster : clusters){
+    		for(Cluster cluster : clusters){
     			double xd = ecalP.y() - cluster.getPosition()[0];
     			double yd = ecalP.z() - cluster.getPosition()[1];  
     			if(yd < ydiff){
@@ -338,7 +338,7 @@
     		aida.histogram2D("XY Difference between Ecal Cluster and Track Position").fill(xdiff, ydiff);
     	}
     	
-    	for(Map.Entry<SeedTrack, HPSEcalCluster> entry : trackToCluster.entrySet()){
+    	for(Map.Entry<SeedTrack, Cluster> entry : trackToCluster.entrySet()){
     		double Energy = entry.getValue().getEnergy();
     		SeedTrack track = entry.getKey();
     		double pTotal = Math.sqrt(track.getPX()*track.getPX() + track.getPY()*track.getPY() + track.getPZ()*track.getPZ());
@@ -351,7 +351,7 @@
     		aida.histogram2D("E versus P").fill(Energy, pTotal*1000);
     	}
     	
-    	for(HPSEcalCluster cluster : clusters){
+    	for(Cluster cluster : clusters){
     		double[] clusterPosition = cluster.getPosition();
     		
     		System.out.println("Cluster Position: [" + clusterPosition[0] + ", " + clusterPosition[1] + ", " + clusterPosition[2]+ "]");

Modified: java/trunk/users/src/main/java/org/hps/users/omoreno/TestRunTrackReconEfficiency.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/omoreno/TestRunTrackReconEfficiency.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/omoreno/TestRunTrackReconEfficiency.java	Tue Jan  6 12:54:22 2015
@@ -11,8 +11,8 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import org.hps.recon.ecal.HPSEcalCluster;
 import org.hps.recon.tracking.TrackUtils;
+import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.GenericObject;
 import org.lcsim.event.Track;
@@ -143,10 +143,10 @@
         
         // First check if the event contains a collection of Ecal clusters.  If
         // it doesn't skip the event.
-        if(!event.hasCollection(HPSEcalCluster.class, ecalClustersCollectionName)) return;
+        if(!event.hasCollection(Cluster.class, ecalClustersCollectionName)) return;
        
         // Get the list of Ecal clusters in the event
-        List<HPSEcalCluster> ecalClusters = event.get(HPSEcalCluster.class, ecalClustersCollectionName);
+        List<Cluster> ecalClusters = event.get(Cluster.class, ecalClustersCollectionName);
        
         // Get the list of tracks from the event
         List<Track> tracks = event.get(Track.class, trackCollectionName);
@@ -154,7 +154,7 @@
         // If the event has a single Ecal cluster satisfying the threshold cut, 
         // check if there is a track that is well matched to the cluster
         if(ecalClusters.size() == 1){
-        	HPSEcalCluster ecalCluster = ecalClusters.get(0);
+        	Cluster ecalCluster = ecalClusters.get(0);
         	
         	// If the cluster is above the energy threshold, then the track should
         	// be findable
@@ -246,8 +246,8 @@
        	}
        	
        	// Match a track to the trigger cluster
-       	HPSEcalCluster matchedCluster = null; 
-       	for(HPSEcalCluster ecalCluster : ecalClusters){
+       	Cluster matchedCluster = null; 
+       	for(Cluster ecalCluster : ecalClusters){
        		if(ecalCluster.getPosition()[1] > 0 && topTrigger){
        			if(!isClusterMatchedToTrack(ecalCluster, topTracks)){
        				this.printDebug("Trigger cluster-track match was not found.");
@@ -304,14 +304,14 @@
     /**
      * 
      */
-    private boolean isClusterWithinWindow(HPSEcalCluster clusterPosition){
+    private boolean isClusterWithinWindow(Cluster clusterPosition){
     	return true;
     }
     
     /**
      * 
      */
-    private boolean isClusterAboveEnergyThreshold(HPSEcalCluster ecalCluster){
+    private boolean isClusterAboveEnergyThreshold(Cluster ecalCluster){
     	if(ecalCluster.getEnergy() > thresholdEnergy) return true;
     	return false;
     }
@@ -319,7 +319,7 @@
     /**
      * 
      */
-    private boolean hasClustersInOppositeVolumes(List<HPSEcalCluster> ecalClusters){
+    private boolean hasClustersInOppositeVolumes(List<Cluster> ecalClusters){
     	this.printPosition(ecalClusters.get(0).getPosition());
     	this.printPosition(ecalClusters.get(1).getPosition());
     	if((ecalClusters.get(0).getPosition()[1] > 0 && ecalClusters.get(1).getPosition()[1] < 0)
@@ -332,7 +332,7 @@
     /**
      * 
      */
-    private boolean isClusterMatchedToTrack(HPSEcalCluster cluster, List<Track> tracks){
+    private boolean isClusterMatchedToTrack(Cluster cluster, List<Track> tracks){
     	Hep3Vector clusterPos = new BasicHep3Vector(cluster.getPosition());
     	double rMax = Double.MAX_VALUE;
     	Track matchedTrack = null; 

Modified: java/trunk/users/src/main/java/org/hps/users/phansson/FastTrackResidualDriver.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/phansson/FastTrackResidualDriver.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/phansson/FastTrackResidualDriver.java	Tue Jan  6 12:54:22 2015
@@ -20,10 +20,10 @@
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import org.hps.recon.ecal.HPSEcalCluster;
 import org.lcsim.detector.identifier.IIdentifier;
 import org.lcsim.detector.identifier.IIdentifierHelper;
 import org.lcsim.detector.tracker.silicon.SiSensor;
+import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
 import org.lcsim.geometry.Detector;
 import org.lcsim.geometry.IDDecoder;
@@ -225,8 +225,8 @@
         
         
         //Get the calorimeter cluster object used to construct the track
-        List<HPSEcalCluster> ecal_all_clusters = getAllEcalClustersForFastTracking(event);
-        //Exit if no clusters found
+        List<Cluster> ecal_all_clusters = getAllEcalClustersForFastTracking(event);
+                //Exit if no clusters found
         if (ecal_all_clusters.size()==0) return;
 
         //if ( 1==1 ) return;
@@ -442,10 +442,10 @@
     
     
     
-//    private List<HPSEcalCluster> getAllEcalClusters(EventHeader event) {
+//    private List<Cluster> getAllEcalClusters(EventHeader event) {
 //        
-//        List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, "EcalReadoutHits"); 
-//        //List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, "EcalClusters"); 
+//        List<Cluster> clusters = event.get(Cluster.class, "EcalReadoutHits"); 
+//        //List<Cluster> clusters = event.get(Cluster.class, "EcalClusters"); 
 //
 //        if ( debug) {
 //            System.out.println("Found " + clusters.size() + " clusters");
@@ -454,18 +454,18 @@
 //    }
 
  
-    public int[] getCrystalPair(HPSEcalCluster cluster) {
+    public int[] getCrystalPair(Cluster cluster) {
         int[] pos = new int[2];
-        pos[0] = cluster.getSeedHit().getIdentifierFieldValue("ix");
-        pos[1] = cluster.getSeedHit().getIdentifierFieldValue("iy");
-        
-        //System.out.println("cluster ix,iy " + pos[0] + "," + pos[1] + "    from pos  " + cluster.getSeedHit().getPositionVec().toString());
+        pos[0] = cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("ix");
+        pos[1] = cluster.getCalorimeterHits().get(0).getIdentifierFieldValue("iy");
+        
+        //System.out.println("cluster ix,iy " + pos[0] + "," + pos[1] + "    from pos  " + cluster.getCalorimeterHits().get(0).getPositionVec().toString());
         return pos;
         //getCrystalPair(cluster.getPosition());
     }
     
     
-    private List<Integer> getEcalClustersForFastTracking(List<HPSEcalCluster> clusters, String side) {
+    private List<Integer> getEcalClustersForFastTracking(List<Cluster> clusters, String side) {
         if(side!="up" && side!="down") {
             throw new RuntimeException("This ecal side" + side + " do not exist!!");
         }
@@ -494,7 +494,7 @@
         return cls;
     }
      
-    private int selectCluster(List<Integer> ids, List<HPSEcalCluster> clusters) {
+    private int selectCluster(List<Integer> ids, List<Cluster> clusters) {
         //need to decide which cluster to take
 
         
@@ -536,17 +536,12 @@
            
     }
 
-    private List<HPSEcalCluster> getAllEcalClustersForFastTracking(EventHeader event) {
-        
-        //List<HPSEcalCluster> clusters = new ArrayList<HPSEcalCluster>();
-        List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, "EcalClusters"); 
-        //List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, "EcalReadoutHits"); 
-        //List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, "EcalCalHits"); 
+    private List<Cluster> getAllEcalClustersForFastTracking(EventHeader event) {        
+        List<Cluster> clusters = event.get(Cluster.class, "EcalClusters"); 
         if ( debug) {
             System.out.println("Found " + clusters.size() + " EcalClusters");
         }
-        
-     
+             
         return clusters;
     }
 

Modified: java/trunk/users/src/main/java/org/hps/users/phansson/ROOTFlatTupleDriver.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/phansson/ROOTFlatTupleDriver.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/phansson/ROOTFlatTupleDriver.java	Tue Jan  6 12:54:22 2015
@@ -23,7 +23,6 @@
 import org.hps.analysis.ecal.HPSMCParticlePlotsDriver;
 //===> import org.hps.conditions.deprecated.SvtUtils;
 import org.hps.readout.ecal.TriggerData;
-import org.hps.recon.ecal.HPSEcalCluster;
 import org.hps.recon.tracking.BeamlineConstants;
 import org.hps.recon.tracking.EventQuality;
 import org.hps.recon.tracking.HPSTrack;
@@ -37,6 +36,7 @@
 import org.lcsim.detector.identifier.IIdentifierHelper;
 import org.lcsim.detector.tracker.silicon.DopedSilicon;
 import org.lcsim.detector.tracker.silicon.HpsSiSensor;
+import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.GenericObject;
 import org.lcsim.event.MCParticle;
@@ -325,23 +325,23 @@
         }
         
         
-        List<HPSEcalCluster> clusters = new ArrayList<HPSEcalCluster>();
-
-        if(!event.hasCollection(HPSEcalCluster.class, ecalClusterCollectionName)) {
+        List<Cluster> clusters = new ArrayList<Cluster>();
+
+        if(!event.hasCollection(Cluster.class, ecalClusterCollectionName)) {
             if(_debug) {
                 System.out.println(this.getClass().getSimpleName() + ": event doesn't have a ecal cluster collection ");
             }
         } else {
-            clusters = event.get(HPSEcalCluster.class, ecalClusterCollectionName); 
+            clusters = event.get(Cluster.class, ecalClusterCollectionName); 
         
             if(_debug) {
                 System.out.println(this.getClass().getSimpleName() + ": found " + clusters.size() + " ecal clusters " + event.getEventNumber());
             }
 
 			boolean goodRegion = false;
-			for(HPSEcalCluster c : clusters) {
-                int iy = c.getSeedHit().getIdentifierFieldValue("iy");
-                int ix = c.getSeedHit().getIdentifierFieldValue("ix");
+			for(Cluster c : clusters) {
+                int iy = c.getCalorimeterHits().get(0).getIdentifierFieldValue("iy");
+                int ix = c.getCalorimeterHits().get(0).getIdentifierFieldValue("ix");
                 double E = c.getEnergy();
 				int evtnr = event.getEventNumber();
                 int clsize = c.getSize();
@@ -525,13 +525,13 @@
      * @return clostest cluster.
      */
 
-    private HPSEcalCluster findEcalCluster(Track trk, List<HPSEcalCluster> clusters) {
-    	HPSEcalCluster matched_cluster = null;
+    private Cluster findEcalCluster(Track trk, List<Cluster> clusters) {
+    	Cluster matched_cluster = null;
     	double drMin = 9999999.9;
     	double drMax = 9999999.9;
     	double dr;
     	Hep3Vector pos_cl,pos_trk;
-    	for(HPSEcalCluster cluster : clusters) {
+    	for(Cluster cluster : clusters) {
     		pos_cl = new BasicHep3Vector(cluster.getPosition());
     		pos_trk = TrackUtils.extrapolateTrack(trk,pos_cl.z());
     		dr = VecOp.sub(pos_cl, pos_trk).magnitude();
@@ -545,7 +545,7 @@
     	return matched_cluster;
     }
     
-    private void fillTextTuple(MCParticle e, MCParticle p, List<CmpTrack> tracks, Hep3Vector vtxPosParticle, Hep3Vector vtxPos, Hep3Vector vtxPosFr, Hep3Vector vtxPosNonBend, List<HPSEcalCluster> clusters, EventHeader event) throws IOException {
+    private void fillTextTuple(MCParticle e, MCParticle p, List<CmpTrack> tracks, Hep3Vector vtxPosParticle, Hep3Vector vtxPos, Hep3Vector vtxPosFr, Hep3Vector vtxPosNonBend, List<Cluster> clusters, EventHeader event) throws IOException {
         if(doPrintBranchInfoLine) {
             throw new RuntimeException("Need to fill tuple branches first!?");
         }
@@ -649,7 +649,7 @@
                 } 
                 else printWriter.format("%5.5f %5.5f %5.5f %5.5f %5.5f ",-9999999.9,-9999999.9,-9999999.9,-9999999.9,-9999999.9);
                 
-                HPSEcalCluster matched_cluster = findEcalCluster(trk1, clusters);
+                Cluster matched_cluster = findEcalCluster(trk1, clusters);
                 if(matched_cluster !=null) {
                 	double[] pos_cluster = matched_cluster.getPosition();
                 	posAtECal = TrackUtils.extrapolateTrack(trk1,pos_cluster[2]);
@@ -816,9 +816,9 @@
             else if(clusters.size()<=i) {
                 printWriter.format("%5.5f %5d %5d %5.5f %5.5f %5.5f %5d ",-999999.9,-999999,-999999,-999999.,-999999.,-999999.,-999999);
             } else {
-                //for(HPSEcalCluster cl : clusters) {
-                int iy = clusters.get(i).getSeedHit().getIdentifierFieldValue("iy");
-                int ix = clusters.get(i).getSeedHit().getIdentifierFieldValue("ix");
+                //for(Cluster cl : clusters) {
+                int iy = clusters.get(i).getCalorimeterHits().get(0).getIdentifierFieldValue("iy");
+                int ix = clusters.get(i).getCalorimeterHits().get(0).getIdentifierFieldValue("ix");
                 double pos[] = clusters.get(i).getPosition();
                 double E = clusters.get(i).getEnergy();
                 int clsize = clusters.get(i).getSize();

Modified: java/trunk/users/src/main/java/org/hps/users/phansson/SimpleResiduals.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/phansson/SimpleResiduals.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/phansson/SimpleResiduals.java	Tue Jan  6 12:54:22 2015
@@ -17,7 +17,6 @@
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import org.hps.recon.ecal.HPSEcalCluster;
 import org.lcsim.detector.identifier.IIdentifier;
 import org.lcsim.detector.tracker.silicon.ChargeCarrier;
 import org.lcsim.detector.tracker.silicon.SiSensor;
@@ -25,6 +24,7 @@
 import org.lcsim.detector.tracker.silicon.SiStrips;
 import org.lcsim.detector.tracker.silicon.SiTrackerIdentifierHelper;
 import org.lcsim.event.CalorimeterHit;
+import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.RawTrackerHit;
 import org.lcsim.event.Track;
@@ -208,17 +208,17 @@
         return pos;
     }
         
-    private List<HPSEcalCluster> getAllEcalClusters(EventHeader event) {
-        
-        List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, "EcalClusters"); 
+    private List<Cluster> getAllEcalClusters(EventHeader event) {
+        
+        List<Cluster> clusters = event.get(Cluster.class, "EcalClusters"); 
         if ( debug) {
             System.out.println("Found " + clusters.size() + " clusters");
         }
         return clusters;
     }
 
-    private double[] getClusterPosition(HPSEcalCluster cluster) {
-        CalorimeterHit hit = cluster.getSeedHit();
+    private double[] getClusterPosition(Cluster cluster) {
+        CalorimeterHit hit = cluster.getCalorimeterHits().get(0);
 
         //IDDecoder dec = dec.getSubdetector("Ecal").getIDDecoder();
         dec.setID(hit.getCellID());
@@ -231,14 +231,14 @@
     }
 
     
-    private List<Hep3Vector> getEcalClustersForFastTracking(List<HPSEcalCluster> clusters, String side) {
+    private List<Hep3Vector> getEcalClustersForFastTracking(List<Cluster> clusters, String side) {
         if(!side.equalsIgnoreCase("up") && !side.equalsIgnoreCase("down")) {
             throw new RuntimeException("This ecal side" + side + " do not exist!!");
         }
         List<Hep3Vector> cls = new ArrayList<Hep3Vector>();
         boolean save;
         double [] pos_xy;
-        for ( HPSEcalCluster cl : clusters) {
+        for ( Cluster cl : clusters) {
             save=false;
             pos_xy = getClusterPosition(cl);
             if(pos_xy[1]>=0 && side.equalsIgnoreCase("up")) {
@@ -262,9 +262,9 @@
         
     }
 
-    private List<HPSEcalCluster> getAllEcalClustersForFastTracking(EventHeader event) {
-        
-        List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, "EcalClusters"); 
+    private List<Cluster> getAllEcalClustersForFastTracking(EventHeader event) {
+        
+        List<Cluster> clusters = event.get(Cluster.class, "EcalClusters"); 
         if ( debug) {
             System.out.println("Found " + clusters.size() + " clusters");
         }
@@ -284,7 +284,7 @@
         List<SiTrackerHitStrip1D> trackerHits = getAllHitsInEvent(event);
         
         //Get the calorimeter cluster object used to construct the track
-        List<HPSEcalCluster> ecal_all_clusters = getAllEcalClustersForFastTracking(event);
+        List<Cluster> ecal_all_clusters = getAllEcalClustersForFastTracking(event);
         //Exit if no clusters found
         if (ecal_all_clusters.size()==0) return;
 

Modified: java/trunk/users/src/main/java/org/hps/users/phansson/TrackingReconstructionPlots.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/phansson/TrackingReconstructionPlots.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/phansson/TrackingReconstructionPlots.java	Tue Jan  6 12:54:22 2015
@@ -14,7 +14,6 @@
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import org.hps.recon.ecal.HPSEcalCluster;
 import org.hps.recon.tracking.BeamlineConstants;
 import org.hps.recon.tracking.DumbShaperFit;
 import org.hps.recon.tracking.HelixConverter;
@@ -24,6 +23,7 @@
 import org.hps.recon.tracking.TrackUtils;
 import org.lcsim.detector.tracker.silicon.HpsSiSensor;
 import org.lcsim.detector.tracker.silicon.SiSensor;
+import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.LCIOParameters.ParameterName;
 import org.lcsim.event.RawTrackerHit;
@@ -648,9 +648,9 @@
 
         List<Track> tracks = event.get(Track.class, trackCollectionName);
         nTracks.fill(tracks.size());
-        if (event.hasCollection(HPSEcalCluster.class, ecalCollectionName)) {
-            List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, ecalCollectionName);
-            for (HPSEcalCluster cluster : clusters) {
+        if (event.hasCollection(Cluster.class, ecalCollectionName)) {
+            List<Cluster> clusters = event.get(Cluster.class, ecalCollectionName);
+            for (Cluster cluster : clusters) {
                 //System.out.println("cluser position = ("+cluster.getPosition()[0]+","+cluster.getPosition()[1]+") with energy = "+cluster.getEnergy());
                 if (cluster.getPosition()[1] > 0) {
                     aida.histogram2D("Top ECal Cluster Position").fill(cluster.getPosition()[0], cluster.getPosition()[1]);
@@ -848,10 +848,10 @@
                     }
                 }
             }
-            if(event.hasCollection(HPSEcalCluster.class,ecalCollectionName)) {
-                List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, ecalCollectionName);
-
-                HPSEcalCluster clust = findClosestCluster(posAtEcal, clusters);
+            if(event.hasCollection(Cluster.class,ecalCollectionName)) {
+                List<Cluster> clusters = event.get(Cluster.class, ecalCollectionName);
+
+                Cluster clust = findClosestCluster(posAtEcal, clusters);
 
                 //           if (clust != null) {
                 if (clust != null) {
@@ -1028,10 +1028,10 @@
         //bottomFrame.dispose();
     }
 
-    private HPSEcalCluster findClosestCluster(Hep3Vector posonhelix, List<HPSEcalCluster> clusters) {
-        HPSEcalCluster closest = null;
+    private Cluster findClosestCluster(Hep3Vector posonhelix, List<Cluster> clusters) {
+        Cluster closest = null;
         double minDist = 9999;
-        for (HPSEcalCluster cluster : clusters) {
+        for (Cluster cluster : clusters) {
             double[] clPos = cluster.getPosition();
             double clEne = cluster.getEnergy();
             double dist = Math.sqrt(Math.pow(clPos[0] - posonhelix.x(), 2) + Math.pow(clPos[1] - posonhelix.y(), 2)); //coordinates!!!

Modified: java/trunk/users/src/main/java/org/hps/users/phansson/TrigRateDriver.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/phansson/TrigRateDriver.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/phansson/TrigRateDriver.java	Tue Jan  6 12:54:22 2015
@@ -15,8 +15,8 @@
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import org.hps.recon.ecal.HPSEcalCluster;
 import org.hps.recon.tracking.BeamlineConstants;
+import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.Track;
 import org.lcsim.geometry.Detector;
@@ -255,8 +255,8 @@
         
         if(simTrigger) {
             boolean trigger = false;
-            if(event.hasCollection(HPSEcalCluster.class, triggerClusterCollectionName)) {
-                for(HPSEcalCluster cluster : event.get(HPSEcalCluster.class, triggerClusterCollectionName)) {
+            if(event.hasCollection(Cluster.class, triggerClusterCollectionName)) {
+                for(Cluster cluster : event.get(Cluster.class, triggerClusterCollectionName)) {
                     if(cluster.getEnergy() > triggerThreshold) {
                         trigger = true;
                     }
@@ -276,7 +276,7 @@
         
         //fastTracking(event);
         
-        List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, ecalClusterCollectionName); 
+        List<Cluster> clusters = event.get(Cluster.class, ecalClusterCollectionName); 
         
         
         if(debug) System.out.println( clusters.size() + " ECal clusters in the event");
@@ -295,11 +295,11 @@
         }
         
         
-        for(HPSEcalCluster cl : clusters) {
+        for(Cluster cl : clusters) {
             
             int[] clusterPosIdx = new int[2];
-            clusterPosIdx[0] = cl.getSeedHit().getIdentifierFieldValue("ix");
-            clusterPosIdx[1] = cl.getSeedHit().getIdentifierFieldValue("iy");
+            clusterPosIdx[0] = cl.getCalorimeterHits().get(0).getIdentifierFieldValue("ix");
+            clusterPosIdx[1] = cl.getCalorimeterHits().get(0).getIdentifierFieldValue("iy");
             //Uses shower max position -> update ix,iy above? --> FIX THIS!
             double clusterPosY = cl.getPosition()[1];
             double clusterPosZ = cl.getPosition()[2];         
@@ -356,7 +356,7 @@
     }
        
     /*
-    private boolean hasBadNeighbours(HPSEcalCluster cluster) {
+    private boolean hasBadNeighbours(Cluster cluster) {
         //check if this cluster has a neighbour that is dead or bad
         if(!EcalConditions.badChannelsLoaded()) return false;
         List<CalorimeterHit> hits = cluster.getCalorimeterHits();

Modified: java/trunk/users/src/main/java/org/hps/users/phansson/TriggerTurnOnAnalysis.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/phansson/TriggerTurnOnAnalysis.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/phansson/TriggerTurnOnAnalysis.java	Tue Jan  6 12:54:22 2015
@@ -19,7 +19,7 @@
 
 import org.hps.analysis.ecal.HPSMCParticlePlotsDriver;
 import org.hps.readout.ecal.TriggerData;
-import org.hps.recon.ecal.HPSEcalCluster;
+import org.lcsim.event.Cluster;
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.MCParticle;
 import org.lcsim.geometry.Detector;
@@ -128,9 +128,9 @@
             if(_DEBUG) System.out.println(this.getClass().getSimpleName() + ": event " + event.getRunNumber() + " has no trigger data");
         }
         
-        List<HPSEcalCluster> clusters = null;
-        if( event.hasCollection(HPSEcalCluster.class, ecalClusterCollectionName) ) {
-            clusters = event.get(HPSEcalCluster.class, ecalClusterCollectionName);
+        List<Cluster> clusters = null;
+        if( event.hasCollection(Cluster.class, ecalClusterCollectionName) ) {
+            clusters = event.get(Cluster.class, ecalClusterCollectionName);
             if(_DEBUG) System.out.println(this.getClass().getSimpleName() + ": event " + event.getRunNumber() + " has " + clusters.size() + " ecal clusters");
         }
         else {

Top of Message | Previous Page | Permalink

Advanced Options


Options

Log In

Log In

Get Password

Get Password


Search Archives

Search Archives


Subscribe or Unsubscribe

Subscribe or Unsubscribe


Archives

November 2017
August 2017
July 2017
January 2017
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
December 2013
November 2013

ATOM RSS1 RSS2



LISTSERV.SLAC.STANFORD.EDU

Secured by F-Secure Anti-Virus CataList Email List Search Powered by the LISTSERV Email List Manager

Privacy Notice, Security Notice and Terms of Use