Print

Print


Commit in lcsim/src/org/lcsim on MAIN
contrib/seedtracker/digiexample/DigiHitWriter.java+145added 1.1
                               /DigiHitReader.java+77added 1.1
detector/driver/RawTrackerHitIdentifierReadoutDriver.java+14-31.2 -> 1.3
fit/helicaltrack/HelicalTrackHitDriver.java+1-21.21 -> 1.22
contrib/SiStripSim/TrackerHitDriver.java+3-21.3 -> 1.4
+240-7
2 added + 3 modified, total 5 files
CD - persistence related stuff

lcsim/src/org/lcsim/contrib/seedtracker/digiexample
DigiHitWriter.java added at 1.1
diff -N DigiHitWriter.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ DigiHitWriter.java	25 Aug 2008 21:43:31 -0000	1.1
@@ -0,0 +1,145 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+package org.lcsim.contrib.seedtracker.digiexample;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import org.lcsim.contrib.NickSinev.PixSim.PixilatedSensorManager;
+import org.lcsim.contrib.NickSinev.PixSim.SensorOption;
+import org.lcsim.contrib.SiStripSim.TrackerHitDriver_User;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.RawTrackerHit;
+import org.lcsim.event.TrackerHit;
+import org.lcsim.util.Driver;
+import org.lcsim.util.lcio.LCIOConstants;
+import org.lcsim.util.lcio.LCIOWriter;
+import org.lcsim.util.loop.LCSimLoop;
+
+/**
+ *
+ * @author cozzy
+ */
+public class DigiHitWriter extends Driver{
+    
+    private LCIOWriter writer=null;
+    
+    //if true, will ensure that RawTrackerHits linked to from TrackerHits are saved in the event
+    // this can be set to false once Nick commits a new version of PixilatedSensorManager that does this... 
+    private boolean checkRawTrackerHits = true; 
+    
+    public DigiHitWriter(File outputFile) {
+        try {
+            writer = new LCIOWriter(outputFile);  
+        } catch (IOException ioe) {
+            throw new RuntimeException(ioe.getMessage()); 
+        }        
+        
+        //Initialize Nick's Pixel hit making code
+        PixilatedSensorManager psm = new PixilatedSensorManager(SensorOption.ClassicCCD, true); 
+        add(psm); 
+        
+        //Initialize Tim's TrackerHit making code
+        TrackerHitDriver_User thd = new TrackerHitDriver_User();
+        
+        add(thd);
+    }
+    
+    
+    public void checkRawTrackerHits(boolean check) {
+        checkRawTrackerHits = check; 
+    }
+    
+    protected void process(EventHeader event) {
+        super.process(event);
+        
+        if(checkRawTrackerHits) {
+            
+            Set<RawTrackerHit> existingRawHits = new HashSet<RawTrackerHit>();
+            List<RawTrackerHit> newRawHits = new ArrayList<RawTrackerHit>(); 
+            for (List<RawTrackerHit> rawlist : event.get(RawTrackerHit.class)) 
+                existingRawHits.addAll(rawlist); 
+            
+            for (List<TrackerHit> thlist : event.get(TrackerHit.class)) {
+                for (TrackerHit h : thlist) {
+                    for (RawTrackerHit raw : (List<RawTrackerHit>)h.getRawHits()) {
+                        if (!existingRawHits.contains(raw))
+                            newRawHits.add(raw); 
+                    }
+                }
+            }
+            
+            if (!newRawHits.isEmpty()) {
+                event.put("RawTrackerHitDependencies", newRawHits , RawTrackerHit.class, (1 << (LCIOConstants.RTHBIT_HITS))); 
+            }
+        }
+        
+        try {
+            writer.write(event);
+        } catch(IOException ioe) {
+            throw new RuntimeException(ioe.getMessage()); 
+        }
+        
+        System.out.println("Wrote event #"+event.getEventNumber()); 
+    }
+    
+    private static void printUsage(){
+        System.out.println("DigiHitMaker INPUTNAME [-o OUTPUTNAME -n NUMEVENTS -r]");
+        System.out.println("-o OUTPUTNAME\t\t Name of output slcio file");
+        System.out.println("-n NUMEVENTS\t\t Number of events to process");
+        System.out.println("-r \t\t\t Don't attempt to build necessary RawTrackerHit dependencies");
+        System.exit(1);
+    }
+    
+    public static void main(String[] args) {
+        
+        if (args.length < 1){
+            printUsage(); 
+        }
+        
+        String inputFileName = args[0]; 
+        
+        File inputFile = new File(inputFileName); 
+        if (!inputFile.exists()) {
+            System.out.println("Cannot find data file "+inputFile.toString()+". Exiting.");
+            printUsage(); 
+            System.exit(2); 
+        }
+        boolean check = true; 
+        String outputFileName = inputFileName.replace(".slcio", "WithSavedDigitizedHits.slcio"); 
+        int n = -1; 
+        
+        for (int i = 1; i < args.length; i++) {
+            if (args[i].equals("-n")){
+                n = Integer.valueOf(args[++i]); 
+            } else if (args[i].equals("-o")) {
+                outputFileName = (args[++i]); 
+            } else if (args[i].equals("-r")) {
+                check = false; 
+            } else printUsage();
+        }
+        
+        DigiHitWriter writer = new  DigiHitWriter(new File(outputFileName)); 
+        writer.checkRawTrackerHits(check); 
+        
+        LCSimLoop loop = new LCSimLoop(); 
+        try {
+            loop.setLCIORecordSource(inputFile);
+            loop.add(writer); 
+            loop.loop(n);
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new RuntimeException("Something bad happened"); 
+        }
+        
+        System.out.println("Done.");
+        
+    }
+    
+}

lcsim/src/org/lcsim/contrib/seedtracker/digiexample
DigiHitReader.java added at 1.1
diff -N DigiHitReader.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ DigiHitReader.java	25 Aug 2008 21:43:31 -0000	1.1
@@ -0,0 +1,77 @@
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+package org.lcsim.contrib.seedtracker.digiexample;
+
+import java.util.List;
+import java.util.ArrayList;
+import org.lcsim.contrib.SiStripSim.SiTrackerHitStrip1D;
+import org.lcsim.detector.IDetectorElement;
+import org.lcsim.detector.driver.RawTrackerHitIdentifierReadoutDriver;
+import org.lcsim.detector.driver.SimTrackerHitIdentifierReadoutDriver;
+import org.lcsim.detector.driver.TrackerHitIdentifierReadoutDriver;
+import org.lcsim.detector.tracker.silicon.SiSensor;
+import org.lcsim.event.EventHeader;
+import org.lcsim.fit.helicaltrack.HelicalTrackHitDriver;
+import org.lcsim.fit.helicaltrack.HelicalTrackHitDriver.HitType;
+import org.lcsim.util.Driver;
+
+/**
+ *
+ * @author cozzy
+ */
+public class DigiHitReader extends Driver{
+
+    private static final String strip1DName = "StripClusterer_SiTrackerHitStrip1D"; 
+    private static final String pixSimBarrelName = "RecVtxBarrHits";
+    private static final String pixSimEndcapName = "RecVtxEndcapHits";
+    private static final String[] simHitNames = new String[]{"SiTrackerBarrel_RO","SiTrackerEndcap_RO","SiTrackerForward_RO"};
+    private static final String rawHitsName = "RawTrackerHitMaker_RawTrackerHits"; 
+    private static final long rawBitmask = 0xFFFFFFFFL; 
+    private static final String newhits = "Strip1DHits"; 
+    
+    public DigiHitReader() {
+        add(new SimTrackerHitIdentifierReadoutDriver(simHitNames));
+        RawTrackerHitIdentifierReadoutDriver rawHitsDriver = new RawTrackerHitIdentifierReadoutDriver(new String[]{rawHitsName});
+        rawHitsDriver.setCellIDBitmask(rawBitmask);
+        add(rawHitsDriver); 
+        add(new TrackerHitIdentifierReadoutDriver(new String[]{strip1DName})); 
+        add(new ReadoutReader(SiTrackerHitStrip1D.class, newhits, 0)); 
+        HelicalTrackHitDriver hitdriver = new HelicalTrackHitDriver();
+        hitdriver.addCollection(newhits,HitType.Digitized);
+        hitdriver.addCollection(pixSimBarrelName,HitType.Base); 
+        hitdriver.addCollection(pixSimEndcapName,HitType.Base);
+        hitdriver.OutputCollection("HelicalTrackHits"); // the default, but it might change?
+        add(hitdriver);
+    }
+    
+    
+    class ReadoutReader extends Driver{
+        
+        private Class c; 
+        private int f;
+        private String n; 
+        
+        public ReadoutReader(Class klass, String collName, int flags) {
+            c = klass; 
+            n = collName; 
+            f = flags; 
+        }
+        
+        protected void process(EventHeader event) {
+            super.process(event);
+            
+            
+            List<SiTrackerHitStrip1D> hits1D = new ArrayList<SiTrackerHitStrip1D>();
+            for (IDetectorElement de : event.getDetector().getDetectorElement().findDescendants(SiSensor.class)) {
+
+                hits1D.addAll(de.getReadout().getHits(c)); 
+            }
+
+            event.put(n, hits1D, c , f);
+        }
+    }
+    
+}

lcsim/src/org/lcsim/detector/driver
RawTrackerHitIdentifierReadoutDriver.java 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- RawTrackerHitIdentifierReadoutDriver.java	19 Aug 2008 23:42:33 -0000	1.2
+++ RawTrackerHitIdentifierReadoutDriver.java	25 Aug 2008 21:43:31 -0000	1.3
@@ -7,12 +7,18 @@
 import org.lcsim.detector.IReadout;
 import org.lcsim.detector.identifier.IIdentifier;
 import org.lcsim.detector.identifier.Identifier;
+import org.lcsim.detector.tracker.silicon.SiTrackerIdentifierHelper;
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.RawTrackerHit;
 
 public class RawTrackerHitIdentifierReadoutDriver 
 extends CollectionHandler
 {
+    
+    private static final long defaultBitmask = 0xFFFFFFFFL; 
+    
+    private long bitmask = defaultBitmask; 
+    
     public RawTrackerHitIdentifierReadoutDriver(List<String> collectionNames)
     {
         super(collectionNames);
@@ -24,6 +30,11 @@
         super(collectionNames);
         add( new ReadoutCleanupDriver( collectionNames ) );
     }
+    
+    public void setCellIDBitmask(long mask) {
+        bitmask = mask; 
+    }
+    
 
     protected void process(EventHeader header)
     {                          
@@ -35,16 +46,16 @@
             {
                 for ( RawTrackerHit hit : collection )
                 {
-                    IIdentifier hitId = new Identifier(hit.getCellID());
+                    IIdentifier hitId = new Identifier(hit.getCellID() & bitmask); 
                     IDetectorElementContainer deHit = 
                         DetectorElementStore.getInstance().find(hitId);
                     if (deHit.size() == 0)
                     {
                         throw new RuntimeException("No DetectorElement found for id <"+hitId.toString()+">.");
                     }
-                    hit.setDetectorElement(deHit.get(0)); 
+                    hit.setDetectorElement(deHit.get(0));    
                     IReadout ro = deHit.get(0).getReadout();
-                    ro.addHit( hit );                    
+                    ro.addHit( hit );                   
                 }
             }
         }        

lcsim/src/org/lcsim/fit/helicaltrack
HelicalTrackHitDriver.java 1.21 -> 1.22
diff -u -r1.21 -r1.22
--- HelicalTrackHitDriver.java	20 Aug 2008 01:34:21 -0000	1.21
+++ HelicalTrackHitDriver.java	25 Aug 2008 21:43:31 -0000	1.22
@@ -35,7 +35,6 @@
 import org.lcsim.event.RawTrackerHit;
 import org.lcsim.event.SimTrackerHit;
 import org.lcsim.event.TrackerHit;
-import org.lcsim.event.base.BaseTrackerHit;
 import org.lcsim.event.base.BaseTrackerHitMC;
 import org.lcsim.geometry.subdetector.BarrelEndcapFlag;
 import org.lcsim.spacegeom.SpacePointVector;
@@ -119,7 +118,7 @@
                 
                 try {
                     //create a BaseTrackerHitMC from a BaseTrackerHit if necessary
-                    if (hit instanceof BaseTrackerHit && !(hit instanceof BaseTrackerHitMC)){
+                    if (!(hit instanceof BaseTrackerHitMC)){
                         List<SimTrackerHit> thesehits = new ArrayList<SimTrackerHit>(); 
                         List<RawTrackerHit> rawhits = (List<RawTrackerHit>)hit.getRawHits(); 
                         for (RawTrackerHit raw : rawhits) {

lcsim/src/org/lcsim/contrib/SiStripSim
TrackerHitDriver.java 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- TrackerHitDriver.java	15 Jul 2008 23:35:16 -0000	1.3
+++ TrackerHitDriver.java	25 Aug 2008 21:43:31 -0000	1.4
@@ -21,6 +21,7 @@
 import org.lcsim.event.RawTrackerHit;
 import org.lcsim.geometry.Detector;
 import org.lcsim.util.Driver;
+import org.lcsim.util.lcio.LCIOConstants;
 
 /**
  *
@@ -247,8 +248,8 @@
         
         
 //        System.out.println("# Strip2D Hits:"+hits_strip2D.size());
-        
-        event.put(getRawHitsName(),raw_hits,RawTrackerHit.class,0,toString());
+        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());
CVSspam 0.2.8