Print

Print


Author: [log in to unmask]
Date: Wed Sep  9 07:26:49 2015
New Revision: 3560

Log:
cluster x position corrections

Modified:
    java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/cluster/ClusterPositionCorrection.java

Modified: java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/cluster/ClusterPositionCorrection.java
 =============================================================================
--- java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/cluster/ClusterPositionCorrection.java	(original)
+++ java/trunk/ecal-recon/src/main/java/org/hps/recon/ecal/cluster/ClusterPositionCorrection.java	Wed Sep  9 07:26:49 2015
@@ -14,25 +14,28 @@
 public final class ClusterPositionCorrection {
            
     // Variables for electron position corrections.
-    static final double ELECTRON_POS_A1 = 0.0066;
-    static final double ELECTRON_POS_A2 = -0.03;
-    static final double ELECTRON_POS_B1 = 0.028;
-    static final double ELECTRON_POS_B2 = -0.451;
-    static final double ELECTRON_POS_B3 = 0.465;
+    static final double ELECTRON_POS_A1 = -0.0005813;//0.0066;
+    static final double ELECTRON_POS_A2 = 0.005738;//-0.03;
+    static final double ELECTRON_POS_A3 = -0.0309;
+    static final double ELECTRON_POS_B1 = 0.02963;//0.028;
+    static final double ELECTRON_POS_B2 = -4.289;//-0.451;
+    static final double ELECTRON_POS_B3 = 4.596;//0.465;
     
     // Variables for positron position corrections.
-    static final double POSITRON_POS_A1 = 0.0072;
-    static final double POSITRON_POS_A2 = -0.031;
-    static final double POSITRON_POS_B1 = 0.007;
-    static final double POSITRON_POS_B2 = 0.342;
-    static final double POSITRON_POS_B3 = 0.108;
+    static final double POSITRON_POS_A1 = -0.0006243;//0.0072;
+    static final double POSITRON_POS_A2 = 0.006799;//-0.031;
+    static final double POSITRON_POS_A3 = -0.03141;
+    static final double POSITRON_POS_B1 = 0.0869;//0.007;
+    static final double POSITRON_POS_B2 = 2.965;//0.342;
+    static final double POSITRON_POS_B3 = 1.653;//0.108;
     
     // Variables for photon position corrections.
-    static final double PHOTON_POS_A1 = 0.005;
-    static final double PHOTON_POS_A2 = -0.032;
-    static final double PHOTON_POS_B1 = 0.011;
-    static final double PHOTON_POS_B2 = -0.037;
-    static final double PHOTON_POS_B3 = 0.294;
+    static final double PHOTON_POS_A1 = -0.0006329;//0.005;
+    static final double PHOTON_POS_A2 = 0.00595;//-0.032;
+    static final double PHOTON_POS_A3 = -0.03563;
+    static final double PHOTON_POS_B1 = 0.06444;//0.011;
+    static final double PHOTON_POS_B2 = -0.5836;//-0.037;
+    static final double PHOTON_POS_B3 = 3.508;//0.294;
     
   
     public static double[] calculateCorrectedPosition(Cluster cluster) {
@@ -59,38 +62,40 @@
      * @return Corrected x position
      */
     private static double computeCorrectedPosition(int pdg, double xPos, double rawEnergy) {
-        double xCl = xPos / 10.0;//convert to cm
+        //double xCl = xPos / 10.0;//convert to cm
         double xCorr;
         switch(pdg) {
             case 11: //Particle is electron        
-                xCorr = positionCorrection(xCl, rawEnergy, ELECTRON_POS_A1, ELECTRON_POS_A2, ELECTRON_POS_B1, ELECTRON_POS_B2, ELECTRON_POS_B3);
-                return xCorr * 10.0;
+                xCorr = positionCorrection(xPos, rawEnergy, ELECTRON_POS_A1, ELECTRON_POS_A2, ELECTRON_POS_A3, ELECTRON_POS_B1, ELECTRON_POS_B2, ELECTRON_POS_B3);
+                return xCorr;
             case -11:// Particle is positron       
-                xCorr = positionCorrection(xCl, rawEnergy, POSITRON_POS_A1, POSITRON_POS_A2, POSITRON_POS_B1, POSITRON_POS_B2, POSITRON_POS_B3);
-                return xCorr * 10.0;
+                xCorr = positionCorrection(xPos, rawEnergy, POSITRON_POS_A1, POSITRON_POS_A2, POSITRON_POS_A3, POSITRON_POS_B1, POSITRON_POS_B2, POSITRON_POS_B3);
+                return xCorr;
             case 22: // Particle is photon      
-                xCorr = positionCorrection(xCl, rawEnergy, PHOTON_POS_A1, PHOTON_POS_A2, PHOTON_POS_B1, PHOTON_POS_B2, PHOTON_POS_B3);
-                return xCorr * 10.0;
+                xCorr = positionCorrection(xPos, rawEnergy, PHOTON_POS_A1, PHOTON_POS_A2, PHOTON_POS_A3, PHOTON_POS_B1, PHOTON_POS_B2, PHOTON_POS_B3);
+                return xCorr;
             default: //Unknown 
-                xCorr = xCl;
-                return xCorr * 10.0;
+                xCorr = xPos;
+                return xCorr;
         }
     }
     
    /**
     * Calculates the position correction in cm using the raw energy and variables associated with the fit
-    * of the particle as described in  
+    * of the particle. Prodecure described in  
     * <a href="https://misportal.jlab.org/mis/physics/hps_notes/index.cfm?note_year=2014">HPS Note 2014-001</a>
     * @param xCl
     * @param rawEnergy
     * @param varA1
     * @param varA2
+    * @param varA3
     * @param varB1
     * @param varB2
     * @param varB3
     * @return
     */    
-    private static double positionCorrection(double xCl, double rawEnergy, double varA1, double varA2, double varB1, double varB2, double varB3) {
-        return ((xCl - (varB1 * rawEnergy + varB2 / Math.sqrt(rawEnergy) + varB3))/(varA1 / Math.sqrt(rawEnergy) + varA2 + 1));
+    private static double positionCorrection(double xCl, double rawEnergy, double varA1, double varA2, double varA3, double varB1, double varB2, double varB3) {
+        //return ((xCl - (varB1 * rawEnergy + varB2 / Math.sqrt(rawEnergy) + varB3))/(varA1 / Math.sqrt(rawEnergy) + varA2 + 1));
+    	return ((xCl - (varB1 * rawEnergy + varB2 / Math.sqrt(rawEnergy) + varB3))/(varA1 * rawEnergy + varA2 / Math.sqrt(rawEnergy) + varA3 + 1));
     }
 }