LISTSERV mailing list manager LISTSERV 16.5

Help for HPS-SVN Archives


HPS-SVN Archives

HPS-SVN Archives


HPS-SVN@LISTSERV.SLAC.STANFORD.EDU


View:

Message:

[

First

|

Previous

|

Next

|

Last

]

By Topic:

[

First

|

Previous

|

Next

|

Last

]

By Author:

[

First

|

Previous

|

Next

|

Last

]

Font:

Proportional Font

LISTSERV Archives

LISTSERV Archives

HPS-SVN Home

HPS-SVN Home

HPS-SVN  January 2016

HPS-SVN January 2016

Subject:

r4080 - in /java/trunk/users/src/main/java/org/hps/users: mgraham/ phansson/

From:

[log in to unmask]

Reply-To:

Notification of commits to the hps svn repository <[log in to unmask]>

Date:

Tue, 5 Jan 2016 01:43:52 -0000

Content-Type:

text/plain

Parts/Attachments:

Parts/Attachments

text/plain (712 lines)

Author: [log in to unmask]
Date: Mon Jan  4 17:43:47 2016
New Revision: 4080

Log:
Mostly a commit as a consequence of the restructuring and refactoring of old classes.

Modified:
    java/trunk/users/src/main/java/org/hps/users/mgraham/ExamplePlotter.java
    java/trunk/users/src/main/java/org/hps/users/mgraham/TrackExtrapolationAnalysis.java
    java/trunk/users/src/main/java/org/hps/users/mgraham/TwoTrackAnalysis.java
    java/trunk/users/src/main/java/org/hps/users/phansson/DataTrackerFakeHitDriver.java
    java/trunk/users/src/main/java/org/hps/users/phansson/ECalExtrapolationDriver.java
    java/trunk/users/src/main/java/org/hps/users/phansson/ParticleHelixProducer.java
    java/trunk/users/src/main/java/org/hps/users/phansson/ROOTFlatTupleDriver.java
    java/trunk/users/src/main/java/org/hps/users/phansson/TrackingReconstructionPlots.java

Modified: java/trunk/users/src/main/java/org/hps/users/mgraham/ExamplePlotter.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/mgraham/ExamplePlotter.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/mgraham/ExamplePlotter.java	Mon Jan  4 17:43:47 2016
@@ -4,6 +4,7 @@
 import hep.aida.IHistogram1D;
 import hep.aida.IPlotter;
 import hep.aida.IPlotterStyle;
+import hep.physics.vec.BasicHep3Vector;
 import hep.physics.vec.Hep3Vector;
 
 import java.io.IOException;
@@ -12,9 +13,10 @@
 import java.util.logging.Logger;
 
 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.EventHeader;
 import org.lcsim.event.Track;
 import org.lcsim.fit.helicaltrack.HelicalTrackFit;
@@ -76,15 +78,9 @@
             aida.histogram1D("Track Momentum (Pz)").fill(trk.getTrackStates().get(0).getMomentum()[0]);
             aida.histogram1D("Track Chi2").fill(trk.getChi2());
 
-            SeedTrack stEle = (SeedTrack) trk;
-            SeedCandidate seedEle = stEle.getSeedCandidate();
-            HelicalTrackFit ht = seedEle.getHelix();
-            HelixConverter converter = new HelixConverter(0);
-            StraightLineTrack slt = converter.Convert(ht);
-            HPSTrack hpstrack = new HPSTrack(ht);
-            Hep3Vector[] trkatconver = hpstrack.getPositionAtZMap(100, BeamlineConstants.HARP_POSITION_TESTRUN, 1);
-            aida.histogram1D("X (mm) @ Converter").fill(trkatconver[0].x()); // y tracker frame?
-            aida.histogram1D("Y (mm) @ Converter").fill(trkatconver[0].y()); // z tracker frame?
+            Hep3Vector trkatconver = new BasicHep3Vector(TrackUtils.extrapolateTrackUsingFieldMap(trk, 100.0, BeamlineConstants.HARP_POSITION_TESTRUN, 5.0, event.getDetector().getFieldMap()).getReferencePoint());
+            aida.histogram1D("X (mm) @ Converter").fill(trkatconver.x()); // y tracker frame?
+            aida.histogram1D("Y (mm) @ Converter").fill(trkatconver.y()); // z tracker frame?
 
         }
     }

Modified: java/trunk/users/src/main/java/org/hps/users/mgraham/TrackExtrapolationAnalysis.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/mgraham/TrackExtrapolationAnalysis.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/mgraham/TrackExtrapolationAnalysis.java	Mon Jan  4 17:43:47 2016
@@ -5,13 +5,14 @@
 import hep.aida.IHistogram2D;
 import hep.aida.IPlotter;
 import hep.aida.IPlotterStyle;
+import hep.physics.vec.BasicHep3Vector;
 import hep.physics.vec.Hep3Vector;
 
 import java.util.List;
 import java.util.Map;
 
 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;
@@ -99,10 +100,9 @@
                 charge = 0;//make plot look pretty
 //            System.out.println("Charge = " + charge + "; isTop = " + isTop);
 
-            HPSTrack hpstrk=null;
-                hpstrk = new HPSTrack(ht);
-//            Hep3Vector posAtConv = hpstrk.getPositionAtZ(zAtConverter, -101, -100, 0.1);
-            Hep3Vector posAtConv = hpstrk.getPositionAtZMap(100,BeamlineConstants.HARP_POSITION_TESTRUN , 5.0)[0];
+            HpsHelicalTrackFit hpstrk=null;
+                hpstrk = new HpsHelicalTrackFit(ht);
+                Hep3Vector posAtConv = new BasicHep3Vector(TrackUtils.extrapolateTrackUsingFieldMap(trk, 100, BeamlineConstants.HARP_POSITION_TESTRUN, 5.0, event.getDetector().getFieldMap()).getReferencePoint());
             double useThisx=posAtConv.x();
             double useThisy=posAtConv.y();
             
@@ -123,7 +123,7 @@
                 aida.histogram1D("Negative Y (mm) @ Converter").fill(useThisy);
             }
 //            Hep3Vector posAtConvShort = hpstrk.getPositionAtZ(zAtConverter, -0.1, 0, 0.01);
-            Hep3Vector posAtConvShort = hpstrk.getPositionAtZMap(0,BeamlineConstants.HARP_POSITION_TESTRUN, 5.0)[0];
+            Hep3Vector posAtConvShort = new BasicHep3Vector(TrackUtils.extrapolateTrackUsingFieldMap(trk, 0, BeamlineConstants.HARP_POSITION_TESTRUN, 5.0, event.getDetector().getFieldMap()).getReferencePoint());
             aida.histogram2D("Extrapolated X: short vs long fringe").fill(posAtConvShort.x(), posAtConv.x());
             aida.histogram2D("Extrapolated Y: short vs long fringe").fill(posAtConvShort.y(), posAtConv.y());
 
@@ -144,7 +144,8 @@
 //                Hep3Vector posAtEcalHPS = hpstrk.getPositionAtZMap(750,zCluster, 5.0);
                 double zCluster=clust.getPosition()[2];
  //               double zCluster=1450.0;
-                 Hep3Vector posAtEcalHPS = hpstrk.getPositionAtZMap(750,zCluster, 5.0)[0];
+                Hep3Vector posAtEcalHPS = new BasicHep3Vector(TrackUtils.extrapolateTrackUsingFieldMap(trk, 750, zCluster, 5.0, event.getDetector().getFieldMap()).getReferencePoint());
+
                 Hep3Vector posAtEcalExtend= TrackUtils.extrapolateTrack(trk,zCluster);
                 aida.histogram2D("ECal Extrapolation X :  HPS vs Extend").fill( posAtEcalExtend.y(),posAtEcalHPS.x()-posAtEcalExtend.y());
                 aida.histogram2D("ECal Extrapolation Y :  HPS vs Extend").fill( posAtEcalExtend.z(),posAtEcalHPS.y()-posAtEcalExtend.z());

Modified: java/trunk/users/src/main/java/org/hps/users/mgraham/TwoTrackAnalysis.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/mgraham/TwoTrackAnalysis.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/mgraham/TwoTrackAnalysis.java	Mon Jan  4 17:43:47 2016
@@ -17,10 +17,12 @@
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
+import org.apache.commons.lang3.NotImplementedException;
 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.EventHeader;
 import org.lcsim.event.Track;
 import org.lcsim.event.TrackerHit;
@@ -273,10 +275,11 @@
             HelicalTrackFit ht = seedEle.getHelix();
             HelixConverter converter = new HelixConverter(0);
             StraightLineTrack slt = converter.Convert(ht);
-            HPSTrack hpstrack = new HPSTrack(ht);
-            Hep3Vector[] trkatconver = hpstrack.getPositionAtZMap(100, BeamlineConstants.HARP_POSITION_TESTRUN, 1);
-            aida.histogram1D("X (mm) @ Converter using Map").fill(trkatconver[0].x()); // y tracker frame?
-            aida.histogram1D("Y (mm) @ Converter using Map").fill(trkatconver[0].y()); // z tracker frame?
+            HpsHelicalTrackFit hpstrack = new HpsHelicalTrackFit(ht);
+            Hep3Vector trkatconver = new BasicHep3Vector(TrackUtils.extrapolateTrackUsingFieldMap(trk, 100, BeamlineConstants.HARP_POSITION_TESTRUN, 1, event.getDetector().getFieldMap()).getReferencePoint());
+
+            aida.histogram1D("X (mm) @ Converter using Map").fill(trkatconver.x()); // y tracker frame?
+            aida.histogram1D("Y (mm) @ Converter using Map").fill(trkatconver.y()); // z tracker frame?
             if (slt != null) {
                 aida.histogram1D("X (mm) @ Converter using SLT").fill(slt.getYZAtX(BeamlineConstants.HARP_POSITION_TESTRUN)[0]); // y tracker frame?
                 aida.histogram1D("Y (mm) @ Converter using SLT").fill(slt.getYZAtX(BeamlineConstants.HARP_POSITION_TESTRUN)[1]); // z tracker frame?
@@ -320,9 +323,9 @@
 //            HPSTrack hpstrack2 = new HPSTrack(ht2);
 //            Hep3Vector[] trkatconver2 = hpstrack2.getPositionAtZMap(100, BeamlineConstants.HARP_POSITION, 1);
 
-            HPSTrack hpstrack1 = new HPSTrack(ht1);
+            HpsHelicalTrackFit hpstrack1 = new HpsHelicalTrackFit(ht1);
             Hep3Vector[] trkatconver1 = {new BasicHep3Vector(), new BasicHep3Vector(0, 0, 0)};
-            HPSTrack hpstrack2 = new HPSTrack(ht2);
+            HpsHelicalTrackFit hpstrack2 = new HpsHelicalTrackFit(ht2);
             Hep3Vector[] trkatconver2 = {new BasicHep3Vector(), new BasicHep3Vector(0, 0, 0)};;
             if (isMC) {
                 double[] t1 = slt1.getYZAtX(BeamlineConstants.HARP_POSITION_TESTRUN);
@@ -330,8 +333,9 @@
                 trkatconver1[0] = new BasicHep3Vector(t1[0], t1[1], BeamlineConstants.HARP_POSITION_TESTRUN);
                 trkatconver2[0] = new BasicHep3Vector(t2[0], t2[1], BeamlineConstants.HARP_POSITION_TESTRUN);
             } else {
-                trkatconver1 = hpstrack1.getPositionAtZMap(100, BeamlineConstants.HARP_POSITION_TESTRUN, 1);
-                trkatconver2 = hpstrack2.getPositionAtZMap(100, BeamlineConstants.HARP_POSITION_TESTRUN, 1);
+                throw new NotImplementedException("Need to implement using TrackUtils to extrapolate tracks!");
+                //trkatconver1 = hpstrack1.getPositionAtZMap(100, BeamlineConstants.HARP_POSITION_TESTRUN, 1);
+                //trkatconver2 = hpstrack2.getPositionAtZMap(100, BeamlineConstants.HARP_POSITION_TESTRUN, 1);
             }
             List<TrackerHit> hitsOnTrack1 = trk1.getTrackerHits();
             int layer1;
@@ -508,9 +512,10 @@
                             posvec[1] = slt1.getYZAtX(z)[1];
                             posvec[2] = z;
                         } else {
-                            Hep3Vector[] trk1atz = hpstrack1.getPositionAtZMap(100, z, 1);
-                            posvec[0] = trk1atz[0].x();
-                            posvec[1] = trk1atz[0].y();
+                            Hep3Vector trk1atz = new BasicHep3Vector(TrackUtils.extrapolateTrackUsingFieldMap(trk1, 100, z, 1, event.getDetector().getFieldMap()).getReferencePoint());
+
+                            posvec[0] = trk1atz.x();
+                            posvec[1] = trk1atz.y();
                             posvec[2] = z;
                         }
                         Trk1.add(posvec);
@@ -592,9 +597,10 @@
                             posvec2[1] = slt2.getYZAtX(z)[1];
                             posvec2[2] = z;
                         } else {
-                            Hep3Vector[] trk2atz = hpstrack2.getPositionAtZMap(100, z, 1);
-                            posvec2[0] = trk2atz[0].x();
-                            posvec2[1] = trk2atz[0].y();
+                            Hep3Vector trk2atz = new BasicHep3Vector(TrackUtils.extrapolateTrackUsingFieldMap(trk2, 100, z, 1, event.getDetector().getFieldMap()).getReferencePoint());
+
+                            posvec2[0] = trk2atz.x();
+                            posvec2[1] = trk2atz.y();
                             posvec2[2] = z;
                         }
                         Trk2.add(posvec2);

Modified: java/trunk/users/src/main/java/org/hps/users/phansson/DataTrackerFakeHitDriver.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/phansson/DataTrackerFakeHitDriver.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/phansson/DataTrackerFakeHitDriver.java	Mon Jan  4 17:43:47 2016
@@ -17,7 +17,7 @@
 import java.util.Set;
 
 //===> import org.hps.conditions.deprecated.SvtUtils;
-import org.hps.recon.tracking.HPSTrack;
+import org.hps.recon.tracking.HpsHelicalTrackFit;
 import org.hps.recon.tracking.TrackUtils;
 import org.hps.recon.tracking.TrackerHitUtils;
 import org.lcsim.detector.IDetectorElement;
@@ -194,12 +194,12 @@
 
 
         // Obtain the tracks from the event
-        if (!event.hasCollection(HPSTrack.class, trackCollectionName)) {
+        if (!event.hasCollection(HpsHelicalTrackFit.class, trackCollectionName)) {
             this.printDebug("No HPSTracks were found, skipping event");
             simHits = null;
             return;
         }
-        List<HPSTrack> tracks = event.get(HPSTrack.class, trackCollectionName);
+        List<HpsHelicalTrackFit> tracks = event.get(HpsHelicalTrackFit.class, trackCollectionName);
 
         if (debug) {
             System.out.println(this.getClass().getSimpleName() + ": found " + tracks.size() + " tracks (" + this.trackCollectionName + ")");
@@ -223,13 +223,13 @@
             System.out.println(this.getClass().getSimpleName() + ": Add hits for " + tracks.size() + " tracks (" + this.trackCollectionName + ")");
         }
 
-        for (HPSTrack helix : tracks) {
+        for (HpsHelicalTrackFit helix : tracks) {
             if (debug) {
                 System.out.println(this.getClass().getSimpleName() + ": trying to add hits for this track");
             }
 
             // Get the MC Particle associated with this track
-            MCParticle mcParticle = helix.getMCParticle();
+            MCParticle mcParticle = helix.getMcParticle();
 
             if (debug) {
                 System.out.println(this.getClass().getSimpleName() + helix.toString());

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	Mon Jan  4 17:43:47 2016
@@ -11,62 +11,122 @@
 import hep.physics.vec.Hep3Vector;
 
 import java.util.List;
-
-import javax.swing.text.DefaultEditorKit.PasteAction;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
 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.LCRelation;
 import org.lcsim.event.Track;
 import org.lcsim.event.TrackState;
 import org.lcsim.event.TrackerHit;
+import org.lcsim.fit.helicaltrack.HelicalTrackCross;
 import org.lcsim.fit.helicaltrack.HelicalTrackHit;
+import org.lcsim.fit.helicaltrack.HelicalTrackStrip;
 import org.lcsim.geometry.Detector;
-import org.lcsim.geometry.compact.converter.HPSTrackerBuilder;
 import org.lcsim.util.Driver;
 import org.lcsim.util.aida.AIDA;
 
 /**
+ * 
+ * Compare residuals using updated track parameters from GBL.
+ * 
  * @author Per Hansson Adrian <[log in to unmask]>
  *
  */
 public class ECalExtrapolationDriver extends Driver {
-
+    
+    private static Logger logger = Logger.getLogger(ECalExtrapolationDriver.class.getName());
+
+    private double bfield; 
+    
     private AIDA aida = AIDA.defaultInstance();
+    IHistogram1D res_Seed_u;
+    IHistogram1D res_IP_u;
+    IHistogram1D res_Last_u;
+
+    IHistogram1D res_Seed_Y;
+    IHistogram1D res_Seed_X;
     IHistogram1D res_IP_Y;
     IHistogram1D res_IP_X;
     IHistogram1D res_Last_Y;
     IHistogram1D res_Last_X;
+    IHistogram1D res_IP_Last_diff_Y;
+    IHistogram1D res_IP_Last_diff_X;
+    IHistogram1D res_Seed_Last_diff_Y;
+    IHistogram1D res_Seed_Last_diff_X;
+    IHistogram1D res_IP_Last_diff_u;
+    IHistogram1D res_Seed_Last_diff_u;
     
     
     /**
      * 
      */
     public ECalExtrapolationDriver() {
-        // TODO Auto-generated constructor stub
+        logger.setLevel(Level.INFO);
     }
     
     @Override
     protected void detectorChanged(Detector arg0) {
+        
+        Hep3Vector bfieldVec = TrackUtils.getBField(arg0);
+        bfield = bfieldVec.y();
+        logger.info("bfieldVec " + bfieldVec.toString());
+
         aida.tree().cd("/");
         IAnalysisFactory fac = aida.analysisFactory();
         IPlotter plotter;
-        plotter = fac.createPlotterFactory().create("Residual");
+        plotter = fac.createPlotterFactory().create("Residual stereo hit");
         IPlotterStyle style = plotter.style();
         style.dataStyle().fillStyle().setColor("yellow");
         style.dataStyle().errorBarStyle().setVisible(false);
-        plotter.createRegions(2, 2);
+        plotter.createRegions(2, 3);
+        res_Seed_Y = aida.histogram1D("res_Seed_Y", 50, -5, 5);
+        res_Seed_X = aida.histogram1D("res_Seed_X", 50, -5, 5);
         res_IP_Y = aida.histogram1D("res_IP_Y", 50, -5, 5);
         res_IP_X = aida.histogram1D("res_IP_X", 50, -5, 5);
         res_Last_Y = aida.histogram1D("res_Last_Y", 50, -5, 5);
         res_Last_X = aida.histogram1D("res_Last_X", 50, -5, 5);
         plotter.region(0).plot(res_IP_Y);
-        plotter.region(1).plot(res_IP_X);
-        plotter.region(2).plot(res_Last_Y);
-        plotter.region(3).plot(res_Last_X);
+        plotter.region(3).plot(res_IP_X);
+        plotter.region(1).plot(res_Last_Y);
+        plotter.region(4).plot(res_Last_X);
+        plotter.region(2).plot(res_Seed_Y);
+        plotter.region(5).plot(res_Seed_X);
         plotter.show();
+
+        
+        IPlotter plotter1;
+        plotter1 = fac.createPlotterFactory().create("Residual local");
+        plotter1.setStyle(style);
+        plotter1.createRegions(1, 3);
+        res_Seed_u = aida.histogram1D("res_Seed_u", 50, -5, 5);
+        res_IP_u = aida.histogram1D("res_IP_u", 50, -5, 5);
+        res_Last_u = aida.histogram1D("res_Last_u", 50, -5, 5);
+        plotter1.region(0).plot(res_IP_u);
+        plotter1.region(1).plot(res_Last_u);
+        plotter1.region(2).plot(res_Seed_u);
+        plotter1.show();
+        
+        IPlotter plotter2;
+        plotter2 = fac.createPlotterFactory().create("Residual diffs");
+        plotter2.setStyle(style);
+        plotter2.createRegions(3, 2);
+        res_IP_Last_diff_Y = aida.histogram1D("res_IP_Last_diff_Y", 50, -5, 5);
+        res_IP_Last_diff_X = aida.histogram1D("res_IP_Last_diff_X", 50, -5, 5);
+        res_Seed_Last_diff_Y = aida.histogram1D("res_Seed_Last_diff_Y", 50, -5, 5);
+        res_Seed_Last_diff_X = aida.histogram1D("res_Seed_Last_diff_X", 50, -5, 5);
+        res_IP_Last_diff_u = aida.histogram1D("res_IP_Last_diff_u", 50, -5, 5);
+        res_Seed_Last_diff_u = aida.histogram1D("res_Seed_Last_diff_u", 50, -5, 5);
+        plotter2.region(0).plot(res_Seed_Last_diff_Y);
+        plotter2.region(2).plot(res_Seed_Last_diff_X);
+        plotter2.region(1).plot(res_IP_Last_diff_Y);
+        plotter2.region(3).plot(res_IP_Last_diff_X);
+        plotter2.region(4).plot(res_Seed_Last_diff_u);
+        plotter2.region(5).plot(res_IP_Last_diff_u);
+        plotter2.show();
     }
     
     protected void process(EventHeader event) {
@@ -76,14 +136,25 @@
     
     List<List<Track>> trackCollections = event.get(Track.class);
     
+    
+    logger.fine("Found " + trackCollections.size() + " track collections");
+    
+    // loop over all track collections
     for(List<Track> tracks : trackCollections) {
-        
+
+        logger.fine("Found " + tracks.size() + " tracks in this collection");
+
+        
+        // loop over all tracks
         for (Track track : tracks) {
             
+            logger.fine("Process track with " + track.getTrackerHits().size() + " hits and of type " + track.getType() + " GBL ? " + TrackType.isGBL(track.getType()));
+            
+            // require six stereo hits on the track
             if(track.getTrackerHits().size() != 6) 
                 continue;
             
-
+            // select GBL tracks
             if(TrackType.isGBL(track.getType())) {
 
                 TrackState stateIP = null;
@@ -93,48 +164,48 @@
                     if (state.getLocation() == TrackState.AtIP) stateIP = state;
                 }
 
-                
-                // find last 3D hit
-                Hep3Vector lastStereoHitPosition = null;
-                for (TrackerHit rotatedStereoHit : track.getTrackerHits()) {
-                    Hep3Vector stereoHitPosition = ((HelicalTrackHit) rotatedStereoHit).getCorrectedPosition();
-                    if(lastStereoHitPosition != null) {
-                        if(lastStereoHitPosition.x() < stereoHitPosition.x() )
-                            lastStereoHitPosition = stereoHitPosition;
-                    } else {
-                        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;
-                            }
+                // find seed track
+                Track seedTrack = null;
+                List<LCRelation> seedToGblRelation = event.get(LCRelation.class, "MatchedToGBLTrackRelations");
+                
+                if(seedToGblRelation == null)
+                    logger.warning("no LCRelation found!?");
+                else {
+                    for(LCRelation relation : seedToGblRelation) {
+                        if(relation.getTo().equals(track)) {
+                            seedTrack = (Track)relation.getFrom();
+                            break;
                         }
                     }
                 }
-                */
-                
-                if( lastStereoHitPosition == null) 
+                
+                // find last 3D hit
+                HelicalTrackHit lastHelicalTrackHit = null;
+                //HelicalTrackStrip
+                for (TrackerHit rotatedStereoHit : track.getTrackerHits()) {
+                    HelicalTrackHit hit = (HelicalTrackHit) rotatedStereoHit;
+                    if(lastHelicalTrackHit != null) {
+                        if(lastHelicalTrackHit.getCorrectedPosition().x() < hit.getCorrectedPosition().x() ) {
+                            lastHelicalTrackHit = hit;
+                        }
+                    } else {
+                        lastHelicalTrackHit = hit;
+                    }
+                }
+                
+                if( lastHelicalTrackHit == null) 
                     throw new RuntimeException("No last hit found!");
-
-                //System.out.printf("\"Last hit position found\": %s \n",lastStereoHitPosition.toString());
+                
+                Hep3Vector lastStereoHitPosition = lastHelicalTrackHit.getCorrectedPosition();
+                
+
+                // find the last strip cluster
+                // OK, I could be more rigorous but this should work 
+                List<HelicalTrackStrip> strips = ((HelicalTrackCross) lastHelicalTrackHit).getStrips();
+                HelicalTrackStrip lastStrip = strips.get(0).origin().x() > strips.get(1).origin().x() ? strips.get(0) : strips.get(1);
+                
+                Map<String,Double> localResidualsIP = TrackUtils.calculateLocalTrackHitResiduals(TrackUtils.getHTF(stateIP), lastStrip, bfield);
+                Map<String,Double> localResidualsLast = TrackUtils.calculateLocalTrackHitResiduals(TrackUtils.getHTF(stateLast), lastStrip, bfield);
                 
                 Hep3Vector trackPositionIP = TrackUtils.extrapolateTrack(stateIP, lastStereoHitPosition.x());
                 Hep3Vector trackPositionLast = TrackUtils.extrapolateTrack(stateLast, lastStereoHitPosition.x());
@@ -145,15 +216,42 @@
                 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());
-
-                
+                                
+                res_IP_u.fill(localResidualsIP.get("ures"));
                 res_IP_Y.fill(yResidualIP);
                 res_IP_X.fill(xResidualIP);
+                res_Last_u.fill(localResidualsLast.get("ures"));
                 res_Last_Y.fill(yResidualLast);
                 res_Last_X.fill(xResidualLast);
+                res_IP_Last_diff_Y.fill(Math.abs(yResidualLast) - Math.abs(yResidualIP));
+                res_IP_Last_diff_X.fill(Math.abs(xResidualLast) - Math.abs(xResidualIP));
+                res_IP_Last_diff_u.fill(Math.abs(localResidualsLast.get("ures")) - Math.abs(localResidualsIP.get("ures")));
+
+                
+                if(seedTrack != null) {
+                    Hep3Vector trackPositionSeed = TrackUtils.extrapolateTrack(seedTrack, lastStereoHitPosition.x());
+                    double xResidualSeed = trackPositionSeed.x() - lastStereoHitPosition.y();
+                    double yResidualSeed = trackPositionSeed.y() - lastStereoHitPosition.z();
+                    res_Seed_Y.fill(yResidualSeed);
+                    res_Seed_X.fill(xResidualSeed);
+                    res_Seed_Last_diff_Y.fill(Math.abs(yResidualLast) - Math.abs(yResidualSeed));
+                    res_Seed_Last_diff_X.fill(Math.abs(xResidualLast) - Math.abs(xResidualSeed));
+                    
+                    Map<String,Double> localResidualsSeed = TrackUtils.calculateLocalTrackHitResiduals(seedTrack, lastHelicalTrackHit, lastStrip, bfield);
+                    res_Seed_u.fill(localResidualsSeed.get("ures"));
+                    res_Seed_Last_diff_u.fill(Math.abs(localResidualsLast.get("ures")) - Math.abs(localResidualsSeed.get("ures")));
+
+
+                    
+                } else {
+                    logger.warning("No seed track found");
+                }
+                    
+
+                
+                
+
+                
                 
             }
         

Modified: java/trunk/users/src/main/java/org/hps/users/phansson/ParticleHelixProducer.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/phansson/ParticleHelixProducer.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/phansson/ParticleHelixProducer.java	Mon Jan  4 17:43:47 2016
@@ -13,7 +13,7 @@
 import java.util.List;
 
 import org.hps.analysis.ecal.HPSMCParticlePlotsDriver;
-import org.hps.recon.tracking.HPSTrack;
+import org.hps.recon.tracking.HpsHelicalTrackFit;
 import org.hps.recon.tracking.TrackerHitUtils;
 import org.lcsim.constants.Constants;
 import org.lcsim.event.EventHeader;
@@ -137,7 +137,7 @@
 
         //Make new tracks based on the MC particles
         //List<HelicalTrackFit> tracks = new ArrayList<HelicalTrackFit>();
-        List<HPSTrack> tracks = new ArrayList<HPSTrack>();
+        List<HpsHelicalTrackFit> tracks = new ArrayList<HpsHelicalTrackFit>();
 
         if (event.hasCollection(MCParticle.class)) {
             List<MCParticle> mcparticles = event.get(MCParticle.class).get(0);
@@ -251,7 +251,7 @@
                     pars[3] = hpc.getZ0();
                     pars[4] = hpc.getSlopeSZPlane();
                     //HelicalTrackFit htf = this.trackUtils.makeHelicalTrackFit(pars);
-                    HPSTrack htf = this.makeHPSTrack(pars, part);
+                    HpsHelicalTrackFit htf = this.makeHPSTrack(pars, part);
                     tracks.add(htf);
                     if (debug) {
                         System.out.println(this.getClass().getSimpleName() + ": MC particle created HelicalTrackFit " + htf.toString());
@@ -281,7 +281,7 @@
         }
 
         this.printDebug("created " + tracks.size() + " MC particle helix tracks");
-        event.put(this.trackOutputCollectionName, tracks, HPSTrack.class, 0);
+        event.put(this.trackOutputCollectionName, tracks, HpsHelicalTrackFit.class, 0);
         _totalTracks += tracks.size();
     }
 
@@ -292,9 +292,12 @@
      * @param mcParticle : MC particle associated to this HelicalTrackFit
      * @return HpsHelicalTrackFit :
      */
-    public HPSTrack makeHPSTrack(double[] helixParameters, MCParticle mcParticle) {
-        return new HPSTrack(helixParameters, new SymmetricMatrix(5), new double[2], new int[2],
-                new HashMap<HelicalTrackHit, Double>(), new HashMap<HelicalTrackHit, MultipleScatter>(), mcParticle);
+    public HpsHelicalTrackFit makeHPSTrack(double[] helixParameters, MCParticle mcParticle) {
+        HpsHelicalTrackFit helicalTrackFit = new HpsHelicalTrackFit(helixParameters, new SymmetricMatrix(5), new double[2], new int[2],
+                new HashMap<HelicalTrackHit, Double>(), new HashMap<HelicalTrackHit, MultipleScatter>());
+        helicalTrackFit.setMcParticle(mcParticle);
+        return  helicalTrackFit;
+        
     }
 
     /**

Modified: java/trunk/users/src/main/java/org/hps/users/phansson/ROOTFlatTupleDriver.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/phansson/ROOTFlatTupleDriver.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/phansson/ROOTFlatTupleDriver.java	Mon Jan  4 17:43:47 2016
@@ -20,10 +20,11 @@
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
+import org.apache.commons.lang3.NotImplementedException;
 import org.hps.analysis.ecal.HPSMCParticlePlotsDriver;
 import org.hps.recon.tracking.BeamlineConstants;
 import org.hps.recon.tracking.EventQuality;
-import org.hps.recon.tracking.HPSTrack;
+import org.hps.recon.tracking.HpsHelicalTrackFit;
 import org.hps.recon.tracking.StraightLineTrack;
 import org.hps.recon.tracking.TrackUtils;
 import org.hps.recon.vertexing.TwoParticleVertexer;
@@ -41,6 +42,7 @@
 import org.lcsim.event.GenericObject;
 import org.lcsim.event.MCParticle;
 import org.lcsim.event.Track;
+import org.lcsim.event.TrackState;
 import org.lcsim.event.TrackerHit;
 import org.lcsim.event.Vertex;
 import org.lcsim.event.base.ParticleTypeClassifier;
@@ -645,8 +647,8 @@
                 } else {
                     printWriter.format("%5.5f %5.5f ", -9999999.9, -9999999.9);
                 }
-                HPSTrack hpstrk1 = new HPSTrack(helix1);
-                Hep3Vector posAtConverterFringe1 = hpstrk1.getPositionAtZMap(100., BeamlineConstants.HARP_POSITION_TESTRUN, 5.0)[0];
+                HpsHelicalTrackFit hpstrk1 = new HpsHelicalTrackFit(helix1);
+                Hep3Vector posAtConverterFringe1 =  new BasicHep3Vector(TrackUtils.extrapolateTrackUsingFieldMap(trk1, 100., BeamlineConstants.HARP_POSITION_TESTRUN, 5.0, event.getDetector().getFieldMap()).getReferencePoint());
                 if (beamlinePosOk(posAtConverterFringe1)) {
                     printWriter.format("%5.5f %5.5f %5.5f ", posAtConverterFringe1.z(), posAtConverterFringe1.x(), posAtConverterFringe1.y()); //note rotation from JLab->tracking
                 } else {
@@ -660,15 +662,15 @@
                     printWriter.format("%5.5f %5.5f ", -9999999.9, -9999999.9);
                 }
 
-                Hep3Vector posAtNomTargetFringe1 = hpstrk1.getPositionAtZMap(100., 0.0, 5.0)[0];
+                Hep3Vector posAtNomTargetFringe1 =  new BasicHep3Vector(TrackUtils.extrapolateTrackUsingFieldMap(trk1, 100., 0., 5.0, event.getDetector().getFieldMap()).getReferencePoint());
                 if (beamlinePosOk(posAtNomTargetFringe1)) {
                     printWriter.format("%5.5f %5.5f %5.5f ", posAtNomTargetFringe1.z(), posAtNomTargetFringe1.x(), posAtNomTargetFringe1.y()); //note rotation from JLab->tracking
                 } else {
                     printWriter.format("%5.5f %5.5f %5.5f ", -9999999.9, -9999999.9, -9999999.9);
                 }
 
+                Hep3Vector posAtECalFringe1 =  new BasicHep3Vector(TrackUtils.extrapolateTrackUsingFieldMap(trk1, BeamlineConstants.DIPOLE_EDGE_TESTRUN - 100, BeamlineConstants.ECAL_FACE_TESTRUN, 5.0, event.getDetector().getFieldMap()).getReferencePoint());
                 Hep3Vector posAtECal = TrackUtils.extrapolateTrack(trk1, BeamlineConstants.ECAL_FACE_TESTRUN);
-                Hep3Vector posAtECalFringe1 = hpstrk1.getPositionAtZMap(BeamlineConstants.DIPOLE_EDGE_TESTRUN - 100, BeamlineConstants.ECAL_FACE_TESTRUN, 5.0, false)[0];
                 if (beamlinePosOk(posAtECal)) {
                     //printWriter.format("%5.5f %5.5f ",posAtECal.x(),posAtECal.y()); //note rotation from JLab->tracking
                     printWriter.format("%5.5f %5.5f %5.5f %5.5f %5.5f ", posAtECal.x(), posAtECal.y(), posAtECalFringe1.z(), posAtECalFringe1.x(), posAtECalFringe1.y()); //note rotation from JLab->tracking
@@ -681,7 +683,8 @@
                     double[] pos_cluster = matched_cluster.getPosition();
                     posAtECal = TrackUtils.extrapolateTrack(trk1, pos_cluster[2]);
                     if (beamlinePosOk(posAtECal)) {
-                        posAtECalFringe1 = hpstrk1.getPositionAtZMap(BeamlineConstants.DIPOLE_EDGE_TESTRUN - 100, pos_cluster[2], 5.0, false)[0];
+                        posAtECalFringe1 =  new BasicHep3Vector(TrackUtils.extrapolateTrackUsingFieldMap(trk1, BeamlineConstants.DIPOLE_EDGE_TESTRUN - 100,  pos_cluster[2], 5.0, event.getDetector().getFieldMap()).getReferencePoint());
+
                         printWriter.format("%5.5f %5.5f %5.5f %5.5f %5.5f ", posAtECal.x(), posAtECal.y(), posAtECalFringe1.z(), posAtECalFringe1.x(), posAtECalFringe1.y()); //note rotation from JLab->tracking
                         if (_debug) {
                             System.out.printf("clpos:%5.5f %5.5f %5.5f  trk: %5.5f %5.5f %5.5f %5.5f %5.5f \n", pos_cluster[0], pos_cluster[1], pos_cluster[2], posAtECal.x(), posAtECal.y(), posAtECalFringe1.z(), posAtECalFringe1.x(), posAtECalFringe1.y()); //note rotation from JLab->tracking
@@ -1212,15 +1215,19 @@
     }
 
     private StraightLineTrack[] getSLTs(Track trk1, Track trk2, boolean useFringe) {
+        throw new NotImplementedException("Need to implement the SLT stuff again. Not sure where it went.");
         // 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 = TrackUtils.findSLTAtZ(trk1, zStart, useFringe);
-        StraightLineTrack slt2 = TrackUtils.findSLTAtZ(trk2, zStart, useFringe);
-        StraightLineTrack[] vv = {slt1, slt2};
-        return vv;
+        //double zStart = useFringe == true ? -100. : 0.;
+        //StraightLineTrack slt1 = TrackUtils.findSLTAtZ(trk1, zStart, useFringe);
+        //StraightLineTrack slt2 = TrackUtils.findSLTAtZ(trk2, zStart, useFringe);
+        //StraightLineTrack[] vv = {slt1, slt2};
+        //StraightLineTrack[] vv = {null, null};
+        //if(1==1)
+        //    throw new NotImplementedException("Need to implement the SLT stuff again. Not sure where it went.");
+        //return vv;
     }
 
     /*

Modified: java/trunk/users/src/main/java/org/hps/users/phansson/TrackingReconstructionPlots.java
 =============================================================================
--- java/trunk/users/src/main/java/org/hps/users/phansson/TrackingReconstructionPlots.java	(original)
+++ java/trunk/users/src/main/java/org/hps/users/phansson/TrackingReconstructionPlots.java	Mon Jan  4 17:43:47 2016
@@ -50,7 +50,8 @@
 import org.lcsim.util.aida.AIDA;
 
 /**
- *
+ * Analysis class to check recon.
+ * 
  * @author phansson
  */
 public class TrackingReconstructionPlots extends Driver {

Top of Message | Previous Page | Permalink

Advanced Options


Options

Log In

Log In

Get Password

Get Password


Search Archives

Search Archives


Subscribe or Unsubscribe

Subscribe or Unsubscribe


Archives

November 2017
August 2017
July 2017
January 2017
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
December 2013
November 2013

ATOM RSS1 RSS2



LISTSERV.SLAC.STANFORD.EDU

Secured by F-Secure Anti-Virus CataList Email List Search Powered by the LISTSERV Email List Manager

Privacy Notice, Security Notice and Terms of Use