6 modified files
lcsim/src/org/lcsim/fit/helicaltrack
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
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
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
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
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
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