Commit in hps-java/src/main/java/org/lcsim/hps on MAIN
monitoring/svt/TrackingReconstructionPlots.java+7-71.15 -> 1.16
recon/particle/ReconParticleDriver.java+4-81.6 -> 1.7
recon/tracking/EcalTrackMatch.java+2-161.5 -> 1.6
              /SvtTrackExtrapolator.java+26-331.10 -> 1.11
              /TrackUtils.java+70-2371.27 -> 1.28
recon/tracking/gbl/TruthResiduals.java+2-61.6 -> 1.7
recon/vertexing/TwoTrackVertexer.java+1-21.5 -> 1.6
users/mgraham/ElwinsTrackingRecon.java+20-191.1 -> 1.2
             /ExamplePlotter.java+4-21.2 -> 1.3
             /TrackExtrapolationAnalysis.java+12-101.5 -> 1.6
             /TwoTrackAnalysis.java+23-221.2 -> 1.3
users/omoreno/ReconstructedParticleChecker.java+2-41.1 -> 1.2
             /SvtHitEfficiency.java+6-121.4 -> 1.5
             /SvtQA.java+3-51.5 -> 1.6
             /SvtTrackAnalysis.java+13-161.3 -> 1.4
             /TestRunTrackReconEfficiency.java+2-51.3 -> 1.4
users/phansson/ECalGainDriver.java+4-101.12 -> 1.13
              /MultScatAnalysis.java+5-111.8 -> 1.9
              /TrigRateDriver.java+4-21.6 -> 1.7
              /TwoTrackAnlysis.java+4-61.22 -> 1.23
+214-433
20 modified files
Making extrapolator static and collecting constants to common file.

hps-java/src/main/java/org/lcsim/hps/monitoring/svt
TrackingReconstructionPlots.java 1.15 -> 1.16
diff -u -r1.15 -r1.16
--- TrackingReconstructionPlots.java	12 Jul 2013 23:11:19 -0000	1.15
+++ TrackingReconstructionPlots.java	14 Oct 2013 22:03:09 -0000	1.16
@@ -3,14 +3,17 @@
 import hep.aida.*;
 import hep.physics.matrix.SymmetricMatrix;
 import hep.physics.vec.Hep3Vector;
+
 import java.io.IOException;
 import java.util.List;
 import java.util.logging.Level;
 import java.util.logging.Logger;
+
 import org.lcsim.detector.tracker.silicon.SiSensor;
 import org.lcsim.event.*;
 import org.lcsim.geometry.Detector;
 import org.lcsim.geometry.IDDecoder;
+import org.lcsim.hps.event.BeamlineConstants;
 import org.lcsim.hps.monitoring.AIDAFrame;
 import org.lcsim.hps.monitoring.Resettable;
 import org.lcsim.hps.recon.ecal.HPSEcalCluster;
@@ -50,7 +53,6 @@
     IDDecoder dec;
     private int eventCount;
     private List<SiSensor> sensors;
-    private double zAtConverter = -674.062;//mm
     private String outputPlots = null;
     IPlotter plotter;
     IPlotter plotter2;
@@ -726,12 +728,10 @@
             HelixConverter converter = new HelixConverter(0);
             StraightLineTrack slt = converter.Convert(ht);
 
-            SvtTrackExtrapolator extend = new SvtTrackExtrapolator();
-            extend.setTrack(stEle);
-            Hep3Vector posAtEcal = extend.getTrackPositionAtEcal();
+            Hep3Vector posAtEcal = SvtTrackExtrapolator.getTrackPositionAtEcal(trk);
 
-            aida.histogram1D("X (mm) @ Z=-60cm").fill(slt.getYZAtX(zAtConverter)[0]);  //this is y in the tracker frame
-            aida.histogram1D("Y (mm) @ Z=-60cm").fill(slt.getYZAtX(zAtConverter)[1]);  //this is z in the tracker frame
+            aida.histogram1D("X (mm) @ Z=-60cm").fill(slt.getYZAtX(BeamlineConstants.HARP_POSITION)[0]);  //this is y in the tracker frame
+            aida.histogram1D("Y (mm) @ Z=-60cm").fill(slt.getYZAtX(BeamlineConstants.HARP_POSITION)[1]);  //this is z in the tracker frame
             //double sECAL = HelixUtils.PathToXPlane(ht, zEcal, 3000, 1).get(0);
             aida.histogram1D("X (mm) @ Z=-150cm").fill(slt.getYZAtX(zAtColl)[0]);
             aida.histogram1D("Y (mm) @ Z=-150cm").fill(slt.getYZAtX(zAtColl)[1]);
@@ -868,7 +868,7 @@
             //           if (clust != null) {
             if (clust != null) {
                 
-                posAtEcal = extend.extrapolateTrack(clust.getPosition()[2]);//.positionAtEcal();
+                posAtEcal = SvtTrackExtrapolator.extrapolateTrack(trk,clust.getPosition()[2]);//.positionAtEcal();
 
                 aida.histogram2D("Energy Vs Momentum").fill(clust.getEnergy(), trk.getPX() * 1000.0);
                 aida.histogram1D("Energy Over Momentum").fill(clust.getEnergy() / (trk.getPX() * 1000.0));

hps-java/src/main/java/org/lcsim/hps/recon/particle
ReconParticleDriver.java 1.6 -> 1.7
diff -u -r1.6 -r1.7
--- ReconParticleDriver.java	15 Apr 2013 07:14:32 -0000	1.6
+++ ReconParticleDriver.java	14 Oct 2013 22:03:09 -0000	1.7
@@ -27,12 +27,11 @@
  *
  * @author Mathew Graham <[log in to unmask]>
  * @author Omar Moreno <[log in to unmask]>
- * @version $Id: ReconParticleDriver.java,v 1.6 2013/04/15 07:14:32 omoreno Exp $ 
+ * @version $Id: ReconParticleDriver.java,v 1.7 2013/10/14 22:03:09 phansson Exp $ 
  */
 public abstract class ReconParticleDriver extends Driver {
 
-	SvtTrackExtrapolator extrapolator = new SvtTrackExtrapolator();
-
+	
 	// Flags
 	boolean debug = false; 
 	
@@ -190,11 +189,9 @@
                 		continue; 
                 	}
                 	
-        			// Set the track to extrapolate 
-        			extrapolator.setTrack(track);
         			
         			// Extrapolate the track to the Ecal cluster shower max
-        			Hep3Vector trkPosAtShowerMax = extrapolator.extrapolateTrack(clusterPos.z());
+        			Hep3Vector trkPosAtShowerMax = SvtTrackExtrapolator.extrapolateTrack(track,clusterPos.z());
         			// Check if any of the extrapolated values are invalid.
         			// TODO: There are some track whose extrapolated coordinates
         			//        are NaN. The problem seems to be that the y-coordinate
@@ -241,8 +238,7 @@
                 	this.printDebug("Ecal cluster position: " + ecalClusterPos.toString());
                 	
                 	// Get the position of the track at the Ecal cluster shower max
-                	extrapolator.setTrack(matchedTrack);
-                	Hep3Vector trkPosAtShowerMax = extrapolator.extrapolateTrack(ecalClusterPos.z());
+                	Hep3Vector trkPosAtShowerMax = SvtTrackExtrapolator.extrapolateTrack(matchedTrack,ecalClusterPos.z());
         			this.printDebug("Track position at shower max: " + trkPosAtShowerMax.toString());
         			
         			// Get the distance between the track and the cluster position

hps-java/src/main/java/org/lcsim/hps/recon/tracking
EcalTrackMatch.java 1.5 -> 1.6
diff -u -r1.5 -r1.6
--- EcalTrackMatch.java	8 Sep 2012 00:17:53 -0000	1.5
+++ EcalTrackMatch.java	14 Oct 2013 22:03:09 -0000	1.6
@@ -17,22 +17,16 @@
 //    private String trackCollectionName = "MatchedTracks";
     Cluster cluster;
     Track matchedTrack;
-    SvtTrackExtrapolator extrapolator;
-    //SvtTrackExtrapolator extrapolator;
     private boolean debug = false;
 
     public EcalTrackMatch() {
         cluster = null;
         matchedTrack = null;
-        extrapolator = new SvtTrackExtrapolator();
-        //extrapolator = new SvtTrackExtrapolator();
     }
 
     public EcalTrackMatch(boolean deb) {
         cluster = null;
         matchedTrack = null;
-        extrapolator = new SvtTrackExtrapolator();
-        //extrapolator = new SvtTrackExtrapolator();
         debug = deb;
 
     }
@@ -58,11 +52,7 @@
     }
 
     public double dist(Track track, int dir) {
-//            SeedTrack trk  = (SeedTrack)track;
-        extrapolator.setTrack(track);
-        //extend.setTrack(stEle);
-        //Hep3Vector posAtEcal = extend.positionAtEcal();
-        Hep3Vector trk_pos = extrapolator.getTrackPositionAtEcal();
+        Hep3Vector trk_pos = SvtTrackExtrapolator.getTrackPositionAtEcal(track);
         double dx;
         if (dir == 0) {
             dx = cluster.getPosition()[0] - trk_pos.x();
@@ -76,11 +66,7 @@
     }
 
     public double dR(Track track) {
-//            SeedTrack trk  = (SeedTrack)track;
-        extrapolator.setTrack(track);
-        //extend.setTrack(stEle);
-        //Hep3Vector posAtEcal = extend.positionAtEcal();
-        Hep3Vector trk_pos = extrapolator.getTrackPositionAtEcal();
+        Hep3Vector trk_pos = SvtTrackExtrapolator.getTrackPositionAtEcal(track);
         double dx = dX(track);
         double dy = dY(track);
         double dr = Math.sqrt(dx * dx + dy * dy);

hps-java/src/main/java/org/lcsim/hps/recon/tracking
SvtTrackExtrapolator.java 1.10 -> 1.11
diff -u -r1.10 -r1.11
--- SvtTrackExtrapolator.java	11 Oct 2013 23:14:28 -0000	1.10
+++ SvtTrackExtrapolator.java	14 Oct 2013 22:03:09 -0000	1.11
@@ -5,7 +5,9 @@
 import hep.physics.vec.Hep3Vector;
 
 import org.lcsim.event.Track;
+import org.lcsim.fit.helicaltrack.HelicalTrackFit;
 import org.lcsim.hps.event.BeamlineConstants;
+import org.lcsim.recon.tracking.seedtracker.SeedTrack;
 
 public class SvtTrackExtrapolator extends TrackUtils {
 
@@ -22,63 +24,54 @@
 		setTrack(pars);
 	}
 	
-	/**
-	 * 
-	 */
-	public void setTrack(Track track){
-		setTrack(track);
-        isTrackSet = true;
-	}
-        
-        /**
-	 * 
-	 */
-	public void setTrack(double[] pars){
-		setTrack(pars);
-        isTrackSet = true;
-	}
-	
 	
 	/**
 	 * 
 	 */
-	public Hep3Vector getTrackPositionAtEcal(){
-		return this.extrapolateTrack(BeamlineConstants.ECAL_FACE);
+	public static Hep3Vector getTrackPositionAtEcal(Track track){
+		return extrapolateTrack(track, BeamlineConstants.ECAL_FACE);
 	}
 	
-	public Hep3Vector getTrackPositionAtHarp(){
-		return this.extrapolateTrack(BeamlineConstants.HARP_POSITION);
+	public static Hep3Vector getTrackPositionAtHarp(Track track){
+		return extrapolateTrack(track, BeamlineConstants.HARP_POSITION);
 	}
 	
 	
-	/**
-	 * 
-	 */
-	public Hep3Vector extrapolateTrack(double z){
+	public static Hep3Vector extrapolateTrack(HelicalTrackFit helix, double z){
+        SeedTrack trk = new SeedTrack();
+        //bfield = Math.abs((detector.getFieldMap().getField(new BasicHep3Vector(0, 0, 0)).y()));
+        double bfield = 0.;        
+        // Here we aren't really using anything related to momentum so B-field is not important
+        trk.setTrackParameters(helix.parameters(), bfield); // Sets first TrackState.
+        trk.setCovarianceMatrix(helix.covariance()); // Modifies first TrackState.
+        trk.setChisq(helix.chisqtot());
+        trk.setNDF(helix.ndf()[0]+helix.ndf()[1]);        
+        return extrapolateTrack(trk,z);
+	}
+	
+	public static Hep3Vector extrapolateTrack(Track track, double z){
 	
-		if(!isTrackSet) throw new RuntimeException("Track has not been set!");
-		
 		Hep3Vector trackPosition = null;
 		double dz = 0;
 		if(z >= BeamlineConstants.DIPOLE_EDGE){
-			trackPosition = extrapolateHelixToXPlane(BeamlineConstants.DIPOLE_EDGE);
+			trackPosition = extrapolateHelixToXPlane(track, BeamlineConstants.DIPOLE_EDGE);
 			dz = z - BeamlineConstants.DIPOLE_EDGE;
 		} else if(z <= BeamlineConstants.DIPOLE_EDGELOW){
-			trackPosition  = extrapolateHelixToXPlane(BeamlineConstants.DIPOLE_EDGELOW);
+			trackPosition  = extrapolateHelixToXPlane(track, BeamlineConstants.DIPOLE_EDGELOW);
 			dz = z - trackPosition.x();
 		} else {
-			Hep3Vector detVecTracking = extrapolateHelixToXPlane(z);
+			Hep3Vector detVecTracking = extrapolateHelixToXPlane(track,z);
 			//System.out.printf("detVec %s\n", detVecTracking.toString());
 			return new BasicHep3Vector(detVecTracking.y(),detVecTracking.z(),detVecTracking.x());
 		}
 		
 		// Get the track azimuthal angle
-		double phi = getPhi(trackPosition);
+		double phi = getPhi(track, trackPosition);
 
 		// Find the distance to the point of interest
-		double r = dz/(getSinTheta()*Math.cos(phi));
-		double dx = r*getSinTheta()*Math.sin(phi);
-		double dy = r*getCosTheta();
+		double r = dz/(getSinTheta(track)*Math.cos(phi));
+		double dx = r*getSinTheta(track)*Math.sin(phi);
+		double dy = r*getCosTheta(track);
 		
 		// Find the track position at the point of interest
 		double x = trackPosition.y() + dx;

hps-java/src/main/java/org/lcsim/hps/recon/tracking
TrackUtils.java 1.27 -> 1.28
diff -u -r1.27 -r1.28
--- TrackUtils.java	11 Oct 2013 23:14:28 -0000	1.27
+++ TrackUtils.java	14 Oct 2013 22:03:09 -0000	1.28
@@ -19,11 +19,16 @@
 import org.lcsim.detector.tracker.silicon.SiSensor;
 import org.lcsim.event.MCParticle;
 import org.lcsim.event.RawTrackerHit;
-
 //--- org.lcsim ---//
 import org.lcsim.event.Track;
 import org.lcsim.event.TrackerHit;
-import org.lcsim.fit.helicaltrack.*;
+import org.lcsim.fit.helicaltrack.HelicalTrackFit;
+import org.lcsim.fit.helicaltrack.HelicalTrackHit;
+import org.lcsim.fit.helicaltrack.HelicalTrackStrip;
+import org.lcsim.fit.helicaltrack.HelixParamCalculator;
+import org.lcsim.fit.helicaltrack.HelixUtils;
+import org.lcsim.fit.helicaltrack.HitUtils;
+import org.lcsim.fit.helicaltrack.MultipleScatter;
 import org.lcsim.hps.event.BeamlineConstants;
 import org.lcsim.hps.event.HPSTransformations;
 import org.lcsim.hps.users.phansson.WTrack;
@@ -33,7 +38,7 @@
 /**
  * 
  * @author Omar Moreno <[log in to unmask]>
- * @version $Id: TrackUtils.java,v 1.27 2013/10/11 23:14:28 phansson Exp $
+ * @version $Id: TrackUtils.java,v 1.28 2013/10/14 22:03:09 phansson Exp $
  * TODO: Switch to JLab coordinates
  */
 
@@ -41,8 +46,8 @@
 
     protected boolean _debug = false;
 	protected boolean isTrackSet = false;
-	protected double[] trackParameters;
-        
+	protected double[] trackParameters = null;
+	    
         
 	/**
 	 * 
@@ -62,215 +67,63 @@
 	 * 
 	 */
 	public void setTrack(double[] pars){
-		trackParameters = new double[9];
-		this.setTrackParameters(pars);
+		trackParameters = pars;
         isTrackSet = true;
 	}
 	
-	/**
-	 * 
-	 */
-	public double getDoca(){
-		return trackParameters[0];
-	}
-	
-	/**
-	 * 
-	 */
-	public double getPhi0(){
-		return trackParameters[1];
-	}
-	
-	/**
-	 * 
-	 */
-	public double getR(){
-		return trackParameters[2];
+    /**
+     * 
+     */
+	public void setTrack(Track track){
+		this.setTrack(track.getTrackParameters());
 	}
 	
-	/**
-	 * 
-	 */
-	public double getX0(){
-		return trackParameters[3];
-	}
 	
-	/**
-	 * 
-	 */
-	public double getY0(){
-		return trackParameters[4];
-	}
-	/**
-	 * 
-	 */
-	public double getZ0(){
-		return trackParameters[5];
-	}
-	
-	/**
-	 * 
-	 */
-	public double getTanLambda(){
-		return trackParameters[6];
+
+      
+	public static Hep3Vector extrapolateHelixToXPlane(Track track, double x){
+		return extrapolateHelixToXPlane(getHTF(track),x);
 	}
-	
-	/**
-	 * 
-	 */
-	public double getXC(){
-		return trackParameters[7];
+	public static Hep3Vector extrapolateHelixToXPlane(HelicalTrackFit htf, double x){
+		double s = HelixUtils.PathToXPlane(htf, x, 0., 0).get(0);
+		return HelixUtils.PointOnHelix(htf, s);
+	}
+	public static double getPhi(Track track, Hep3Vector position){ 
+		double x = Math.sin(getPhi0(track)) - (1/getR(track))*(position.x() - getX0(track));
+		double y = Math.cos(getPhi0(track)) + (1/getR(track))*(position.y() - getY0(track));
+		return Math.atan2(x, y);
 	}
-	
-	/**
-	 * 
-	 */
-	public double getYC(){
-		return trackParameters[8];
+	public static double getX0(Track track) {
+		return -1*getDoca(track)*Math.sin(getPhi0(track));
 	}
-	
-	/**
-	 * 
-	 */
-	public double getXOnHelixProjection(double y){
-		
-		// Check if a track has been set
-		if(!isTrackSet) throw new RuntimeException("Track has not been set!");
-		
-		// Find the x position
-		return this.getXC() 
-				+ Math.signum(this.getR())*Math.sqrt(this.getR()*this.getR() - Math.pow(y-this.getYC(), 2));
+	public static double getR(Track track) {
+		return 1.0/track.getTrackStates().get(0).getOmega();
 	}
-	
-	/**
-	 * 
-	 */
-	public double getYOnHelixProjection(double x){
-		
-		// Check if a track has been set
-		if(!isTrackSet) throw new RuntimeException("Track has not been set!");
-                if(_debug) System.out.println(this.getClass().getSimpleName() + ": getYOnHelixProjection for x=" + x + " R=" + this.getR() + " YC=" + this.getYC() + " XC=" + this.getXC());
-		// Find the y position
-                if(_debug) {
-                    System.out.println(this.getClass().getSimpleName() + ": => y = " + Math.sqrt(this.getR()*this.getR() - Math.pow(x-this.getXC(), 2)));
-                    System.out.println(this.getClass().getSimpleName() + ": => y = " + (this.getYC() + Math.signum(this.getR())*Math.sqrt(this.getR()*this.getR() - Math.pow(x-this.getXC(), 2))));
-                }
-                
-		return  this.getYC() + Math.signum(this.getR())*Math.sqrt(this.getR()*this.getR() - Math.pow(x-this.getXC(), 2));
+	public static double getY0(Track track) {
+		return getDoca(track)*Math.cos(getPhi0(track));
 	}
-	
-	/**
-	 * 
-	 */
-	public double arcLength(double x, double y){
-		
-        double phi0 = Math.atan2(this.getY0() - this.getYC(), this.getX0() - this.getXC());
-        double phi = Math.atan2(y - this.getYC(), x - this.getXC());
-        double dphi = phi - phi0;        
-        
-        if (dphi >  Math.PI) dphi -= 2. * Math.PI;
-        if (dphi < -Math.PI) dphi += 2. * Math.PI;
-        
-        return -this.getR()*dphi;
+	public static double getDoca(Track track) {
+		return track.getTrackStates().get(0).getD0();
 	}
-	
-	/**
-	 * 
-	 */
-	public void printTrackParameters(){
-		System.out.println(this.getClass().getSimpleName() + ": DOCA: " + this.getDoca() + 
-						   " phi0: " + this.getPhi0() + 
-						   " R: " 	 + this.getR()    +
-						   " x0: " 	 + this.getX0()   +
-						   " y0: "   + this.getY0()   + 
-						   " z0: " 	 + this.getZ0()   + 
-						   " tan(Lambda): " + this.getTanLambda() + 
-						   " xc: "   + this.getXC()   + 
-						   " yc: "   + this.getYC() );
-        }
-	
-	
-	/**
-	 * 
-	 */
-	private void setTrackParameters(Track track){
-		
-		// All track parameters are in LCSim coordinates system
-		trackParameters[0] = track.getTrackParameter(0);				// DOCA
-		trackParameters[1] = track.getTrackParameter(1);				// phi0
-		trackParameters[2] = 1/track.getTrackParameter(2);				// R
-		trackParameters[3] = -this.getDoca()*Math.sin(this.getPhi0());	// x0
-		trackParameters[4] = this.getDoca()*Math.cos(this.getPhi0());	// y0
-		trackParameters[5] = track.getTrackParameter(3);				// z0
-		trackParameters[6] = track.getTrackParameter(4);				// tan(Lambda)
-		trackParameters[7] = (this.getR() - this.getDoca())*Math.sin(this.getPhi0());	// xc
-		trackParameters[8] = -(this.getR() - this.getDoca())*Math.cos(this.getPhi0());	// yc
-                if(_debug) this.printTrackParameters();
+	public static double getPhi0(Track track) {
+		return track.getTrackStates().get(0).getPhi();
 	}
-        
-        /**
-	 * 
-	 */
-	public void setTrack(Track track){
-		trackParameters = new double[9];
-		// All track parameters are in LCSim coordinates system
-		trackParameters[0] = track.getTrackParameter(0);				// DOCA
-		trackParameters[1] = track.getTrackParameter(1);				// phi0
-		trackParameters[2] = 1/track.getTrackParameter(2);				// R
-		trackParameters[3] = -this.getDoca()*Math.sin(this.getPhi0());	// x0
-		trackParameters[4] = this.getDoca()*Math.cos(this.getPhi0());	// y0
-		trackParameters[5] = track.getTrackParameter(3);				// z0
-		trackParameters[6] = track.getTrackParameter(4);				// tan(Lambda)
-		trackParameters[7] = (this.getR() - this.getDoca())*Math.sin(this.getPhi0());	// xc
-		trackParameters[8] = -(this.getR() - this.getDoca())*Math.cos(this.getPhi0());	// yc
-                if(_debug) this.printTrackParameters();
-                isTrackSet = true;
+	public static double getZ0(Track track) {
+		return track.getTrackStates().get(0).getZ0();
 	}
-	
-        /**
-	 * 
-	 */
-	private void setTrackParameters(double[] pars){
-		
-		// All track parameters are in LCSim coordinates system
-		trackParameters[0] = pars[0];				// DOCA
-		trackParameters[1] = pars[1];				// phi0
-		trackParameters[2] = 1/pars[2];				// R
-		trackParameters[3] = -this.getDoca()*Math.sin(this.getPhi0());	// x0
-		trackParameters[4] = this.getDoca()*Math.cos(this.getPhi0());	// y0
-		trackParameters[5] = pars[3];				// z0
-		trackParameters[6] = pars[4];				// tan(Lambda)
-		trackParameters[7] = (this.getR() - this.getDoca())*Math.sin(this.getPhi0());	// xc
-		trackParameters[8] = -(this.getR() - this.getDoca())*Math.cos(this.getPhi0());	// yc
-                if(_debug) this.printTrackParameters();
-	
+	public static double getTanLambda(Track track) {
+		return track.getTrackStates().get(0).getTanLambda();
 	}
-      
-	/**
-	 * 
-	 */
-	public Hep3Vector extrapolateHelixToXPlane(double x){
-		if(_debug) System.out.println(this.getClass().getSimpleName() + ":extrapolateHelixToXPlane for x= " + x );
-                double y = this.getYOnHelixProjection(x);
-		double s = this.arcLength(x, y);
-		double z = this.getZ0() + s*this.getTanLambda();
-		if(_debug) System.out.println(this.getClass().getSimpleName() + ": y " + y + " s " + s + " z " + z);
-		return new BasicHep3Vector(x, y, z);
+	public static double getSinTheta(Track track){
+		return 1/Math.sqrt(1 + Math.pow(getTanLambda(track), 2));
 	}
-	
-	/**
-	 * 
-	 */
-	public Hep3Vector extrapolateHelixToYPlane(double y){
-		double x = this.getXOnHelixProjection(y);
-		double s = this.arcLength(x, y);
-		double z = this.getZ0() + s*this.getTanLambda();
-		
-		return new BasicHep3Vector(x, y, z);
+	public static double getCosTheta(Track track){
+		return getTanLambda(track)/Math.sqrt(1 + Math.pow(getTanLambda(track), 2));
 	}
-	
-        
-        public static Hep3Vector getHelixPlaneIntercept(HelicalTrackFit helfit, Hep3Vector unit_vec_normal_to_plane,Hep3Vector point_on_plane, double bfield) {
+
+       
+
+	public static Hep3Vector getHelixPlaneIntercept(HelicalTrackFit helfit, Hep3Vector unit_vec_normal_to_plane,Hep3Vector point_on_plane, double bfield) {
             /*
              * Use code in WTrack to find the iterative solution to the interception
              */
@@ -379,32 +232,7 @@
     	    return pos;
         }
         
-		
-	public double getPhi(Hep3Vector position){
-		
-		// Check if a track has been set
-		if(!isTrackSet) throw new RuntimeException("Track has not been set!");
-		
-		double x = Math.sin(this.getPhi0() - (1/this.getR())*(position.x() - this.getX0()));
-		double y = Math.cos(this.getPhi0() + (1/this.getR())*(position.y() - this.getY0()));
-	
-		return Math.atan2(x, y);
-	}
-	
-	/**
-	 * 
-	 */
-	public double getSinTheta(){
-		return 1/Math.sqrt(1 + Math.pow(this.getTanLambda(), 2));
-	}
-	
-	/**
-	 * 
-	 */
-	public double getCosTheta(){
-		return this.getTanLambda()/Math.sqrt(1 + Math.pow(this.getTanLambda(), 2));
-	}
-	
+
         
         /**
         *
@@ -482,17 +310,7 @@
             return false;
         } 
 
-        public HelicalTrackFit makeHelicalTrackFit(double[] helix_parameters) {
-
-            SymmetricMatrix cov = new SymmetricMatrix(5);
-            double[] chisq = new double[2];
-            int[] ndf = new int[2];
-            Map<HelicalTrackHit, Double> smap = new HashMap<HelicalTrackHit, Double>();
-            Map<HelicalTrackHit, MultipleScatter> msmap = new HashMap<HelicalTrackHit, MultipleScatter>();
-            HelicalTrackFit fit = new HelicalTrackFit(helix_parameters, cov, chisq, ndf,smap,msmap);
-            return fit;
-        }
-         
+        
         public static Map<String,Double> calculateTrackHitResidual(HelicalTrackHit hth,HelicalTrackFit track, boolean includeMS ) {
             
             boolean debug = false;
@@ -792,13 +610,28 @@
         par[HelicalTrackFit.phi0Index] = helixParamCalculator.getPhi0();
         par[HelicalTrackFit.curvatureIndex] = 1.0/helixParamCalculator.getRadius();
         par[HelicalTrackFit.z0Index] = helixParamCalculator.getZ0();
-        SymmetricMatrix cov = new SymmetricMatrix(5);
+        HelicalTrackFit htf = getHTF(par);
+        //System.out.printf("d0 %f z0 %f R %f phi %f lambda %s\n", htf.dca(),htf.z0(),htf.R(),htf.phi0(),htf.slope() );
+        return htf;
+    }
+    
+    public static HelicalTrackFit getHTF(Track track) {
+    	if( track.getClass().isInstance(SeedTrack.class) ) {
+    		return ((SeedTrack) track).getSeedCandidate().getHelix();
+    	} else {
+    		return getHTF(track.getTrackParameters());
+    	}
+    }
+    
+    public static HelicalTrackFit getHTF(double par[]) {
+    	// need to have matrix that makes sense? Really?
+    	SymmetricMatrix cov = new SymmetricMatrix(5);
         for(int i=0;i<cov.getNRows();++i) cov.setElement(i, i, 1.);
         HelicalTrackFit htf = new HelicalTrackFit(par, cov, new double[2], new int[2], null, null);
-        //System.out.printf("d0 %f z0 %f R %f phi %f lambda %s\n", htf.dca(),htf.z0(),htf.R(),htf.phi0(),htf.slope() );
         return htf;
     }
-
 }
+
+
     
 

hps-java/src/main/java/org/lcsim/hps/recon/tracking/gbl
TruthResiduals.java 1.6 -> 1.7
diff -u -r1.6 -r1.7
--- TruthResiduals.java	11 Oct 2013 22:18:52 -0000	1.6
+++ TruthResiduals.java	14 Oct 2013 22:03:09 -0000	1.7
@@ -46,7 +46,6 @@
     private IHistogram2D h_mcp_org;
     private IHistogram2D trkpos_y_vs_x;
     private boolean firstWeirdTrack = true;
-    private SvtTrackExtrapolator extrapol = new SvtTrackExtrapolator(); 
     
     
 
@@ -138,10 +137,7 @@
                     //HelicalTrackFit htfTruth = TrackUtils.getHTF(mcp, -1*this._B.z());
                     HelicalTrackFit htfTruth = TrackUtils.getHTF(mcp, -1*this._B.z());
                     
-                    
-                    extrapol.setTrack(htfTruth.parameters());
-
-                    Hep3Vector trkposExtraPolator = extrapol.extrapolateTrack(simHitPosTracking.x());
+                    Hep3Vector trkposExtraPolator = SvtTrackExtrapolator.extrapolateTrack(htfTruth,simHitPosTracking.x());
                     //System.out.printf("trkposextrapol (det) %s\n",trkposExtraPolator.toString());
                     
                     trkposExtraPolator = this._hpstrans.transformVectorToTracking(trkposExtraPolator);
@@ -180,7 +176,7 @@
                     	double xpos = mcp.getOriginZ();
                     	while(xpos< 100.) {
                     		xpos += dx;
-                    		trkposExtraPolator = this._hpstrans.transformVectorToTracking(extrapol.extrapolateTrack(xpos));
+                    		trkposExtraPolator = this._hpstrans.transformVectorToTracking(SvtTrackExtrapolator.extrapolateTrack(htfTruth,xpos));
                     		double ypos = trkposExtraPolator.y();
                     		trkpos_y_vs_x.fill(xpos,ypos);
                     	}

hps-java/src/main/java/org/lcsim/hps/recon/vertexing
TwoTrackVertexer.java 1.5 -> 1.6
diff -u -r1.5 -r1.6
--- TwoTrackVertexer.java	11 Oct 2013 23:14:28 -0000	1.5
+++ TwoTrackVertexer.java	14 Oct 2013 22:03:09 -0000	1.6
@@ -58,8 +58,7 @@
     }
     
     private Hep3Vector getPosition(Track trk, double zposition) {
-        trackExtraPolator.setTrack(trk);
-        return trackExtraPolator.extrapolateTrack(zposition);
+        return SvtTrackExtrapolator.extrapolateTrack(trk, zposition);
     }
 
     @Override

hps-java/src/main/java/org/lcsim/hps/users/mgraham
ElwinsTrackingRecon.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- ElwinsTrackingRecon.java	19 Nov 2012 17:12:29 -0000	1.1
+++ ElwinsTrackingRecon.java	14 Oct 2013 22:03:09 -0000	1.2
@@ -4,11 +4,13 @@
 import hep.aida.*;
 import hep.physics.matrix.SymmetricMatrix;
 import hep.physics.vec.Hep3Vector;
+
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.logging.Level;
 import java.util.logging.Logger;
+
 import org.lcsim.detector.tracker.silicon.SiSensor;
 import org.lcsim.event.*;
 import org.lcsim.fit.helicaltrack.HelicalTrackCross;
@@ -16,6 +18,7 @@
 import org.lcsim.fit.helicaltrack.HelicalTrackHit;
 import org.lcsim.geometry.Detector;
 import org.lcsim.geometry.IDDecoder;
+import org.lcsim.hps.event.BeamlineConstants;
 import org.lcsim.hps.monitoring.AIDAFrame;
 import org.lcsim.hps.monitoring.Resettable;
 import org.lcsim.hps.recon.ecal.HPSEcalCluster;
@@ -53,7 +56,6 @@
     IDDecoder dec;
     private int eventCount;
     private List<SiSensor> sensors;
-    private double zAtConverter = -674.062;//mm
     private String outputPlots = null;
     IPlotter plotter;
     IPlotter plotter2;
@@ -631,9 +633,9 @@
             StraightLineTrack slt2 = converter2.Convert(ht2);
 
             HPSTrack hpstrack1 = new HPSTrack(ht1);
-            Hep3Vector[] trkatconver1 = hpstrack1.getPositionAtZMap(100, zAtConverter, 1);
+            Hep3Vector[] trkatconver1 = hpstrack1.getPositionAtZMap(100, BeamlineConstants.HARP_POSITION, 1);
             HPSTrack hpstrack2 = new HPSTrack(ht2);
-            Hep3Vector[] trkatconver2 = hpstrack2.getPositionAtZMap(100, zAtConverter, 1);
+            Hep3Vector[] trkatconver2 = hpstrack2.getPositionAtZMap(100, BeamlineConstants.HARP_POSITION, 1);
 
 
 
@@ -722,9 +724,8 @@
 
 
 
-            //-674.062;//mm
-            double X1 = slt1.getYZAtX(zAtConverter)[0];
-            double Y1 = slt1.getYZAtX(zAtConverter)[1];
+            double X1 = slt1.getYZAtX(BeamlineConstants.HARP_POSITION)[0];
+            double Y1 = slt1.getYZAtX(BeamlineConstants.HARP_POSITION)[1];
 
             //   boolean Y1top = false;
             //    boolean X1plus = false;
@@ -752,8 +753,8 @@
             //       if (11 < X1 && X1 < 29) { // 24 < X1 && X1 < 36 +-6
             //          X1plus = true;
             //     }
-            double X2 = slt2.getYZAtX(zAtConverter)[0];
-            double Y2 = slt2.getYZAtX(zAtConverter)[1];
+            double X2 = slt2.getYZAtX(BeamlineConstants.HARP_POSITION)[0];
+            double Y2 = slt2.getYZAtX(BeamlineConstants.HARP_POSITION)[1];
 
             //      boolean Y2top = false; //for data
             //     boolean X2plus = false;
@@ -893,7 +894,7 @@
                     //    System.out.println("y'1 = " + my1);
                     //    System.out.println("y'2 = " + my2);
                     double zi = (b2 - b1) / (m1 - m2);
-                    double zr = Math.abs(zi - zAtConverter);
+                    double zr = Math.abs(zi - BeamlineConstants.HARP_POSITION);
                     double zs = 2 * zr / 100;
                     //      System.out.println("Closest Possible Z to Tracker");
                     //      System.out.println(zi);
@@ -901,7 +902,7 @@
 
                     List<double[]> Trk1 = new ArrayList<double[]>();
                     for (int i = 0; i < 100; i++) {
-                        double z = zAtConverter - zr + (zs * i);
+                        double z = BeamlineConstants.HARP_POSITION - zr + (zs * i);
                         double[] posvec = new double[3];
                         Hep3Vector[] trk1atz = hpstrack1.getPositionAtZMap(100, z, 1);
                         posvec[0] = trk1atz[0].x();
@@ -979,7 +980,7 @@
 
                     List<double[]> Trk2 = new ArrayList<double[]>();
                     for (int i = 0; i < 100; i++) {
-                        double z = zAtConverter - zr + (zs * i);
+                        double z = BeamlineConstants.HARP_POSITION - zr + (zs * i);
                         double[] posvec2 = new double[3];
                         Hep3Vector[] trk2atz = hpstrack2.getPositionAtZMap(100, z, 1);
                         posvec2[0] = trk2atz[0].x();
@@ -1122,8 +1123,8 @@
                     //     double distancex = Math.sqrt(Math.pow(postrk2[0] - postrk1[0], 2));
                     //   double distancey = Math.sqrt(Math.pow(postrk2[1] - postrk1[1], 2));
                     aida.histogram1D("Distance btwn Trks @ Solution").fill(distance);
-                    double tt1 = (zAtConverter - zbar) / dd[2]; //target
-                    double tt2 = (zAtConverter - zbar2) / d22[2]; //target
+                    double tt1 = (BeamlineConstants.HARP_POSITION - zbar) / dd[2]; //target
+                    double tt2 = (BeamlineConstants.HARP_POSITION - zbar2) / d22[2]; //target
                     double postrk1att[];
                     postrk1att = new double[3]; //target
                     postrk1att[0] = xbar + (tt1) * dd[0];
@@ -1388,11 +1389,11 @@
 
 
             HPSTrack hpstrack1 = new HPSTrack(ht1);
-            Hep3Vector[] trkatconver1 = hpstrack1.getPositionAtZMap(100, zAtConverter, 1);
+            Hep3Vector[] trkatconver1 = hpstrack1.getPositionAtZMap(100, BeamlineConstants.HARP_POSITION, 1);
             HPSTrack hpstrack2 = new HPSTrack(ht2);
-            Hep3Vector[] trkatconver2 = hpstrack2.getPositionAtZMap(100, zAtConverter, 1);
+            Hep3Vector[] trkatconver2 = hpstrack2.getPositionAtZMap(100, BeamlineConstants.HARP_POSITION, 1);
             HPSTrack hpstrack3 = new HPSTrack(ht3);
-            Hep3Vector[] trkatconver3 = hpstrack3.getPositionAtZMap(100, zAtConverter, 1);
+            Hep3Vector[] trkatconver3 = hpstrack3.getPositionAtZMap(100, BeamlineConstants.HARP_POSITION, 1);
 
             double Etrk1sq = (Math.pow(trkatconver1[1].x(), 2) + Math.pow(trkatconver1[1].y(), 2) + Math.pow(trkatconver1[1].z(), 2));
             double Etrk2sq = (Math.pow(trkatconver2[1].x(), 2) + Math.pow(trkatconver2[1].y(), 2) + Math.pow(trkatconver2[1].z(), 2));
@@ -1427,7 +1428,7 @@
             StraightLineTrack slt = converter.Convert(ht);
 
             HPSTrack hpstrack = new HPSTrack(ht);
-            Hep3Vector[] trkatconver = hpstrack.getPositionAtZMap(100, zAtConverter, 1);
+            Hep3Vector[] trkatconver = hpstrack.getPositionAtZMap(100, BeamlineConstants.HARP_POSITION, 1);
             aida.histogram1D("X (mm) @ Converter").fill(trkatconver[0].x()); // y tracker frame?
             aida.histogram1D("Y (mm) @ Converter").fill(trkatconver[0].y()); // z tracker frame?
 
@@ -1435,8 +1436,8 @@
 //            ExtendTrack extend = new ExtendTrack();
 //            extend.setTrack(stEle);
 
-            aida.histogram1D("X (mm) @ Z=-60cm").fill(slt.getYZAtX(zAtConverter)[0]);  //this is y in the tracker frame
-            aida.histogram1D("Y (mm) @ Z=-60cm").fill(slt.getYZAtX(zAtConverter)[1]);  //this is z in the tracker frame
+            aida.histogram1D("X (mm) @ Z=-60cm").fill(slt.getYZAtX(BeamlineConstants.HARP_POSITION)[0]);  //this is y in the tracker frame
+            aida.histogram1D("Y (mm) @ Z=-60cm").fill(slt.getYZAtX(BeamlineConstants.HARP_POSITION)[1]);  //this is z in the tracker frame
             aida.histogram1D("X (mm) @ Z=-150cm").fill(slt.getYZAtX(zAtColl)[0]);
             aida.histogram1D("Y (mm) @ Z=-150cm").fill(slt.getYZAtX(zAtColl)[1]);
 

hps-java/src/main/java/org/lcsim/hps/users/mgraham
ExamplePlotter.java 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- ExamplePlotter.java	12 Mar 2013 19:40:11 -0000	1.2
+++ ExamplePlotter.java	14 Oct 2013 22:03:09 -0000	1.3
@@ -5,14 +5,17 @@
 import hep.aida.IPlotter;
 import hep.aida.IPlotterStyle;
 import hep.physics.vec.Hep3Vector;
+
 import java.io.IOException;
 import java.util.List;
 import java.util.logging.Level;
 import java.util.logging.Logger;
+
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.Track;
 import org.lcsim.fit.helicaltrack.HelicalTrackFit;
 import org.lcsim.geometry.Detector;
+import org.lcsim.hps.event.BeamlineConstants;
 import org.lcsim.hps.monitoring.AIDAFrame;
 import org.lcsim.hps.monitoring.Resettable;
 import org.lcsim.hps.recon.tracking.HPSTrack;
@@ -34,7 +37,6 @@
     IPlotter plotter;
     IAnalysisFactory fac = aida.analysisFactory();
     private String trackCollectionName = "MatchedTracks";
-    private double zAtConverter = -674.062;//mm
     private String outputPlots = null;
 
     protected void detectorChanged(Detector detector) {
@@ -82,7 +84,7 @@
             HelixConverter converter = new HelixConverter(0);
             StraightLineTrack slt = converter.Convert(ht);
             HPSTrack hpstrack = new HPSTrack(ht);
-            Hep3Vector[] trkatconver = hpstrack.getPositionAtZMap(100, zAtConverter, 1);
+            Hep3Vector[] trkatconver = hpstrack.getPositionAtZMap(100, BeamlineConstants.HARP_POSITION, 1);
             aida.histogram1D("X (mm) @ Converter").fill(trkatconver[0].x()); // y tracker frame?
             aida.histogram1D("Y (mm) @ Converter").fill(trkatconver[0].y()); // z tracker frame?
 

hps-java/src/main/java/org/lcsim/hps/users/mgraham
TrackExtrapolationAnalysis.java 1.5 -> 1.6
diff -u -r1.5 -r1.6
--- TrackExtrapolationAnalysis.java	19 Sep 2012 22:56:46 -0000	1.5
+++ TrackExtrapolationAnalysis.java	14 Oct 2013 22:03:09 -0000	1.6
@@ -2,17 +2,20 @@
 
 import hep.aida.*;
 import hep.physics.vec.Hep3Vector;
+
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 import java.util.logging.Level;
 import java.util.logging.Logger;
+
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.Track;
 import org.lcsim.fit.helicaltrack.HelicalTrackFit;
 import org.lcsim.fit.helicaltrack.HelixUtils;
 import org.lcsim.geometry.Detector;
+import org.lcsim.hps.event.BeamlineConstants;
 import org.lcsim.hps.monitoring.AIDAFrame;
 import org.lcsim.hps.recon.ecal.HPSEcalCluster;
 import org.lcsim.hps.recon.tracking.HPSTrack;
@@ -42,7 +45,6 @@
     String ecalSubdetectorName = "Ecal";
     String ecalCollectionName = "EcalClusters";
     private Detector detector = null;
-    private double zAtConverter = -674.062;//mm    
     IPlotter extrap0;
     IPlotter extrap1;
     IPlotter extrap2;
@@ -91,8 +93,8 @@
             SvtTrackExtrapolator extend = new SvtTrackExtrapolator();
             extend.setTrack(stEle);
             //Hep3Vector posAtEcal = extend.positionAtEcal();
-            Hep3Vector posAtEcal = extend.getTrackPositionAtEcal();
-            Hep3Vector extendAtConverter = extend.extrapolateTrack(zAtConverter);
+            Hep3Vector posAtEcal = SvtTrackExtrapolator.getTrackPositionAtEcal(trk);
+            Hep3Vector extendAtConverter = SvtTrackExtrapolator.extrapolateTrack(trk,BeamlineConstants.HARP_POSITION);
 
 
             int isTop = -1;
@@ -106,7 +108,7 @@
             HPSTrack hpstrk=null;
                 hpstrk = new HPSTrack(ht);
 //            Hep3Vector posAtConv = hpstrk.getPositionAtZ(zAtConverter, -101, -100, 0.1);
-            Hep3Vector posAtConv = hpstrk.getPositionAtZMap(100,zAtConverter , 5.0)[0];
+            Hep3Vector posAtConv = hpstrk.getPositionAtZMap(100,BeamlineConstants.HARP_POSITION , 5.0)[0];
             double useThisx=posAtConv.x();
             double useThisy=posAtConv.y();
             
@@ -127,15 +129,15 @@
                 aida.histogram1D("Negative Y (mm) @ Converter").fill(useThisy);
             }
 //            Hep3Vector posAtConvShort = hpstrk.getPositionAtZ(zAtConverter, -0.1, 0, 0.01);
-            Hep3Vector posAtConvShort = hpstrk.getPositionAtZMap(0,zAtConverter, 5.0)[0];
+            Hep3Vector posAtConvShort = hpstrk.getPositionAtZMap(0,BeamlineConstants.HARP_POSITION, 5.0)[0];
             aida.histogram2D("Extrapolated X: short vs long fringe").fill(posAtConvShort.x(), posAtConv.x());
             aida.histogram2D("Extrapolated Y: short vs long fringe").fill(posAtConvShort.y(), posAtConv.y());
 
-            aida.histogram2D("Extrapolated X: HPS vs SLT").fill(posAtConv.x(), slt.getYZAtX(zAtConverter)[0]);
-            aida.histogram2D("Extrapolated Y: HPS vs SLT").fill(posAtConv.y(), slt.getYZAtX(zAtConverter)[1]);
+            aida.histogram2D("Extrapolated X: HPS vs SLT").fill(posAtConv.x(), slt.getYZAtX(BeamlineConstants.HARP_POSITION)[0]);
+            aida.histogram2D("Extrapolated Y: HPS vs SLT").fill(posAtConv.y(), slt.getYZAtX(BeamlineConstants.HARP_POSITION)[1]);
 
-            aida.histogram2D("Extrapolated X: Extend vs SLT").fill(extendAtConverter.y(), slt.getYZAtX(zAtConverter)[0]);
-            aida.histogram2D("Extrapolated Y: Extend vs SLT").fill(extendAtConverter.z(), slt.getYZAtX(zAtConverter)[1]);
+            aida.histogram2D("Extrapolated X: Extend vs SLT").fill(extendAtConverter.y(), slt.getYZAtX(BeamlineConstants.HARP_POSITION)[0]);
+            aida.histogram2D("Extrapolated Y: Extend vs SLT").fill(extendAtConverter.z(), slt.getYZAtX(BeamlineConstants.HARP_POSITION)[1]);
 
             List<HPSEcalCluster> clusters = event.get(HPSEcalCluster.class, ecalCollectionName);
             HPSEcalCluster clust = findClosestCluster(posAtEcal, clusters);
@@ -149,7 +151,7 @@
                 double zCluster=clust.getPosition()[2];
  //               double zCluster=1450.0;
                  Hep3Vector posAtEcalHPS = hpstrk.getPositionAtZMap(750,zCluster, 5.0)[0];
-                Hep3Vector posAtEcalExtend= extend.extrapolateTrack(zCluster);
+                Hep3Vector posAtEcalExtend= SvtTrackExtrapolator.extrapolateTrack(trk,zCluster);
                 aida.histogram2D("ECal Extrapolation X :  HPS vs Extend").fill( posAtEcalExtend.y(),posAtEcalHPS.x()-posAtEcalExtend.y());
                 aida.histogram2D("ECal Extrapolation Y :  HPS vs Extend").fill( posAtEcalExtend.z(),posAtEcalHPS.y()-posAtEcalExtend.z());
                 double dX = posAtEcalHPS.x() - clust.getPosition()[0];

hps-java/src/main/java/org/lcsim/hps/users/mgraham
TwoTrackAnalysis.java 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- TwoTrackAnalysis.java	20 Dec 2012 22:14:48 -0000	1.2
+++ TwoTrackAnalysis.java	14 Oct 2013 22:03:09 -0000	1.3
@@ -10,6 +10,7 @@
 import hep.physics.matrix.SymmetricMatrix;
 import hep.physics.vec.BasicHep3Vector;
 import hep.physics.vec.Hep3Vector;
+
 import java.io.FileWriter;
 import java.io.IOException;
 import java.io.PrintWriter;
@@ -17,12 +18,14 @@
 import java.util.List;
 import java.util.logging.Level;
 import java.util.logging.Logger;
+
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.Track;
 import org.lcsim.event.TrackerHit;
 import org.lcsim.fit.helicaltrack.HelicalTrackFit;
 import org.lcsim.fit.helicaltrack.HelicalTrackHit;
 import org.lcsim.geometry.Detector;
+import org.lcsim.hps.event.BeamlineConstants;
 import org.lcsim.hps.monitoring.AIDAFrame;
 import org.lcsim.hps.monitoring.Resettable;
 import org.lcsim.hps.recon.tracking.HPSTrack;
@@ -54,7 +57,6 @@
     IPlotter plotter8;
     IAnalysisFactory fac = aida.analysisFactory();
     private String trackCollectionName = "MatchedTracks";
-    private double zAtConverter = -674.062;//mm
     private String outputPlots = null;
     private boolean isMC = true;
     private boolean showPlots = false;
@@ -273,12 +275,12 @@
             HelixConverter converter = new HelixConverter(0);
             StraightLineTrack slt = converter.Convert(ht);
             HPSTrack hpstrack = new HPSTrack(ht);
-            Hep3Vector[] trkatconver = hpstrack.getPositionAtZMap(100, zAtConverter, 1);
+            Hep3Vector[] trkatconver = hpstrack.getPositionAtZMap(100, BeamlineConstants.HARP_POSITION, 1);
             aida.histogram1D("X (mm) @ Converter using Map").fill(trkatconver[0].x()); // y tracker frame?
             aida.histogram1D("Y (mm) @ Converter using Map").fill(trkatconver[0].y()); // z tracker frame?
             if (slt != null) {
-                aida.histogram1D("X (mm) @ Converter using SLT").fill(slt.getYZAtX(zAtConverter)[0]); // y tracker frame?
-                aida.histogram1D("Y (mm) @ Converter using SLT").fill(slt.getYZAtX(zAtConverter)[1]); // z tracker frame?
+                aida.histogram1D("X (mm) @ Converter using SLT").fill(slt.getYZAtX(BeamlineConstants.HARP_POSITION)[0]); // y tracker frame?
+                aida.histogram1D("Y (mm) @ Converter using SLT").fill(slt.getYZAtX(BeamlineConstants.HARP_POSITION)[1]); // z tracker frame?
             }
         }
 
@@ -315,22 +317,22 @@
             StraightLineTrack slt2 = converter2.Convert(ht2);
 
 //            HPSTrack hpstrack1 = new HPSTrack(ht1);
-//            Hep3Vector[] trkatconver1 = hpstrack1.getPositionAtZMap(100, zAtConverter, 1);
+//            Hep3Vector[] trkatconver1 = hpstrack1.getPositionAtZMap(100, BeamlineConstants.HARP_POSITION, 1);
 //            HPSTrack hpstrack2 = new HPSTrack(ht2);
-//            Hep3Vector[] trkatconver2 = hpstrack2.getPositionAtZMap(100, zAtConverter, 1);
+//            Hep3Vector[] trkatconver2 = hpstrack2.getPositionAtZMap(100, BeamlineConstants.HARP_POSITION, 1);
 
             HPSTrack hpstrack1 = new HPSTrack(ht1);
             Hep3Vector[] trkatconver1 = {new BasicHep3Vector(), new BasicHep3Vector(0, 0, 0)};
             HPSTrack hpstrack2 = new HPSTrack(ht2);
             Hep3Vector[] trkatconver2 = {new BasicHep3Vector(), new BasicHep3Vector(0, 0, 0)};;
             if (isMC) {
-                double[] t1 = slt1.getYZAtX(zAtConverter);
-                double[] t2 = slt2.getYZAtX(zAtConverter);
-                trkatconver1[0] = new BasicHep3Vector(t1[0], t1[1], zAtConverter);
-                trkatconver2[0] = new BasicHep3Vector(t2[0], t2[1], zAtConverter);
+                double[] t1 = slt1.getYZAtX(BeamlineConstants.HARP_POSITION);
+                double[] t2 = slt2.getYZAtX(BeamlineConstants.HARP_POSITION);
+                trkatconver1[0] = new BasicHep3Vector(t1[0], t1[1], BeamlineConstants.HARP_POSITION);
+                trkatconver2[0] = new BasicHep3Vector(t2[0], t2[1], BeamlineConstants.HARP_POSITION);
             } else {
-                trkatconver1 = hpstrack1.getPositionAtZMap(100, zAtConverter, 1);
-                trkatconver2 = hpstrack2.getPositionAtZMap(100, zAtConverter, 1);
+                trkatconver1 = hpstrack1.getPositionAtZMap(100, BeamlineConstants.HARP_POSITION, 1);
+                trkatconver2 = hpstrack2.getPositionAtZMap(100, BeamlineConstants.HARP_POSITION, 1);
             }
             List<TrackerHit> hitsOnTrack1 = trk1.getTrackerHits();
             int layer1;
@@ -417,10 +419,9 @@
 
 
             double X1 = -99, Y1 = -99;
-            //-674.062;//mm
             if (slt1 != null) {
-                X1 = slt1.getYZAtX(zAtConverter)[0];
-                Y1 = slt1.getYZAtX(zAtConverter)[1];
+                X1 = slt1.getYZAtX(BeamlineConstants.HARP_POSITION)[0];
+                Y1 = slt1.getYZAtX(BeamlineConstants.HARP_POSITION)[1];
             }
 
             boolean X1cent = false;
@@ -435,8 +436,8 @@
 
             double X2 = 99, Y2 = 99;
             if (slt2 != null) {
-                X2 = slt2.getYZAtX(zAtConverter)[0];
-                Y2 = slt2.getYZAtX(zAtConverter)[1];
+                X2 = slt2.getYZAtX(BeamlineConstants.HARP_POSITION)[0];
+                Y2 = slt2.getYZAtX(BeamlineConstants.HARP_POSITION)[1];
             }
 
             boolean X2cent = false;
@@ -493,7 +494,7 @@
                     }
 
                     double zi = (b2 - b1) / (m1 - m2);
-                    double zr = Math.abs(zi - zAtConverter);
+                    double zr = Math.abs(zi - BeamlineConstants.HARP_POSITION);
                     double zs = 2 * zr / 100;
                     //      System.out.println("Closest Possible Z to Tracker");
                     //      System.out.println(zi);
@@ -501,7 +502,7 @@
 
                     List<double[]> Trk1 = new ArrayList<double[]>();
                     for (int i = 0; i < 100; i++) {
-                        double z = zAtConverter - zr + (zs * i);
+                        double z = BeamlineConstants.HARP_POSITION - zr + (zs * i);
                         double[] posvec = new double[3];
                         if (isMC) {
                             posvec[0] = slt1.getYZAtX(z)[0];
@@ -584,7 +585,7 @@
 
                     List<double[]> Trk2 = new ArrayList<double[]>();
                     for (int i = 0; i < 100; i++) {
-                        double z = zAtConverter - zr + (zs * i);
+                        double z = BeamlineConstants.HARP_POSITION - zr + (zs * i);
                         double[] posvec2 = new double[3];
 
                         if (isMC) {
@@ -772,8 +773,8 @@
                         aida.histogram1D("ZVertex with y cut").fill(C.get(2, 0));
                         aida.histogram1D("Distance btwn Trks with y cut").fill(distance);
                     }
-                    double tt1 = (zAtConverter - zbar) / dd[2]; //target
-                    double tt2 = (zAtConverter - zbar2) / d22[2]; //target
+                    double tt1 = (BeamlineConstants.HARP_POSITION - zbar) / dd[2]; //target
+                    double tt2 = (BeamlineConstants.HARP_POSITION - zbar2) / d22[2]; //target
                     double postrk1att[];
                     postrk1att = new double[3]; //target
                     postrk1att[0] = xbar + (tt1) * dd[0];

hps-java/src/main/java/org/lcsim/hps/users/omoreno
ReconstructedParticleChecker.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- ReconstructedParticleChecker.java	11 Apr 2013 02:38:20 -0000	1.1
+++ ReconstructedParticleChecker.java	14 Oct 2013 22:03:10 -0000	1.2
@@ -26,12 +26,11 @@
 /**
  * 
  * @author Omar Moreno <[log in to unmask]>
- * @version $Id: ReconstructedParticleChecker.java,v 1.1 2013/04/11 02:38:20 omoreno Exp $
+ * @version $Id: ReconstructedParticleChecker.java,v 1.2 2013/10/14 22:03:10 phansson Exp $
  *
  */
 public class ReconstructedParticleChecker extends Driver {
 	
-	SvtTrackExtrapolator extrapolator = new SvtTrackExtrapolator(); 
 	private AIDA aida; 
 	private List<IPlotter> plotters = new ArrayList<IPlotter>(); 
 
@@ -104,10 +103,9 @@
 				this.printDebug("List of tracks is empty ... skipping");
 				continue; 
 			}
-			extrapolator.setTrack(tracks.get(0));
 		
 			Hep3Vector ecalPosition = new BasicHep3Vector(ecalClusters.get(0).getPosition()); 
-			Hep3Vector trackPositionAtEcal = extrapolator.extrapolateTrack(ecalPosition.z()); 
+			Hep3Vector trackPositionAtEcal = SvtTrackExtrapolator.extrapolateTrack(tracks.get(0),ecalPosition.z()); 
 			xPositionResidual.fill(trackPositionAtEcal.x() - ecalPosition.x());
 			yPositionResidual.fill(trackPositionAtEcal.y() - ecalPosition.y());
 			zPositionResidual.fill(trackPositionAtEcal.z() - ecalPosition.z());

hps-java/src/main/java/org/lcsim/hps/users/omoreno
SvtHitEfficiency.java 1.4 -> 1.5
diff -u -r1.4 -r1.5
--- SvtHitEfficiency.java	17 Jan 2013 16:41:52 -0000	1.4
+++ SvtHitEfficiency.java	14 Oct 2013 22:03:10 -0000	1.5
@@ -49,8 +49,6 @@
     private List<IHistogram2D> histos2D = new ArrayList<IHistogram2D>();
     private List<IPlotter> plotters = new ArrayList<IPlotter>();
     private Map<SiSensor, Map<Integer, Hep3Vector>> stripPositions = new HashMap<SiSensor, Map<Integer, Hep3Vector>>(); 
-    TrackUtils trkUtil = new TrackUtils();
-    SvtTrackExtrapolator extrapolator = new SvtTrackExtrapolator();
     TrackerHitUtils trackerHitUtils = new TrackerHitUtils();
     
     boolean debug = false;
@@ -262,7 +260,6 @@
 
         for(Track track : tracks){
         	
-            trkUtil.setTrack(track);
             ecalClusterTrackMatch = false;
         	
             // Check if there is an Ecal cluster in the same detector volume as the track
@@ -308,7 +305,7 @@
         	// Find if the track is within the acceptance of the layer not being used in
             // the fit
             if(!isWithinAcceptance(track, layer)) continue;
-            if(trkUtil.getZ0() > 0){
+            if(TrackUtils.getZ0(track) > 0){
             	numberOfTopTracks++;
             	topTracksPerMissingLayer[arrayPosition]++;
             } else {
@@ -326,7 +323,7 @@
             for(HelicalTrackHit stereoHit : stereoHits){
             	if(layer == stereoHit.Layer()){
             		if(debug) System.out.println(this.getClass().getSimpleName() + ": Track has five layers hit");
-            		if(trkUtil.getZ0() > 0){
+            		if(TrackUtils.getZ0(track) > 0){
             			numberOfTopTracksWithHitOnMissingLayer++;
             			topTracksWithHitOnMissingLayer[arrayPosition]++;
             		} else {
@@ -354,7 +351,7 @@
             }
     		
     		List<SiSensor> sensors = new ArrayList<SiSensor>();
-    		if(trkUtil.getZ0() > 0){
+    		if(TrackUtils.getZ0(track) > 0){
     			sensors.add(SvtUtils.getInstance().getTopSensor(layer, 0));
         		sensors.add(SvtUtils.getInstance().getTopSensor(layer+1, 0));
     		} else { 
@@ -386,13 +383,10 @@
     
     private boolean isWithinAcceptance(Track track, int layer){
         
-        SiSensor frontSensor = null;
-        SiSensor rearSensor = null;
         
-        extrapolator.setTrack(track);
         
         List<SiSensor> sensors = new ArrayList<SiSensor>();
-        if(trkUtil.getZ0() > 0){
+        if(TrackUtils.getZ0(track) > 0){
            sensors.add(SvtUtils.getInstance().getTopSensor(layer, 0));
            sensors.add(SvtUtils.getInstance().getTopSensor(layer + 1, 0));
         } else {
@@ -403,8 +397,8 @@
         Hep3Vector frontSensorPos = sensors.get(0).getGeometry().getPosition();
         Hep3Vector rearSensorPos = sensors.get(1).getGeometry().getPosition();
         
-        this.frontTrackPos = extrapolator.extrapolateTrack(frontSensorPos.z());
-        this.rearTrackPos = extrapolator.extrapolateTrack(rearSensorPos.z());
+        this.frontTrackPos = SvtTrackExtrapolator.extrapolateTrack(track,frontSensorPos.z());
+        this.rearTrackPos = SvtTrackExtrapolator.extrapolateTrack(track,rearSensorPos.z());
         
         if(this.sensorContainsTrack(frontTrackPos, sensors.get(0)) && this.sensorContainsTrack(rearTrackPos, sensors.get(1))){
 //        	if(this.sensorContainsTrack(trackPos, sensor))

hps-java/src/main/java/org/lcsim/hps/users/omoreno
SvtQA.java 1.5 -> 1.6
diff -u -r1.5 -r1.6
--- SvtQA.java	8 Jan 2013 08:11:32 -0000	1.5
+++ SvtQA.java	14 Oct 2013 22:03:10 -0000	1.6
@@ -49,13 +49,12 @@
  * SVT Quality Assurance Driver
  *  
  * @author Omar Moreno <[log in to unmask]>
- * @version $Id: SvtQA.java,v 1.5 2013/01/08 08:11:32 omoreno Exp $
+ * @version $Id: SvtQA.java,v 1.6 2013/10/14 22:03:10 phansson Exp $
  */
 public class SvtQA extends Driver {
 
     private AIDA aida;
     private HPSShaperAnalyticFitAlgorithm shaperFitter = new HPSShaperAnalyticFitAlgorithm();
-    TrackUtils trkUtils = new TrackUtils();
     private List<AIDAFrame>    frames   = new ArrayList<AIDAFrame>();
     private List<IHistogram1D> histos1D = new ArrayList<IHistogram1D>();
     private List<IHistogram2D> histos2D = new ArrayList<IHistogram2D>();
@@ -661,7 +660,6 @@
             // Loop over all tracks in the event
             for(Track track : tracks){
 
-                trkUtils.setTrack(track);
 
                 double totalT0 = 0;
                 double totalHits = 0;
@@ -687,9 +685,9 @@
                     for(HelicalTrackStrip hts : htc.getStrips()){
 
                         //SiSensor sensor = null;
-                        if(trkUtils.getZ0() > 0){
+                        if(TrackUtils.getZ0(track) > 0){
                             sensor = SvtUtils.getInstance().getSensor(0, hts.layer() - 1);
-                        } else if(trkUtils.getZ0() < 0){
+                        } else if(TrackUtils.getZ0(track) < 0){
                             sensor = SvtUtils.getInstance().getSensor(1, hts.layer() - 1);
                         }
 

hps-java/src/main/java/org/lcsim/hps/users/omoreno
SvtTrackAnalysis.java 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- SvtTrackAnalysis.java	24 May 2012 17:08:18 -0000	1.3
+++ SvtTrackAnalysis.java	14 Oct 2013 22:03:10 -0000	1.4
@@ -6,6 +6,7 @@
 import java.util.List;
 import java.util.Map;
 
+
 //--- org.lcsim ---//
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.RawTrackerHit;
@@ -16,10 +17,12 @@
 import org.lcsim.util.Driver;
 import org.lcsim.util.aida.AIDA;
 
+
 //--- hep ---//
 import hep.aida.IPlotter;
 import hep.physics.vec.Hep3Vector;
 
+
 //--- hps-java ---//
 import org.lcsim.hps.monitoring.AIDAFrame;
 import org.lcsim.hps.monitoring.Resettable;
@@ -31,7 +34,7 @@
 /**
  * 
  * @author Omar Moreno
- * @version $Id: SvtTrackAnalysis.java,v 1.3 2012/05/24 17:08:18 omoreno Exp $
+ * @version $Id: SvtTrackAnalysis.java,v 1.4 2013/10/14 22:03:10 phansson Exp $
  *
  */
 
@@ -43,7 +46,6 @@
 	private List<AIDAFrame> frames = new ArrayList<AIDAFrame>();
 	private List<IPlotter> plotters = new ArrayList<IPlotter>();
     
-	private static final double HARP_POSITION = -674.062;
 	
 	int npositive = 0;
 	int nnegative = 0;
@@ -53,10 +55,8 @@
 	double nTwoTracks = 0;
 	double nevents = 0;
 	
-    SvtTrackExtrapolator extrapolator;
 	
 	public SvtTrackAnalysis(){
-		extrapolator = new SvtTrackExtrapolator();
 	}
 
 	protected void detectorChanged(Detector detector){
@@ -308,7 +308,6 @@
 				
 		if(!event.hasCollection(Track.class, trackCollectionName)) return;
     	List<SeedTrack> tracks = event.get(SeedTrack.class, trackCollectionName);
-    	TrackUtils trackUtil = new TrackUtils();
     	
     	Map<Hep3Vector,SeedTrack> trackToEcalPosition = new HashMap<Hep3Vector, SeedTrack>();
      	Map<SeedTrack, HPSEcalCluster> trackToCluster = new HashMap<SeedTrack, HPSEcalCluster>();
@@ -316,11 +315,9 @@
     	
     	for(SeedTrack track : tracks){
     		ntracks++;
-    		extrapolator.setTrack(track);
-    		trackUtil.setTrack(track);
-    		Hep3Vector positionEcal = extrapolator.getTrackPositionAtEcal();
+    		Hep3Vector positionEcal = SvtTrackExtrapolator.getTrackPositionAtEcal(track);
     		System.out.println("Position at Ecal: " + positionEcal);
-    		Hep3Vector positionConverter = extrapolator.extrapolateTrack(-700);
+    		Hep3Vector positionConverter = SvtTrackExtrapolator.extrapolateTrack(track,-700);
     	
     		aida.histogram2D("Track Position at Ecal").fill(positionEcal.y(), positionEcal.z());
     		aida.histogram2D("Track Position at Harp").fill(positionConverter.y(), positionConverter.z());
@@ -329,25 +326,25 @@
     		else if(positionEcal.z() < 0) ntracksBottom++;
     		
     		
-    		aida.histogram1D("DOCA").fill(trackUtil.getDoca());
-    		aida.histogram1D("Z0").fill(trackUtil.getZ0());
-    		aida.histogram1D("phi0").fill(trackUtil.getPhi0());
-    		aida.histogram1D("R").fill((1/trackUtil.getR())*1000);
-    		aida.histogram1D("Tan(Lambda)").fill(trackUtil.getTanLambda());
+    		aida.histogram1D("DOCA").fill(TrackUtils.getDoca(track));
+    		aida.histogram1D("Z0").fill(TrackUtils.getZ0(track));
+    		aida.histogram1D("phi0").fill(TrackUtils.getPhi0(track));
+    		aida.histogram1D("R").fill((1/TrackUtils.getR(track))*1000);
+    		aida.histogram1D("Tan(Lambda)").fill(TrackUtils.getTanLambda(track));
     		
     		aida.histogram1D("Px").fill(track.getPX());
     		aida.histogram1D("Py").fill(track.getPY());
     		aida.histogram1D("Pz").fill(track.getPZ());
     		aida.histogram1D("ChiSquared").fill(track.getChi2());
     		
-    		if(Math.signum(trackUtil.getR()) < 0){
+    		if(Math.signum(TrackUtils.getR(track)) < 0){
     			aida.histogram2D("Track Position at Ecal: Curvature < 0").fill(positionEcal.y(), positionEcal.z());
     			aida.histogram2D("Track Position at Harp: Curvature < 0").fill(positionConverter.y(), positionConverter.z());
         		aida.histogram1D("Px: C < 0").fill(track.getPX());
         		aida.histogram1D("Py: C < 0").fill(track.getPY());
         		aida.histogram1D("Pz: C < 0").fill(track.getPZ());
         		nnegative++;
-    		} else if(Math.signum(trackUtil.getR()) > 0){
+    		} else if(Math.signum(TrackUtils.getR(track)) > 0){
     			aida.histogram2D("Track Position at Ecal: Curvature > 0").fill(positionEcal.y(), positionEcal.z());
     			aida.histogram2D("Track Position at Harp: Curvature > 0").fill(positionConverter.y(), positionConverter.z());
         		aida.histogram1D("Px: C > 0").fill(track.getPX());

hps-java/src/main/java/org/lcsim/hps/users/omoreno
TestRunTrackReconEfficiency.java 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- TestRunTrackReconEfficiency.java	1 May 2013 04:39:34 -0000	1.3
+++ TestRunTrackReconEfficiency.java	14 Oct 2013 22:03:10 -0000	1.4
@@ -29,17 +29,15 @@
  * method. 
  * 
  * @author Omar Moreno <[log in to unmask]>
- * @version $Id: TestRunTrackReconEfficiency.java,v 1.3 2013/05/01 04:39:34 omoreno Exp $
+ * @version $Id: TestRunTrackReconEfficiency.java,v 1.4 2013/10/14 22:03:10 phansson Exp $
  */
 public class TestRunTrackReconEfficiency  extends Driver {
     
     private AIDA aida;
     private List<IPlotter>     plotters = new ArrayList<IPlotter>();
     private List<IHistogram1D> histo1D = new ArrayList<IHistogram1D>();
-    TrackUtils trkUtil = new TrackUtils();
     List<Track> topTracks; 
     List<Track> botTracks;
-    SvtTrackExtrapolator extrapolator = new SvtTrackExtrapolator(); 
     
     int plotterIndex = 0; 
 
@@ -341,9 +339,8 @@
     	double rMax = Double.MAX_VALUE;
     	Track matchedTrack = null; 
     	for(Track track : tracks){
-    		extrapolator.setTrack(track);
     		
-    		Hep3Vector trkPosAtShowerMax = extrapolator.extrapolateTrack(clusterPos.z());
+    		Hep3Vector trkPosAtShowerMax = SvtTrackExtrapolator.extrapolateTrack(track,clusterPos.z());
     		if(Double.isNaN(trkPosAtShowerMax.x()) || Double.isNaN(trkPosAtShowerMax.y())){
     			this.printDebug("Invalid track position");
     			return false; 

hps-java/src/main/java/org/lcsim/hps/users/phansson
ECalGainDriver.java 1.12 -> 1.13
diff -u -r1.12 -r1.13
--- ECalGainDriver.java	25 Feb 2013 22:39:26 -0000	1.12
+++ ECalGainDriver.java	14 Oct 2013 22:03:10 -0000	1.13
@@ -272,9 +272,7 @@
             BaseTrack trk = (BaseTrack) track;
             trk.setTrackParameters(trk.getTrackStates().get(0).getParameters(), -0.491);
             if (debug) {
-                SvtTrackExtrapolator extender = new SvtTrackExtrapolator();
-                extender.setTrack(trk);
-                if (extender.getTrackPositionAtEcal().y() > 0) {
+                if (SvtTrackExtrapolator.getTrackPositionAtEcal(trk).y() > 0) {
                     trTop++;
                 } else {
                     trBot++;
@@ -297,9 +295,7 @@
 
             System.out.println(tracks.size() + " tracks in this event");
             for (Track track : tracks) {
-                SvtTrackExtrapolator extender = new SvtTrackExtrapolator();
-                extender.setTrack(track);
-                System.out.println(extender.getTrackPositionAtEcal());
+                System.out.println(SvtTrackExtrapolator.getTrackPositionAtEcal(track));
             }
         }
 
@@ -333,9 +329,7 @@
                 if (debug) {
                     int[] pos = getCrystalPair(bestCl);
                     System.out.format("Matched cluster: [%f\t%f\t%f], ix = %d, iy = %d\n", bestCl.getPosition()[2], bestCl.getPosition()[0], bestCl.getPosition()[1], pos[0], pos[1]);
-                    SvtTrackExtrapolator extender = new SvtTrackExtrapolator();
-                    extender.setTrack(bestTrk);
-                    System.out.println("Matched track: " + extender.getTrackPositionAtEcal());
+                    System.out.println("Matched track: " + SvtTrackExtrapolator.getTrackPositionAtEcal(bestTrk));
                     System.out.println("Distance: " + minDist);
                 }
                 processMatchedPair(event, bestCl, bestTrk);
@@ -376,7 +370,7 @@
             matchBot++;
         }
 
-        double P = bestTrk.getPX() * 1000;
+        double P = bestTrk.getTrackStates().get(0).getMomentum()[0] * 1000;
         double E = bestCl.getEnergy();
         double Eoverp = E / P;
         double PoverE = P / E;

hps-java/src/main/java/org/lcsim/hps/users/phansson
MultScatAnalysis.java 1.8 -> 1.9
diff -u -r1.8 -r1.9
--- MultScatAnalysis.java	25 Feb 2013 22:39:26 -0000	1.8
+++ MultScatAnalysis.java	14 Oct 2013 22:03:10 -0000	1.9
@@ -1453,10 +1453,7 @@
                 if(side==0) aida.histogram1D("Top track Chi2").fill(trk.getChi2());
                 else aida.histogram1D("Bottom track Chi2").fill(trk.getChi2()); 
 
-                SvtTrackExtrapolator ext = new SvtTrackExtrapolator();
-                SeedTrack st = (SeedTrack) trk;
-                ext.setTrack(st);
-                Hep3Vector posAtEcal = ext.getTrackPositionAtEcal();
+                Hep3Vector posAtEcal = SvtTrackExtrapolator.getTrackPositionAtEcal(trk);
 
 
                 aida.histogram2D("Track Pz vs X").fill(posAtEcal.y(),trk.getPX()*1000);
@@ -1475,7 +1472,7 @@
                 }
 
 
-                Hep3Vector posAtTarget = ext.extrapolateTrack(-670.);
+                Hep3Vector posAtTarget = SvtTrackExtrapolator.extrapolateTrack(trk,-670.);
 
                 for(int imom=0;imom!=2;++imom) {
 
@@ -1486,10 +1483,10 @@
 
                     aida.histogram1D("Track " + str + "X @ -67cm").fill(posAtTarget.y());
                     aida.histogram1D("Track " + str + "Y @ -67cm").fill(posAtTarget.z());
-                    Hep3Vector extPosEntr = ext.extrapolateTrack(-0.0001);
+                    Hep3Vector extPosEntr = SvtTrackExtrapolator.extrapolateTrack(trk,-0.0001);
                     aida.histogram1D("Track " + str + "X @ 0cm").fill(extPosEntr.y());
                     aida.histogram1D("Track " + str + "Y @ 0cm").fill(extPosEntr.z());
-                    Hep3Vector extPosColl = ext.extrapolateTrack(-1500.0);
+                    Hep3Vector extPosColl = SvtTrackExtrapolator.extrapolateTrack(trk,-1500.0);
                     aida.histogram1D("Track " + str + "X @ -150cm").fill(extPosColl.y());
                     aida.histogram1D("Track " + str + "Y @ -150cm").fill(extPosColl.z());
     //              
@@ -1922,10 +1919,7 @@
                     
 
 
-                    SvtTrackExtrapolator exttrk = new SvtTrackExtrapolator();
-                    SeedTrack st = (SeedTrack) trkMatchTool.getMatchedTrack();
-                    exttrk.setTrack(st);
-                    Hep3Vector posAtTarget = exttrk.extrapolateTrack(-670);    
+                    Hep3Vector posAtTarget = SvtTrackExtrapolator.extrapolateTrack(trkMatchTool.getMatchedTrack(),-670);    
 
 
 

hps-java/src/main/java/org/lcsim/hps/users/phansson
TrigRateDriver.java 1.6 -> 1.7
diff -u -r1.6 -r1.7
--- TrigRateDriver.java	25 Feb 2013 22:39:26 -0000	1.6
+++ TrigRateDriver.java	14 Oct 2013 22:03:10 -0000	1.7
@@ -6,11 +6,13 @@
 
 import hep.aida.*;
 import hep.aida.ref.plotter.PlotterRegion;
+
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.logging.Level;
 import java.util.logging.Logger;
+
 import org.lcsim.detector.identifier.ExpandedIdentifier;
 import org.lcsim.detector.identifier.IExpandedIdentifier;
 import org.lcsim.detector.identifier.IIdentifier;
@@ -21,6 +23,7 @@
 import org.lcsim.geometry.Detector;
 import org.lcsim.geometry.IDDecoder;
 import org.lcsim.geometry.Subdetector;
+import org.lcsim.hps.event.BeamlineConstants;
 import org.lcsim.hps.monitoring.AIDAFrame;
 import org.lcsim.hps.recon.ecal.HPSEcalCluster;
 import org.lcsim.hps.recon.ecal.EcalConditions;
@@ -40,7 +43,6 @@
     protected Subdetector ecal;
     private String ecalName = "Ecal";
     
-    private double targetZPosition = -674; //mm
     
     private boolean hideFrame = true;
     private boolean simTrigger = false;
@@ -319,7 +321,7 @@
             int iside = clusterPosIdx[1]>0 ? 0 : 1;
             
             int hitY = clusterPosIdx[1]>0 ? clusterPosIdx[1] : (-1*clusterPosIdx[1]);
-            double hitTheta = Math.atan(clusterPosY/(clusterPosZ-targetZPosition));
+            double hitTheta = Math.atan(clusterPosY/(clusterPosZ-BeamlineConstants.HARP_POSITION));
             //x-check
             if(hitTheta<0) {
                 if(!"bottom".equals(side)) {

hps-java/src/main/java/org/lcsim/hps/users/phansson
TwoTrackAnlysis.java 1.22 -> 1.23
diff -u -r1.22 -r1.23
--- TwoTrackAnlysis.java	11 Oct 2013 23:14:28 -0000	1.22
+++ TwoTrackAnlysis.java	14 Oct 2013 22:03:10 -0000	1.23
@@ -547,8 +547,7 @@
                 }
                 
                 //Track at converter
-                this.vertexer.extrapolator().setTrack(trk1);
-                Hep3Vector posAtConverter = this.vertexer.extrapolator().extrapolateTrack(BeamlineConstants.HARP_POSITION);
+                Hep3Vector posAtConverter = SvtTrackExtrapolator.extrapolateTrack(trk1,BeamlineConstants.HARP_POSITION);
                 if(posAtConverter!=null)  printWriter.format("%5.5f %5.5f ", posAtConverter.x(),posAtConverter.y()); //note rotation from JLab->tracking
                 else printWriter.format("%5.5f %5.5f ", -9999999.9,-9999999.9);
                 HPSTrack hpstrk1 = new HPSTrack(helix1);
@@ -556,14 +555,14 @@
                 if (posAtConverterFringe1!=null) printWriter.format("%5.5f %5.5f %5.5f ", posAtConverterFringe1.z(),posAtConverterFringe1.x(),posAtConverterFringe1.y()); //note rotation from JLab->tracking
                 else printWriter.format("%5.5f %5.5f %5.5f ", -9999999.9,-9999999.9,-9999999.9);
                 
-                Hep3Vector posAtNomTarget1 = this.vertexer.extrapolator().extrapolateTrack(0);
+                Hep3Vector posAtNomTarget1 = SvtTrackExtrapolator.extrapolateTrack(trk1,0);
                 if(posAtNomTarget1!=null) printWriter.format("%5.5f %5.5f ", posAtNomTarget1.x(),posAtNomTarget1.y()); //note rotation from JLab->tracking
                 else printWriter.format("%5.5f %5.5f ", -9999999.9,-9999999.9);
 
                 Hep3Vector posAtNomTargetFringe1 = hpstrk1.getPositionAtZMap(100., 0.0, 5.0)[0];
                 if (posAtNomTargetFringe1!=null) printWriter.format("%5.5f %5.5f %5.5f ", posAtNomTargetFringe1.z(),posAtNomTargetFringe1.x(),posAtNomTargetFringe1.y()); //note rotation from JLab->tracking
                 else printWriter.format("%5.5f %5.5f %5.5f ", -9999999.9,-9999999.9,-9999999.9);
-                Hep3Vector posAtECal = this.vertexer.extrapolator().extrapolateTrack(BeamlineConstants.ECAL_FACE);        
+                Hep3Vector posAtECal = SvtTrackExtrapolator.extrapolateTrack(trk1,BeamlineConstants.ECAL_FACE);        
                 if(posAtECal!=null && !Double.isNaN(posAtECal.x()) && !Double.isNaN(posAtECal.y())) {
                         printWriter.format("%5.5f %5.5f ",posAtECal.x(),posAtECal.y()); //note rotation from JLab->tracking
                 } 
@@ -1012,8 +1011,7 @@
             if(useFringe) {
                 pos1 = hpstrk1.getPositionAtZMap(100.0, zVal, 5.0)[0];
             } else {
-                this.vertexer.extrapolator().setTrack(trk1);
-                pos1 = this.vertexer.extrapolator().extrapolateTrack(zVal);
+                pos1 = SvtTrackExtrapolator.extrapolateTrack(trk1,zVal);
             }
             //System.out.printf("%s: Position1 at edge of fringe %s\n",this.getClass().getSimpleName(),pos1.toString());
             Helix traj = (Helix)hpstrk1.getTrajectory();
CVSspam 0.2.12


Use REPLY-ALL to reply to list

To unsubscribe from the LCD-CVS list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=LCD-CVS&A=1