Print

Print


Commit in lcsim/src/org/lcsim/contrib/JanStrube/standalone on MAIN
FitterTestDriver_ReconTrack.java+67added 1.1
adding Test Driver for the fitter. To be extended

lcsim/src/org/lcsim/contrib/JanStrube/standalone
FitterTestDriver_ReconTrack.java added at 1.1
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());
+    }
+}
+
CVSspam 0.2.8