Print

Print


Commit in lcsim/sandbox/JanStrube on MAIN
FitterTestDriver_ReconTrack.java+84added 1.1
JM: Moving file with compile error to sandbox.

lcsim/sandbox/JanStrube
FitterTestDriver_ReconTrack.java added at 1.1
diff -N FitterTestDriver_ReconTrack.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ FitterTestDriver_ReconTrack.java	14 Feb 2007 20:28:13 -0000	1.1
@@ -0,0 +1,84 @@
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
+
+import org.lcsim.contrib.JanStrube.tracking.LCIOTrackParameters;
+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.CartesianVector;
+import org.lcsim.spacegeom.SpacePoint;
+import org.lcsim.spacegeom.SpaceVector;
+import org.lcsim.util.Driver;
+import org.lcsim.util.aida.AIDA;
+
+import Jama.Matrix;
+
+import static java.lang.Math.abs;
+import static java.lang.Math.sqrt;
+
+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);
+        MCParticle mother = null;
+        // K0: 310, J/Psi: 443
+        for (MCParticle p : event.getMCParticles()) {
+            if (abs(p.getPDGID()) == 443) {
+                mother = p;
+            }
+        }
+        List<org.lcsim.contrib.JanStrube.tracking.Track> tracks = new ArrayList<org.lcsim.contrib.JanStrube.tracking.Track>();
+        for (Track t : event.getTracks()) {
+            ReconTrack rt = (ReconTrack) t;
+            MCParticle part = (MCParticle) rt.getMCParticle();
+
+            SpacePoint org = new CartesianPoint(t.getReferencePoint());
+            SpaceVector mom = new CartesianVector(t.getMomentum());
+            Matrix errors = new Matrix(t.getErrorMatrix());
+            LCIOTrackParameters parameters = LCIOTrackParameters.SpaceMomentum2Parameters(mom, org, referencePoint, t.getCharge(), 5);
+            tracks.add(new NewTrack(referencePoint, parameters, errors, t.getCharge()));
+        }
+        SpacePoint startingPoint = new SpacePoint();
+        Fitter fitter2 = new Fitter(event);
+        fitter2.setDelta_chi2(0);
+        Vertex newVtx2 = fitter2.fit(tracks, startingPoint);
+        double sigmaX = sqrt(newVtx2.getSpatialCovarianceMatrix().get(0, 0));
+        double sigmaY = sqrt(newVtx2.getSpatialCovarianceMatrix().get(1, 1));
+        double sigmaZ = sqrt(newVtx2.getSpatialCovarianceMatrix().get(2, 2));
+        double deltaX = newVtx2.location().x() - mother.getOrigin().x();
+        double deltaY = newVtx2.location().y() - mother.getOrigin().y();
+        double deltaZ = newVtx2.location().z() - mother.getOrigin().z();
+        aida.cloud1D("decayLength").fill(new SpacePoint(mother.getEndPoint()).magnitude());
+        aida.cloud1D("smeared_deltaX").fill(deltaX);
+        aida.cloud1D("smeared_deltaY").fill(deltaY);
+        aida.cloud1D("smeared_deltaZ").fill(deltaZ);
+        aida.cloud1D("sigma_x").fill(sigmaX);
+        aida.cloud1D("sigma_y").fill(sigmaY);
+        aida.cloud1D("sigma_z").fill(sigmaZ);
+        aida.cloud1D("pull_x").fill(deltaX/sigmaX);
+        aida.cloud1D("pull_y").fill(deltaY/sigmaY);
+        aida.cloud1D("pull_z").fill(deltaZ/sigmaZ);
+    }
+}
CVSspam 0.2.8