Print

Print


Commit in lcsim-contrib/src/main/java/org/lcsim/contrib/mgraham/sATLASDigi on MAIN
TrackerHitDriver_User_sATLAS.java+67added 1.1
MyDigiHitMaker.java+9-261.4 -> 1.5
TrackerHitDriver_sATLAS.java+297-491.6 -> 1.7
+373-75
1 added + 2 modified, total 3 files
Try not to break code in Matt's area...

lcsim-contrib/src/main/java/org/lcsim/contrib/mgraham/sATLASDigi
TrackerHitDriver_User_sATLAS.java added at 1.1
diff -N TrackerHitDriver_User_sATLAS.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ TrackerHitDriver_User_sATLAS.java	28 Apr 2009 21:19:23 -0000	1.1
@@ -0,0 +1,67 @@
+/*
+ * TrackerHitDriver_User.java
+ *
+ * Created on April 4, 2008, 4:13 PM
+ *
+ * To change this template, choose Tools | Template Manager
+ * and open the template in the editor.
+ */
+
+package org.lcsim.contrib.mgraham.sATLASDigi;
+
+import org.lcsim.util.Driver;
+
+/**
+ *
+ * @author tknelson
+ */
+public class TrackerHitDriver_User_sATLAS extends Driver
+{
+    
+    TrackerHitDriver_sATLAS _trackerhit_driver;
+    
+    /** Creates a new instance of TrackerHitDriver_sATLAS */
+    public TrackerHitDriver_User_sATLAS()
+    {
+        _trackerhit_driver = new TrackerHitDriver_sATLAS();
+        
+        _trackerhit_driver.setReadout("VtxBarrHits");
+        _trackerhit_driver.setReadout("SCTShortBarrHits");
+        _trackerhit_driver.setReadout("SCTLongBarrHits");
+        _trackerhit_driver.setReadout("VtxEndcapHits");
+        _trackerhit_driver.setReadout("SCTShortEndcapHits");
+        _trackerhit_driver.setReadout("SiTrackerEndcap_RO");
+
+        _trackerhit_driver.addElementToProcess("VtxPixelBarrel");
+        _trackerhit_driver.addElementToProcess("SCTShortBarrel");
+        _trackerhit_driver.addElementToProcess("SCTLongBarrel");
+        _trackerhit_driver.addElementToProcess("VtxPixelEndcap");
+        _trackerhit_driver.addElementToProcess("SCTShortEndcap");
+        _trackerhit_driver.addElementToProcess("SCTLongEndcap");
+        
+        super.add( _trackerhit_driver );
+    }
+    
+    // Collection names
+    //-----------------
+    public String getRawHitsName()
+    {
+        return _trackerhit_driver.getRawHitsName();
+    }
+    
+    public String getStripHits1DName()
+    {
+        return _trackerhit_driver.getStripHits1DName();
+    }
+    
+    public String getPixelHitsName()
+    {
+        return _trackerhit_driver.getPixelHitsName();
+    }
+    
+    public String getStripHits2DName()
+    {
+        return _trackerhit_driver.getStripHits2DName();
+    }
+    
+}

lcsim-contrib/src/main/java/org/lcsim/contrib/mgraham/sATLASDigi
MyDigiHitMaker.java 1.4 -> 1.5
diff -u -r1.4 -r1.5
--- MyDigiHitMaker.java	24 Apr 2009 20:59:35 -0000	1.4
+++ MyDigiHitMaker.java	28 Apr 2009 21:19:23 -0000	1.5
@@ -4,16 +4,8 @@
  */
 package org.lcsim.contrib.mgraham.sATLASDigi;
 
-import hep.aida.IHistogram2D;
-import hep.physics.vec.BasicHep3Vector;
-import hep.physics.vec.Hep3Vector;
-import java.io.File;
 import java.util.List;
-//import org.lcsim.recon.tracking.digitization.sistripsim.TrackerHitDriver_User;
-import org.lcsim.event.EventHeader;
-import org.lcsim.event.SimTrackerHit;
-import org.lcsim.recon.vertexing.pixsim.PixilatedSensorManager;
-import org.lcsim.recon.vertexing.pixsim.SensorOption;
+
 import org.lcsim.fit.helicaltrack.HelicalTrackHitDriver;
 import org.lcsim.fit.helicaltrack.HelicalTrackHitDriver.HitType;
 import org.lcsim.recon.tracking.seedtracker.SeedStrategy;
@@ -32,27 +24,18 @@
  
     public MyDigiHitMaker() {
 
-        //Initialize Nick's Pixel hit making code
-        PixilatedSensorManager psm = new PixilatedSensorManager(SensorOption.ClassicCCD, true);
-        add(psm);
-        PixelCheater pcB = new PixelCheater("VtxBarrHits", 0.0075, 0.075, true);
-//        PixelCheater pcB = new PixelCheater("VtxBarrHits",0.000000001,0.000000001,true);
-        add(pcB);
-        PixelCheater pcE = new PixelCheater("VtxEndcapHits", 0.0075, 0.075, false);
-        add(pcE);
-//         sInitialize Tim's TrackerHit making code
-        TrackerHitDriver_sATLAS thd = new TrackerHitDriver_sATLAS();
+        //  Digitization and hit making driver for planar sensors
+        TrackerHitDriver_User_sATLAS thd = new TrackerHitDriver_User_sATLAS();
         add(thd);
 
+        //  Driver to make HelicalTrackHits for tracking
         HelicalTrackHitDriver hitdriver = new HelicalTrackHitDriver();
-        hitdriver.addCollection(((TrackerHitDriver_sATLAS) thd).getStripHits1DName(), HitType.Digitized);
-        hitdriver.addCollection("VtxBarrHits_PixelCheater", HitType.Base);
-        hitdriver.addCollection("VtxEndcapHits_PixelCheater", HitType.Base);
-        hitdriver.addCollection("RecVtxBarrHits", HitType.Base);
-        hitdriver.addCollection("RecVtxEndcapHits", HitType.Base);
-
-        hitdriver.OutputCollection("HelicalTrackHits"); // the default, but it might change?
+        hitdriver.addCollection(((TrackerHitDriver_User_sATLAS) thd).getStripHits1DName(), HitType.Digitized);
+        hitdriver.addCollection(((TrackerHitDriver_User_sATLAS) thd).getPixelHitsName(), HitType.Digitized);
+        hitdriver.OutputCollection("HelicalTrackHits");
         add(hitdriver);
+
+        //  Tracking code
         String sfile = StrategyXMLUtils.getDefaultStrategiesPrefix() + "sATLASBarrel-SM08.xml";
         List<SeedStrategy> slist = StrategyXMLUtils.getStrategyListFromResource(sfile);
 

lcsim-contrib/src/main/java/org/lcsim/contrib/mgraham/sATLASDigi
TrackerHitDriver_sATLAS.java 1.6 -> 1.7
diff -u -r1.6 -r1.7
--- TrackerHitDriver_sATLAS.java	27 Apr 2009 21:08:32 -0000	1.6
+++ TrackerHitDriver_sATLAS.java	28 Apr 2009 21:19:23 -0000	1.7
@@ -1,69 +1,317 @@
 /*
- * TrackerHitDriver_User.java
+ * TrackerHitDriver.java
  *
- * Created on April 4, 2008, 4:13 PM
+ * Created on February 15, 2008, 7:09 PM
  *
  * To change this template, choose Tools | Template Manager
  * and open the template in the editor.
  */
-
 package org.lcsim.contrib.mgraham.sATLASDigi;
-import org.lcsim.recon.tracking.digitization.sisim.TrackerHitDriver;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.lcsim.detector.IDetectorElement;
+import org.lcsim.detector.tracker.silicon.SiSensor;
+import org.lcsim.detector.tracker.silicon.SiTrackerModule;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.RawTrackerHit;
+import org.lcsim.geometry.Detector;
+import org.lcsim.recon.tracking.digitization.sisim.CDFSiSensorSim;
+import org.lcsim.recon.tracking.digitization.sisim.Clusterer;
+import org.lcsim.recon.tracking.digitization.sisim.GenericReadoutChip;
+import org.lcsim.recon.tracking.digitization.sisim.PixelHitMaker;
+import org.lcsim.recon.tracking.digitization.sisim.RawTrackerHitMaker;
+import org.lcsim.recon.tracking.digitization.sisim.ReadoutChip;
+import org.lcsim.recon.tracking.digitization.sisim.SiDigitizer;
+import org.lcsim.recon.tracking.digitization.sisim.SiSensorSim;
+import org.lcsim.recon.tracking.digitization.sisim.SiTrackerHit;
+import org.lcsim.recon.tracking.digitization.sisim.SiTrackerHitPixel;
+import org.lcsim.recon.tracking.digitization.sisim.SiTrackerHitStrip1D;
+import org.lcsim.recon.tracking.digitization.sisim.SiTrackerHitStrip2D;
+import org.lcsim.recon.tracking.digitization.sisim.SimTrackerHitReadoutDriver;
+import org.lcsim.recon.tracking.digitization.sisim.StripHit2DMaker;
+import org.lcsim.recon.tracking.digitization.sisim.StripHitCombiner;
+import org.lcsim.recon.tracking.digitization.sisim.StripHitMaker;
 import org.lcsim.util.Driver;
+import org.lcsim.util.lcio.LCIOConstants;
 
 /**
  *
  * @author tknelson
  */
-public class TrackerHitDriver_sATLAS extends Driver
-{
-    
-    TrackerHitDriver _trackerhit_driver;
-    
-    /** Creates a new instance of TrackerHitDriver_sATLAS */
-    public TrackerHitDriver_sATLAS()
-    {
-        _trackerhit_driver = new TrackerHitDriver();
-        
-        _trackerhit_driver.setReadout("VtxBarrHits");
-        _trackerhit_driver.setReadout("SCTShortBarrHits");
-        _trackerhit_driver.setReadout("SCTLongBarrHits");
-        _trackerhit_driver.setReadout("VtxEndcapHits");
-        _trackerhit_driver.setReadout("SCTShortEndcapHits");
-        _trackerhit_driver.setReadout("SiTrackerEndcap_RO");
-
-        _trackerhit_driver.addElementToProcess("VtxPixelBarrel");
-        _trackerhit_driver.addElementToProcess("SCTShortBarrel");
-        _trackerhit_driver.addElementToProcess("SCTLongBarrel");
-        _trackerhit_driver.addElementToProcess("VtxPixelEndcap");
-        _trackerhit_driver.addElementToProcess("SCTShortEndcap");
-        _trackerhit_driver.addElementToProcess("SCTLongEndcap");
-        
-        super.add( _trackerhit_driver );
+public class TrackerHitDriver_sATLAS extends Driver {
+
+    List<String> _readouts = new ArrayList<String>();
+    List<String> _process_paths = new ArrayList<String>();
+    List<IDetectorElement> _process_de = new ArrayList<IDetectorElement>();
+    Set<SiSensor> _process_sensors = new HashSet<SiSensor>();
+    Set<SiTrackerModule> _process_modules = new HashSet<SiTrackerModule>();
+    //  Algorithm classes responsible for making hits
+    SiSensorSim _strip_simulation = new CDFSiSensorSim();
+    ReadoutChip _strip_readout = new GenericReadoutChip();
+    SiSensorSim _pixel_simulation = new CDFSiSensorSim();
+    ReadoutChip _pixel_readout = new GenericReadoutChip();
+    SiDigitizer _digitizer = new RawTrackerHitMaker(_strip_simulation, _strip_readout);
+    Clusterer _strip_clusterer = new StripHitMaker(_strip_simulation, _strip_readout);
+    Clusterer _pixel_clusterer = new PixelHitMaker(_pixel_simulation, _pixel_readout);
+    StripHitCombiner _striphit_combiner = new StripHit2DMaker();
+
+    /**
+     * Creates a new instance of TrackerHitDriver
+     */
+    // Default constructor
+    public TrackerHitDriver_sATLAS() {
+    }
+
+    // Construct your own
+    public TrackerHitDriver_sATLAS(SiDigitizer digitizer, Clusterer strip_clusterer,
+            Clusterer pixel_clusterer, StripHitCombiner striphit_combiner) {
+        _digitizer = digitizer;
+        _strip_clusterer = strip_clusterer;
+        _pixel_clusterer = pixel_clusterer;
+        _striphit_combiner = striphit_combiner;
+    }
+
+    // Change out a single component
+    //------------------------------
+    public void setDigitizer(SiDigitizer digitizer) {
+        _digitizer = digitizer;
+    }
+
+    public void setStripClusterer(Clusterer strip_clusterer) {
+        _strip_clusterer = strip_clusterer;
     }
-    
+
+    public void setPixelClusterer(Clusterer pixel_clusterer) {
+        _pixel_clusterer = pixel_clusterer;
+    }
+
+    public void setStripHitCombiner(StripHitCombiner striphit_combiner) {
+        _striphit_combiner = striphit_combiner;
+    }
+
+    // Access components
+    //------------------
+    public SiDigitizer getDigitizer() {
+        return _digitizer;
+    }
+
+    public Clusterer getStripClusterer() {
+        return _strip_clusterer;
+    }
+
+    public Clusterer getPixelClusterer() {
+        return _pixel_clusterer;
+    }
+
+    public StripHitCombiner getStripHitCombiner() {
+        return _striphit_combiner;
+    }
+
     // Collection names
     //-----------------
-    public String getRawHitsName()
-    {
-        return _trackerhit_driver.getRawHitsName();
-    }
-    
-    public String getStripHits1DName()
-    {
-        return _trackerhit_driver.getStripHits1DName();
+    public String getRawHitsName() {
+        return _digitizer.getName() + "_RawTrackerHits";
     }
-    
-//    public String getPixelHitsName()
-//    {
-//        return _trackerhit_driver.getPixelHitsName();
-//    }
-    
-    public String getStripHits2DName()
-    {
-        return _trackerhit_driver.getStripHits2DName();
+
+    public String getStripHits1DName() {
+        return _strip_clusterer.getName() + "_SiTrackerHitStrip1D";
+    }
+
+    public String getPixelHitsName() {
+        return _pixel_clusterer.getName() + "_SiTrackerHitPixel";
+    }
+
+    public String getStripHits2DName() {
+        return _striphit_combiner.getName() + "_SiTrackerHitStrip2D";
+    }
+
+    // Define which hits to use and which detector elements to process
+    //================================================================
+    // Add a readout name for SimTrackerHits to use
+    public void setReadout(String readout) {
+        _readouts.add(readout);
+    }
+
+    public void setReadouts(String readout[]) {
+        _readouts.addAll(Arrays.asList(readout));
+    }
+
+    public void setElementsToProcess(String de_paths[]) {
+        _process_paths.addAll(Arrays.asList(de_paths));
+    }
+
+    // Add a detector to process
+    public void addElementToProcess(String de_path) {
+        _process_paths.add(de_path);
+    }
+
+    // Actions begins here
+    //====================
+    public void detectorChanged(Detector detector) {
+        System.out.println(detector.getName());
+        super.detectorChanged(detector);
+
+        // Process detectors specified by path, otherwise process entire detector
+        IDetectorElement detector_de = detector.getDetectorElement();
+        System.out.println(detector_de.getName());
+        for (String de_path : _process_paths) {
+            _process_de.add(detector_de.findDetectorElement(de_path));
+        }
+
+        if (_process_de.size() == 0) {
+            _process_de.add(detector_de);
+        }
+
+        for (IDetectorElement detector_element : _process_de) {
+            _process_sensors.addAll(detector_element.findDescendants(SiSensor.class));
+            _process_modules.addAll(detector_element.findDescendants(SiTrackerModule.class));
+        }
+
+    }
+
+    public void startOfData() {
+        // If readouts not already set, set them up
+        if (_readouts.size() != 0) {
+            System.out.println("Adding SimTrackerHitIdentifierReadoutDriver with readouts: " + _readouts);
+            super.add(new SimTrackerHitReadoutDriver(_readouts));
+        }
+
+        // Call this after added above driver, so that subdriver's startOfData() method is called. --JM
+        super.startOfData();
+
+        // Only allow this once per job since readouts cannot be deleted for SimTrackerIdentifierReadoutDriver
+        // FIXME: should be a robust system for changing readouts and eliminating duplicates in the readout driver
+        _readouts.clear();
+
+    }
+
+    public void process(EventHeader event) {
+        super.process(event);
+        System.out.println("TrackerHitDriver processing event...");
+
+        // Lists of hits
+        List<RawTrackerHit> raw_hits = new ArrayList<RawTrackerHit>();
+
+        List<SiTrackerHit> hits_strip1D = new ArrayList<SiTrackerHit>();
+        List<SiTrackerHit> hits_pixel = new ArrayList<SiTrackerHit>();
+        List<SiTrackerHit> hits_strip2D = new ArrayList<SiTrackerHit>();
+
+//       for (IDetectorElement detector_element : _process_de)        {
+//
+//        System.out.println("Processing detector: "+detector_element.getName());
+
+        for (SiSensor sensor : _process_sensors)
+        {
+            //            System.out.println("Processing "+sensor.getName());
+//            if (sensor.getName().contains("Endcap"))
+//            {
+//                System.out.println("Processing sensor: "+sensor.getName());
+//            }
+
+            raw_hits.addAll(_digitizer.makeHits(sensor));
+
+            if (sensor.hasStrips()) {
+                hits_strip1D.addAll(_strip_clusterer.makeHits(sensor));
+            }
+
+
+            if (sensor.hasPixels()) {
+                hits_pixel.addAll(_pixel_clusterer.makeHits(sensor));
+            }
+
+            // When pixels are working, this should become an else if to pixel hitmaking
+            if (sensor.isDoubleSided()) {
+//               hits_strip2D.addAll(_striphit_combiner.makeHits(sensor));
+            }
+        }
+
+
+
+        for (SiTrackerModule module : _process_modules) {
+            //          System.out.println("Combining double sided modules "+module.getName());
+            if (module.isDoubleSided()) {
+                //              System.out.println(" # Raw Hits:"+raw_hits.size());
+                //              System.out.println("# Strip1D Hits:"+hits_strip1D.size());
+//                hits_strip2D.addAll(_striphit_combiner.makeHits(module));
+            }
+        }
+        //           System.out.println(" # Raw Hits:"+raw_hits.size());
+        //          System.out.println("# Strip1D Hits:"+hits_strip1D.size());
+//        }
+
+        // FIXME
+        // Take list of 2D hits
+        // Loop through and make LCRelationalTable
+        // Add table to event
+        // Is that all there is?
+
+//        System.out.println("# Strip2D Hits:"+hits_strip2D.size());
+        int flag = (1 << LCIOConstants.RTHBIT_HITS | 1 << LCIOConstants.TRAWBIT_ID1); //correct flag for persistence 
+        event.put(getRawHitsName(), raw_hits, RawTrackerHit.class, flag, toString());
+        event.put(getStripHits1DName(), hits_strip1D, SiTrackerHitStrip1D.class, 0, toString());
+        event.put(getPixelHitsName(), hits_pixel, SiTrackerHitPixel.class, 0, toString());
+        event.put(getStripHits2DName(), hits_strip2D, SiTrackerHitStrip2D.class, 0, toString());
+
+
     }
-    
-    
 }
+//    public void makeHits(IDetectorElement detector)
+//    {
+//
+//        List<SiSensor> sensors = detector.findDescendants(SiSensor.class);
+//        List<SiTrackerModule> modules = detector.findDescendants(SiTrackerModule.class);
+//
+//        // clear hit lists
+//        _hits_raw.clear();
+//        _hits.clear();
+//
+//        // Loop over all sensors
+//        for (SiSensor sensor : sensors)
+//        {
+//            // Make raw hits
+//            _hits_raw.addAll(_raw_hitmaker.makeHits(sensor));
+//
+//            // Make Pixel or 1D hits - FIXME need appropriate switch and protection here
+//            _hits.addAll(_strip_clusterer.makeHits(sensor));
+//
+//            // If double-sided strip sensors, make 2-d hits
+//            if (sensor.isDoubleSided())
+//            {
+//                _hits.addAll(_2D_hitmaker.makeHits2D(sensor));
+//            }
+//        }
+//
+//        // Loop over all modules
+//        for (SiTrackerModule module : modules)
+//        {
+//            if (module.isDoubleSided())
+//            {
+//                _hits.addAll(_2D_hitmaker.makeHits2D(module));
+//            }
+//        }
+//
+//    }
+//    public List<RawTrackerHit> getRawHits()
+//    {
+//        return _hits_raw;
+//    }
+//    public List<TrackerHit> getHits()
+//    {
+//        return _hits;
+//    }
+//                for (SiSensorElectrodes electrodes : sensor.getReadoutElectrodes())
+//                {
+//                    if (electrodes instanceof SiStrips)
+//                    {
+//                        hits_strip1D.addAll(makeHits((SiStr);
+//                    }
+////                    else if (electrodes instanceof SiPixels)
+////                    {
+////                        hits.addAll(_pixel_clusterer.makeHits(electrodes));
+////                    }
+//                }
\ No newline at end of file
CVSspam 0.2.8