lcsim/src/org/lcsim/util
diff -u -r1.1 -r1.2
--- SubsetFlagDriver.java 12 Aug 2008 23:55:13 -0000 1.1
+++ SubsetFlagDriver.java 14 Apr 2011 05:09:15 -0000 1.2
@@ -1,5 +1,7 @@
package org.lcsim.util;
+import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
import org.lcsim.event.EventHeader;
import org.lcsim.util.Driver;
@@ -8,23 +10,64 @@
* A simple Driver which flags a named list as being a subset.
* This is sometimes needed for proper LCIO output.
*
- * @version $Id: SubsetFlagDriver.java,v 1.1 2008/08/12 23:55:13 mcharles Exp $
+ * @version $Id: SubsetFlagDriver.java,v 1.2 2011/04/14 05:09:15 grefe Exp $
*/
public class SubsetFlagDriver extends Driver
{
+ /**
+ * Default constructor
+ */
+ public SubsetFlagDriver() {
+ removeSubsetCollections = new ArrayList<String>();
+ makeSubsetCollections = new ArrayList<String>();
+ }
+
/** Constructor, supplying name of list to be flagged as a subset. */
public SubsetFlagDriver(String name) {
- super();
- m_listName = name;
+ this();
+ m_listName = name;
}
/** Process one event. */
- public void process(EventHeader event)
- {
- List listToFlag = (List) (event.get(m_listName));
- event.getMetaData(listToFlag).setSubset(true);
+ public void process(EventHeader event) {
+ // maintain original behavior
+ if (m_listName != null) {
+ modifySubsetFlag(event, m_listName, true);
+ }
+
+ // remove subset flags
+ for (String collection : removeSubsetCollections) {
+ modifySubsetFlag(event, collection, false);
+ }
+ // set subset flags
+ for (String collection : makeSubsetCollections) {
+ modifySubsetFlag(event, collection, true);
+ }
+ }
+
+ public void setName(String name) {
+ System.out.println(name);
+ }
+
+ public void setMakeSubset(String[] collections) {
+ makeSubsetCollections.addAll(Arrays.asList(collections));
+ }
+
+ public void setRemoveSubset(String[] collections) {
+ removeSubsetCollections.addAll(Arrays.asList(collections));
+ }
+
+ protected void modifySubsetFlag(EventHeader event, String collection, boolean isSubset) {
+ try {
+ List listToFlag = (List) (event.get(collection));
+ event.getMetaData(listToFlag).setSubset(isSubset);
+ } catch (IllegalArgumentException e) {
+ System.err.println(getName()+": "+e.getMessage());
+ }
}
protected String m_listName;
+ protected List<String> removeSubsetCollections;
+ protected List<String> makeSubsetCollections;
}