Print

Print


Author: [log in to unmask]
Date: Mon Jun  8 17:37:17 2015
New Revision: 3114

Log:
adding ability to globally fix pulse width for fitting

Modified:
    java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/EcalPulseFitter.java
    java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/EcalRawConverter.java
    java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/EcalRawConverterDriver.java

Modified: java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/EcalPulseFitter.java
 =============================================================================
--- java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/EcalPulseFitter.java	(original)
+++ java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/EcalPulseFitter.java	Mon Jun  8 17:37:17 2015
@@ -40,6 +40,10 @@
     // sample range relative to threshold crossing used to initialize pedestal fit parameter:
     private final static int pedRange[]={-10,-5};
 
+    // if this is positive, it will override individual widths:
+    public double globalThreePoleWidth=-999;
+
+    // these are 442 channels' widths, measured from 2015 data:
     private final static double threePoleWidths[]={
       2.44057,2.40057,2.53389,2.32095,2.44267,2.43631,2.40292,2.46911,2.36032,2.42132,2.41473,2.43864,2.37710,2.43278,2.49126,2.41739,2.40560,
       2.42042,2.51278,2.46731,2.42647,2.35636,2.55308,2.47517,2.38748,2.48324,2.53726,2.54780,2.50771,2.45188,2.35011,2.35110,2.37575,2.37649,
@@ -172,7 +176,8 @@
         fitFcn3Pole.setParameter("pedestal",ped);
         fitFcn3Pole.setParameter("time0",(double)threshCross-2);
         fitFcn3Pole.setParameter("integral",pulseIntegral>0 ? pulseIntegral : 2);
-        fitFcn3Pole.setParameter("width",threePoleWidths[cid-1]);
+        if (globalThreePoleWidth>0) fitFcn3Pole.setParameter("width",globalThreePoleWidth);
+        else                        fitFcn3Pole.setParameter("width",threePoleWidths[cid-1]);
 
         // constrain parameters:
         fitter.fitParameterSettings("integral").setBounds(0,999999);

Modified: java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/EcalRawConverter.java
 =============================================================================
--- java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/EcalRawConverter.java	(original)
+++ java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/EcalRawConverter.java	Mon Jun  8 17:37:17 2015
@@ -151,6 +151,7 @@
   
     public void setUseFit(boolean useFit) { this.useFit=useFit; }
     public void setFixShapeParameter(boolean fix) { pulseFitter.fixShapeParameter=fix; }
+    public void setGlobalFixedPulseWidth(double width) { pulseFitter.globalThreePoleWidth=width; pulseFitter.fixShapeParameter=true;}
 
     public void setLeadingEdgeThreshold(double thresh) {
         leadingEdgeThreshold=thresh;

Modified: java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/EcalRawConverterDriver.java
 =============================================================================
--- java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/EcalRawConverterDriver.java	(original)
+++ java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/EcalRawConverterDriver.java	Mon Jun  8 17:37:17 2015
@@ -18,17 +18,7 @@
 import org.lcsim.util.Driver;
 
 /**
- * 
- * 
- * baltzell New in 2015:  (default behavior is unchanged)
- * Added firmware emulation for converting from Mode-1 readout (RawTrackerHit)
- * to Mode-3 pulse (CalorimeterHit).  Turn it on with "emulateFirmware", else
- * defaults to previous behavior.  
- *  
- * Removed integralWindow in favor of NSA/NSB to allow treating all Modes uniformly.
- * (New) NSA+NSB == (Old) integralWindow*4(ns) 
- * 
- * Implemented finding multiple peaks for Mode-1.
+ * baltzell June 2015: removed outdated javadoc comments in the class header
  */
 public class EcalRawConverterDriver extends Driver {
 
@@ -57,6 +47,11 @@
         converter = new EcalRawConverter();
     }
 
+    /*
+     * Fix 3-pole function width to be the same for all 442 ECal channels.  Units=ns.
+     */
+    public void setGlobalFixedPulseWidth(double width) { converter.setGlobalFixedPulseWidth(width); }
+    
     /*
      * Set to <code>true</code> to use pulse fitting instead of arithmetic integration:<br/>
      */