Print

Print


Commit in lcsim/src/org/lcsim/contrib/uiowa on MAIN
ReclusterDTreeDriver.java+14-101.14 -> 1.15
MJC: (contrib) Catch rare null pointer error in track-photon matching

lcsim/src/org/lcsim/contrib/uiowa
ReclusterDTreeDriver.java 1.14 -> 1.15
diff -u -r1.14 -r1.15
--- ReclusterDTreeDriver.java	26 Mar 2008 19:45:31 -0000	1.14
+++ ReclusterDTreeDriver.java	17 Apr 2008 13:21:05 -0000	1.15
@@ -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.14 2008/03/26 19:45:31 mcharles Exp $
+  * @version $Id: ReclusterDTreeDriver.java,v 1.15 2008/04/17 13:21:05 mcharles Exp $
   * @author Mat Charles <[log in to unmask]>
   */
 
@@ -48,7 +48,7 @@
     protected boolean m_photonDebug = false;
     protected boolean m_photonSplitDebug = false;
     protected boolean m_jetDebug = false;
-    protected boolean m_writeExtraEventOutput = false;
+    protected boolean m_writeExtraEventOutput = true;
 
     protected boolean m_useNewMipFinder = true;
     protected boolean m_useOldMipFinder = true;
@@ -74,7 +74,7 @@
     protected int m_punchThroughHitMinimum = 4;
 
     public ReclusterDTreeDriver(String dTreeClusterList, String trackList, String mcList) {
-	System.out.println("ReclusterDTreeDriver version 0.1");
+	System.out.println("ReclusterDTreeDriver version 0.2");
 	initTrackMatch();
 	initCalibration();
 	initPlots();
@@ -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);
+		    }
 		}
 	    }
 	}
CVSspam 0.2.8