hps-java/src/main/java/org/lcsim/hps/readout/ecal
diff -u -r1.3 -r1.4
--- FADCTriggerVariableDriver.java 3 Sep 2013 16:43:06 -0000 1.3
+++ FADCTriggerVariableDriver.java 28 Oct 2013 16:45:50 -0000 1.4
@@ -6,19 +6,22 @@
import java.io.FileNotFoundException;
import java.io.PrintWriter;
-import java.util.EnumSet;
+import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
+
import org.lcsim.event.EventHeader;
import org.lcsim.geometry.Detector;
-import org.lcsim.hps.recon.ecal.ECalUtils;
import org.lcsim.hps.recon.ecal.HPSEcalCluster;
-import org.lcsim.hps.util.ClockSingleton;
/**
*
+ * Dumps trigger variables to text file
+ *
* @author phansson
+ * @version
+ *
*/
public class FADCTriggerVariableDriver extends FADCTriggerDriver {
private int _pairs = 0;
@@ -62,11 +65,20 @@
List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, clusterCollectionName);
//System.out.printf("%d ecal clusters in event\n", clusters.size());
-
-
- boolean clusterPairs1 = getClusterPairs(clusters);
-
+ //System.out.printf("%s: %d clusters\n",this.getClass().getSimpleName(),clusters.size());
+ //for(HPSEcalCluster 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);
+ //System.out.printf("%s: %d unique clusters\n",this.getClass().getSimpleName(),unique_clusters.size());
+ //for(HPSEcalCluster 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]);
+ //}
+
+ boolean foundClusterPairs = getClusterPairs(unique_clusters);
+ if( foundClusterPairs) {
+
int ipair = 0;
for(HPSEcalCluster[] pair : clusterPairs) {
@@ -75,23 +87,23 @@
HPSEcalCluster cluster = pair[icluster];
- int quad = ECalUtils.getQuadrant(cluster);
+ //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"));
evString += String.format("%f %f %f ", E, pos[0], pos[1]);
}
- System.out.printf("%s\n",evString);
+ //System.out.printf("%s\n",evString);
outputStream.println(evString);
++ipair;
++_pairs;
} // pairs
-
+ }
} // has clusters
else {
- System.out.printf("No ecal cluster collection in event %d \n", event.getEventNumber());
+ //System.out.printf("No ecal cluster collection in event %d \n", event.getEventNumber());
}
@@ -110,6 +122,52 @@
-
+ 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);
+ boolean found = false;
+ for(HPSEcalCluster cl : unique) {
+ if( loop_clCmp.compareTo(cl) == 0 ) {
+ found = true;
+ }
+ }
+ if( !found ) {
+ unique.add(loop_cl);
+ }
+ }
+ return unique;
+ }
+
+
+ private static class HPSEcalClusterCmp implements Comparable<HPSEcalCluster> {
+ private HPSEcalCluster _cluster;
+ public HPSEcalClusterCmp(HPSEcalCluster cl) {
+ set_cluster(cl);
+ }
+ @Override
+ public int compareTo(HPSEcalCluster cl) {
+ if(cl.getEnergy()==get_cluster().getEnergy() && cl.getPosition()[0]==get_cluster().getPosition()[0] && cl.getPosition()[1]==get_cluster().getPosition()[1] ) {
+ return 0;
+ } else {
+ if( cl.getEnergy() > get_cluster().getEnergy()) {
+ return 1;
+ } else {
+ return -1;
+ }
+ }
+ }
+ public HPSEcalCluster get_cluster() {
+ return _cluster;
+ }
+ public void set_cluster(HPSEcalCluster _cluster) {
+ this._cluster = _cluster;
+ }
+
+ }
}
+
+
+
+