Print

Print


Commit in lcsim-contrib/src/main/java/org/lcsim/contrib/onoprien/crux on MAIN
recon/TrackerHitRemover.java+2-21.1 -> 1.2
converters/OldTrackerHitRemover.java+132added 1.1
+134-2
1 added + 1 modified, total 2 files
Associated hit remover for legacy Tracks/TrackerHits

lcsim-contrib/src/main/java/org/lcsim/contrib/onoprien/crux/recon
TrackerHitRemover.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- TrackerHitRemover.java	24 Feb 2009 22:59:53 -0000	1.1
+++ TrackerHitRemover.java	12 Mar 2009 22:49:54 -0000	1.2
@@ -19,10 +19,10 @@
 
 /**
  * Driver that creates a collection of tracker hits that are not associated with
- * any of the specified tracks.
+ * any of the specified tracks. Runs on {@link ITrack} and {@link ITrackerHit} collections.
  *
  * @author D. Onoprienko
- * @version $Id: TrackerHitRemover.java,v 1.1 2009/02/24 22:59:53 onoprien Exp $
+ * @version $Id: TrackerHitRemover.java,v 1.2 2009/03/12 22:49:54 onoprien Exp $
  */
 public class TrackerHitRemover extends Driver implements JobEventListener {
 

lcsim-contrib/src/main/java/org/lcsim/contrib/onoprien/crux/converters
OldTrackerHitRemover.java added at 1.1
diff -N OldTrackerHitRemover.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ OldTrackerHitRemover.java	12 Mar 2009 22:49:54 -0000	1.1
@@ -0,0 +1,132 @@
+package org.lcsim.contrib.onoprien.crux.converters;
+
+import java.util.*;
+import java.util.logging.Level;
+
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.Track;
+import org.lcsim.event.TrackerHit;
+
+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;
+
+/**
+ * Driver that creates a collection of tracker hits that are not associated with
+ * any of the specified tracks. Runs on {@link Track} and {@link TrackerHit} collections,
+ * and removes only hits directly associated with tracks.
+ *
+ * @author D. Onoprienko
+ * @version $Id: OldTrackerHitRemover.java,v 1.1 2009/03/12 22:49:54 onoprien Exp $
+ */
+public class OldTrackerHitRemover extends Driver implements JobEventListener {
+
+// -- Private parts :  ---------------------------------------------------------
+
+  private String[] _inColNames;
+  private String _outColName;
+  private String[] _tracksNames;
+
+
+// -- Constructors and initialization :  ---------------------------------------
+  
+  public OldTrackerHitRemover() {
+    JobManager.defaultInstance().addListener(this);
+  }
+
+  /** Called by framework to perform detector-dependent initialization. */
+  public void detectorChanged(JobEvent jobEvent) {
+    if (_inColNames == null || _outColName == null) throw new IllegalStateException(ERR_NS);
+  }
+
+// -- Setters :  ---------------------------------------------------------------
+
+  /**
+   * Set any parameter.
+   * The following parameters can be set with this method:
+   * <p><dl>
+   * <dt>"INPUT_HITS"</dt> <dd>One or more names of input hit collections. Only hits from
+   *           these collections will be added to the output list.<br>
+   *           Default: <tt>null</tt> (must be specified before this driver can be used).</dd>
+   * <dt>"OUTPUT_HITS"</dt> <dd>Name of output list that contains unattached hits.<br>
+   *           Default: <tt>null</tt> (must be specified before this driver can be used).</dd>
+   * <dt>"TRACKS"</dt> <dd>Names of track collections. Hits associated with tracks from these
+   *           collections will not be included in the output list.<br>
+   *           Default: <tt>EventHeader.TRACKS</tt> (list returned by <tt>EventHeader.getTracks()</tt> is 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_HITS")) {
+        if (values.length == 0) throw new IllegalArgumentException(ERR_INV + name);
+        _inColNames = new String[values.length];
+        for (int i=0; i<values.length; i++) _inColNames[i] = (String) values[i];
+      } else if (name.equalsIgnoreCase("OUTPUT_HITS")) {
+        if (values.length != 1) throw new IllegalArgumentException(ERR_INV + name);
+        _outColName = (String) values[0];
+      } else if (name.equalsIgnoreCase("TRACKS")) {
+        if (values.length == 0) {
+          _tracksNames = null;
+        } else {
+          _tracksNames = new String[values.length];
+          for (int i=0; i<values.length; i++) _tracksNames[i] = (String) values[i];
+        }
+      } else {
+        super.set(name, values);
+      }
+    } catch (ClassCastException x) {
+      throw new IllegalArgumentException(ERR_VIT, x);
+    }
+  }
+
+
+// -- Processing event :  ------------------------------------------------------
+
+  public void process(EventHeader event) {
+
+    LinkedHashSet<TrackerHit> inHits = new LinkedHashSet<TrackerHit>();
+    for (String colName : _inColNames) {
+      try {
+        Collection<TrackerHit> hits = (Collection<TrackerHit>) event.get(colName);
+        for (TrackerHit hit : hits) {
+          inHits.add(hit);
+        }
+      } catch (IllegalArgumentException x) {}
+    }
+
+    LinkedHashSet<Track> tracks = new LinkedHashSet<Track>();
+    if (_tracksNames == null) {
+      tracks.addAll(event.getTracks());
+    } else {
+      for (String colName : _tracksNames) {
+        try {
+          Collection<Track> trs = (Collection<Track>) event.get(colName);
+          tracks.addAll(trs);
+        } catch (IllegalArgumentException x) {}
+      }
+    }
+
+    HashSet<TrackerHit> veto = new HashSet<TrackerHit>();
+    for (Track track : tracks) {
+      veto.addAll(track.getTrackerHits());
+    }
+
+    ArrayList<TrackerHit> outHits = new ArrayList<TrackerHit>(inHits.size());
+    for (TrackerHit hit : inHits) {
+      if (!veto.contains(hit)) {
+        outHits.add(hit);
+      }
+    }
+
+    outHits.trimToSize();
+    event.put(_outColName, outHits, ITrackerHit.class, 0);
+  }
+
+}
CVSspam 0.2.8