Print

Print


Author: [log in to unmask]
Date: Tue Jun  9 13:46:19 2015
New Revision: 3116

Log:
adding ability to set pulse t0 range allowed in pulse fitting.  this is to allow it to work for simulation

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	Tue Jun  9 13:46:19 2015
@@ -32,7 +32,7 @@
     private EcalConditions ecalConditions = null;
 
     // don't bother fitting pulses with threshold crossing outside this sample range:
-    private final static int threshRange[]={7,20}; // (28 ns <--> 80 ns)
+    public int threshRange[]={7,20}; // (28 ns <--> 80 ns)
     
     // fit sample range relative to threshold crossing:
     private final static int fitRange[]={-10,15};
@@ -180,10 +180,14 @@
         else                        fitFcn3Pole.setParameter("width",threePoleWidths[cid-1]);
 
         // 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("width").setBounds(0.1,5);
         fitter.fitParameterSettings("integral").setBounds(0,999999);
-        fitter.fitParameterSettings("time0").setBounds(1,30);
-//        fitter.fitParameterSettings("time0").setBounds(threshRange[0]-5,threshRange[1]+20);
-        fitter.fitParameterSettings("width").setBounds(0.1,5);
         if (fixShapeParameter) fitter.fitParameterSettings("width").setFixed(true);
 
         if (debug>0) {

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	Tue Jun  9 13:46:19 2015
@@ -151,7 +151,14 @@
   
     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 setGlobalFixedPulseWidth(double width) { 
+        pulseFitter.globalThreePoleWidth=width; 
+        pulseFitter.fixShapeParameter=true;
+    }
+    public void setFitThresholdRange(int sample1,int sample2) {
+        pulseFitter.threshRange[0]=sample1;
+        pulseFitter.threshRange[1]=sample2;
+    }
 
     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	Tue Jun  9 13:46:19 2015
@@ -48,7 +48,7 @@
     }
 
     /*
-     * Fix 3-pole function width to be the same for all 442 ECal channels.  Units=ns.
+     * Fix 3-pole function width to be the same for all 442 ECal channels.  Units=samples.
      */
     public void setGlobalFixedPulseWidth(double width) { converter.setGlobalFixedPulseWidth(width); }
     
@@ -61,6 +61,11 @@
      * Set to <code>true</code> to fix fitted pulse widths to their channel's mean value:<br/>
      */
     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); }
     
     /**
      * Set to <code>true</code> to use the "2014" gain formula:<br/>