lcsim/src/org/lcsim/util
diff -N ListSubtractDriver.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ ListSubtractDriver.java 13 Oct 2008 07:22:16 -0000 1.1
@@ -0,0 +1,53 @@
+package org.lcsim.util;
+
+import java.util.List;
+import java.util.Vector;
+
+import org.lcsim.event.EventHeader;
+import org.lcsim.util.Driver;
+
+/**
+ * Subtract one list from another, writing out the remainder.
+ *
+ * @version $Id: ListSubtractDriver.java,v 1.1 2008/10/13 07:22:16 mcharles Exp $
+ */
+
+public class ListSubtractDriver<T> extends Driver
+{
+ String m_listName1 = null;
+ String m_listName2 = null;
+ String m_outputListName = null;
+ public ListSubtractDriver(String list1, String list2, String outputList) {
+ super();
+ m_listName1 = list1;
+ m_listName2 = list2;
+ m_outputListName = outputList;
+ }
+
+ Class<T> m_containedClass = null;
+ public ListSubtractDriver(String list1, String list2, String outputList, Class<T> containedClass) {
+ super();
+ m_listName1 = list1;
+ m_listName2 = list2;
+ m_outputListName = outputList;
+ m_containedClass = containedClass;
+ }
+
+ /** Process one event, performing subtraction. */
+ public void process(EventHeader event) {
+ List<T> outputList = new Vector<T>();
+ List list1 = (List) (event.get(m_listName1));
+ List list2 = (List) (event.get(m_listName2));
+ for (Object obj : list1) {
+ if ( ! list2.contains(obj) ) {
+ T castObj = (T)(obj);
+ outputList.add(castObj);
+ }
+ }
+ if (m_containedClass == null) {
+ event.put(m_outputListName, outputList);
+ } else {
+ event.put(m_outputListName, outputList, m_containedClass, 0);
+ }
+ }
+}