Print

Print


Commit in hps-java/src/main/java/org/lcsim on MAIN
HPSBase/HPSTrackerHitDriver.java+243added 1.1
       /HPSHelicalTrackHitDriver.java+323added 1.1
       /OccupancyDriver.java-41.1 -> 1.2
       /MultiTrackReco.java+5-61.1 -> 1.2
       /ReReconstructionDriver.java-11.1 -> 1.2
       /SiTrackerFixedTargetSensorSetup.java-11.1 -> 1.2
       /MakeSensorsDriver.java-11.1 -> 1.2
       /StripHitsOnTrack.java-11.1 -> 1.2
       /TrackerHitDriver_DarkPhoton.java-2441.1 removed
       /DarkForcesHitDriver.java-3241.1 removed
       /DarkPhotonTrackHitDriver.java-5731.1 removed
HPSUsers/Example/HeavyPhotonLLDriver.java+145added 1.1
                /DarkPhotonLLDriver.java-1191.2 removed
+716-1274
3 added + 4 removed + 6 modified, total 13 files
Some more changes to make things more user friendly

hps-java/src/main/java/org/lcsim/HPSBase
HPSTrackerHitDriver.java added at 1.1
diff -N HPSTrackerHitDriver.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ HPSTrackerHitDriver.java	10 Mar 2011 23:17:50 -0000	1.1
@@ -0,0 +1,243 @@
+/*
+ * TrackerHitDriver Class
+ *
+ */
+package org.lcsim.HPSBase;
+
+import java.util.ArrayList;
+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.ClusteringAlgorithm;
+import org.lcsim.recon.tracking.digitization.sisim.BasicReadoutChip;
+import org.lcsim.recon.tracking.digitization.sisim.NearestNeighbor;
+import org.lcsim.recon.tracking.digitization.sisim.NearestNeighborRMS;
+import org.lcsim.recon.tracking.digitization.sisim.PixelHitMaker;
+import org.lcsim.recon.tracking.digitization.sisim.RawTrackerHitMaker;
+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.StripHitMaker;
+import org.lcsim.recon.tracking.digitization.sisim.config.SimTrackerHitReadoutDriver;
+import org.lcsim.util.Driver;
+import org.lcsim.util.lcio.LCIOConstants;
+
+/**
+ *
+ * @author tknelson
+ */
+public class HPSTrackerHitDriver 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>();
+    SiDigitizer _strip_digitizer;
+    SiDigitizer _pixel_digitizer;
+    StripHitMaker _strip_clusterer;
+    PixelHitMaker _pixel_clusterer;
+    String _digitizer_name;
+    int _nev = 0;
+    int _ngc = 0;
+
+    /**
+     * Creates a new instance of TrackerHitDriver
+     */
+    public HPSTrackerHitDriver() {
+
+        //  Instantiate the sensor simulation classes and set the thresholds
+//        SiSensorSim strip_simulation = new CDFSiSensorSim();
+        CDFSiSensorSim strip_simulation = new CDFSiSensorSim();
+
+        //  Instantiate the readout chips and set the noise parameters
+        BasicReadoutChip strip_readout = new BasicReadoutChip();
+//  ABCD -- Pristine
+/*
+        strip_readout.setNoiseIntercept(600.);
+        strip_readout.setNoiseSlope(65.);
+        strip_readout.setNoiseThreshold(4.);
+        strip_readout.setNeighborThreshold(4.);
+        strip_readout.setNbits(1);
+        strip_readout.setDynamicRange(10);
+         */
+        // APV25 -- Pristine
+
+        strip_readout.setNoiseIntercept(270.);
+        strip_readout.setNoiseSlope(36.);
+        strip_readout.setNoiseThreshold(4.);
+        strip_readout.setNeighborThreshold(4.);
+        strip_readout.setNbits(10);
+        strip_readout.setDynamicRange(40);
+
+        //set trapping to 0.2 to simulate radiation damage.
+//        strip_simulation.setTrapping(0.2);
+//                strip_simulation.setTrapping(0.12);
+
+        //  Instantiate the digitizer that produces the raw hits
+        _strip_digitizer = new RawTrackerHitMaker(strip_simulation, strip_readout);
+
+        _digitizer_name = _strip_digitizer.getName();
+
+        //  Instantiate a nearest neighbor clustering algorithm for the strips
+//        NearestNeighbor strip_clustering = new NearestNeighbor();
+//        strip_clustering.setSeedThreshold(4.);
+//        strip_clustering.setNeighborThreshold(4.);
+
+        NearestNeighborRMS strip_clustering = new NearestNeighborRMS();
+        strip_clustering.setSeedThreshold(4.);
+        strip_clustering.setNeighborThreshold(3.);
+        strip_clustering.setClusterThreshold(4.);
+
+        //  Instantiate the clusterers and set hit-making parameters
+        _strip_clusterer = new StripHitMaker(strip_simulation, strip_readout, strip_clustering);
+        _strip_clusterer.setMaxClusterSize(10);
+        _strip_clusterer.setCentralStripAveragingThreshold(4);
+        /*
+        _strip_clusterer.SetOneClusterErr(1 / Math.sqrt(12.));
+        _strip_clusterer.SetTwoClusterErr(1 / 5.0);
+        _strip_clusterer.SetThreeClusterErr(1 / 3.0);
+        _strip_clusterer.SetFourClusterErr(1 / 2.0);
+        _strip_clusterer.SetFiveClusterErr(1 / 1.0);
+         */
+        double multiplier = 1.0;
+        _strip_clusterer.SetOneClusterErr(multiplier / Math.sqrt(12.));
+        _strip_clusterer.SetTwoClusterErr(multiplier / 5.0);
+        _strip_clusterer.SetThreeClusterErr(multiplier / 3.0);
+        _strip_clusterer.SetFourClusterErr(multiplier / 2.0);
+        _strip_clusterer.SetFiveClusterErr(multiplier / 1.0);
+
+
+        //  Specify the readouts to process
+        _readouts.add("TrackerHits");
+        //  Specify the detectors to process
+        _process_paths.add("Tracker");
+    }
+
+    /**
+     * Initialize whenever we have a new detector
+     * 
+     * @param detector
+     */
+    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 Name =" + 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));
+        }
+
+    }
+
+    /**
+     * Setup readouts
+     */
+    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));
+        }
+
+        super.startOfData();
+        _readouts.clear();
+        _nev = 0;
+        _ngc = 0;
+    }
+
+    /**
+     * Main digitization driver.  Creates raw hits, forms clusters, and makes
+     * tracker hits using the sisim package.
+     *
+     * @param event
+     */
+    public void process(EventHeader event) {
+        super.process(event);
+
+        //  Print out the event number
+       
+        _nev++;
+        _ngc++;
+        if (_ngc == 100) {
+             System.out.println("TrackerHitDriver processing event " + _nev);
+            System.gc();
+            _ngc = 0;
+        }
+
+
+        // Lists of hits
+        List<RawTrackerHit> raw_hits = new ArrayList<RawTrackerHit>();
+        List<SiTrackerHit> hits_strip1D = new ArrayList<SiTrackerHit>();
+        List<SiTrackerHit> hits_pixel = new ArrayList<SiTrackerHit>();
+
+        for (SiSensor sensor : _process_sensors) {
+
+            if (sensor.hasStrips()) {
+                raw_hits.addAll(_strip_digitizer.makeHits(sensor));
+                hits_strip1D.addAll(_strip_clusterer.makeHits(sensor));
+
+            }
+
+
+            if (sensor.hasPixels()) {
+                raw_hits.addAll(_pixel_digitizer.makeHits(sensor));
+                hits_pixel.addAll(_pixel_clusterer.makeHits(sensor));
+            }
+
+        }
+
+//        int flag = (1 << LCIOConstants.RTHBIT_HITS | 1 << LCIOConstants.TRAWBIT_ID1); //correct flag for persistence
+        int flag=0;
+        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());
+
+    }
+
+    /**
+     * Return the name of the raw hits collection
+     *
+     * @return name of raw hits collection
+     */
+    public String getRawHitsName() {
+        return _digitizer_name + "_RawTrackerHits";
+    }
+
+    /**
+     * Return the name of the strip hits collection
+     *
+     * @return name of strip hits collection
+     */
+    public String getStripHits1DName() {
+        return _strip_clusterer.getName() + "_SiTrackerHitStrip1D";
+    }
+
+    /**
+     * Return the name of the pixel hits collection
+     *
+     * @return name of pixel hits collection
+     */
+    public String getPixelHitsName() {
+        return _pixel_clusterer.getName() + "_SiTrackerHitPixel";
+    }
+}
\ No newline at end of file

hps-java/src/main/java/org/lcsim/HPSBase
HPSHelicalTrackHitDriver.java added at 1.1
diff -N HPSHelicalTrackHitDriver.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ HPSHelicalTrackHitDriver.java	10 Mar 2011 23:17:50 -0000	1.1
@@ -0,0 +1,323 @@
+/*
+ * HPSHelicalTrackHitDriver.java
+ *
+ * Created on January 4, 2010
+ *
+ */
+package org.lcsim.HPSBase;
+
+import hep.physics.vec.BasicHep3Vector;
+import hep.physics.vec.Hep3Vector;
+import hep.physics.vec.VecOp;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.lcsim.detector.IDetectorElement;
+import org.lcsim.detector.ITransform3D;
+import org.lcsim.digisim.MyLCRelation;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.LCRelation;
+import org.lcsim.event.MCParticle;
+import org.lcsim.event.RawTrackerHit;
+import org.lcsim.fit.helicaltrack.HelicalTrack2DHit;
+import org.lcsim.fit.helicaltrack.HelicalTrack3DHit;
+import org.lcsim.fit.helicaltrack.HelicalTrackCross;
+import org.lcsim.fit.helicaltrack.HelicalTrackHit;
+import org.lcsim.fit.helicaltrack.HelicalTrackStrip;
+import org.lcsim.fit.helicaltrack.HitIdentifier;
+import org.lcsim.fit.helicaltrack.StereoHitMaker;
+import org.lcsim.geometry.subdetector.BarrelEndcapFlag;
+import org.lcsim.recon.tracking.digitization.sisim.SiTrackerHit;
+import org.lcsim.recon.tracking.digitization.sisim.SiTrackerHitStrip1D;
+import org.lcsim.recon.tracking.digitization.sisim.TrackerHitType.CoordinateSystem;
+import org.lcsim.recon.tracking.vsegment.hit.DigiTrackerHit;
+import org.lcsim.recon.tracking.vsegment.hit.TrackerCluster;
+import org.lcsim.util.Driver;
+
+/**
+ * Create the appropriate HelicalTrackHits for the specified TrackerHit
+ * collections.  The resulting HelicalTrackHits encapsulate the information
+ * needed to perform a helical track hit for either a segmented strip
+ * detector, a pixel detector, or cross hits from a stereo detector.
+ *
+ * This driver was developed for the Dark Forces silicon tracker, where
+ * digitized hits are in either axial or stereo layers.  The pairs of layers
+ * to be used in forming stereo hits can be specified using the setStereoPairs
+ * method.
+ *
+ * The list of hit collections to be converted must be specified
+ * before the process method is executed.
+ *
+ * @author Richard Partridge
+ * @version 1.0
+ */
+public class HPSHelicalTrackHitDriver extends Driver {
+
+//    private StereoHitMaker _crosser = new StereoHitMaker(2., 10.);
+    private StereoHitMaker _crosser = new StereoHitMaker(0.0, 10.);
+    private HitIdentifier _ID = new HitIdentifier();
+    private String _outname = "HelicalTrackHits";
+    private String _hitrelname = "HelicalTrackHitRelations";
+    private String _mcrelname = "HelicalTrackMCRelations";
+    private List<String> _colnames = new ArrayList<String>();
+    private Map<String, String> _stereomap = new HashMap<String, String>();
+    private Hep3Vector _orgloc = new BasicHep3Vector(0., 0., 0.);
+    private double _eps = 1.0e-6;
+
+    /** Creates a new instance of HelicalTrackHitDriver */
+    public HPSHelicalTrackHitDriver() {
+    }
+
+    /**
+     * Create the HelicalTrackHits for the specified hit collections.
+     * @param event EventHeader of the event to be processed
+     */
+    
+    public void process(EventHeader event) {
+        super.process(event);
+
+        //  Initialize the list of HelicalTrackHits
+        List<HelicalTrackHit> helhits = new ArrayList<HelicalTrackHit>();
+
+        //  Create a List of LCRelations to relate HelicalTrackHits to the original hits
+        List<LCRelation> hitrelations = new ArrayList<LCRelation>();
+
+        for (String _colname : _colnames) {
+
+            //  Get the list of SiTrackerHits for this collection
+            List<SiTrackerHit> hitlist = (List<SiTrackerHit>) event.get(_colname);
+
+            //  Create collections for strip hits by layer and hit cross references
+            Map<String, List<HelicalTrackStrip>> striplistmap = new HashMap<String, List<HelicalTrackStrip>>();
+            Map<HelicalTrackStrip, SiTrackerHitStrip1D> stripmap = new HashMap<HelicalTrackStrip, SiTrackerHitStrip1D>();
+
+            //  Loop over the SiTrackerHits in this collection
+            for (SiTrackerHit hit : hitlist) {
+
+                //  Check if we have a 1D strip hit
+                if (hit instanceof SiTrackerHitStrip1D) {
+
+                    //  Cast the hit as a 1D strip hit and find the identifier for the detector/layer combo
+                    SiTrackerHitStrip1D h = (SiTrackerHitStrip1D) hit;
+                    IDetectorElement de = h.getSensor();
+                    String id = makeID(_ID.getName(de), _ID.getLayer(de));
+
+                    //  Check if hit is on a stereo pair layer
+                    if (_stereomap.containsKey(id) || _stereomap.containsValue(id)) {
+
+                        //  Create a HelicalTrackStrip for this hit
+                        HelicalTrackStrip strip = makeDigiStrip(h);
+
+                        //  Get the list of strips for this layer - create a new list if one doesn't already exist
+                        List<HelicalTrackStrip> lyrhits = striplistmap.get(id);
+                        if (lyrhits == null) {
+                            lyrhits = new ArrayList<HelicalTrackStrip>();
+                            striplistmap.put(id, lyrhits);
+                        }
+
+                        //  Add the strip to the list of strips on this sensor
+                        lyrhits.add(strip);
+
+                        //  Map a reference back to the hit needed to create the stereo hit LC relations
+                        stripmap.put(strip, h);
+
+                    } else {
+
+                        //  If not a stereo hit, create an axial strip hit and the corresponding LC Relation
+                        HelicalTrackHit dah = makeDigiAxialHit(h);
+                        helhits.add(dah);
+                        hitrelations.add(new MyLCRelation(dah, hit));
+                    }
+
+                } else {
+
+                    //  If not a 1D strip hit, make a pixel hit
+                    HelicalTrackHit hit3d = makeDigi3DHit(hit);
+                    helhits.add(hit3d);
+                    hitrelations.add(new MyLCRelation(hit3d, hit));
+                }
+            }
+
+            //  Now create the stereo hits
+            //  Create a list of stereo hits
+            List<HelicalTrackCross> stereohits = new ArrayList<HelicalTrackCross>();
+
+            //  Loop over the stereo layer pairs
+            for (String id1 : _stereomap.keySet()) {
+
+                //  Get the second layer
+                String id2 = _stereomap.get(id1);
+
+                //  Form the stereo hits and add them to our hit list
+                stereohits.addAll(_crosser.MakeHits(striplistmap.get(id1), striplistmap.get(id2)));
+            }
+
+            for (HelicalTrackCross htc : stereohits) {
+                double ypos = htc.x();
+                double zpos = htc.z();
+                List<HelicalTrackStrip> htstrips = htc.getStrips();
+                for (HelicalTrackStrip hts : htstrips) {
+                }
+            }
+
+
+            //  Add the stereo hits to our list of HelicalTrackHits
+            helhits.addAll(stereohits);
+
+            //add LCRelation for strip hits
+            for (HelicalTrackCross cross : stereohits) {
+                for (HelicalTrackStrip strip : cross.getStrips()) {
+                    hitrelations.add(new MyLCRelation(cross, stripmap.get(strip)));
+                }
+            }
+        }
+
+        //  Create the LCRelations between HelicalTrackHits and MC particles
+        List<LCRelation> mcrelations = new ArrayList<LCRelation>();
+        for (HelicalTrackHit hit : helhits) {
+            for (MCParticle mcp : hit.getMCParticles()) {
+                mcrelations.add(new MyLCRelation(hit, mcp));
+            }
+        }
+
+
+        //  Put the HelicalTrackHits back into the event
+        event.put(_outname, helhits, HelicalTrackHit.class, 0);
+        event.put(_hitrelname, hitrelations, LCRelation.class, 0);
+        event.put(_mcrelname, mcrelations, LCRelation.class, 0);
+        return;
+    }
+
+    /**
+     * Name of the HelicalTrackHit collection to be put back in the event.
+     * @param outname Name to use for the HelicalTrackHit collection
+     */
+    public void addCollection(String colname) {
+        _colnames.add(colname);
+    }
+
+    public void OutputCollection(String outname) {
+        _outname = outname;
+        return;
+    }
+
+    public void setOutputCollectionName(String outname) {
+        _outname = outname;
+        return;
+    }
+
+    public void HitRelationName(String hitrelname) {
+        _hitrelname = hitrelname;
+        return;
+    }
+
+    public void MCRelationName(String mcrelname) {
+        _mcrelname = mcrelname;
+        return;
+    }
+
+    public void setMaxSeperation(double maxsep) {
+        _crosser.setMaxSeparation(maxsep);
+        return;
+    }
+
+    public void setTolerance(double tolerance) {
+        _crosser.setTolerance(tolerance);
+        return;
+    }
+
+    public void setStereoPair(String detname, int lyr1, int lyr2) {
+        _stereomap.put(makeID(detname, lyr1), makeID(detname, lyr2));
+    }
+
+    private List<MCParticle> getMCParticles(TrackerCluster cluster) {
+        List<MCParticle> mcplist = new ArrayList<MCParticle>();
+        for (DigiTrackerHit dhit : cluster.getDigiHits()) {
+            //  Get the elemental hits - not sure what the dif is...
+            for (DigiTrackerHit dhit2 : dhit.getElementalHits()) {
+                //  Get the MCParticle and add it to the hit
+                MCParticle mcp = dhit2.getMCParticle();
+                if (mcp != null) {
+                    mcplist.add(mcp);
+                }
+            }
+        }
+        return mcplist;
+    }
+
+    private HelicalTrackHit makeDigi3DHit(SiTrackerHit h) {
+
+        IDetectorElement de = h.getSensor();
+        int lyr = _ID.getLayer(de);
+        BarrelEndcapFlag be = _ID.getBarrelEndcapFlag(de);
+
+        HelicalTrackHit hit = new HelicalTrack3DHit(h.getPositionAsVector(),
+                h.getCovarianceAsMatrix(), h.getdEdx(), h.getTime(),
+                h.getRawHits(), _ID.getName(de), lyr, be);
+
+        for (MCParticle p : h.getMCParticles()) {
+            hit.addMCParticle(p);
+        }
+
+        return hit;
+
+    }
+
+    private HelicalTrackHit makeDigiAxialHit(SiTrackerHitStrip1D h) {
+
+        double z1 = h.getHitSegment().getEndPoint().z();
+        double z2 = h.getHitSegment().getStartPoint().z();
+        double zmin = Math.min(z1, z2);
+        double zmax = Math.max(z1, z2);
+        IDetectorElement de = h.getSensor();
+
+        HelicalTrackHit hit = new HelicalTrack2DHit(h.getPositionAsVector(),
+                h.getCovarianceAsMatrix(), h.getdEdx(), h.getTime(),
+                h.getRawHits(), _ID.getName(de), _ID.getLayer(de),
+                _ID.getBarrelEndcapFlag(de), zmin, zmax);
+
+        for (MCParticle p : h.getMCParticles()) {
+            hit.addMCParticle(p);
+        }
+        return hit;
+    }
+
+    private HelicalTrackStrip makeDigiStrip(SiTrackerHitStrip1D h) {
+
+        SiTrackerHitStrip1D local = h.getTransformedHit(CoordinateSystem.SENSOR);
+        SiTrackerHitStrip1D global = h.getTransformedHit(CoordinateSystem.GLOBAL);
+
+        ITransform3D trans = local.getLocalToGlobal();
+        Hep3Vector org = trans.transformed(_orgloc);
+        Hep3Vector u = global.getMeasuredCoordinate();
+        Hep3Vector v = global.getUnmeasuredCoordinate();
+
+        double umeas = local.getPosition()[0];
+        double vmin = VecOp.dot(local.getUnmeasuredCoordinate(), local.getHitSegment().getStartPoint());
+        double vmax = VecOp.dot(local.getUnmeasuredCoordinate(), local.getHitSegment().getEndPoint());
+        double du = Math.sqrt(local.getCovarianceAsMatrix().diagonal(0));
+
+        IDetectorElement de = h.getSensor();
+        String det = _ID.getName(de);
+        int lyr = _ID.getLayer(de);
+        BarrelEndcapFlag be = _ID.getBarrelEndcapFlag(de);
+
+        double dEdx = h.getdEdx();
+        double time = h.getTime();
+        List<RawTrackerHit> rawhits = h.getRawHits();
+        HelicalTrackStrip strip = new HelicalTrackStrip(org, u, v, umeas, du,
+                vmin, vmax, dEdx, time, rawhits, det, lyr, be);
+
+        for (MCParticle p : h.getMCParticles()) {
+            strip.addMCParticle(p);
+        }
+        return strip;
+    }
+
+    private String makeID(String detname, int lyr) {
+        return detname + lyr;
+    }
+}
\ No newline at end of file

hps-java/src/main/java/org/lcsim/HPSBase
OccupancyDriver.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- OccupancyDriver.java	10 Mar 2011 22:53:00 -0000	1.1
+++ OccupancyDriver.java	10 Mar 2011 23:17:49 -0000	1.2
@@ -4,13 +4,9 @@
  */
 package org.lcsim.HPSBase;
 
-import org.lcsim.HPSTestv1.*;
 import java.io.IOException;
-import java.util.logging.Level;
-import java.util.logging.Logger;
 import hep.aida.IHistogramFactory;
 import hep.aida.IProfile1D;
-import hep.physics.vec.BasicHep3Vector;
 import hep.physics.vec.Hep3Vector;
 
 import java.util.ArrayList;

hps-java/src/main/java/org/lcsim/HPSBase
MultiTrackReco.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- MultiTrackReco.java	10 Mar 2011 22:52:59 -0000	1.1
+++ MultiTrackReco.java	10 Mar 2011 23:17:49 -0000	1.2
@@ -3,7 +3,6 @@
  */
 package org.lcsim.HPSBase;
 
-import org.lcsim.HPSBase.*;
 import java.io.File;
 import java.util.List;
 
@@ -23,11 +22,11 @@
     public MultiTrackReco(String strategyPrefix,double bField, String sAxialfile, String sFinalfile, String sLongLived, List<int[]> stereoPairs, List<Integer> passLayers) {
 //  Digitization and hit making driver for planar sensors
 
-        TrackerHitDriver_DarkPhoton thd = new TrackerHitDriver_DarkPhoton();
+        HPSTrackerHitDriver thd = new HPSTrackerHitDriver();
         add(thd);
 
-        DarkForcesHitDriver hitdriver = new DarkForcesHitDriver();
-        hitdriver.addCollection(((TrackerHitDriver_DarkPhoton) thd).getStripHits1DName());
+        HPSHelicalTrackHitDriver hitdriver = new HPSHelicalTrackHitDriver();
+        hitdriver.addCollection(((HPSTrackerHitDriver) thd).getStripHits1DName());
         hitdriver.OutputCollection("AxialTrackHits");
         hitdriver.HitRelationName("AxialTrackHitRelations");
         hitdriver.MCRelationName("AxialTrackMCRelations");
@@ -56,8 +55,8 @@
 
         }
 
-        DarkForcesHitDriver hthdriver = new DarkForcesHitDriver();
-        hthdriver.addCollection(((TrackerHitDriver_DarkPhoton) thd).getStripHits1DName());
+        HPSHelicalTrackHitDriver hthdriver = new HPSHelicalTrackHitDriver();
+        hthdriver.addCollection(((HPSTrackerHitDriver) thd).getStripHits1DName());
         hthdriver.OutputCollection("HelicalTrackHits");
         hthdriver.HitRelationName("HelicalTrackHitRelations");
         hthdriver.MCRelationName("HelicalTrackMCRelations");

hps-java/src/main/java/org/lcsim/HPSBase
ReReconstructionDriver.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- ReReconstructionDriver.java	10 Mar 2011 22:53:00 -0000	1.1
+++ ReReconstructionDriver.java	10 Mar 2011 23:17:49 -0000	1.2
@@ -3,7 +3,6 @@
  */
 package org.lcsim.HPSBase;
 
-import org.lcsim.HPSTestv1.*;
 import java.util.ArrayList;
 import java.util.List;
 

hps-java/src/main/java/org/lcsim/HPSBase
SiTrackerFixedTargetSensorSetup.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- SiTrackerFixedTargetSensorSetup.java	10 Mar 2011 22:52:59 -0000	1.1
+++ SiTrackerFixedTargetSensorSetup.java	10 Mar 2011 23:17:50 -0000	1.2
@@ -1,6 +1,5 @@
 package org.lcsim.HPSBase;
 
-import org.lcsim.HPSTestv1.*;
 import hep.physics.matrix.BasicMatrix;
 import hep.physics.vec.BasicHep3Vector;
 import hep.physics.vec.VecOp;

hps-java/src/main/java/org/lcsim/HPSBase
MakeSensorsDriver.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- MakeSensorsDriver.java	10 Mar 2011 22:53:00 -0000	1.1
+++ MakeSensorsDriver.java	10 Mar 2011 23:17:50 -0000	1.2
@@ -4,7 +4,6 @@
  */
 package org.lcsim.HPSBase;
 
-import org.lcsim.HPSTestv1.*;
 import org.lcsim.util.Driver;
 
 /**

hps-java/src/main/java/org/lcsim/HPSBase
StripHitsOnTrack.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- StripHitsOnTrack.java	10 Mar 2011 22:53:00 -0000	1.1
+++ StripHitsOnTrack.java	10 Mar 2011 23:17:50 -0000	1.2
@@ -3,7 +3,6 @@
  */
 package org.lcsim.HPSBase;
 
-import org.lcsim.HPSTestv1.*;
 import java.util.ArrayList;
 import java.util.List;
 

hps-java/src/main/java/org/lcsim/HPSBase
TrackerHitDriver_DarkPhoton.java removed after 1.1
diff -N TrackerHitDriver_DarkPhoton.java
--- TrackerHitDriver_DarkPhoton.java	10 Mar 2011 22:53:00 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,244 +0,0 @@
-/*
- * TrackerHitDriver Class
- *
- */
-package org.lcsim.HPSBase;
-
-import org.lcsim.HPSTestv1.*;
-import java.util.ArrayList;
-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.ClusteringAlgorithm;
-import org.lcsim.recon.tracking.digitization.sisim.BasicReadoutChip;
-import org.lcsim.recon.tracking.digitization.sisim.NearestNeighbor;
-import org.lcsim.recon.tracking.digitization.sisim.NearestNeighborRMS;
-import org.lcsim.recon.tracking.digitization.sisim.PixelHitMaker;
-import org.lcsim.recon.tracking.digitization.sisim.RawTrackerHitMaker;
-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.StripHitMaker;
-import org.lcsim.recon.tracking.digitization.sisim.config.SimTrackerHitReadoutDriver;
-import org.lcsim.util.Driver;
-import org.lcsim.util.lcio.LCIOConstants;
-
-/**
- *
- * @author tknelson
- */
-public class TrackerHitDriver_DarkPhoton 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>();
-    SiDigitizer _strip_digitizer;
-    SiDigitizer _pixel_digitizer;
-    StripHitMaker _strip_clusterer;
-    PixelHitMaker _pixel_clusterer;
-    String _digitizer_name;
-    int _nev = 0;
-    int _ngc = 0;
-
-    /**
-     * Creates a new instance of TrackerHitDriver
-     */
-    public TrackerHitDriver_DarkPhoton() {
-
-        //  Instantiate the sensor simulation classes and set the thresholds
-//        SiSensorSim strip_simulation = new CDFSiSensorSim();
-        CDFSiSensorSim strip_simulation = new CDFSiSensorSim();
-
-        //  Instantiate the readout chips and set the noise parameters
-        BasicReadoutChip strip_readout = new BasicReadoutChip();
-//  ABCD -- Pristine
-/*
-        strip_readout.setNoiseIntercept(600.);
-        strip_readout.setNoiseSlope(65.);
-        strip_readout.setNoiseThreshold(4.);
-        strip_readout.setNeighborThreshold(4.);
-        strip_readout.setNbits(1);
-        strip_readout.setDynamicRange(10);
-         */
-        // APV25 -- Pristine
-
-        strip_readout.setNoiseIntercept(270.);
-        strip_readout.setNoiseSlope(36.);
-        strip_readout.setNoiseThreshold(4.);
-        strip_readout.setNeighborThreshold(4.);
-        strip_readout.setNbits(10);
-        strip_readout.setDynamicRange(40);
-
-        //set trapping to 0.2 to simulate radiation damage.
-//        strip_simulation.setTrapping(0.2);
-//                strip_simulation.setTrapping(0.12);
-
-        //  Instantiate the digitizer that produces the raw hits
-        _strip_digitizer = new RawTrackerHitMaker(strip_simulation, strip_readout);
-
-        _digitizer_name = _strip_digitizer.getName();
-
-        //  Instantiate a nearest neighbor clustering algorithm for the strips
-//        NearestNeighbor strip_clustering = new NearestNeighbor();
-//        strip_clustering.setSeedThreshold(4.);
-//        strip_clustering.setNeighborThreshold(4.);
-
-        NearestNeighborRMS strip_clustering = new NearestNeighborRMS();
-        strip_clustering.setSeedThreshold(4.);
-        strip_clustering.setNeighborThreshold(3.);
-        strip_clustering.setClusterThreshold(4.);
-
-        //  Instantiate the clusterers and set hit-making parameters
-        _strip_clusterer = new StripHitMaker(strip_simulation, strip_readout, strip_clustering);
-        _strip_clusterer.setMaxClusterSize(10);
-        _strip_clusterer.setCentralStripAveragingThreshold(4);
-        /*
-        _strip_clusterer.SetOneClusterErr(1 / Math.sqrt(12.));
-        _strip_clusterer.SetTwoClusterErr(1 / 5.0);
-        _strip_clusterer.SetThreeClusterErr(1 / 3.0);
-        _strip_clusterer.SetFourClusterErr(1 / 2.0);
-        _strip_clusterer.SetFiveClusterErr(1 / 1.0);
-         */
-        double multiplier = 1.0;
-        _strip_clusterer.SetOneClusterErr(multiplier / Math.sqrt(12.));
-        _strip_clusterer.SetTwoClusterErr(multiplier / 5.0);
-        _strip_clusterer.SetThreeClusterErr(multiplier / 3.0);
-        _strip_clusterer.SetFourClusterErr(multiplier / 2.0);
-        _strip_clusterer.SetFiveClusterErr(multiplier / 1.0);
-
-
-        //  Specify the readouts to process
-        _readouts.add("TrackerHits");
-        //  Specify the detectors to process
-        _process_paths.add("Tracker");
-    }
-
-    /**
-     * Initialize whenever we have a new detector
-     * 
-     * @param detector
-     */
-    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 Name =" + 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));
-        }
-
-    }
-
-    /**
-     * Setup readouts
-     */
-    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));
-        }
-
-        super.startOfData();
-        _readouts.clear();
-        _nev = 0;
-        _ngc = 0;
-    }
-
-    /**
-     * Main digitization driver.  Creates raw hits, forms clusters, and makes
-     * tracker hits using the sisim package.
-     *
-     * @param event
-     */
-    public void process(EventHeader event) {
-        super.process(event);
-
-        //  Print out the event number
-       
-        _nev++;
-        _ngc++;
-        if (_ngc == 100) {
-             System.out.println("TrackerHitDriver processing event " + _nev);
-            System.gc();
-            _ngc = 0;
-        }
-
-
-        // Lists of hits
-        List<RawTrackerHit> raw_hits = new ArrayList<RawTrackerHit>();
-        List<SiTrackerHit> hits_strip1D = new ArrayList<SiTrackerHit>();
-        List<SiTrackerHit> hits_pixel = new ArrayList<SiTrackerHit>();
-
-        for (SiSensor sensor : _process_sensors) {
-
-            if (sensor.hasStrips()) {
-                raw_hits.addAll(_strip_digitizer.makeHits(sensor));
-                hits_strip1D.addAll(_strip_clusterer.makeHits(sensor));
-
-            }
-
-
-            if (sensor.hasPixels()) {
-                raw_hits.addAll(_pixel_digitizer.makeHits(sensor));
-                hits_pixel.addAll(_pixel_clusterer.makeHits(sensor));
-            }
-
-        }
-
-//        int flag = (1 << LCIOConstants.RTHBIT_HITS | 1 << LCIOConstants.TRAWBIT_ID1); //correct flag for persistence
-        int flag=0;
-        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());
-
-    }
-
-    /**
-     * Return the name of the raw hits collection
-     *
-     * @return name of raw hits collection
-     */
-    public String getRawHitsName() {
-        return _digitizer_name + "_RawTrackerHits";
-    }
-
-    /**
-     * Return the name of the strip hits collection
-     *
-     * @return name of strip hits collection
-     */
-    public String getStripHits1DName() {
-        return _strip_clusterer.getName() + "_SiTrackerHitStrip1D";
-    }
-
-    /**
-     * Return the name of the pixel hits collection
-     *
-     * @return name of pixel hits collection
-     */
-    public String getPixelHitsName() {
-        return _pixel_clusterer.getName() + "_SiTrackerHitPixel";
-    }
-}
\ No newline at end of file

hps-java/src/main/java/org/lcsim/HPSBase
DarkForcesHitDriver.java removed after 1.1
diff -N DarkForcesHitDriver.java
--- DarkForcesHitDriver.java	10 Mar 2011 22:52:59 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,324 +0,0 @@
-/*
- * DarkForcesHitDriver.java
- *
- * Created on January 4, 2010
- *
- */
-package org.lcsim.HPSBase;
-
-import org.lcsim.HPSTestv1.*;
-import hep.physics.vec.BasicHep3Vector;
-import hep.physics.vec.Hep3Vector;
-import hep.physics.vec.VecOp;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.lcsim.detector.IDetectorElement;
-import org.lcsim.detector.ITransform3D;
-import org.lcsim.digisim.MyLCRelation;
-import org.lcsim.event.EventHeader;
-import org.lcsim.event.LCRelation;
-import org.lcsim.event.MCParticle;
-import org.lcsim.event.RawTrackerHit;
-import org.lcsim.fit.helicaltrack.HelicalTrack2DHit;
-import org.lcsim.fit.helicaltrack.HelicalTrack3DHit;
-import org.lcsim.fit.helicaltrack.HelicalTrackCross;
-import org.lcsim.fit.helicaltrack.HelicalTrackHit;
-import org.lcsim.fit.helicaltrack.HelicalTrackStrip;
-import org.lcsim.fit.helicaltrack.HitIdentifier;
-import org.lcsim.fit.helicaltrack.StereoHitMaker;
-import org.lcsim.geometry.subdetector.BarrelEndcapFlag;
-import org.lcsim.recon.tracking.digitization.sisim.SiTrackerHit;
-import org.lcsim.recon.tracking.digitization.sisim.SiTrackerHitStrip1D;
-import org.lcsim.recon.tracking.digitization.sisim.TrackerHitType.CoordinateSystem;
-import org.lcsim.recon.tracking.vsegment.hit.DigiTrackerHit;
-import org.lcsim.recon.tracking.vsegment.hit.TrackerCluster;
-import org.lcsim.util.Driver;
-
-/**
- * Create the appropriate HelicalTrackHits for the specified TrackerHit
- * collections.  The resulting HelicalTrackHits encapsulate the information
- * needed to perform a helical track hit for either a segmented strip
- * detector, a pixel detector, or cross hits from a stereo detector.
- *
- * This driver was developed for the Dark Forces silicon tracker, where
- * digitized hits are in either axial or stereo layers.  The pairs of layers
- * to be used in forming stereo hits can be specified using the setStereoPairs
- * method.
- *
- * The list of hit collections to be converted must be specified
- * before the process method is executed.
- *
- * @author Richard Partridge
- * @version 1.0
- */
-public class DarkForcesHitDriver extends Driver {
-
-//    private StereoHitMaker _crosser = new StereoHitMaker(2., 10.);
-    private StereoHitMaker _crosser = new StereoHitMaker(0.0, 10.);
-    private HitIdentifier _ID = new HitIdentifier();
-    private String _outname = "HelicalTrackHits";
-    private String _hitrelname = "HelicalTrackHitRelations";
-    private String _mcrelname = "HelicalTrackMCRelations";
-    private List<String> _colnames = new ArrayList<String>();
-    private Map<String, String> _stereomap = new HashMap<String, String>();
-    private Hep3Vector _orgloc = new BasicHep3Vector(0., 0., 0.);
-    private double _eps = 1.0e-6;
-
-    /** Creates a new instance of HelicalTrackHitDriver */
-    public DarkForcesHitDriver() {
-    }
-
-    /**
-     * Create the HelicalTrackHits for the specified hit collections.
-     * @param event EventHeader of the event to be processed
-     */
-    
-    public void process(EventHeader event) {
-        super.process(event);
-
-        //  Initialize the list of HelicalTrackHits
-        List<HelicalTrackHit> helhits = new ArrayList<HelicalTrackHit>();
-
-        //  Create a List of LCRelations to relate HelicalTrackHits to the original hits
-        List<LCRelation> hitrelations = new ArrayList<LCRelation>();
-
-        for (String _colname : _colnames) {
-
-            //  Get the list of SiTrackerHits for this collection
-            List<SiTrackerHit> hitlist = (List<SiTrackerHit>) event.get(_colname);
-
-            //  Create collections for strip hits by layer and hit cross references
-            Map<String, List<HelicalTrackStrip>> striplistmap = new HashMap<String, List<HelicalTrackStrip>>();
-            Map<HelicalTrackStrip, SiTrackerHitStrip1D> stripmap = new HashMap<HelicalTrackStrip, SiTrackerHitStrip1D>();
-
-            //  Loop over the SiTrackerHits in this collection
-            for (SiTrackerHit hit : hitlist) {
-
-                //  Check if we have a 1D strip hit
-                if (hit instanceof SiTrackerHitStrip1D) {
-
-                    //  Cast the hit as a 1D strip hit and find the identifier for the detector/layer combo
-                    SiTrackerHitStrip1D h = (SiTrackerHitStrip1D) hit;
-                    IDetectorElement de = h.getSensor();
-                    String id = makeID(_ID.getName(de), _ID.getLayer(de));
-
-                    //  Check if hit is on a stereo pair layer
-                    if (_stereomap.containsKey(id) || _stereomap.containsValue(id)) {
-
-                        //  Create a HelicalTrackStrip for this hit
-                        HelicalTrackStrip strip = makeDigiStrip(h);
-
-                        //  Get the list of strips for this layer - create a new list if one doesn't already exist
-                        List<HelicalTrackStrip> lyrhits = striplistmap.get(id);
-                        if (lyrhits == null) {
-                            lyrhits = new ArrayList<HelicalTrackStrip>();
-                            striplistmap.put(id, lyrhits);
-                        }
-
-                        //  Add the strip to the list of strips on this sensor
-                        lyrhits.add(strip);
-
-                        //  Map a reference back to the hit needed to create the stereo hit LC relations
-                        stripmap.put(strip, h);
-
-                    } else {
-
-                        //  If not a stereo hit, create an axial strip hit and the corresponding LC Relation
-                        HelicalTrackHit dah = makeDigiAxialHit(h);
-                        helhits.add(dah);
-                        hitrelations.add(new MyLCRelation(dah, hit));
-                    }
-
-                } else {
-
-                    //  If not a 1D strip hit, make a pixel hit
-                    HelicalTrackHit hit3d = makeDigi3DHit(hit);
-                    helhits.add(hit3d);
-                    hitrelations.add(new MyLCRelation(hit3d, hit));
-                }
-            }
-
-            //  Now create the stereo hits
-            //  Create a list of stereo hits
-            List<HelicalTrackCross> stereohits = new ArrayList<HelicalTrackCross>();
-
-            //  Loop over the stereo layer pairs
-            for (String id1 : _stereomap.keySet()) {
-
-                //  Get the second layer
-                String id2 = _stereomap.get(id1);
-
-                //  Form the stereo hits and add them to our hit list
-                stereohits.addAll(_crosser.MakeHits(striplistmap.get(id1), striplistmap.get(id2)));
-            }
-
-            for (HelicalTrackCross htc : stereohits) {
-                double ypos = htc.x();
-                double zpos = htc.z();
-                List<HelicalTrackStrip> htstrips = htc.getStrips();
-                for (HelicalTrackStrip hts : htstrips) {
-                }
-            }
-
-
-            //  Add the stereo hits to our list of HelicalTrackHits
-            helhits.addAll(stereohits);
-
-            //add LCRelation for strip hits
-            for (HelicalTrackCross cross : stereohits) {
-                for (HelicalTrackStrip strip : cross.getStrips()) {
-                    hitrelations.add(new MyLCRelation(cross, stripmap.get(strip)));
-                }
-            }
-        }
-
-        //  Create the LCRelations between HelicalTrackHits and MC particles
-        List<LCRelation> mcrelations = new ArrayList<LCRelation>();
-        for (HelicalTrackHit hit : helhits) {
-            for (MCParticle mcp : hit.getMCParticles()) {
-                mcrelations.add(new MyLCRelation(hit, mcp));
-            }
-        }
-
-
-        //  Put the HelicalTrackHits back into the event
-        event.put(_outname, helhits, HelicalTrackHit.class, 0);
-        event.put(_hitrelname, hitrelations, LCRelation.class, 0);
-        event.put(_mcrelname, mcrelations, LCRelation.class, 0);
-        return;
-    }
-
-    /**
-     * Name of the HelicalTrackHit collection to be put back in the event.
-     * @param outname Name to use for the HelicalTrackHit collection
-     */
-    public void addCollection(String colname) {
-        _colnames.add(colname);
-    }
-
-    public void OutputCollection(String outname) {
-        _outname = outname;
-        return;
-    }
-
-    public void setOutputCollectionName(String outname) {
-        _outname = outname;
-        return;
-    }
-
-    public void HitRelationName(String hitrelname) {
-        _hitrelname = hitrelname;
-        return;
-    }
-
-    public void MCRelationName(String mcrelname) {
-        _mcrelname = mcrelname;
-        return;
-    }
-
-    public void setMaxSeperation(double maxsep) {
-        _crosser.setMaxSeparation(maxsep);
-        return;
-    }
-
-    public void setTolerance(double tolerance) {
-        _crosser.setTolerance(tolerance);
-        return;
-    }
-
-    public void setStereoPair(String detname, int lyr1, int lyr2) {
-        _stereomap.put(makeID(detname, lyr1), makeID(detname, lyr2));
-    }
-
-    private List<MCParticle> getMCParticles(TrackerCluster cluster) {
-        List<MCParticle> mcplist = new ArrayList<MCParticle>();
-        for (DigiTrackerHit dhit : cluster.getDigiHits()) {
-            //  Get the elemental hits - not sure what the dif is...
-            for (DigiTrackerHit dhit2 : dhit.getElementalHits()) {
-                //  Get the MCParticle and add it to the hit
-                MCParticle mcp = dhit2.getMCParticle();
-                if (mcp != null) {
-                    mcplist.add(mcp);
-                }
-            }
-        }
-        return mcplist;
-    }
-
-    private HelicalTrackHit makeDigi3DHit(SiTrackerHit h) {
-
-        IDetectorElement de = h.getSensor();
-        int lyr = _ID.getLayer(de);
-        BarrelEndcapFlag be = _ID.getBarrelEndcapFlag(de);
-
-        HelicalTrackHit hit = new HelicalTrack3DHit(h.getPositionAsVector(),
-                h.getCovarianceAsMatrix(), h.getdEdx(), h.getTime(),
-                h.getRawHits(), _ID.getName(de), lyr, be);
-
-        for (MCParticle p : h.getMCParticles()) {
-            hit.addMCParticle(p);
-        }
-
-        return hit;
-
-    }
-
-    private HelicalTrackHit makeDigiAxialHit(SiTrackerHitStrip1D h) {
-
-        double z1 = h.getHitSegment().getEndPoint().z();
-        double z2 = h.getHitSegment().getStartPoint().z();
-        double zmin = Math.min(z1, z2);
-        double zmax = Math.max(z1, z2);
-        IDetectorElement de = h.getSensor();
-
-        HelicalTrackHit hit = new HelicalTrack2DHit(h.getPositionAsVector(),
-                h.getCovarianceAsMatrix(), h.getdEdx(), h.getTime(),
-                h.getRawHits(), _ID.getName(de), _ID.getLayer(de),
-                _ID.getBarrelEndcapFlag(de), zmin, zmax);
-
-        for (MCParticle p : h.getMCParticles()) {
-            hit.addMCParticle(p);
-        }
-        return hit;
-    }
-
-    private HelicalTrackStrip makeDigiStrip(SiTrackerHitStrip1D h) {
-
-        SiTrackerHitStrip1D local = h.getTransformedHit(CoordinateSystem.SENSOR);
-        SiTrackerHitStrip1D global = h.getTransformedHit(CoordinateSystem.GLOBAL);
-
-        ITransform3D trans = local.getLocalToGlobal();
-        Hep3Vector org = trans.transformed(_orgloc);
-        Hep3Vector u = global.getMeasuredCoordinate();
-        Hep3Vector v = global.getUnmeasuredCoordinate();
-
-        double umeas = local.getPosition()[0];
-        double vmin = VecOp.dot(local.getUnmeasuredCoordinate(), local.getHitSegment().getStartPoint());
-        double vmax = VecOp.dot(local.getUnmeasuredCoordinate(), local.getHitSegment().getEndPoint());
-        double du = Math.sqrt(local.getCovarianceAsMatrix().diagonal(0));
-
-        IDetectorElement de = h.getSensor();
-        String det = _ID.getName(de);
-        int lyr = _ID.getLayer(de);
-        BarrelEndcapFlag be = _ID.getBarrelEndcapFlag(de);
-
-        double dEdx = h.getdEdx();
-        double time = h.getTime();
-        List<RawTrackerHit> rawhits = h.getRawHits();
-        HelicalTrackStrip strip = new HelicalTrackStrip(org, u, v, umeas, du,
-                vmin, vmax, dEdx, time, rawhits, det, lyr, be);
-
-        for (MCParticle p : h.getMCParticles()) {
-            strip.addMCParticle(p);
-        }
-        return strip;
-    }
-
-    private String makeID(String detname, int lyr) {
-        return detname + lyr;
-    }
-}
\ No newline at end of file

hps-java/src/main/java/org/lcsim/HPSBase
DarkPhotonTrackHitDriver.java removed after 1.1
diff -N DarkPhotonTrackHitDriver.java
--- DarkPhotonTrackHitDriver.java	10 Mar 2011 22:53:00 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,573 +0,0 @@
-/*
- * HelicalTrackHitDriver.java
- *
- * Created on November 30, 2007, 3:50 PM
- *
- */
-
-package org.lcsim.HPSBase;
-
-import org.lcsim.HPSTestv1.*;
-import hep.physics.matrix.SymmetricMatrix;
-import hep.physics.vec.BasicHep3Vector;
-import hep.physics.vec.Hep3Vector;
-import hep.physics.vec.VecOp;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.lcsim.detector.IDetectorElement;
-import org.lcsim.detector.ITransform3D;
-import org.lcsim.detector.tracker.silicon.SiSensor;
-import org.lcsim.detector.tracker.silicon.SiTrackerModule;
-import org.lcsim.digisim.MyLCRelation;
-import org.lcsim.event.EventHeader;
-import org.lcsim.event.LCRelation;
-import org.lcsim.event.MCParticle;
-import org.lcsim.event.RawTrackerHit;
-import org.lcsim.event.SimTrackerHit;
-import org.lcsim.event.TrackerHit;
-import org.lcsim.event.base.BaseTrackerHitMC;
-import org.lcsim.fit.helicaltrack.HelicalTrack2DHit;
-import org.lcsim.fit.helicaltrack.HelicalTrack3DHit;
-import org.lcsim.fit.helicaltrack.HelicalTrackCross;
-import org.lcsim.fit.helicaltrack.HelicalTrackHit;
-import org.lcsim.fit.helicaltrack.HelicalTrackStrip;
-import org.lcsim.fit.helicaltrack.HitIdentifier;
-import org.lcsim.fit.helicaltrack.HitUtils;
-import org.lcsim.fit.helicaltrack.StereoHitMaker;
-import org.lcsim.geometry.subdetector.BarrelEndcapFlag;
-import org.lcsim.recon.tracking.digitization.sisim.SiTrackerHit;
-import org.lcsim.recon.tracking.digitization.sisim.SiTrackerHitStrip1D;
-import org.lcsim.recon.tracking.digitization.sisim.TrackerHitType.CoordinateSystem;
-import org.lcsim.recon.tracking.vsegment.geom.SegmentationManager;
-import org.lcsim.recon.tracking.vsegment.geom.Sensor;
-import org.lcsim.recon.tracking.vsegment.geom.SensorType;
-import org.lcsim.recon.tracking.vsegment.geom.sensortypes.Cylinder;
-import org.lcsim.recon.tracking.vsegment.hit.DigiTrackerHit;
-import org.lcsim.recon.tracking.vsegment.hit.TrackerCluster;
-import org.lcsim.spacegeom.SpacePointVector;
-import org.lcsim.util.Driver;
-
-/**
- * Create the appropriate HelicalTrackHits for the specified TrackerHit
- * collections.  The resulting HelicalTrackHits encapsulate the information
- * needed to perform a helical track hit for either a segmented strip
- * detector, a pixel detector, or cross hits from a stereo detector.
- *
- * At this time, this driver supports the virtual segmentation hits
- * produced by the packages in contrib.onoprien.tracking.  Additional
- * coding needs to be done to support fully segmented detectors.
- *
- * The list of hit collections to be converted must be specified
- * before the process method is executed.
- *
- * Currently,
- * @author Richard Partridge
- * @version 1.0
- * modified for fixed target dark photon search on 1/4/09
- * @author Matt Graham
- */
-public class DarkPhotonTrackHitDriver extends Driver {
-    /**
-     * Type of hits to be converted/
-     */
-    public enum HitType {
-        /**
-         * Anything that uses BaseTrackerHit or BaseTrackerHitMC, for examples
-         * hits created by PixSim or TrackerHitCheater
-         */
-        Base,
-        /**
-         * Virtual segmentation (OldTrackerHit) hits.
-         */
-        VirtualSegmentation,
-        /**
-         *
-         *  Digitized (SiTrackerHit)
-         */
-        Digitized
-    }
-    private StereoHitMaker _crosser = new StereoHitMaker(2., 10.);
-    private HitIdentifier _ID = new HitIdentifier();
-    private SegmentationManager _segman;
-    private List<String> _vscol = new ArrayList<String>();
-    private List<String> _bscol = new ArrayList<String>();
-    private List<String> _digcol = new ArrayList<String>();
-    private String _outname = "HelicalTrackHits";
-    private String _hitrelname = "HelicalTrackHitRelations";
-    private String _mcrelname = "HelicalTrackMCRelations";
-    private Hep3Vector _uloc = new BasicHep3Vector(1., 0., 0.);
-    private Hep3Vector _vloc = new BasicHep3Vector(0., 1., 0.);
-    private Hep3Vector _zhat = new BasicHep3Vector(0., 0., 1.);
-    private Hep3Vector _orgloc = new BasicHep3Vector(0., 0., 0.);
-    private double _eps = 1.0e-6;
-    
-    /** Creates a new instance of HelicalTrackHitDriver */
-    public DarkPhotonTrackHitDriver() {
-    }
-    
-    /**
-     * Create the HelicalTrackHits for the specified hit collections.
-     * @param event EventHeader of the event to be processed
-     */
-    
-    public void process(EventHeader event) {
-        super.process(event);
-
-        //  Initialize the list of HelicalTrackHits and vector with local z direction
-        List<HelicalTrackHit> helhits = new ArrayList<HelicalTrackHit>();
-        Hep3Vector lz = new BasicHep3Vector(0., 0., 1.);
-        
-        //  Create a List of LCRelations to relate HelicalTrackHits to the original hits
-        List<LCRelation> hitrelations = new ArrayList<LCRelation>();
-        
-        for (String colname : _bscol) {
-            List<TrackerHit> hitlist = (List<TrackerHit>) event.get(colname);
-            for (TrackerHit hit : hitlist) {
-                Hep3Vector pos = new BasicHep3Vector(hit.getPosition());
-                SymmetricMatrix cov = new SymmetricMatrix(3, hit.getCovMatrix(), true);
-                TrackerHit ohit = hit;
-                
-//                try {
-                    //create a BaseTrackerHitMC from a BaseTrackerHit if necessary
-                    if (!(hit instanceof BaseTrackerHitMC)){
-                        List<SimTrackerHit> thesehits = new ArrayList<SimTrackerHit>();
-                        List<RawTrackerHit> rawhits = (List<RawTrackerHit>)hit.getRawHits();
-                        for (RawTrackerHit raw : rawhits) {
-                            thesehits.addAll(raw.getSimTrackerHits());
-                        }
-                        hit = new BaseTrackerHitMC(hit.getPosition(), hit.getCovMatrix(),
-                                hit.getTime(), hit.getdEdx(), hit.getType(), thesehits);
-                        ((BaseTrackerHitMC)hit).addRawTrackerHits(rawhits);
-                        
-                    }
-                    
-                    SimTrackerHit simhit = ((BaseTrackerHitMC)hit).getSimHits().get(0);
-                    HelicalTrackHit hthit = new HelicalTrack3DHit(pos, cov, hit.getdEdx(), hit.getTime(), hit.getRawHits(),
-                                _ID.getName(simhit), _ID.getLayer(simhit), _ID.getBarrelEndcapFlag(simhit));
-//                    IDetectorElementContainer cont = DetectorElementStore.getInstance().find(simhit.getIdentifier());
-//                    if (cont.isEmpty()) {
-//                        throw new RuntimeException("Detector Container is empty!");
-//                    } else {
-//                        IDetectorElement de = cont.get(0);
-                        
-                    for (MCParticle p : ((BaseTrackerHitMC)hit).mcParticles()) hthit.addMCParticle(p);
-                    hitrelations.add(new MyLCRelation(hthit, ohit));
-                    helhits.add(hthit);
-//                  }
-//
-//                } catch(Exception e) {
-//                    System.out.println("Warning, could not complete Identification for smeared hits. Reason: "+e.getMessage());
-//                    HelicalTrackHit hthit = new HelicalTrack3DHit(pos, cov, hit.getdEdx(), hit.getTime(),
-//                            hit.getRawHits(), "Unknown", 0, BarrelEndcapFlag.BARREL);
-//                    hitrelations.add(new MyLCRelation(hthit, ohit));
-//                    helhits.add(hthit);
-//                }
-            }
-        }
-        
-        //  Loop over the collections of hits with virtual segmentation
-        for (String colname : _vscol) {
-            
-            //  Get the segmentation manager if we haven't already done so
-            if (_segman == null) _segman = (SegmentationManager) event.get("SegmentationManager");
-            
-            //  Make a mapping between the stereo strips and corresponding hits
-            Map<HelicalTrackStrip, org.lcsim.recon.tracking.vsegment.hit.TrackerHit> stripmap =
-                    new HashMap<HelicalTrackStrip, org.lcsim.recon.tracking.vsegment.hit.TrackerHit>();
-            
-            //  Get the hit map that gives the list of hits on a particular sensor
-            Map<Sensor, List<org.lcsim.recon.tracking.vsegment.hit.TrackerHit>> hitmap =
-                    (Map<Sensor, List<org.lcsim.recon.tracking.vsegment.hit.TrackerHit>>) event.get(colname);
-            
-            //  Loop over sensors in the hit map
-            for (Sensor sensor : hitmap.keySet()) {
-                //  Get a list of hits for this sensor and loop over the hits
-                List<org.lcsim.recon.tracking.vsegment.hit.TrackerHit> sensorhits = hitmap.get(sensor);
-                for (org.lcsim.recon.tracking.vsegment.hit.TrackerHit hit : sensorhits) {
-                    //  Convert to an old tracker hit for reference
-                    ArrayList<TrackerCluster> parents = new ArrayList<TrackerCluster>(1);
-                    parents.add(hit.getCluster());
-                    //  Check if we have a strip or pixel hit
-                    if (sensor.getType().getHitDimension() == 1) {
-                        //  Strip hit - now check if this hit is part of a stereo pair
-                        if (_segman.getStereoPartners(sensor) == null) {
-                            //  Isolated axial hit - convert it and add to the hit list
-                            HelicalTrackHit axialhit = MakeAxialHit(hit);
-                            if (axialhit != null) {
-                                hitrelations.add(new MyLCRelation(axialhit, hit));
-                                helhits.add(axialhit);
-                            }
-                        } else {
-                            //  Stereo hit - convert it and add it to the list of stereo strips
-                            HelicalTrackStrip strip = MakeStrip(hit);
-                            stripmap.put(strip, hit);
-                        }
-                    } else {
-                        //  Pixel hit - convert it and add to the hit list
-                        HelicalTrackHit pixelhit = MakePixelHit(hit);
-                        hitrelations.add(new MyLCRelation(pixelhit, hit));
-                        helhits.add(pixelhit);
-                    }
-                }
-            }
-            
-            //  Make the stereo hits
-            List<HelicalTrackStrip> striplist = new ArrayList<HelicalTrackStrip>(stripmap.keySet());
-            List<HelicalTrackCross> stereohits = _crosser.MakeHits(striplist);
-            for (HelicalTrackCross hit : stereohits) {
-                for (HelicalTrackStrip strip : hit.getStrips()) {
-                    hitrelations.add(new MyLCRelation(hit, stripmap.get(strip)));
-                }
-                helhits.add(hit);
-            }
-        }
-
-        //  Loop over the collections of hits produced by the sisim digitization code
-        for (String colname : _digcol) {
-
-            //  Get the list of SiTrackerHits for this collection
-            List<SiTrackerHit> hitlist = (List<SiTrackerHit>) event.get(colname);
-
-            //  Create collections for modules, strip hits by sensor, and hit cross references
-            Set<SiTrackerModule> modules = new HashSet<SiTrackerModule>();
-            Map<SiSensor, List<HelicalTrackStrip>> sensormap = new HashMap<SiSensor, List<HelicalTrackStrip>>();
-            Map<HelicalTrackStrip, SiTrackerHitStrip1D> stripmap = new HashMap<HelicalTrackStrip, SiTrackerHitStrip1D>();
-
-            //  Loop over the SiTrackerHits in this collection
-            for (SiTrackerHit hit : hitlist) {
-                
-                if (hit instanceof SiTrackerHitStrip1D) {
-                    //determine if the hit is stereoed or not
-                    SiTrackerHitStrip1D h = (SiTrackerHitStrip1D) hit;
-                    
-                    //  Get the sensor and parent modules
-                    SiSensor sensor = h.getSensor();
-                    SiTrackerModule m = (SiTrackerModule) sensor.getParent();
-
-                    //  Check if we have a stereo hit (i.e., the module has 2 children)
-                    if (m.getChildren().size()==2) {
-                        
-                        //  Add the module to the set of modules containing stereo hits
-                        modules.add(m);
-
-                        //  Create a HelicalTrackStrip for this hit
-                        HelicalTrackStrip strip = makeDigiStrip(h);
-
-                        //  Get the list of strips for this module - create a new list if one doesn't already exist
-                        List<HelicalTrackStrip> modhits = sensormap.get(sensor);
-                        if (modhits == null) {
-                            modhits = new ArrayList<HelicalTrackStrip>();
-                            sensormap.put(sensor, modhits);
-                        }
-                        
-                        //  Add the strip to the list of strips on this sensor
-                        modhits.add(strip);
-                        
-                        //  Map a reference back to the hit needed to create the stereo hit LC relations
-                        stripmap.put(strip, h);
-
-                    } else {
-                        //System.out.println("trying to make an axial hit???");
-                        HelicalTrackHit dah = makeDigiAxialHit(h);
-                        helhits.add(dah); //isolated hit
-                        hitrelations.add(new MyLCRelation(dah,hit));
-                    }
-                }
-                //for other types, make 3d hits
-                else {
-                    HelicalTrackHit hit3d = makeDigi3DHit(hit);
-                    helhits.add(hit3d);
-                    hitrelations.add(new MyLCRelation(hit3d, hit));
-                }
-            }
-            //  Now create the stereo hits
-            //  Create a list of stereo hits
-            List<HelicalTrackCross> stereohits = new ArrayList<HelicalTrackCross>();
-
-            //  Loop over the modules with hits
-            for (SiTrackerModule m : modules) {
-
-                //  Make sure we have 2 sensors, and get the sensors for this module
-                if (m.getChildren().size() != 2) continue;
-                SiSensor sensor1 = (SiSensor) m.getChildren().get(0);
-                SiSensor sensor2 = (SiSensor) m.getChildren().get(1);
-
-                //  Form the stereo hits and add them to our hit list
-                stereohits.addAll(_crosser.MakeHits(sensormap.get(sensor1), sensormap.get(sensor2)));
-            }
-
-            helhits.addAll(stereohits);
-            
-            //add LCRelation for strip hits
-            for (HelicalTrackCross cross : stereohits) {
-                for (HelicalTrackStrip strip : cross.getStrips()) {
-                    hitrelations.add(new MyLCRelation(cross,stripmap.get(strip)));
-                }
-            }
-            
-        }
-        
-        //  Create the LCRelations between HelicalTrackHits and MC particles
-        List<LCRelation> mcrelations = new ArrayList<LCRelation>();
-        for (HelicalTrackHit hit : helhits) {
-            for (MCParticle mcp : hit.getMCParticles()) {
-                mcrelations.add(new MyLCRelation(hit, mcp));
-            }
-        }
-        
-        //  Put the HelicalTrackHits back into the event
-        event.put(_outname, helhits, HelicalTrackHit.class, 0);
-        event.put(_hitrelname, hitrelations, LCRelation.class, 0);
-        event.put(_mcrelname, mcrelations, LCRelation.class, 0);
-        return;
-    }
-    
-    /**
-     * Add a TrackerHit collection to be processed.
-     * @param name Name of the hit collection
-     * @param type Type of collection
-     */
-    public void addCollection(String name, HitType type) {
-        if (type == HitType.VirtualSegmentation) {
-            _vscol.add(name);
-        } else if (type == HitType.Base) {
-            _bscol.add(name);
-        } else if (type == HitType.Digitized)
-            _digcol.add(name);
-        return;
-    }
-    
-    public void setDigiCollectionName(String name)
-    {
-    	_digcol.add(name);
-    }
-    
-    public void setDigiCollectionNames(String names[])
-    {
-    	_digcol.addAll(Arrays.asList(names));
-    }
-    
-    public void setVirtualSegmentationCollectionName(String name)
-    {
-    	_vscol.add(name);
-    }
-    
-    public void setVirtualSegmentationCollectionNames(String names[])
-    {
-    	_vscol.addAll(Arrays.asList(names));
-    }
-    
-    public void setBaseCollectionName(String name)
-    {
-    	_bscol.add(name);
-    }
-    
-    public void setBaseCollectionNames(String names[])
-    {
-    	_bscol.addAll(Arrays.asList(names));
-    }
-            
-    /**
-     * Name of the HelicalTrackHit collection to be put back in the event.
-     * @param outname Name to use for the HelicalTrackHit collection
-     */
-    public void OutputCollection(String outname) {
-        _outname = outname;
-        return;
-    }
-    
-    public void setOutputCollectionName(String outname) {
-        _outname = outname;
-        return;
-    }
-    
-    public void HitRelationName(String hitrelname) {
-        _hitrelname = hitrelname;
-        return;
-    }
-    
-    public void MCRelationName(String mcrelname) {
-        _mcrelname = mcrelname;
-        return;
-    }
-
-    public void setMaxSeperation(double maxsep) {
-        _crosser.setMaxSeparation(maxsep);
-        return;
-    }
-
-    public void setTolerance(double tolerance) {
-        _crosser.setTolerance(tolerance);
-        return;
-    }
-    
-    private HelicalTrackHit MakeAxialHit(org.lcsim.recon.tracking.vsegment.hit.TrackerHit hit) {
-        HelicalTrackStrip strip = MakeStrip(hit);
-        if (VecOp.cross(strip.v(), _zhat).magnitude() > _eps) return null;
-        double zmin = VecOp.add(HitUtils.StripCenter(strip), VecOp.mult(strip.vmin(), strip.v())).z();
-        double zmax = VecOp.add(HitUtils.StripCenter(strip), VecOp.mult(strip.vmax(), strip.v())).z();
-        HelicalTrackHit axialhit = new HelicalTrack2DHit(strip.origin(), HitUtils.StripCov(strip),
-                strip.dEdx(), strip.time(), strip.rawhits(), strip.detector(), strip.layer(), strip.BarrelEndcapFlag(),
-                zmin, zmax);
-        List<MCParticle> mcplist = getMCParticles(hit.getCluster());
-        for (MCParticle mcp : mcplist) {
-            axialhit.addMCParticle(mcp);
-        }
-        return axialhit;
-    }
-    
-    private HelicalTrackStrip MakeStrip(org.lcsim.recon.tracking.vsegment.hit.TrackerHit hit) {
-        Hep3Vector u;
-        Hep3Vector v;
-        Hep3Vector org;
-        double umeas;
-        double du;
-        double vmin;
-        double vmax;
-        Sensor s = hit.getSensor();
-        SensorType stype = s.getType();
-        if  (stype instanceof Cylinder) {
-            SpacePointVector seg = hit.getSegment();
-            v = VecOp.unit(seg.getDirection());
-            Hep3Vector r = new BasicHep3Vector(hit.getPosition().x(), hit.getPosition().y(), 0.0);
-            u = VecOp.unit(VecOp.cross(v, r));
-            umeas = 0.;
-            du = r.magnitude() * Math.sqrt(hit.getLocalCovMatrix().diagonal(0));
-            org = VecOp.mult(0.5, VecOp.add(seg.getStartPoint(), seg.getEndPoint()));
-            vmax = seg.getDirection().magnitude() / 2.;
-            vmin = -vmax;
-        } else {
-            org = s.localToGlobal(_orgloc);
-            u = VecOp.sub(s.localToGlobal(_uloc), org);
-            v = VecOp.sub(s.localToGlobal(_vloc), org);
-            umeas = hit.getLocalPosition().x();
-            du = Math.sqrt(hit.getLocalCovMatrix().diagonal(0));
-            vmin = hit.getLocalSegment().getStartPoint().y();
-            vmax = hit.getLocalSegment().getEndPoint().y();
-        }
-        
-        double dEdx = hit.getSignal();
-        double time = hit.getTime();
-        IDetectorElement de = s.getDetectorElement();
-        String det = _ID.getName(de);
-        int lyr = _ID.getLayer(de);
-        if (_segman.getStereoPartners(s) != null) lyr = lyr / 2;
-        BarrelEndcapFlag beflag = _ID.getBarrelEndcapFlag(de);
-        
-        HelicalTrackStrip strip = new HelicalTrackStrip(org, u, v, umeas, du, vmin, vmax, dEdx, time, null,
-                det, lyr, beflag);
-        List<MCParticle> mcplist = getMCParticles(hit.getCluster());
-        for (MCParticle mcp : mcplist) {
-            strip.addMCParticle(mcp);
-        }
-        return strip;
-    }
-    
-    private HelicalTrackHit MakePixelHit(org.lcsim.recon.tracking.vsegment.hit.TrackerHit hit) {
-        IDetectorElement de = hit.getSensor().getDetectorElement();
-        HelicalTrackHit pixel = new HelicalTrack3DHit(hit.getPosition(), hit.getCovMatrix(), hit.getSignal(),
-                hit.getTime(), null, _ID.getName(de), _ID.getLayer(de), _ID.getBarrelEndcapFlag(de));
-        List<MCParticle> mcplist = getMCParticles(hit.getCluster());
-        for (MCParticle mcp : mcplist) {
-            pixel.addMCParticle(mcp);
-        }
-        
-        return pixel;
-    }
-    
-    private List<MCParticle> getMCParticles(TrackerCluster cluster) {
-        List<MCParticle> mcplist = new ArrayList<MCParticle>();
-        for (DigiTrackerHit dhit : cluster.getDigiHits()) {
-            //  Get the elemental hits - not sure what the dif is...
-            for (DigiTrackerHit dhit2 : dhit.getElementalHits()) {
-                //  Get the MCParticle and add it to the hit
-                MCParticle mcp = dhit2.getMCParticle();
-                if (mcp != null) mcplist.add(mcp);
-            }
-        }
-        return mcplist;
-    }
-    
-    private HelicalTrackHit makeDigi3DHit(SiTrackerHit h) {
-        
-        IDetectorElement de = h.getSensor();
-        int lyr = _ID.getLayer(de);
-        BarrelEndcapFlag be = _ID.getBarrelEndcapFlag(de);
-        
-        HelicalTrackHit hit = new HelicalTrack3DHit(h.getPositionAsVector(),
-                h.getCovarianceAsMatrix(), h.getdEdx(), h.getTime(),
-                h.getRawHits(), _ID.getName(de), lyr, be);
-        
-        for (MCParticle p : h.getMCParticles()) hit.addMCParticle(p);
-        
-        return hit;
-        
-    }
-    
-    private HelicalTrackHit makeDigiAxialHit(SiTrackerHitStrip1D h){
-        
-        double z1 = h.getHitSegment().getEndPoint().z();
-        double z2 = h.getHitSegment().getStartPoint().z();
-        double zmin = Math.min(z1,z2);
-        double zmax = Math.max(z1,z2);
-        IDetectorElement de = h.getSensor();
-        
-        HelicalTrackHit hit = new HelicalTrack2DHit(h.getPositionAsVector(),
-                h.getCovarianceAsMatrix(), h.getdEdx(), h.getTime(),
-                h.getRawHits(), _ID.getName(de), _ID.getLayer(de),
-                _ID.getBarrelEndcapFlag(de), zmin, zmax);
-        
-        for (MCParticle p : h.getMCParticles()) hit.addMCParticle(p);
-        return hit;
-    }
-    
-    
-    private HelicalTrackStrip makeDigiStrip(SiTrackerHitStrip1D h){
-        
-        SiTrackerHitStrip1D local = h.getTransformedHit(CoordinateSystem.SENSOR);
-        SiTrackerHitStrip1D global = h.getTransformedHit(CoordinateSystem.GLOBAL);
-        
-        ITransform3D trans = local.getLocalToGlobal();
-        Hep3Vector org = trans.transformed(_orgloc);
-        Hep3Vector u = global.getMeasuredCoordinate();
-        Hep3Vector v = global.getUnmeasuredCoordinate();
-//        System.out.println("Strip hit origin x: "+org.x()+" y: "+org.y()+" z: "+org.z());
-//        System.out.println("Strip hit measured x: "+u.x()+" y: "+u.y()+" z: "+u.z());
-//        System.out.println("Strip hit unmeasured x: "+v.x()+" y: "+v.y()+" z: "+v.z());
-        
-        double umeas = local.getPosition()[0];
-        double vmin = VecOp.dot(local.getUnmeasuredCoordinate(),local.getHitSegment().getStartPoint());
-        double vmax = VecOp.dot(local.getUnmeasuredCoordinate(),local.getHitSegment().getEndPoint());
-        double du = Math.sqrt(local.getCovarianceAsMatrix().diagonal(0));
-//        System.out.println("umeas: "+umeas+" vmin: "+vmin+" vmax: "+vmax+" du: "+du);
-
-        IDetectorElement de = h.getSensor();
-        String det = _ID.getName(de);
-        int lyr = _ID.getLayer(de);
-        BarrelEndcapFlag be = _ID.getBarrelEndcapFlag(de);
-//        System.out.println("Identifier: "+det+lyr+be);
-
-        double dEdx = h.getdEdx();
-        double time = h.getTime();
-        List<RawTrackerHit> rawhits = h.getRawHits();
-//        for (RawTrackerHit raw : rawhits) {
-//            for (SimTrackerHit shit : raw.getSimTrackerHits()) {
-//                System.out.println("Sim Hit x: "+shit.getPoint()[0]+
-//                        " y: "+shit.getPoint()[1]+" z: "+shit.getPoint()[2]);
-//            }
-//        }
-        HelicalTrackStrip strip = new HelicalTrackStrip(org, u, v, umeas, du,
-                vmin, vmax, dEdx, time, rawhits, det, lyr, be);
-        
-        for (MCParticle p : h.getMCParticles()) strip.addMCParticle(p);
-        return strip;
-    }
-    
-}

hps-java/src/main/java/org/lcsim/HPSUsers/Example
HeavyPhotonLLDriver.java added at 1.1
diff -N HeavyPhotonLLDriver.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ HeavyPhotonLLDriver.java	10 Mar 2011 23:17:50 -0000	1.1
@@ -0,0 +1,145 @@
+/*
+ * DarkPhotonMainDriver class
+ */
+package org.lcsim.HPSUsers.Example;
+
+import java.util.List;
+import java.util.ArrayList;
+import org.lcsim.HPSBase.*;
+import org.lcsim.util.Driver;
+import org.lcsim.util.loop.LCIODriver;
+
+/**
+ *  Driver for track reconstruction and analysis of sATLAS detector
+ *
+ * @author M. Graham and R. Partridge
+ */
+public final class HeavyPhotonLLDriver extends Driver {
+
+    //********************
+    //   set pname to the detector you want to run...HPS1pt8 is the default test detector (uses strategy file 1.3)
+    //  see "setPName" method for list
+    public String pName = "HPS1pt8";
+    JasAnalysisDriver jad;
+    FastTrackAnalysisDriver ftad;
+    List<int[]> pairs = new ArrayList();
+    List<Integer> passLayers = new ArrayList();
+    ////   Change the prefix for your site
+    String strategyPrefix = "/nfs/sulky21/g.ec.u12/users/mgraham/AtlasUpgrade/hps-java/src/main/resources/";
+
+    ////////////////////////////////////////
+    //  everything below will
+    //  get overwritten by setPName
+    int nlayers = 9;
+    // bfield needs to be set because tracking doesn't 
+    // seme to deal with fields in the negative 
+    //  z-direction well (need to fix this)
+    double bfield = 0.5;
+    String axialStrategy = "HPS-Test-1pt8.xml";
+    String finalStrategy = "HPS-Test-1pt8.xml";
+    String llStrategy = "HPS-Test-1pt8.xml";
+    public String outputFile = "foobar.slcio";
+    public String plotsFile = "myplots.aida";
+    public String outputTextName = "myevents.txt";
+    ///////////////
+    public HeavyPhotonLLDriver() {
+        add(new MakeSensorsDriver());
+
+        setPName(pName);
+
+        MultiTrackReco trd = new MultiTrackReco(strategyPrefix, bfield, axialStrategy, finalStrategy, llStrategy, pairs, passLayers);
+        add(trd);
+
+        jad = new JasAnalysisDriver(nlayers);
+        ftad = new FastTrackAnalysisDriver(nlayers);
+//        add(ftad);  //uncomment to run the fasttrackanalysisdriver (text file output)
+        add(jad);
+//    uncomment this to look at occupancies
+//        add(new OccupancyDriver());
+    }
+
+    public void setOutputFile(String outputFile) {
+        System.out.println("Will output events to " + outputFile);
+        add(new LCIODriver(outputFile));
+    }
+
+    public void setPlotsFile(String plotsFile) {
+        System.out.println("Will output plots to " + plotsFile);
+        jad.setOutputPlots(plotsFile);
+    }
+
+    public void setOutputTextName(String outputTextName) {
+        System.out.println("Will output selected events to " + outputTextName);
+        ftad.setOutputText(outputTextName);
+    }
+
+    public void setPName(String pName) {
+        System.out.println("Setting parameter set to " + pName);
+        pairs.clear();
+        if (pName.contentEquals("HPS3pt2")) {
+            bfield = 1.0;
+            nlayers = 12;
+            axialStrategy = "DarkPhoton-Axial-HPS3pt2.xml";
+            finalStrategy = "DarkPhoton-HPS3pt2.xml";
+            llStrategy = "DarkPhoton-HPS3pt2-LongLived.xml";
+
+            int[] p1 = {1, 2};
+            int[] p2 = {3, 4};
+            int[] p3 = {5, 6};
+            int[] p4 = {7, 8};
+            int[] p5 = {9, 10};
+            int[] p6 = {11, 12};
+            pairs.add(p1);
+            pairs.add(p2);
+            pairs.add(p3);
+            pairs.add(p4);
+            pairs.add(p5);
+            pairs.add(p6);
+            passLayers.add(11);
+        }
+        if (pName.contentEquals("HPS3pt4")) {
+            bfield = 0.5;
+            nlayers = 12;
+            axialStrategy = "DarkPhoton-Axial-HPS3pt2.xml";
+            finalStrategy = "DarkPhoton-HPS3pt2.xml";
+            llStrategy = "DarkPhoton-HPS3pt2-LongLived.xml";
+
+            int[] p1 = {1, 2};
+            int[] p2 = {3, 4};
+            int[] p3 = {5, 6};
+            int[] p4 = {7, 8};
+            int[] p5 = {9, 10};
+            int[] p6 = {11, 12};
+            pairs.add(p1);
+            pairs.add(p2);
+            pairs.add(p3);
+            pairs.add(p4);
+            pairs.add(p5);
+            pairs.add(p6);
+            passLayers.add(11);
+        }
+
+        if (pName.contentEquals("HPS1pt8")) {
+            nlayers = 10;
+            bfield = 0.5;
+
+            axialStrategy = "none";   //  don't fit tracks axially first
+            finalStrategy = "HPS-Test-1pt3.xml";
+            llStrategy = "none";//  don't fit tracks ignoring first plane
+
+            int[] p1 = {1, 2};
+            int[] p2 = {3, 4};
+            int[] p3 = {5, 6};
+            int[] p4 = {7, 8};
+            int[] p5 = {9, 10};
+
+            pairs.add(p1);
+            pairs.add(p2);
+            pairs.add(p3);
+            pairs.add(p4);
+            pairs.add(p5);
+//            passLayers.add(11);
+        }
+
+    }
+}

hps-java/src/main/java/org/lcsim/HPSUsers/Example
DarkPhotonLLDriver.java removed after 1.2
diff -N DarkPhotonLLDriver.java
--- DarkPhotonLLDriver.java	10 Mar 2011 22:58:13 -0000	1.2
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,119 +0,0 @@
-/*
- * DarkPhotonMainDriver class
- */
-package org.lcsim.HPSUsers.Example;
-
-import java.util.List;
-import java.util.ArrayList;
-import org.lcsim.HPSBase.*;
-import org.lcsim.util.Driver;
-import org.lcsim.util.loop.LCIODriver;
-
-/**
- *  Driver for track reconstruction and analysis of sATLAS detector
- *
- * @author M. Graham and R. Partridge
- */
-public final class DarkPhotonLLDriver extends Driver {
-
-    //********************
-    //   set pname to the detector you want to run...HPS1pt8 is the default test detector (uses strategy file 1.3)
-    //  see "setPName" method for list
-    public String pName = "HPS1pt8";   
-
-    JasAnalysisDriver jad;
-    FastTrackAnalysisDriver ftad;
-
-    List<int[]> pairs = new ArrayList();
-    List<Integer> passLayers = new ArrayList();
-    
-    String strategyPrefix = "/nfs/sulky21/g.ec.u12/users/mgraham/AtlasUpgrade/hps-java/src/main/resources/";
-
-    //these get overwritten by setPName
-    int nlayers = 9;
-    double bfield=0.5;  //this needs to be set because trackign doesn't deal with fields in the negative z-direction well (need to fix this)
-    String axialStrategy = "HPS-Test-1pt0.xml";
-    String finalStrategy = "HPS-Test-1pt0.xml";
-    String llStrategy = "HPS-Test-1pt0.xml";
-    public String outputFile = "foobar.slcio";
-    public String plotsFile = "myplots.aida";
-    public String outputTextName = "myevents.txt";
-
-    public DarkPhotonLLDriver() {
-        add(new MakeSensorsDriver());
-
-        setPName(pName);
-
-        MultiTrackReco trd = new MultiTrackReco(strategyPrefix, bfield, axialStrategy, finalStrategy, llStrategy, pairs, passLayers);
-        add(trd);
-
-        jad = new JasAnalysisDriver(nlayers);
-        ftad = new FastTrackAnalysisDriver(nlayers);
-//        add(ftad);  //uncomment to run the fasttrackanalysisdriver (text file output)
-         add(jad);
-//    uncomment this to look at occupancies
-//        add(new OccupancyDriver());
-    }
-
-    public void setOutputFile(String outputFile) {
-        System.out.println("Will output events to " + outputFile);
-        add(new LCIODriver(outputFile));
-    }
-
-    public void setPlotsFile(String plotsFile) {
-        System.out.println("Will output plots to " + plotsFile);
-        jad.setOutputPlots(plotsFile);
-    }
-
-    public void setOutputTextName(String outputTextName) {
-        System.out.println("Will output selected events to " + outputTextName);
-        ftad.setOutputText(outputTextName);
-    }
-
-    public void setPName(String pName) {
-        System.out.println("Setting parameter set to " + pName);
-        pairs.clear();
-        if (pName.contentEquals("HPS1pt0")) {
-            nlayers = 8;
-            bfield = 0.5;
-
-            axialStrategy = "none";
-            finalStrategy = "HPS-Test-1pt0.xml";
-            llStrategy = "none";
-
-            int[] p1 = {1, 2};
-            int[] p2 = {3, 4};
-            int[] p3 = {5, 6};
-            int[] p4 = {7, 8};
-           
-            pairs.add(p1);
-            pairs.add(p2);
-            pairs.add(p3);
-            pairs.add(p4);
-          
-            passLayers.add(11);
-        }
-          if (pName.contentEquals("HPS1pt8")) {
-            nlayers = 10;
-            bfield = 0.5;
-
-            axialStrategy = "none";   //  don't fit tracks axially first
-            finalStrategy = "HPS-Test-1pt3.xml";
-            llStrategy = "none";//  don't fit tracks ignoring first plane
-
-            int[] p1 = {1, 2};
-            int[] p2 = {3, 4};
-            int[] p3 = {5, 6};
-            int[] p4 = {7, 8};
-            int[] p5 = {9, 10};
-
-            pairs.add(p1);
-            pairs.add(p2);
-            pairs.add(p3);
-            pairs.add(p4);
-            pairs.add(p5);
-//            passLayers.add(11);
-        }
-
-    }
-}
CVSspam 0.2.8