Author: [log in to unmask] Date: Wed Jun 10 13:55:34 2015 New Revision: 3120 Log: another update to allow pulse fitting to work on mc 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 Wed Jun 10 13:55:34 2015 @@ -14,7 +14,6 @@ import java.util.logging.Logger; import org.hps.conditions.database.DatabaseConditionsManager; -import org.hps.conditions.ecal.EcalChannel; import org.hps.conditions.ecal.EcalChannelConstants; import org.hps.conditions.ecal.EcalConditions; import org.lcsim.event.RawTrackerHit; @@ -33,6 +32,9 @@ // don't bother fitting pulses with threshold crossing outside this sample range: public int threshRange[]={7,20}; // (28 ns <--> 80 ns) + + // restrict fit's time0 parameter to this range: (units=samples) + public int t0limits[]={1,30}; // fit sample range relative to threshold crossing: private final static int fitRange[]={-10,15}; @@ -181,11 +183,7 @@ // constrain parameters: // fitter.fitParameterSettings("time0").setBounds(1,30); - double t0min=threshRange[0]-6; - double t0max=threshRange[1]+10; - if (t0min<1) t0min=1; - if (t0max>=samples.length-5) t0max=samples.length-6; - fitter.fitParameterSettings("time0").setBounds(t0min,t0max); + fitter.fitParameterSettings("time0").setBounds(t0limits[0],t0limits[1]); fitter.fitParameterSettings("width").setBounds(0.1,5); fitter.fitParameterSettings("integral").setBounds(0,999999); if (fixShapeParameter) fitter.fitParameterSettings("width").setFixed(true); 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 Wed Jun 10 13:55:34 2015 @@ -155,10 +155,12 @@ pulseFitter.globalThreePoleWidth=width; pulseFitter.fixShapeParameter=true; } - public void setFitThresholdRange(int sample1,int sample2) { - pulseFitter.threshRange[0]=sample1; - pulseFitter.threshRange[1]=sample2; - } + public void setFitThresholdTimeLo(int sample) { pulseFitter.threshRange[0]=sample; } + public void setFitThresholdTimeHi(int sample) { pulseFitter.threshRange[1]=sample; } + public void setFitLimitTimeLo(int sample) { pulseFitter.t0limits[0]=sample; } + public void setFitLimitTimeHi(int sample) { pulseFitter.t0limits[1]=sample; } + + 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 Wed Jun 10 13:55:34 2015 @@ -48,14 +48,14 @@ } /* + * Set to <code>true</code> to use pulse fitting instead of arithmetic integration:<br/> + */ + public void setUseFit(boolean useFit) { converter.setUseFit(useFit); } + + /* * Fix 3-pole function width to be the same for all 442 ECal channels. Units=samples. */ public void setGlobalFixedPulseWidth(double width) { converter.setGlobalFixedPulseWidth(width); } - - /* - * Set to <code>true</code> to use pulse fitting instead of arithmetic integration:<br/> - */ - public void setUseFit(boolean useFit) { converter.setUseFit(useFit); } /* * Set to <code>true</code> to fix fitted pulse widths to their channel's mean value:<br/> @@ -63,9 +63,16 @@ public void setFixShapeParameter(boolean fix) { converter.setFixShapeParameter(fix); } /* - * Limit threshold crossing range for pulse-fitter. Units=samples. - */ - public void setFitThresholdRange(int sample1,int sample2) { converter.setFitThresholdRange(sample1,sample2); } + * Limit threshold crossing range that is candidate for pulse-fitting. Units=samples. + */ + public void setFitThresholdTimeLo(int sample) { converter.setFitThresholdTimeLo(sample); } + public void setFitThresholdTimeHi(int sample) { converter.setFitThresholdTimeHi(sample); } + + /* + * Constrain pulse fit time0 parameter. Units=samples. + */ + public void setFitLimitTimeLo(int sample) { converter.setFitLimitTimeLo(sample); } + public void setFitLimitTimeHi(int sample) { converter.setFitLimitTimeHi(sample); } /** * Set to <code>true</code> to use the "2014" gain formula:<br/>