Print

Print


Commit in java/trunk/tracking/src/main/java/org/hps/recon/tracking on MAIN
TrackDataDriver.java+43-9670 -> 671
Calculate the track residuals and add them to the event.

java/trunk/tracking/src/main/java/org/hps/recon/tracking
TrackDataDriver.java 670 -> 671
--- java/trunk/tracking/src/main/java/org/hps/recon/tracking/TrackDataDriver.java	2014-06-04 23:47:25 UTC (rev 670)
+++ java/trunk/tracking/src/main/java/org/hps/recon/tracking/TrackDataDriver.java	2014-06-04 23:48:17 UTC (rev 671)
@@ -1,5 +1,7 @@
 package org.hps.recon.tracking;
 
+import hep.physics.vec.Hep3Vector;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -9,6 +11,7 @@
 import org.lcsim.event.Track;
 import org.lcsim.event.TrackerHit;
 import org.lcsim.fit.helicaltrack.HelicalTrackCross;
+import org.lcsim.fit.helicaltrack.HelicalTrackHit;
 import org.lcsim.fit.helicaltrack.HelicalTrackStrip;
 import org.lcsim.geometry.Detector;
 import org.lcsim.util.Driver;
@@ -27,6 +30,7 @@
 	String trackCollectionName = "MatchedTracks";
 	// TODO: Change this to match whatever track name is decided on
 	String trackTimeDataCollectionName = "TrackTimeData";
+	String trackResidualsCollectionName = "TrackResiduals";
 
 	public TrackDataDriver() {}
 
@@ -48,36 +52,63 @@
 		// Create a collection to hold the track time and t0 residual data
 		List<TrackTimeData> timeDataCollection = new ArrayList<TrackTimeData>(); 
 		
+		// Create a collection to hold the track residuals
+		List<TrackResidualsData> trackResidualsCollection = new ArrayList<TrackResidualsData>();
+		
 		double totalT0 = 0;
 		double totalHits = 0;
 		double trackTime = 0;
 		double t0Residual = 0;
+		double xResidual = 0;
+		double yResidual = 0;
 		float trackerVolume = -1; 
-		int layer;
 		
 		
 		boolean isFirstHit = true;
 		
 		HpsSiSensor sensor = null; 
-		TrackTimeData timeData = null; 
+		Hep3Vector stereoHitPosition = null;
+		Hep3Vector trackPosition = null;
 		
-		List<Double> t0Residuals = new ArrayList<Double>(); 
-		List<Integer> layers = new ArrayList<Integer>();
+		List<Double>  t0Residuals = new ArrayList<Double>(); 
+		List<Double>  trackResidualsX = new ArrayList<Double>();
+		List<Float>   trackResidualsY = new ArrayList<Float>();
+		List<Integer> sensorLayers = new ArrayList<Integer>();
+		List<Integer> stereoLayers = new ArrayList<Integer>(); 
 		
+		
 		// Loop over all the tracks in the event
 		for (Track track : tracks) {
-			
+						
 			totalT0 = 0; 
 			totalHits = 0;
 			t0Residuals.clear();
-			layers.clear();
+			sensorLayers.clear();
+			trackResidualsX.clear();
+			trackResidualsY.clear();
+			stereoLayers.clear();
 			
 			//
-			// Calculate the track time
+			// Calculate the track time and track residuals
 			//
 			
 			// Loop over all stereo hits comprising a track
 			for (TrackerHit stereoHit : track.getTrackerHits()) {
+			
+				// Add the stereo layer number associated with the track residual
+				stereoLayers.add(((HelicalTrackHit) stereoHit).Layer());
+				
+				// Extrapolate the track to the stereo hit position and calculate 
+				// track residuals
+				stereoHitPosition = ((HelicalTrackHit) stereoHit).getCorrectedPosition();
+				System.out.println("Stereo Hit Position: " + stereoHitPosition.toString());
+				trackPosition = TrackUtils.extrapolateTrack(track, stereoHitPosition.x());
+				System.out.println("Track Position: " + trackPosition.toString());
+				xResidual = trackPosition.x() - stereoHitPosition.y();
+				yResidual = trackPosition.y() - stereoHitPosition.z(); 
+				trackResidualsX.add(xResidual);
+				trackResidualsY.add((float) yResidual);
+				
 				// Loop over the clusters comprising the stereo hit
 				for(HelicalTrackStrip cluster : ((HelicalTrackCross) stereoHit).getStrips()){
 					
@@ -107,7 +138,7 @@
 					}
 				
 					// Add the layer number associated with this residual to the list of layers
-					layers.add(sensor.getLayerNumber()); 
+					sensorLayers.add(sensor.getLayerNumber()); 
 					
 					// Find the t0 residual and add it to the list of residuals
 					t0Residual = trackTime - cluster.time(); 
@@ -117,9 +148,12 @@
 				}
 			}
 		
-			timeDataCollection.add(new TrackTimeData(trackerVolume, trackTime, layers, t0Residuals));
+			timeDataCollection.add(new TrackTimeData(trackerVolume, trackTime, sensorLayers, t0Residuals));
+			trackResidualsCollection.add(new TrackResidualsData((int) trackerVolume, stereoLayers, trackResidualsX, trackResidualsY));
+		
 		}
 		
 		event.put(trackTimeDataCollectionName, timeDataCollection, TrackTimeData.class, 0);
+		event.put(trackResidualsCollectionName, trackResidualsCollection, TrackResidualsData.class, 0);
 	}
 }
SVNspam 0.1