hps-java/src/main/java/org/lcsim/hps/users/omoreno
diff -N SvtTrackingPerformance.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ SvtTrackingPerformance.java 12 Jun 2012 03:03:00 -0000 1.1
@@ -0,0 +1,95 @@
+package org.lcsim.hps.users.omoreno;
+
+//--- java ---//
+import java.util.ArrayList;
+import java.util.List;
+
+//--- org.lcsim ---//
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.Track;
+import org.lcsim.fit.helicaltrack.HelicalTrackHit;
+import org.lcsim.geometry.Detector;
+import org.lcsim.recon.tracking.seedtracker.SeedTrack;
+import org.lcsim.util.Driver;
+import org.lcsim.util.aida.AIDA;
+
+//--- hps-java ---//
+import org.lcsim.hps.monitoring.Resettable;
+
+/**
+ *
+ * @author Omar Moreno <[log in to unmask]>
+ * @version $Id: SvtTrackingPerformance.java,v 1.1 2012/06/12 03:03:00 omoreno Exp $
+ */
+public class SvtTrackingPerformance extends Driver implements Resettable {
+
+ boolean debug;
+ int[] topLayer = new int[5];
+ int[] bottomLayer = new int[5];
+
+ // Collection names
+ String stereoHitCollectionName = "RotatedHelicalTrackHits";
+
+ public void reset() {
+ // TODO Auto-generated method stub
+ }
+
+
+ protected void detectorChanged(Detector detector){
+
+ }
+
+ public void process(EventHeader event){
+
+ // Check if the event has stereo hits
+ if(!event.hasCollection(HelicalTrackHit.class, stereoHitCollectionName)){
+ System.out.println(
+ this.getClass().getSimpleName() + " Stereo Hit Collection: "
+ + stereoHitCollectionName + " was not found! Skipping event ..." );
+ }
+
+ // Get the list of HelicalTrackHits
+ List<HelicalTrackHit> stereoHits = new ArrayList<HelicalTrackHit>();
+
+ for(HelicalTrackHit stereoHit : stereoHits){
+
+ // Loop over all stereo hits and arrange them by layer and by detector
+ // volume
+ int layer = this.getLayerNumber(stereoHit);
+
+ //
+ if(stereoHit.y() > 0) topLayer[layer - 1]++;
+ else if(stereoHit.y() < 0) bottomLayer[layer - 1]++;
+ else throw new RuntimeException("Invalid hit position - y = " + stereoHit.y());
+ }
+
+ // Check if there are four consecutive layers hit on either volume
+
+
+ }
+
+ private int getLayerNumber(HelicalTrackHit stereoHit){
+
+ if(debug)
+ System.out.println(this.getClass().getSimpleName() + " : Stereo Hit z position = " + stereoHit.z());
+
+ // Get the position along z
+ int z = Math.round((float) stereoHit.z());
+
+ switch(z){
+ case 100: return 1;
+ case 200: return 2;
+ case 300: return 3;
+ case 500: return 4;
+ case 700: return 5;
+ default: throw new RuntimeException("Invalid value of z: " + z);
+ }
+ }
+
+ private boolean consecutiveHits(int[] layer){
+ for(int index = 0; index < 2; index++){
+ if(layer[index] > 0 && layer[index + 1] > 0 && layer[index + 2] > 0 && layer[index +4] > 0) return true;
+ }
+ return false;
+ }
+}