LISTSERV mailing list manager LISTSERV 16.5

Help for HPS-SVN Archives


HPS-SVN Archives

HPS-SVN Archives


HPS-SVN@LISTSERV.SLAC.STANFORD.EDU


View:

Message:

[

First

|

Previous

|

Next

|

Last

]

By Topic:

[

First

|

Previous

|

Next

|

Last

]

By Author:

[

First

|

Previous

|

Next

|

Last

]

Font:

Proportional Font

LISTSERV Archives

LISTSERV Archives

HPS-SVN Home

HPS-SVN Home

HPS-SVN  December 2014

HPS-SVN December 2014

Subject:

r1674 - /java/trunk/analysis/src/main/java/org/hps/analysis/ecal/cosmic/

From:

[log in to unmask]

Reply-To:

Notification of commits to the hps svn repository <[log in to unmask]>

Date:

Wed, 10 Dec 2014 21:15:23 -0000

Content-Type:

text/plain

Parts/Attachments:

Parts/Attachments

text/plain (589 lines)

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);

Top of Message | Previous Page | Permalink

Advanced Options


Options

Log In

Log In

Get Password

Get Password


Search Archives

Search Archives


Subscribe or Unsubscribe

Subscribe or Unsubscribe


Archives

November 2017
August 2017
July 2017
January 2017
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
December 2013
November 2013

ATOM RSS1 RSS2



LISTSERV.SLAC.STANFORD.EDU

Secured by F-Secure Anti-Virus CataList Email List Search Powered by the LISTSERV Email List Manager

Privacy Notice, Security Notice and Terms of Use