Print

Print


Commit in hps-java/src/main on MAIN
java/org/lcsim/hps/recon/tracking/TrackUtils.java+28-11.32 -> 1.33
java/org/lcsim/hps/users/phansson/TwoTrackAnlysis.java+18-781.25 -> 1.26
resources/org/lcsim/hps/steering/users/phansson/TwoTrackAnalysis.lcsim+4-61.7 -> 1.8
+50-85
3 modified files
Moving non-bend track interface to utils and cleaning up

hps-java/src/main/java/org/lcsim/hps/recon/tracking
TrackUtils.java 1.32 -> 1.33
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;
+    }
+    
 }
 
 

hps-java/src/main/java/org/lcsim/hps/users/phansson
TwoTrackAnlysis.java 1.25 -> 1.26
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;

hps-java/src/main/resources/org/lcsim/hps/steering/users/phansson
TwoTrackAnalysis.lcsim 1.7 -> 1.8
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>
CVSspam 0.2.12


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