lcsim/test/org/lcsim/detector/tracker/readout
diff -N SimTrackerHitIdentifierReadoutDriverTest.java
--- SimTrackerHitIdentifierReadoutDriverTest.java 31 Aug 2009 18:04:57 -0000 1.4
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,101 +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.solids.Inside;
-import org.lcsim.detector.IDetectorElement;
-import org.lcsim.detector.IReadout;
-import org.lcsim.detector.identifier.Identifier;
-import org.lcsim.event.EventHeader;
-import org.lcsim.event.SimTrackerHit;
-import org.lcsim.geometry.compact.Subdetector;
-import org.lcsim.recon.tracking.digitization.sisim.config.CollectionHandler;
-import org.lcsim.recon.tracking.digitization.sisim.config.SimTrackerHitReadoutDriver;
-import org.lcsim.util.Driver;
-import org.lcsim.util.cache.FileCache;
-import org.lcsim.util.loop.LCSimLoop;
-
-/**
- * Test the {@link org.lcsim.recon.tracking.digitization.sisim.config.SimTrackerHitReadoutDriver} on the sid01 detector.
- */
-public class SimTrackerHitIdentifierReadoutDriverTest extends TestCase
-{
- public void setUp()
- {
- java.lang.Runtime.getRuntime().gc();
- }
-
- public void testReadout() throws Exception
- {
- URL url =
- new URL("http://www.lcsim.org/test/lcio/muons10_Theta4-176_1-10GeV_SLIC_v2r2p1_sid01.slcio");
- FileCache cache = new FileCache();
- File file = cache.getCachedFile(url);
-
- LCSimLoop loop = new LCSimLoop();
- loop.setLCIORecordSource(file);
-
- String[] colls = {"TkrBarrHits","TkrEndcapHits"};
-
- loop.add( new SimTrackerHitReadoutDriver(colls));
- loop.add( new TestDriver(colls));
- loop.loop(1, null);
- loop.dispose();
- }
-
- class TestDriver
- extends CollectionHandler
- {
- TestDriver(String[] colls)
- {
- super(colls);
- }
-
- protected void process(EventHeader event)
- {
- List<List<SimTrackerHit>> collections = event.get(SimTrackerHit.class);
- for (List<SimTrackerHit> collection : collections)
- {
- if (canHandle(event.getMetaData(collection).getName()))
- {
- for (SimTrackerHit hit : collection)
- {
- //System.out.println("Checking SimTrackerHit at " + hit.getPoint()[0] + "," + hit.getPoint()[1] + " " + hit.getPoint()[2] + " with id: " + new Identifier(hit.getCellID()).toHexString());
- IDetectorElement deHit = hit.getDetectorElement();
- assertTrue("DetectorElement from the hit is null!",deHit!=null);
- assertEquals("IDs do not match",new Identifier(hit.getCellID()),deHit.getIdentifier());
- SimTrackerHit lkpHit = findHitByPosition(hit,deHit.getReadout().getHits(SimTrackerHit.class));
- assertTrue("Failed to find SimTrackerHit in Readout!",lkpHit != null);
- //System.out.println("OK!");
- }
- }
- }
- }
- }
-
- 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;
- }
-}
-
lcsim/test/org/lcsim/detector/tracker/readout
diff -N TrackerEndcapDigitizationDriverTest.java
--- TrackerEndcapDigitizationDriverTest.java 31 Aug 2009 18:04:57 -0000 1.6
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,161 +0,0 @@
-package org.lcsim.detector.tracker.readout;
-
-import java.io.File;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.SortedMap;
-
-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.RawTrackerHit;
-import org.lcsim.event.base.BaseRawTrackerHit;
-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.IReadout;
-
-import org.lcsim.detector.tracker.silicon.SiSensor;
-import org.lcsim.detector.tracker.silicon.ChargeCarrier;
-
-import org.lcsim.recon.tracking.digitization.sisim.SiSensorSim;
-import org.lcsim.recon.tracking.digitization.sisim.CDFSiSensorSim;
-import org.lcsim.recon.tracking.digitization.sisim.ReadoutChip;
-import org.lcsim.recon.tracking.digitization.sisim.Kpix;
-import org.lcsim.recon.tracking.digitization.sisim.SiElectrodeDataCollection;
-import org.lcsim.recon.tracking.digitization.sisim.config.SimTrackerHitReadoutDriver;
-
-/**
- * Reads single muon events 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 TrackerEndcapDigitizationDriverTest extends TestCase
-{
- public TrackerEndcapDigitizationDriverTest(String testName)
- {
- super(testName);
- }
-
- public static Test suite()
- {
- return new TestSuite(TrackerEndcapDigitizationDriverTest.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-_10GeV_SLIC-v2r3p10_geant4-v9r0p1_LCPhys_SiTrackerEndcapTest00.slcio");
- URL url = new URL("http://www.lcsim.org/test/lcio/pythiaZPoleuds-0-1000_SLIC-v2r4p2_geant4-v9r1p0_LCPhys_SiTrackerTest01.slcio");
-
- FileCache cache = new FileCache();
- File file = cache.getCachedFile(url);
-
- LCSimLoop loop = new LCSimLoop();
- loop.setLCIORecordSource(file);
- loop.add( new SimTrackerHitReadoutDriver(new String[] {"SiTrackerEndcap_RO"} ) );
- loop.add( new TestDriver() );
- loop.loop(10, null);
- loop.dispose();
- }
-
- class TestDriver
- extends Driver
- {
- protected void process(EventHeader header)
- {
-
-// System.out.println("\n"+"Processing endcap event: ");
-
- boolean found_hits = false;
-
- // Setup simulation and readout
- SiSensorSim si_simulation = new CDFSiSensorSim();
- ReadoutChip kpix = new Kpix();
-
- IDetectorElement tkr = header.getDetector().getSubdetector("SiTrackerEndcap").getDetectorElement();
-
- List<SiSensor> sensors = tkr.findDescendants(SiSensor.class);
-
- for ( IDetectorElement sensorDE : sensors)
- {
- //System.out.println("casting to sensor -> " + sensorDE.getName());
-
- SiSensor sensor = (SiSensor)sensorDE;
-
- IReadout ro = sensor.getReadout();
- List<SimTrackerHit> hits = ro.getHits(SimTrackerHit.class);
-
- if (!hits.isEmpty())
- {
-
-// System.out.println("\n"+"Simulating sensor: "+sensor.getName());
-
- List<RawTrackerHit> raw_hits = new ArrayList<RawTrackerHit>();
-
- si_simulation.setSensor(sensor);
- Map<ChargeCarrier,SiElectrodeDataCollection> electrode_data = si_simulation.computeElectrodeData();
-
- for (ChargeCarrier carrier : ChargeCarrier.values())
- {
- if (sensor.hasElectrodesOnSide(carrier))
- {
-
-// System.out.println("Readout data: "+electrode_data.get(carrier).getChargeMap());
- assertTrue(electrode_data.get(carrier).getChargeMap().size() > 0);
-
- SortedMap<Integer,List<Integer>> digitized_hits = kpix.readout(electrode_data.get(carrier),sensor.getReadoutElectrodes(carrier));
-
-// System.out.println("# digitized hits: "+digitized_hits.size());
-// assertTrue(digitized_hits.size() > 0); // not a completely safe assertion due to thresholds.
-
- // Create RawTrackerHits
-
- for (Integer readout_cell : digitized_hits.keySet())
- {
- int time = 0;
- long cell_id = sensor.makeStripId(readout_cell,carrier.charge()).getValue();
- short[] adc_values = {digitized_hits.get(readout_cell).get(0).shortValue(),digitized_hits.get(readout_cell).get(1).shortValue()};
-
- Set<SimTrackerHit> simulated_hits = electrode_data.get(carrier).get(readout_cell).getSimulatedHits();
- IDetectorElement detector_element = sensor;
-
- RawTrackerHit raw_hit = new BaseRawTrackerHit(time,cell_id,adc_values,new ArrayList<SimTrackerHit>(simulated_hits),detector_element);
- raw_hits.add(raw_hit);
- found_hits = true;
-
-// System.out.println("ADC data for cell "+readout_cell+": "+
-// raw_hit.getADCValues()[0]+", "+raw_hit.getADCValues()[1]);
-
- double signal = kpix.decodeCharge(raw_hit);
-// System.out.println("Readout data for cell "+readout_cell+": "+signal);
-
- }
-
- }
- }
-
- // Clear simulation and add RawTrackerHits to event
- si_simulation.clearReadout();
- header.put("RawEndcapTrackerHits",raw_hits,RawTrackerHit.class,0,"Kpix");
- }
- }
-
- }
-
- }
-
-}
-
lcsim/test/org/lcsim/detector/tracker/readout
diff -N TrackingVolumeTest.java
--- TrackingVolumeTest.java 31 Aug 2009 18:04:57 -0000 1.2
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,104 +0,0 @@
-package org.lcsim.detector.tracker.readout;
-
-import junit.framework.TestCase;
-
-import java.io.File;
-import java.net.URL;
-
-import org.lcsim.util.Driver;
-import org.lcsim.util.loop.LCSimLoop;
-
-import org.lcsim.util.cache.FileCache;
-
-import org.lcsim.geometry.Detector;
-import org.lcsim.detector.ILogicalVolume;
-import org.lcsim.detector.IPhysicalVolume;
-import org.lcsim.detector.solids.Tube;
-
-/**
- *
- * Shows how to access the detector's tracking volume from an {@link org.lcsim.util.Driver}.
- *
- * @author Jeremy McCormick
- * @version $Id: TrackingVolumeTest.java,v 1.2 2009/08/31 18:04:57 jeremy Exp $
- */
-public class TrackingVolumeTest
-extends TestCase
-{
- public void testTrackingVolume() throws Exception
- {
- URL url =
- new URL("http://www.lcsim.org/test/lcio/K0L_Theta90_5GeV_slic_1_13_9_geant4_8_0_p01_2006-05-15_sid00.slcio");
- FileCache cache = new FileCache();
- File file = cache.getCachedFile(url);
-
- LCSimLoop loop = new LCSimLoop();
- loop.setLCIORecordSource(file);
- loop.add( new TrackingVolumeAccessDriver() );
- loop.loop(1, null);
- loop.dispose();
- }
-
- class TrackingVolumeAccessDriver
- extends Driver
- {
- /**
- * This method is called when a new detector is loaded.
- */
- protected void detectorChanged(Detector detector)
- {
- StringBuffer buff = new StringBuffer();
-
- // Get the tracking volume from the Detector.
- ILogicalVolume trackingVolume = detector.getTrackingVolume().getLogicalVolume();
-
- buff.append(trackingVolume.getName());
- buff.append('\n');
-
- // Loop over the layer envelopes in the tracking volume. These have no real
- // material and are composed of Air.
- for (IPhysicalVolume layer : trackingVolume.getDaughters())
- {
- buff.append(" " + layer.getName());
- buff.append('\n');
- // Loop over the slices within the layer. The slices contain the material.
- for (IPhysicalVolume slice : layer.getLogicalVolume().getDaughters())
- {
- buff.append(" " + slice.getName() + " : ");
-
- // Get the Tube for the slice.
- Tube sliceTube = (Tube)layer.getLogicalVolume().getSolid();
-
- // Looks like part of the barrel.
- if (layer.getName().contains("Barrel"))
- {
- // Print thickness for the barrel which corresponds to outer radius minus inner radius.
- buff.append(sliceTube.getOuterRadius() - sliceTube.getInnerRadius() + " mm ");
- }
- // Looks like part of the endcap.
- else if (layer.getName().contains("Endcap") || layer.getName().contains("positive") || layer.getName().contains("negative"))
- {
- // Print thickness for the endcap which correponds to Z.
- buff.append(sliceTube.getZHalfLength() * 2 + " mm ");
- }
- // Don't know what it is! Ignore it.
- else
- {}
-
- // Print material name.
- buff.append(slice.getLogicalVolume().getMaterial().getName());
-
- if (slice.isSensitive())
- {
- // Flag as sensitive.
- buff.append(", sensitive");
- }
-
- buff.append('\n');
- }
- }
-
- System.out.println(buff.toString());
- }
- }
-}