lcsim/src/org/lcsim/detector
diff -N ReadoutCleanupDriver.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ ReadoutCleanupDriver.java 27 Apr 2007 12:37:46 -0000 1.1
@@ -0,0 +1,21 @@
+package org.lcsim.detector;
+
+import org.lcsim.event.EventHeader;
+import org.lcsim.util.Driver;
+import org.lcsim.detector.DetectorElementStore;
+import org.lcsim.detector.IDetectorElement;
+import org.lcsim.detector.IDetectorElementStore;
+
+public class ReadoutCleanupDriver
+extends Driver
+{
+ protected void process(EventHeader event)
+ {
+ for ( IDetectorElement de : DetectorElementStore.getInstance() )
+ {
+ if ( de.hasReadout() ) {
+ de.getReadout().clear();
+ }
+ }
+ }
+}
lcsim/src/org/lcsim/detector/tracker
diff -u -r1.1 -r1.2
--- SimTrackerHitPositionalReadoutDriver.java 27 Apr 2007 01:10:23 -0000 1.1
+++ SimTrackerHitPositionalReadoutDriver.java 27 Apr 2007 12:37:46 -0000 1.2
@@ -7,6 +7,7 @@
import org.lcsim.detector.DetectorElement;
import org.lcsim.detector.IDetectorElement;
+import org.lcsim.detector.IReadout;
import org.lcsim.detector.Readout;
import org.lcsim.event.EventHeader;
import org.lcsim.event.SimTrackerHit;
@@ -28,19 +29,9 @@
DetectorElement deHit =
(DetectorElement)deSubdet.findDetectorElement( new BasicHep3Vector( hit.getPoint() ) );
hit.setDetectorElement( deHit );
- SimTrackerHitReadout ro = new SimTrackerHitReadout( deHit.getName() );
- ro.addHit(hit);
- deHit.setReadout(ro);
+ Readout<SimTrackerHit> ro = (Readout<SimTrackerHit>)deHit.getReadout();
+ ro.addHit( hit );
}
}
}
-
- class SimTrackerHitReadout
- extends Readout<SimTrackerHit>
- {
- public SimTrackerHitReadout(String name)
- {
- super(name);
- }
- }
-}
\ No newline at end of file
+}
lcsim/src/org/lcsim/detector/tracker
diff -N SimTrackerHitReadout.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ SimTrackerHitReadout.java 27 Apr 2007 12:37:46 -0000 1.1
@@ -0,0 +1,8 @@
+package org.lcsim.detector.tracker;
+
+import org.lcsim.detector.Readout;
+import org.lcsim.event.SimTrackerHit;
+
+public class SimTrackerHitReadout
+extends Readout<SimTrackerHit>
+{}
lcsim/test/org/lcsim/detector/tracker
diff -u -r1.2 -r1.3
--- SimTrackerHitPositionalReadoutDriverTest.java 27 Apr 2007 01:12:23 -0000 1.2
+++ SimTrackerHitPositionalReadoutDriverTest.java 27 Apr 2007 12:37:46 -0000 1.3
@@ -8,16 +8,24 @@
import junit.framework.TestCase;
import junit.framework.TestSuite;
+import hep.physics.vec.BasicHep3Vector;
+
import org.lcsim.event.EventHeader;
import org.lcsim.event.SimTrackerHit;
import org.lcsim.util.Driver;
import org.lcsim.util.cache.FileCache;
import org.lcsim.util.loop.LCSimLoop;
import org.lcsim.detector.IDetectorElement;
-import org.lcsim.detector.Readout;
+import org.lcsim.detector.IReadout;
+import org.lcsim.detector.ReadoutCleanupDriver;
-public class SimTrackerHitPositionalReadoutDriverTest
-extends TestCase
+/**
+ * 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 SimTrackerHitPositionalReadoutDriverTest extends TestCase
{
public SimTrackerHitPositionalReadoutDriverTest(String testName)
{
@@ -28,7 +36,12 @@
{
return new TestSuite(SimTrackerHitPositionalReadoutDriverTest.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_5.0GeV_Theta90_sid01_polyhedra.slcio");
@@ -39,10 +52,11 @@
loop.setLCIORecordSource(file);
loop.add( new SimTrackerHitPositionalReadoutDriver() );
loop.add( new TestDriver() );
- loop.loop(-1);
+ loop.add( new ReadoutCleanupDriver() );
+ loop.loop(2);
loop.dispose();
- }
-
+ }
+
class TestDriver
extends Driver
{
@@ -50,16 +64,19 @@
{
List<List<SimTrackerHit>> collections = header.get(SimTrackerHit.class);
for ( List<SimTrackerHit> collection : collections )
- {
- for ( SimTrackerHit hit : collection )
- {
- IDetectorElement deHit = hit.getDetectorElement();
- //System.out.println( "hit on DE <" + deHit.getName() + ">");
- Readout ro = (Readout<SimTrackerHit>)deHit.getReadout();
- assert(ro.getHits().contains(hit));
+ {
+ for ( SimTrackerHit hit : collection )
+ {
+ IDetectorElement de = hit.getDetectorElement();
+ IReadout<SimTrackerHit> ro = de.getReadout();
+ List<SimTrackerHit> hits = ro.getHits();
+ for ( SimTrackerHit deHit : hits )
+ {
+ assertEquals( "SimTrackerHit ids did not match!", hit.getCellID(), deHit.getCellID() );
+ assertTrue( de.getGeometry().isInside( new BasicHep3Vector( hit.getPoint() ) ) );
+ }
}
}
-
}
}
}