Print

Print


Author: [log in to unmask]
Date: Tue May 26 13:10:11 2015
New Revision: 3020

Log:
Turn off property calculation for copied clusters.

Modified:
    java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/cluster/CopyClusterCollectionDriver.java

Modified: java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/cluster/CopyClusterCollectionDriver.java
 =============================================================================
--- java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/cluster/CopyClusterCollectionDriver.java	(original)
+++ java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/cluster/CopyClusterCollectionDriver.java	Tue May 26 13:10:11 2015
@@ -10,120 +10,127 @@
 import org.lcsim.util.Driver;
 
 /**
- * Copy a {@link org.lcsim.event.Cluster} collection to a new collection via the {@link org.lcsim.event.base.BaseCluster} class's
- * copy constructor.
- * 
+ * Copy a {@link org.lcsim.event.Cluster} collection to a new collection via the {@link org.lcsim.event.base.BaseCluster} class's copy constructor.
+ *
  * @author Jeremy McCormick
  */
 public class CopyClusterCollectionDriver extends Driver {
-    
+
     /**
      * The input collection name.
      */
     private String inputCollectionName = null;
-    
+
     /**
      * The output collection name.
      */
     private String outputCollectionName = null;
-    
+
     /**
      * Set to <code>true</code> to store hits in the output clusters.
      */
     private boolean storeHits = true;
-    
+
     /**
      * Basic no argument constructor.
      */
-    public CopyClusterCollectionDriver() {        
+    public CopyClusterCollectionDriver() {
     }
-    
+
+    /**
+     * Copy clusters to a new collection (list).
+     *
+     * @param clusters the input cluster list
+     * @return the output cluster collection from copying the input list
+     */
+    public List<Cluster> copyClusters(final List<Cluster> clusters) {
+        final List<Cluster> newCollection = new ArrayList<Cluster>();
+        for (final Cluster cluster : clusters) {
+            // Use the base class's copy constructor to make a new cluster from the input.
+            final BaseCluster newCluster = new BaseCluster(cluster);
+
+            // Turn off automatic property calculation.
+            newCluster.setNeedsPropertyCalculation(false);
+
+            // Add new cluster to output collection.
+            newCollection.add(newCluster);
+        }
+        return newCollection;
+    }
+
+    /**
+     * Process an event, copying the input collection to the output collection.
+     *
+     * @param event the LCSim event
+     */
+    @Override
+    public void process(final EventHeader event) {
+
+        // Check if output collection already exists in event which is an error.
+        if (event.hasItem(outputCollectionName)) {
+            throw new RuntimeException("collection " + outputCollectionName + " already exists in event");
+        }
+
+        // Get the input collection.
+        final List<Cluster> inputClusterCollection = event.get(Cluster.class, inputCollectionName);
+
+        // Copy to the output collection.
+        final List<Cluster> outputClusterCollection = this.copyClusters(inputClusterCollection);
+
+        // Copy input collection's flags.
+        int flags = event.getMetaData(inputClusterCollection).getFlags();
+
+        // Set the store hits bit from this Driver's settings.
+        if (storeHits) {
+            flags = flags | 1 << LCIOConstants.CLBIT_HITS;
+        } else {
+            flags = flags & 0 << LCIOConstants.CLBIT_HITS;
+        }
+
+        // Put the copied collection into the event.
+        event.put(outputCollectionName, outputClusterCollection, Cluster.class, flags);
+    }
+
+    /**
+     * Set the input collection name (source).
+     *
+     * @param inputCollectionName the input collection name
+     */
+    public void setInputCollectionName(final String inputCollectionName) {
+        this.inputCollectionName = inputCollectionName;
+    }
+
+    /**
+     * Set the output collection name (target).
+     *
+     * @param outputCollectionName the output collection name
+     */
+    public void setOutputCollectionName(final String outputCollectionName) {
+        this.outputCollectionName = outputCollectionName;
+    }
+
+    /**
+     * Set to <code>true</code> to store hits in the output clusters.
+     *
+     * @return <code>true</code> to store hits in the output clusters
+     */
+    public void setStoreHits(final boolean storeHits) {
+        this.storeHits = storeHits;
+    }
+
     /**
      * Start of data hook which will make sure required arguments are set properly.
      */
+    @Override
     public void startOfData() {
         if (inputCollectionName == null) {
             throw new RuntimeException("inputCollectionName was never set");
         }
         if (outputCollectionName == null) {
             throw new RuntimeException("outputCollectionName was never set");
-        }        
+        }
         if (inputCollectionName.equals(outputCollectionName)) {
             throw new IllegalArgumentException("inputCollectionName and outputCollectionName are the same");
         }
     }
-    
-    /**
-     * Set the input collection name (source).
-     * 
-     * @param inputCollectionName the input collection name
-     */
-    public void setInputCollectionName(String inputCollectionName) {
-        this.inputCollectionName = inputCollectionName;
-    }
-    
-    /**
-     * Set the output collection name (target).
-     * 
-     * @param outputCollectionName the output collection name
-     */
-    public void setOutputCollectionName(String outputCollectionName) {
-        this.outputCollectionName = outputCollectionName;
-    }
-    
-    /**
-     * Set to <code>true</code> to store hits in the output clusters.
-     * 
-     * @return <code>true</code> to store hits in the output clusters
-     */
-    public void setStoreHits(boolean storeHits) {
-        this.storeHits = storeHits;
-    }
-        
-    /**
-     * Process an event, copying the input collection to the output collection.
-     * 
-     * @param event the LCSim event
-     */
-    public void process(EventHeader event) {
-        
-        // Check if output collection already exists in event which is an error.
-        if (event.hasItem(outputCollectionName)) {
-            throw new RuntimeException("collection " + outputCollectionName + " already exists in event");
-        }
-        
-        // Get the input collection.
-        List<Cluster> inputClusterCollection = event.get(Cluster.class, inputCollectionName);
-        
-        // Copy to the output collection.
-        List<Cluster> outputClusterCollection = copyClusters(inputClusterCollection);
-        
-        // Copy input collection's flags.
-        int flags = event.getMetaData(inputClusterCollection).getFlags();
-        
-        // Set the store hits bit from this Driver's settings.
-        if (storeHits) {
-            flags = flags | (1 << LCIOConstants.CLBIT_HITS);
-        } else {
-            flags = flags & (0 << LCIOConstants.CLBIT_HITS);
-        }
-        
-        // Put the copied collection into the event.
-        event.put(outputCollectionName, outputClusterCollection, Cluster.class, flags);
-    }
-    
-    /**
-     * Copy clusters to a new collection (list).
-     * 
-     * @param clusters the input cluster list
-     * @return the output cluster collection from copying the input list
-     */
-    public List<Cluster> copyClusters(List<Cluster> clusters) {
-        List<Cluster> newCollection = new ArrayList<Cluster>();
-        for (Cluster cluster : clusters) {
-            // Use the base class's copy constructor to make a new cluster from the input.
-            newCollection.add(new BaseCluster(cluster));
-        }
-        return newCollection;
-    }
 }