Print

Print


Commit in lcsim/test/org/lcsim/detector/driver on MAIN
TrackerDigitizationDriverTest.java+146added 1.1
Test now asserts that hits are found and can thus fail.  Removed sysouts.

lcsim/test/org/lcsim/detector/driver
TrackerDigitizationDriverTest.java added at 1.1
diff -N TrackerDigitizationDriverTest.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ TrackerDigitizationDriverTest.java	14 Oct 2007 06:15:46 -0000	1.1
@@ -0,0 +1,146 @@
+package org.lcsim.detector.driver;
+
+import java.io.File;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+import java.util.HashSet;
+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.contrib.SiStripSim.SiSensorSim;
+import org.lcsim.contrib.SiStripSim.CDFSiSensorSim;
+import org.lcsim.contrib.SiStripSim.ReadoutChip;
+import org.lcsim.contrib.SiStripSim.Kpix;
+import org.lcsim.contrib.SiStripSim.SiElectrodeDataCollection;
+
+/**
+ * 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 TrackerDigitizationDriverTest extends TestCase
+{
+    public TrackerDigitizationDriverTest(String testName)
+    {
+        super(testName);
+    }
+    
+    public static Test suite()
+    {
+        return new TestSuite(TrackerDigitizationDriverTest.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_SiTrackerBarrelTest00.slcio");
+        FileCache cache = new FileCache();
+        File file = cache.getCachedFile(url);
+        
+        LCSimLoop loop = new LCSimLoop();
+        loop.setLCIORecordSource(file);
+        loop.add( new SimTrackerHitIdentifierReadoutDriver(new String[] {"SiTrackerBarrel_RO"} ) );
+        loop.add( new TestDriver() );
+        loop.loop(10, null);
+        loop.dispose();
+    }
+    
+    class TestDriver
+            extends Driver
+    {
+        protected void process(EventHeader header)
+        {
+            
+            boolean found_hits = false;
+            
+            // Setup simulation and readout
+            SiSensorSim si_simulation = new CDFSiSensorSim();
+            ReadoutChip kpix = new Kpix();
+            
+            IDetectorElement tkr = header.getDetector().getSubdetector("SiTrackerBarrel").getDetectorElement();
+            for ( IDetectorElement layer : tkr.getChildren() )
+            {
+                for ( IDetectorElement module : layer.getChildren() )
+                {
+                    for ( IDetectorElement sensorDE : module.getChildren() )
+                    {
+                        SiSensor sensor = (SiSensor)sensorDE;
+                        
+                        IReadout ro = sensor.getReadout();
+                        List<SimTrackerHit> hits = ro.getHits(SimTrackerHit.class);
+                        
+                        if (!hits.isEmpty())
+                        {
+                            
+                            List<RawTrackerHit> raw_hits = new ArrayList<RawTrackerHit>();
+                            si_simulation.simulate(sensor);
+                            
+                            for (ChargeCarrier carrier : ChargeCarrier.values())
+                            {
+                                if (sensor.hasElectrodesOnSide(carrier))
+                                {
+                                    
+                                    SortedMap<Integer,Integer> digitized_hits = kpix.readout(si_simulation.getReadoutData(carrier).getChargeMap(),sensor.getReadoutElectrodes(carrier));
+                                    SiElectrodeDataCollection digitized_data = new SiElectrodeDataCollection(si_simulation.getReadoutData(carrier));
+                                    digitized_data.putChargeMap(digitized_hits);
+                                    
+                                    // Create RawTrackerHits
+                                    for (Integer readout_cell : si_simulation.getReadoutData(carrier).getChargeMap().keySet())
+                                    {
+                                        int time = 0;
+                                        long cell_id = sensor.makeStripId(readout_cell,carrier.charge()).getValue();
+                                        short[] adc_values = {(short)digitized_data.get(readout_cell).getCharge()};
+                                        List<SimTrackerHit> simulated_hits = si_simulation.getReadoutData(carrier).get(readout_cell).getSimulatedHits();
+                                        IDetectorElement detector_element = sensor;
+                                        
+                                        RawTrackerHit raw_hit = new BaseRawTrackerHit(time,cell_id,adc_values,simulated_hits,detector_element);
+                                        raw_hits.add(raw_hit);
+                                        found_hits = true;
+                                    }
+                                    
+                                }
+                            }
+                            
+                            // Clear simulation and add RawTrackerHits to event
+                            si_simulation.clearReadout();
+                            header.put("BarrelTrackerHits",raw_hits,RawTrackerHit.class,0,"Kpix");
+                            
+                        }
+                        
+                    }
+                }
+            }
+            
+            assertTrue(found_hits);    
+       
+        }
+        
+        
+        
+    }
+}
+
CVSspam 0.2.8