lcsim/src/org/lcsim/contrib/JanStrube
diff -N ZvTopDriver.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ ZvTopDriver.java 25 Oct 2005 17:53:38 -0000 1.1
@@ -0,0 +1,68 @@
+import hep.physics.jet.AbstractJetFinder;
+import hep.physics.jet.FixNumberOfJetsFinder;
+import hep.physics.jet.JadeEJetFinder;
+import hep.physics.vec.BasicHep3Vector;
+import hep.physics.vec.Hep3Vector;
+
+import java.util.ArrayList;
+import java.util.Formatter;
+import java.util.List;
+
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.MCParticle;
+import org.lcsim.event.Track;
+import org.lcsim.geometry.Detector;
+import org.lcsim.mc.fast.MCFast;
+import org.lcsim.recon.vertexing.zvtop4.ZvFitter;
+import org.lcsim.recon.vertexing.zvtop4.ZvTop;
+import org.lcsim.recon.vertexing.zvtop4.ZvTrack;
+import org.lcsim.recon.vertexing.zvtop4.ZvVertex;
+import org.lcsim.util.Driver;
+import org.lcsim.util.aida.AIDA;
+import org.lcsim.util.swim.HelixSwimmer;
+
+public class ZvTopDriver extends Driver {
+ private HelixSwimmer swimmer;
+ private ZvFitter fitter;
+ private ZvTop topper;
+ AbstractJetFinder jetFind;
+ List<ZvVertex> vertices;
+ public ZvTopDriver() {
+ swimmer = new HelixSwimmer(5.0);
+ jetFind = new JadeEJetFinder(0.32);
+ add(new MCFast());
+ }
+
+
+ public void process(EventHeader event) {
+ super.process(event);
+ // Get the list of MCParticles from the event
+ List<Track> tracks = event.getTracks();
+ // Histogram the number of particles per event
+ // Loop over the particles
+ Detector thisDetector = event.getDetector();
+ fitter = new ZvFitter(thisDetector);
+ FixNumberOfJetsFinder jetFind = new FixNumberOfJetsFinder(1);
+ List<Hep3Vector> eventVectorList = new ArrayList<Hep3Vector>();
+ for (Track iTrack : tracks) {
+ eventVectorList.add(new BasicHep3Vector(iTrack.getMomentum()));
+ }
+ jetFind.setEvent(eventVectorList);
+ topper = new ZvTop(jetFind.jet(0).v3(), fitter);
+ // should be proportional to jet momentum
+ topper.setAngularWeight(2);
+ topper.setIpWeight(1);
+ topper.setMaxDistFromIP(25);
+ vertices = topper.findVertices(tracks);
+ System.out.printf("found %d vertices\n", vertices.size());
+ for (ZvVertex iVtx : vertices) {
+ System.out.println("Vertex at pos: " + iVtx.getPosition());
+ }
+ List<ZvTrack> zvTracks = new ArrayList<ZvTrack>();
+ for (Track t : tracks) {
+ zvTracks.add(new ZvTrack(t));
+ }
+ event.put("ZvTracks", zvTracks, ZvTrack.class, 0);
+ event.put("VtxList", vertices, ZvVertex.class, 0);
+ }
+}