2 added + 4 removed, total 6 files
lcsim-contrib/src/main/java/org/lcsim/contrib/onoprien/crux/converters
diff -N TrackToITrackConverter.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ TrackToITrackConverter.java 12 Mar 2009 22:27:12 -0000 1.1
@@ -0,0 +1,188 @@
+package org.lcsim.contrib.onoprien.crux.converters;
+
+import java.util.*;
+import java.util.logging.Level;
+
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.LCRelation;
+import org.lcsim.event.RelationalTable;
+import org.lcsim.event.Track;
+import org.lcsim.event.TrackerHit;
+import org.lcsim.fit.helicaltrack.HelicalTrackHit;
+
+import org.lcsim.contrib.onoprien.util.ConstHep3Vector;
+import org.lcsim.contrib.onoprien.util.WeightedTable;
+import org.lcsim.contrib.onoprien.util.job.Driver;
+import org.lcsim.contrib.onoprien.util.job.JobEvent;
+import org.lcsim.contrib.onoprien.util.job.JobEventListener;
+import org.lcsim.contrib.onoprien.util.job.JobManager;
+import org.lcsim.contrib.onoprien.util.swim.Helix;
+import org.lcsim.contrib.onoprien.util.swim.ParVector;
+
+import org.lcsim.contrib.onoprien.vsegment.hit.ITrackerHit;
+
+import org.lcsim.contrib.onoprien.crux.infrastructure.CruxTrack;
+import org.lcsim.contrib.onoprien.crux.infrastructure.CruxTrackAnchorHit;
+import org.lcsim.contrib.onoprien.crux.infrastructure.CruxTrackNode;
+import org.lcsim.contrib.onoprien.crux.infrastructure.ITrackAnchor;
+import org.lcsim.contrib.onoprien.crux.infrastructure.ITrackNode;
+
+/**
+ * Converts tracks produced by SeedTracker into ITracks.
+ * An object of this class can be used either as a driver by adding it to the event
+ * processing chain, or as a standalone converted by calling the {@link #convert convert(Track)} method
+ * explicitly. In the latter case, {@link #setEvent setEvent(EventHeader)} method should be called first to
+ * initialize event specific data, and {@link #clearEvent()} should be called after the
+ * last conversion.
+ *
+ * @author D. Onoprienko
+ * @version $Id: TrackToITrackConverter.java,v 1.1 2009/03/12 22:27:12 onoprien Exp $
+ */
+public class TrackToITrackConverter extends Driver implements JobEventListener {
+
+// -- Private parts : ---------------------------------------------------------
+
+ private String[] _inTracksNames;
+ private String _outTracksName;
+ private String _hHitRelName;
+
+ private WeightedTable<HelicalTrackHit, ITrackerHit> _h2i;
+
+
+// -- Constructors and initialization : ----------------------------------------
+
+ public TrackToITrackConverter() {
+ JobManager jobMan = JobManager.defaultInstance();
+ jobMan.addListener(this);
+ }
+
+ /** Called by framework to perform detector-dependent initialization. */
+ public void detectorChanged(JobEvent jobEvent) {
+ if (_hHitRelName == null) throw new IllegalStateException(ERR_NS);
+ }
+
+
+// -- Setters : ---------------------------------------------------------------
+
+ /**
+ * Set any parameter.
+ * The following parameters can be set with this method:
+ * <p><dl>
+ * <dt>"INPUT_TRACKS"</dt> <dd>One or more names of input {@link Track} collections.<br>
+ * Default: <tt>null</tt> (must be specified before this converter can be used as a driver).</dd>
+ * <dt>"OUTPUT_TRACKS"</dt> <dd>Name of output list that contains created {@link CruxTrack} objects.<br>
+ * Default: <tt>null</tt> (must be specified before this converter can be used as a driver).</dd>
+ * <dt>"HELICAL_HIT_RELATIONS"</dt> <dd>Name of the list of relations between {@link HelicalTrackHit}
+ * objects attached to input tracks, and tracker clusters.<br>
+ * Default: <tt>null</tt> (must be specified before this converter can be used).</dd>
+ * </dl>
+ *
+ * @param name Name of parameter to be set. Case is ignored.
+ * @param values List of values to be used for setting the parameter.
+ * @throws NoSuchParameterException Thrown if the supplied parameter name is unknown.
+ * @throws IllegalArgumentException Thrown if incorrect number of values, or a value
+ * of incorrect type is supplied.
+ */
+ public void set(String name, Object... values) {
+ try {
+ if (name.equalsIgnoreCase("INPUT_TRACKS")) {
+ _inTracksNames = new String[values.length];
+ for (int i=0; i<values.length; i++) _inTracksNames[i] = (String) values[i];
+ } else if (name.equalsIgnoreCase("OUTPUT_TRACKS")) {
+ _outTracksName = (String) values[0];
+ } else if (name.equalsIgnoreCase("HELICAL_HIT_RELATIONS")) {
+ _hHitRelName = (String) values[0];
+ } else {
+ super.set(name, values);
+ }
+ } catch (ClassCastException x) {
+ throw new IllegalArgumentException(ERR_VIT, x);
+ }
+ }
+
+
+// -- Processing event : ------------------------------------------------------
+
+ /** Called by the framework to process an event. */
+ public void process(EventHeader event) {
+
+ super.process(event);
+
+ HashSet<Track> oldTracks = new HashSet<Track>();
+ for (String name : _inTracksNames) {
+ try {
+ oldTracks.addAll((List<Track>) event.get(name));
+ } catch (IllegalArgumentException x) {}
+ }
+
+ setEvent(event);
+
+ ArrayList<CruxTrack> cruxTracks = new ArrayList<CruxTrack>(oldTracks.size());
+
+ for (Track track : oldTracks) {
+ cruxTracks.add(convert(track));
+ }
+
+ clearEvent();
+ cruxTracks.trimToSize();
+ event.put(_outTracksName, cruxTracks, Track.class, 0);
+ }
+
+ /**
+ * Initializes event-specific data.
+ * If client code calls {@link #convert convert(Track)} directly instead of using this
+ * <tt>TrackToITrackConverter</tt> as a driver, this method should be called once
+ * per event before using the converter.
+ */
+ public void setEvent(EventHeader event) {
+ _h2i = new WeightedTable<HelicalTrackHit, ITrackerHit>(RelationalTable.Mode.ONE_TO_MANY, RelationalTable.Weighting.UNWEIGHTED);
+ try {
+ Collection<LCRelation> hHitRel = (Collection<LCRelation>) event.get(_hHitRelName);
+ for (LCRelation rel : hHitRel) {
+ _h2i.add((HelicalTrackHit) rel.getFrom(), (ITrackerHit) rel.getTo());
+ }
+ } catch (IllegalArgumentException x) {}
+ }
+
+ /**
+ * Clears event specific data.
+ */
+ public void clearEvent() {
+ _h2i = null;
+ }
+
+ /**
+ * Converts the specified <tt>Track</tt> into an <tt>ITrack</tt>.
+ */
+ public CruxTrack convert(Track track) {
+
+ // Wrap hits into anchors :
+
+ LinkedHashSet<ITrackerHit> clusters = new LinkedHashSet<ITrackerHit>();
+ List<TrackerHit> hits = track.getTrackerHits();
+ for (TrackerHit hit : hits) {
+ Set<ITrackerHit> iHits = _h2i.allFrom((HelicalTrackHit)hit);
+ clusters.addAll(iHits);
+ }
+ ArrayList<ITrackAnchor> anchors = new ArrayList<ITrackAnchor>(clusters.size());
+ for (ITrackerHit cluster : clusters) {
+ anchors.add(new CruxTrackAnchorHit(cluster));
+ }
+
+ // Create track node at POCA XY to IP :
+
+ double[] tp = track.getTrackParameters().clone();
+ ConstHep3Vector refPoint = new ConstHep3Vector(track.getReferencePoint());
+ ParVector<Helix.CRep> pars = new ParVector<Helix.CRep>(Helix.CRep.class, tp);
+ Helix helix = new Helix(pars, refPoint);
+ CruxTrackNode startNode = new CruxTrackNode(helix);
+
+ ArrayList<ITrackNode> nodes = new ArrayList<ITrackNode>(1);
+ nodes.add(startNode);
+
+ // Create track
+
+ return new CruxTrack(anchors, nodes, track.getCharge());
+ }
+
+}
lcsim-contrib/src/main/java/org/lcsim/contrib/onoprien/crux/converters
diff -N package-info.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ package-info.java 12 Mar 2009 22:27:12 -0000 1.1
@@ -0,0 +1,8 @@
+/**
+ * Classes that bridge Crux object model to other types of infrastructure, and
+ * drivers that operate on non-Crux objects.
+ *
+ * @author D. Onoprienko
+ */
+package org.lcsim.contrib.onoprien.crux.converters;
+
lcsim-contrib/src/main/java/org/lcsim/contrib/onoprien/crux/recon
diff -N TrackToITrackConverter.java
--- TrackToITrackConverter.java 3 Mar 2009 21:25:32 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,161 +0,0 @@
-package org.lcsim.contrib.onoprien.crux.recon;
-
-import java.util.*;
-import java.util.logging.Level;
-
-import hep.physics.vec.Hep3Vector;
-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.TrackerHit;
-import org.lcsim.fit.helicaltrack.HelicalTrackHit;
-
-import org.lcsim.contrib.onoprien.util.ConstHep3Vector;
-import org.lcsim.contrib.onoprien.util.WeightedTable;
-import org.lcsim.contrib.onoprien.util.job.Driver;
-import org.lcsim.contrib.onoprien.util.job.JobEvent;
-import org.lcsim.contrib.onoprien.util.job.JobEventListener;
-import org.lcsim.contrib.onoprien.util.job.JobManager;
-import org.lcsim.contrib.onoprien.util.swim.BField;
-import org.lcsim.contrib.onoprien.util.swim.Helix;
-import org.lcsim.contrib.onoprien.util.swim.ParVector;
-
-import org.lcsim.contrib.onoprien.vsegment.hit.ITrackerHit;
-
-import org.lcsim.contrib.onoprien.crux.infrastructure.CruxTrack;
-import org.lcsim.contrib.onoprien.crux.infrastructure.CruxTrackAnchorHit;
-import org.lcsim.contrib.onoprien.crux.infrastructure.CruxTrackNode;
-import org.lcsim.contrib.onoprien.crux.infrastructure.ITrack;
-import org.lcsim.contrib.onoprien.crux.infrastructure.ITrackAnchor;
-import org.lcsim.contrib.onoprien.crux.infrastructure.ITrackNode;
-
-/**
- * Driver that converts tracks produced by SeedTracker into ITracks.
- *
- * @author D. Onoprienko
- * @version $Id: TrackToITrackConverter.java,v 1.1 2009/03/03 21:25:32 onoprien Exp $
- */
-public class TrackToITrackConverter extends Driver implements JobEventListener {
-
-// -- Private parts : ---------------------------------------------------------
-
- private String[] _inTracksNames;
- private String _outTracksName;
- private String _hHitRelName;
-
-
-// -- Constructors and initialization : ----------------------------------------
-
- public TrackToITrackConverter() {
- JobManager jobMan = JobManager.defaultInstance();
- jobMan.addListener(this);
- }
-
- /** Called by framework to perform detector-dependent initialization. */
- public void detectorChanged(JobEvent jobEvent) {
- if (_inTracksNames == null || _outTracksName == null || _hHitRelName == null) throw new IllegalStateException(ERR_NS);
- }
-
-
-// -- Setters : ---------------------------------------------------------------
-
- /**
- * Set any parameter.
- * The following parameters can be set with this method:
- * <p><dl>
- * <dt>"INPUT_TRACKS"</dt> <dd>One or more names of input {@link Track} collections.<br>
- * Default: <tt>null</tt> (must be specified before this driver can be used).</dd>
- * <dt>"OUTPUT_TRACKS"</dt> <dd>Name of output list that contains created {@link CruxTrack} objects.<br>
- * Default: <tt>null</tt> (must be specified before this driver can be used).</dd>
- * <dt>"HELICAL_HIT_RELATIONS"</dt> <dd>Name of the list of relations between {@link HelicalTrackHit}
- * objects attached to input tracks, and tracker clusters.<br>
- * Default: <tt>null</tt> (must be specified before this driver can be used).</dd>
- * </dl>
- *
- * @param name Name of parameter to be set. Case is ignored.
- * @param values List of values to be used for setting the parameter.
- * @throws NoSuchParameterException Thrown if the supplied parameter name is unknown.
- * @throws IllegalArgumentException Thrown if incorrect number of values, or a value
- * of incorrect type is supplied.
- */
- public void set(String name, Object... values) {
- try {
- if (name.equalsIgnoreCase("INPUT_TRACKS")) {
- _inTracksNames = new String[values.length];
- for (int i=0; i<values.length; i++) _inTracksNames[i] = (String) values[i];
- } else if (name.equalsIgnoreCase("OUTPUT_TRACKS")) {
- _outTracksName = (String) values[0];
- } else if (name.equalsIgnoreCase("HELICAL_HIT_RELATIONS")) {
- _hHitRelName = (String) values[0];
- } else {
- super.set(name, values);
- }
- } catch (ClassCastException x) {
- throw new IllegalArgumentException(ERR_VIT, x);
- }
- }
-
-
-// -- Processing event : ------------------------------------------------------
-
- public void process(EventHeader event) {
-
- super.process(event);
-
- HashSet<Track> oldTracks = new HashSet<Track>();
- for (String name : _inTracksNames) {
- try {
- oldTracks.addAll((List<Track>) event.get(name));
- } catch (IllegalArgumentException x) {}
- }
-
- WeightedTable<HelicalTrackHit, ITrackerHit> h2i =
- new WeightedTable<HelicalTrackHit, ITrackerHit>(RelationalTable.Mode.ONE_TO_MANY, RelationalTable.Weighting.UNWEIGHTED);
- try {
- Collection<LCRelation> hHitRel = (Collection<LCRelation>) event.get(_hHitRelName);
- for (LCRelation rel : hHitRel) {
- h2i.add((HelicalTrackHit) rel.getFrom(), (ITrackerHit) rel.getTo());
- }
- } catch (IllegalArgumentException x) {}
-
- ArrayList<CruxTrack> cruxTracks = new ArrayList<CruxTrack>(oldTracks.size());
-
- for (Track track : oldTracks) {
-
- // Wrap hits into anchors :
-
- LinkedHashSet<ITrackerHit> clusters = new LinkedHashSet<ITrackerHit>();
- List<TrackerHit> hits = track.getTrackerHits();
- for (TrackerHit hit : hits) {
- Set<ITrackerHit> iHits = h2i.allFrom((HelicalTrackHit)hit);
- clusters.addAll(iHits);
- }
- ArrayList<ITrackAnchor> anchors = new ArrayList<ITrackAnchor>(clusters.size());
- for (ITrackerHit cluster : clusters) {
- anchors.add(new CruxTrackAnchorHit(cluster));
- }
-
- // Create track node at POCA XY to IP :
-
- double[] tp = track.getTrackParameters().clone();
- ConstHep3Vector refPoint = new ConstHep3Vector(track.getReferencePoint());
- ParVector<Helix.CRep> pars = new ParVector<Helix.CRep>(Helix.CRep.class, tp);
- Helix helix = new Helix(pars, refPoint);
- CruxTrackNode startNode = new CruxTrackNode(helix);
-
- ArrayList<ITrackNode> nodes = new ArrayList<ITrackNode>(1);
- nodes.add(startNode);
-
- // Create track
-
- CruxTrack cruxTrack = new CruxTrack(anchors, nodes, track.getCharge());
- cruxTracks.add(cruxTrack);
- }
-
- cruxTracks.trimToSize();
- event.put(_outTracksName, cruxTracks, Track.class, 0);
- }
-
-}
lcsim-contrib/src/main/java/org/lcsim/contrib/onoprien/crux/tests
diff -N TestDriver.java
--- TestDriver.java 3 Mar 2009 21:25:32 -0000 1.3
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,105 +0,0 @@
-package org.lcsim.contrib.onoprien.crux.tests;
-
-import java.util.logging.Level;
-import org.lcsim.contrib.onoprien.crux.CruxManager;
-
-import org.lcsim.digisim.DigiSimDriver;
-import org.lcsim.digisim.SimCalorimeterHitsDriver;
-import org.lcsim.event.EventHeader;
-import org.lcsim.recon.cluster.util.CalHitMapDriver;
-
-import org.lcsim.contrib.onoprien.util.job.Driver;
-
-import org.lcsim.contrib.onoprien.crux.algorithms.TrackedParticleFinderDriver;
-import org.lcsim.contrib.onoprien.crux.algorithms.ValidationDriver;
-import org.lcsim.contrib.onoprien.crux.algorithms.Validator;
-import org.lcsim.contrib.onoprien.crux.diagnostics.TrackingTest;
-import org.lcsim.contrib.onoprien.crux.infrastructure.*;
-import org.lcsim.contrib.onoprien.crux.mctruth.MCTruthDriverCrux;
-import org.lcsim.contrib.onoprien.crux.analysis.CheatTrackFinderDriver;
-import org.lcsim.contrib.onoprien.crux.analysis.CheatVertexFinderDriver;
-
-/**
- * Main driver for testing PFA code.
- *
- * @author D. Onoprienko
- * @version $Id: TestDriver.java,v 1.3 2009/03/03 21:25:32 onoprien Exp $
- */
-public class TestDriver extends Driver {
-
- public TestDriver() {
-
- set("LOG_LEVEL", Level.FINEST);
-
-// -- MCTruth access : --------------------------------------------------------
-
- // The effect is: CruxMCTruth object is created and put into the event as "CruxMCTruth".
- // Required by various cheaters and analysis classes.
-
- add(new MCTruthDriverCrux());
-
-// -- Digitization of hits in calorimeter : -----------------------------------
-
- // Output of DigiSim is hit collections: "EcalBarrDigiHits", "EcalEndcapDigiHits",
- // "HcalBarrDigiHits", "HcalEndcapDigiHits" (added to the event).
- // FIXME: If those collections are all I need, a lot of large maps in CalHitMapMgr
- // and LCRelation collections can be discarded to save memory - talk to Guilherme.
-
- add(new CalHitMapDriver());
- add(new DigiSimDriver());
- add(new SimCalorimeterHitsDriver());
-
-// -- Track & Vertex finding/fitting : ----------------------------------------
-
- // The effect is: tracks are created for trackable particles, vertices are created
- // and associated with tracks, a list of tracks is added to the event.
-
- CheatTrackFinderDriver trackingDriver = new CheatTrackFinderDriver();
- trackingDriver.set("TRACK_LIST", "CheatedTracks");
- add(trackingDriver);
- CheatVertexFinderDriver vertexingDriver = new CheatVertexFinderDriver();
- vertexingDriver.set("TRACK_LIST", "CheatedTracks");
- add(vertexingDriver);
-
- TrackingTest trackingTestDriver = new TrackingTest();
- trackingTestDriver.set("TRACK_LIST", "CheatedTracks");
- add(trackingTestDriver);
-
-// -- Crux package initialization : -------------------------------------------
-
- // The effect is:
- // CruxManager singleton is created;
- // a map of digitized calorimeter hits is generated and put into event as "CalHitMap_All";
- // an empty instance of CruxParticleList is created and put into event as "CruxParticles".
-
- CruxManager cruxManager = CruxManager.defaultInstance();
- add(cruxManager);
-
-// -- Tracked paricle reconstruction : ----------------------------------------
-
- TrackedParticleFinderDriver trackedParticleFinderDriver = new TrackedParticleFinderDriver();
- trackedParticleFinderDriver.set("TRACK_LIST", "CheatedTracks");
- add(trackedParticleFinderDriver);
-
- if (isLogging(Level.FINEST)) {
- add(new Driver() {
- public void process(EventHeader event) {
- CruxParticleList recoList = (CruxParticleList) event.get("CruxParticles");
- recoList.print();
- }
- });
- }
-
-
-
- }
-
-// -- Event processing : ------------------------------------------------------
-
- public void process(EventHeader event) {
- super.process(event);
- }
-
-// -- Private parts : ---------------------------------------------------------
-
-}
lcsim-contrib/src/main/java/org/lcsim/contrib/onoprien/crux/tests
diff -N TestDriverClustering.java
--- TestDriverClustering.java 12 Feb 2009 01:32:08 -0000 1.2
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,110 +0,0 @@
-package org.lcsim.contrib.onoprien.crux.tests;
-
-import java.util.*;
-import java.util.logging.Level;
-import org.lcsim.contrib.onoprien.crux.CruxManager;
-
-import org.lcsim.digisim.DigiSimDriver;
-import org.lcsim.digisim.SimCalorimeterHitsDriver;
-import org.lcsim.event.CalorimeterHit;
-import org.lcsim.event.EventHeader;
-import org.lcsim.recon.cluster.nn.NearestNeighborClusterer;
-import org.lcsim.recon.cluster.util.CalHitMapDriver;
-import org.lcsim.recon.cluster.util.Clusterer;
-
-import org.lcsim.contrib.onoprien.util.job.Driver;
-
-import org.lcsim.contrib.onoprien.crux.algorithms.ClusteringDriver;
-import org.lcsim.contrib.onoprien.crux.recon.HitMapFilterDriver;
-import org.lcsim.contrib.onoprien.crux.diagnostics.ClusteringTest;
-import org.lcsim.contrib.onoprien.crux.infrastructure.*;
-import org.lcsim.contrib.onoprien.crux.mctruth.MCTruthDriverCrux;
-
-/**
- *
- *
- * @author D. Onoprienko
- * @version $Id: TestDriverClustering.java,v 1.2 2009/02/12 01:32:08 onoprien Exp $
- */
-public class TestDriverClustering extends Driver {
-
-// -- Constructors : ----------------------------------------------------------
-
- public TestDriverClustering() {
-
- set("LOG_LEVEL", Level.FINEST);
- set("LOG_DEFAULT_LEVEL", Level.FINEST);
-
- add(new MCTruthDriverCrux());
-
- add(CruxManager.defaultInstance());
-
- // -- Digitization of hits in calorimeter : -------------------------------
-
- addLog("Starting DigiSim :");
-
- // Output of DigiSim is hit collections: "EcalBarrDigiHits", "EcalEndcapDigiHits",
- // "HcalBarrDigiHits", "HcalEndcapDigiHits" (added to the event).
- // FIXME: If those collections are all I need, a lot of large maps in CalHitMapMgr
- // and LCRelation collections can be discarded to save memory - talk to Guilherme.
-
- add(new CalHitMapDriver());
- add(new DigiSimDriver());
- add(new SimCalorimeterHitsDriver());
-
- // -- Create a map of all calorimeter hits : ------------------------------
-
- addLog("Creating hit map...");
-
- HitMapFilterDriver hitMapCreator = new HitMapFilterDriver();
- hitMapCreator.set("INPUT", "EcalBarrDigiHits", "EcalEndcapDigiHits");
- hitMapCreator.set("INPUT", "EcalBarrDigiHits");
- hitMapCreator.set("INPUT", "HcalBarrDigiHits", "HcalEndcapDigiHits");
- hitMapCreator.set("OUTPUT", null, "CalHitMap_All", "MAP");
- add(hitMapCreator);
-
-// add(new CruxDriver() {
-// public void process(EventHeader event) {
-// int nHits = 0;
-// List<CalorimeterHit> hits = event.get(CalorimeterHit.class, "EcalBarrDigiHits");
-// log("EcalBarrDigiHits " + hits.size()); nHits += hits.size();
-// hits = event.get(CalorimeterHit.class, "EcalEndcapDigiHits");
-// log("EcalEndcapDigiHits " + hits.size()); nHits += hits.size();
-// hits = event.get(CalorimeterHit.class, "HcalBarrDigiHits");
-// log("HcalBarrDigiHits " + hits.size()); nHits += hits.size();
-// hits = event.get(CalorimeterHit.class, "HcalEndcapDigiHits");
-// log("HcalEndcapDigiHits " + hits.size()); nHits += hits.size();
-// log("Total = " + nHits);
-// CruxHitMap map = (CruxHitMap) event.get("CalHitMap_All");
-// log("CalHitMap_All " + map.size());
-// }
-// });
-
- // -- Initial clustering : ------------------------------------------------
-
- ClusteringDriver clusteringDriver = new ClusteringDriver();
- clusteringDriver.set("INPUT_HIT_MAP", "CalHitMap_All");
- clusteringDriver.set("SPLIT_BY_MODULE");
- Clusterer clusterer = new NearestNeighborClusterer(1, 1, 1, 1, 0.);
-// Clusterer clusterer = new org.lcsim.recon.cluster.cheat.CheatClusterer();
- clusteringDriver.set("OUTPUT", null, clusterer, "FirstPassClusters");
- add(clusteringDriver);
-
- // -- Clustering analysis : -----------------------------------------------
-
- ClusteringTest testClustering = new ClusteringTest();
- testClustering.set("CLUSTER_LIST", "FirstPassClusters");
- testClustering.set("HIT_MAP", "CalHitMap_All");
- add(testClustering);
-
- }
-
-// -- Event processing : ------------------------------------------------------
-
- public void process(EventHeader event) {
- super.process(event);
- }
-
-// -- Private parts : ---------------------------------------------------------
-
-}
lcsim-contrib/src/main/java/org/lcsim/contrib/onoprien/crux/tests
diff -N TestDriverRosary.java
--- TestDriverRosary.java 3 Mar 2009 21:25:32 -0000 1.5
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,141 +0,0 @@
-package org.lcsim.contrib.onoprien.crux.tests;
-
-import java.util.*;
-
-import java.util.logging.Level;
-import org.lcsim.contrib.onoprien.crux.CruxManager;
-import org.lcsim.contrib.onoprien.crux.geom.CalGeometry;
-
-import org.lcsim.digisim.DigiSimDriver;
-import org.lcsim.digisim.SimCalorimeterHitsDriver;
-import org.lcsim.detector.identifier.*;
-import org.lcsim.detector.IDetectorElement;
-import org.lcsim.event.EventHeader;
-import org.lcsim.recon.cluster.util.CalHitMapDriver;
-
-import org.lcsim.contrib.onoprien.util.job.Driver;
-import org.lcsim.contrib.onoprien.util.job.JobManager;
-
-import org.lcsim.contrib.onoprien.crux.algorithms.TrackedParticleFinderDriver;
-import org.lcsim.contrib.onoprien.crux.algorithms.rosary.RosaryClusterer;
-import org.lcsim.contrib.onoprien.crux.infrastructure.*;
-import org.lcsim.contrib.onoprien.crux.mctruth.MCTruthDriverCrux;
-import org.lcsim.contrib.onoprien.crux.analysis.CheatTrackFinderDriver;
-import org.lcsim.contrib.onoprien.crux.analysis.CheatVertexFinderDriver;
-import org.lcsim.contrib.onoprien.crux.recon.HitMapFilterDriver;
-
-/**
- *
- *
- * @author D. Onoprienko
- * @version $Id: TestDriverRosary.java,v 1.5 2009/03/03 21:25:32 onoprien Exp $
- */
-public class TestDriverRosary extends Driver {
-
-// -- Constructors : ----------------------------------------------------------
-
- public TestDriverRosary() {
-
- set("LOG_LEVEL", Level.FINEST);
-
- add(new MCTruthDriverCrux());
- add(CruxManager.defaultInstance());
-
- // -- Digitization of hits in calorimeter : -------------------------------
-
- add(new CalHitMapDriver());
- add(new DigiSimDriver());
- add(new SimCalorimeterHitsDriver());
-
- // -- Create a map of all calorimeter hits : ------------------------------
-
- addLog("Creating hit map...");
-
- HitMapFilterDriver hitMapCreator = new HitMapFilterDriver();
- hitMapCreator.set("INPUT", "EcalBarrDigiHits", "EcalEndcapDigiHits");
- hitMapCreator.set("INPUT", "EcalBarrDigiHits");
- hitMapCreator.set("INPUT", "HcalBarrDigiHits", "HcalEndcapDigiHits");
- hitMapCreator.set("OUTPUT", null, "CalHitMap_All", "MAP");
- add(hitMapCreator);
-
- // -- Track & Vertex finding/fitting : ------------------------------------
-
- // The effect is: tracks are created for trackable particles, vertices are created
- // and associated with tracks, a list of tracks is added to the event.
-
- CheatTrackFinderDriver trackingDriver = new CheatTrackFinderDriver();
- trackingDriver.set("TRACK_LIST", "CheatedTracks");
- add(trackingDriver);
- CheatVertexFinderDriver vertexingDriver = new CheatVertexFinderDriver();
- vertexingDriver.set("TRACK_LIST", "CheatedTracks");
- add(vertexingDriver);
-
- // -- Tracked paricle reconstruction : ------------------------------------
-
- TrackedParticleFinderDriver trackedParticleFinderDriver = new TrackedParticleFinderDriver();
- trackedParticleFinderDriver.set("TRACK_LIST", "CheatedTracks");
- add(trackedParticleFinderDriver);
-
- if (isLogging(Level.FINEST)) {
- add(new Driver() {
- public void process(EventHeader event) {
- CruxParticleList recoList = (CruxParticleList) event.get("CruxParticles");
- recoList.print();
- }
- });
- }
-
- // -- Rosary clustering : -------------------------------------------------
-
- RosaryClusterer rosaryDriver = new RosaryClusterer();
- rosaryDriver.set("LOG_LEVEL", Level.FINEST);
- rosaryDriver.set("INPUT_HIT_MAP", "CalHitMap_All");
- add(rosaryDriver);
-
- }
-
-// -- Event processing : ------------------------------------------------------
-
- public void process(EventHeader event) {
- super.process(event);
-
- CalGeometry geom = JobManager.defaultInstance().get(CalGeometry.class);
-
-// CruxHitMap hitMap = (CruxHitMap) event.get("CalHitMap_All");
-// Collection<CalorimeterHit> hitList = hitMap.values();
-// HashSet<CruxCalModule> moduleSet = new HashSet<CruxCalModule>();
-// for (CalorimeterHit hit : hitList) {
-// CruxCalModule mod = geom.getModule(hit);
-// if (! moduleSet.contains(mod)) {
-// moduleSet.add(mod);
-// log(" ");
-// log("Hit in "+ mod.getName() +" : " + hit.getSubdetector().getDetectorElement() +" decoder layer "+ hit.getIDDecoder().getLayer());
-// print(hit.getSubdetector().getDetectorElement(), 2);
-// }
-// }
-
-// List<CruxCalModule> modules = geom.getModules();
-// for (CruxCalModule mod : modules) {
-// log("Module " + mod.getName()+ " " + mod.getID());
-// List<CruxCalLayer> layers = mod.getLayers();
-// for (CruxCalLayer layer : layers) {
-// log(" ID "+ layer.getID() +" layer "+ layer.getLayer() +" de "+ layer.getDetectorElement().getName()+" sol "+((Tube) (layer.getDetectorElement().getGeometry().getPhysicalVolume().getLogicalVolume().getSolid())).getInnerRadius());
-// }
-// }
-
-
- }
-
- private void print(IDetectorElement de, int indent) {
- for (int i=0; i<indent; i++) System.out.print(" ");
- IIdentifier id = de.getIdentifier();
- IIdentifierHelper idHelp = de.getIdentifierHelper();
- System.out.print(" ID value " + id.getValue());
- System.out.println(" layer "+idHelp.getValue(id, "layer")+" "+de.getName());
- for (IDetectorElement d : de.getChildren()) print(d, indent+2);
- }
-
-// -- Private parts : ---------------------------------------------------------
-
-
-}
CVSspam 0.2.8