lcsim/src/org/lcsim/detector/driver
diff -N SimTrackerHitPositionalReadoutDriver.java
--- SimTrackerHitPositionalReadoutDriver.java 24 Apr 2009 18:23:59 -0000 1.4
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,60 +0,0 @@
-package org.lcsim.detector.driver;
-
-import hep.physics.vec.BasicHep3Vector;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.lcsim.detector.DetectorElement;
-import org.lcsim.detector.IDetectorElement;
-import org.lcsim.detector.IReadout;
-import org.lcsim.event.EventHeader;
-import org.lcsim.event.SimTrackerHit;
-import org.lcsim.recon.tracking.digitization.sisim.CollectionHandler;
-
-public class SimTrackerHitPositionalReadoutDriver
-extends CollectionHandler
-{
- public SimTrackerHitPositionalReadoutDriver(List<String> collectionNames)
- {
- super(collectionNames);
- add( new ReadoutCleanupDriver( collectionNames ) );
- }
-
- public SimTrackerHitPositionalReadoutDriver(String[] collectionNames)
- {
- super(collectionNames);
- add( new ReadoutCleanupDriver( collectionNames ) );
- }
-
- protected void process(EventHeader header)
- {
- super.process(header);
- List<List<SimTrackerHit>> collections = header.get(SimTrackerHit.class);
- List<DetectorElement> delist = new ArrayList<DetectorElement>();
- for ( List<SimTrackerHit> collection : collections )
- {
- if ( canHandle( header.getMetaData( collection ).getName() ) )
- {
- for ( SimTrackerHit hit : collection )
- {
- IDetectorElement deSubdet = hit.getSubdetector().getDetectorElement();
- DetectorElement deHit =
- (DetectorElement)deSubdet.findDetectorElement( new BasicHep3Vector( hit.getPoint() ) );
- hit.setDetectorElement( deHit );
- IReadout ro = deHit.getReadout();
- ro.addHit( hit );
-
- delist.add(deHit);
- }
- }
- }
-
- /*
- for ( DetectorElement de : delist )
- {
- System.out.println( de.getReadout().toString());
- }
- */
- }
-}
lcsim/test/org/lcsim/detector/tracker/readout
diff -N SimTrackerHitPositionalReadoutDriverTest.java
--- SimTrackerHitPositionalReadoutDriverTest.java 9 Apr 2008 14:04:06 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,147 +0,0 @@
-package org.lcsim.detector.tracker.readout;
-
-import hep.physics.vec.BasicHep3Vector;
-
-import java.io.File;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.List;
-
-import junit.framework.Test;
-import junit.framework.TestCase;
-import junit.framework.TestSuite;
-import org.lcsim.detector.driver.*;
-
-import org.lcsim.detector.solids.Inside;
-import org.lcsim.detector.IDetectorElement;
-import org.lcsim.detector.IReadout;
-import org.lcsim.detector.identifier.Identifier;
-import org.lcsim.detector.identifier.IIdentifierHelper;
-import org.lcsim.event.EventHeader;
-import org.lcsim.event.SimTrackerHit;
-import org.lcsim.geometry.compact.Subdetector;
-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 SimTrackerHitPositionalReadoutDriverTest extends TestCase
-{
- public SimTrackerHitPositionalReadoutDriverTest(String testName)
- {
- super(testName);
- }
-
- public static Test suite()
- {
- 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_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 SimTrackerHitPositionalReadoutDriver(new String[] {"SiTrackerBarrel_RO"} ) );
- loop.add( new TestDriver() );
- loop.loop(1, null);
- loop.dispose();
- }
-
- class TestDriver
- extends Driver
- {
- protected void process(EventHeader header)
- {
- List<SimTrackerHit> hitsFromRO = new ArrayList<SimTrackerHit>();
- Subdetector tkr = header.getDetector().getSubdetector("SiTrackerBarrel");
- IIdentifierHelper helper = tkr.getDetectorElement().getIdentifierHelper();
- for ( IDetectorElement layer : tkr.getDetectorElement().getChildren() )
- {
- for ( IDetectorElement module : layer.getChildren() )
- {
- for ( IDetectorElement sensor : module.getChildren() )
- {
- IReadout ro = sensor.getReadout();
-
- for ( SimTrackerHit rohit : ro.getHits(SimTrackerHit.class) )
- {
- hitsFromRO.add( rohit );
- }
- }
- }
- }
-
- List<SimTrackerHit> eventHits = header.get(SimTrackerHit.class, "SiTrackerBarrel_RO");
-
- assertEquals( "Collection and detector readout have different number of hits!", eventHits.size(), hitsFromRO.size() );
-
- for ( SimTrackerHit hit : eventHits )
- {
- IDetectorElement de = hit.getDetectorElement();
-
- // Check that DetectorElement and hit have same id.
-
- //System.out.println("deId = " + helper.unpack( de.getIdentifier() ).toString() );
- //System.out.println("hitId = " + helper.unpack( new Identifier( hit.getCellID() ) ).toString() );
- //System.out.println();
-
- assertEquals(
- "DetectorElement id and hit id are different!",
- de.getIdentifier(),
- new Identifier( hit.getCellID() ) );
-
- // Get the Readoout.
- IReadout ro = de.getReadout();
-
- // Get the hits from the Readout.
- List<SimTrackerHit> hits = ro.getHits( SimTrackerHit.class );
-
- // Loop over the hits in the Readout.
- for ( SimTrackerHit deHit : hits )
- {
- // Check that the cellIDs are the same for the event hit and the Readout hit.
- assertEquals( "CellIDs do not match!", hit.getCellID(), deHit.getCellID() );
-
- // Check that the SimTrackerHit is inside the DetectorElement it is assigned to.
- assertEquals( "SimTrackerHit not inside its DetectorElement!", de.getGeometry().inside( new BasicHep3Vector( hit.getPoint() ) ), Inside.INSIDE );
-
- // Check that the hit can be looked up by position in the Readout hits.
- SimTrackerHit lkpHit = findHitByPosition( hit, hits );
- assertTrue( "Didn't find hit by position on the Readout!", lkpHit != null );
- }
- }
- }
-
- private SimTrackerHit findHitByPosition( SimTrackerHit findHit, List<SimTrackerHit> hits)
- {
- double[] findHitPos = findHit.getPoint();
- for ( SimTrackerHit hit : hits )
- {
- double[] hitPos = hit.getPoint();
- if ( findHitPos[0] == hitPos[0] &&
- findHitPos[1] == hitPos[1] &&
- findHitPos[2] == hitPos[2] )
- {
- return hit;
- }
- }
- return null;
- }
- }
-}
-