lcsim/src/org/lcsim/contrib/JanStrube/standalone
diff -N FitterTestDriver_ReconTrack.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ FitterTestDriver_ReconTrack.java 27 Aug 2006 22:41:11 -0000 1.1
@@ -0,0 +1,67 @@
+import java.util.Random;
+
+import org.lcsim.contrib.JanStrube.tracking.EMap;
+import org.lcsim.contrib.JanStrube.tracking.NewFastMCTrackFactory;
+import org.lcsim.contrib.JanStrube.tracking.NewTrack;
+import org.lcsim.contrib.JanStrube.vtxFitter.Fitter;
+import org.lcsim.contrib.JanStrube.vtxFitter.Vertex;
+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.spacegeom.CartesianPoint;
+import org.lcsim.spacegeom.SpacePoint;
+import org.lcsim.util.Driver;
+import org.lcsim.util.aida.AIDA;
+
+import Jama.Matrix;
+
+import static java.lang.Math.abs;
+
+class FitterTestDriver_ReconTrack extends Driver {
+ private AIDA aida = AIDA.defaultInstance();
+ private SpacePoint referencePoint;
+ private SpacePoint origin;
+ private Random rand;
+ private int count=0;
+
+ public FitterTestDriver_ReconTrack() {
+ referencePoint = new CartesianPoint(0, 0, 0);
+ origin = new CartesianPoint(0, 0, 0);
+ rand = new Random(123);
+ }
+
+ public void process(EventHeader event) {
+ count++;
+ if (count % 500 == 0)
+ System.out.printf("Processing event %d\n", count);
+ // beamconstraint when smearing the tracks ?
+ NewFastMCTrackFactory tf = new NewFastMCTrackFactory(event, false);
+ Vertex smearedVertex = new Vertex();
+ smearedVertex.setOrigin(origin);
+ MCParticle mother = null;
+ // K0: 310, J/Psi: 443
+ for (MCParticle p : event.getMCParticles()) {
+ if (abs(p.getPDGID()) == 443) {
+ mother = p;
+ }
+ }
+ for (Track t : event.getTracks()) {
+ ReconTrack rt = (ReconTrack) t;
+ MCParticle part = (MCParticle) rt.getMCParticle();
+
+ SpacePoint org = new CartesianPoint(t.getReferencePoint());
+ SpacePoint mom = new CartesianPoint(t.getMomentum());
+ Matrix errors = new Matrix(t.getErrorMatrix());
+ EMap parameters = NewTrack.SpaceMomentum2Parameters(org, mom, referencePoint, t.getCharge(), 5);
+ smearedVertex.addTrack(new NewTrack(referencePoint, parameters, errors, t.getCharge()), 0);
+ }
+ Fitter fitter2 = new Fitter(smearedVertex, 5.0);
+ Vertex newVtx2 = fitter2.fit();
+ aida.cloud1D("decayLength").fill(new SpacePoint(mother.getEndPoint()).magnitude());
+ aida.cloud1D("smeared_deltaX").fill(newVtx2.origin().x() - mother.getOrigin().x());
+ aida.cloud1D("smeared_deltaY").fill(newVtx2.origin().y() - mother.getOrigin().y());
+ aida.cloud1D("smeared_deltaZ").fill(newVtx2.origin().z() - mother.getOrigin().z());
+ }
+}
+