lcsim/src/org/lcsim/contrib/JanStrube
diff -u -r1.2 -r1.3
--- VertexFitterDriver.java 27 Mar 2006 06:38:08 -0000 1.2
+++ VertexFitterDriver.java 28 Mar 2006 08:00:17 -0000 1.3
@@ -3,7 +3,7 @@
*
* Created on March 25, 2006, 3:15 PM
*
- *@version $Id: VertexFitterDriver.java,v 1.2 2006/03/27 06:38:08 jstrube Exp $
+ *@version $Id: VertexFitterDriver.java,v 1.3 2006/03/28 08:00:17 jstrube Exp $
*/
import hep.aida.IAnalysisFactory;
@@ -13,6 +13,7 @@
import org.lcsim.event.EventHeader;
import org.lcsim.event.MCParticle;
import org.lcsim.event.Track;
+import org.lcsim.mc.fast.tracking.ReconTrack;
import org.lcsim.recon.vertexing.zvtop4.fitter.BilloirFitter;
import org.lcsim.recon.vertexing.zvtop4.fitter.Vertex;
import org.lcsim.recon.vertexing.zvtop4.fitter.VertexFitter;
@@ -34,9 +35,20 @@
private int primaryParticle = 23; // 443;
private SpacePoint primaryVertex;
public VertexFitterDriver() {
- String[] names = new String[]{"chi2", "fittedX", "fittedY", "fittedZ", "xError", "yError", "zError", "primaryX", "primaryY", "primaryZ"};
- Class[] classes = new Class[]{Float.TYPE, Float.TYPE, Float.TYPE, Float.TYPE, Float.TYPE, Float.TYPE, Float.TYPE, Float.TYPE, Float.TYPE, Float.TYPE};
- tuple = tf.create("vertexFitterResults", "", names, classes);
+ String names = new String(
+ "float chi2; float fittedX; float fittedY; float fittedZ; float xError; float yError; float zError" +
+ "; float primaryX; float primaryY; float primaryZ" +
+ "; ITuple trackTuple={float chi2" +
+ ", float unsmeared_theta" +
+ ", float unsmeared_phi" +
+ ", float unsmeared_omega" +
+ ", float smeared_theta, float smeared_theta_error" +
+ ", float smeared_phi, float smeared phi_error" +
+ ", float smeared_omega, float smeared_omega_error" +
+ ", float fitted_theta, float fitted_theta_error" +
+ ", float fitted_phi, float fitted_phi_error" +
+ ", float fitted_omega, float fitted_omega_error}");
+ tuple = tf.create("vertexFitterResults", "properties of Vertex", names, "");
fitter = new BilloirFitter(5);
}
@@ -57,11 +69,37 @@
tuple.fill(2, (float)vertex._xyzf[1]);
tuple.fill(3, (float)vertex._xyzf[2]);
tuple.fill(4, (float)vertex._vcov[0]);
- tuple.fill(5, (float)vertex._vcov[3]);
+ tuple.fill(5, (float)vertex._vcov[2]);
tuple.fill(6, (float)vertex._vcov[5]);
tuple.fill(7, (float)primaryVertex.x());
tuple.fill(8, (float)primaryVertex.y());
tuple.fill(9, (float)primaryVertex.z());
+
+ ITuple trackTuple = tuple.getTuple(10);
+ for (int i=0; i<2; ++i) {
+ ReconTrack rTrack = (ReconTrack) tracks.get(i);
+ Track iTrack = tracks.get(i);
+ trackTuple.fill(0, (float) vertex._chi2tr[i]);
+// trackTuple.fill(1, (float) Math.atan(90-rTrack.getNotSmearedTrack().getTanL()));
+// trackTuple.fill(2, (float) rTrack.getNotSmearedTrack().getPhi0());
+// trackTuple.fill(3, (float) rTrack.getNotSmearedTrack().getOmega());
+ double tanLambda = iTrack.getTrackParameter(4);
+ double theta = Math.PI/2-Math.atan(tanLambda);
+ trackTuple.fill(4, (float) theta);
+ double thetaError = (1+tanLambda*tanLambda)*(1+tanLambda*tanLambda)*iTrack.getErrorMatrixElement(4,4);
+ trackTuple.fill(5, (float) thetaError);
+ trackTuple.fill(6, (float) iTrack.getTrackParameter(1));
+ trackTuple.fill(7, (float) iTrack.getErrorMatrixElement(1,1));
+ trackTuple.fill(8, (float) iTrack.getTrackParameter(2));
+ trackTuple.fill(9, (float) iTrack.getErrorMatrixElement(2, 2));
+ trackTuple.fill(10, (float) vertex._parf[0][i]);
+ trackTuple.fill(11, (float) vertex._tcov[0][i]);
+ trackTuple.fill(12, (float) vertex._parf[1][i]);
+ trackTuple.fill(13, (float) vertex._tcov[2][i]);
+ trackTuple.fill(14, (float) vertex._parf[2][i]);
+ trackTuple.fill(15, (float) vertex._tcov[5][i]);
+ trackTuple.addRow();
+ }
tuple.addRow();
}
}