Commit in lcsim/src/org/lcsim/contrib/seedtracker on MAIN
HelixFitter.java+28-81.7 -> 1.8
HitManager.java+1-11.5 -> 1.6
+29-9
2 modified files
Commit Seedtracker mods that came about during forward tracking development

lcsim/src/org/lcsim/contrib/seedtracker
HelixFitter.java 1.7 -> 1.8
diff -u -r1.7 -r1.8
--- HelixFitter.java	6 May 2008 23:52:00 -0000	1.7
+++ HelixFitter.java	10 Jun 2008 19:36:10 -0000	1.8
@@ -8,15 +8,19 @@
 package org.lcsim.contrib.seedtracker;
 
 import org.lcsim.contrib.seedtracker.diagnostic.ISeedTrackerDiagnostics;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
 import org.lcsim.fit.circle.CircleFit;
+import org.lcsim.fit.helicaltrack.HelicalTrackCross;
 import org.lcsim.fit.helicaltrack.HelicalTrackFit;
 import org.lcsim.fit.helicaltrack.HelicalTrackFitter;
 import org.lcsim.fit.helicaltrack.HelicalTrackFitter.FitStatus;
 import org.lcsim.fit.helicaltrack.HelicalTrackHit;
+import org.lcsim.fit.helicaltrack.HelixUtils;
 import org.lcsim.fit.helicaltrack.MultipleScatter;
+import org.lcsim.fit.helicaltrack.TrackDirection;
 import org.lcsim.fit.line.SlopeInterceptLineFit;
 import org.lcsim.fit.zsegment.ZSegmentFit;
 
@@ -31,24 +35,26 @@
     private HelicalTrackFit _helix;
     private MaterialManager _materialmanager;
     private ConstrainHelix _constrain;
+    private HelixUtils _helixutils;
     private double _bfield;
     private CircleFit _circlefit;
     private SlopeInterceptLineFit _linefit;
     private ZSegmentFit _zsegmentfit;
     private FitStatus _status;
-    private ISeedTrackerDiagnostics diag = null; 
+    private ISeedTrackerDiagnostics diag = null;
     /**
      * Creates a new instance of HelixFitter
      */
     public HelixFitter(double bfield, MaterialManager materialmanager) {
         _materialmanager = materialmanager;
+        _helixutils = new HelixUtils();
         _bfield = bfield;
         _scattering = new MultipleScattering(_materialmanager, _bfield);
         _constrain = new ConstrainHelix(_bfield);
     }
     
     public boolean FitCandidate(SeedCandidate seed, SeedStrategy strategy) {
-
+        
         //  Initialize fit results to null objects
         _helix = null;
         
@@ -60,13 +66,19 @@
         
         //  If this is the candidate's first helix fit, first do a fit without MS errors
         if (oldhelix == null) {
+            
+            //  Reset the stereo hit positions to their nominal value
+            for (HelicalTrackHit hit : hitlist) {
+                if (hit instanceof HelicalTrackCross) ((HelicalTrackCross) hit).resetTrackDirection();
+            }
+            //  Do the fit
             _status = _fitter.fit(hitlist);
             checkfit();
             if (_status != FitStatus.Success) {
                 if(diag!=null) diag.fireFitterFitMade(seed, null,_circlefit,_linefit,_zsegmentfit, _status, false);
                 return false;
             }
-
+            
             //  Retrieve the helix parameters from this fit
             oldhelix = _fitter.getFit();
         }
@@ -74,8 +86,16 @@
         //  Calculate the MS errors
         Map<HelicalTrackHit, MultipleScatter> msmap = _scattering.HelixScatters(oldhelix, hitlist);
         
+        //  Adjust stereo hit positions and covariance matrices for cross hits
+        Map<HelicalTrackHit, Double> pathmap = oldhelix.PathMap();
+        for (HelicalTrackHit hit : hitlist) {
+            if (hit instanceof HelicalTrackCross) {
+                ((HelicalTrackCross) hit).setTrackDirection(_helixutils.getTrackDirection(oldhelix, pathmap.get(hit)), oldhelix);
+            }
+        }
+        
         //  Do a helix fit including MS errors
-        _status = _fitter.fit(hitlist, msmap);
+        _status = _fitter.fit(hitlist, msmap, oldhelix);
         checkfit();
         if (_status != FitStatus.Success) {
             if(diag!=null) diag.fireFitterFitMade(seed, null,_circlefit,_linefit,_zsegmentfit, _status, false);
@@ -87,7 +107,7 @@
         
         //  Set the non-holonomic constraint chi square
         _constrain.setConstraintChisq(strategy, _helix);
-
+        
 //        System.out.println(" circle chisq "+helix.chisq()[0]);
 //        System.out.println(" line fit chisq "+helix.chisq()[1]);
 //        System.out.println(" total chisq "+chisq);
@@ -104,7 +124,7 @@
     }
     
     public void setDiagnostics(ISeedTrackerDiagnostics d) {
-        diag = d; 
+        diag = d;
     }
     
     public HelicalTrackFit getHelix() {
@@ -125,7 +145,7 @@
     
     public ZSegmentFit getZSegmentFit() {
         return _zsegmentfit;
-    }    
+    }
     
     private void checkfit() {
         _circlefit = null;
@@ -139,7 +159,7 @@
         if (_status == FitStatus.ZSegmentFitFailed) return;
         _linefit = _fitter.getLineFit();
         _zsegmentfit = _fitter.getZSegmentFit();
-
+        
         return;
     }
 }
\ No newline at end of file

lcsim/src/org/lcsim/contrib/seedtracker
HitManager.java 1.5 -> 1.6
diff -u -r1.5 -r1.6
--- HitManager.java	7 Feb 2008 18:20:50 -0000	1.5
+++ HitManager.java	10 Jun 2008 19:36:10 -0000	1.6
@@ -71,7 +71,7 @@
 //                hits.add(new HelicalTrack2DHit(hit, zmin, zmax));
 //            }
 //            _hitlist.get(identifier).add(new HelicalTrack3DHit(hit, getBarrelEndcapFlag(hit)));
-            double r = Math.sqrt(Math.pow(hit.x(),2)+Math.pow(hit.y(),2));
+            double r = hit.r();
             double z = hit.z();
             if (r < _rmin.get(identifier)) _rmin.put(identifier,r);
             if (r > _rmax.get(identifier)) _rmax.put(identifier,r);
CVSspam 0.2.8