Commit in hps-java/src/main on MAIN | |||
java/org/lcsim/hps/recon/tracking/TrackUtils.java | +28 | -1 | 1.32 -> 1.33 |
java/org/lcsim/hps/users/phansson/TwoTrackAnlysis.java | +18 | -78 | 1.25 -> 1.26 |
resources/org/lcsim/hps/steering/users/phansson/TwoTrackAnalysis.lcsim | +4 | -6 | 1.7 -> 1.8 |
+50 | -85 |
Moving non-bend track interface to utils and cleaning up
diff -u -r1.32 -r1.33 --- TrackUtils.java 15 Oct 2013 00:57:24 -0000 1.32 +++ TrackUtils.java 16 Oct 2013 19:50:51 -0000 1.33 @@ -5,6 +5,7 @@
import hep.physics.vec.BasicHep3Vector; import hep.physics.vec.Hep3Matrix; import hep.physics.vec.Hep3Vector;
+import hep.physics.vec.SpacePoint;
import hep.physics.vec.VecOp; import java.util.ArrayList;
@@ -31,16 +32,19 @@
import org.lcsim.fit.helicaltrack.MultipleScatter; import org.lcsim.hps.event.BeamlineConstants; import org.lcsim.hps.event.HPSTransformations;
+import org.lcsim.hps.recon.vertexing.HelixConverter; +import org.lcsim.hps.recon.vertexing.StraightLineTrack;
import org.lcsim.hps.users.phansson.WTrack; import org.lcsim.recon.tracking.seedtracker.SeedCandidate; import org.lcsim.recon.tracking.seedtracker.SeedTrack;
+import org.lcsim.util.swim.Helix;
/** * Assorted helper functions for the track and helix objects in lcsim. * Re-use as much of HelixUtils as possible. * * @author Omar Moreno <[log in to unmask]>
- * @version $Id: TrackUtils.java,v 1.32 2013/10/15 00:57:24 phansson Exp $
+ * @version $Id: TrackUtils.java,v 1.33 2013/10/16 19:50:51 phansson Exp $
* TODO: Switch to tracking/LCsim coordinates for the extrapolation output! */
@@ -705,6 +709,29 @@
HelicalTrackFit htf = new HelicalTrackFit(par, cov, new double[2], new int[2], null, null); return htf; }
+ + public static StraightLineTrack findSLTAtZ(Track trk1, double zVal, boolean useFringe) { + SeedTrack s1 = (SeedTrack) trk1; + HelicalTrackFit htf1 = s1.getSeedCandidate().getHelix(); + HPSTrack hpstrk1 = new HPSTrack(htf1); + Hep3Vector pos1; + if(useFringe) { + pos1 = hpstrk1.getPositionAtZMap(100.0, zVal, 5.0)[0]; + } else { + pos1 = TrackUtils.extrapolateTrack(trk1,zVal); + } + //System.out.printf("%s: Position1 at edge of fringe %s\n",this.getClass().getSimpleName(),pos1.toString()); + Helix traj = (Helix)hpstrk1.getTrajectory(); + if(traj==null) { + SpacePoint r0 = new SpacePoint(HelixUtils.PointOnHelix(htf1,0)); + traj = new Helix(r0,htf1.R(), htf1.phi0(), Math.atan(htf1.slope())); + } + HelixConverter converter = new HelixConverter(0.); + StraightLineTrack slt1 =converter.Convert(traj); + //System.out.printf("%s: straight line track: x0=%f,y0=%f,z0=%f dz/dx=%f dydx=%f targetY=%f targetZ=%f \n",this.getClass().getSimpleName(),slt1.x0(),slt1.y0(),slt1.z0(),slt1.dzdx(),slt1.dydx(),slt1.TargetYZ()[0],slt1.TargetYZ()[1]); + return slt1; + } +
}
diff -u -r1.25 -r1.26 --- TwoTrackAnlysis.java 15 Oct 2013 00:57:24 -0000 1.25 +++ TwoTrackAnlysis.java 16 Oct 2013 19:50:51 -0000 1.26 @@ -102,7 +102,7 @@
private IHistogram1D _trk_y_at_conv_bot_neg_fr; private IHistogram1D _trk_z_at_conv_bot_neg_fr;
- public class CmpTrack implements Comparable<CmpTrack> {
+ private class CmpTrack implements Comparable<CmpTrack> {
private Track _track; public CmpTrack(Track track) { _track = track;
@@ -176,12 +176,9 @@
List<Track> tracklist = null; if(event.hasCollection(Track.class,trackCollectionName)) { tracklist = event.get(Track.class, trackCollectionName);
- if(_debug) - System.out.println(this.getClass().getSimpleName() + ": Number of Tracks = " + tracklist.size() + " in event " + event.getEventNumber());
+ if(_debug) System.out.println(this.getClass().getSimpleName() + ": Number of Tracks = " + tracklist.size() + " in event " + event.getEventNumber());
} else {
- if(_debug) { - System.out.println(this.getClass().getSimpleName() + ": No track collection in event " + event.getEventNumber()); - }
+ if(_debug) System.out.println(this.getClass().getSimpleName() + ": No track collection in event " + event.getEventNumber());
return; }
@@ -216,30 +213,10 @@
} Collections.sort(tracks);
- - if(_debug) { - CmpTrack trk_prev = null; - for(CmpTrack trk:tracks) { - if(trk_prev!=null) { - if(trk_prev._track.getTrackStates().get(0).getMomentum()[0]<trk._track.getTrackStates().get(0).getMomentum()[0]) { - //throw new RuntimeException(String.format("%s: ERROR prev px=%f trk=%f",this.getClass().getSimpleName(),trk_prev._track.getTrackStates().get(0).getMomentum()[0],trk._track.getTrackStates().get(0).getMomentum()[0])); - System.out.printf("%s\n",String.format("%s: ERROR prev px=%f trk=%f",this.getClass().getSimpleName(),trk_prev._track.getTrackStates().get(0).getMomentum()[0],trk._track.getTrackStates().get(0).getMomentum()[0])); - } else { - System.out.printf("%s\n",String.format("%s: OK prev px=%f trk=%f",this.getClass().getSimpleName(),trk_prev._track.getTrackStates().get(0).getMomentum()[0],trk._track.getTrackStates().get(0).getMomentum()[0])); - } - } - trk_prev = trk; - - } - }
Hep3Vector vtxPos = null; Hep3Vector vtxPosFringe = null; Hep3Vector vtxPosNonBend = null;
- - - -
if(tracks.size()>1) { Track trk1 = tracks.get(0)._track;
@@ -247,23 +224,24 @@
this.vertexer.setTracks(trk1, trk2); vtxPos = this.vertexer.getVertex();
- if(this._debug)
+ vtxPosFringe = this.vertexer.getVertexWithFringe(); + + if(this._debug) {
System.out.printf("%s: vtxPos=%s\n", this.getClass().getSimpleName(),vtxPos.toString());
+ System.out.printf("%s: vtxPosFringe=%s\n", this.getClass().getSimpleName(),vtxPosFringe.toString()); + } +
if(vtxPos.x() != vtxPos.x()) { System.out.printf("%s: vtxPos is NaN -> Skip\n",this.getClass().getSimpleName()); vtxPos = null; }
- - vtxPosFringe = this.vertexer.getVertexWithFringe(); - if(this._debug) - System.out.printf("%s: vtxPosFringe=%s\n", this.getClass().getSimpleName(),vtxPosFringe.toString());
if(vtxPosFringe.x() != vtxPosFringe.x()) { System.out.printf("%s: vtxPosFringe is NaN -> Skip\n",this.getClass().getSimpleName()); vtxPos = null; }
- - StraightLineTrack[] slts = this.getSLTs(trk1, trk2, false); - double zAtCross = this.getCrossingS(trk1, trk2, false);
+ boolean useFringe = false; + StraightLineTrack[] slts = this.getSLTs(trk1, trk2, useFringe); + double zAtCross = this.getCrossingS(trk1, trk2);
double[] xyAtZ1 = slts[0].calculateXYAtZ(zAtCross); double[] xyAtZ2 = slts[1].calculateXYAtZ(zAtCross);
@@ -742,27 +720,11 @@
HashMap<Integer,HelicalTrackHit> map = new HashMap<Integer,HelicalTrackHit>(); for(TrackerHit hit : hits) { HelicalTrackHit hth = (HelicalTrackHit) hit;
- HelicalTrackCross htc = (HelicalTrackCross) hth; - //System.out.printf("%s: getHitMap: hth position before trkdir: (%.3f,%.3f,%.3f)\n",this.getClass().getSimpleName(),hth.x(),hth.y(),hth.z()); - //htc.setTrackDirection(helix); - //System.out.printf("%s: getHitMap: hth position after trkdir: (%.3f,%.3f,%.3f)\n",this.getClass().getSimpleName(),hth.x(),hth.y(),hth.z());
map.put(hth.Layer(), hth); } return map; }
- private HashMap<Integer,HelicalTrackStrip> getStripHitMap(List<TrackerHit> hits) { - HashMap<Integer,HelicalTrackStrip> map = new HashMap<Integer,HelicalTrackStrip>(); - for(TrackerHit hit : hits) { - HelicalTrackHit hth = (HelicalTrackHit) hit; - HelicalTrackCross htc = (HelicalTrackCross) hth; - HelicalTrackStrip s1 = htc.getStrips().get(0); - HelicalTrackStrip s2 = htc.getStrips().get(1); - map.put(s1.layer(), s1); - map.put(s2.layer(), s2); - } - return map; - }
private HashMap<Integer,List<HelicalTrackStrip>> getStripHitsMap(List<TrackerHit> hits) { HashMap<Integer,List<HelicalTrackStrip>> map = new HashMap<Integer,List<HelicalTrackStrip>>();
@@ -820,9 +782,6 @@
return map; }
- private int[] getNtracks(List<CmpTrack> tracks) { - return this.getNtracks(tracks, 0.); - }
private int[] getNtracks(List<CmpTrack> tracks, double min_px) { //System.out.printf("%s: getNtracks for %d tracks with min_px=%.3f \n",this.getClass().getSimpleName(),tracks.size(),min_px); int n[] = {0,0};
@@ -978,7 +937,7 @@
* Find the path length where the two helix cross in the non-bend plane */
- public double getCrossingS(Track trk1, Track trk2, boolean useFringe) {
+ private double getCrossingS(Track trk1, Track trk2) {
double slope_1 = ((SeedTrack)trk1).getSeedCandidate().getHelix().slope(); double slope_2 = ((SeedTrack)trk2).getSeedCandidate().getHelix().slope(); double z0_1 = ((SeedTrack)trk1).getSeedCandidate().getHelix().z0();
@@ -990,39 +949,20 @@
}
- public StraightLineTrack[] getSLTs(Track trk1, Track trk2, boolean useFringe) {
+ private StraightLineTrack[] getSLTs(Track trk1, Track trk2, boolean useFringe) {
// find the point on the x- and y-axis by // 1) go outside the fringe region // 2) assume straight lines // 3) solve for the position where the z-position is at the crossing point double zStart = useFringe==true ? -100. : 0.;
- StraightLineTrack slt1 = this.findSLTAtZ(trk1,zStart,useFringe); - StraightLineTrack slt2 = this.findSLTAtZ(trk2,zStart,useFringe);
+ StraightLineTrack slt1 = TrackUtils.findSLTAtZ(trk1,zStart,useFringe); + StraightLineTrack slt2 = TrackUtils.findSLTAtZ(trk2,zStart,useFringe);
StraightLineTrack[] vv = {slt1,slt2}; return vv; }
- public StraightLineTrack findSLTAtZ(Track trk1, double zVal, boolean useFringe) { - SeedTrack s1 = (SeedTrack) trk1; - HelicalTrackFit htf1 = s1.getSeedCandidate().getHelix(); - HPSTrack hpstrk1 = new HPSTrack(htf1); - Hep3Vector pos1; - if(useFringe) { - pos1 = hpstrk1.getPositionAtZMap(100.0, zVal, 5.0)[0]; - } else { - pos1 = TrackUtils.extrapolateTrack(trk1,zVal); - } - //System.out.printf("%s: Position1 at edge of fringe %s\n",this.getClass().getSimpleName(),pos1.toString()); - Helix traj = (Helix)hpstrk1.getTrajectory(); - if(traj==null) { - SpacePoint r0 = new SpacePoint(HelixUtils.PointOnHelix(htf1,0)); - traj = new Helix(r0,htf1.R(), htf1.phi0(), Math.atan(htf1.slope())); - } - StraightLineTrack slt1 = this.vertexer.converter().Convert(traj); - //System.out.printf("%s: straight line track: x0=%f,y0=%f,z0=%f dz/dx=%f dydx=%f targetY=%f targetZ=%f \n",this.getClass().getSimpleName(),slt1.x0(),slt1.y0(),slt1.z0(),slt1.dzdx(),slt1.dydx(),slt1.TargetYZ()[0],slt1.TargetYZ()[1]); - return slt1; - }
+
/*
@@ -1032,7 +972,7 @@
* slope: slope of track in SZ plane * z0: z-coordinate at which S=0 */
- public double getPathLengthCrossingPoint(double slope_1,double z0_1,double slope_2,double z0_2) {
+ private double getPathLengthCrossingPoint(double slope_1,double z0_1,double slope_2,double z0_2) {
double s; //path length s = (z0_1-z0_2)/(slope_2-slope_1); return s;
diff -u -r1.7 -r1.8 --- TwoTrackAnalysis.lcsim 11 Oct 2013 22:15:59 -0000 1.7 +++ TwoTrackAnalysis.lcsim 16 Oct 2013 19:50:51 -0000 1.8 @@ -6,7 +6,7 @@
--> </inputFiles> <control>
- <numberOfEvents>1000</numberOfEvents>
+ <numberOfEvents>-1</numberOfEvents>
<printInputFiles>true</printInputFiles> <printDriversDetailed>true</printDriversDetailed> </control>
@@ -25,8 +25,8 @@
<!-- <driver name="TruthMomentumAnalysis"/> --> <!-- <driver name="HelicalTrackHitResidualsDriver"/> --> <!-- <driver name="LCIOWriter"/> -->
-<!-- <driver name="TwoTrackAnalysis"/> --> - <driver name="GBLDriver"/>
+ <driver name="TwoTrackAnalysis"/> +<!-- <driver name="GBLDriver"/> -->
<!-- <driver name="PrintGeometryDriver"/>-->
@@ -44,7 +44,7 @@
<driver name="TwoTrackAnalysis" type="org.lcsim.hps.users.phansson.TwoTrackAnlysis"> <debug>false</debug>
- <hideFrame>false</hideFrame>
+ <hideFrame>true</hideFrame>
<outputPlotFileName></outputPlotFileName> <outputNameTextTuple>${outputFile}</outputNameTextTuple> <trackCollectionName>MatchedTracks</trackCollectionName>
@@ -89,7 +89,6 @@
<driver name="HelicalTrackHitDriver" type="org.lcsim.hps.recon.tracking.HelicalTrackHitDriver"> <debug>false</debug>
- <layerGeometryType>Split</layerGeometryType>
<maxSeperation>20.0</maxSeperation> <tolerance>1.0</tolerance> </driver>
@@ -97,7 +96,6 @@
type="org.lcsim.hps.recon.tracking.TrackerReconDriver"> <debug>false</debug> <strategyResource>/org/lcsim/hps/recon/tracking/strategies/HPS-TestRun-357.xml</strategyResource>
- <useHPSMaterialManager>true</useHPSMaterialManager>
</driver> <driver name="EcalRawConverter" type="org.lcsim.hps.recon.ecal.EcalRawConverterDriver"> <ecalCollectionName>EcalCalHits</ecalCollectionName>
Use REPLY-ALL to reply to list
To unsubscribe from the LCD-CVS list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=LCD-CVS&A=1