Print

Print


Commit in lcsim on MAIN
src/org/lcsim/detector/driver/ExampleRawTrackerHitReadoutDriver.java+104added 1.1
                             /RawTrackerHitReadoutDriver.java-1011.1 removed
test/org/lcsim/detector/driver/RawTrackerHitReadoutDriverTest.java+6-321.1 -> 1.2
+110-133
1 added + 1 removed + 1 modified, total 3 files
JM: Rework RawTrackerHit example driver and test.

lcsim/src/org/lcsim/detector/driver
ExampleRawTrackerHitReadoutDriver.java added at 1.1
diff -N ExampleRawTrackerHitReadoutDriver.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ ExampleRawTrackerHitReadoutDriver.java	24 May 2007 18:15:44 -0000	1.1
@@ -0,0 +1,104 @@
+package org.lcsim.detector.driver;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.lcsim.detector.DetectorElementStore;
+import org.lcsim.detector.IDetectorElement;
+import org.lcsim.detector.IReadout;
+import org.lcsim.detector.identifier.IExpandedIdentifier;
+import org.lcsim.detector.identifier.IIdentifier;
+import org.lcsim.detector.identifier.IIdentifierHelper;
+import org.lcsim.detector.identifier.Identifier;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.RawTrackerHit;
+import org.lcsim.event.SimTrackerHit;
+import org.lcsim.event.EventHeader.LCMetaData;
+import org.lcsim.event.base.BaseRawTrackerHit;
+import org.lcsim.geometry.Subdetector;
+import org.lcsim.geometry.subdetector.SiTrackerBarrel;
+import org.lcsim.util.Driver;
+
+/**
+ * 
+ * Example {@link org.lcsim.util.Driver} that builds collections of 
+ * {@link org.lcsim.event.RawTrackerHit}s from {@link SimTrackerHit} collections.
+ * 
+ * @author Jeremy McCormick
+ * @version $Id: ExampleRawTrackerHitReadoutDriver.java,v 1.1 2007/05/24 18:15:44 jeremy Exp $
+ */
+public class ExampleRawTrackerHitReadoutDriver
+extends Driver
+{
+    protected void process(EventHeader event)
+    {                                  
+        List<List<SimTrackerHit>> collections = event.get(SimTrackerHit.class);
+        for ( List<SimTrackerHit> collection : collections )
+        {
+            LCMetaData meta = event.getMetaData(collection); 
+            Subdetector subdet = meta.getIDDecoder().getSubdetector();
+            IIdentifierHelper helper = subdet.getDetectorElement().getIdentifierHelper();
+
+            if (subdet instanceof SiTrackerBarrel)
+            {
+                List<RawTrackerHit> rawHits = new ArrayList<RawTrackerHit>();
+                
+                for (IDetectorElement layer : subdet.getDetectorElement().getChildren())
+                {
+                    for (IDetectorElement module : layer.getChildren())
+                    {
+                        for (IDetectorElement sensor : module.getChildren())
+                        {
+                            IReadout readout = sensor.getReadout();
+                            List <SimTrackerHit> simHits = readout.getHits(SimTrackerHit.class);
+
+                            if (simHits.size() > 0)
+                            {  
+                                // Get the 1st SimTrackerHit.
+                                SimTrackerHit aSimHit = simHits.get(0);
+
+                                // Create an Identifier from the SimTrackerHit's cellId.
+                                IIdentifier hitId = new Identifier(aSimHit.getCellID());          
+
+                                // Extract the field values up to "side".
+                                IExpandedIdentifier expGeomId = 
+                                    helper.unpack(hitId, 0, helper.getIdentifierDictionary().getFieldIndex("side") - 1);
+
+                                // Repack the Identifier.
+                                IIdentifier geomId = helper.pack(expGeomId);
+
+                                // Lookup the DetectorElement from the Identifier.
+                                IDetectorElement deHit = 
+                                    DetectorElementStore.getInstance().findDetectorElement(geomId);
+
+                                // Fatal error if DetectorElement was not found.
+                                if (deHit == null)
+                                {
+                                    throw new RuntimeException("DetectorElement not found with id <"+geomId.toHexString()+">.");
+                                }
+                                
+                                // Create a RawTrackerHit.
+                                // FIXME: Create real time and adcValues.
+                                RawTrackerHit rawHit = 
+                                    new BaseRawTrackerHit(
+                                            0,                         // time    
+                                            (long)aSimHit.getCellID(), // cellId
+                                            new short[]{},             // adcValues 
+                                            aSimHit.getIDDecoder(),    // IDDecoder 
+                                            simHits,                   // SimTrackerHits
+                                            deHit);                    // DetectorElement                                
+
+                                // Add the hit to the DetectorElement's Readout.
+                                IReadout ro = deHit.getReadout();
+                                ro.addHit(rawHit);
+                            }
+                        }                        
+                    }
+                    
+                    // Put the RawTrackerHit collection into the event.
+                    event.put(meta.getName() + "_RawTrackerHits", rawHits, RawTrackerHit.class, 0, meta.getName());
+                }              
+            }
+        }
+    }
+}
\ No newline at end of file

lcsim/src/org/lcsim/detector/driver
RawTrackerHitReadoutDriver.java removed after 1.1
diff -N RawTrackerHitReadoutDriver.java
--- RawTrackerHitReadoutDriver.java	23 May 2007 20:14:58 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,101 +0,0 @@
-package org.lcsim.detector.driver;
-
-import java.util.List;
-import java.util.Map;
-
-import org.lcsim.detector.DetectorElementStore;
-import org.lcsim.detector.IDetectorElement;
-import org.lcsim.detector.IReadout;
-import org.lcsim.detector.identifier.IExpandedIdentifier;
-import org.lcsim.detector.identifier.IIdentifier;
-import org.lcsim.detector.identifier.IIdentifierField;
-import org.lcsim.detector.identifier.IIdentifierHelper;
-import org.lcsim.detector.identifier.Identifier;
-import org.lcsim.event.EventHeader;
-import org.lcsim.event.RawTrackerHit;
-import org.lcsim.geometry.subdetector.SiTrackerBarrel;
-
-/**
- * Assigns the corresponding {@link org.lcsim.detector.IDetectorElement} 
- * to a {@link org.lcsim.event.RawTrackerHit}.
- *  
- * @author Jeremy McCormick
- * @version $Id: RawTrackerHitReadoutDriver.java,v 1.1 2007/05/23 20:14:58 jeremy Exp $
- */
-public class RawTrackerHitReadoutDriver 
-extends CollectionHandler
-{
-    public RawTrackerHitReadoutDriver(List<String> collectionNames)
-    {
-        super(collectionNames);
-        add(new ReadoutCleanupDriver(collectionNames));
-    }
-
-    public RawTrackerHitReadoutDriver(String[] collectionNames)
-    {        
-        super(collectionNames);
-        add(new ReadoutCleanupDriver(collectionNames));
-    }
-    
-    static final private String idKey[] = 
-        new String[] {"system","barrel","layer","module","sensor","side","strip"};
-    protected void process(EventHeader header)
-    {                          
-        super.process(header);
-        List<List<RawTrackerHit>> collections = header.get(RawTrackerHit.class);
-        for ( List<RawTrackerHit> collection : collections )
-        {
-            if (canHandle(header.getMetaData( collection ).getName()))
-            {
-                IIdentifierHelper helper = header.getMetaData(collection).getIDDecoder().getSubdetector().getDetectorElement().getIdentifierHelper();
-                
-                // Check that the id is in the expected format.
-                Map<String,IIdentifierField> fields = helper.getIdentifierDictionary().getFieldNameMap();
-                for (int i=0; i<fields.size(); i++)
-                {
-                    if (i > (idKey.length - 1))
-                    {
-                        throw new RuntimeException("Index out of range <"+i+">.");
-                    }
-                    
-                    IIdentifierField field = fields.get(idKey[i]);
-                    
-                    if (field == null)
-                    {
-                        throw new RuntimeException("Missing expected field <"+idKey[i]+">.");
-                    }
-                    
-                    if (field.getOrder() != i)
-                    {
-                        throw new RuntimeException("The field <"+idKey[i]+"> is in the wrong order.");
-                    }
-                }
-                
-                for (RawTrackerHit hit : collection)
-                {
-                        IDetectorElement deSubdet = hit.getSubdetector().getDetectorElement();
-                        IIdentifier hitId = new Identifier(hit.getCellID());          
-                        
-                        // Extract the field values up to, but not including, "side".
-                        IExpandedIdentifier expGeomId = helper.unpack(hitId, 0, helper.getIdentifierDictionary().getFieldIndex("side") - 1);
-                        
-                        // Repack the ID, with non-geometric fields removed.
-                        IIdentifier geomId = helper.pack(expGeomId);
-                        
-                        // Lookup the DetectorElement.
-                        IDetectorElement deHit = 
-                            DetectorElementStore.getInstance().findDetectorElement(geomId);
-                        
-                        if (deHit == null)
-                        {
-                            throw new RuntimeException("DetectorElement not found with id <"+geomId.toHexString()+">.");
-                        }
-                        
-                        hit.setDetectorElement(deHit);
-                        IReadout ro = deHit.getReadout();
-                        ro.addHit(hit);
-                }
-            }
-        }        
-    }                     
-}

lcsim/test/org/lcsim/detector/driver
RawTrackerHitReadoutDriverTest.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- RawTrackerHitReadoutDriverTest.java	23 May 2007 20:14:58 -0000	1.1
+++ RawTrackerHitReadoutDriverTest.java	24 May 2007 18:15:45 -0000	1.2
@@ -1,18 +1,12 @@
 package org.lcsim.detector.driver;
 
 import java.net.URL;
-import java.util.ArrayList;
 import java.util.List;
 
-import junit.framework.*;
+import junit.framework.TestCase;
 
-import org.lcsim.detector.DetectorElementStore;
-import org.lcsim.detector.driver.RawTrackerHitReadoutDriver;
-import org.lcsim.detector.driver.SimTrackerHitIdentifierReadoutDriver;
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.RawTrackerHit;
-import org.lcsim.event.SimTrackerHit;
-import org.lcsim.event.base.BaseRawTrackerHit;
 import org.lcsim.util.Driver;
 import org.lcsim.util.cache.FileCache;
 import org.lcsim.util.loop.LCSimLoop;
@@ -27,49 +21,29 @@
     
     private static final String resource = 
         "http://www.lcsim.org/test/lcio/mu-_10GeV_SiTrackerBarrelTest00.slcio";
-    
-    private static final String[] collection = new String[] { "SiTrackerBarrel_RO" };
-    
+        
     public void testRawTrackerHitIO() throws Exception
     {         
         LCSimLoop writeLoop = new LCSimLoop();
         writeLoop.setLCIORecordSource((new FileCache()).getCachedFile(new URL(resource)));
         
         writeLoop.add(new SimTrackerHitIdentifierReadoutDriver(new String[] { "SiTrackerBarrel_RO" } ));
-        writeLoop.add(new RawTrackerHitMaker());
-        writeLoop.add(new RawTrackerHitReadoutDriver(new String[] { "RawTrackerHitTest" }));
+        writeLoop.add(new ExampleRawTrackerHitReadoutDriver());
         writeLoop.add(new CheckDriver());
         writeLoop.loop(1);
         writeLoop.dispose();        
     }    
-            
-    private class RawTrackerHitMaker extends Driver
-    {
-        protected void process(EventHeader event)
-        {
-            List<RawTrackerHit> rawHits = new ArrayList<RawTrackerHit>();
-            List<SimTrackerHit> simHits = event.get(SimTrackerHit.class, "SiTrackerBarrel_RO");
-            for ( SimTrackerHit simHit : simHits )
-            {
-                List<SimTrackerHit> thisSimHit = new ArrayList<SimTrackerHit>();
-                thisSimHit.add(simHit);
-                RawTrackerHit rawHit = 
-                    new BaseRawTrackerHit(0,(long)simHit.getCellID(),new short[]{},simHit.getIDDecoder(),thisSimHit);                
-                rawHits.add(rawHit);
-            }                        
-            event.put("RawTrackerHitTest", rawHits, RawTrackerHit.class, 0, "SiTrackerBarrel_RO");
-        }
-    }
-    
+                
     private class CheckDriver extends Driver
     {
         protected void process(EventHeader event)
         {     
-            List<RawTrackerHit> rawHits = event.get(RawTrackerHit.class, "RawTrackerHitTest");
+            List<RawTrackerHit> rawHits = event.get(RawTrackerHit.class, "SiTrackerBarrel_RO_RawTrackerHits");
             for (RawTrackerHit hit : rawHits)
             {
                 assertTrue(hit.getIdentifier() != null);
                 assertTrue(hit.getDetectorElement() != null);
+                assertTrue(hit.getSimTrackerHit().size() > 0);
                 assertEquals(hit.getDetectorElement(), hit.getSimTrackerHit().get(0).getDetectorElement());                
             }
         }
CVSspam 0.2.8