13 removed files
lcsim/src/org/lcsim/contrib/Partridge
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
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
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
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
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
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
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
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
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
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
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
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
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