Print

Print


Commit in lcsim/src/org/lcsim/recon/tracking/seedtracker on MAIN
FastCheck.java+53-321.11 -> 1.12
Fix problem in new fast checking code that occurs with forward hits

lcsim/src/org/lcsim/recon/tracking/seedtracker
FastCheck.java 1.11 -> 1.12
diff -u -r1.11 -r1.12
--- FastCheck.java	6 Nov 2009 00:29:40 -0000	1.11
+++ FastCheck.java	6 Nov 2009 05:19:08 -0000	1.12
@@ -14,6 +14,7 @@
 import org.lcsim.fit.twopointcircle.TwoPointCircleFit;
 import org.lcsim.fit.twopointcircle.TwoPointCircleFitter;
 import org.lcsim.fit.twopointcircle.TwoPointLineFit;
+import org.lcsim.geometry.subdetector.BarrelEndcapFlag;
 import org.lcsim.recon.tracking.seedtracker.diagnostic.ISeedTrackerDiagnostics;
 
 /**
@@ -253,45 +254,65 @@
         double[] pos;
         double z[] = new double[3];
         double dztot = 0.;
+        int indx;
+        HelicalTrackHit hit;
         boolean zfirst = true;
 
         //  While not terribly elegant, code for speed
         //  Use calls that give uncorrected position and error
         //  Get the relevant variables for hit 1
-        pos = hit1.getPosition();
-        p[0][0] = pos[0];
-        p[0][1] = pos[1];
-        z[0] = pos[2];
-        if (hit1 instanceof HelicalTrack3DHit) dztot += _nsig * ((HelicalTrack3DHit) hit1).dz();
-        else {
-            zfirst = false;
-            if (hit1 instanceof HelicalTrack2DHit) dztot += ((HelicalTrack2DHit) hit1).zlen() / 2.;
-            else dztot += _nsig * Math.sqrt(hit1.getCovMatrix()[5]);
-       }
-
-        //  Get the relevant variables for hit 2
-        pos = hit2.getPosition();
-        p[1][0] = pos[0];
-        p[1][1] = pos[1];
-        z[1] = pos[2];
-        if (hit2 instanceof HelicalTrack3DHit) dztot += _nsig * ((HelicalTrack3DHit) hit2).dz();
-        else {
-            zfirst = false;
-            if (hit2 instanceof HelicalTrack2DHit) dztot += ((HelicalTrack2DHit) hit2).zlen() / 2.;
-            else dztot += _nsig * Math.sqrt(hit2.getCovMatrix()[5]);
-       }
+        indx = 0;
+        hit = hit1;
+        pos = hit.getPosition();
+        p[indx][0] = pos[0];
+        p[indx][1] = pos[1];
+        z[indx] = pos[2];
+        if (hit.BarrelEndcapFlag() == BarrelEndcapFlag.BARREL) {
+            if (hit instanceof HelicalTrack3DHit) dztot += _nsig * ((HelicalTrack3DHit) hit).dz();
+            else {
+                zfirst = false;
+                if (hit instanceof HelicalTrack2DHit) dztot += ((HelicalTrack2DHit) hit).zlen() / 2.;
+                else dztot += _nsig * Math.sqrt(hit.getCovMatrix()[5]);
+            }
+        } else {
+            dztot += hit.dr() * Math.abs(pos[2]) / Math.sqrt(pos[0]*pos[0] + pos[1]*pos[1]);
+        }
+
+         //  Get the relevant variables for hit 2
+        indx = 1;
+        hit = hit2;
+        pos = hit.getPosition();
+        p[indx][0] = pos[0];
+        p[indx][1] = pos[1];
+        z[indx] = pos[2];
+        if (hit.BarrelEndcapFlag() == BarrelEndcapFlag.BARREL) {
+            if (hit instanceof HelicalTrack3DHit) dztot += _nsig * ((HelicalTrack3DHit) hit).dz();
+            else {
+                zfirst = false;
+                if (hit instanceof HelicalTrack2DHit) dztot += ((HelicalTrack2DHit) hit).zlen() / 2.;
+                else dztot += _nsig * Math.sqrt(hit.getCovMatrix()[5]);
+            }
+        } else {
+            dztot += hit.dr() * Math.abs(pos[2]) / Math.sqrt(pos[0]*pos[0] + pos[1]*pos[1]);
+        }
 
         //  Get the relevant variables for hit 3
-        pos = hit3.getPosition();
-        p[2][0] = pos[0];
-        p[2][1] = pos[1];
-        z[2] = pos[2];
-        if (hit3 instanceof HelicalTrack3DHit) dztot += _nsig * ((HelicalTrack3DHit) hit3).dz();
-        else {
-            zfirst = false;
-            if (hit3 instanceof HelicalTrack2DHit) dztot += ((HelicalTrack2DHit) hit3).zlen() / 2.;
-            else dztot += _nsig * Math.sqrt(hit3.getCovMatrix()[5]);
-       }
+        indx = 2;
+        hit = hit3;
+        pos = hit.getPosition();
+        p[indx][0] = pos[0];
+        p[indx][1] = pos[1];
+        z[indx] = pos[2];
+        if (hit.BarrelEndcapFlag() == BarrelEndcapFlag.BARREL) {
+            if (hit instanceof HelicalTrack3DHit) dztot += _nsig * ((HelicalTrack3DHit) hit).dz();
+            else {
+                zfirst = false;
+                if (hit instanceof HelicalTrack2DHit) dztot += ((HelicalTrack2DHit) hit).zlen() / 2.;
+                else dztot += _nsig * Math.sqrt(hit.getCovMatrix()[5]);
+            }
+        } else {
+            dztot += hit.dr() * Math.abs(pos[2]) / Math.sqrt(pos[0]*pos[0] + pos[1]*pos[1]);
+        }
 
         //  Add multiple scattering error here - for now, just set it to 1 mm
         dztot += 1.;
CVSspam 0.2.8