Author: [log in to unmask] Date: Fri Aug 28 18:33:16 2015 New Revision: 3458 Log: change stuff, fix sign error Modified: java/trunk/tracking/src/main/java/org/hps/recon/tracking/gbl/GBLOutput.java java/trunk/tracking/src/main/java/org/hps/recon/tracking/gbl/MakeGblTracks.java Modified: java/trunk/tracking/src/main/java/org/hps/recon/tracking/gbl/GBLOutput.java ============================================================================= --- java/trunk/tracking/src/main/java/org/hps/recon/tracking/gbl/GBLOutput.java (original) +++ java/trunk/tracking/src/main/java/org/hps/recon/tracking/gbl/GBLOutput.java Fri Aug 28 18:33:16 2015 @@ -831,7 +831,7 @@ private BasicMatrix getPerParVector(HelicalTrackFit htf) { BasicMatrix perPar = new BasicMatrix(1, 5); if (htf != null) { - double kappa = -1.0 * Math.signum(htf.R()) * Constants.fieldConversion * this._B.z() / htf.pT(Math.abs(_B.z())); + double kappa = -1.0 * Math.signum(_B.z()) / htf.R(); double theta = Math.PI / 2.0 - Math.atan(htf.slope()); perPar.setElement(0, 0, kappa); perPar.setElement(0, 1, theta); @@ -929,11 +929,9 @@ double yT = vecCl.y(); //double zT = vecCl.z(); - Hep3Vector T = HelixUtils.Direction(htf, 0.); - Hep3Vector p = VecOp.mult(htf.p(Math.abs(_B.z())), T); double lambda = Math.atan(htf.slope()); double q = Math.signum(htf.R()); - double qOverP = q / p.magnitude(); + double qOverP = q / htf.p(Math.abs(_B.z())); double phi = htf.phi0(); _params.setElement(0, 0, qOverP); @@ -941,7 +939,6 @@ _params.setElement(0, 2, phi); _params.setElement(0, 3, xT); _params.setElement(0, 4, yT); - } public BasicMatrix getParams() { Modified: java/trunk/tracking/src/main/java/org/hps/recon/tracking/gbl/MakeGblTracks.java ============================================================================= --- java/trunk/tracking/src/main/java/org/hps/recon/tracking/gbl/MakeGblTracks.java (original) +++ java/trunk/tracking/src/main/java/org/hps/recon/tracking/gbl/MakeGblTracks.java Fri Aug 28 18:33:16 2015 @@ -41,7 +41,7 @@ * Creates a new instance of MakeTracks. */ public MakeGblTracks() { - //logger = Logger.getLogger(getClass().getName()); + //logger = Logger.getLogger(getClass().getName()); //logger.setUseParentHandlers(false); //Handler handler = new StreamHandler(System.out, new SimpleFormatter()); //logger.addHandler(handler); @@ -149,13 +149,15 @@ private double[] getGblCorrectedHelixParameters(HelicalTrackFit helix, FittedGblTrajectory traj, double bfield) { // get seed helix parameters - double d0 = helix.dca(); + double d0 = -1.0 * helix.dca(); // correct for different sign convention of d0 in curvilinear frame double z0 = helix.z0(); double phi0 = helix.phi0(); double lambda = Math.atan(helix.slope()); - double p = helix.p(bfield); - double q = traj.get_seed().getCharge(); + double p = helix.p(Math.abs(bfield)); + double q = Math.signum(helix.R()); double qOverP = q / p; + + logger.info(String.format("original helix: d0=%f, z0=%f, omega=%f, tanlambda=%f, phi0=%f, p=%f", helix.dca(), helix.z0(), helix.curvature(), helix.slope(), helix.phi0(), helix.p(Math.abs(bfield)))); // get corrections from GBL fit Vector locPar = new Vector(5); @@ -175,8 +177,8 @@ Hep3Vector corrPer = VecOp.mult(clToPerPrj, new BasicHep3Vector(xTCorr, yTCorr, 0.0)); //d0 - double d0_corr = -1.0 * corrPer.y(); // correct for different sign convention of d0 in curvilinear frame - double d0_gbl = d0 + d0_corr; + double d0_corr = corrPer.y(); + double dca_gbl = -1.0 * (d0 + d0_corr); //z0 double z0_corr = corrPer.z(); @@ -194,12 +196,14 @@ double pt_gbl = Math.abs(1.0 / qOverP_gbl) * Math.sin((Math.PI / 2.0 - lambda_gbl)); double C_gbl = Constants.fieldConversion * bfield / pt_gbl; //make sure sign is not changed - C_gbl = Math.signum(helix.curvature()) * Math.abs(C_gbl); - - logger.info("qOverP=" + qOverP + " qOverPCorr=" + qOverPCorr + " qOverP_gbl=" + qOverP_gbl + " ==> pGbl=" + 1.0 / qOverP_gbl); + C_gbl = Math.signum(qOverP_gbl) * Math.abs(C_gbl); + + logger.info("qOverP=" + qOverP + " qOverPCorr=" + qOverPCorr + " qOverP_gbl=" + qOverP_gbl + " ==> pGbl=" + 1.0 / qOverP_gbl + " C_gbl=" + C_gbl); + + logger.info(String.format("corrected helix: d0=%f, z0=%f, omega=%f, tanlambda=%f, phi0=%f, p=%f", dca_gbl, z0_gbl, C_gbl, slope_gbl, phi0_gbl, Math.abs(1 / qOverP_gbl))); double parameters_gbl[] = new double[5]; - parameters_gbl[HelicalTrackFit.dcaIndex] = d0_gbl; + parameters_gbl[HelicalTrackFit.dcaIndex] = dca_gbl; parameters_gbl[HelicalTrackFit.z0Index] = z0_gbl; parameters_gbl[HelicalTrackFit.curvatureIndex] = C_gbl; parameters_gbl[HelicalTrackFit.slopeIndex] = slope_gbl;