2 added + 3 modified, total 5 files
lcsim/src/org/lcsim/contrib/seedtracker/digiexample
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
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
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
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
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