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/>
*/
|