lcsim/sandbox
diff -N FitterTest.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ FitterTest.java 10 Dec 2008 22:12:29 -0000 1.1
@@ -0,0 +1,82 @@
+package org.lcsim.contrib.JanStrube.vtxFitter;
+
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
+
+import junit.framework.TestCase;
+
+import org.lcsim.mc.fast.tracking.fix.FastMCTrackFactory;
+import org.lcsim.spacegeom.CartesianPoint;
+import org.lcsim.spacegeom.CartesianVector;
+import org.lcsim.spacegeom.SpacePoint;
+import org.lcsim.spacegeom.SpaceVector;
+
+import Jama.Matrix;
+
+public class FitterTest extends TestCase {
+ Matrix A;
+ double[] x;
+ double[] y;
+ protected void setUp() throws Exception {
+ super.setUp();
+ A = new Matrix(2, 3, 2.5);
+ x = new double[] {1, 2, 3};
+ y = x.clone();
+ }
+
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ }
+
+// /*
+// * Test method for 'vtxFitter.Fitter.multiply(Matrix, double[])'
+// */
+// public void testMultiply() {
+// double[] r = multiply(A, x);
+// assertEquals(r.length, A.getRowDimension());
+// assertEquals(r[0], 15.);
+// assertEquals(r[1], 15.);
+// }
+
+
+ public void testFit() {
+ List<VtxTrack> tracks = new ArrayList<VtxTrack>();
+ FastMCTrackFactory fac = new FastMCTrackFactory("sid01", 5., false);
+ SpacePoint pos = new CartesianPoint(1.2, 2.2, 3.2);
+ SpaceVector mom1 = new CartesianVector(1, 2, 3);
+ SpaceVector mom2 = new CartesianVector(2, -2, 1.5);
+ SpaceVector mom3 = new CartesianVector(-1, 2, 2);
+ SpacePoint ref = new CartesianPoint(3, 6, 9);
+ SpacePoint start = new CartesianPoint(1, 1.7, 3);
+ Random rand = new Random();
+ tracks.add(new VtxTrack(fac.getTrack(mom1, pos, ref, -1, rand, true)));
+ tracks.add(new VtxTrack(fac.getTrack(mom2, pos, ref, 1, rand, true)));
+ tracks.add(new VtxTrack(fac.getTrack(mom3, pos, ref, -1, rand, true)));
+ Fitter f = new Fitter(5.0);
+ f.chi2_prev = 1000;
+ //f.x_prev = new Matrix(start.getCartesianArray(), 3);
+ System.out.println(f.x_prev);
+// Vertex particle = f.fit(tracks, new SpacePoint());
+ for (int i=0; i<10; i++) {
+ for (VtxTrack t: tracks) {
+ System.out.println(f.filter(t));
+ System.out.println(f.x_prev);
+ }
+ for (VtxTrack t: tracks) {
+ f.smoothe(t, false);
+ }
+ }
+// System.out.println(particle);
+ }
+
+// public void testDerivativeMatrix() {
+// SpacePoint x = new CartesianPoint(1, 0, 0);
+// SpaceVector p = new CartesianVector(1, 0, 0);
+// Matrix a = getSpatialDerivativeMatrix(x, p, new SpacePoint(), 1, 1);
+// Matrix b = getMomentumDerivativeMatrix(x, p, new SpacePoint(), -1, 1);
+// System.out.println(a);
+// System.out.println(b);
+// }
+}
lcsim/sandbox
diff -N TrackerHitCheaterTest.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ TrackerHitCheaterTest.java 10 Dec 2008 22:12:29 -0000 1.1
@@ -0,0 +1,103 @@
+package org.lcsim.contrib.tracking;
+
+import java.io.File;
+import java.net.URL;
+import java.util.List;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.SimTrackerHit;
+import org.lcsim.event.TrackerHit;
+import org.lcsim.event.base.BaseTrackerHitMC;
+import org.lcsim.util.Driver;
+import org.lcsim.util.cache.FileCache;
+import org.lcsim.util.loop.LCSimLoop;
+
+/**
+ * Reads 2 muon event generated in sid01_polyhedra, which uses
+ * SiTrackerBarrel. For DetectorElements where there is a
+ * Readout containing one hit, check that the hit from the event
+ * and the DE's have matching cell id.
+ */
+public class TrackerHitCheaterTest extends TestCase
+{
+
+ private TrackerHitCheater _hit_cheater = new TrackerHitCheater();
+
+ public TrackerHitCheaterTest(String testName)
+ {
+ super(testName);
+ }
+
+ public static Test suite()
+ {
+ return new TestSuite(TrackerHitCheaterTest.class);
+ }
+
+ public void setUp()
+ {
+ java.lang.Runtime.getRuntime().gc();
+ }
+
+ public void testReadout() throws Exception
+ {
+ URL url =
+ new URL("http://www.lcsim.org/test/lcio/mu_10.0GeV_Theta90_SLIC-v2r3p7_geant4-v9r0p1_LCPhys_SiTrackerBarrelTest00.slcio");
+ FileCache cache = new FileCache();
+ File file = cache.getCachedFile(url);
+
+ LCSimLoop loop = new LCSimLoop();
+ loop.setLCIORecordSource(file);
+ loop.add( new TestDriver() );
+ loop.loop(1, null);
+ loop.dispose();
+ }
+
+ class TestDriver extends Driver
+ {
+ private int nevents=0;
+ protected void process(EventHeader event)
+ {
+// int nhits=0;
+
+ // Get the SimTrackerHits
+ List<SimTrackerHit> simulated_hits = event.get(SimTrackerHit.class, "SiTrackerBarrel_RO");
+// System.out.println("Number of input SimTrackerHits: "+simulated_hits.size());
+
+ List<TrackerHit> tracker_hits = _hit_cheater.makeTrackerHits(simulated_hits);
+// System.out.println("Number of output TrackerHits: "+tracker_hits.size());
+
+ if (nevents == 0)
+ {
+ //assertEquals("Incorrect number of TrackerHits.",tracker_hits.size(),8);
+ assertEquals("Incorrect number of TrackerHits.",tracker_hits.size(),6);
+ }
+
+ for (TrackerHit hit : tracker_hits)
+ {
+ assertTrue("Missing MCParticles.",((BaseTrackerHitMC)hit).mcParticles().size() > 0);
+ assertTrue("Missing SimTrackerHits.",((BaseTrackerHitMC)hit).getSimHits().size() > 0);
+
+// if (nhits<2)
+// {
+// System.out.println("Location of output TrackerHit: ["+hit.getPosition()[0]+
+// ","+hit.getPosition()[1]+
+// ","+hit.getPosition()[2]+"]");
+// System.out.println("Number of MCParticles contributing: "+((BaseTrackerHitMC)hit).mcParticles().size());
+// System.out.println("Number of SimTrackerHits contributing: "+((BaseTrackerHitMC)hit).getSimHits().size());
+// }
+// else if (nhits == 2) {
+// System.out.println("[SNIP]");
+// }
+// ++nhits;
+ }
+// event.put("CheatedTrackerHits",trackerhits,BaseTrackerHitMC.class,0);
+
+ ++nevents;
+ }
+ }
+}
+