Author: [log in to unmask] Date: Mon Jan 4 17:44:48 2016 New Revision: 4081 Log: Mostly a commit as a consequence of the restructuring and refactoring of old classes. Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackingReconPlots.java java/trunk/recon/src/main/java/org/hps/recon/vertexing/TwoTrackFringeVertexer.java Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackingReconPlots.java ============================================================================= --- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackingReconPlots.java (original) +++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/TrackingReconPlots.java Mon Jan 4 17:44:48 2016 @@ -12,14 +12,17 @@ import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; + import static org.hps.monitoring.drivers.trackrecon.PlotAndFitUtilities.plot; -import org.hps.recon.tracking.HPSTrack; + +import org.hps.recon.tracking.HpsHelicalTrackFit; +import org.hps.recon.tracking.TrackUtils; import org.lcsim.event.Cluster; - import org.lcsim.event.EventHeader; import org.lcsim.event.LCIOParameters.ParameterName; 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.HelicalTrackFit; import org.lcsim.geometry.Detector; @@ -267,10 +270,12 @@ SeedTrack stEle = (SeedTrack) trk; SeedCandidate seedEle = stEle.getSeedCandidate(); HelicalTrackFit ht = seedEle.getHelix(); - HPSTrack hpstrk = new HPSTrack(ht); + HpsHelicalTrackFit hpstrk = new HpsHelicalTrackFit(ht); double svt_l12 = 900.00;//mm ~approximately...this doesn't matter much double ecal_face = 1393.00;//mm ~approximately ... this matters! Should use typical shower depth...or, once have cluster match, use that value of Z - Hep3Vector posAtEcal = hpstrk.getPositionAtZMap(svt_l12, ecal_face, 5.0, event.getDetector().getFieldMap())[0]; + TrackState stateAtEcal = TrackUtils.extrapolateTrackUsingFieldMap(trk, svt_l12, ecal_face, 5.0, event.getDetector().getFieldMap()); + Hep3Vector posAtEcal = new BasicHep3Vector(stateAtEcal.getReferencePoint()); + //Hep3Vector posAtEcal = hpstrk.getPositionAtZMap(svt_l12, ecal_face, 5.0, event.getDetector().getFieldMap())[0]; List<Cluster> clusters = event.get(Cluster.class, ecalCollectionName); if (clusters != null) { if (debug) @@ -282,7 +287,8 @@ Hep3Vector clusterPos = new BasicHep3Vector(clust.getPosition()); double zCluster = clusterPos.z(); //improve the extrapolation...use the reconstructed cluster z-position - posAtEcal = hpstrk.getPositionAtZMap(svt_l12, zCluster, 5.0, event.getDetector().getFieldMap())[0]; + stateAtEcal = TrackUtils.extrapolateTrackUsingFieldMap(trk, svt_l12, zCluster, 5.0, event.getDetector().getFieldMap()); + posAtEcal = new BasicHep3Vector(stateAtEcal.getReferencePoint()); double eOverP = clust.getEnergy() / pmag; double dx = posAtEcal.x() - clusterPos.x(); double dy = posAtEcal.y() - clusterPos.y(); Modified: java/trunk/recon/src/main/java/org/hps/recon/vertexing/TwoTrackFringeVertexer.java ============================================================================= --- java/trunk/recon/src/main/java/org/hps/recon/vertexing/TwoTrackFringeVertexer.java (original) +++ java/trunk/recon/src/main/java/org/hps/recon/vertexing/TwoTrackFringeVertexer.java Mon Jan 4 17:44:48 2016 @@ -4,14 +4,14 @@ import hep.physics.vec.Hep3Vector; import org.hps.recon.tracking.BeamlineConstants; -import org.hps.recon.tracking.HPSTrack; +import org.hps.recon.tracking.HpsHelicalTrackFit; import org.hps.recon.tracking.HelixConverter; -import org.hps.recon.tracking.StraightLineTrack; +import org.hps.recon.tracking.TrackUtils; import org.lcsim.event.Track; import org.lcsim.fit.helicaltrack.HelicalTrackFit; import org.lcsim.fit.helicaltrack.HelixUtils; +import org.lcsim.geometry.FieldMap; import org.lcsim.recon.tracking.seedtracker.SeedTrack; -import org.lcsim.util.swim.Helix; /** * @@ -20,38 +20,42 @@ * @author phansson * */ + public class TwoTrackFringeVertexer extends TwoTrackVertexer { protected HelixConverter converter = new HelixConverter(0.); - public void setTracks(Track track1, Track track2) { + public void setTracks(Track track1, Track track2, FieldMap fieldMap) { SeedTrack s1 = (SeedTrack) track1; HelicalTrackFit htf1 = s1.getSeedCandidate().getHelix(); - HPSTrack hpstrk1 = new HPSTrack(htf1); + HpsHelicalTrackFit hpstrk1 = new HpsHelicalTrackFit(htf1); SeedTrack s2 = (SeedTrack) track2; HelicalTrackFit htf2 = s2.getSeedCandidate().getHelix(); - HPSTrack hpstrk2 = new HPSTrack(htf2); + HpsHelicalTrackFit hpstrk2 = new HpsHelicalTrackFit(htf2); boolean debug = false; + + Hep3Vector posAtConv1 = new BasicHep3Vector( TrackUtils.extrapolateTrackUsingFieldMap(track1, 100.0, BeamlineConstants.HARP_POSITION_TESTRUN, 5.0, fieldMap).getReferencePoint()); + Hep3Vector posAtConv2 = new BasicHep3Vector( TrackUtils.extrapolateTrackUsingFieldMap(track2, 100.0, BeamlineConstants.HARP_POSITION_TESTRUN, 5.0, fieldMap).getReferencePoint()); + + //FIXME the straight line objects are not working - Hep3Vector posAtConv1 = hpstrk1.getPositionAtZMap(100.0, BeamlineConstants.HARP_POSITION_TESTRUN, 5.0)[0]; - Hep3Vector posAtConv2 = hpstrk2.getPositionAtZMap(100.0, BeamlineConstants.HARP_POSITION_TESTRUN, 5.0)[0]; + //StraightLineTrack slt1_conv = converter.Convert((Helix)hpstrk1.getTrajectory()); + //StraightLineTrack slt2_conv = converter.Convert((Helix)hpstrk2.getTrajectory()); + + //A1 = new BasicHep3Vector(slt1_conv.x0(),slt1_conv.y0(),slt1_conv.z0()); + //B1 = new BasicHep3Vector(slt2_conv.x0(),slt2_conv.y0(),slt2_conv.z0()); - StraightLineTrack slt1_conv = converter.Convert((Helix)hpstrk1.getTrajectory()); - StraightLineTrack slt2_conv = converter.Convert((Helix)hpstrk2.getTrajectory()); + //double YZAtConv1[] = slt1_conv.getYZAtX(BeamlineConstants.HARP_POSITION_TESTRUN); + //double YZAtConv2[] = slt2_conv.getYZAtX(BeamlineConstants.HARP_POSITION_TESTRUN); - A1 = new BasicHep3Vector(slt1_conv.x0(),slt1_conv.y0(),slt1_conv.z0()); - B1 = new BasicHep3Vector(slt2_conv.x0(),slt2_conv.y0(),slt2_conv.z0()); - - double YZAtConv1[] = slt1_conv.getYZAtX(BeamlineConstants.HARP_POSITION_TESTRUN); - double YZAtConv2[] = slt2_conv.getYZAtX(BeamlineConstants.HARP_POSITION_TESTRUN); + //A2 = new BasicHep3Vector(BeamlineConstants.HARP_POSITION_TESTRUN,YZAtConv1[0],YZAtConv1[1]); + //B2 = new BasicHep3Vector(BeamlineConstants.HARP_POSITION_TESTRUN,YZAtConv2[0],YZAtConv2[1]); - A2 = new BasicHep3Vector(BeamlineConstants.HARP_POSITION_TESTRUN,YZAtConv1[0],YZAtConv1[1]); - B2 = new BasicHep3Vector(BeamlineConstants.HARP_POSITION_TESTRUN,YZAtConv2[0],YZAtConv2[1]); if(debug) { System.out.printf("%s: original track1 direction at x=0 %s \n",this.getClass().getSimpleName(),HelixUtils.Direction(hpstrk1,0.).toString()); System.out.printf("%s: original track2 direction at x=0 %s \n",this.getClass().getSimpleName(),HelixUtils.Direction(hpstrk2,0.).toString()); - System.out.printf("%s: track1 direction at conv %s \n",this.getClass().getSimpleName(),hpstrk1.getTrajectory().getUnitTangentAtLength(0.).toString()); - System.out.printf("%s: track2 direction at conv %s \n",this.getClass().getSimpleName(),hpstrk2.getTrajectory().getUnitTangentAtLength(0.).toString()); + //System.out.printf("%s: track1 direction at conv %s \n",this.getClass().getSimpleName(),hpstrk1.getTrajectory().getUnitTangentAtLength(0.).toString()); + //System.out.printf("%s: track2 direction at conv %s \n",this.getClass().getSimpleName(),hpstrk2.getTrajectory().getUnitTangentAtLength(0.).toString()); System.out.printf("%s: pos at converter track1 %s \n",this.getClass().getSimpleName(),posAtConv1.toString());