Commit in hps-java/src/main/java/org/lcsim/hps/users/phansson on MAIN
MPAlignmentParameters.java+141-2521.15 -> 1.16
Added better debug. Improved modularization.

hps-java/src/main/java/org/lcsim/hps/users/phansson
MPAlignmentParameters.java 1.15 -> 1.16
diff -u -r1.15 -r1.16
--- MPAlignmentParameters.java	24 Oct 2012 06:47:54 -0000	1.15
+++ MPAlignmentParameters.java	1 Nov 2012 15:42:34 -0000	1.16
@@ -123,6 +123,8 @@
     
     public void setDebug(boolean debug) {
         this._DEBUG = debug;
+        _alignUtils.setDebug(debug);
+        _numDerivatives.setDebug(debug);
     }
 
     public void setUniformZFieldStrength(double bfield) {
@@ -234,24 +236,22 @@
     private void CalculateGlobalDerivatives(HelicalTrackStrip strip) {
        
         //Find interception with plane that the strips belongs to
-        Hep3Vector trkpos = trackUtil.calculateIterativeHelixInterceptXPlane(_trk, strip, Math.abs(this._bfield.z()));
+        Hep3Vector x_vec = trackUtil.calculateIterativeHelixInterceptXPlane(_trk, strip, Math.abs(this._bfield.z()));
         
-        if(Double.isNaN(trkpos.x())) {
-            System.out.printf("%s: error this trkpos is wrong %s\n",this.getClass().getSimpleName(),trkpos.toString());
+        if(Double.isNaN(x_vec.x())) {
+            System.out.printf("%s: error this trkpos is wrong %s\n",this.getClass().getSimpleName(),x_vec.toString());
             System.out.printf("%s: origin %s trk \n%s\n",this.getClass().getSimpleName(),strip.origin(),_trk.toString());
-            trkpos = trackUtil.calculateIterativeHelixInterceptXPlane(_trk, strip, Math.abs(this._bfield.z()),true);
+            x_vec = trackUtil.calculateIterativeHelixInterceptXPlane(_trk, strip, Math.abs(this._bfield.z()),true);
             System.exit(1);
         }
-        
         double slope = _trk.slope();
-        double xint = trkpos.x();
         double xr = 0.0;
         double yr = 0.0;
         double d0 = _trk.dca();
         double phi0 = _trk.phi0();
         double R = _trk.R();
         double z0 = _trk.z0();
-        double s = HelixUtils.PathToXPlane(_trk, xint, 0, 0).get(0);
+        double s = HelixUtils.PathToXPlane(_trk, x_vec.x(), 0, 0).get(0);
         double phi = -s/R + phi0;
         double umeas = strip.umeas();
         Hep3Vector corigin = strip.origin();
@@ -263,7 +263,7 @@
             System.out.printf("%s: --- Calculate global derivatives ---\n",this.getClass().getSimpleName());
             System.out.printf("%s: Side %d, layer %d, strip origin %s\n",this.getClass().getSimpleName(),side,layer,corigin.toString());
             System.out.printf("%s: %10s%10s%10s%10s%10s%10s%10s%10s%10s\n",this.getClass().getSimpleName(),"d0","z0","slope","phi0","R","xint","phi", "xint","s");
-            System.out.printf("%s: %10.4f%10.4f%10.4f%10.4f%10.4f%10.4f%10.4f%10.4f%10.4f\n",this.getClass().getSimpleName(), d0, z0, slope, phi0, R,xint,phi,xint,s);
+            System.out.printf("%s: %10.4f%10.4f%10.4f%10.4f%10.4f%10.4f%10.4f%10.4f%10.4f\n",this.getClass().getSimpleName(), d0, z0, slope, phi0, R,x_vec.x(),phi,x_vec.x(),s);
         }
         
         //1st index = alignment parameter (only u so far)
@@ -282,248 +282,186 @@
         // [Layer]
         // 1-10
         
-        
-        //go through all the global parameters defined and calculate dfdp
-        
-        //The global derivatives is done in the tracking frame
-        //This means that after they are calculated I need to transform them 
-        //into the sensor frame because that is where the residuals are calculated
-        
-       
-       
+             
        //Rotation matrix from the tracking fram to the sensor/strip frame
         Hep3Matrix T = trackerHitUtil.getTrackToStripRotation(strip);
         
-        //Derivatives of the rotation matrix deltaR' w.r.t. rotations a,b,c around axis x,y,z
-        Hep3Matrix ddeltaRprime_da = new BasicHep3Matrix(0,0,0,0,0,1,0,-1,0);
-        Hep3Matrix ddeltaRprime_db = new BasicHep3Matrix(0,0,-1,0,0,0,1,0,0);
-        Hep3Matrix ddeltaRprime_dc = new BasicHep3Matrix(0,1,0,-1,0,0,0,0,0);
-
-        if(_DEBUG) {
-            System.out.printf("%s: Rotation matrx from tracking/global to local frame T:\n %s\n",this.getClass().getSimpleName(),T.toString());
-            System.out.printf("%s: Derivatives of the rotation matrix deltaR' w.r.t. rotation a,b,c around x,y,z axis:\n",this.getClass().getSimpleName());
-            System.out.printf("%s: ddeltaRprime_da:\n %s\n",this.getClass().getSimpleName(),ddeltaRprime_da.toString());
-            System.out.printf("%s: ddeltaRprime_db:\n %s\n",this.getClass().getSimpleName(),ddeltaRprime_db.toString());
-            System.out.printf("%s: ddeltaRprime_dc:\n %s\n",this.getClass().getSimpleName(),ddeltaRprime_dc.toString());
-        }
+      
         
+        /*
+         * Calculate jacobian da/db
+         */
         
-
+        BasicMatrix da_db = this._alignUtils.calculateJacobian(x_vec,T);
       
-        //****************************************************************************
-        //Calculate jacobian da/db
-        
-        // Upper left 3x3
-        Hep3Vector deltaX_gl =  new BasicHep3Vector(1,0,0);    
-        Hep3Vector deltaY_gl =  new BasicHep3Vector(0,1,0);    
-        Hep3Vector deltaZ_gl =  new BasicHep3Vector(0,0,1);    
-        Hep3Vector dq_dx = VecOp.mult(T, deltaX_gl);
-        Hep3Vector dq_dy = VecOp.mult(T, deltaY_gl);
-        Hep3Vector dq_dz = VecOp.mult(T, deltaZ_gl);
         
         if(_DEBUG) {
-            System.out.printf("%s: - Upper left 3x3 of Jacobian da/db: dq_dx,dq_dy,dq_dz\n",this.getClass().getSimpleName());
-            System.out.printf("%s: dq_dx: %s\n",this.getClass().getSimpleName(),dq_dx.toString());
-            System.out.printf("%s: dq_dy: %s\n",this.getClass().getSimpleName(),dq_dy.toString());
-            System.out.printf("%s: dq_dz: %s\n",this.getClass().getSimpleName(),dq_dz.toString());
+            this._alignUtils.printJacobianInfo(da_db);
         }
         
-       
-        
-        if(_DEBUG) {
-            System.out.printf("%s: - Upper right 3x3 of Jacobian da/db: dq_dx,dq_dy,dq_dz\n",this.getClass().getSimpleName());
-        }
         
         
-        // Upper right 3x3
-        Hep3Vector x_vec = trkpos; //position around where the small rotation happens 
-        Hep3Vector x_vec_tmp = VecOp.mult(ddeltaRprime_da, x_vec); // derivative of the position
-        Hep3Vector x_vec_tmp2 = VecOp.sub(x_vec_tmp, x_vec); // subtract position
-        Hep3Vector dq_da = VecOp.mult(T,x_vec_tmp2); //rotated into local frame
+        /*
+         * Invert the Jacobian
+         */
         
-        if(_DEBUG) {
-            System.out.printf("%s: position %s rotation derivative w.r.t. a ddeltaR'/da %s\n",this.getClass().getSimpleName(),x_vec.toString(),x_vec_tmp.toString());
-            System.out.printf("%s: subtracted %s and rotated to local %s \n",this.getClass().getSimpleName(),x_vec_tmp2.toString(),dq_da.toString());
-        }
         
+        BasicMatrix db_da = (BasicMatrix) MatrixOp.inverse(da_db);
         
-        x_vec_tmp = VecOp.mult(ddeltaRprime_db, x_vec);
-        x_vec_tmp2 = VecOp.sub(x_vec_tmp, x_vec); 
-        Hep3Vector dq_db = VecOp.mult(T,x_vec_tmp2);
+
         
         if(_DEBUG) {
-            System.out.printf("%s: position %s rotation derivative w.r.t. a ddeltaR'/db %s\n",this.getClass().getSimpleName(),x_vec.toString(),x_vec_tmp.toString());
-            System.out.printf("%s: subtracted %s and rotated to local %s \n",this.getClass().getSimpleName(),x_vec_tmp2.toString(),dq_db.toString());
+            System.out.printf("%s: Invert the Jacobian. We get da_db^-1=db_da: \n%s \n",this.getClass().getSimpleName(),db_da.toString());
+            BasicMatrix prod = (BasicMatrix) MatrixOp.mult(db_da,da_db);
+            System.out.printf("%s: Check the inversion i.e. db_da*da_db: \n%s \n",this.getClass().getSimpleName(),prod.toString());
         }
-        
-        x_vec_tmp = VecOp.mult(ddeltaRprime_dc, x_vec);
-        x_vec_tmp2 = VecOp.sub(x_vec_tmp, x_vec); 
-        Hep3Vector dq_dc = VecOp.mult(T,x_vec_tmp2);
 
-        if(_DEBUG) {
-            System.out.printf("%s: position %s rotation derivative w.r.t. a ddeltaR'/dc %s\n",this.getClass().getSimpleName(),x_vec.toString(),x_vec_tmp.toString());
-            System.out.printf("%s: subtracted %s and rotated to local %s \n",this.getClass().getSimpleName(),x_vec_tmp2.toString(),dq_dc.toString());
-        }
+
+        /*
+         * Calculate global derivative of the residual dz/db = dq_a^gl/db-dq_p^gl/db
+         * dq_a^gl is the alignment corrected position in the global tracking frame
+         * dq_p^gl_db is the predicted hit position (from the track model) in the global/tracking frame
+         * 
+         */
+
+       
+
+         //****************************************************************************
+        // First term in dz/db 
+
+        //3x6 matrix
+        BasicMatrix dq_agl_db = _alignUtils.calculateGlobalHitPositionDers(x_vec);
+       
         
-    
         if(_DEBUG) {
-            System.out.printf("%s: Summary:\n",this.getClass().getSimpleName());
-            System.out.printf("%s: dq_da: %s\n",this.getClass().getSimpleName(),dq_da.toString());
-            System.out.printf("%s: dq_db: %s\n",this.getClass().getSimpleName(),dq_db.toString());
-            System.out.printf("%s: dq_dc: %s\n",this.getClass().getSimpleName(),dq_dc.toString());
+            _alignUtils.printGlobalHitPositionDers(dq_agl_db);
         }
         
         
-       
         
-        // Lower left 3x3
-        //deltaR = (alpha,beta,gamma) the rotation alignment parameters in the local frame
-        Hep3Vector ddeltaR_dx = new BasicHep3Vector(0,0,0);
-        Hep3Vector ddeltaR_dy = new BasicHep3Vector(0,0,0);
-        Hep3Vector ddeltaR_dz = new BasicHep3Vector(0,0,0);
+        /*
+         * Second term in dz/db  
+         * dq_p^gl_db is the predicted hit position (from the track model) in the global/tracking frame
+         * 
+         */
+
+        //3x6 matrix
+        BasicMatrix dq_pgl_db = _alignUtils.calculateGlobalPredictedHitPositionDers(_trk,x_vec);
 
-        
         if(_DEBUG) {
-            System.out.printf("%s: - Lower left 3x3 of Jacobian ddeltaR/d(x,y,z): dDeltaR_dx,dDeltaR_dy,dDeltaR_dz\n",this.getClass().getSimpleName());
-            System.out.printf("%s: ddeltaR_dx: %s\n",this.getClass().getSimpleName(),ddeltaR_dx.toString());
-            System.out.printf("%s: ddeltaR_dy: %s\n",this.getClass().getSimpleName(),ddeltaR_dy.toString());
-            System.out.printf("%s: ddeltaR_dz: %s\n",this.getClass().getSimpleName(),ddeltaR_dz.toString());
-        }
-        
+            _alignUtils.printGlobalPredictedHitPositionDers(dq_pgl_db);
         
-     
+            System.out.printf("%s: Cross-check using numerical derivatives for dq_pgl/db (numder)\n",this.getClass().getSimpleName());
         
-        // Lower right 3x3
-/*
-        //deltaR = (alpha,beta,gamma) the rotation alignment parameters in the local frame
-        //Expressing T in Euler angles i,j,k
-        double i = 0;
-        double j = 0;
-        double k = 0;
-        double dalpha_da = Math.cos(k)*Math.sin(i)*Math.sin(j) + Math.cos(i)*Math.sin(k);
-        double dbeta_da = Math.cos(i)*Math.cos(k) - Math.sin(i)*Math.sin(j)*Math.sin(k);
-        double dgamma_da = -Math.cos(j)*Math.sin(i);
-        double dalpha_db = -Math.cos(i)*Math.cos(k)*Math.sin(j) + Math.sin(i)*Math.sin(k);
-        double dbeta_db = Math.cos(k)*Math.sin(i) + Math.cos(i)*Math.sin(j)*Math.sin(k);
-        double dgamma_db = Math.cos(i)*Math.cos(j);
-        double dalpha_dc = -Math.cos(i)*Math.cos(k)*Math.sin(j) + Math.sin(i)*Math.sin(k);
-        double dbeta_dc = Math.cos(k)*Math.sin(i) + Math.cos(i)*Math.sin(j)*Math.sin(k);
-        double dgamma_dc = Math.sin(i)*Math.sin(j);
-        
-        Hep3Vector ddeltaR_da = new BasicHep3Vector(dalpha_da,dbeta_da,dgamma_da);
-        Hep3Vector ddeltaR_db = new BasicHep3Vector(dalpha_db,dbeta_db,dgamma_db);
-        Hep3Vector ddeltaR_dc = new BasicHep3Vector(dalpha_dc,dbeta_dc,dgamma_dc);
-*/
+            BasicMatrix dq_pgl_db_numder = this._numDerivatives.calculateGlobalPredictedHitPositionDers(_trk,x_vec);
+            _alignUtils.printGlobalPredictedHitPositionDers(dq_pgl_db_numder);
         
-        if(_DEBUG) {
-            System.out.printf("%s: - Lower right 3x3 of Jacobian ddeltaR/d(a,b,c): \n",this.getClass().getSimpleName());
-            System.out.printf("%s: T: %s\n",this.getClass().getSimpleName(),T.toString());
         }
 
+        /*
+         * Note that a shift in the position of the hit (q_agl) in in the 
+         * y/z plane is equivalent of the shift of the position of the prediction hit q_pgl
+         * in the same plane. Thus we set these terms of the derivative to zero
+         * 
+         */
+
+        dq_pgl_db.setElement(0, 0, 0);
+        dq_pgl_db.setElement(1, 1, 0);
+        dq_pgl_db.setElement(2, 2, 0);
         
         
-        //Now fill the Jacobian 6x6 matrix
-        BasicMatrix da_db = new BasicMatrix(6,6);
-        //upper left 3x3
-        da_db.setElement(0,0,dq_dx.x());
-        da_db.setElement(1,0,dq_dx.y());
-        da_db.setElement(2,0,dq_dx.z());
-        da_db.setElement(0,1,dq_dy.x());
-        da_db.setElement(1,1,dq_dy.y());
-        da_db.setElement(2,1,dq_dy.z());
-        da_db.setElement(0,2,dq_dz.x());
-        da_db.setElement(1,2,dq_dz.y());
-        da_db.setElement(2,2,dq_dz.z());
-        //upper right 3x3
-        da_db.setElement(0,3,dq_da.x());
-        da_db.setElement(1,3,dq_da.y());
-        da_db.setElement(2,3,dq_da.z());
-        da_db.setElement(0,4,dq_db.x());
-        da_db.setElement(1,4,dq_db.y());
-        da_db.setElement(2,4,dq_db.z());
-        da_db.setElement(0,5,dq_dc.x());
-        da_db.setElement(1,5,dq_dc.y());
-        da_db.setElement(2,5,dq_dc.z());
-        //lower right 3x3
-        da_db.setElement(3,3,T.e(0, 0));
-        da_db.setElement(4,3,T.e(1, 0));
-        da_db.setElement(5,3,T.e(2, 0));
-        da_db.setElement(3,4,T.e(0, 1));
-        da_db.setElement(4,4,T.e(1, 1));
-        da_db.setElement(5,4,T.e(2, 1));
-        da_db.setElement(3,5,T.e(0, 2));
-        da_db.setElement(4,5,T.e(1, 2));
-        da_db.setElement(5,5,T.e(2, 2));
-//        da_db.setElement(4,3,ddeltaR_da.y());
-//        da_db.setElement(5,3,ddeltaR_da.z());
-//        da_db.setElement(3,4,ddeltaR_db.x());
-//        da_db.setElement(4,4,ddeltaR_db.y());
-//        da_db.setElement(5,4,ddeltaR_db.z());
-//        da_db.setElement(3,5,ddeltaR_dc.x());
-//        da_db.setElement(4,5,ddeltaR_dc.y());
-//        da_db.setElement(5,5,ddeltaR_dc.z());
-        //lower left 3x3
-        da_db.setElement(3,0,ddeltaR_dx.x());
-        da_db.setElement(4,0,ddeltaR_dx.y());
-        da_db.setElement(5,0,ddeltaR_dx.z());
-        da_db.setElement(3,1,ddeltaR_dy.x());
-        da_db.setElement(4,1,ddeltaR_dy.y());
-        da_db.setElement(5,1,ddeltaR_dy.z());
-        da_db.setElement(3,2,ddeltaR_dz.x());
-        da_db.setElement(4,2,ddeltaR_dz.y());
-        da_db.setElement(5,2,ddeltaR_dz.z());
+        /*
+         * For the rotations in this global frame the rotation leads to a shift of the position 
+         * of the predicted hit. Since angles are small this rotation is the same as the 
+         * rotation of the hit position
+         */
         
-        if(_DEBUG) {
-            System.out.printf("%s: da_db:\n%s \n",this.getClass().getSimpleName(),da_db.toString());
-            System.out.printf("%s: det(da_db) = %.3f \n",this.getClass().getSimpleName(),da_db.det());
-        }
+        dq_pgl_db.setElement(0, 3, 0);
+        dq_pgl_db.setElement(1, 3, 0);
+        dq_pgl_db.setElement(2, 3, 0);
+        dq_pgl_db.setElement(0, 4, 0);
+        dq_pgl_db.setElement(1, 4, 0);
+        dq_pgl_db.setElement(2, 4, 0);
+        dq_pgl_db.setElement(0, 5, 0);
+        dq_pgl_db.setElement(1, 5, 0);
+        dq_pgl_db.setElement(2, 5, 0);
         
         
-        BasicMatrix db_da = (BasicMatrix) MatrixOp.inverse(da_db);
-        //db_da.invert();
-
+         if(_DEBUG) {
+            System.out.printf("%s: Fixing the predicted derivatives that are equivalent to the hit position derivatives. The result is below.\n",this.getClass().getSimpleName());
+            _alignUtils.printGlobalPredictedHitPositionDers(dq_pgl_db);
+        }
         
+        /*
+         * Putting them together i.e. subtract the predicted from the hit position derivative 
+         */
+               
+        //3x6 matrix    
+        BasicMatrix dz_db = (BasicMatrix) MatrixOp.sub(dq_agl_db, dq_pgl_db);
+
+            
         if(_DEBUG) {
-            System.out.printf("%s: db_da: \n%s \n",this.getClass().getSimpleName(),db_da.toString());
-            BasicMatrix prod = (BasicMatrix) MatrixOp.mult(db_da,da_db);
-            System.out.printf("%s: db_da*da_db: \n%s \n",this.getClass().getSimpleName(),prod.toString());
+            _alignUtils.printGlobalResidualDers(dz_db);
         }
-
-        
-        
-        if(1==1)
-            return;
         
+        /*
+         * Convert the to the local frame using the Jacobian
+         */
+       
+        //3x6 = 3x6*6x6 matrix
+        BasicMatrix dz_da = (BasicMatrix) MatrixOp.mult(dz_db, db_da);
         
+        if(_DEBUG) {   
+            _alignUtils.printLocalResidualDers(dz_da);
+        }
         
+
         
+        if(_DEBUG) {   
+            System.out.printf("%s: PELLE check manual one entry\n",this.getClass().getSimpleName());
+            double dx_dx = dz_db.e(0, 0);
+            double dx_dy = dz_db.e(0, 1);
+            double dx_dz = dz_db.e(0, 2);
+            double dx_da = dz_db.e(0, 3);
+            double dx_db = dz_db.e(0, 4);
+            double dx_dc = dz_db.e(0, 5);
+            double dx_du = db_da.e(0, 0);
+            double dy_du = db_da.e(1, 0);
+            double dz_du = db_da.e(2, 0);
+            double da_du = db_da.e(3, 0);
+            double db_du = db_da.e(4, 0);
+            double dc_du = db_da.e(5, 0);
+            System.out.printf("%s: dx_dx*dx_du = %.3f ",this.getClass().getSimpleName(),dx_dx*dx_du);
+            System.out.printf(" dx_dy*dy_du = %.3f  ",dx_dy*dy_du);
+            System.out.printf(" dx_dz*dz_du = %.3f (=%.3f*%.3f)\n",dx_dz*dz_du,dx_dz,dz_du);
+            System.out.printf("%s: dx_da*da_du = %.3f ",this.getClass().getSimpleName(),dx_da*da_du);
+            System.out.printf(" dx_db*db_du = %.3f ",dx_db*db_du);
+            System.out.printf(" dx_dc*dc_du = %.3f \n",dx_dc*dc_du);
+            
+            double du_du = dx_dx*dx_du + dx_dy*dy_du + dx_dz*dz_du + dx_da*da_du + dx_db*db_du + dx_dc*dc_du;
+            System.out.printf("%s: du_du = %.3f comapred to %.3f \n",this.getClass().getSimpleName(),du_du,dz_da.e(0, 0));
+        }
+
         
-        //****************************************************************************
-        // Calcualte the global derivatives in the global frame dz/db
-        // where z is the residual in the global frame and b are the alignment 
-        // parameters in the global frame
         
         
+        if(1==1) return;
+
         
          //Flag to tell if this hit is affected by the given global parameter
         boolean useGL = false;
         
         //Clear the old parameter list
         _glp.clear();
+
+      
+         
         
         
         
         
-        
-        
-        //****************************************************************************
-        //Derivatives of the predicted hit position qp for a translation of in x
-        
         BasicMatrix dqp_da_TRACK = new BasicMatrix(3,1);
-        dqp_da_TRACK.setElement(0, 0, _alignUtils.dx_dx()); 
-        dqp_da_TRACK.setElement(1, 0, _alignUtils.dy_dx(xint, d0, phi0, R, phi)); 
-        dqp_da_TRACK.setElement(2, 0, _alignUtils.dz_dx(xint, xr, yr, d0, phi0, slope, R, phi));
-
+        
         
         //Put it into a matrix to be able to transform easily
         //BasicMatrix _dqp_da_TRACK = FillMatrix(dqp_da_TRACK, 3, 1);
@@ -548,7 +486,7 @@
         
         //****************************************************************************
         //Derivatives of the predicted hit position qp for a translation of in y
-        double y = -(R-d0)*Math.cos(phi0) + _alignUtils.sign(R) *Math.sqrt(Math.pow(R, 2)-Math.pow(xint-(R-d0)*Math.sin(phi0), 2));
+        double y = -(R-d0)*Math.cos(phi0) + _alignUtils.sign(R) *Math.sqrt(Math.pow(R, 2)-Math.pow(x_vec.x()-(R-d0)*Math.sin(phi0), 2));
         dqp_da_TRACK.setElement(0, 0, _alignUtils.dx_dy(y, d0, phi0, R, phi)); 
         dqp_da_TRACK.setElement(1, 0, _alignUtils.dy_dy()); 
         dqp_da_TRACK.setElement(2, 0, _alignUtils.dz_dy(y, d0, phi0, slope, R, phi)); 
@@ -591,56 +529,7 @@
         }
 
         
-        //I need to convert the dqp/da in the global frame to dqp_da in the sensor fram
-        
-        //place holders
-        double dup_dw = 0;
-        double dvp_dw = 0;
-        double um = umeas;
-        double vm = vmeas; //should always be zero, I think
-        
-        BasicMatrix dres_ddu = new BasicMatrix(3,1);
-        dres_ddu.setElement(0, 0, 1);
-        dres_ddu.setElement(1, 0, 0);
-        dres_ddu.setElement(2, 0, 0);
-        BasicMatrix dres_ddv = new BasicMatrix(3,1);
-        dres_ddv.setElement(0, 0, 0);
-        dres_ddv.setElement(1, 0, 1);
-        dres_ddv.setElement(2, 0, 0);
-        BasicMatrix dres_ddw = new BasicMatrix(3,1);
-        dres_ddw.setElement(0, 0, -dup_dw);
-        dres_ddw.setElement(1, 0, -dvp_dw);
-        dres_ddw.setElement(2, 0, 0);
-        BasicMatrix dres_dalpha = new BasicMatrix(3,1);
-        dres_dalpha.setElement(0, 0, vm*dup_dw);
-        dres_dalpha.setElement(1, 0, vm*dvp_dw);
-        dres_dalpha.setElement(2, 0, 0);
-        BasicMatrix dres_dbeta = new BasicMatrix(3,1);
-        dres_dbeta.setElement(0, 0, -um*dup_dw);
-        dres_dbeta.setElement(1, 0, -um*dvp_dw);
-        dres_dbeta.setElement(2, 0, 0);
-        BasicMatrix dres_dgamma = new BasicMatrix(3,1);
-        dres_dgamma.setElement(0, 0, vm);
-        dres_dgamma.setElement(1, 0, -um);
-        dres_dgamma.setElement(2, 0, 0);
-
-        //compact version
-        BasicMatrix dres_da = new BasicMatrix(3,6);
-        for(int icol=0;icol<6;++icol) {
-            for(int irow=0;irow<3;++irow) {
-                if(icol==0) dres_da.setElement(irow, icol, dres_ddu.e(irow, 0));
-                if(icol==1) dres_da.setElement(irow, icol, dres_ddv.e(irow, 0));
-                if(icol==2) dres_da.setElement(irow, icol, dres_ddw.e(irow, 0));
-                if(icol==3) dres_da.setElement(irow, icol, dres_dalpha.e(irow, 0));
-                if(icol==4) dres_da.setElement(irow, icol, dres_dbeta.e(irow, 0));
-                if(icol==5) dres_da.setElement(irow, icol, dres_dgamma.e(irow, 0));
-            }
-        }
-        
-        
-        
-        
-        
+   
         
         
         
@@ -804,7 +693,7 @@
         aida.profile1D("res_u_vs_ydiff_layer_" + strip.layer() + "_" + side).fill(vdiffTrk.y(),_resid[0]);
 
         if (_DEBUG) {
-            System.out.printf("%s: ----  CalculateResidual ----\n",this.getClass().getSimpleName());
+            System.out.printf("%s: CalculateResidual Result ----\n",this.getClass().getSimpleName());
             System.out.printf("%s: Strip Origin: %s\n",this.getClass().getSimpleName(),corigin.toString());
             System.out.printf("%s: Position on the track (tracking coordinates) at the strip: %s\n",this.getClass().getSimpleName(),trkpos.toString());
             System.out.printf("%s: vdiffTrk %s\n",this.getClass().getSimpleName(),vdiffTrk.toString());
@@ -864,23 +753,23 @@
 
     private void PrintStripResiduals(HelicalTrackStrip strip) {
         if (_DEBUG) {
-            System.out.println(this.getClass().getSimpleName() + ": --- PrintStripResiduals ---");
+            System.out.printf("%s: --- Alignment Results for this Strip ---",this.getClass().getSimpleName());
             String side = SvtUtils.getInstance().isTopLayer((SiSensor) ((RawTrackerHit)strip.rawhits().get(0)).getDetectorElement()) ? "top" : "bottom";
             System.out.printf("%s: Strip layer %4d in %s  at origin %s\n",this.getClass().getSimpleName(), strip.layer(), side, strip.origin().toString());
-            System.out.printf("Residuals (u,v,w) : %5.5e %5.5e %5.5e\n", _resid[0], _resid[1], _resid[2]);
-            System.out.printf("Errors (u,v,w)    : %5.5e %5.5e %5.5e\n", _error[0], _error[1], _error[2]);
+            System.out.printf("%s: Residuals (u,v,w) : %5.5e %5.5e %5.5e\n",this.getClass().getSimpleName(), _resid[0], _resid[1], _resid[2]);
+            System.out.printf("%s: Errors (u,v,w)    : %5.5e %5.5e %5.5e\n",this.getClass().getSimpleName(), _error[0], _error[1], _error[2]);
             String[] q = {"d0", "z0", "slope", "phi0", "R"};
-            System.out.println("track parameter derivatives");
+            System.out.printf("%s: track parameter derivatives:\n",this.getClass().getSimpleName());
             for (int i = 0; i < _nTrackParameters; i++) {
-                System.out.printf("%s     %5.5e %5.5e %5.5e\n", q[i], _dfdq.e(0, i), _dfdq.e(1, i), _dfdq.e(2, i));
+                System.out.printf("%s: %s     %5.5e %5.5e %5.5e\n",this.getClass().getSimpleName(), q[i], _dfdq.e(0, i), _dfdq.e(1, i), _dfdq.e(2, i));
             }
             //String[] p = {"u-displacement"};
-            System.out.println("global parameter derivatives");
+            System.out.printf("%s: Global parameter derivatives\n",this.getClass().getSimpleName());
             for (GlobalParameter gl : _glp) {
-                System.out.printf("%s  %5.5e %5.5e %5.5e   %5d  %10s\n", "", gl.dfdp(0), gl.dfdp(1), gl.dfdp(2), gl.getLabel(),gl.getName());
+                System.out.printf("%s: %s  %5.5e %5.5e %5.5e   %5d  %10s\n",this.getClass().getSimpleName(), "", gl.dfdp(0), gl.dfdp(1), gl.dfdp(2), gl.getLabel(),gl.getName());
                 //System.out.printf("%s  %5.5e %5.5e %5.5e   %5d\n", p[j], _dfdp.e(0, j), _dfdp.e(1, j), _dfdp.e(2, j), _globalLabel[j]);
             }
-            System.out.println(this.getClass().getSimpleName() + ": --- END PrintStripResiduals ---");
+            System.out.printf("%s: --- Alignment Results for this Strip ---\n",this.getClass().getSimpleName());
         }
         pWriter.printf("%d\n", strip.layer());
         // Loop over the three directions u,v,w and print residuals and derivatives
CVSspam 0.2.12


Use REPLY-ALL to reply to list

To unsubscribe from the LCD-CVS list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=LCD-CVS&A=1