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);
|