Print

Print


Commit in lcsim/src/org/lcsim/util on MAIN
SubsetFlagDriver.java+50-71.1 -> 1.2
Made it compatible to XML steering
Added possibility to set and remove subset flag for multiple collections

lcsim/src/org/lcsim/util
SubsetFlagDriver.java 1.1 -> 1.2
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;
 }
CVSspam 0.2.8