lcsim/src/org/lcsim/recon/pfa/structural
diff -u -r1.3 -r1.4
--- ReclusterDTreeDriver.java 27 Mar 2008 18:21:45 -0000 1.3
+++ ReclusterDTreeDriver.java 17 Apr 2008 13:31:03 -0000 1.4
@@ -33,7 +33,7 @@
* in this package, which uses the implementation in
* org.lcsim.recon.cluster.directedtree developed by NIU).
*
- * @version $Id: ReclusterDTreeDriver.java,v 1.3 2008/03/27 18:21:45 mcharles Exp $
+ * @version $Id: ReclusterDTreeDriver.java,v 1.4 2008/04/17 13:31:03 mcharles Exp $
* @author Mat Charles <[log in to unmask]>
*/
@@ -2690,13 +2690,17 @@
// Require within a certain distance (sanity check)
Hep3Vector positionOfSeedHit = new BasicHep3Vector(seedHitToUse.getPosition());
Hep3Vector trackExtrapPointInLayer = debugTrackMatch.getExtrapolator().extendToECALLayer(getLayer(seedHitToUse));
- double distForCut = VecOp.sub(positionOfSeedHit, trackExtrapPointInLayer).magnitude();
- if (distForCut < 10.0) {
- // Within 1cm
- trackSeedHits.add(seedHitToUse);
- Hep3Vector tangent = VecOp.unit(VecOp.sub(interceptPointLayer1, interceptPointLayer0));
- mapTrackSeedToTangent.put(seedHitToUse, tangent);
- mapTrackToTrackSeed.put(tr, seedHitToUse);
+ // It's possible (but rare) for trackExtrapPointInLayer to be null -- e.g. if track just clipped the calorimeter
+ // and never entered layer 2. Watch for that case.
+ if (trackExtrapPointInLayer != null) {
+ double distForCut = VecOp.sub(positionOfSeedHit, trackExtrapPointInLayer).magnitude();
+ if (distForCut < 10.0) {
+ // Within 1cm
+ trackSeedHits.add(seedHitToUse);
+ Hep3Vector tangent = VecOp.unit(VecOp.sub(interceptPointLayer1, interceptPointLayer0));
+ mapTrackSeedToTangent.put(seedHitToUse, tangent);
+ mapTrackToTrackSeed.put(tr, seedHitToUse);
+ }
}
}
}