Commit in lcsim/src/org/lcsim/contrib/Partridge on MAIN
VSExampleSegmenter.java-641.2 removed
VSTest.java-1671.3 removed
StrategyBuilding/ExampleDriver.java-531.2 removed
TrackingTest/AnalysisDriver.java-1101.8 removed
            /FindableTrack.java-1901.2 removed
            /MyTrackerDriver.java-721.5 removed
            /ReconTest.java-271.2 removed
            /ResolutionAnalysis.java-671.2 removed
            /SeedTrackerDiagnostics.java-2491.2 removed
            /TrackAnalysis.java-861.2 removed
            /TrackingTestDriver.java-351.2 removed
            /VSExampleDriver.java-1281.3 removed
            /VSExampleSegmenter.java-631.3 removed
-1311
13 removed files
JM: contrib.Partridge moved to lcsim-contrib

lcsim/src/org/lcsim/contrib/Partridge
VSExampleSegmenter.java removed after 1.2
diff -N VSExampleSegmenter.java
--- VSExampleSegmenter.java	6 Dec 2008 21:53:23 -0000	1.2
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,64 +0,0 @@
-package org.lcsim.contrib.Partridge;
-
-import org.lcsim.units.clhep.SystemOfUnits;
-
-import org.lcsim.recon.tracking.vsegment.geom.segmenters.CylindricalBarrelSegmenter;
-import org.lcsim.recon.tracking.vsegment.geom.segmenters.DiskTrackerToWedgesSegmenter;
-import org.lcsim.recon.tracking.vsegment.geom.segmenters.DiskTrackerToRingsSegmenter;
-import org.lcsim.recon.tracking.vsegment.geom.segmenters.SubdetectorBasedSegmenter;
-
-/**
- * 
- * 
- * 
- * 
- * @author D. Onoprienko
- * @version $Id: VSExampleSegmenter.java,v 1.2 2008/12/06 21:53:23 onoprien Exp $
- */
-public class VSExampleSegmenter extends SubdetectorBasedSegmenter {
-  
-// -- Constructors :  ----------------------------------------------------------
-  
-  public VSExampleSegmenter() {
-    
-    // 25 um pixels in VTX Barrel
-    
-    CylindricalBarrelSegmenter vtxBarrelSegmenter = new CylindricalBarrelSegmenter("VertexBarrel");
-    vtxBarrelSegmenter.setStripLength(25.*SystemOfUnits.micrometer);
-    vtxBarrelSegmenter.setStripWidth(25.*SystemOfUnits.micrometer);
-    setSegmenter("VertexBarrel", vtxBarrelSegmenter);
-    
-    // 10 cm x 25 um strips in outer Tracker Barrel
-    
-    CylindricalBarrelSegmenter trackerBarrelSegmenter = new CylindricalBarrelSegmenter("TrackerBarrel");
-    trackerBarrelSegmenter.setStripLength(10.*SystemOfUnits.cm);
-    trackerBarrelSegmenter.setStripWidth(25.*SystemOfUnits.micrometer);
-    setSegmenter("TrackerBarrel", trackerBarrelSegmenter);
-    
-    // 25 um pixels in VTX Endcap
-    
-    DiskTrackerToRingsSegmenter vtxEndcapSegmenter = new DiskTrackerToRingsSegmenter("VertexEndcap");
-    vtxEndcapSegmenter.setStripLength(25.*SystemOfUnits.micrometer);
-    vtxEndcapSegmenter.setStripWidth(25.*SystemOfUnits.micrometer);
-    setSegmenter("VertexEndcap", vtxEndcapSegmenter);
-    
-    // 15 degrees stereo wedges in Forward Tracker
-    
-    DiskTrackerToWedgesSegmenter trackerForwardSegmenter = new DiskTrackerToWedgesSegmenter("TrackerForward");
-    trackerForwardSegmenter.setStripLength(10.*SystemOfUnits.cm);
-    trackerForwardSegmenter.setStripWidth(25.*SystemOfUnits.micrometer);
-    trackerForwardSegmenter.setNumberOfPhiSlices(24);
-    setSegmenter("TrackerForward", trackerForwardSegmenter);
-    
-    // 15 degrees stereo wedges in outer Tracker Endcap
-    
-    DiskTrackerToWedgesSegmenter trackerEndcapSegmenter = new DiskTrackerToWedgesSegmenter("TrackerEndcap");
-    trackerEndcapSegmenter.setNumberOfRadialSlices(new int[]{3,5,8,10, 10});
-    trackerEndcapSegmenter.setStripWidth(25.*SystemOfUnits.micrometer);
-    trackerEndcapSegmenter.setNumberOfPhiSlices(24);
-    setSegmenter("TrackerEndcap", trackerEndcapSegmenter);
-  }
-  
-// -- Private parts :  ---------------------------------------------------------
-  
-}

lcsim/src/org/lcsim/contrib/Partridge
VSTest.java removed after 1.3
diff -N VSTest.java
--- VSTest.java	6 Dec 2008 21:53:23 -0000	1.3
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,167 +0,0 @@
-/*
- * VSTest.java
- *
- * Created on July 3, 2008, 2:40 PM
- *
- */
-
-package org.lcsim.contrib.Partridge;
-
-import hep.physics.vec.BasicHep3Vector;
-import hep.physics.vec.Hep3Vector;
-import hep.physics.vec.VecOp;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import org.lcsim.recon.tracking.vsegment.geom.SegmentationManager;
-import org.lcsim.recon.tracking.vsegment.digitization.algorithms.ConverterSimple;
-import org.lcsim.recon.tracking.vsegment.digitization.SimToDigiConverter;
-import org.lcsim.recon.tracking.vsegment.clustering.ClusteringDriver;
-import org.lcsim.recon.tracking.vsegment.clustering.clusterers.NearestNeighborClusterer;
-import org.lcsim.recon.tracking.vsegment.digitization.SimToDigiDriver;
-import org.lcsim.recon.tracking.vsegment.geom.SegmentationManager;
-import org.lcsim.recon.tracking.vsegment.geom.Segmenter;
-import org.lcsim.recon.tracking.vsegment.geom.Sensor;
-import org.lcsim.recon.tracking.vsegment.hit.DigiTrackerHit;
-import org.lcsim.recon.tracking.vsegment.hit.TrackerCluster;
-import org.lcsim.recon.tracking.vsegment.hitmaking.HitMakingDriver;
-import org.lcsim.recon.tracking.vsegment.hitmaking.TrackerHitMaker;
-import org.lcsim.recon.tracking.vsegment.hitmaking.hitmakers.TrackerHitMakerBasic;
-import org.lcsim.detector.IDetectorElement;
-import org.lcsim.event.EventHeader;
-import org.lcsim.fit.helicaltrack.HelicalTrack2DHit;
-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.geometry.subdetector.BarrelEndcapFlag;
-import org.lcsim.util.Driver;
-
-/**
- * Driver for testing the SeedTracker track finding algorithm.  This driver causes
- * the SmearMCHits and SeedTracker drivers to be invoked for each event.
- * @author Richard Partridge
- * @version 1.0
- */
-public class VSTest extends Driver {
-    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;
-
-    public VSTest() {
-        // Segmentation description :
-        
-        Segmenter segmenter = new VSExampleSegmenter();
-        SegmentationManager segMan = new SegmentationManager(segmenter);
-        SegmentationManager.setDefaultInstance(segMan);
-        add(segMan);
-        
-        // Digitization :
-        
-        SimToDigiConverter converter = new ConverterSimple();
-        SimToDigiDriver conversionDriver = new SimToDigiDriver(converter);
-        conversionDriver.set("ADD_INPUT_LIST_NAME", "TkrBarrHits");
-        conversionDriver.set("ADD_INPUT_LIST_NAME", "VtxBarrHits");
-        conversionDriver.set("ADD_INPUT_LIST_NAME", "TkrEndcapHits");
-        conversionDriver.set("ADD_INPUT_LIST_NAME", "VtxEndcapHits");
-        conversionDriver.set("ADD_INPUT_LIST_NAME", "TkrForwardHits");
-        conversionDriver.set("OUTPUT_MAP_NAME", "DigiTrackerHits");
-        add(conversionDriver);
-        
-        // Clustering :
-        
-        ClusteringDriver clusteringDriver = new ClusteringDriver(new NearestNeighborClusterer());
-        clusteringDriver.set("INPUT_MAP_NAME","DigiTrackerHits");
-        clusteringDriver.set("OUTPUT_MAP_NAME","TrackerClusters");
-        add(clusteringDriver);
-        
-        // Hit making :
-        
-        TrackerHitMaker hitMaker = new TrackerHitMakerBasic();
-        HitMakingDriver hitMakingDriver = new HitMakingDriver(hitMaker);
-        hitMakingDriver.set("INPUT_MAP_NAME","TrackerClusters");
-        hitMakingDriver.set("OUTPUT_MAP_NAME","NewTrackerHits");
-        add(hitMakingDriver);
-    }
-    
-    public void process(EventHeader event) {
-        super.process(event);
-        
-        int n = 0;
-        HashMap<Sensor, List<DigiTrackerHit>> digiMap =
-                (HashMap<Sensor, List<DigiTrackerHit>>) event.get("DigiTrackerHits");
-        for (List<DigiTrackerHit> digiList : digiMap.values()) n += digiList.size();
-        System.out.println("Created " + n + " DigiTrackerHits on " + digiMap.keySet().size() + " sensors");
-        
-        n = 0;
-        HashMap<Sensor, List<TrackerCluster>> clusterMap =
-                (HashMap<Sensor, List<TrackerCluster>>) event.get("TrackerClusters");
-        for (List<TrackerCluster> clusterList : clusterMap.values()) n += clusterList.size();
-        System.out.println("Created " + n + " TrackerClusters on " + clusterMap.keySet().size() + " sensors");
-        
-        //  Get the segmentation manager
-        SegmentationManager segman = (SegmentationManager) event.get("SegmentationManager");
-        
-        //  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("NewTrackerHits");
-        
-        //  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) {
-                //  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);
-                    }
-                }
-            }
-        }
-        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);
-        System.out.println("Hit position: "+axialhit.toString());
-        return axialhit;
-    }
-    
-    private HelicalTrackStrip MakeStrip(org.lcsim.recon.tracking.vsegment.hit.TrackerHit hit) {
-        Sensor s = hit.getSensor();
-        System.out.println("Global position: "+hit.getPosition().toString());
-        Hep3Vector org = s.localToGlobal(_orgloc);
-        System.out.println("Origin position: "+org.toString());
-      Hep3Vector d = s.localToGlobal(_uloc);
-      System.out.println("d: "+d.toString()+ " uloc "+ _uloc);
-        Hep3Vector u = VecOp.sub(s.localToGlobal(_uloc), org);
-        System.out.println("u: "+u.toString());
-        Hep3Vector v = VecOp.sub(s.localToGlobal(_vloc), org);
-        double umeas = hit.getLocalPosition().x();
-        System.out.println("u measured: "+umeas);
-        double du = Math.sqrt(hit.getLocalCovMatrix().diagonal(0));
-        double vmin = hit.getLocalSegment().getStartPoint().y();
-        double vmax = hit.getLocalSegment().getEndPoint().y();
-        double dEdx = hit.getSignal();
-        double time = hit.getTime();
-        IDetectorElement de = s.getDetectorElement();
-        HitIdentifier ID = new HitIdentifier();
-        String det = ID.getName(de);
-        int lyr = ID.getLayer(de);
-        BarrelEndcapFlag beflag = ID.getBarrelEndcapFlag(de);
-        HelicalTrackStrip strip = new HelicalTrackStrip(org, u, v, umeas, du, vmin, vmax, dEdx, time, null,
-                det, lyr, beflag);
-        return strip;
-    } 
-}

lcsim/src/org/lcsim/contrib/Partridge/StrategyBuilding
ExampleDriver.java removed after 1.2
diff -N ExampleDriver.java
--- ExampleDriver.java	16 Oct 2008 21:45:01 -0000	1.2
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,53 +0,0 @@
-/*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
-
-package org.lcsim.contrib.Partridge.StrategyBuilding;
-
-import java.io.File;
-import java.util.List;
-import org.lcsim.recon.tracking.seedtracker.SeedStrategy;
-
-import org.lcsim.recon.tracking.seedtracker.StrategyXMLUtils;
-import org.lcsim.recon.tracking.seedtracker.strategybuilder.StrategyBuilder;
-import org.lcsim.util.Driver;
-
-/**
- * Driver used to illustrate usage of StrategyBuilder w/out using the 
- * command line. (Look at RunStrategyBuilder to learn how to use Strategy
- * Builder with the command line). 
- * 
- * @author cozzy
- */
-public class ExampleDriver extends Driver {
-    
-   //this will be the output file... this example outputs it in the 
-   //system's temporary directory. 
-   private String outputfile = System.getProperties().getProperty("java.io.tmpdir")+
-            System.getProperties().getProperty("file.separator")+
-            "ExampleStrategyList.xml"; 
-   
-   public ExampleDriver(){
-       
-       StrategyBuilder builder = new StrategyBuilder(); 
-       
-       //set the output file 
-       builder.setOutput(outputfile);
-       builder.setVerbose(true); //verbose output
-       builder.setSymmetrize(true);
-       String file1 = "c:\\StartingStrategies.xml";
-       List<SeedStrategy> starting = StrategyXMLUtils.getStrategyListFromFile(new File(file1));
-       builder.setStartingStrategyList(starting);
-       String file2 = "c:\\PrototypeStrategies.xml";
-       List<SeedStrategy> prototype = StrategyXMLUtils.getStrategyListFromFile(new File(file2));
-       builder.setStrategyPrototype(prototype.get(0));
-       builder.setMinimumUnweightedScore(1);
-       //see the IStrategyBuilder interface for other settable options
-       
-       add(builder); 
-       
-   }
-   
-
-}

lcsim/src/org/lcsim/contrib/Partridge/TrackingTest
AnalysisDriver.java removed after 1.8
diff -N AnalysisDriver.java
--- AnalysisDriver.java	10 Nov 2008 19:42:24 -0000	1.8
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,110 +0,0 @@
-/*
- * AnalysisDriver.java
- *
- * Created on February 11, 2008, 11:47 AM
- *
- */
-
-package org.lcsim.contrib.Partridge.TrackingTest;
-
-import hep.aida.IHistogram1D;
-
-import java.util.List;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.lcsim.event.EventHeader;
-import org.lcsim.event.LCRelation;
-import org.lcsim.event.Track;
-import org.lcsim.event.MCParticle;
-import org.lcsim.event.RelationalTable;
-import org.lcsim.event.base.BaseRelationalTable;
-import org.lcsim.recon.tracking.seedtracker.SeedStrategy;
-import org.lcsim.recon.tracking.seedtracker.StrategyXMLUtils;
-import org.lcsim.util.aida.AIDA;
-import org.lcsim.util.Driver;
-
-/**
- *
- * @author Richard Partridge
- * @version 1.0
- */
-public class AnalysisDriver extends Driver {
-    private AIDA aida = AIDA.defaultInstance();
-    private IHistogram1D pTeff1;
-    private IHistogram1D pTeff2;
-    private IHistogram1D thetaeff;
-    private IHistogram1D ctheff;
-    private IHistogram1D d0eff;
-    private IHistogram1D z0eff;
-    
-    /** Creates a new instance of AnalysisDriver */
-    public AnalysisDriver() {
-        pTeff1 = aida.histogramFactory().createHistogram1D("Efficiency vs pT", "", 100, 0., 5., "type=efficiency");
-        pTeff2 = aida.histogramFactory().createHistogram1D("Efficiency vs pT full", "", 100, 0., 50., "type=efficiency");
-        thetaeff = aida.histogramFactory().createHistogram1D("Efficiency vs theta", "", 360, 0., 180., "type=efficiency");
-        ctheff = aida.histogramFactory().createHistogram1D("Efficiency vs cos(theta)", "", 200, -1., 1., "type=efficiency");
-        d0eff = aida.histogramFactory().createHistogram1D("Efficiency vs d0", "", 360, -20., 20., "type=efficiency");
-        z0eff = aida.histogramFactory().createHistogram1D("Efficiency vs z0", "", 360, -20., 20., "type=efficiency");
-    }
-    
-    /**
-     * Process the current event
-     * @param event EventHeader for this event
-     */
-    public void process(EventHeader event) {
-        
-        //  Get the list of strategies being used
-        String sfile = "autogen_ttbar_sid02_vs.xml";
-        List<SeedStrategy> slist = StrategyXMLUtils.getStrategyListFromResource(
-                StrategyXMLUtils.getDefaultStrategiesPrefix() + sfile);
-        
-        
-        
-        //  Create a relational table that maps TrackerHits to MCParticles
-        RelationalTable hittomc = new BaseRelationalTable(RelationalTable.Mode.MANY_TO_MANY, RelationalTable.Weighting.UNWEIGHTED);
-        List<LCRelation> mcrelations = event.get(LCRelation.class, "HelicalTrackMCRelations");
-        for (LCRelation relation : mcrelations) {
-            hittomc.add(relation.getFrom(), relation.getTo());
-        }
-        
-        FindableTrack findable = new FindableTrack(event);
-        
-        //  Create a map between tracks and the associated MCParticle
-        List<Track> tracklist = event.getTracks();
-        Map<Track, TrackAnalysis> tkmap = new HashMap<Track, TrackAnalysis>();
-        RelationalTable trktomc = new BaseRelationalTable(RelationalTable.Mode.MANY_TO_MANY, RelationalTable.Weighting.UNWEIGHTED);
-        for (Track track : tracklist) {
-            TrackAnalysis tkanal = new TrackAnalysis(track, hittomc);
-            tkmap.put(track, tkanal);
-            MCParticle mcp = tkanal.getMCParticle();
-            if (mcp != null) trktomc.add(track, tkanal.getMCParticle());
-        }
-        
-        List<MCParticle> mclist = event.getMCParticles();
-        for (MCParticle mcp : mclist) {
-            double px = mcp.getPX();
-            double py = mcp.getPY();
-            double pz = mcp.getPZ();
-            double pt = Math.sqrt(px*px + py*py);
-            double p = Math.sqrt(pt*pt + pz*pz);
-            double cth = pz / p;
-            double theta = 180. * Math.acos(cth) / Math.PI;
-            int ntrk = trktomc.allTo(mcp).size();
-            if (ntrk > 1) System.out.println("2 tracks associated with a single MC Particle");
-            if (findable.isFindable(mcp, slist, FindableTrack.Ignore.NoPTCut)) {
-                System.out.println("Findable MC Particle found: P = "+mcp.getMomentum().toString());
-                double wgt = 0.;
-                if (ntrk > 0) wgt = 1.;
-                pTeff1.fill(pt, wgt);
-                pTeff2.fill(pt, wgt);
-            }
-            if (findable.isFindable(mcp, slist)) {
-                double wgt = 0.;
-                if (ntrk > 0) wgt = 1.;
-                thetaeff.fill(theta, wgt);
-            }
-        }
-        return;
-    }
-}
\ No newline at end of file

lcsim/src/org/lcsim/contrib/Partridge/TrackingTest
FindableTrack.java removed after 1.2
diff -N FindableTrack.java
--- FindableTrack.java	10 Nov 2008 19:42:24 -0000	1.2
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,190 +0,0 @@
-/*
- * FindableTrack.java
- *
- * Created on October 24, 2008, 9:50 PM
- *
- */
-
-package org.lcsim.contrib.Partridge.TrackingTest;
-
-import hep.physics.vec.BasicHep3Vector;
-import hep.physics.vec.Hep3Vector;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-
-import org.lcsim.detector.DetectorElementStore;
-import org.lcsim.detector.IDetectorElement;
-import org.lcsim.detector.IDetectorElementContainer;
-import org.lcsim.detector.identifier.IIdentifierHelper;
-import org.lcsim.event.EventHeader;
-import org.lcsim.event.MCParticle;
-import org.lcsim.event.RelationalTable;
-import org.lcsim.event.SimTrackerHit;
-import org.lcsim.event.base.BaseRelationalTable;
-import org.lcsim.fit.helicaltrack.HelixParamCalculator;
-import org.lcsim.fit.helicaltrack.HitIdentifier;
-import org.lcsim.geometry.subdetector.BarrelEndcapFlag;
-import org.lcsim.recon.tracking.seedtracker.SeedLayer;
-import org.lcsim.recon.tracking.seedtracker.SeedLayer.SeedType;
-import org.lcsim.recon.tracking.seedtracker.SeedStrategy;
-
-/**
- *
- * @author Richard Partridge
- * @version 1.0
- */
-public class FindableTrack {
-    public enum Ignore {NoPTCut, NoDCACut, NoZ0Cut, NoSeedCheck, NoConfirmCheck, NoMinHitCut};
-    private double _bfield;
-    private RelationalTable _hittomc;
-    private HitIdentifier _ID;
-    
-    /** Creates a new instance of FindableTrack */
-    public FindableTrack(EventHeader event) {
-        
-        //  Get the magnetic field
-        Hep3Vector IP = new BasicHep3Vector(0., 0., 1.);
-        _bfield = event.getDetector().getFieldMap().getField(IP).z();
-        
-        //  Instantiate the hit identifier class
-        _ID = new HitIdentifier();
-        
-        //  Create a relational table that maps SimTrackerHits to MCParticles
-        _hittomc = new BaseRelationalTable(RelationalTable.Mode.MANY_TO_MANY, RelationalTable.Weighting.UNWEIGHTED);
-        
-        //  Get the collections of SimTrackerHits
-        List<List<SimTrackerHit>> simcols = event.get(SimTrackerHit.class);
-        
-        //  Loop over the SimTrackerHits and fill in the relational table
-        for (List<SimTrackerHit> simlist : simcols) {
-            for (SimTrackerHit simhit : simlist) {
-                _hittomc.add(simhit, simhit.getMCParticle());
-            }
-        }
-    }
-    
-    public boolean isFindable(MCParticle mcp, List<SeedStrategy> slist, Ignore ignore) {
-        List<Ignore> ignores = new ArrayList<Ignore>();
-        ignores.add(ignore);
-        return isFindable(mcp, slist, ignores);
-    }
-    
-    public boolean isFindable(MCParticle mcp, List<SeedStrategy> slist) {
-        return isFindable(mcp, slist, new ArrayList<Ignore>());
-    }
-    
-    public boolean isFindable(MCParticle mcp, List<SeedStrategy> slist, List<Ignore> ignores) {
-        
-        //  We can't find neutral particles'
-        if (mcp.getCharge() == 0) return false;
-
-        //  Find the helix parameters in the L3 convention used by org.lcsim
-        HelixParamCalculator helix = new HelixParamCalculator(mcp, _bfield);
-        
-        //  We haven't yet determined the track is findable
-        boolean findable = false;
-        
-        //  Loop over strategies and check if the track is findable
-        for (SeedStrategy strat : slist) {
-            
-            //  Check the MC Particle's pT
-            if (!CheckPT(helix, ignores, strat)) continue;
- 
-            //  Check the MC Particle's DCA
-            if (!CheckDCA(helix, ignores, strat)) continue;
-
-            //  Check the MC Particle's Z0
-            if (!CheckZ0(helix, ignores, strat)) continue;
-
-            //  Check that we have hits on the seed layers
-            if (!CheckSeed(mcp, ignores, strat)) continue;
-
-            //  Check that we have the required confirmation hits
-            if (!CheckConfirm(mcp, ignores, strat)) continue;
-
-            //  Check for the minimum number of hits
-            if (!CheckMinHits(mcp, ignores, strat)) continue;
-
-            //  Passed all the checks - track is findable
-            findable = true;
-            break;
-        }
-        
-        return findable;
-    }
-    
-    private boolean CheckPT(HelixParamCalculator helix, List<Ignore> ignores, SeedStrategy strat) {
-        
-        //  First see if we are skipping this check
-        if (ignores.contains(Ignore.NoPTCut)) return true;
-        
-        return helix.getMCTransverseMomentum() >= strat.getMinPT();
-    }
-    
-    private boolean CheckDCA(HelixParamCalculator helix, List<Ignore> ignores, SeedStrategy strat) {
-        
-        //  First see if we are skipping this check
-        if (ignores.contains(Ignore.NoDCACut)) return true;
-        
-        return Math.abs(helix.getDCA()) <= strat.getMaxDCA();
-    }
-    
-    private boolean CheckZ0(HelixParamCalculator helix, List<Ignore> ignores, SeedStrategy strat) {
-        
-        //  First see if we are skipping this check
-        if (ignores.contains(Ignore.NoZ0Cut)) return true;
-        
-        return Math.abs(helix.getZ0()) <= strat.getMaxZ0();
-    }
-    
-    private boolean CheckSeed(MCParticle mcp, List<Ignore> ignores, SeedStrategy strat) {
-        
-        //  First see if we are skipping this check
-        if (ignores.contains(Ignore.NoSeedCheck)) return true;
-        
-        return HitCount(mcp, strat.getLayers(SeedType.Seed)) == 3;
-    }
-    
-    private boolean CheckConfirm(MCParticle mcp, List<Ignore> ignores, SeedStrategy strat) {
-        
-        //  First see if we are skipping this check
-        if (ignores.contains(Ignore.NoConfirmCheck)) return true;
-        
-        return HitCount(mcp, strat.getLayers(SeedType.Confirm)) >= strat.getMinConfirm();
-    }
-    
-    private boolean CheckMinHits(MCParticle mcp, List<Ignore> ignores, SeedStrategy strat) {
-        
-        //  First see if we are skipping this check
-        if (ignores.contains(Ignore.NoMinHitCut)) return true;
-        
-        return HitCount(mcp, strat.getLayerList()) >= strat.getMinHits();
-    }
-    
-    
-    private int HitCount(MCParticle mcp, List<SeedLayer> lyrlist) {
-        
-        //  Get the list of hits associated with the MCParticle
-        Set<SimTrackerHit> hitlist = _hittomc.allTo(mcp);
-        
-        //  Count the number of hits in layers specified by the strategy
-        int hitcount = 0;
-        for (SimTrackerHit simhit : hitlist) {
-            
-            //  Get the detector element for this hit
-            IDetectorElement de = simhit.getDetectorElement();
-            
-            //  See if this hit is on one of the specified layers
-            for (SeedLayer lyr : lyrlist) {
-                if (!lyr.getDetName().equals(_ID.getName(de))) continue;
-                if (lyr.getLayer() != _ID.getLayer(de)) continue;
-                if (!lyr.getBarrelEndcapFlag().equals(_ID.getBarrelEndcapFlag(de))) continue;
-                hitcount++;
-            }
-        }
-        
-        return hitcount;
-    }
-}
\ No newline at end of file

lcsim/src/org/lcsim/contrib/Partridge/TrackingTest
MyTrackerDriver.java removed after 1.5
diff -N MyTrackerDriver.java
--- MyTrackerDriver.java	16 Oct 2008 22:15:56 -0000	1.5
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,72 +0,0 @@
-/*
- * MyTrackerDriver.java
- *
- * Created on March 29, 2006, 4:58 PM
- *
- */
-
-package org.lcsim.contrib.Partridge.TrackingTest;
-
-import java.io.File;
-import java.util.List;
-
-import org.lcsim.event.EventHeader;
-import org.lcsim.fit.helicaltrack.HelicalTrackHitDriver;
-import org.lcsim.fit.helicaltrack.HelicalTrackHitDriver.HitType;
-import org.lcsim.recon.tracking.seedtracker.SeedStrategy;
-import org.lcsim.recon.tracking.seedtracker.SeedTracker;
-import org.lcsim.recon.tracking.seedtracker.StrategyXMLUtils;
-import org.lcsim.util.Driver;
-
-/**
- * Driver for testing the SeedTracker track finding algorithm.  This driver causes
- * the SmearMCHits and SeedTracker drivers to be invoked for each event.
- * @author Richard Partridge
- * @version 1.0
- */
-public class MyTrackerDriver extends Driver
-{  
-   public MyTrackerDriver()
-    {
-        //  Add the hit digitization driver (this example uses the virtual segment digitization code)
-        add(new VSExampleDriver());
-        
-        //  Add a driver to create HelicalTrackHits from the digitized hits
-        HelicalTrackHitDriver hitdriver = new HelicalTrackHitDriver();
-        hitdriver.addCollection("NewTrackerHits",HitType.VirtualSegmentation);
-        add(hitdriver);
-        
-        // Obtain a trained list of strategies from a saved resource. 
-        // Because resources are loaded from inside the compiled JAR file, 
-        // it is necessary to recompile when modifying a saved resource.
-        // StrategyXMLUtils.getDefaultStrategiesPrefix() will provide the correct
-        // prefix in the resource tree (i.e. "/org/lcsim/contrib/seedtracker/strategybuilder/strategies/")
-        List<SeedStrategy> stratlist = 
-                StrategyXMLUtils.getStrategyListFromResource(
-                StrategyXMLUtils.getDefaultStrategiesPrefix()+"autogen_ttbar_sid02.xml");
-
-        // For development / modifications, one may choose to load a strategy 
-        // list from a local file instead of a resource. The line below shows
-        // an example of how to do this
-        
-//        List<SeedStrategy> stratlist = StrategyXMLUtils.getStrategyListFromFile(new File("c:/strategies.xml")); 
-                
-        //  Add a driver to do the track finding
-        SeedTracker st = new SeedTracker(stratlist);
-        
-        //Enable diagnostics
-//        st.setDiagnostics(new SeedTrackerDiagnostics());
-        
-        //Add the Driver
-        add(st);
-
-	//  Add an example analysis driver
-      add (new AnalysisDriver()); 
-	
-    }
-    public void process(EventHeader event)
-    {
-        super.process(event);
-        return;     
-    }    
-}

lcsim/src/org/lcsim/contrib/Partridge/TrackingTest
ReconTest.java removed after 1.2
diff -N ReconTest.java
--- ReconTest.java	8 Nov 2008 02:33:40 -0000	1.2
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,27 +0,0 @@
-/*
- * ReconTest.java
- *
- * Created on October 16, 2008, 12:40 PM
- *
- * To change this template, choose Tools | Template Manager
- * and open the template in the editor.
- */
-
-package org.lcsim.contrib.Partridge.TrackingTest;
-
-import org.lcsim.recon.tracking.seedtracker.ReconTracking.SiD02ReconTrackingDriver;
-import org.lcsim.util.Driver;
-
-/**
- *
- * @author richp
- */
-public class ReconTest extends Driver {
-    
-    /** Creates a new instance of ReconTest */
-    public ReconTest() {
-        add(new SiD02ReconTrackingDriver());
-        add(new ResolutionAnalysis());
-    }
-    
-}

lcsim/src/org/lcsim/contrib/Partridge/TrackingTest
ResolutionAnalysis.java removed after 1.2
diff -N ResolutionAnalysis.java
--- ResolutionAnalysis.java	10 Nov 2008 19:54:42 -0000	1.2
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,67 +0,0 @@
-/*
- * ResolutionAnalysis.java
- *
- * Created on November 7, 2008, 5:37 PM
- *
- * To change this template, choose Tools | Template Manager
- * and open the template in the editor.
- */
-
-package org.lcsim.contrib.Partridge.TrackingTest;
-
-import hep.physics.vec.BasicHep3Vector;
-import java.util.List;
-import org.lcsim.event.EventHeader;
-import org.lcsim.event.LCRelation;
-import org.lcsim.event.MCParticle;
-import org.lcsim.event.RelationalTable;
-import org.lcsim.event.Track;
-import org.lcsim.event.base.BaseRelationalTable;
-import org.lcsim.util.Driver;
-import org.lcsim.util.aida.AIDA;
-
-/**
- *
- * @author richp
- */
-public class ResolutionAnalysis extends Driver {
-    private AIDA aida = AIDA.defaultInstance();
-    
-    /** Creates a new instance of ResolutionAnalysis */
-    public ResolutionAnalysis() {
-    }
-    
-    public void process(EventHeader event) {
-        
-        //  Create a relational table that maps TrackerHits to MCParticles
-        RelationalTable hittomc = new BaseRelationalTable(RelationalTable.Mode.MANY_TO_MANY, RelationalTable.Weighting.UNWEIGHTED);
-        List<LCRelation> mcrelations = event.get(LCRelation.class, "HelicalTrackMCRelations");
-        for (LCRelation relation : mcrelations) {
-            hittomc.add(relation.getFrom(), relation.getTo());
-        }
-        
-        List<Track> tracklist = event.getTracks();
-        if (tracklist.size() > 1) System.out.println("Found "+tracklist.size()+" Tracks!");
-        for (Track track : tracklist) {
-            TrackAnalysis tkanal = new TrackAnalysis(track, hittomc);
-            MCParticle mcp = tkanal.getMCParticle();
-            if (mcp != null) {
-                double ptrk = (new BasicHep3Vector(track.getMomentum())).magnitude();
-                double pmc = mcp.getMomentum().magnitude();
-                double pdif = ptrk - pmc;
-                double theta = Math.acos(mcp.getMomentum().z()/pmc);
-                if (mcp.getCharge() > 0.) {
-                    aida.cloud1D("Momentum error for positive tracks").fill(pdif);
-                } else {
-                    aida.cloud1D("Momentum error for negative tracks").fill(pdif);
-                }
-                aida.cloud1D("Momentum error for all tracks").fill(pdif);
-                aida.cloud1D("Track momentum for all tracks").fill(ptrk);
-                aida.cloud1D("MC momentum for all tracks").fill(pmc);
-                aida.cloud1D("Momentum resolution for all tracks").fill(pdif/pmc);
-                aida.cloud1D("Polar angle").fill(theta);
-            }
-            
-        }
-    }
-}
\ No newline at end of file

lcsim/src/org/lcsim/contrib/Partridge/TrackingTest
SeedTrackerDiagnostics.java removed after 1.2
diff -N SeedTrackerDiagnostics.java
--- SeedTrackerDiagnostics.java	4 Sep 2008 22:57:03 -0000	1.2
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,249 +0,0 @@
-/*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
-
-package org.lcsim.contrib.Partridge.TrackingTest;
-
-import hep.physics.vec.Hep3Vector;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import org.lcsim.recon.tracking.seedtracker.ConfirmerExtender.Task;
-import org.lcsim.recon.tracking.seedtracker.diagnostic.EmptySeedTrackerDiagnostics;
-import org.lcsim.recon.tracking.seedtracker.diagnostic.FindableTracks;
-import org.lcsim.recon.tracking.seedtracker.diagnostic.ISeedTrackerDiagnostics;
-import org.lcsim.recon.tracking.seedtracker.diagnostic.SeedValidator;
-import org.lcsim.event.MCParticle;
-import org.lcsim.fit.helicaltrack.HelicalTrackHit;
-import org.lcsim.math.chisq.ChisqProb;
-import org.lcsim.recon.tracking.seedtracker.HelixFitter;
-import org.lcsim.recon.tracking.seedtracker.SeedCandidate;
-import org.lcsim.recon.tracking.seedtracker.SeedStrategy;
-import org.lcsim.util.aida.AIDA;
-
-/**
- *
- * @author cozzy
- */
-public class SeedTrackerDiagnostics extends EmptySeedTrackerDiagnostics implements ISeedTrackerDiagnostics{
-
-    AIDA aida = AIDA.defaultInstance();
-     
-    private double purity_cutoff = 0.0; 
-    private String prefix = ""; 
-    private boolean debugOut = true; 
-    
-    public SeedTrackerDiagnostics(){
-
-    }
-    
-    /**
-     * Generates diagnostic plots given a list of seed candidates and a strategy.
-     * @param seedlist
-     * @param strategy
-     */
-    @Override
-    public void fireFinalDiagnostics(List<SeedCandidate> seedlist){
-        
-        System.out.println(" After merging: "+seedlist.size());
-        Map<SeedCandidate,SeedValidator> vmap = generateValidators(seedlist);
-        makePurityPlots(vmap);        
-        Set<MCParticle> likelyMCs = generateLikelyMCSet(vmap);
-        makeEfficiencyPlots(likelyMCs,currentStrategy);
-    }
-    
-   /**
-    * Sets the purity cutoff for a track's MC to be considered found when 
-    * calculating efficiency. Default is 0.0. 
-    * @param new_purity_cutoff
-    */
-    public void setPurityCutoff(double new_purity_cutoff){
-        purity_cutoff = new_purity_cutoff; 
-    }
-    
-    /**
-     * Sets the prefix to be appended to the beginning of each plot (for example, a strategy name
-     * @param str the new prefix
-     */
-    public void setPrefix(String str){
-        this.prefix = str; 
-    }
-    
-    
-    @Override
-    public void fireStrategyChanged(SeedStrategy strategy) {
-        setPrefix("chisq cut = "+strategy.getMaxChisq()+"/");
-        super.fireStrategyChanged(strategy);
-    }
-
-
-    @Override
-    public void fireMergeIsBetterDiagnostics(SeedCandidate newSeed, SeedCandidate oldSeed, boolean returnValue) {
-        if (returnValue){
-            
-            SeedValidator oldV = new SeedValidator(oldSeed);
-            SeedValidator newV = new SeedValidator(newSeed);
-
-                if (oldV.getPurity() > newV.getPurity()){
-                     makeBadDecisionPlots(newSeed,oldSeed, oldV,newV);
-                }
-        }
-    }
-
-    @Override
-    public void fireFinderDone(int maxseeds, int nseed, int nfit, int nconfirm, List<SeedCandidate> confirmedSeeds) {
-//        System.out.println("Possible seeds: "+maxseeds);
-//        System.out.print(" Trial seeds: "+nseed);
-//        System.out.println(" Fitted seeds: "+nfit);
-//        System.out.println(" Confirmed seeds: "+nconfirm);
-//        System.out.println(" Confirmed seed candidates: "+confirmedSeeds.size());
-    }
-    
-    @Override
-    public void fireConfirmerExtenderWorkingSeedInfo(Task task, SeedCandidate seed, List<HelicalTrackHit> hitlist) {
-        if (debugOut) {
-            System.out.println("Oldcirclechisq: "+seed.getHelix().chisq()[0]);
-            System.out.println("Oldchisq: "+seed.getHelix().chisqtot());
-            System.out.println("Oldhits: "+seed.getHits().size());
-            System.out.println("Old Helix: "+seed.getHelix().toString()); 
-        }
-        return;
-    }
-
-    @Override
-    public void fireConfirmerExtenderFitNoSuccess(Task task, SeedCandidate Seed, HelicalTrackHit hit, HelixFitter fitter,  boolean optimize) {
-        if (debugOut) System.out.println("Circlechissq" + fitter.getCircleFit().chisq());
-    }
-
-    @Override
-   public void fireConfirmerExtenderFitSuccess(Task task, SeedCandidate Seed, HelicalTrackHit hit, HelixFitter fitter, double chisqbest, boolean optimize) {
-        if (debugOut) {
-            System.out.println("Good fit");
-            System.out.println("Chisq: "+fitter.getHelix().chisqtot());
-            System.out.println("Circle Chisq: "+fitter.getHelix().chisq()[0]);
-            System.out.println("New Helix: "+fitter.getHelix().toString());
-        }
-    }
-
-    @Override
-    public void fireConfirmerExtenderLayerDone(Task task, int numSeeds, List<SeedCandidate> seedlist) {
-        if (debugOut){
-            System.out.println(" "+task.toString()+" seeds: "+numSeeds);
-            System.out.println(" "+task.toString()+" seed candidates: "+seedlist.size());
-        }
-    }
-    
-        private void makeBadDecisionPlots(SeedCandidate newseed, SeedCandidate seed, SeedValidator oldV, SeedValidator newV) {
-
-        aida.cloud1D(prefix+"Bad Decision newseed chisq").fill(newseed.getHelix().chisqtot());
-        aida.cloud1D(prefix+"Bad Decision oldseed chisq").fill(seed.getHelix().chisqtot());
-        aida.cloud2D(prefix+"Bad Decision newseed vs. oldseed chisq").fill(newseed.getHelix().chisqtot(), seed.getHelix().chisqtot());
-        aida.cloud1D(prefix+"Bad Decision old seedpurity").fill(oldV.getPurity());
-        aida.cloud1D(prefix+"Bad Decision new seedpurity").fill(newV.getPurity());
-        
-        
-        if(oldV.getVerdict().isGoodValue()){
-            Hep3Vector p = oldV.getLikelyMC().getMomentum();
-            double pt = Math.sqrt(p.x() * p.x() + p.y() * p.y());
-            aida.cloud1D(prefix+"Bad Decision real particle transverse momentum").fill(pt);
-        
-            Hep3Vector r = oldV.getLikelyMC().getOrigin();
-            double rc = Math.sqrt(r.x()*r.x()+r.y()*r.y()); 
-            aida.cloud1D(prefix + "Bad Decision real particle start radius (cylindrical)").fill(rc);
-        }
-        
-    }
-
- 
-    //makes purity plots
-    private void makePurityPlots(Map<SeedCandidate, SeedValidator> vmap) {
-        
-        for (SeedCandidate s : vmap.keySet()) {
-
-            SeedValidator v = vmap.get(s);
-   
-            if (v.getVerdict().isGoodValue()) {
-                aida.cloud1D(prefix+"Good seeds chisq").fill(s.getHelix().chisqtot());
-                aida.cloud1D(prefix+"Good seeds numhits").fill(s.getHits().size());
-                aida.cloud1D(prefix+"Good seeds pt").fill(s.getHelix().pT(5.0));
-            } else {
-                aida.cloud1D(prefix+"Bad seeds chisq").fill(s.getHelix().chisqtot());
-                aida.cloud1D(prefix+"Bad seeds numhits").fill(s.getHits().size());
-                aida.cloud1D(prefix+"Bad seeds pt").fill(s.getHelix().pT(5.0));
-            }
-            
-            aida.cloud1D(prefix+"purity").fill(v.getPurity());
-            aida.cloud2D(prefix+"purity vs. numHits").fill(v.getPurity(), s.getHits().size());
-            aida.cloud2D(prefix+"purity vs. pt").fill(v.getPurity(), s.getHelix().pT(5.0));
-            aida.cloud2D(prefix+"purity vs. cth").fill(v.getPurity(), s.getHelix().cth());
-            aida.cloud2D(prefix+"purity vs. chisq").fill(v.getPurity(), s.getHelix().chisqtot());
-            
-            double chisqdof = ChisqProb.gammq(s.getHelix().chisqtot(), s.getHits().size()-1); 
-            
-            aida.cloud2D(prefix+"purity vs. (1 - chisq_cdf(chisq,ndof)").fill(v.getPurity(), chisqdof);
-            aida.cloud2D(prefix+"purity cs. dca").fill(v.getPurity(), s.getHelix().dca());
-        }
-    }
-    
-    private void makeEfficiencyPlots(Set<MCParticle> likelyMCs, SeedStrategy strat){
-        
-        FindableTracks findable = new FindableTracks(strat, hitManager);
-        findable.setBField(bField);
-        
-        List<MCParticle> MCs = new ArrayList<MCParticle>(); 
-        MCs.addAll(event.getMCParticles());
-        
-        Iterator iter = MCs.iterator();
-
-            //remove all none findable MCs
-            while(iter.hasNext()){
-                if(!findable.isFindable((MCParticle)iter.next()))
-                    iter.remove();
-            }
-
-            int numFindable = MCs.size(); 
-            aida.cloud1D(prefix+"Number findable").fill(numFindable);
-
-            
-            // remove all the MC's we've found... this gives us findable - found
-            MCs.removeAll(likelyMCs);
-
-            int numFound = numFindable - MCs.size(); // findable - (findable - found) = found 
-            
-            aida.cloud1D(prefix+"Num found (purity cutoff="+purity_cutoff+") ").fill(numFound);
-            
-            if(numFindable > 0){
-                double eff = (double) numFound / (double) numFindable;
-                aida.cloud1D(prefix+"Efficiency").fill(eff);
-            }
-        
-    }
-    
-    
-    private Map<SeedCandidate,SeedValidator> generateValidators(List<SeedCandidate> seedlist) {
-        
-        Map<SeedCandidate,SeedValidator> ret = new HashMap<SeedCandidate,SeedValidator>(); 
-        for (SeedCandidate s : seedlist) {
-            ret.put(s, new SeedValidator(s));
-        }
-        
-        return ret;
-    }
-    
-    private Set<MCParticle> generateLikelyMCSet(Map<SeedCandidate, SeedValidator> vmap) {
-        
-        Set<MCParticle> set = new HashSet<MCParticle>(); 
-        
-        for (SeedValidator v : vmap.values()) {
-            if(v.getPurity()<purity_cutoff) continue; 
-            set.add(v.getLikelyMC());
-        }
-        return set; 
-    }   
-}
-    
\ No newline at end of file

lcsim/src/org/lcsim/contrib/Partridge/TrackingTest
TrackAnalysis.java removed after 1.2
diff -N TrackAnalysis.java
--- TrackAnalysis.java	8 Nov 2008 02:33:40 -0000	1.2
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,86 +0,0 @@
-/*
- * TrackAnalysis.java
- *
- * Created on October 16, 2008, 6:09 PM
- *
- */
-
-package org.lcsim.contrib.Partridge.TrackingTest;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Set;
-
-import org.lcsim.event.MCParticle;
-import org.lcsim.event.RelationalTable;
-import org.lcsim.event.Track;
-import org.lcsim.event.TrackerHit;
-
-/**
- *
- * @author Richard Partridge
- */
-public class TrackAnalysis {
-    private enum HelixPar {Curvature, Phi0, DCA, Z0, Slope};
-    private MCParticle _mcp = null;
-    private int _nhits;
-    private int _nbadhits;
-    private double _purity;
-    
-    /** Creates a new instance of TrackAnalysis */
-    public TrackAnalysis(Track trk, RelationalTable hittomc) {
-        
-        //  Get the number of hits on the track
-        _nhits = trk.getTrackerHits().size();
-        
-       //  Create a map containing the number of hits for each MCParticle associated with the track
-        Map<MCParticle,Integer> mcmap = new HashMap<MCParticle,Integer>();
-        
-        //  Loop over the hits on the track and make sure we have HelicalTrackHits (which contain the MC particle)
-        for (TrackerHit hit : trk.getTrackerHits()) {
-    
-            //  get the set of MCParticles associated with this hit and update the hit count for each MCParticle
-            Set<MCParticle> mclist = hittomc.allFrom(hit);
-            for (MCParticle mcp : mclist) {
-                Integer mchits = 0;
-                if (mcmap.containsKey(mcp)) mchits = mcmap.get(mcp);
-                mchits++;
-                mcmap.put(mcp,  mchits);
-            }
-        }
-        
-        //  Find the MCParticle that has the most hits on the track
-        
-        int nbest = 0;
-        MCParticle mcbest = null;
-        for (MCParticle mcp : mcmap.keySet()) {
-            int count = mcmap.get(mcp);
-            if (count > nbest) {
-                nbest = count;
-                mcbest = mcp;
-            }
-        }
-        
-        if (nbest > 1) _mcp = mcbest;
-        _purity = (double) nbest / (double) _nhits;
-        _nbadhits = _nhits - nbest;
-        
-    }
-    
-    public MCParticle getMCParticle() {
-        return _mcp;
-    }
-    
-    public int getNHits() {
-        return _nhits;
-    }
-    
-    public int getNBadHits() {
-        return _nbadhits;
-    }
-    
-    public double getPurity() {
-        return _purity;
-    }
-    
-}

lcsim/src/org/lcsim/contrib/Partridge/TrackingTest
TrackingTestDriver.java removed after 1.2
diff -N TrackingTestDriver.java
--- TrackingTestDriver.java	10 Nov 2008 19:42:24 -0000	1.2
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,35 +0,0 @@
-/*
- * TrackingTestDriver.java
- *
- * Created on October 16, 2008, 4:48 PM
- *
- */
-
-package org.lcsim.contrib.Partridge.TrackingTest;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.lcsim.detector.driver.SimTrackerHitIdentifierReadoutDriver;
-import org.lcsim.util.Driver;
-
-/**
- *
- * @author richp
- */
-public class TrackingTestDriver extends Driver {
-    
-    /** Creates a new instance of TrackingTestDriver */
-    public TrackingTestDriver() {
-//        add(new SiD02ReconTrackingDriver());
-        List<String> colnames = new ArrayList<String>();
-        colnames.add("TkrBarrHits");
-        colnames.add("TkrEndcapHits");
-        colnames.add("TkrForwardHits");
-        colnames.add("VtxBarrHits");
-        colnames.add("VtxEndcapHits");
-        add(new SimTrackerHitIdentifierReadoutDriver(colnames));
-        add(new AnalysisDriver());
-    }
-    
-}

lcsim/src/org/lcsim/contrib/Partridge/TrackingTest
VSExampleDriver.java removed after 1.3
diff -N VSExampleDriver.java
--- VSExampleDriver.java	6 Dec 2008 21:53:22 -0000	1.3
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,128 +0,0 @@
-package org.lcsim.contrib.Partridge.TrackingTest;
-
-import java.util.*;
-
-import hep.aida.*;
-import org.lcsim.event.EventHeader;
-import org.lcsim.event.SimTrackerHit;
-import org.lcsim.recon.cat.util.NoSuchParameterException;
-import org.lcsim.units.clhep.SystemOfUnits;
-import org.lcsim.util.Driver;
-import org.lcsim.util.aida.AIDA;
-import hep.physics.vec.BasicHep3Vector;
-import hep.physics.vec.Hep3Vector;
-import hep.physics.vec.VecOp;
-
-import org.lcsim.recon.tracking.vsegment.clustering.ClusteringDriver;
-import org.lcsim.recon.tracking.vsegment.clustering.clusterers.NearestNeighborClusterer;
-import org.lcsim.recon.tracking.vsegment.digitization.SimToDigiDriver;
-import org.lcsim.recon.tracking.vsegment.digitization.SimToDigiConverter;
-import org.lcsim.recon.tracking.vsegment.digitization.algorithms.ConverterSimple;
-import org.lcsim.recon.tracking.vsegment.geom.SegmentationManager;
-import org.lcsim.recon.tracking.vsegment.geom.Segmenter;
-import org.lcsim.recon.tracking.vsegment.geom.Sensor;
-import org.lcsim.recon.tracking.vsegment.geom.SensorType;
-import org.lcsim.recon.tracking.vsegment.hit.DigiTrackerHit;
-import org.lcsim.recon.tracking.vsegment.hit.TrackerCluster;
-import org.lcsim.recon.tracking.vsegment.hit.TrackerHit;
-import org.lcsim.recon.tracking.vsegment.hitmaking.HitMakingDriver;
-import org.lcsim.recon.tracking.vsegment.hitmaking.TrackerHitConverter;
-import org.lcsim.recon.tracking.vsegment.hitmaking.TrackerHitMaker;
-import org.lcsim.recon.tracking.vsegment.hitmaking.hitmakers.TrackerHitMakerBasic;
-import org.lcsim.recon.tracking.vsegment.mctruth.MCTruth;
-import org.lcsim.recon.tracking.vsegment.mctruth.MCTruthDriver;
-import org.lcsim.recon.tracking.vsegment.mctruth.SimGroup;
-
-/**
- * An Example of how to define virtual segmentation of the tracker, 
- * and use {@link TrackerHitConverter} to create
- * "standard" <tt>org.lcsim.event.TrackerHits</tt>.
- * Parameters are chosen to define reasonable segmentation for SiD01.
- * 
- * 
- * 
- * @author D. Onoprienko
- * @version $Id: VSExampleDriver.java,v 1.3 2008/12/06 21:53:22 onoprien Exp $
- */
-public class VSExampleDriver extends Driver {
-  
-// -- Constructors :  ----------------------------------------------------------
-  
-  public VSExampleDriver() {
-
-    add(new MCTruthDriver());
-    
-    // Segmentation description :
-    
-    Segmenter segmenter = new VSExampleSegmenter();
-    SegmentationManager segMan = new SegmentationManager(segmenter);
-    SegmentationManager.setDefaultInstance(segMan);
-    add(segMan);
-    
-    // Digitization :
-
-    SimToDigiConverter converter = new ConverterSimple();
-    SimToDigiDriver conversionDriver = new SimToDigiDriver(converter);
-    conversionDriver.set("ADD_INPUT_LIST_NAME", "TkrBarrHits");
-    conversionDriver.set("ADD_INPUT_LIST_NAME", "VtxBarrHits");
-    conversionDriver.set("ADD_INPUT_LIST_NAME", "TkrEndcapHits");
-    conversionDriver.set("ADD_INPUT_LIST_NAME", "VtxEndcapHits");
-    conversionDriver.set("ADD_INPUT_LIST_NAME", "TkrForwardHits");
-    conversionDriver.set("OUTPUT_MAP_NAME", "DigiTrackerHits");
-    add(conversionDriver);
-
-    // Clustering :
-    
-    ClusteringDriver clusteringDriver = new ClusteringDriver(new NearestNeighborClusterer());
-    clusteringDriver.set("INPUT_MAP_NAME","DigiTrackerHits");
-    clusteringDriver.set("OUTPUT_MAP_NAME","TrackerClusters");
-    add(clusteringDriver);
-    
-    // Hit making :
-    
-    TrackerHitMaker hitMaker = new TrackerHitMakerBasic();
-    HitMakingDriver hitMakingDriver = new HitMakingDriver(hitMaker);
-    hitMakingDriver.set("INPUT_MAP_NAME","TrackerClusters");
-    hitMakingDriver.set("OUTPUT_MAP_NAME","NewTrackerHits");
-    add(hitMakingDriver);
-     
-    // Conversion to "standard" org.lcsim.event.TrackerHit :  ------------------
-    
-//    TrackerHitConverter hitConverter = new TrackerHitConverter();
-//    hitConverter.set("INPUT_CLUSTER_MAP_NAME", "TrackerClusters");
-//    hitConverter.set("OUTPUT_HIT_LIST_NAME", "StandardTrackerHits");
-//    add(hitConverter);
-  }
-  
-  
-// -- Event processing :  ------------------------------------------------------
-
-  public void process(EventHeader event) {
-    
-//    System.out.println(" ");
-//    System.out.println("Event "+event.getEventNumber());
-
-    super.process(event);
-    
-    MCTruth mcTruth = (MCTruth) event.get("MCTruth");
-    
-//    System.out.println(" ");
-    
-    int n = 0;
-    HashMap<Sensor, List<DigiTrackerHit>> digiMap = 
-            (HashMap<Sensor, List<DigiTrackerHit>>) event.get("DigiTrackerHits");
-    for (List<DigiTrackerHit> digiList : digiMap.values()) n += digiList.size();
-    System.out.println("Created " + n + " DigiTrackerHits on " + digiMap.keySet().size() + " sensors");
-    
-    n = 0;
-    HashMap<Sensor, List<TrackerCluster>> clusterMap = 
-            (HashMap<Sensor, List<TrackerCluster>>) event.get("TrackerClusters");
-    for (List<TrackerCluster> clusterList : clusterMap.values()) n += clusterList.size();
-    System.out.println("Created " + n + " TrackerClusters on " + clusterMap.keySet().size() + " sensors");
-    
-//    n = 0;
-//    List<org.lcsim.event.TrackerHit> oldHitList = (List<org.lcsim.event.TrackerHit>) event.get("StandardTrackerHits");
-//    System.out.println("Created " + oldHitList.size() + " org.lcsim.event.TrackerHits");
-  }
-
-}

lcsim/src/org/lcsim/contrib/Partridge/TrackingTest
VSExampleSegmenter.java removed after 1.3
diff -N VSExampleSegmenter.java
--- VSExampleSegmenter.java	6 Dec 2008 21:53:22 -0000	1.3
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,63 +0,0 @@
-package org.lcsim.contrib.Partridge.TrackingTest;
-
-import org.lcsim.units.clhep.SystemOfUnits;
-
-import org.lcsim.recon.tracking.vsegment.geom.segmenters.CylindricalBarrelSegmenter;
-import org.lcsim.recon.tracking.vsegment.geom.segmenters.DiskTrackerToWedgesSegmenter;
-import org.lcsim.recon.tracking.vsegment.geom.segmenters.DiskTrackerToRingsSegmenter;
-import org.lcsim.recon.tracking.vsegment.geom.segmenters.SubdetectorBasedSegmenter;
-
-/**
- * 
- * 
- * 
- * 
- * @author D. Onoprienko
- * @version $Id: VSExampleSegmenter.java,v 1.3 2008/12/06 21:53:22 onoprien Exp $
- */
-public class VSExampleSegmenter extends SubdetectorBasedSegmenter {
-  
-// -- Constructors :  ----------------------------------------------------------
-  
-  public VSExampleSegmenter() {
-    
-    // 20 um pixels in VTX Barrel
-    
-    CylindricalBarrelSegmenter vtxBarrelSegmenter = new CylindricalBarrelSegmenter("VertexBarrel");
-    vtxBarrelSegmenter.setStripLength(20.*SystemOfUnits.micrometer);
-    vtxBarrelSegmenter.setStripWidth(20.*SystemOfUnits.micrometer);
-    setSegmenter("VertexBarrel", vtxBarrelSegmenter);
-    
-    // 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);
-    
-    // 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);
-    
-    // 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);
-  }
-  
-// -- Private parts :  ---------------------------------------------------------
-  
-}
CVSspam 0.2.8