Print

Print


Commit in lcsim/sandbox/Partridge on MAIN
HelicalTrack2DHit.java+51.1 -> 1.2
HelicalTrack3DHit.java+51.1 -> 1.2
HelicalTrackFit.java+15-431.1 -> 1.2
HelicalTrackFitter.java+31-211.2 -> 1.3
HelicalTrackHit.java+81.1 -> 1.2
+64-64
5 modified files
Backup into sandbox

lcsim/sandbox/Partridge
HelicalTrack2DHit.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- HelicalTrack2DHit.java	21 Nov 2007 16:24:27 -0000	1.1
+++ HelicalTrack2DHit.java	29 Nov 2007 19:42:40 -0000	1.2
@@ -43,6 +43,11 @@
         _zmax = z + Math.sqrt(cov[5]);
     }
     
+    public HelicalTrack2DHit(double x, double y, double z, double drphi, double zmin, double zmax) {
+        super(x, y, z, drphi);
+        _zmin = zmin;
+        _zmax = zmax;
+    }
     
     /**
      * Return the minimum z coordinate

lcsim/sandbox/Partridge
HelicalTrack3DHit.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- HelicalTrack3DHit.java	21 Nov 2007 16:24:27 -0000	1.1
+++ HelicalTrack3DHit.java	29 Nov 2007 19:42:40 -0000	1.2
@@ -29,6 +29,11 @@
         _dz = hit.getCovMatrix()[5];
     }
     
+    public HelicalTrack3DHit(double x, double y, double z, double drphi, double dz) {
+        super(x, y, z, drphi);
+        _dz = dz;
+    }
+
     /**
      * Return the uncertainty in the z coordinate
      * @return uncertainty in the z coordinate

lcsim/sandbox/Partridge
HelicalTrackFit.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- HelicalTrackFit.java	21 Nov 2007 16:24:27 -0000	1.1
+++ HelicalTrackFit.java	29 Nov 2007 19:42:40 -0000	1.2
@@ -3,13 +3,16 @@
  *
  * Created on March 25, 2006, 6:11 PM
  *
- * $Id: HelicalTrackFit.java,v 1.1 2007/11/21 16:24:27 partridge Exp $
+ * $Id: HelicalTrackFit.java,v 1.2 2007/11/29 19:42:40 partridge Exp $
  */
 
 package org.lcsim.fit.helicaltrack;
 
 import hep.physics.matrix.SymmetricMatrix;
 
+import java.util.HashMap;
+import java.util.Map;
+
 import org.lcsim.fit.circle.CircleFit;
 import org.lcsim.fit.line.SlopeInterceptLineFit;
 import org.lcsim.fit.zsegment.ZSegmentFit;
@@ -25,19 +28,20 @@
     private int[] _ndf = new int[2];
     private double[] _parameters;
     private SymmetricMatrix _covmatrix;
+    private Map<HelicalTrackHit, Double> _smap;
     
     /** Creates a new instance of HelicalTrackFit */
     public HelicalTrackFit(double[] pars, SymmetricMatrix cov, double[] chisq, int[] ndf) {
+        this(pars, cov, chisq, ndf, new HashMap<HelicalTrackHit, Double>());
+    }
+    
+    public HelicalTrackFit(double[]pars, SymmetricMatrix cov, double[] chisq, int[] ndf,
+            Map<HelicalTrackHit, Double> smap) {
         _parameters = pars;
         _covmatrix = cov;
         _chisq = chisq;
         _ndf = ndf;
-    }
-    
-    public HelicalTrackFit(CircleFit cfit, int cdof, SlopeInterceptLineFit lfit) {
-        _covmatrix = new SymmetricMatrix(5);
-        circle(cfit, cdof);
-        line(lfit);
+        _smap = smap;
     }
     
     public double[] parameters() {
@@ -55,6 +59,10 @@
         return _ndf;
     }
     
+    public Map<HelicalTrackHit, Double> pathmap() {
+        return _smap;
+    }
+    
     public String toString() {
         StringBuffer sb = new StringBuffer("HelicalTrackFit: \n");
         
@@ -67,42 +75,6 @@
         return sb.toString();
     }
     
-    private void circle(CircleFit cfit, int cdof) {
-        _chisq[0] = cfit.chisq();
-        _ndf[0] = cdof;
-        _parameters[0] = -cfit.dca();
-        _parameters[1] = cfit.phi();
-        _parameters[2] = cfit.curvature();
-        double[] cov = cfit.cov();
-        _covmatrix.setElement(0, 0, cov[0]);
-        _covmatrix.setElement(0, 1, cov[1]);
-        _covmatrix.setElement(1, 1, cov[2]);
-        _covmatrix.setElement(0, 2, cov[3]);
-        _covmatrix.setElement(1, 2, cov[4]);
-        _covmatrix.setElement(2, 2, cov[5]);
-    }
-    
-    private void line(SlopeInterceptLineFit lfit) {
-        _chisq[1] = lfit.chisquared();
-        _ndf[1] = lfit.ndf();
-        _parameters[3] = lfit.intercept();
-        _parameters[4] = lfit.slope();
-        _covmatrix.setElement(3, 3, Math.pow(lfit.interceptUncertainty(),2));
-        _covmatrix.setElement(3, 4, lfit.covariance());
-        _covmatrix.setElement(4, 4, Math.pow(lfit.slopeUncertainty(),2));
-    }
-    
-    private void segment(ZSegmentFit zfit, double chisq, int ndof) {
-        _chisq[1] = chisq;
-        _ndf[1] = ndof;
-        double[] cent = zfit.getCentroid();
-        _parameters[3] = cent[0];
-        _parameters[4] = cent[1];
-        SymmetricMatrix cov = zfit.getCovariance();
-        _covmatrix.setElement(3, 3, cov.e(0, 0));
-        _covmatrix.setElement(3, 4, cov.e(0, 1));
-        _covmatrix.setElement(4, 4, cov.e(1, 1));
-    }
     
     
 }

lcsim/sandbox/Partridge
HelicalTrackFitter.java 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- HelicalTrackFitter.java	21 Nov 2007 16:25:06 -0000	1.2
+++ HelicalTrackFitter.java	29 Nov 2007 19:42:40 -0000	1.3
@@ -4,7 +4,7 @@
  *
  * Created on March 25, 2006, 6:11 PM
  *
- * $Id: HelicalTrackFitter.java,v 1.2 2007/11/21 16:25:06 partridge Exp $
+ * $Id: HelicalTrackFitter.java,v 1.3 2007/11/29 19:42:40 partridge Exp $
  */
 
 import hep.physics.matrix.SymmetricMatrix;
@@ -16,15 +16,13 @@
 import java.util.List;
 import java.util.Map;
 
-import org.lcsim.event.TrackerHit;
+// import org.lcsim.event.TrackerHit;
 import org.lcsim.fit.circle.CircleFit;
 import org.lcsim.fit.circle.CircleFitter;
-import org.lcsim.fit.helicaltrack.HelicalTrackFit;
 import org.lcsim.fit.line.SlopeInterceptLineFit;
 import org.lcsim.fit.line.SlopeInterceptLineFitter;
 import org.lcsim.fit.zsegment.ZSegmentFit;
 import org.lcsim.fit.zsegment.ZSegmentFitter;
-import org.lcsim.spacegeom.SpacePoint;
 
 /**
  * Fit a helix to a set of space points.  First, a circle is fit to the x-y coordinates.
@@ -68,21 +66,26 @@
      * @return true for successful fit
      */
     public boolean fit(double[] x, double[] y, double[] z, double[] drphi, double[] dz, int np) {
-        List<HelicalTrackHit> hits = new ArrayList<HelicalTrackHit>();
+        List<HelicalTrackHit> hitcol = new ArrayList<HelicalTrackHit>();
         for(int i=0; i<np; i++) {
-            SpacePoint pos = new SpacePoint(new BasicHep3Vector(x[i], y[i], z[i]));
             if (dz[i] > 0.) {
-                hits.add(new HelicalTrack3DHit(pos, drphi[i], dz[i]));
+                hitcol.add(new HelicalTrack3DHit(x[i], y[i], z[i], drphi[i], dz[i]));
             } else {
                 double zmin = z[i] - Math.abs(dz[i]);
                 double zmax = z[i] + Math.abs(dz[i]);
-                hits.add(new HelicalTrack2DHit(pos, drphi[i], zmin, zmax));
+                hitcol.add(new HelicalTrack2DHit(x[i], y[i], z[i], drphi[i], zmin, zmax));
             }
         }
-        return fit(hits);
+        Map<HelicalTrackHit, MultipleScatter> msmap = new HashMap<HelicalTrackHit, MultipleScatter>();
+        return fit(hitcol, msmap);
     }
-    
-    public boolean fit(List<HelicalTrackHit> hitcol) {
+ 
+        public boolean fit(List<HelicalTrackHit> hitcol) {
+            Map<HelicalTrackHit, MultipleScatter> msmap = new HashMap<HelicalTrackHit, MultipleScatter>();
+            return fit(hitcol, msmap);
+        }
+
+    public boolean fit(List<HelicalTrackHit> hitcol, Map<HelicalTrackHit, MultipleScatter> msmap) {
         
         //  Create lists for the various types of hits
         List<HelicalTrackHit> circle_hits = new ArrayList<HelicalTrackHit>();
@@ -113,9 +116,12 @@
         
         //  Store the hit coordinates and weights in arrays for the circle fitter
         for(int i=0; i<nc; i++) {
-            x[i] = circle_hits.get(i).x();
-            y[i] = circle_hits.get(i).y();
-            wrphi[i] = 1. / Math.pow(circle_hits.get(i).drphi(),2);
+            HelicalTrackHit hit = circle_hits.get(i);
+            x[i] = hit.x();
+            y[i] = hit.y();
+            double drphi_ms = 0.;
+            if (msmap.containsKey(hit)) drphi_ms = msmap.get(hit).drphi(); 
+            wrphi[i] = 1. / (Math.pow(hit.drphi(),2) + Math.pow(drphi_ms,2));
             System.out.println(" Circle fit - x: "+x[i]+" y "+y[i]+" w "+wrphi[i]);
         }
         
@@ -153,7 +159,9 @@
             for(int i=0; i<npix; i++) {
                 HelicalTrack3DHit hit = (HelicalTrack3DHit) pixel_hits.get(i);
                 z[i] = hit.z();
-                dz[i] = hit.dz();
+                double dz_ms = 0.;
+                if (msmap.containsKey(hit)) dz_ms = msmap.get(hit).dz();
+                dz[i] = Math.sqrt(Math.pow(hit.dz(),2)+Math.pow(dz_ms,2));
                 s[i] = smap.get(hit);
                 System.out.println("Line fit - z: "+z[i]+" s "+s[i]+" dz "+dz[i]);
             }
@@ -180,11 +188,13 @@
             
             //  If we have one pixel hit, turn it into a pseudo strip hit
             if (npix == 1) {
-                HelicalTrack3DHit pixhit = (HelicalTrack3DHit) pixel_hits.get(0);
-                SpacePoint pos = pixhit.getPosition();
-                double zmin = pixhit.z() - pixhit.dz();
-                double zmax = pixhit.z() + pixhit.dz();
-                strip_hits.add(new HelicalTrack2DHit(pos, pixhit.drphi(), zmin, zmax));
+                HelicalTrack3DHit hit = (HelicalTrack3DHit) pixel_hits.get(0);
+                double dz_ms = 0.;
+                if (msmap.containsKey(hit)) dz_ms = msmap.get(hit).dz();
+                double dz = Math.sqrt(Math.pow(hit.dz(),2)+Math.pow(dz_ms,2));
+                double zmin = hit.z() - dz;
+                double zmax = hit.z() + dz;
+                strip_hits.add(new HelicalTrack2DHit(hit.x(), hit.y(), hit.z(), hit.drphi(), zmin, zmax));
             }
             
             //  Setup for the ZSegment fit
@@ -219,7 +229,7 @@
         }
         
         //  Create the HelicalTrackFit for this helix and exit
-        _fit = new HelicalTrackFit(par, cov, chisq, ndof);
+        _fit = new HelicalTrackFit(par, cov, chisq, ndof, smap);
         return true;
     }
     

lcsim/sandbox/Partridge
HelicalTrackHit.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- HelicalTrackHit.java	21 Nov 2007 16:25:06 -0000	1.1
+++ HelicalTrackHit.java	29 Nov 2007 19:42:40 -0000	1.2
@@ -44,6 +44,14 @@
         _drphi = Math.sqrt(cov[0]+cov[1]);
     }
     
+    public HelicalTrackHit(double x, double y, double z, double drphi) {
+        _trackerhit = null;
+        _x = x;
+        _y = y;
+        _z = z;
+        _drphi = drphi;
+    }
+    
     /**
      * Return the TrackerHit that corresponds to this HelicalTrackHit
      * @return Associated TrackerHit
CVSspam 0.2.8