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:

r4083 - in /java/trunk/tracking/src/main/java/org/hps/recon/tracking/gbl: FittedGblTrajectory.java MakeGblTracks.java

From:

[log in to unmask]

Reply-To:

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

Date:

Tue, 5 Jan 2016 22:52:05 -0000

Content-Type:

text/plain

Parts/Attachments:

Parts/Attachments

text/plain (508 lines)

Author: [log in to unmask]
Date: Tue Jan  5 14:51:59 2016
New Revision: 4083

Log:
Add generic access to perigee parameters along gbl trajectory. Re-organize some functions associated with the trajectory as members instead of static.

Modified:
    java/trunk/tracking/src/main/java/org/hps/recon/tracking/gbl/FittedGblTrajectory.java
    java/trunk/tracking/src/main/java/org/hps/recon/tracking/gbl/MakeGblTracks.java

Modified: java/trunk/tracking/src/main/java/org/hps/recon/tracking/gbl/FittedGblTrajectory.java
 =============================================================================
--- java/trunk/tracking/src/main/java/org/hps/recon/tracking/gbl/FittedGblTrajectory.java	(original)
+++ java/trunk/tracking/src/main/java/org/hps/recon/tracking/gbl/FittedGblTrajectory.java	Tue Jan  5 14:51:59 2016
@@ -1,13 +1,20 @@
 package org.hps.recon.tracking.gbl;
 
+import hep.physics.matrix.SymmetricMatrix;
 import hep.physics.vec.Hep3Vector;
 
 import java.util.Map;
-
-import org.hps.recon.tracking.gbl.FittedGblTrajectory.GBLPOINT;
+import java.util.logging.Logger;
+
+import org.apache.commons.math3.util.Pair;
+import org.hps.recon.tracking.HpsHelicalTrackFit;
+import org.hps.recon.tracking.TrackUtils;
+import org.hps.recon.tracking.gbl.matrix.Matrix;
 import org.hps.recon.tracking.gbl.matrix.SymMatrix;
 import org.hps.recon.tracking.gbl.matrix.Vector;
 import org.lcsim.event.Track;
+import org.lcsim.fit.helicaltrack.HelicalTrackFit;
+import org.lcsim.fit.helicaltrack.HelixUtils;
 
 /**
  * A class that collects information about a fitted GBL trajectory. 
@@ -16,6 +23,8 @@
  * 
  */
 public class FittedGblTrajectory {
+    
+    public static Logger LOGGER = Logger.getLogger(FittedGblTrajectory.class.getName());
 
     public enum GBLPOINT {
         IP(0), LAST(1), VERTEX(2);
@@ -103,14 +112,29 @@
         
         // find the GBL point index
         int gblPointIndex = getPointIndex(point);
+    
+        // get the results
+        getResults(gblPointIndex, locPar, locCov);
+
+    }
+    
+    
+    /**
+     * Find the corrections and covariance matrix for a particular point on the GBL trajectory
+     * @param iLabel
+     * @param locPar
+     * @param locCov
+     */
+    public void getResults(int iLabel, Vector locPar, SymMatrix locCov) {
         
         // Get the result from the trajectory
-        int ok = _traj.getResults(gblPointIndex, locPar, locCov);
+        int ok = _traj.getResults(iLabel, locPar, locCov);
         
         // check that the fit was ok
         if( ok != 0)
             throw new RuntimeException("Trying to extract GBL corrections for fit that failed!?");
     }
+    
     
     /**
      * Find the path length to this point.
@@ -163,6 +187,137 @@
     }
 
     
+    
+    /**
+     * Get the corrected perigee parameters and covariance matrix for a point on the {@link GblTrajectory}.
+     * 
+     * FIXME the covariance matrix is not properly propagated along the trajectory right now!
+     * 
+     * @param htf - helix to be corrected
+     * @param point - {@link GBLPOINT} on the trajectory
+     * @param bfield - magnitude of B-field.
+     * @return
+     */
+    public Pair<double[], SymmetricMatrix> getCorrectedPerigeeParameters(HelicalTrackFit htf, GBLPOINT point, double bfield) {
+        
+        // find the point on the trajectory from the GBLPOINT
+        int iLabel = getPointIndex(point);
+        
+        return getCorrectedPerigeeParameters(htf, iLabel, bfield);
+                
+    }
+
+    
+    /**
+     * Get the corrected perigee parameters and covariance matrix for a point on the {@link GblTrajectory}.
+     * 
+     * FIXME the covariance matrix is not properly propagated along the trajectory right now!
+     * 
+     * @param htf - helix to be corrected
+     * @param iLabel - label of the point on the {@link GblTrajectory}
+     * @param bfield - magnitude of B-field.
+     * @return the corrected perigee parameters
+     */
+    public Pair<double[], SymmetricMatrix> getCorrectedPerigeeParameters(HelicalTrackFit htf, int iLabel, double bfield) {
+
+        // Get corrections from GBL fit
+        Vector locPar = new Vector(5);
+        SymMatrix locCov = new SymMatrix(5);
+
+        // Extract the corrections to the track parameters and the covariance matrix from the GBL trajectory
+        getResults(iLabel, locPar, locCov); 
+
+        // Use the super class to keep track of reference point of the helix
+        HpsHelicalTrackFit helicalTrackFit = new HpsHelicalTrackFit(htf);
+        double[] refIP = helicalTrackFit.getRefPoint();
+
+        // Calculate new reference point for this point
+        // This is the intersection of the helix with the plane
+        // The trajectory has this information already in the form of a map between GBL point and path length
+        double pathLength = getPathLength(iLabel);
+        Hep3Vector refPointVec = HelixUtils.PointOnHelix(helicalTrackFit, pathLength);
+        double[] refPoint = new double[]{refPointVec.x(), refPointVec.y()};
+        
+        LOGGER.info("pathLength " + pathLength + " -> refPointVec " + refPointVec.toString());
+        
+        // Propagate the helix to new reference point
+        double[] helixParametersAtPoint = TrackUtils.getParametersAtNewRefPoint(refPoint, helicalTrackFit);
+        
+        // Create a new helix with the new parameters and the new reference point
+        HpsHelicalTrackFit helicalTrackFitAtPoint = new HpsHelicalTrackFit(helixParametersAtPoint, helicalTrackFit.covariance(), 
+                                                        helicalTrackFit.chisq(), helicalTrackFit.ndf(), helicalTrackFit.PathMap(), 
+                                                        helicalTrackFit.ScatterMap(), refPoint);
+                
+        // find the corrected perigee track parameters at this point
+        double[] helixParametersAtPointCorrected = GblUtils.getCorrectedPerigeeParameters(locPar, helicalTrackFitAtPoint, bfield);
+        
+        // create a new helix
+        HpsHelicalTrackFit helicalTrackFitAtPointCorrected = new HpsHelicalTrackFit(helixParametersAtPointCorrected, helicalTrackFit.covariance(), 
+                helicalTrackFit.chisq(), helicalTrackFit.ndf(), helicalTrackFit.PathMap(), 
+                helicalTrackFit.ScatterMap(), refPoint);
+        
+        // change reference point back to the original one
+        double[] helixParametersAtIPCorrected = TrackUtils.getParametersAtNewRefPoint(refIP, helicalTrackFitAtPointCorrected);
+        
+        // create a new helix for the new parameters at the IP reference point
+        HpsHelicalTrackFit helicalTrackFitAtIPCorrected = new HpsHelicalTrackFit(helixParametersAtIPCorrected, helicalTrackFit.covariance(), 
+                helicalTrackFit.chisq(), helicalTrackFit.ndf(), helicalTrackFit.PathMap(), 
+                helicalTrackFit.ScatterMap(), refIP);
+        
+        
+        // Calculate the updated covariance
+        Matrix jacobian = GblUtils.getCLToPerigeeJacobian(helicalTrackFit, helicalTrackFitAtIPCorrected, bfield);
+        Matrix helixCovariance = jacobian.times(locCov.times(jacobian.transpose()));
+        SymmetricMatrix cov = new SymmetricMatrix(5);
+        for (int i = 0; i < 5; i++) {
+            for (int j = 0; j < 5; j++) {
+                if (i >= j) {
+                    cov.setElement(i, j, helixCovariance.get(i, j));
+                }
+            }
+        }
+        LOGGER.info("corrected helix covariance:\n" + cov);
+        
+        double parameters_gbl[] = helicalTrackFitAtIPCorrected.parameters();
+        
+        return new Pair<double[], SymmetricMatrix>(parameters_gbl,cov);
+    }
+
+    
+    
+    /**
+     * Extract kinks across the trajectory.
+     * @return kinks in a {@link GBLKinkData} object.
+     */
+    public GBLKinkData getKinks() {
+        GblTrajectory traj = this._traj;
+        // get corrections from GBL fit
+        Vector locPar = new Vector(5);
+        SymMatrix locCov = new SymMatrix(5);
+        float[] lambdaKinks = new float[traj.getNumPoints() - 1];
+        double[] phiKinks = new double[traj.getNumPoints() - 1];
+
+        double oldPhi = 0, oldLambda = 0;
+        for (int i = 0; i < traj.getNumPoints(); i++) {
+            traj.getResults(i + 1, locPar, locCov); // vertex point
+            double newPhi = locPar.get(GBLPARIDX.XTPRIME.getValue());
+            double newLambda = locPar.get(GBLPARIDX.YTPRIME.getValue());
+            if (i > 0) {
+                lambdaKinks[i - 1] = (float) (newLambda - oldLambda);
+                phiKinks[i - 1] = newPhi - oldPhi;
+                //                System.out.println("phikink: " + (newPhi - oldPhi));
+            }
+            oldPhi = newPhi;
+            oldLambda = newLambda;
+        }
+
+        return new GBLKinkData(lambdaKinks, phiKinks);
+    }
+
+    
+    
+
+    
 
     
 }

Modified: java/trunk/tracking/src/main/java/org/hps/recon/tracking/gbl/MakeGblTracks.java
 =============================================================================
--- java/trunk/tracking/src/main/java/org/hps/recon/tracking/gbl/MakeGblTracks.java	(original)
+++ java/trunk/tracking/src/main/java/org/hps/recon/tracking/gbl/MakeGblTracks.java	Tue Jan  5 14:51:59 2016
@@ -19,8 +19,6 @@
 import org.hps.recon.tracking.TrackType;
 import org.hps.recon.tracking.TrackUtils;
 import org.hps.recon.tracking.gbl.matrix.Matrix;
-import org.hps.recon.tracking.gbl.matrix.SymMatrix;
-import org.hps.recon.tracking.gbl.matrix.Vector;
 import org.lcsim.constants.Constants;
 import org.lcsim.detector.ITransform3D;
 import org.lcsim.detector.tracker.silicon.ChargeCarrier;
@@ -60,7 +58,16 @@
         }
     }
 
-    public static Pair<Track, GBLKinkData> makeCorrectedTrack(FittedGblTrajectory fittedTraj, HelicalTrackFit helix, List<TrackerHit> trackHits, int trackType, double bfield) {
+    /**
+     * Create a new {@link BaseTrack} from a {@link FittedGblTrajectory}. 
+     * @param fittedGblTrajectory
+     * @param helicalTrackFit
+     * @param hitsOnTrack
+     * @param trackType
+     * @param bfield
+     * @return the new {@link BaseTrack} and the kinks along the {@link GblTrajectory} as a {@link Pair}.
+     */
+    public static Pair<Track, GBLKinkData> makeCorrectedTrack(FittedGblTrajectory fittedGblTrajectory, HelicalTrackFit helicalTrackFit, List<TrackerHit> hitsOnTrack, int trackType, double bfield) {
         //  Initialize the reference point to the origin
         double[] ref = new double[]{0., 0., 0.};
 
@@ -68,210 +75,46 @@
         BaseTrack trk = new BaseTrack();
 
         //  Add the hits to the track
-        for (TrackerHit hit : trackHits) {
+        for (TrackerHit hit : hitsOnTrack) {
             trk.addHit(hit);
         }
 
-        // Set state at vertex
-        Pair<double[], SymmetricMatrix> correctedHelixParams = getGblCorrectedHelixParameters(helix, fittedTraj, bfield, FittedGblTrajectory.GBLPOINT.IP);
+        // Set base track parameters
+        Pair<double[], SymmetricMatrix> correctedHelixParams = fittedGblTrajectory.getCorrectedPerigeeParameters(helicalTrackFit, FittedGblTrajectory.GBLPOINT.IP, bfield);
         trk.setTrackParameters(correctedHelixParams.getFirst(), bfield);// hack to set the track charge
         trk.getTrackStates().clear();
 
-        TrackState stateVertex = new BaseTrackState(correctedHelixParams.getFirst(), ref, correctedHelixParams.getSecond().asPackedArray(true), TrackState.AtIP, bfield);
-        trk.getTrackStates().add(stateVertex);
-
-        // Set state at last point
-        Pair<double[], SymmetricMatrix> correctedHelixParamsLast = getGblCorrectedHelixParameters(helix, fittedTraj, bfield, FittedGblTrajectory.GBLPOINT.LAST);
+        // Set state at IP
+        TrackState stateIP = new BaseTrackState(correctedHelixParams.getFirst(), ref, correctedHelixParams.getSecond().asPackedArray(true), TrackState.AtIP, bfield);
+        trk.getTrackStates().add(stateIP);
+
+        // Set state at last point on trajectory
+        Pair<double[], SymmetricMatrix> correctedHelixParamsLast = fittedGblTrajectory.getCorrectedPerigeeParameters(helicalTrackFit, FittedGblTrajectory.GBLPOINT.LAST, bfield);
         TrackState stateLast = new BaseTrackState(correctedHelixParamsLast.getFirst(), ref, correctedHelixParamsLast.getSecond().asPackedArray(true), TrackState.AtLastHit, bfield);
         trk.getTrackStates().add(stateLast);
 
-        GBLKinkData kinkData = getKinks(fittedTraj.get_traj());
+        // Extract kinks from trajectory
+        GBLKinkData kinkData = fittedGblTrajectory.getKinks();
 
         // Set other info needed
-        trk.setChisq(fittedTraj.get_chi2());
-        trk.setNDF(fittedTraj.get_ndf());
+        trk.setChisq(fittedGblTrajectory.get_chi2());
+        trk.setNDF(fittedGblTrajectory.get_ndf());
         trk.setFitSuccess(true);
         trk.setRefPointIsDCA(true);
         trk.setTrackType(TrackType.setGBL(trackType, true));
 
         //  Add the track to the list of tracks
 //            tracks.add(trk);
-        LOGGER.info(String.format("helix chi2 %f ndf %d gbl chi2 %f ndf %d\n", helix.chisqtot(), helix.ndf()[0] + helix.ndf()[1], trk.getChi2(), trk.getNDF()));
+        LOGGER.info(String.format("helix chi2 %f ndf %d gbl chi2 %f ndf %d\n", helicalTrackFit.chisqtot(), helicalTrackFit.ndf()[0] + helicalTrackFit.ndf()[1], trk.getChi2(), trk.getNDF()));
         if (LOGGER.getLevel().intValue() <= Level.INFO.intValue()) {
             for (int i = 0; i < 5; ++i) {
-                LOGGER.info(String.format("param %d: %.10f -> %.10f    helix-gbl= %f", i, helix.parameters()[i], trk.getTrackParameter(i), helix.parameters()[i] - trk.getTrackParameter(i)));
+                LOGGER.info(String.format("param %d: %.10f -> %.10f    helix-gbl= %f", i, helicalTrackFit.parameters()[i], trk.getTrackParameter(i), helicalTrackFit.parameters()[i] - trk.getTrackParameter(i)));
             }
         }
         return new Pair<Track, GBLKinkData>(trk, kinkData);
     }
 
-    /**
-     * Compute the updated helix parameters and covariance matrix at a given
-     * point along the trajectory.
-     *
-     * @param htf - original seed track
-     * @param fittedGblTraj - fitted GBL trajectory
-     * @param point - the GBL point along the track where the result is computed.
-     * @return corrected parameters.
-     */
-    public static Pair<double[], SymmetricMatrix> getGblCorrectedHelixParameters(HelicalTrackFit htf, FittedGblTrajectory fittedGblTraj, double bfield, FittedGblTrajectory.GBLPOINT point) {
-        
-        LOGGER.info("Get corrected parameters at GblPoint: " + point.toString() + "( " + point.name() + ")");
-
-        // Get corrections from GBL fit
-        Vector locPar = new Vector(5);
-        SymMatrix locCov = new SymMatrix(5);
-
-        // Extract the corrections to the track parameters and the covariance matrix from the GBL trajectory
-        fittedGblTraj.getResults(point, locPar, locCov); 
-
-        // Use the super class to keep track of reference point of the helix
-        HpsHelicalTrackFit helicalTrackFit = new HpsHelicalTrackFit(htf);
-        double[] refIP = helicalTrackFit.getRefPoint();
-
-        // Calculate new reference point for this point
-        // This is the intersection of the helix with the plane
-        // The trajectory has this information already in the form of a map between GBL point and path length
-        double pathLength = fittedGblTraj.getPathLength(point);
-        Hep3Vector refPointVec = HelixUtils.PointOnHelix(helicalTrackFit, pathLength);
-        double[] refPoint = new double[]{refPointVec.x(), refPointVec.y()};
-        
-        LOGGER.info("pathLength " + pathLength + " -> refPointVec " + refPointVec.toString());
-        
-        // Propagate the helix to new reference point
-        double[] helixParametersAtPoint = TrackUtils.getParametersAtNewRefPoint(refPoint, helicalTrackFit);
-        
-        // Create a new helix with the new parameters and the new reference point
-        HpsHelicalTrackFit helicalTrackFitAtPoint = new HpsHelicalTrackFit(helixParametersAtPoint, helicalTrackFit.covariance(), 
-                                                        helicalTrackFit.chisq(), helicalTrackFit.ndf(), helicalTrackFit.PathMap(), 
-                                                        helicalTrackFit.ScatterMap(), refPoint);
-                
-        // find the corrected perigee track parameters at this point
-        double[] helixParametersAtPointCorrected = GblUtils.getCorrectedPerigeeParameters(locPar, helicalTrackFitAtPoint, bfield);
-        
-        // create a new helix
-        HpsHelicalTrackFit helicalTrackFitAtPointCorrected = new HpsHelicalTrackFit(helixParametersAtPointCorrected, helicalTrackFit.covariance(), 
-                helicalTrackFit.chisq(), helicalTrackFit.ndf(), helicalTrackFit.PathMap(), 
-                helicalTrackFit.ScatterMap(), refPoint);
-        
-        // change reference point back to the original one
-        double[] helixParametersAtIPCorrected = TrackUtils.getParametersAtNewRefPoint(refIP, helicalTrackFitAtPointCorrected);
-        
-        // create a new helix for the new parameters at the IP reference point
-        HpsHelicalTrackFit helicalTrackFitAtIPCorrected = new HpsHelicalTrackFit(helixParametersAtIPCorrected, helicalTrackFit.covariance(), 
-                helicalTrackFit.chisq(), helicalTrackFit.ndf(), helicalTrackFit.PathMap(), 
-                helicalTrackFit.ScatterMap(), refIP);
-        
-        
-        // Calculate the updated covariance
-        Matrix jacobian = GblUtils.getCLToPerigeeJacobian(helicalTrackFit, helicalTrackFitAtIPCorrected, bfield);
-        Matrix helixCovariance = jacobian.times(locCov.times(jacobian.transpose()));
-        SymmetricMatrix cov = new SymmetricMatrix(5);
-        for (int i = 0; i < 5; i++) {
-            for (int j = 0; j < 5; j++) {
-                if (i >= j) {
-                    cov.setElement(i, j, helixCovariance.get(i, j));
-                }
-            }
-        }
-        LOGGER.info("corrected helix covariance:\n" + cov);
-        
-        double parameters_gbl[] = helicalTrackFitAtIPCorrected.parameters();
-        
-        /*
-        
-        // Get seed helix parameters
-        double qOverP = helicalTrackFit.curvature() / (Constants.fieldConversion * Math.abs(bfield) * Math.sqrt(1 + Math.pow(helicalTrackFit.slope(), 2)));
-        double d0 = -1.0 * helicalTrackFit.dca(); // correct for different sign convention of d0 in perigee frame
-        double z0 = helicalTrackFit.z0();
-        double phi0 = helicalTrackFit.phi0();
-        double lambda = Math.atan(helicalTrackFit.slope());
-        
-        // calculate new d0 and z0
-//        Hep3Matrix perToClPrj = traj.get_track_data().getPrjPerToCl();
-        Hep3Matrix perToClPrj = getPerToClPrj(helicalTrackFit);
-
-        Hep3Matrix clToPerPrj = VecOp.inverse(perToClPrj);
-        Hep3Vector corrPer = VecOp.mult(clToPerPrj, new BasicHep3Vector(xTCorr, yTCorr, 0.0));
-
-        //d0
-        double d0_corr = corrPer.y();
-        double dca_gbl = -1.0 * (d0 + d0_corr);
-
-        //z0
-        double z0_corr = corrPer.z();
-        double z0_gbl = z0 + z0_corr;
-
-        //calculate new slope
-        double lambda_gbl = lambda + yTPrimeCorr;
-        double slope_gbl = Math.tan(lambda_gbl);
-
-        // calculate new curvature
-        double qOverP_gbl = qOverP + qOverPCorr;
-//        double pt_gbl = (1.0 / qOverP_gbl) * Math.cos(lambda_gbl);
-//        double C_gbl = Constants.fieldConversion * Math.abs(bfield) / pt_gbl;
-        double C_gbl = Constants.fieldConversion * Math.abs(bfield) * qOverP_gbl / Math.cos(lambda_gbl);
-
-        //calculate new phi0
-        double phi0_gbl = phi0 + xTPrimeCorr - corrPer.x() * C_gbl;
-
-        LOGGER.info("qOverP=" + qOverP + " qOverPCorr=" + qOverPCorr + " qOverP_gbl=" + qOverP_gbl + " ==> pGbl=" + 1.0 / qOverP_gbl + " C_gbl=" + C_gbl);
-
-        LOGGER.info(String.format("corrected helix: d0=%f, z0=%f, omega=%f, tanlambda=%f, phi0=%f, p=%f", dca_gbl, z0_gbl, C_gbl, slope_gbl, phi0_gbl, Math.abs(1 / qOverP_gbl)));
-         */
-        
-       
-
-//        jacobian.print(15, 13);
-//        Matrix helixCovariance = jacobian.times(locCov.times(jacobian.transpose()));
-//        SymmetricMatrix cov = new SymmetricMatrix(5);
-//        for (int i = 0; i < 5; i++) {
-//            for (int j = 0; j < 5; j++) {
-//                if (i >= j) {
-//                    cov.setElement(i, j, helixCovariance.get(i, j));
-//                }
-//            }
-//        }
-//        LOGGER.info("corrected helix covariance:\n" + cov);
-
-        /*
-        double parameters_gbl[] = new double[5];
-        parameters_gbl[HelicalTrackFit.dcaIndex] = dca_gbl;
-        parameters_gbl[HelicalTrackFit.phi0Index] = phi0_gbl;
-        parameters_gbl[HelicalTrackFit.curvatureIndex] = C_gbl;
-        parameters_gbl[HelicalTrackFit.z0Index] = z0_gbl;
-        parameters_gbl[HelicalTrackFit.slopeIndex] = slope_gbl;
-        */
-        
-        
-
-        return new Pair<double[], SymmetricMatrix>(parameters_gbl, cov);
-    }
-
-    public static GBLKinkData getKinks(GblTrajectory traj) {
-
-        // get corrections from GBL fit
-        Vector locPar = new Vector(5);
-        SymMatrix locCov = new SymMatrix(5);
-        float[] lambdaKinks = new float[traj.getNumPoints() - 1];
-        double[] phiKinks = new double[traj.getNumPoints() - 1];
-
-        double oldPhi = 0, oldLambda = 0;
-        for (int i = 0; i < traj.getNumPoints(); i++) {
-            traj.getResults(i + 1, locPar, locCov); // vertex point
-            double newPhi = locPar.get(FittedGblTrajectory.GBLPARIDX.XTPRIME.getValue());
-            double newLambda = locPar.get(FittedGblTrajectory.GBLPARIDX.YTPRIME.getValue());
-            if (i > 0) {
-                lambdaKinks[i - 1] = (float) (newLambda - oldLambda);
-                phiKinks[i - 1] = newPhi - oldPhi;
-//                System.out.println("phikink: " + (newPhi - oldPhi));
-            }
-            oldPhi = newPhi;
-            oldLambda = newLambda;
-        }
-
-        return new GBLKinkData(lambdaKinks, phiKinks);
-    }
+    
 
     /**
      * Do a GBL fit to an arbitrary set of strip hits, with a starting value of
@@ -301,6 +144,15 @@
         return mergedTrack;
     }
 
+    /**
+     * Do a GBL fit to a list of {@link TrackerHit}. 
+     * @param htf - seed fit
+     * @param stripHits - list of {@link TrackerHit}.
+     * @param _scattering - estimation of the multiple scattering {@link MultipleScattering}.
+     * @param bfield - magnitude of B-field.
+     * @param debug - debug flag.
+     * @return
+     */
     public static FittedGblTrajectory doGBLFit(HelicalTrackFit htf, List<TrackerHit> stripHits, MultipleScattering _scattering, double bfield, int debug) {
         List<GBLStripClusterData> stripData = makeStripData(htf, stripHits, _scattering, bfield, debug);
         double bfac = Constants.fieldConversion * bfield;
@@ -309,6 +161,15 @@
         return fit;
     }
 
+    /**
+     * Create a list of {@link GBLStripClusterData} objects that can be used as input to the GBL fitter.
+     * @param htf
+     * @param stripHits
+     * @param _scattering
+     * @param _B
+     * @param _debug
+     * @return
+     */
     public static List<GBLStripClusterData> makeStripData(HelicalTrackFit htf, List<TrackerHit> stripHits, MultipleScattering _scattering, double _B, int _debug) {
         List<GBLStripClusterData> stripClusterDataList = new ArrayList<GBLStripClusterData>();
 

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