Print

Print


Author: [log in to unmask]
Date: Wed Dec 10 13:15:16 2014
New Revision: 1674

Log:
Rename cosmic analysis classes so that the names are more clear.  Add javadoc to methods and improve the class documentation.

Added:
    java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/CosmicClusterDriver.java
      - copied, changed from r1673, java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/EcalCosmicClusterDriver.java
    java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/CosmicClusterPlotsDriver.java
      - copied, changed from r1673, java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/EcalCosmicClusterPlotsDriver.java
    java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/CrystalEnergyPlotsDriver.java
      - copied, changed from r1673, java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/EcalEnergyPlotsDriver.java
    java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/RawModeADCHistogramDriver.java
      - copied, changed from r1672, java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/EcalADCPlotsDriver.java
    java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/RawModeADCProfileDriver.java
      - copied, changed from r1673, java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/EcalADCProfilePlotsDriver.java
    java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/RawModeHitSelectionDriver.java
      - copied, changed from r1672, java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/EcalCosmicHitSelectionDriver.java
    java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/RawModeSignalFitDriver.java
      - copied, changed from r1672, java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/EcalCosmicHitFitDriver.java
    java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/RawModeSignalFitFunction.java
      - copied, changed from r1672, java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/EcalWindowModeFitFunction.java
Removed:
    java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/EcalADCPlotsDriver.java
    java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/EcalADCProfilePlotsDriver.java
    java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/EcalADCThresholdPlotsDriver.java
    java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/EcalCosmicClusterDriver.java
    java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/EcalCosmicClusterPlotsDriver.java
    java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/EcalCosmicHitFitDriver.java
    java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/EcalCosmicHitSelectionDriver.java
    java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/EcalEnergyPlotsDriver.java
    java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/EcalWindowModeFitFunction.java
Modified:
    java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/LandauPdf.java

Copied: java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/CosmicClusterDriver.java (from r1673, java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/EcalCosmicClusterDriver.java)
 =============================================================================
--- java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/EcalCosmicClusterDriver.java	(original)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/CosmicClusterDriver.java	Wed Dec 10 13:15:16 2014
@@ -21,13 +21,26 @@
 import org.lcsim.util.Driver;
 
 /**
- * Cluster input hit list of raw ECAL data for cosmic events.
+ * <p>
+ * This Driver clusters an input list of CalorimeterHits into a cosmic cluster
+ * using an iterative nearest neighbors algorithm.
+ * <p>
+ * There is a set of cuts applied on the initial cluster list that includes the following:
+ * <ul>
+ * <li>must have at least 3 hits total in the cluster</li>
+ * <li>must have at least 3 contiguous hits in the cluster</li>
+ * <li>must have at least three rows of crystals with hits</li>
+ * <li>must have no more than 2 hits in each row of crystals</li>
+ * </ul>
+ * <p>
+ * The new Cluster collection is written to the LCIO event with the default
+ * collection name of "EcalCosmicClusters".  This collection name can be changed
+ * using the {@link #setOutputClusterCollectionName(String)} method.
  * 
  * @author Jeremy McCormick <[log in to unmask]>
  * @author Tim "THammer" Nelson <[log in to unmask]>
  */
-// TODO: Add output collection of RawTrackerHits.
-public class EcalCosmicClusterDriver extends Driver {
+public class CosmicClusterDriver extends Driver {
 
     String inputHitCollectionName = "EcalCosmicCalHits";
     String outputClusterCollectionName = "EcalCosmicClusters";
@@ -38,30 +51,60 @@
     int minimumRows = 3;
     int maximumHitsPerRow = 2;
 
+    /**
+     * Set the name of the ECAL subdetector.
+     * @param ecalName The name of the ECAL subdetector.
+     */
     public void setEcalName(String ecalName) {
         this.ecalName = ecalName;
     }
 
+    /**
+     * Set the name of the input RawTrackerHit collection name.  
+     * By default this is initialized to "EcalCosmicCalHits".
+     * @param inputHitCollectionName The name of the input hit collection.
+     */
     public void setInputHitCollectionName(String inputHitCollectionName) {
         this.inputHitCollectionName = inputHitCollectionName;
     }
 
+    /**
+     * Set the name of the output cluster collection.
+     * By default this is initialized to "EcalCosmicClusters".
+     * @param outputClusterCollectionName The name of the output cluster collection.
+     */
     public void setOutputClusterCollectionName(String outputClusterCollectionName) {
         this.outputClusterCollectionName = outputClusterCollectionName;
     }
 
+    /**
+     * Set the minimum number of hits in the cluster for it to pass selection.
+     * @param minimumClusterSize The minimum number of hits in the cluster.
+     */
     public void setMinimumClusterSize(int minimumClusterSize) {
         this.minimumClusterSize = minimumClusterSize;
     }
     
+    /**
+     * Set the minimum number of rows that must have at least one hit.
+     * @param minimumRows The minimum number of rows that must have at least one hit.
+     */
     public void setMinimumRows(int minimumRows) {
         this.minimumRows = minimumRows;
     }
     
+    /**
+     * Set the maximum number of hits per row.
+     * @param maximumHitsPerRow The maximum number of hits per row.
+     */
     public void setMaximumHitsPerRow(int maximumHitsPerRow) {
         this.maximumHitsPerRow = maximumHitsPerRow;
     }
 
+    /**
+     * Initialize conditions dependent class variables.
+     * @param detector The current Detector object.     
+     */
     public void detectorChanged(Detector detector) {
         ecal = (HPSEcal3) detector.getSubdetector(ecalName);
         if (ecal == null) {
@@ -73,6 +116,10 @@
         }
     }
 
+    /**
+     * Process the event by making a list of output clusters that pass the basic
+     * selection cuts. 
+     */
     public void process(EventHeader event) {
         if (event.hasCollection(CalorimeterHit.class, inputHitCollectionName)) {
             List<CalorimeterHit> calHits = event.get(CalorimeterHit.class, inputHitCollectionName);
@@ -89,16 +136,17 @@
                 calCluster.setEnergy(totalEnergy);
                 clusterCollection.add(calCluster);
             }            
-            //if (clusterCollection.size() > 0) {
             int flags = 1 << LCIOConstants.CLBIT_HITS;                
             event.put(outputClusterCollectionName, clusterCollection, Cluster.class, flags);
-            //System.out.println("added " + clusterCollection.size() + " clusters to " + outputClusterCollectionName);
-            //} else {
-            //    throw new NextEventException();
-            //}
-        }
-    }
-
+        }
+    }
+
+    /**
+     * Given a hit, find its list of neighboring crystals that have hits and return their IDs.
+     * @param hit The input hit.
+     * @param hitMap The hit map with all the collection's hits.
+     * @return The set of neighboring hit IDs.
+     */
     private Set<Long> findNeighborHitIDs(CalorimeterHit hit, Map<Long, CalorimeterHit> hitMap) {
         Set<Long> neigbhors = ecal.getNeighborMap().get(hit.getCellID());
         Set<Long> neighborHitIDs = new HashSet<Long>();
@@ -110,6 +158,11 @@
         return neighborHitIDs;
     }
 
+    /**
+     * Create a map of ID to hit from a list of hits.
+     * @param hitList The input hit list.
+     * @return The hit map.
+     */
     private Map<Long, CalorimeterHit> createHitMap(List<CalorimeterHit> hitList) {
         Map<Long, CalorimeterHit> hitMap = new HashMap<Long, CalorimeterHit>();
         for (CalorimeterHit hit : hitList) {
@@ -118,6 +171,14 @@
         return hitMap;
     }
 
+    /**
+     * This is the primary clustering algorithm which uses a topological, iterative
+     * nearest neighbor algorithm.  It uses each hit as a seed and tries to then
+     * extend the cluster by adding neighboring hits.  Clustered hits are added
+     * to a list which is checked so that they are not reused.
+     * @param hitList The input hit list from the event.
+     * @return A list of calorimeter hits that can be turned into clusters.
+     */
     private List<List<CalorimeterHit>> createClusteredHits(List<CalorimeterHit> hitList) {
         
         // Create empty list of clusters which are just lists of hits.
@@ -168,13 +229,18 @@
             }
             
             if (clusterHits.size() >= this.minimumClusterSize) {
-                //System.out.println("adding cosmic cluster of size " + clusterHits.size());
                 clusterList.add(clusterHits);
             }
         }
         return clusterList;
     }
     
+    /**
+     * This method takes a list of potential cluster hits and applies selection cuts,
+     * returning a new list that has the hit lists which did not pass the cuts removed.
+     * @param clusteredHitLists The input hit lists. 
+     * @return The hit lists that passed the cuts.
+     */
     List<List<CalorimeterHit>> applyCuts(List<List<CalorimeterHit>> clusteredHitLists) {
         List<List<CalorimeterHit>> selectedHitLists = new ArrayList<List<CalorimeterHit>>();
         for (List<CalorimeterHit> hitList : clusteredHitLists) {            

Copied: java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/CosmicClusterPlotsDriver.java (from r1673, java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/EcalCosmicClusterPlotsDriver.java)
 =============================================================================
--- java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/EcalCosmicClusterPlotsDriver.java	(original)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/CosmicClusterPlotsDriver.java	Wed Dec 10 13:15:16 2014
@@ -39,7 +39,7 @@
  * Create ADC value plots from the cosmic clusters.
  * @author Jeremy McCormick <[log in to unmask]>
  */
-public class EcalCosmicClusterPlotsDriver extends Driver {
+public class CosmicClusterPlotsDriver extends Driver {
 
     EcalConditions conditions = null;
     EcalChannelCollection channels = null;
@@ -167,7 +167,7 @@
         buffer.append("ecal_channel_id t0 pulse_width");
         buffer.append('\n');
         
-        AbstractIFunction fitFunction = new EcalWindowModeFitFunction();
+        AbstractIFunction fitFunction = new RawModeSignalFitFunction();
         functionFactory.catalog().add("ecal_fit_function", fitFunction);
         for (Entry<EcalChannel, IProfile1D> entry : this.adcProfiles.entrySet()) {
             doFit(entry.getKey(), entry.getValue());

Copied: java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/CrystalEnergyPlotsDriver.java (from r1673, java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/EcalEnergyPlotsDriver.java)
 =============================================================================
--- java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/EcalEnergyPlotsDriver.java	(original)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/CrystalEnergyPlotsDriver.java	Wed Dec 10 13:15:16 2014
@@ -23,10 +23,11 @@
 import org.lcsim.util.aida.AIDA;
 
 /**
- * This Driver will create a histogram for every channel in the ECAL and plot its corrected energy.
+ * This Driver will create a histogram for every crystal in the ECAL and plot its corrected energy
+ * for the event.
  * @author Jeremy McCormick <[log in to unmask]>
  */
-public class EcalEnergyPlotsDriver extends Driver {
+public class CrystalEnergyPlotsDriver extends Driver {
 
     EcalConditions conditions = null;
     EcalChannelCollection channels = null;

Modified: java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/LandauPdf.java
 =============================================================================
--- java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/LandauPdf.java	(original)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/LandauPdf.java	Wed Dec 10 13:15:16 2014
@@ -2,9 +2,9 @@
 
 /**
  * <p>
- * Landau Probability Distribution
+ * Landau probability distribution function (PDF) implementation to be used for fitting.
  * <p>
- * Copied from math/mathcore/src/ProbFuncMathCore.cxx::landau_pdf in ROOT (version 5.34.18).
+ * Copied from ROOT class <code>math/mathcore/src/ProbFuncMathCore.cxx::landau_pdf</code> (version 5.34.18).
  */
 public class LandauPdf {
 

Copied: java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/RawModeADCHistogramDriver.java (from r1672, java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/EcalADCPlotsDriver.java)
 =============================================================================
--- java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/EcalADCPlotsDriver.java	(original)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/RawModeADCHistogramDriver.java	Wed Dec 10 13:15:16 2014
@@ -24,10 +24,10 @@
 
 /**
  * This Driver will create a histogram for every channel in the ECAL and plot its ADC values
- * from the LCSim event collection of raw hits.
+ * from the LCSim event collection of raw mode hits, without performing any pedestal subtraction.
  * @author Jeremy McCormick <[log in to unmask]>
  */
-public class EcalADCPlotsDriver extends Driver {
+public class RawModeADCHistogramDriver extends Driver {
 
     EcalConditions conditions = null;
     EcalChannelCollection channels = null;

Copied: java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/RawModeADCProfileDriver.java (from r1673, java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/EcalADCProfilePlotsDriver.java)
 =============================================================================
--- java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/EcalADCProfilePlotsDriver.java	(original)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/RawModeADCProfileDriver.java	Wed Dec 10 13:15:16 2014
@@ -1,18 +1,11 @@
 package org.hps.analysis.ecal.cosmic;
 
 import hep.aida.IAnalysisFactory;
-import hep.aida.IFitFactory;
-import hep.aida.IFitResult;
-import hep.aida.IFitter;
-import hep.aida.IFunction;
-import hep.aida.IFunctionFactory;
 import hep.aida.IProfile1D;
-import hep.aida.ref.fitter.FitResult;
 
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.Map.Entry;
 
 import org.hps.conditions.database.TableConstants;
 import org.hps.conditions.ecal.EcalChannel;
@@ -26,9 +19,10 @@
 import org.lcsim.util.aida.AIDA;
 
 /**
+ * This Driver makes profile plots of the raw mode ADC data.
  * @author Jeremy McCormick <[log in to unmask]>
  */
-public class EcalADCProfilePlotsDriver extends Driver {
+public class RawModeADCProfileDriver extends Driver {
 
     EcalConditions conditions = null;
     EcalChannelCollection channels = null;
@@ -45,7 +39,7 @@
         conditions = ConditionsManager.defaultInstance().getCachedConditions(EcalConditions.class, TableConstants.ECAL_CONDITIONS).getCachedData();
         channels = conditions.getChannelCollection();
         for (EcalChannel channel : conditions.getChannelCollection()) {            
-            adcProfiles.put(channel, aida.profile1D(inputHitsCollectionName + "/ : ADC Values : " + String.format("%03d", channel.getChannelId()), 100, 0, 100));
+            adcProfiles.put(channel, aida.profile1D(inputHitsCollectionName + "/ADC Values : " + String.format("%03d", channel.getChannelId()), 100, 0, 100));
         }
     }
 

Copied: java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/RawModeHitSelectionDriver.java (from r1672, java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/EcalCosmicHitSelectionDriver.java)
 =============================================================================
--- java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/EcalCosmicHitSelectionDriver.java	(original)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/RawModeHitSelectionDriver.java	Wed Dec 10 13:15:16 2014
@@ -20,14 +20,15 @@
 
 /**
  * This Driver will process ECAL raw mode (window) data and extract hits 
- * that look like signal, by requiring a certain number of ADC samples
- * in a row that are above a sigma threshold.  For events with number
- * of hits greater than a minimum (5 by default), it will convert
- * the raw data into CalorimeterHits and write them to an output
- * collection.
+ * that look like signal by using a simple selection cut.  The cut requires 
+ * that a certain number of ADC samples in a row  are above a sigma threshold.  
+ * Then those events that have at least a minimum number of hits that pass 
+ * this cut will be written into a new collection.  If there are not enough
+ * hits to pass this last cut, then the event is automatically skipped. 
+ *   
  * @author Jeremy McCormick <[log in to unmask]>
  */
-public class EcalCosmicHitSelectionDriver extends Driver {
+public class RawModeHitSelectionDriver extends Driver {
 
     EcalConditions conditions = null;
     EcalChannelCollection channels = null;
@@ -53,28 +54,45 @@
     }
 
     /**
-     * Set the number of hits in a row which must be above threshold for the ADC values to be 
-     * saved for the event.
-     * @param selectedHits The minimum number of hits above threshold.
+     * Set the number of ADC samples in a row which must be above the threshold.
+     * @param selectedHits The minimum number of samples above threshold.
      */
     public void setMinimumSelectedSamples(int minimumSelectedSamples) {
         this.minimumSelectedSamples = minimumSelectedSamples;
     }
     
+    /**
+     * Set the minimum number of hits for the event to pass selection cuts.
+     * @param minimumNumberOfHits The minimum number of hits.
+     */
     public void setMinimumNumberOfHits(int minimumNumberOfHits) {
         this.minimumNumberOfHits = minimumNumberOfHits;
     }
     
+    /**
+     * Set the name of the output hits collection.
+     * @param outputHitsCollectionName The output hits collection name.
+     */
     public void setOutputHitsCollectionName(String outputHitsCollectionName) {
         this.outputHitsCollectionName = outputHitsCollectionName;
     }
 
+    /**
+     * Initialize conditions dependent class variables.
+     * @param detector The current Detector object.
+     */
     public void detectorChanged(Detector detector) {
         ecal = (HPSEcal3)detector.getSubdetector(ecalName);
         conditions = ConditionsManager.defaultInstance().getCachedConditions(EcalConditions.class, TableConstants.ECAL_CONDITIONS).getCachedData();
         channels = conditions.getChannelCollection();
     }
 
+    /**
+     * Process the event, performing selection cuts on the collection of RawTrackerHits
+     * that has a hit for every crystal.  Those events that don't have enough hits passing
+     * the cuts are skipped.
+     * @param event The LCIO event.
+     */
     public void process(EventHeader event) {
         if (event.hasCollection(RawTrackerHit.class, inputHitsCollectionName)) {
             List<RawTrackerHit> hits = event.get(RawTrackerHit.class, inputHitsCollectionName);

Copied: java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/RawModeSignalFitDriver.java (from r1672, java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/EcalCosmicHitFitDriver.java)
 =============================================================================
--- java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/EcalCosmicHitFitDriver.java	(original)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/RawModeSignalFitDriver.java	Wed Dec 10 13:15:16 2014
@@ -28,16 +28,21 @@
 import org.lcsim.util.aida.AIDA;
 
 /**
- * This Driver will perform a functional fit on ECAL window mode data
+ * <p>
+ * This Driver will perform a function fit on ECAL window mode data
  * to determine the likelihood of a signal being present, e.g. from a cosmic
- * ray MIP signal.  Those hits with a signal significance greater than a settable
- * threshold (by default 4 sigma) will be written into an output collection
- * of selected hits that can be used by other Drivers. 
+ * ray MIP signal.  By default, the mean and sigma are fixed in the fit, and the
+ * pedestal and normalization are allowed to float.  The pedestal can also be 
+ * configured as fixed using the {@link #setFixPedestal(boolean)} method.
+ * <p>
+ * Those hits with a signal significance greater than a settable
+ * threshold (by default set to 4 sigma) will be written into an output collection
+ * of selected hits that can be used by other Drivers.   
  * 
  * @author Jeremy McCormick <[log in to unmask]>
  * @author Tim Nelson <[log in to unmask]>
  */
-public class EcalCosmicHitFitDriver extends Driver {
+public class RawModeSignalFitDriver extends Driver {
 
     // ECAL conditions data.
     EcalConditions conditions = null;
@@ -120,7 +125,8 @@
     }
     
     /**
-     * Perform start of job setup using the detector and conditions information.
+     * Initialize conditions dependent class variables.
+     * @param detector The current Detector object.
      */
     public void detectorChanged(Detector detector) {
         ecal = (HPSEcal3)detector.getSubdetector(ecalName);
@@ -134,12 +140,13 @@
     }
     
     /**
-     * Perform initialization to create the DPS for the ADC values and configure the global fit parameters.
+     * Perform start of job initialize.
+     * The DataPointSet for the ADC values is initialized and global fit parameters are set here.
      */
     public void startOfData() {
         adcDataPointSet = aida.analysisFactory().createDataPointSetFactory(null).create("ADC DataPointSet", 2);
         
-        fitFunction = new EcalWindowModeFitFunction();
+        fitFunction = new RawModeSignalFitFunction();
         fitFunction.setParameter("mean", signalMean);
         fitFunction.setParameter("sigma", signalSigma);
         fitFunction.setParameter("norm", norm);
@@ -153,8 +160,8 @@
 
     /**
      * Process the event, performing a signal fit for every raw data hit in the input collection.
-     * Those hits that pass the selection cut are added to a new hits collection that can be converted
-     * to a CalorimeterHit collection and clustered.
+     * The hits that pass the sigma selection cut are added to a new hits collection, which can be
+     * converted to a CalorimeterHit collection and then clustered.
      * @throw NextEventException if there are not enough hits that pass the selection cut.
      */
     public void process(EventHeader event) {
@@ -218,9 +225,9 @@
     }
     
     /**
-     * Fit the ADC samples of a hit, returning the signal significance.
-     * @param channel The ECAL channel information.
-     * @param adcDataPointSet The DPS to use for the fit containing all 100 ADC samples.
+     * Fit all of the ADC samples in a hit using a DataPointSet and then return the fit result.
+     * @param channel The ECAL channel conditions information.
+     * @param adcDataPointSet The DataPointSet to use for the fit containing all 100 ADC samples.
      * @return The significance which is the normalization divided by its error.
      */
     IFitResult fitAdcSamples(EcalChannel channel, IDataPointSet adcDataPointSet) {
@@ -229,9 +236,6 @@
         IFitResult fitResult = fitter.fit(adcDataPointSet, fitFunction);
         this.signalNormHistograms.get(channel).fill(fitResult.fittedParameter("norm"));
         this.pedestalNormHistograms.get(channel).fill(fitResult.fittedParameter("pedestal"));
-        //double signalSignificance = fitResult.fittedParameter("norm") / fitResult.errors()[2];
-        //this.signalSignificanceHistograms.get(channel).fill(signalSignificance);
-        //return signalSignificance;
         return fitResult;
     }
 }

Copied: java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/RawModeSignalFitFunction.java (from r1672, java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/EcalWindowModeFitFunction.java)
 =============================================================================
--- java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/EcalWindowModeFitFunction.java	(original)
+++ java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/RawModeSignalFitFunction.java	Wed Dec 10 13:15:16 2014
@@ -2,26 +2,61 @@
 
 import hep.aida.ref.function.AbstractIFunction;
 
-public class EcalWindowModeFitFunction extends AbstractIFunction {
+/**
+ * <p>
+ * This class implements a function for fitting a signal plus pedestal
+ * in non-pedestal subtracted raw mode ADC data.
+ * <p>
+ * It has four function parameters:
+ * <ul>
+ * <li><b>mean</b> - the mean of the Landau function
+ * <li><b>sigma</b> - the width of the Landau
+ * <li><b>norm</b> - the normalization parameter
+ * <li><b>pedestal</b> - the pedestal constant
+ * </ul> 
+ * <p>
+ * The class is designed to be used with the AIDA fitting API. 
+ * 
+ * @author Jeremy McCormick <[log in to unmask]>
+ * @author Tim Nelson <[log in to unmask]>
+ */
+public class RawModeSignalFitFunction extends AbstractIFunction {
 
+    // This is the backing function used to get the Landau PDF values.
     LandauPdf landauPdf = new LandauPdf();    
       
-    public EcalWindowModeFitFunction() {
+    /**
+     * No argument constructor.
+     */
+    public RawModeSignalFitFunction() {
         this("");
     }
     
-    public EcalWindowModeFitFunction(String title) {
+    /**
+     * Constructor with function title.
+     * The no arg constructor uses this one.
+     * @param title The title of the function.
+     */
+    public RawModeSignalFitFunction(String title) {
         super();                
         this.variableNames = new String[] { "x0" };
         this.parameterNames = new String[] { "mean", "sigma", "norm", "pedestal" };        
         init(title);
     }
-            
+
+    /**
+     * Get the Y value of the Landau function at X.
+     * @value v The input X value (array of length 1).
+     */
     @Override
     public double value(double[] v) {
         return this.parameter("pedestal") + this.parameter("norm") * landauPdf.getValue(v[0]);
     }
 
+    /**
+     * Set a parameter value on the function.
+     * If these are mean or sigma values, they are pushed to the {@link #landauPdf} object.
+     */
     @Override
     public void setParameter(String key, double value) throws IllegalArgumentException {
         super.setParameter(key, value);
@@ -32,6 +67,10 @@
         }         
     }
 
+    /**
+     * Set all parameters at once.
+     * The mean and sigma are pushed to the {@link #landauPdf} object.
+     */
     @Override
     public void setParameters(double[] parameters) throws IllegalArgumentException {        
         super.setParameters(parameters);