lcsim/src/org/lcsim/fit/helicaltrack
diff -u -r1.5 -r1.6
--- HelicalTrackHitDriver.java 11 Feb 2008 21:04:11 -0000 1.5
+++ HelicalTrackHitDriver.java 29 Feb 2008 18:40:39 -0000 1.6
@@ -13,11 +13,16 @@
import java.util.ArrayList;
import java.util.List;
+import org.lcsim.contrib.SiStripSim.SiTrackerHit;
+import org.lcsim.contrib.SiStripSim.SiTrackerHitPixel;
+import org.lcsim.contrib.SiStripSim.SiTrackerHitStrip1D;
+import org.lcsim.contrib.SiStripSim.SiTrackerHitStrip2D;
import org.lcsim.contrib.onoprien.tracking.geom.Sensor;
import org.lcsim.contrib.onoprien.tracking.geom.SensorType;
-import org.lcsim.contrib.onoprien.tracking.hit.DigiTrackerHit;
import org.lcsim.contrib.onoprien.tracking.hit.TrackerCluster;
import org.lcsim.contrib.onoprien.tracking.hitmaking.OldTrackerHit;
+import org.lcsim.detector.DetectorIdentifierHelper;
+import org.lcsim.detector.identifier.IIdentifier;
import org.lcsim.event.EventHeader;
import org.lcsim.event.TrackerHit;
import org.lcsim.geometry.subdetector.BarrelEndcapFlag;
@@ -49,9 +54,17 @@
/**
* Virtual segmentation (OldTrackerHit) hits.
*/
- VirtualSegmentation}
+ VirtualSegmentation,
+ /**
+ *
+ * Digitized (SiTrackerHit)
+ */
+ Digitized
+
+ }
private List<String> _vscol = new ArrayList<String>();
private List<String> _smcol = new ArrayList<String>();
+ private List<String> _digcol = new ArrayList<String>();
private String _outname = "HelicalTrackHits";
/** Creates a new instance of HelicalTrackHitDriver */
@@ -135,6 +148,60 @@
}
}
+ //Loop over the digitized collections ~Cosmin
+ for (String colname : _digcol){
+
+ //grab the hits from the event
+ List<SiTrackerHit> hitlist = (List<SiTrackerHit>) event.get(colname);
+
+ for (SiTrackerHit hit : hitlist) {
+
+ DetectorIdentifierHelper id = hit.getIdentifierHelper();
+ IIdentifier detid = hit.getSensor().getIdentifier();
+
+ //these are barrel strip hits
+ if (hit instanceof SiTrackerHitStrip1D) {
+
+ //our current scheme only supports 2d hits in the barrel...
+ //if there are 2d hits in the endcap, we'll ignore them
+ if(!id.isBarrel(detid)){
+ continue;
+ }
+
+ SiTrackerHitStrip1D h = (SiTrackerHitStrip1D) hit;
+
+ double z1 = h.getHitSegment().getPoints().get(0).z();
+ double z2 = h.getHitSegment().getPoints().get(1).z();
+ double zmin = Math.min(z1,z2);
+ double zmax = Math.max(z1,z2);
+
+ helhits.add((HelicalTrackHit) new HelicalTrack2DHit(h,zmin,zmax));
+ }
+
+ //these are stereod strips and pixels
+ else if (hit instanceof SiTrackerHitStrip2D || hit instanceof SiTrackerHitPixel) {
+
+ BarrelEndcapFlag flag;
+
+ //decide the flag
+ if(id.isBarrel(detid)) {
+ flag = BarrelEndcapFlag.BARREL;
+ }
+ else if (id.isEndcapNegative(detid)) {
+ flag = BarrelEndcapFlag.ENDCAP_SOUTH;
+ }
+ else if (id.isEndcapPositive(detid)) {
+ flag = BarrelEndcapFlag.ENDCAP_NORTH;
+ }
+ else {
+ flag = BarrelEndcapFlag.UNKNOWN; //perhaps this should throw an error instead?
+ }
+
+ helhits.add((HelicalTrackHit) new HelicalTrack3DHit(hit,flag));
+ }
+ }
+ }
+
// Put the HelicalTrackHits back into the event
event.put(_outname, helhits);
}
@@ -150,6 +217,8 @@
} else if (type == HitType.Smeared) {
_smcol.add(name);
}
+ else if (type == HitType.Digitized)
+ _digcol.add(name);
return;
}