Print

Print


Author: [log in to unmask]
Date: Tue Dec 16 17:39:02 2014
New Revision: 1773

Log:
Add additional method javadoc.

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

Modified: java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/cluster/ClusterDriver.java
 =============================================================================
--- java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/cluster/ClusterDriver.java	(original)
+++ java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/cluster/ClusterDriver.java	Tue Dec 16 17:39:02 2014
@@ -40,63 +40,118 @@
     protected double[] cuts;
     protected Logger logger = LogUtil.create(ClusterDriver.class, new BasicFormatter(ClusterDriver.class.getSimpleName()));
     
-    protected ClusterDriver() {
+    /**
+     * No arg constructor.
+     */
+    public ClusterDriver() {
         logger.config("initializing");
     }
     
+    /**
+     * Set the name of the ECAL in the detector framework.
+     * This is kind of dangerous, so set this argument at your own peril!
+     * @param ecalName The name of the ECAL.
+     */
     public void setEcalName(String ecalName) {
         this.ecalName = ecalName;
     }
     
+    /**
+     * Set the name of the output Cluster collection.
+     * @param outputClusterCollectionName The name of the output Cluster collection.
+     */
     public void setOutputClusterCollectionName(String outputClusterCollectionName) {        
         this.outputClusterCollectionName = outputClusterCollectionName;
         this.getLogger().config("outputClusterCollectionName = " + this.outputClusterCollectionName);
     }
     
+    /**
+     * Set the name of the input CalorimeterHit collection to use for clustering.
+     * @param inputHitcollectionName The name of the input hit collection.
+     */
     public void setInputHitCollectionName(String inputHitCollectionName) {
         this.inputHitCollectionName = inputHitCollectionName;
         this.getLogger().config("inputClusterCollectionName = " + this.inputHitCollectionName);
     }
     
+    /**
+     * True to raise a <code>NextEventException</code> if no Clusters are created by the Clusterer.
+     * @param skipNoClusterEvents True to skip events with no clusters.
+     */
     public void setSkipNoClusterEvents(boolean skipNoClusterEvents) {
         this.skipNoClusterEvents = skipNoClusterEvents;       
         this.getLogger().config("skipNoClusterEvents = " + this.skipNoClusterEvents);
     }
     
+    /**
+     * True to write the Cluster collection to the output LCIO file.
+     * @param writeClusterCollection True to write the Cluster to the event; false to mark as transient.
+     */
     public void setWriteClusterCollection(boolean writeClusterCollection) {
         this.writeClusterCollection = writeClusterCollection;
         this.getLogger().config("writeClusterCollection = " + this.writeClusterCollection);
     }
     
+    /**
+     * True to raise an exception if the input hit collection is not found in the event.
+     * @param raiseErrorNoHitCollection True to raise an exception if hit collection is not in event.
+     */
     public void setRaiseErrorNoHitCollection(boolean raiseErrorNoHitCollection) {
         this.raiseErrorNoHitCollection = raiseErrorNoHitCollection;
     }
     
+    /**
+     * True to store hit references into the output clusters.
+     * This will set <code>LCIOConstants.CLBIT_HITS</code> on the collection flags.
+     * @param storeHits True to store hits.
+     */
     public void setStoreHits(boolean storeHits) {
         this.storeHits = storeHits;
     }
     
+    /**
+     * Set the Clusterer by name.  
+     * This will use a factory method which first tries to use some hard-coded names from 
+     * the cluster package.  As a last resort, it will interpret the name as a canonical 
+     * class name and try to instantiate it using the Class API.
+     * @param The name or canonical class name of the Clusterer.
+     */
     public void setClusterer(String name) {
         clusterer = ClustererFactory.create(name);
         this.getLogger().config("Clusterer was set to " + this.clusterer.getClass().getSimpleName());
     }
     
+    /**
+     * Set the Clusterer which implements the clustering algorithm.
+     * @param clusterer The Clusterer.
+     */
     public void setClusterer(Clusterer clusterer) {
         this.clusterer = clusterer;
         this.getLogger().config("Clusterer was set to " + this.clusterer.getClass().getSimpleName());
     }
     
+    /**
+     * Set whether an empty collection should be created if there are no clusters made by the Clusterer.
+     * @param createEmptyClusterCollection True to write an empty collection to the event.
+     */
     public void setCreateEmptyClusterCollection(boolean createEmptyClusterCollection) {
         this.createEmptyClusterCollection = createEmptyClusterCollection;
     }
     
+    /**
+     * Set the numerical cuts of the Clusterer.
+     * @param cuts The numerical cuts.
+     */
     public void setCuts(double[] cuts) {
         this.cuts = cuts;
     }
     
+    /**
+     * Setup conditions specific configuration.
+     */
     public void detectorChanged(Detector detector) {
         logger.finer("detectorChanged - " + detector.getDetectorName());
-        Subdetector subdetector = detector.getSubdetector(ecalName);
+        Subdetector subdetector = detector.getSubdetector("Ecal");
         if (subdetector == null) {
             throw new RuntimeException("There is no subdetector called " + ecalName + " in the detector.");
         }
@@ -106,6 +161,9 @@
         ecal = (HPSEcal3) subdetector;
     }
     
+    /**
+     * Perform start of job initialization.
+     */
     public void startOfData() {
         logger.finer("startOfData");
         if (this.clusterer == null) {
@@ -162,7 +220,21 @@
         }
     }
     
+    /**
+     * Get the logger for this Driver.
+     * @return The logger.
+     */
     public Logger getLogger() {
        return logger;
     }
+    
+    /**
+     * Get a Clusterer using type inference for the concrete type.
+     * @return The Clusterer object.
+     */
+    @SuppressWarnings("unchecked")
+    <ClustererType extends Clusterer> ClustererType getClusterer() {
+        // Return the Clusterer casting to the right type, which should always work because ClustererType must extend Clusterer.
+        return (ClustererType) clusterer;
+    }
 }