Print

Print


Commit in lcsim/src/org/lcsim/fit/helicaltrack on MAIN
HelicalTrackStrip.java+41.7 -> 1.8
HelicalTrackHit.java+8-11.11 -> 1.12
HelicalTrackFitter.java+32-21.23 -> 1.24
HelicalTrackHitDriver.java+12-11.17 -> 1.18
HelicalTrack3DHit.java+21.7 -> 1.8
TrackDirection.java+51.2 -> 1.3
+63-4
6 modified files
CD - Help protect against NaN values

lcsim/src/org/lcsim/fit/helicaltrack
HelicalTrackStrip.java 1.7 -> 1.8
diff -u -r1.7 -r1.8
--- HelicalTrackStrip.java	12 Jul 2008 01:25:41 -0000	1.7
+++ HelicalTrackStrip.java	21 Jul 2008 20:08:19 -0000	1.8
@@ -195,4 +195,8 @@
         return _mcplist;
     }
     
+    public String toString(){
+        return ("Strip with u="+this.u().toString()+"\n v="+this.v().toString() + "\n vmin="+this.vmin() + "\n vmax="+this.vmax() + "\n umeas="+this.umeas()+"\n origin="+this.origin().toString()); 
+    }
+    
 }
\ No newline at end of file

lcsim/src/org/lcsim/fit/helicaltrack
HelicalTrackHit.java 1.11 -> 1.12
diff -u -r1.11 -r1.12
--- HelicalTrackHit.java	2 Jul 2008 23:54:24 -0000	1.11
+++ HelicalTrackHit.java	21 Jul 2008 20:08:19 -0000	1.12
@@ -51,7 +51,7 @@
     private double _drphi;
     private double _dr;
     private double _chisq;
-    
+    protected static final double _eps = 1e-6; 
     public HelicalTrackHit(Hep3Vector pos, SymmetricMatrix cov, double dEdx, double time, int type,
             List rawhits, String detname, int layer, BarrelEndcapFlag beflag) {
         _pos = pos;
@@ -447,6 +447,13 @@
                 - 2. * x * y * _covcor.e(0,1)) / _r;
                 _dr = Math.sqrt(x*x * _covcor.e(0,0) + y*y * _covcor.e(1,1)
                 + 2. * x * y * _covcor.e(0,1)) / _r;
+                
+                //do ! > because that'll handle the NaN case 
+                if (! (_dr>_eps))
+                    _dr = _eps; 
+                
+                if (! (_drphi>_eps))
+                    _drphi = _eps; 
             }
         }
         return;

lcsim/src/org/lcsim/fit/helicaltrack
HelicalTrackFitter.java 1.23 -> 1.24
diff -u -r1.23 -r1.24
--- HelicalTrackFitter.java	2 Jul 2008 23:54:24 -0000	1.23
+++ HelicalTrackFitter.java	21 Jul 2008 20:08:19 -0000	1.24
@@ -4,15 +4,15 @@
  *
  * Created on March 25, 2006, 6:11 PM
  *
- * $Id: HelicalTrackFitter.java,v 1.23 2008/07/02 23:54:24 partridge Exp $
+ * $Id: HelicalTrackFitter.java,v 1.24 2008/07/21 20:08:19 cozzyd Exp $
  */
 
 import hep.physics.matrix.SymmetricMatrix;
 import hep.physics.vec.BasicHep3Vector;
 import hep.physics.vec.Hep3Vector;
-import hep.physics.vec.VecOp;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
@@ -265,6 +265,22 @@
                 chisq[1] = _lfit.chisquared();
                 ndof[1] = npix - 2;
                 
+                
+                 if (Double.isNaN(_lfit.intercept())){
+                    System.out.println("z0 is NaN"); 
+                    System.out.println("Pixel hits: "+pixel_hits.size());
+                    System.out.println(Arrays.toString(dz)); 
+                    int ncross = 0; 
+                    for (HelicalTrackHit hth : pixel_hits){
+                        if (hth instanceof HelicalTrackCross){
+                            ncross++; 
+                        }
+                    }
+                    System.out.println("Cross hits: "+ncross);
+                    
+                }
+                
+                
                 //  Save the line fit parameters
                 par[HelicalTrackFit.z0Index] = _lfit.intercept();
                 par[HelicalTrackFit.slopeIndex] = _lfit.slope();
@@ -315,6 +331,20 @@
                 chisq[1] = 0.;
                 ndof[1] = 0;
                 
+                if (Double.isNaN(_zfit.getCentroid()[0])){
+                    System.out.println("z0 is NaN"); 
+                    System.out.println("Pixel hits: "+pixel_hits.size());
+                    System.out.println(" hits: "+pixel_hits.size());
+                    int ncross = 0; 
+                    for (HelicalTrackHit hth : pixel_hits){
+                        if (hth instanceof HelicalTrackCross){
+                            ncross++; 
+                        }
+                    }
+                    System.out.println("Cross hits: "+ncross);
+                    
+                }
+                
                 //  Save the ZSegment fit parameters
                 par[HelicalTrackFit.z0Index] = _zfit.getCentroid()[0];
                 par[HelicalTrackFit.slopeIndex] = _zfit.getCentroid()[1];

lcsim/src/org/lcsim/fit/helicaltrack
HelicalTrackHitDriver.java 1.17 -> 1.18
diff -u -r1.17 -r1.18
--- HelicalTrackHitDriver.java	12 Jul 2008 01:25:41 -0000	1.17
+++ HelicalTrackHitDriver.java	21 Jul 2008 20:08:19 -0000	1.18
@@ -13,6 +13,7 @@
 import hep.physics.vec.VecOp;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 
@@ -103,11 +104,13 @@
         List<HelicalTrackHit> helhits = new ArrayList<HelicalTrackHit>();
         Hep3Vector lz = new BasicHep3Vector(0., 0., 1.);
         
+        
+       //   Warning! Tracker endcap smeared hits are doubled! NOT good for tracking. 
         for (String colname : _smcol) {
             List<TrackerHit> hitlist = (List<TrackerHit>) event.get(colname);
             for (TrackerHit hit : hitlist) {
                 Hep3Vector pos = new BasicHep3Vector(hit.getPosition());
-                SymmetricMatrix cov = new SymmetricMatrix(3, hit.getCovMatrix(), true);
+            SymmetricMatrix cov = new SymmetricMatrix(3, hit.getCovMatrix(), true);
                 
                 try {
                     SimTrackerHit simhit = ((BaseTrackerHitMC)hit).getSimHits().get(0);
@@ -118,6 +121,14 @@
                         IDetectorElement de = cont.get(0);
                         String detname = ID.getName(de);
                         int lyr = ID.getLayer(de);
+                        BarrelEndcapFlag be = ID.getBarrelEndcapFlag(de); 
+                        
+                        if (detname.indexOf("Vertex")==-1 && be.isEndcap()) {
+                         
+                            if (detname.indexOf("planar")==-1){
+                                lyr/=2; 
+                            }
+                        }
                         HelicalTrackHit hthit = new HelicalTrack3DHit(pos, cov, hit.getdEdx(), hit.getTime(), hit.getRawHits(),
                                 detname, lyr, ID.getBarrelEndcapFlag(de));
                         

lcsim/src/org/lcsim/fit/helicaltrack
HelicalTrack3DHit.java 1.7 -> 1.8
diff -u -r1.7 -r1.8
--- HelicalTrack3DHit.java	2 Jul 2008 23:54:24 -0000	1.7
+++ HelicalTrack3DHit.java	21 Jul 2008 20:08:19 -0000	1.8
@@ -31,6 +31,8 @@
             List rawhits, String detname, int layer, BarrelEndcapFlag beflag) {
         super(pos, cov, dEdx, time, _type, rawhits, detname, layer, beflag);
         _dz = Math.sqrt(cov.e(2, 2));
+        if (! (_dz>_eps)) //_eps inherited from HelicalTrackHit
+            _dz = _eps; 
     }
     
     /**

lcsim/src/org/lcsim/fit/helicaltrack
TrackDirection.java 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- TrackDirection.java	17 Jun 2008 00:40:49 -0000	1.2
+++ TrackDirection.java	21 Jul 2008 20:08:19 -0000	1.3
@@ -26,6 +26,11 @@
      * @param deriv derivative of the track direction wrt helix parameters
      */
     public TrackDirection(Hep3Vector dir, Matrix deriv) {
+        for (double d : dir.v()){
+            if (Double.isNaN(d)){
+                throw new RuntimeException("NaN in track direction"); 
+            }
+        }
         _dir = dir;
         _deriv = deriv;
     }
CVSspam 0.2.8