3 added + 2 removed + 15 modified, total 20 files
lcsim/src/org/lcsim/contrib/JanStrube/vtxFitter
diff -u -r1.2 -r1.3
--- VtxTrack.java 23 Oct 2006 19:42:31 -0000 1.2
+++ VtxTrack.java 28 Oct 2006 00:48:32 -0000 1.3
@@ -1,7 +1,7 @@
package org.lcsim.contrib.JanStrube.vtxFitter;
import hep.physics.matrix.SymmetricMatrix;
-import org.lcsim.contrib.JanStrube.tracking.EMap;
+import org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters;
import org.lcsim.contrib.JanStrube.tracking.NewTrack;
import org.lcsim.contrib.JanStrube.tracking.Track;
import org.lcsim.spacegeom.SpacePoint;
@@ -17,13 +17,13 @@
*/
VtxTrack(Track t) {
super((SpacePoint) t.getReferencePoint().clone()
- , new EMap(t.getParameters())
+ , new LCIOTrackParameters(t.getParameters())
, new SymmetricMatrix(t.getErrorMatrix())
, t.getCharge());
}
void updateMomentum(SpaceVector momentum, SpacePoint position, double B_z) {
- _parameters = EMap.SpaceMomentum2Parameters(position, momentum, position, _charge, B_z);
+ _parameters = LCIOTrackParameters.SpaceMomentum2Parameters(position, momentum, position, _charge, B_z);
}
}
lcsim/src/org/lcsim/contrib/JanStrube/vtxFitter
diff -u -r1.14 -r1.15
--- Fitter.java 23 Oct 2006 19:42:31 -0000 1.14
+++ Fitter.java 28 Oct 2006 00:48:32 -0000 1.15
@@ -2,7 +2,7 @@
package org.lcsim.contrib.JanStrube.vtxFitter;
/**
- * @version $Id: Fitter.java,v 1.14 2006/10/23 19:42:31 tonyj Exp $
+ * @version $Id: Fitter.java,v 1.15 2006/10/28 00:48:32 jstrube Exp $
*/
import Jama.util.Maths;
@@ -13,7 +13,7 @@
import java.util.Collection;
-import org.lcsim.contrib.JanStrube.tracking.EMap;
+import org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters;
import org.lcsim.contrib.JanStrube.tracking.HelixSwimmer;
import org.lcsim.contrib.JanStrube.tracking.Track;
import org.lcsim.event.EventHeader;
@@ -128,10 +128,10 @@
Matrix B_k = getMomentumDerivativeMatrix(vtxPosition, p, t.getCharge(), B_z);
Matrix q0 = new Matrix(p.getCartesianArray(), 3);
// turn the measurement into a Matrix object
- Matrix h = new Matrix(EMap.SpaceMomentum2Parameters(vtxPosition, p, vtxPosition, t.getCharge(), B_z)
+ Matrix h = new Matrix(LCIOTrackParameters.SpaceMomentum2Parameters(vtxPosition, p, vtxPosition, t.getCharge(), B_z)
.getValues(), 5);
// the measurement of the track is taken at the POCA to the best estimate
- Matrix m_k = new Matrix(EMap.SpaceMomentum2Parameters(x, p, vtxPosition, t.getCharge(), B_z).getValues(), 5);
+ Matrix m_k = new Matrix(LCIOTrackParameters.SpaceMomentum2Parameters(x, p, vtxPosition, t.getCharge(), B_z).getValues(), 5);
Matrix c_k0 = h.minus(A_k.times(x_prev).plus(B_k.times(q0)));
// Now for the real filtering equations
@@ -189,7 +189,7 @@
Matrix G_k = Maths.toJamaMatrix(t.getErrorMatrix()).inverse();
Matrix W_k = B_k.transpose().times(G_k.times(B_k)).uminus();
// the measurement of the track is taken at the POCA to the best estimate
- Matrix m_k = new Matrix(EMap.SpaceMomentum2Parameters(x, p, vtxPosition, t.getCharge(), B_z).getValues(), 5);
+ Matrix m_k = new Matrix(LCIOTrackParameters.SpaceMomentum2Parameters(x, p, vtxPosition, t.getCharge(), B_z).getValues(), 5);
Matrix c_k0 = m_k.minus(A_k.times(x_prev).plus(B_k.times(q0)));
Matrix q_kN = W_k.times(B_k.transpose().times(G_k)).times(m_k.minus(c_k0.plus(A_k.times(x_prev))));
SpaceVector updatedMomentum = new CartesianVector(q_kN.getRowPackedCopy());
lcsim/src/org/lcsim/contrib/JanStrube/tracking
diff -N LCIOTrackParameters.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ LCIOTrackParameters.java 28 Oct 2006 00:48:37 -0000 1.1
@@ -0,0 +1,138 @@
+/**
+ * @version $Id: LCIOTrackParameters.java,v 1.1 2006/10/28 00:48:37 jstrube Exp $
+ */
+package org.lcsim.contrib.JanStrube.tracking;
+
+import static java.lang.Math.atan2;
+import static java.lang.Math.cos;
+import static java.lang.Math.sin;
+import static java.lang.Math.sqrt;
+import static org.lcsim.constants.Constants.fieldConversion;
+import static org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters.ParameterName.d0;
+import static org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters.ParameterName.omega;
+import static org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters.ParameterName.phi0;
+import static org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters.ParameterName.tanLambda;
+import static org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters.ParameterName.z0;
+
+import org.lcsim.spacegeom.CartesianPoint;
+import org.lcsim.spacegeom.CartesianVector;
+import org.lcsim.spacegeom.SpacePoint;
+import org.lcsim.spacegeom.SpaceVector;
+
+public class LCIOTrackParameters {
+
+ public enum ParameterName {
+ d0, phi0, omega, z0, tanLambda
+ }
+
+ /**
+ * Computes the momentum vector from a given parameter set
+ * @param parameters The Parameter object
+ * @return The momentum vector corresponding to the given parameters
+ */
+ public static SpaceVector Parameters2Momentum(LCIOTrackParameters parameters) {
+ double pt = parameters.pt;
+
+ return new CartesianVector(
+ pt * cos(parameters.get(phi0))
+ , pt * sin(parameters.get(phi0))
+ , pt * parameters.get(tanLambda)
+ );
+ }
+ /**
+ * Computes the point of closest approach on the track to the given reference point.
+ * Note that this function does not do any swimming. It merely returns a different representation of the given parameters.
+ * This is meaningless without the reference point however.
+ * In order to prevent the user from having to kow the implementation details, the reference point is made an explicit parameter.
+ * @param parameters The Parameter object
+ * @param refPoint The reference point
+ * @return The point of closest approach on the track to the reference point
+ */
+ public static SpacePoint Parameters2Position(LCIOTrackParameters parameters, SpacePoint refPoint) {
+ double d_0 = parameters.get(d0);
+ double z_0 = parameters.get(z0);
+ double phi_0 = parameters.get(phi0);
+
+ double x = refPoint.x() - d_0*sin(phi_0);
+ double y = refPoint.y() + d_0*cos(phi_0);
+ double z = refPoint.z() + z_0;
+
+ return new CartesianPoint(x, y, z);
+ }
+ /**
+ * Calculates the parameters of the Track under the assumption that the
+ * space-momentum representation is given at the POCA to the reference point.
+ * @param pos The point of closest approach on the track to the reference point
+ * @param mom The momentum vector at @see pos
+ * @param ref The reference point
+ * @param charge The charge of the particle
+ * @param Bz The z component of the magnetic field. Assuming a homogeneous field parallel to z
+ * @return The Parameter object corresponding to the arguments
+ */
+ public static LCIOTrackParameters SpaceMomentum2Parameters(SpacePoint pos, SpaceVector mom, SpacePoint ref, int charge, double field_z) {
+ LCIOTrackParameters result = new LCIOTrackParameters();
+ double aqBz = charge*field_z*fieldConversion;
+ double x = pos.x() - ref.x();
+ double y = pos.y() - ref.y();
+ double z_0 = pos.z() - ref.z();
+ double phi_0 = mom.phi();
+ double pt = mom.rxy();
+
+ result.set(d0, -x*sin(phi_0)+ y*cos(phi_0));
+ result.set(phi0, phi_0);
+ result.set(omega, aqBz/pt);
+ result.set(z0, z_0);
+ result.set(tanLambda, mom.z()/pt);
+ result.setPt(pt);
+ return result;
+ }
+
+ double[] values;
+ double pt;
+
+ public LCIOTrackParameters(LCIOTrackParameters parameters) {
+ values = parameters.values.clone();
+ pt = parameters.pt;
+ }
+
+ LCIOTrackParameters() {
+ values = new double[5];
+ pt = 0;
+ }
+
+ public LCIOTrackParameters(double[] vals, double p_t) {
+ values = vals;
+ pt = p_t;
+ }
+
+ double get(ParameterName name) {
+ return values[name.ordinal()];
+ }
+
+ public double getPt() {
+ return pt;
+ }
+
+ public double[] getValues() {
+ return values;
+ }
+
+ void set(ParameterName name, double val) {
+ values[name.ordinal()] = val;
+ }
+
+
+ void setPt(double p_t) {
+ pt = p_t;
+ }
+
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+ sb.append(String.format("Parameters:\n"));
+ for (ParameterName p : ParameterName.values()) {
+ sb.append(String.format("%10s: %g\n", p.name(), values[p.ordinal()]));
+ }
+ sb.append(String.format("%10s: %g\n", "pt", pt));
+ return sb.toString();
+ }
+}
lcsim/src/org/lcsim/contrib/JanStrube/tracking
diff -u -r1.6 -r1.7
--- Track.java 23 Oct 2006 19:42:31 -0000 1.6
+++ Track.java 28 Oct 2006 00:48:37 -0000 1.7
@@ -1,9 +1,11 @@
/**
- * @version $Id: Track.java,v 1.6 2006/10/23 19:42:31 tonyj Exp $
+ * @version $Id: Track.java,v 1.7 2006/10/28 00:48:37 jstrube Exp $
*/
package org.lcsim.contrib.JanStrube.tracking;
import hep.physics.matrix.SymmetricMatrix;
+
+import org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters.ParameterName;
import org.lcsim.spacegeom.SpacePoint;
import org.lcsim.spacegeom.SpaceVector;
@@ -13,10 +15,6 @@
*/
public interface Track {
- enum ParameterName {
- d0, phi0, omega, z0, tanLambda
- }
-
/**
* Returns the parameter by name
* @param name symbolic name of the parameter
@@ -28,7 +26,7 @@
* Returns the parmeters container, which holds the 5 parameters and the pt
* @return The parameters for this Track
*/
- public abstract EMap getParameters();
+ public abstract LCIOTrackParameters getParameters();
/**
* Accessor to the POCA of the reference point.
lcsim/src/org/lcsim/contrib/JanStrube/tracking
diff -u -r1.7 -r1.8
--- HelixSwimmer.java 10 Sep 2006 11:47:34 -0000 1.7
+++ HelixSwimmer.java 28 Oct 2006 00:48:38 -0000 1.8
@@ -9,11 +9,11 @@
import static java.lang.Math.cos;
import static java.lang.Math.sqrt;
import static org.lcsim.constants.Constants.fieldConversion;
-import static org.lcsim.contrib.JanStrube.tracking.Track.ParameterName.d0;
-import static org.lcsim.contrib.JanStrube.tracking.Track.ParameterName.phi0;
-import static org.lcsim.contrib.JanStrube.tracking.Track.ParameterName.omega;
-import static org.lcsim.contrib.JanStrube.tracking.Track.ParameterName.z0;
-import static org.lcsim.contrib.JanStrube.tracking.Track.ParameterName.tanLambda;
+import static org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters.ParameterName.d0;
+import static org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters.ParameterName.phi0;
+import static org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters.ParameterName.omega;
+import static org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters.ParameterName.z0;
+import static org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters.ParameterName.tanLambda;
/**
* A simple helix smimmer for use in org.lcsim. Uses standard lcsim units Tesla, mm, GeV. This swimmer works for charged
@@ -22,7 +22,7 @@
* For more info on swimming see <a href="doc-files/transport.pdf">this paper</a> by Paul Avery.
*
* @author jstrube
- * @version $Id: HelixSwimmer.java,v 1.7 2006/09/10 11:47:34 jstrube Exp $
+ * @version $Id: HelixSwimmer.java,v 1.8 2006/10/28 00:48:38 jstrube Exp $
*/
public class HelixSwimmer {
private double field;
lcsim/src/org/lcsim/contrib/JanStrube/tracking
diff -u -r1.10 -r1.11
--- NewTrack.java 23 Oct 2006 19:42:30 -0000 1.10
+++ NewTrack.java 28 Oct 2006 00:48:38 -0000 1.11
@@ -1,11 +1,15 @@
/**
- * @version $Id: NewTrack.java,v 1.10 2006/10/23 19:42:30 tonyj Exp $
+ * @version $Id: NewTrack.java,v 1.11 2006/10/28 00:48:38 jstrube Exp $
*/
package org.lcsim.contrib.JanStrube.tracking;
import hep.physics.matrix.SymmetricMatrix;
+
+import org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters.ParameterName;
+import org.lcsim.spacegeom.CartesianPoint;
import org.lcsim.spacegeom.SpacePoint;
import org.lcsim.spacegeom.SpaceVector;
+import static java.lang.Math.sqrt;
/**
@@ -15,17 +19,26 @@
* An invariant of this class is that the "origin" is the point of closest approach to the reference point.
*/
public class NewTrack implements Track {
- protected EMap _parameters;
+ protected LCIOTrackParameters _parameters;
protected SymmetricMatrix _errorMatrix;
protected SpacePoint _referencePoint;
protected int _charge;
protected NewTrack() {
- _parameters = new EMap();
+ _parameters = new LCIOTrackParameters();
_errorMatrix = new SymmetricMatrix(5);
}
- protected NewTrack(SpacePoint refPoint, EMap parameters, SymmetricMatrix errorMatrix, int charge) {
+ public NewTrack(org.lcsim.event.Track t) {
+ double[] p = t.getMomentum();
+ double pt = sqrt(p[0]*p[0] + p[1]*p[1]);
+ _parameters = new LCIOTrackParameters(t.getTrackParameters(), pt);
+ _errorMatrix = t.getErrorMatrix();
+ _referencePoint = new CartesianPoint(t.getReferencePoint());
+ _charge = t.getCharge();
+ }
+
+ protected NewTrack(SpacePoint refPoint, LCIOTrackParameters parameters, SymmetricMatrix errorMatrix, int charge) {
_referencePoint = refPoint;
_parameters = parameters;
_charge = charge;
@@ -41,7 +54,7 @@
/* (non-Javadoc)
* @see org.lcsim.contrib.JanStrube.tracking.Track#getParameters()
*/
- public EMap getParameters() {
+ public LCIOTrackParameters getParameters() {
return _parameters;
}
/* (non-Javadoc)
@@ -70,10 +83,10 @@
}
public SpacePoint getPosition() {
- return EMap.Parameters2Position(_parameters, _referencePoint);
+ return LCIOTrackParameters.Parameters2Position(_parameters, _referencePoint);
}
public SpaceVector getMomentum() {
- return EMap.Parameters2Momentum(_parameters);
+ return LCIOTrackParameters.Parameters2Momentum(_parameters);
}
}
lcsim/src/org/lcsim/contrib/JanStrube/tracking
diff -u -r1.4 -r1.5
--- TransitionalTrack.java 23 Oct 2006 19:42:30 -0000 1.4
+++ TransitionalTrack.java 28 Oct 2006 00:48:39 -0000 1.5
@@ -1,5 +1,5 @@
/**
- * @version $Id: TransitionalTrack.java,v 1.4 2006/10/23 19:42:30 tonyj Exp $
+ * @version $Id: TransitionalTrack.java,v 1.5 2006/10/28 00:48:39 jstrube Exp $
*/
package org.lcsim.contrib.JanStrube.tracking;
@@ -58,10 +58,10 @@
*/
public double[] getMomentum() {
double pt = _track.getPt();
- double phi0 = _track.getParameter(org.lcsim.contrib.JanStrube.tracking.Track.ParameterName.phi0);
+ double phi0 = _track.getParameter(org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters.ParameterName.phi0);
double x = pt*cos(phi0);
double y = pt*sin(phi0);
- double z = pt*_track.getParameter(org.lcsim.contrib.JanStrube.tracking.Track.ParameterName.tanLambda);
+ double z = pt*_track.getParameter(org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters.ParameterName.tanLambda);
return new double[] {x, y, z};
}
@@ -78,7 +78,7 @@
*/
public double getPX() {
double pt = _track.getPt();
- double phi0 = _track.getParameter(org.lcsim.contrib.JanStrube.tracking.Track.ParameterName.phi0);
+ double phi0 = _track.getParameter(org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters.ParameterName.phi0);
double x = pt*cos(phi0);
return x;
}
@@ -88,7 +88,7 @@
*/
public double getPY() {
double pt = _track.getPt();
- double phi0 = _track.getParameter(org.lcsim.contrib.JanStrube.tracking.Track.ParameterName.phi0);
+ double phi0 = _track.getParameter(org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters.ParameterName.phi0);
double y = pt*sin(phi0);
return y;
}
@@ -98,7 +98,7 @@
*/
public double getPZ() {
double pt = _track.getPt();
- double z = pt*_track.getParameter(org.lcsim.contrib.JanStrube.tracking.Track.ParameterName.tanLambda);
+ double z = pt*_track.getParameter(org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters.ParameterName.tanLambda);
return z;
}
lcsim/src/org/lcsim/contrib/JanStrube/tracking
diff -u -r1.12 -r1.13
--- NewFastMCTrackFactory.java 23 Oct 2006 19:42:30 -0000 1.12
+++ NewFastMCTrackFactory.java 28 Oct 2006 00:48:40 -0000 1.13
@@ -1,5 +1,5 @@
/**
- * @version $Id: NewFastMCTrackFactory.java,v 1.12 2006/10/23 19:42:30 tonyj Exp $
+ * @version $Id: NewFastMCTrackFactory.java,v 1.13 2006/10/28 00:48:40 jstrube Exp $
*/
package org.lcsim.contrib.JanStrube.tracking;
@@ -9,8 +9,8 @@
import static java.lang.Math.abs;
import static java.lang.Math.atan2;
import static java.lang.Math.sqrt;
-import static org.lcsim.contrib.JanStrube.tracking.Track.ParameterName.omega;
-import static org.lcsim.contrib.JanStrube.tracking.Track.ParameterName.phi0;
+import static org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters.ParameterName.omega;
+import static org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters.ParameterName.phi0;
import hep.physics.vec.Hep3Vector;
@@ -130,7 +130,7 @@
double alpha = _swimmer.getTrackLengthToPoint(referencePoint);
SpacePoint poca = _swimmer.getPointAtLength(alpha);
SpaceVector momentumAtPoca = _swimmer.getMomentumAtLength(alpha);
- EMap parameters = EMap.SpaceMomentum2Parameters(poca, momentumAtPoca, referencePoint, charge, _Bz);
+ LCIOTrackParameters parameters = LCIOTrackParameters.SpaceMomentum2Parameters(poca, momentumAtPoca, referencePoint, charge, _Bz);
SymmetricMatrix errorMatrix = new SymmetricMatrix(5);
// this sets the measurement error
double cosTheta = abs(momentumAtPoca.cosTheta());
@@ -144,7 +144,7 @@
}
}
// it's a bit inefficient to always have this condition here, although it's only used in tests.
- EMap smearParams = shouldISmear
+ LCIOTrackParameters smearParams = shouldISmear
? smearParameters(parameters, errorMatrix, random)
: parameters;
@@ -152,8 +152,8 @@
// System.out.println("TrackFactory: POCA " + poca);
// System.out.println("TrackFactory: Momentum " + momentumAtPoca);
// System.out.println("TrackFactory: Parameters: " + smearParams);
-// System.out.println("TrackFactory: POCA from parameters: " + EMap.Parameters2Position(smearParams, referencePoint));
-// System.out.println("TrackFactory: Parameters from POCA: " + EMap.SpaceMomentum2Parameters(poca, momentumAtPoca, referencePoint, charge, _Bz));
+// System.out.println("TrackFactory: POCA from parameters: " + LCIOTrackParameters.Parameters2Position(smearParams, referencePoint));
+// System.out.println("TrackFactory: Parameters from POCA: " + LCIOTrackParameters.SpaceMomentum2Parameters(poca, momentumAtPoca, referencePoint, charge, _Bz));
return new NewTrack(referencePoint, smearParams, errorMatrix, charge);
}
@@ -197,7 +197,7 @@
* @param random A random generator
* @return A new set of smeared parameters
*/
- private static EMap smearParameters(EMap oldParams, SymmetricMatrix sm, Random random) {
+ private static LCIOTrackParameters smearParameters(LCIOTrackParameters oldParams, SymmetricMatrix sm, Random random) {
Matrix errorMatrix = Maths.toJamaMatrix(sm);
EigenvalueDecomposition eigen = errorMatrix.eig();
double[] realEigen = eigen.getRealEigenvalues();
@@ -227,6 +227,6 @@
} else if (parameters[phi0.ordinal()] < -PI) {
parameters[phi0.ordinal()] += 2 * PI;
}
- return new EMap(parameters, pt);
+ return new LCIOTrackParameters(parameters, pt);
}
}
lcsim/src/org/lcsim/contrib/JanStrube/tracking
diff -u -r1.3 -r1.4
--- NewMCFastTrackDriver.java 19 Aug 2006 20:08:02 -0000 1.3
+++ NewMCFastTrackDriver.java 28 Oct 2006 00:48:41 -0000 1.4
@@ -1,5 +1,5 @@
/**
- * @version $Id: NewMCFastTrackDriver.java,v 1.3 2006/08/19 20:08:02 jstrube Exp $
+ * @version $Id: NewMCFastTrackDriver.java,v 1.4 2006/10/28 00:48:41 jstrube Exp $
*/
package org.lcsim.contrib.JanStrube.tracking;
@@ -87,11 +87,11 @@
}
Track t = factory.getTrack(p.getMomentum(), p.getOrigin(), (int)p.getCharge());
- // org.lcsim.event.Track passpartout = new TransitionalTrack(t);
- // trackList.add(passpartout);
- newTrackList.add(t);
+ org.lcsim.event.Track passpartout = new TransitionalTrack(t);
+ trackList.add(passpartout);
+ newTrackList.add(t);
}
- event.put(EventHeader.TRACKS, newTrackList, Track.class, 0);
+ event.put(EventHeader.TRACKS, trackList, org.lcsim.event.Track.class, 0);
}
public void conditionsChanged(ConditionsEvent event) {
lcsim/src/org/lcsim/contrib/JanStrube/tracking
diff -u -r1.6 -r1.7
--- Helix.java 12 Sep 2006 13:28:23 -0000 1.6
+++ Helix.java 28 Oct 2006 00:48:42 -0000 1.7
@@ -25,7 +25,7 @@
* by Paul Avery.
*
* @author tonyj
- * @version $Id: Helix.java,v 1.6 2006/09/12 13:28:23 jstrube Exp $
+ * @version $Id: Helix.java,v 1.7 2006/10/28 00:48:42 jstrube Exp $
*/
public class Helix implements Trajectory {
Hep3Vector origin;
@@ -126,7 +126,12 @@
throw new IllegalArgumentException("radius " + r + "<0");
double darg = r * r / (2. * radius * radiusOfCenter) - radiusOfCenter
/ (2. * radius) - radius / (2. * radiusOfCenter);
- double diff = asin(darg) + phi - phiToCenter;
+ double deltaphi = phi-phiToCenter;
+ if (deltaphi < - Math.PI)
+ deltaphi += 2.* Math.PI;
+ if (deltaphi > Math.PI)
+ deltaphi -= 2.*Math.PI;
+ double diff = asin(darg) + deltaphi;
double result = (radius / cosLambda) * diff;
while (result < 0)
result += Math.abs(radius / cosLambda) * 2 * Math.PI;
lcsim/src/org/lcsim/contrib/JanStrube/tracking
diff -N EMap.java
--- EMap.java 14 Oct 2006 08:45:22 -0000 1.5
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,134 +0,0 @@
-/**
- * @version $Id: EMap.java,v 1.5 2006/10/14 08:45:22 jstrube Exp $
- */
-package org.lcsim.contrib.JanStrube.tracking;
-
-import static java.lang.Math.atan2;
-import static java.lang.Math.cos;
-import static java.lang.Math.sin;
-import static java.lang.Math.sqrt;
-import static org.lcsim.constants.Constants.fieldConversion;
-import static org.lcsim.contrib.JanStrube.tracking.Track.ParameterName.d0;
-import static org.lcsim.contrib.JanStrube.tracking.Track.ParameterName.omega;
-import static org.lcsim.contrib.JanStrube.tracking.Track.ParameterName.phi0;
-import static org.lcsim.contrib.JanStrube.tracking.Track.ParameterName.tanLambda;
-import static org.lcsim.contrib.JanStrube.tracking.Track.ParameterName.z0;
-
-import org.lcsim.contrib.JanStrube.tracking.Track.ParameterName;
-import org.lcsim.spacegeom.CartesianPoint;
-import org.lcsim.spacegeom.CartesianVector;
-import org.lcsim.spacegeom.SpacePoint;
-import org.lcsim.spacegeom.SpaceVector;
-
-public class EMap {
- /**
- * Computes the momentum vector from a given parameter set
- * @param parameters The Parameter object
- * @return The momentum vector corresponding to the given parameters
- */
- public static SpaceVector Parameters2Momentum(EMap parameters) {
- double pt = parameters.pt;
-
- return new CartesianVector(
- pt * cos(parameters.get(phi0))
- , pt * sin(parameters.get(phi0))
- , pt * parameters.get(tanLambda)
- );
- }
- /**
- * Computes the point of closest approach on the track to the given reference point.
- * Note that this function does not do any swimming. It merely returns a different representation of the given parameters.
- * This is meaningless without the reference point however.
- * In order to prevent the user from having to kow the implementation details, the reference point is made an explicit parameter.
- * @param parameters The Parameter object
- * @param refPoint The reference point
- * @return The point of closest approach on the track to the reference point
- */
- public static SpacePoint Parameters2Position(EMap parameters, SpacePoint refPoint) {
- double d_0 = parameters.get(d0);
- double z_0 = parameters.get(z0);
- double phi_0 = parameters.get(phi0);
-
- double x = refPoint.x() - d_0*sin(phi_0);
- double y = refPoint.y() + d_0*cos(phi_0);
- double z = refPoint.z() + z_0;
-
- return new CartesianPoint(x, y, z);
- }
- /**
- * Calculates the parameters of the Track under the assumption that the
- * space-momentum representation is given at the POCA to the reference point.
- * @param pos The point of closest approach on the track to the reference point
- * @param mom The momentum vector at @see pos
- * @param ref The reference point
- * @param charge The charge of the particle
- * @param Bz The z component of the magnetic field. Assuming a homogeneous field parallel to z
- * @return The Parameter object corresponding to the arguments
- */
- public static EMap SpaceMomentum2Parameters(SpacePoint pos, SpaceVector mom, SpacePoint ref, int charge, double field_z) {
- EMap result = new EMap();
- double aqBz = charge*field_z*fieldConversion;
- double x = pos.x() - ref.x();
- double y = pos.y() - ref.y();
- double z_0 = pos.z() - ref.z();
- double phi_0 = mom.phi();
- double pt = mom.rxy();
-
- result.set(d0, -x*sin(phi_0)+ y*cos(phi_0));
- result.set(phi0, phi_0);
- result.set(omega, aqBz/pt);
- result.set(z0, z_0);
- result.set(tanLambda, mom.z()/pt);
- result.setPt(pt);
- return result;
- }
-
- double[] values;
- double pt;
-
- public EMap(EMap map) {
- values = map.values.clone();
- pt = map.pt;
- }
-
- EMap() {
- values = new double[5];
- pt = 0;
- }
-
- EMap(double[] vals, double p_t) {
- values = vals;
- pt = p_t;
- }
-
- double get(ParameterName name) {
- return values[name.ordinal()];
- }
-
- public double getPt() {
- return pt;
- }
-
- public double[] getValues() {
- return values;
- }
-
- void set(ParameterName name, double val) {
- values[name.ordinal()] = val;
- }
-
-
- void setPt(double p_t) {
- pt = p_t;
- }
-
- public String toString() {
- StringBuilder sb = new StringBuilder();
- sb.append(String.format("Parameters:\n"));
- for (ParameterName p : ParameterName.values()) {
- sb.append(String.format("%10s: %g\n", p.name(), values[p.ordinal()]));
- }
- sb.append(String.format("%10s: %g\n", "pt", pt));
- return sb.toString();
- }
-}
lcsim/src/org/lcsim/contrib/JanStrube/standalone
diff -N Tracks.py
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ Tracks.py 28 Oct 2006 00:48:53 -0000 1.1
@@ -0,0 +1,158 @@
+from org.lcsim.util.aida import AIDA
+from org.lcsim.util import Driver
+from org.lcsim.mc.fast.tracking import ReconTrack
+from org.lcsim.contrib.JanStrube.tracking import EMap, NewFastMCTrackFactory
+from org.lcsim.spacegeom import CartesianPoint, CartesianVector
+from org.lcsim.util.swim import HelixSwimmer as Swimmer_old
+from org.lcsim.contrib.JanStrube.tracking import HelixSwimmer as Swimmer_new
+from math import sqrt
+from java.lang import Boolean
+
+false = Boolean('false')
+true = Boolean('true')
+
+class TrackTest(Driver):
+ def __init__(self):
+ self.aida = AIDA.defaultInstance()
+ self.i = 0
+
+ # show that the track parameterization in the FastMC is bull
+ def process(self, event):
+ if self.i % 100 == 0:
+ print 'processing event', self.i
+ self.i += 1
+ tracks = event.getTracks()
+ for t in tracks:
+ particle = t.getMCParticle()
+ origin = particle.getOrigin()
+ momentum = particle.getMomentum()
+ #print 'Particle Origin:', origin
+ #print 'Particle Momentum:', momentum
+ #print 'Track reference point:', t.getReferencePoint()
+ #print 'Track momentum', t.getMomentum()
+ #print 'Track parameters:', t.getTrackParameters()
+ pt = sqrt(t.getPX()**2 + t.getPY()**2)
+ parms = t.getTrackParameters()
+ emap_old = EMap(t.getTrackParameters(), pt)
+ refPoint = CartesianPoint(0, 0, 0)
+ #print 'EMap:', emap_old
+ #print EMap.Parameters2Momentum(emap_old)
+ #print EMap.Parameters2Position(emap_old, refPoint)
+ trackFac = NewFastMCTrackFactory(event, false)
+ o = origin
+ p = momentum
+ c = int(particle.getCharge())
+ newT = trackFac.getTrack(CartesianVector(p.x(), p.y(), p.z()), CartesianPoint(o.x(), o.y(), o.z()), CartesianPoint(0, 0, 0), c)
+ emap_new = newT.getParameters()
+ vals_old = emap_old.getValues()
+ self.aida.cloud1D('OldTrack/d0').fill(vals_old[0])
+ self.aida.cloud1D('OldTrack/phi0').fill(vals_old[1])
+ self.aida.cloud1D('OldTrack/omega').fill(vals_old[2])
+ self.aida.cloud1D('OldTrack/z0').fill(vals_old[3])
+ self.aida.cloud1D('OldTrack/tanLambda').fill(vals_old[4])
+ vals_new = emap_new.getValues()
+ self.aida.cloud1D('NewTrack/d0').fill(vals_new[0])
+ self.aida.cloud1D('NewTrack/phi0').fill(vals_new[1])
+ self.aida.cloud1D('NewTrack/omega').fill(vals_new[2])
+ self.aida.cloud1D('NewTrack/z0').fill(vals_new[3])
+ self.aida.cloud1D('NewTrack/tanLambda').fill(vals_new[4])
+
+ #print newT.getReferencePoint()
+ #print newT.getPosition()
+ #print newT.getMomentum()
+ #print newT.getParameters()
+ # after 10 iterations transforming back and forth
+ for i in range(10):
+ tempPos = EMap.Parameters2Position(emap_old, refPoint)
+ tempMom = EMap.Parameters2Momentum(emap_old)
+ emap_old = EMap.SpaceMomentum2Parameters(tempPos, tempMom, refPoint, c, 5.)
+ tempPos = EMap.Parameters2Position(emap_new, refPoint)
+ tempMom = EMap.Parameters2Momentum(emap_new)
+ emap_new = EMap.SpaceMomentum2Parameters(tempPos, tempMom, refPoint, c, 5.)
+
+ # difference between old parameters after 10 conversions
+ vals_old10 = emap_old.getValues()
+ self.aida.cloud1D('OldTrack/d0 diff after 10').fill(parms[0] - vals_old10[0])
+ self.aida.cloud1D('OldTrack/phi0 diff after 10').fill(parms[1] - vals_old10[1])
+ self.aida.cloud1D('OldTrack/omega diff after 10').fill(parms[2] - vals_old10[2])
+ self.aida.cloud1D('OldTrack/z0 diff after 10').fill(parms[3] - vals_old10[3])
+ self.aida.cloud1D('OldTrack/tanLambda diff after 10').fill(parms[4] - vals_old10[4])
+
+ vals_new10 = emap_new.getValues()
+ # difference between new parameters after 10 conversions
+ self.aida.cloud1D('NewTrack/d0 diff after 10').fill(vals_new[0] - vals_new10[0])
+ self.aida.cloud1D('NewTrack/phi0 diff after 10').fill(vals_new[1] - vals_new10[1])
+ self.aida.cloud1D('NewTrack/omega diff after 10').fill(vals_new[2] - vals_new10[2])
+ self.aida.cloud1D('NewTrack/z0 diff after 10').fill(vals_new[3] - vals_new10[3])
+ self.aida.cloud1D('NewTrack/tanLambda diff after 10').fill(vals_new[4] - vals_new10[4])
+
+ # difference between old and new parameters
+ self.aida.cloud1D('NewTrack-OldTrack d0').fill(vals_new10[0] - vals_old10[0])
+ self.aida.cloud1D('NewTrack-OldTrack phi0').fill(vals_new10[1] - vals_old10[1])
+ self.aida.cloud1D('NewTrack-OldTrack omega').fill(vals_new10[2] - vals_old10[2])
+ self.aida.cloud1D('NewTrack-OldTrack z0').fill(vals_new10[3] - vals_old10[3])
+ self.aida.cloud1D('NewTrack-OldTrack tanLambda').fill(vals_new10[4] - vals_old10[4])
+
+ swimmer_old = Swimmer_old(5)
+ swimmer_new = Swimmer_new(5)
+
+ swimmer_old.setTrack(t)
+ # should be 0
+ dist_old = swimmer_old.getDistanceToPoint(origin)
+ point_old = swimmer_old.getPointAtDistance(dist_old)
+ self.aida.cloud1D('OldTrack/diffOrigin x').fill(point_old.x() - origin.x())
+ self.aida.cloud1D('OldTrack/diffOrigin y').fill(point_old.y() - origin.y())
+ self.aida.cloud1D('OldTrack/diffOrigin z').fill(point_old.z() - origin.z())
+ momentum_old = swimmer_old.getTrajectory().getTangentAtDistance(dist_old)
+ #m = momentum.magnitude()
+ #self.aida.cloud1D('OldTrack/diffMomentum x').fill(momentum.x() - m*momentum_old.x())
+ #self.aida.cloud1D('OldTrack/diffMomentum y').fill(momentum.y() - m*momentum_old.y())
+ #self.aida.cloud1D('OldTrack/diffMomentum z').fill(momentum.z() - m*momentum_old.z())
+ #self.aida.cloud1D('OldTrack distance to Origin').fill(dist_old)
+
+ swimmer_new.setTrack(newT)
+ # should be 0, because point is instantiated there
+ dist_new = swimmer_new.getTrackLengthToPoint(CartesianPoint(origin.v()))
+ point_new = swimmer_new.getPointAtLength(dist_new)
+ self.aida.cloud1D('NewTrack distance to Origin').fill(dist_new)
+ self.aida.cloud1D('NewTrack/diffOrigin x').fill(point_new.x() - origin.x())
+ self.aida.cloud1D('NewTrack/diffOrigin y').fill(point_new.y() - origin.y())
+ self.aida.cloud1D('NewTrack/diffOrigin z').fill(point_new.z() - origin.z())
+ #momentum_new = swimmer_new.getMomentumAtLength(dist_new)
+ #self.aida.cloud1D('NewTrack/diffMomentum x').fill(momentum.x() - momentum_new.x())
+ #self.aida.cloud1D('NewTrack/diffMomentum y').fill(momentum.y() - momentum_new.y())
+ #self.aida.cloud1D('NewTrack/diffMomentum z').fill(momentum.z() - momentum_new.z())
+
+ #print emap_old
+ #print emap_new
+ #print
+ #print
+
+
+class TrackErrorMatrix(Driver):
+ def __init__(self):
+ self.aida = AIDA.defaultInstance()
+
+ def process(self, event):
+ tracks = event.getTracks()
+ for t in tracks:
+ particle = t.getMCParticle()
+ origin = particle.getOrigin()
+ momentum = particle.getMomentum()
+ pt = sqrt(t.getPX()**2 + t.getPY()**2)
+ emap_old = EMap(t.getTrackParameters(), pt)
+ refPoint = CartesianPoint(0, 0, 0)
+ trackFac = NewFastMCTrackFactory(event, false)
+ o = origin
+ p = momentum
+ c = int(particle.getCharge())
+ newT = trackFac.getTrack(CartesianVector(p.x(), p.y(), p.z()), CartesianPoint(o.x(), o.y(), o.z()), CartesianPoint(0, 0, 0), c)
+ errorMatrix_old = t.getErrorMatrix()
+ errorMatrix_new = newT.getErrorMatrix()
+ difference = 0
+ for x in range(5):
+ for y in range(5):
+ difference += (errorMatrix_old.e(x, y) - errorMatrix_new.e(x, y))**2
+
+ self.aida.cloud1D('ErrorMatrix squared difference').fill(difference)
+
lcsim/src/org/lcsim/contrib/JanStrube/standalone
diff -u -r1.2 -r1.3
--- MainLoop.py 19 Aug 2006 20:03:16 -0000 1.2
+++ MainLoop.py 28 Oct 2006 00:48:53 -0000 1.3
@@ -9,9 +9,12 @@
from java.io import File
#from ZvTubePlotter import ZvTubePlotter
from java.lang import System
-from FitterTestDriver import FitterTestDriver
+#from FitterTestDriver import FitterTestDriver
from java.lang import Boolean
from ReconParticleTestDriver import ReconParticleTestDriver
+import NickTrackVtxFitter
+from org.lcsim.contrib.JanStrube.tracking import NewMCFastTrackDriver
+from Tracks import TrackTest, TrackErrorMatrix
True = Boolean("true")
False = Boolean("false")
@@ -20,14 +23,21 @@
loop = LCSimLoop()
# location = URL("ftp://ftp-lcd.slac.stanford.edu/lcd/ILC/ILC500/Zgamma/stdhep/pythia/pythiaZgamma.stdhep")
# location = URL("ftp://ftp-lcd.slac.stanford.edu/lcd/ILC/singleParticle/stdhep/psi_mumu_Theta4-176_5-100GeV.stdhep")
- location = URL("ftp://ftp-lcd.slac.stanford.edu/lcd/ILC/singleParticle/stdhep/K0S_pipi_Theta45-135_5-25Gev.stdhep")
+# location = URL("ftp://ftp-lcd.slac.stanford.edu/lcd/ILC/singleParticle/stdhep/K0S_pipi_Theta45-135_5-25Gev.stdhep")
+# location = URL("ftp://ftp-lcd.slac.stanford.edu/lcd/ILC/singleParticle/sidaug05/slcio/slic/tau_5pi_Theta20-90_10-200GeV_SLIC_v1r9p3_sidaug05.slcio")
+# location = URL("ftp://ftp-lcd.slac.stanford.edu/lcd/ILC/singleParticle/sidaug05/slcio/slic/tau_3pi_Theta20-90_10-200GeV_SLIC_v1r9p3_sidaug05.slcio")
+ location = URL("ftp://ftp-lcd.slac.stanford.edu/lcd/ILC/singleParticle/sidaug05/slcio/slic/psi_mumu_Theta4-176_5-100GeV_SLIC_v1r9p3_sidaug05.slcio")
cache = FileCache()
trackFile = cache.getCachedFile(location)
- loop.setStdhepRecordSource(trackFile, "sidaug05")
-# loop.setLCIORecordSource(input)
+# loop.setStdhepRecordSource(trackFile, "sidaug05")
+ loop.setLCIORecordSource(trackFile)
# no beamspotConstraint, no simple smearing
- loop.add(FitterTestDriver())
-# loop.add(MCFast(false, false))
+ loop.add(MCFast(False, False))
+# loop.add(FitterTestDriver())
+ loop.add(TrackTest())
+ loop.add(TrackErrorMatrix())
+# loop.add(NewMCFastTrackDriver())
+# loop.add(NickTrackVtxFitter())
# loop.add(ZvTubePlotter())
# loop.add(VertexFitterDriver())
# loop.add(ReconParticleTestDriver())
lcsim/src/org/lcsim/contrib/JanStrube/standalone
diff -u -r1.3 -r1.4
--- .cvsignore 10 Sep 2006 11:47:38 -0000 1.3
+++ .cvsignore 28 Oct 2006 00:48:53 -0000 1.4
@@ -4,3 +4,4 @@
*.aida
*.stdhep
*.out
+.*.swp
lcsim/test/org/lcsim/contrib/JanStrube/tracking
diff -N LCIOParameterTest.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ LCIOParameterTest.java 28 Oct 2006 00:48:55 -0000 1.1
@@ -0,0 +1,82 @@
+package org.lcsim.contrib.JanStrube.tracking;
+
+import org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters.ParameterName;
+import org.lcsim.spacegeom.CartesianPoint;
+import org.lcsim.spacegeom.CartesianVector;
+import org.lcsim.spacegeom.SpacePoint;
+import org.lcsim.spacegeom.SpaceVector;
+
+import junit.framework.TestCase;
+
+public class LCIOParameterTest extends TestCase {
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ }
+
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ }
+
+ public void testParameterConversion() {
+ SpacePoint pos = new CartesianPoint(3, 2, 1);
+ SpaceVector mom = new CartesianVector(4, 20, -9);
+ SpacePoint ref1 = new SpacePoint();
+ SpacePoint ref2 = new CartesianPoint(-1, -2, -30);
+ for (int charge=-2; charge<3; charge++) {
+ for (double field=-5; field<5.1; field += 0.5) {
+ LCIOTrackParameters parms = LCIOTrackParameters.SpaceMomentum2Parameters(pos, mom, pos, charge, field);
+ assertEquals(pos, LCIOTrackParameters.Parameters2Position(parms, pos));
+ assertEquals(mom, LCIOTrackParameters.Parameters2Momentum(parms));
+ }
+ }
+ }
+
+ // Test the conversion on some easily predefined geometries
+ public void testCircle() {
+ double field = -1.;
+ SpacePoint location = new CartesianPoint(1, 0, 0);
+ SpaceVector mom = new CartesianVector(0, -1, 1);
+ SpacePoint zero = new SpacePoint();
+ LCIOTrackParameters params = LCIOTrackParameters.SpaceMomentum2Parameters(location, mom, zero, 1, field);
+ assertEquals(params.pt, 1.0);
+ assertEquals(params.get(ParameterName.z0), 0.0);
+ assertEquals(params.get(ParameterName.d0), 1.0);
+ assertEquals(mom, LCIOTrackParameters.Parameters2Momentum(params));
+ assertEquals(location, LCIOTrackParameters.Parameters2Position(params, zero));
+
+ // The reference point has to be on the y axis
+ SpacePoint refPoint = new CartesianPoint(-20, 0, -60);
+ LCIOTrackParameters params2 = LCIOTrackParameters.SpaceMomentum2Parameters(location, mom, refPoint, -1, -field);
+
+ assertEquals(params2.pt, 1.0);
+ assertEquals(params2.get(ParameterName.z0), 60.0);
+ assertEquals(params2.get(ParameterName.d0), -(refPoint.x()-1.0));
+ assertEquals(mom, LCIOTrackParameters.Parameters2Momentum(params2));
+ assertEquals(location, LCIOTrackParameters.Parameters2Position(params2, refPoint));
+ }
+
+ // test a bit more complicated Geometry
+ public void testConversion() {
+ double field = -7.2;
+ int charge = 13;
+ SpacePoint location = new CartesianPoint(3.6, 4.7, 2.9);
+ SpaceVector mom = new CartesianVector(1, 0, 2);
+ // make sure it's the same y as the location
+ SpacePoint refPoint = new CartesianPoint(3.6, 9.2, -11.7);
+ LCIOTrackParameters params = LCIOTrackParameters.SpaceMomentum2Parameters(location, mom, refPoint, charge, field);
+ assertEquals(params.get(ParameterName.phi0), 0, 1e-15);
+ assertEquals(params.get(ParameterName.d0), -4.5, 1e-10);
+ SpaceVector newMom = LCIOTrackParameters.Parameters2Momentum(params);
+ SpacePoint newPos = LCIOTrackParameters.Parameters2Position(params, refPoint);
+ assertEquals(newMom, mom);
+ assertEquals(newPos, location);
+ }
+
+
+ void assertEquals(SpacePoint a, SpacePoint b) {
+ assertEquals(a.x(), b.x(), 1e-10);
+ assertEquals(a.y(), b.y(), 1e-10);
+ assertEquals(a.z(), b.z(), 1e-10);
+ }
+}
lcsim/test/org/lcsim/contrib/JanStrube/tracking
diff -u -r1.3 -r1.4
--- NewTrackTest.java 14 Oct 2006 08:45:24 -0000 1.3
+++ NewTrackTest.java 28 Oct 2006 00:48:53 -0000 1.4
@@ -1,5 +1,5 @@
/**
- * @version $Id: NewTrackTest.java,v 1.3 2006/10/14 08:45:24 jstrube Exp $
+ * @version $Id: NewTrackTest.java,v 1.4 2006/10/28 00:48:53 jstrube Exp $
*/
package org.lcsim.contrib.JanStrube.tracking;
@@ -126,9 +126,9 @@
SpacePoint newPos1 = t.getPosition();
SpaceVector newMom1 = t.getMomentum();
- EMap parms = EMap.SpaceMomentum2Parameters(newPos1, newMom1, ref1, charge, _Bz);
- assertEquals(t.getPosition(), EMap.Parameters2Position(parms, ref1));
- assertEquals(t.getMomentum(), EMap.Parameters2Momentum(parms));
+ LCIOTrackParameters parms = LCIOTrackParameters.SpaceMomentum2Parameters(newPos1, newMom1, ref1, charge, _Bz);
+ assertEquals(t.getPosition(), LCIOTrackParameters.Parameters2Position(parms, ref1));
+ assertEquals(t.getMomentum(), LCIOTrackParameters.Parameters2Momentum(parms));
// lazy method for comparison
assertEquals(t.getParameters().toString(), parms.toString());
}
lcsim/test/org/lcsim/contrib/JanStrube/tracking
diff -u -r1.8 -r1.9
--- HelixSwimmerTrackConsistencyTest.java 23 Oct 2006 19:42:34 -0000 1.8
+++ HelixSwimmerTrackConsistencyTest.java 28 Oct 2006 00:48:54 -0000 1.9
@@ -1,5 +1,5 @@
/**
- * @version $Id: HelixSwimmerTrackConsistencyTest.java,v 1.8 2006/10/23 19:42:34 tonyj Exp $
+ * @version $Id: HelixSwimmerTrackConsistencyTest.java,v 1.9 2006/10/28 00:48:54 jstrube Exp $
*/
package org.lcsim.contrib.JanStrube.tracking;
@@ -213,7 +213,7 @@
assertEquals(swimmerRaw.getPointAtLength(alpha_raw), swimmerTrack.getPointAtLength(alpha_track-alpha), 1e-10);
// d0 is the distance between P0 and Pref in the x-y plane
- double d0 = t.getParameter(Track.ParameterName.d0);
+ double d0 = t.getParameter(LCIOTrackParameters.ParameterName.d0);
SpacePoint origin = swimmerTrack.getPointAtLength(0);
double dist = VectorArithmetic.subtract(origin, t.getReferencePoint()).rxy();
assertEquals(abs(d0), abs(dist), 1e-10);
@@ -240,13 +240,13 @@
// reference Point is (0, 0, 0)
Track t = factory.getTrack(momentum, location, referencePoint, charge, new Random(), false);
// track parameters
- EMap tp = new EMap();
+ LCIOTrackParameters tp = new LCIOTrackParameters();
tp.pt = t.getPt();
- tp.set(Track.ParameterName.d0, t.getParameter(Track.ParameterName.d0));
- tp.set(Track.ParameterName.omega, t.getParameter(Track.ParameterName.omega));
- tp.set(Track.ParameterName.phi0, t.getParameter(Track.ParameterName.phi0));
- tp.set(Track.ParameterName.tanLambda, t.getParameter(Track.ParameterName.tanLambda));
- tp.set(Track.ParameterName.z0, t.getParameter(Track.ParameterName.z0));
+ tp.set(LCIOTrackParameters.ParameterName.d0, t.getParameter(LCIOTrackParameters.ParameterName.d0));
+ tp.set(LCIOTrackParameters.ParameterName.omega, t.getParameter(LCIOTrackParameters.ParameterName.omega));
+ tp.set(LCIOTrackParameters.ParameterName.phi0, t.getParameter(LCIOTrackParameters.ParameterName.phi0));
+ tp.set(LCIOTrackParameters.ParameterName.tanLambda, t.getParameter(LCIOTrackParameters.ParameterName.tanLambda));
+ tp.set(LCIOTrackParameters.ParameterName.z0, t.getParameter(LCIOTrackParameters.ParameterName.z0));
// we don't need an error matrix for this test
NewTrack t1 = new NewTrack(referencePoint, tp, new SymmetricMatrix(5), charge);
lcsim/test/org/lcsim/contrib/JanStrube/tracking
diff -u -r1.1 -r1.2
--- NewFastMCTrackFactoryTest.java 10 Sep 2006 11:47:41 -0000 1.1
+++ NewFastMCTrackFactoryTest.java 28 Oct 2006 00:48:55 -0000 1.2
@@ -1,5 +1,5 @@
/**
- * @version $Id: NewFastMCTrackFactoryTest.java,v 1.1 2006/09/10 11:47:41 jstrube Exp $
+ * @version $Id: NewFastMCTrackFactoryTest.java,v 1.2 2006/10/28 00:48:55 jstrube Exp $
*/
package org.lcsim.contrib.JanStrube.tracking;
@@ -49,7 +49,7 @@
SpaceVector momentum = new CartesianVector(-18.58944945449937, 4.932838972376678, -8.631586722626338);
SpacePoint refPoint = new SpacePoint();
Track t = fac.getTrack(momentum, position, refPoint, -1, new Random(), false);
- SpacePoint track_momentum = EMap.Parameters2Momentum(t.getParameters());
+ SpacePoint track_momentum = LCIOTrackParameters.Parameters2Momentum(t.getParameters());
// assertEquals(momentum.theta(), track_momentum.theta());
HelixSwimmer swimmer = new HelixSwimmer(5);
swimmer.setTrack(t);
@@ -57,7 +57,7 @@
double alpha = swimmer.getTrackLengthToPoint(position);
SpacePoint newPos = swimmer.getPointAtLength(alpha);
SpacePoint newMom = swimmer.getMomentumAtLength(alpha);
- assertEquals(t.getPosition(), EMap.Parameters2Position(t.getParameters(), refPoint), 1e-10);
+ assertEquals(t.getPosition(), LCIOTrackParameters.Parameters2Position(t.getParameters(), refPoint), 1e-10);
assertEquals(newPos, position, 1e-10);
assertEquals(newMom, momentum, 1e-10);
}
lcsim/test/org/lcsim/contrib/JanStrube/tracking
diff -N EMapTest.java
--- EMapTest.java 14 Oct 2006 08:45:24 -0000 1.2
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,82 +0,0 @@
-package org.lcsim.contrib.JanStrube.tracking;
-
-import org.lcsim.contrib.JanStrube.tracking.Track.ParameterName;
-import org.lcsim.spacegeom.CartesianPoint;
-import org.lcsim.spacegeom.CartesianVector;
-import org.lcsim.spacegeom.SpacePoint;
-import org.lcsim.spacegeom.SpaceVector;
-
-import junit.framework.TestCase;
-
-public class EMapTest extends TestCase {
-
- protected void setUp() throws Exception {
- super.setUp();
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
- }
-
- public void testParameterConversion() {
- SpacePoint pos = new CartesianPoint(3, 2, 1);
- SpaceVector mom = new CartesianVector(4, 20, -9);
- SpacePoint ref1 = new SpacePoint();
- SpacePoint ref2 = new CartesianPoint(-1, -2, -30);
- for (int charge=-2; charge<3; charge++) {
- for (double field=-5; field<5.1; field += 0.5) {
- EMap parms = EMap.SpaceMomentum2Parameters(pos, mom, pos, charge, field);
- assertEquals(pos, EMap.Parameters2Position(parms, pos));
- assertEquals(mom, EMap.Parameters2Momentum(parms));
- }
- }
- }
-
- // Test the conversion on some easily predefined geometries
- public void testCircle() {
- double field = -1.;
- SpacePoint location = new CartesianPoint(1, 0, 0);
- SpaceVector mom = new CartesianVector(0, -1, 1);
- SpacePoint zero = new SpacePoint();
- EMap params = EMap.SpaceMomentum2Parameters(location, mom, zero, 1, field);
- assertEquals(params.pt, 1.0);
- assertEquals(params.get(ParameterName.z0), 0.0);
- assertEquals(params.get(ParameterName.d0), 1.0);
- assertEquals(mom, EMap.Parameters2Momentum(params));
- assertEquals(location, EMap.Parameters2Position(params, zero));
-
- // The reference point has to be on the y axis
- SpacePoint refPoint = new CartesianPoint(-20, 0, -60);
- EMap params2 = EMap.SpaceMomentum2Parameters(location, mom, refPoint, -1, -field);
-
- assertEquals(params2.pt, 1.0);
- assertEquals(params2.get(ParameterName.z0), 60.0);
- assertEquals(params2.get(ParameterName.d0), -(refPoint.x()-1.0));
- assertEquals(mom, EMap.Parameters2Momentum(params2));
- assertEquals(location, EMap.Parameters2Position(params2, refPoint));
- }
-
- // test a bit more complicated Geometry
- public void testConversion() {
- double field = -7.2;
- int charge = 13;
- SpacePoint location = new CartesianPoint(3.6, 4.7, 2.9);
- SpaceVector mom = new CartesianVector(1, 0, 2);
- // make sure it's the same y as the location
- SpacePoint refPoint = new CartesianPoint(3.6, 9.2, -11.7);
- EMap params = EMap.SpaceMomentum2Parameters(location, mom, refPoint, charge, field);
- assertEquals(params.get(ParameterName.phi0), 0, 1e-15);
- assertEquals(params.get(ParameterName.d0), -4.5, 1e-10);
- SpaceVector newMom = EMap.Parameters2Momentum(params);
- SpacePoint newPos = EMap.Parameters2Position(params, refPoint);
- assertEquals(newMom, mom);
- assertEquals(newPos, location);
- }
-
-
- void assertEquals(SpacePoint a, SpacePoint b) {
- assertEquals(a.x(), b.x(), 1e-10);
- assertEquals(a.y(), b.y(), 1e-10);
- assertEquals(a.z(), b.z(), 1e-10);
- }
-}
lcsim/src/org/lcsim/contrib/JanStrube/zvtop
diff -u -r1.1 -r1.2
--- ZvUtil.java 9 Oct 2006 17:25:27 -0000 1.1
+++ ZvUtil.java 28 Oct 2006 00:48:55 -0000 1.2
@@ -2,6 +2,7 @@
import java.util.Collection;
+import org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters;
import org.lcsim.contrib.JanStrube.tracking.HelixSwimmer;
import org.lcsim.contrib.JanStrube.tracking.Track;
import org.lcsim.geometry.Detector;
@@ -24,7 +25,7 @@
/**
* Repository of utility functions
* @author jstrube
- * @version $Id: ZvUtil.java,v 1.1 2006/10/09 17:25:27 jstrube Exp $
+ * @version $Id: ZvUtil.java,v 1.2 2006/10/28 00:48:55 jstrube Exp $
*/
final class ZvUtil {
@@ -117,8 +118,8 @@
*/
public static SpaceVector getUnitTangent(double[] hlxPar)
{
- int tanLambda = Track.ParameterName.tanLambda.ordinal();
- int phi = Track.ParameterName.phi0.ordinal();
+ int tanLambda = LCIOTrackParameters.ParameterName.tanLambda.ordinal();
+ int phi = LCIOTrackParameters.ParameterName.phi0.ordinal();
double norm = Math.sqrt(1.+hlxPar[tanLambda]*hlxPar[tanLambda]);
double x = Math.cos(hlxPar[phi])/norm;
double y = Math.sin(hlxPar[phi])/norm;
CVSspam 0.2.8