Print

Print


Author: [log in to unmask]
Date: Tue Sep 15 14:14:34 2015
New Revision: 3606

Log:
fix bugs

Modified:
    java/trunk/users/src/main/java/org/hps/users/phansson/ECalExtrapolationDriver.java

Modified: java/trunk/users/src/main/java/org/hps/users/phansson/ECalExtrapolationDriver.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/phansson/ECalExtrapolationDriver.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/phansson/ECalExtrapolationDriver.java	Tue Sep 15 14:14:34 2015
@@ -12,15 +12,19 @@
 
 import java.util.List;
 
+import javax.swing.text.DefaultEditorKit.PasteAction;
+
 import org.hps.recon.tracking.TrackType;
 import org.hps.recon.tracking.TrackUtils;
 import org.lcsim.detector.tracker.silicon.HpsSiSensor;
 import org.lcsim.event.EventHeader;
+import org.lcsim.event.RawTrackerHit;
 import org.lcsim.event.Track;
 import org.lcsim.event.TrackState;
 import org.lcsim.event.TrackerHit;
 import org.lcsim.fit.helicaltrack.HelicalTrackHit;
 import org.lcsim.geometry.Detector;
+import org.lcsim.geometry.compact.converter.HPSTrackerBuilder;
 import org.lcsim.util.Driver;
 import org.lcsim.util.aida.AIDA;
 
@@ -75,6 +79,10 @@
     for(List<Track> tracks : trackCollections) {
         
         for (Track track : tracks) {
+            
+            if(track.getTrackerHits().size() != 6) 
+                continue;
+            
 
             if(TrackType.isGBL(track.getType())) {
 
@@ -85,11 +93,11 @@
                     if (state.getLocation() == TrackState.AtIP) stateIP = state;
                 }
 
+                
                 // find last 3D hit
                 Hep3Vector lastStereoHitPosition = null;
-                Hep3Vector stereoHitPosition = null;
                 for (TrackerHit rotatedStereoHit : track.getTrackerHits()) {
-                    stereoHitPosition = ((HelicalTrackHit) rotatedStereoHit).getCorrectedPosition();
+                    Hep3Vector stereoHitPosition = ((HelicalTrackHit) rotatedStereoHit).getCorrectedPosition();
                     if(lastStereoHitPosition != null) {
                         if(lastStereoHitPosition.x() < stereoHitPosition.x() )
                             lastStereoHitPosition = stereoHitPosition;
@@ -97,18 +105,51 @@
                         lastStereoHitPosition = stereoHitPosition;
                     }
                 }
+                
+                /*
+                for (TrackerHit rotatedStereoHit : track.getTrackerHits()) {
+                    Hep3Vector stereoHitPosition = ((HelicalTrackHit) rotatedStereoHit).getCorrectedPosition();
+                    RawTrackerHit rawhit = (RawTrackerHit) rotatedStereoHit.getRawHits().get(0);
+                    HpsSiSensor sensor = (HpsSiSensor) rawhit.getDetectorElement();
+                    int layer = HPSTrackerBuilder.getLayerFromVolumeName(sensor.getName());
+                    if(layer == 4) {
+                        if(HPSTrackerBuilder.isTopFromName(sensor.getName())) {
+                            if(HPSTrackerBuilder.isAxialFromName(sensor.getName())) {
+                                lastStereoHitPosition = stereoHitPosition;
+                                System.out.printf("\"Last hit\": %s %s: layer %d %s\n", stereoHitPosition.toString(), sensor.getName(), sensor.getLayerNumber(), sensor.isAxial()?"axial":"stereo");
+                                
+                                break;
+                            }
+                        } else {
+                            if(!HPSTrackerBuilder.isAxialFromName(sensor.getName())) {
+                                lastStereoHitPosition = stereoHitPosition;
+                                System.out.printf("\"Last hit\": %s %s: layer %d %s\n", stereoHitPosition.toString(), sensor.getName(), sensor.getLayerNumber(), sensor.isAxial()?"axial":"stereo");
+                                break;
+                            }
+                        }
+                    }
+                }
+                */
+                
+                if( lastStereoHitPosition == null) 
+                    throw new RuntimeException("No last hit found!");
+
+                //System.out.printf("\"Last hit position found\": %s \n",lastStereoHitPosition.toString());
+                
+                Hep3Vector trackPositionIP = TrackUtils.extrapolateTrack(stateIP, lastStereoHitPosition.x());
+                Hep3Vector trackPositionLast = TrackUtils.extrapolateTrack(stateLast, lastStereoHitPosition.x());
+
+                double xResidualIP = trackPositionIP.x() - lastStereoHitPosition.y();
+                double yResidualIP = trackPositionIP.y() - lastStereoHitPosition.z();
+
+                double xResidualLast = trackPositionLast.x() - lastStereoHitPosition.y();
+                double yResidualLast = trackPositionLast.y() - lastStereoHitPosition.z();
 
                 //System.out.printf("Found last stereo hit at %s\n",lastStereoHitPosition.toString());
+                //System.out.printf("trackPositionIP   %s\n",trackPositionIP.toString());
+                //System.out.printf("trackPositionLast %s\n",trackPositionLast.toString());
 
-                Hep3Vector trackPositionIP = TrackUtils.extrapolateTrack(stateIP, stereoHitPosition.x());
-                Hep3Vector trackPositionLast = TrackUtils.extrapolateTrack(stateLast, stereoHitPosition.x());
-
-                double xResidualIP = trackPositionIP.x() - stereoHitPosition.y();
-                double yResidualIP = trackPositionIP.y() - stereoHitPosition.z();
-
-                double xResidualLast = trackPositionLast.x() - stereoHitPosition.y();
-                double yResidualLast = trackPositionLast.y() - stereoHitPosition.z();
-
+                
                 res_IP_Y.fill(yResidualIP);
                 res_IP_X.fill(xResidualIP);
                 res_Last_Y.fill(yResidualLast);