lcsim/src/org/lcsim/recon/tracking/seedtracker/ReconTracking
diff -N SiD02ReconHybridHitMaker.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ SiD02ReconHybridHitMaker.java 16 Oct 2008 21:41:18 -0000 1.1
@@ -0,0 +1,101 @@
+/*
+ * SiD02ReconTrackingDriver.java
+ *
+ * Created on October 16, 2008, 12:58 PM
+ *
+ */
+
+package org.lcsim.recon.tracking.seedtracker.ReconTracking;
+
+import org.lcsim.contrib.onoprien.tracking.clustering.ClusteringDriver;
+import org.lcsim.contrib.onoprien.tracking.clustering.clusterers.NearestNeighborClusterer;
+import org.lcsim.contrib.onoprien.tracking.digitization.SimToDigiConverter;
+import org.lcsim.contrib.onoprien.tracking.digitization.SimToDigiDriver;
+import org.lcsim.contrib.onoprien.tracking.digitization.algorithms.ConverterSimple;
+import org.lcsim.contrib.onoprien.tracking.geom.SegmentationManager;
+import org.lcsim.contrib.onoprien.tracking.geom.Segmenter;
+import org.lcsim.contrib.onoprien.tracking.hitmaking.HitMakingDriver;
+import org.lcsim.contrib.onoprien.tracking.hitmaking.TrackerHitMaker;
+import org.lcsim.contrib.onoprien.tracking.hitmaking.hitmakers.TrackerHitMakerBasic;
+import org.lcsim.fit.helicaltrack.HelicalTrackHitDriver;
+import org.lcsim.fit.helicaltrack.HelicalTrackHitDriver.HitType;
+import org.lcsim.mc.CCDSim.FullCCDSimulation;
+import org.lcsim.util.Driver;
+
+/**
+ * Driver to create TrackerHits for the SiD02 LOI tracking reconstruction.
+ * This driver generates HelicalTrackHits using the virtual segmentation package
+ * for strip detectors. Pixel detector hits are generated using either the
+ * FullCCDSimulation package or the virtual segmentation package.
+ * @author C. Deaconu and R. Partridge
+ * @version 1.0
+ */
+public class SiD02ReconHybridHitMaker extends Driver{
+
+ private static final String[] CCDSIMOUT = {"RecVtxBarrHits", "RecVtxEndcapHits"};
+ private static final String[] STRIPHITS = {"TkrBarrHits", "TkrEndcapHits"};
+ private static final String[] PIXELHITS = {"VtxBarrHits", "VtxEndcapHits", "TkrForward"};
+
+ /**
+ * Create a new instance of SiD02ReconHybridHitMaker
+ * @param fullccd true if the FullCCDSimulation package is used for pixels
+ */
+ public SiD02ReconHybridHitMaker(boolean fullccd) {
+
+ // Instantiate the driver that makes the HelicalTrackHits used by SeedTracker
+ HelicalTrackHitDriver hitdriver = new HelicalTrackHitDriver();
+
+ // Check if we are using FullCCDSimulation package for pixels
+ if (fullccd) {
+
+ // Instantiate the FullCCDSimulation driver
+ FullCCDSimulation ccdsim = new FullCCDSimulation();
+
+ // Set the parameters for the FullCCDSimulation package
+ ccdsim.setCCDPixelSizeX(20.);
+ ccdsim.setCCDPixelSizeY(20.);
+
+ // Tell the HelicalTrackHitDriver to use the FullCCDSimulation hits
+ for (String s : CCDSIMOUT) hitdriver.addCollection(s,HitType.Base);
+
+ // Add FullCCDSimulation to the list of drivers to be called
+ add(ccdsim);
+ }
+
+ // Instantiate the virtual segmentation Segmenter and pass it the
+ // SiD02 LOI Segmenter
+ Segmenter segmenter = new SiD02ReconSegmenter(fullccd);
+ SegmentationManager segMan = new SegmentationManager(segmenter);
+ SegmentationManager.setDefaultInstance(segMan);
+ add(segMan);
+
+ // Instantiate the digitization for the virtual segmentation hits and
+ // pass it the hit collections to process
+ SimToDigiConverter converter = new ConverterSimple();
+ SimToDigiDriver conversionDriver = new SimToDigiDriver(converter);
+ for (String s : STRIPHITS) conversionDriver.set("ADD_INPUT_LIST_NAME", s);
+ if (!fullccd) for (String s : PIXELHITS) conversionDriver.set("ADD_INPUT_LIST_NAME", s);
+ conversionDriver.set("OUTPUT_MAP_NAME", "DigiTrackerHits");
+ add(conversionDriver);
+
+ // Instantiate the clustering driver for the virtual segmentation package
+ ClusteringDriver clusteringDriver = new ClusteringDriver(new NearestNeighborClusterer());
+ clusteringDriver.set("INPUT_MAP_NAME","DigiTrackerHits");
+ clusteringDriver.set("OUTPUT_MAP_NAME","TrackerClusters");
+ add(clusteringDriver);
+
+ // Instantiate the hit making driver for the virtual segmentation package
+ TrackerHitMaker hitMaker = new TrackerHitMakerBasic();
+ HitMakingDriver hitMakingDriver = new HitMakingDriver(hitMaker);
+ hitMakingDriver.set("INPUT_MAP_NAME","TrackerClusters");
+ hitMakingDriver.set("OUTPUT_MAP_NAME","NewTrackerHits");
+ add(hitMakingDriver);
+
+ // Tell the HelicalTrackHitDriver to use the virtual segmentation hits
+ hitdriver.addCollection("NewTrackerHits", HitType.VirtualSegmentation);
+
+ // Now run the HelicalTrackHitDriver after we have made the hits using
+ // the FullCCDSimulation and virtual segmentation packages
+ add(hitdriver);
+ }
+}
\ No newline at end of file
lcsim/src/org/lcsim/recon/tracking/seedtracker/ReconTracking
diff -N SiD02ReconSegmenter.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ SiD02ReconSegmenter.java 16 Oct 2008 21:41:18 -0000 1.1
@@ -0,0 +1,72 @@
+/*
+ * SiD02ReconSegmenter.java
+ *
+ * Created on October 16, 2008, 11:09 AM
+ *
+ */
+
+package org.lcsim.recon.tracking.seedtracker.ReconTracking;
+
+import org.lcsim.contrib.onoprien.tracking.geom.segmenters.CylindricalBarrelSegmenter;
+import org.lcsim.contrib.onoprien.tracking.geom.segmenters.DiskTrackerToRingsSegmenter;
+import org.lcsim.contrib.onoprien.tracking.geom.segmenters.DiskTrackerToWedgesSegmenter;
+import org.lcsim.contrib.onoprien.tracking.geom.segmenters.SubdetectorBasedSegmenter;
+import org.lcsim.units.clhep.SystemOfUnits;
+
+/**
+ * Segmenter for SiD02 LOI tracking reconstruction.
+ *
+ * @author C. Deaconu and R. Partridge (based on example from D. Onoprienko)
+ * @version $Id: SiD02ReconSegmenter.java,v 1.1 2008/10/16 21:41:18 partridge Exp $
+ */
+public class SiD02ReconSegmenter extends SubdetectorBasedSegmenter {
+
+// -- Constructors : ----------------------------------------------------------
+
+ /**
+ * Create a new instance of SiD02ReconSegmenter
+ * @param fullccd True if the FullCCDSimulation package is used for pixel hits
+ */
+ public SiD02ReconSegmenter(boolean fullccd) {
+
+ // Don't segment the pixel layers if we are using the FullCCDSim package
+ if (!fullccd) {
+
+ // 20 um pixels in VTX Barrel
+
+ CylindricalBarrelSegmenter vtxBarrelSegmenter = new CylindricalBarrelSegmenter("VertexBarrel");
+ vtxBarrelSegmenter.setStripLength(20.*SystemOfUnits.micrometer);
+ vtxBarrelSegmenter.setStripWidth(20.*SystemOfUnits.micrometer);
+ setSegmenter("VertexBarrel", vtxBarrelSegmenter);
+
+ // 20 um pixels in VTX Endcap
+
+ DiskTrackerToRingsSegmenter vtxEndcapSegmenter = new DiskTrackerToRingsSegmenter("VertexEndcap");
+ vtxEndcapSegmenter.setStripLength(20.*SystemOfUnits.micrometer);
+ vtxEndcapSegmenter.setStripWidth(20.*SystemOfUnits.micrometer);
+ setSegmenter("VertexEndcap", vtxEndcapSegmenter);
+
+ // 20 um pixels in Forward Tracker
+
+ DiskTrackerToRingsSegmenter trackerForwardSegmenter = new DiskTrackerToRingsSegmenter("TrackerForward");
+ trackerForwardSegmenter.setStripLength(20.*SystemOfUnits.micrometer);
+ trackerForwardSegmenter.setStripWidth(20.*SystemOfUnits.micrometer);
+ setSegmenter("TrackerForward", trackerForwardSegmenter);
+ }
+
+ // 9.15 cm x 25 um strips in outer Tracker Barrel
+
+ CylindricalBarrelSegmenter trackerBarrelSegmenter = new CylindricalBarrelSegmenter("TrackerBarrel");
+ trackerBarrelSegmenter.setStripLength(9.15*SystemOfUnits.cm);
+ trackerBarrelSegmenter.setStripWidth(25.*SystemOfUnits.micrometer);
+ setSegmenter("TrackerBarrel", trackerBarrelSegmenter);
+
+ // 12 degrees stereo wedges in outer Tracker Endcap
+
+ DiskTrackerToWedgesSegmenter trackerEndcapSegmenter = new DiskTrackerToWedgesSegmenter("TrackerEndcap");
+ trackerEndcapSegmenter.setNumberOfRadialSlices(new int[]{3,6,9,12});
+ trackerEndcapSegmenter.setStripWidth(25.*SystemOfUnits.micrometer);
+ trackerEndcapSegmenter.setNumberOfPhiSlices(30);
+ setSegmenter("TrackerEndcap", trackerEndcapSegmenter);
+ }
+}
\ No newline at end of file
lcsim/src/org/lcsim/recon/tracking/seedtracker/ReconTracking
diff -u -r1.1 -r1.2
--- SiD02ReconTrackingDriver.java 15 Oct 2008 18:12:14 -0000 1.1
+++ SiD02ReconTrackingDriver.java 16 Oct 2008 21:41:18 -0000 1.2
@@ -17,19 +17,32 @@
/**
* Official driver for SiD02 tracking reconstruction.
- *
- * This driver uses the FullCCDSimulation package to digitize pixel hits and
- * the virtual segmentation package to digitize strip hits. Track finding is
- * performed by SeedTracker. Currently, the Helix fitting is performed
- * by the fast helix fitter HelicalTrackFitter, which contains a number
- * of simplifications that would not be present in a full helix fitter.
- *
+ *
+ * If _fullccd is set true, then the FullCCDSimulation package is used
+ * to digitize pixel hits in the vertex barrel and endcap layers as well
+ * as the forward tracker layers. Otherwise, the virtual segmentation
+ * package is used for these layers.
+ *
+ * The virtual segmentation package is used to digitize all barrel and endcap
+ * strip hits.
+ *
+ * Track finding is performed by SeedTracker.
+ *
+ * Currently, the Helix fitting is performed by the fast helix fitter
+ * HelicalTrackFitter, which contains a number of simplifications that
+ * would not be present in a full helix fitter.
+ *
+ * The strategy file is located in the resource area.
+ *
* An equivalent XML steering file will maintained at:
* ./resources/org/lcsim/recon/tracking/seedtracker/steeringdrivers/SiD02ReconTrackingDriverSteering.xml
- *
* @author Cosmin Deaconu and Richard Partridge
+ * @version 1.0
*/
-public class SiD02ReconTrackingDriver extends Driver {
+public class SiD02ReconTrackingDriver extends Driver {
+ private boolean _fullccd = false;
+ private String _sfile_ccd = "autogen_ttbar_sid02_ccd.xml";
+ private String _sfile_vs = "autogen_ttbar_sid02_vs.xml";
/**
* Creates a new instance of SiD02ReconTrackingDriver
@@ -37,20 +50,18 @@
public SiD02ReconTrackingDriver() {
// Hit digitization driver
- HybridHitMaker hhm = new HybridHitMaker();
+ SiD02ReconHybridHitMaker hhm = new SiD02ReconHybridHitMaker(_fullccd);
add(hhm);
// Retrieve the track finder's strategy list
+ String sfile = _sfile_vs;
+ if (_fullccd) sfile = _sfile_ccd;
List<SeedStrategy> stratlist =
StrategyXMLUtils.getStrategyListFromResource(
- StrategyXMLUtils.getDefaultStrategiesPrefix() +
- "autogen_qqbar500_sid02.xml" );
+ StrategyXMLUtils.getDefaultStrategiesPrefix() + sfile);
// Main tracking driver
SeedTracker st = new SeedTracker(stratlist);
add(st);
-
- add(new AnalysisDriver());
- }
-
+ }
}
\ No newline at end of file