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