Snowmass CD version of
ZvTopVertexer
-- Usage manual
--
Introductory comments
This is supposed to become the usage manual.
It will grow with time and user feedback. Currently, some important
remarks on the use, information on the setup
and user tunable parameters for different package components and a
simple
pieces of example code is supplied.
ZvTopVertexer has so far been run on fast
Monte Carlo tracks from Monte Carlo truth level information in stdhep format.
The events have been generated with Pythia, Pandora/Pythia or the Diagnostic
Generator (from the Java hep package).
Feel free to contact me
in case of problems or for feedback.
Important remarks
Please keep the following in mind:
-
ZvTopVertexer
needs the parametrization of the
tracks with five helical track parameters as defined by the Track
interface in the lcd environment.
-
In addition it needs the coveriance matrices
for those tracks parametrized accordingly as defined by the Track
interface in the lcd environment.
-
ZvTopVertexer
operates on a list of tracks, which are assumed to form a jet. The
default is to only look for vertices in the forward direction of the jet
as seen from the interaction point. The user has to make sure, that
the sets of tracks form (approximately) a jet. The default forward
direction is given by the sum of the momentum vectors of the tracks in
the list passed to ZvTopVertexer.
Optionally, a vector can be given for the forward direction.
-
ZvTopVertexer
needs two helpers: a swimmer as specified by the Swimmer
interface and a track vertex fitter as specified by the VtxFitter
interface. One concrete implementation is supplied for each of them,
called ZvSwimmer and ZvFitter,
respectively.
Both contain tunable parameters.
-
There needs to be an object containing general
parameters for the main ZvTopVertexer,
instanciated from the ZvTopParam class.
-
The resulting vertices are returned in a list
of ZvVertex objects. There is
a ZvTopStatus status object, which
can be inspected after the fit.
Package import statement
The import statement for the ZvTopVertexer
package has to be set to:
import hep.lcd.vertexing.zvtop.*;
Initialization
There are three objects which need to be initialized:
the swimmer, the vertex fitter and the general parameter object for ZvTopVertexer.
(For details on parameters of the various
methods please refer to the API
documentation for ZvTopVertexer.)
These three objects and the (constant)
beamspot definition are best declared in the global scope of your Processor
class:
// general parameter object
for ZvTopVertexer
private ZvTopParam vtxParam
= new ZvTopParam();
// swimmer
private ZvSwimmer swimmer
= new ZvSwimmer();
// track vertex fitter
private ZvFitter
fitter = new ZvFitter();
// beamspot definition
private ZvBeamSpot beamSpot =
new ZvBeamSpot(new double[]{0.,0.,0.});
The initialization is best done in the
start()
method of your Processor:
-
For the ZvTopVertexer parameters (ZvTopParam
object):
//
// general parameters for ZvTopVertexer
//
// of general interest:
vtxParam.setJetMomentum(new double[]{0.,0.,0.});
// use p_track vector sum instead
vtxParam.setIPWeight(1.0);
// weight for IP in vertex significance: 1.0 full, 0.0 no weight
vtxParam.setBackwardCutoff(-0.01);
// default: -0.01 cm // don't allow vertices behind
vtxParam.setForwardCutoff(10.);
// default: 10.0 cm // don't allow vertices beyond
vtxParam.setTubeScaleFac(1.0);
// default: 0.0 = const; 1.0 = parabolic approximation
// parameters for general tuning:
vtxParam.setCang(0.);
// no weighting with angle(momentum_track, momentum_jet)
vtxParam.setVSigMinFrac(0.1);
// min vertex significance at spatial point creation time
vtxParam.setResolMin(0.001);
// default: 10 um; minimum distance required for resolved vertices
vtxParam.setResolNSteps(16);
// default: 16; number of steps used to check valley between vertices
vtxParam.setChi2TrackCut(10.);
// maximum chi2 a single track may contribute to a vertex
// specialties:
vtxParam.setUseJetAxis(false);
// don't use jet axis for trdi and lodi calculation
vtxParam.setMode(0);
// normal mode, no high impact parameter/lepton track plane
vtxParam.setPlaneWidth(1.0);
// not used, if not in high impact/lepton track mode
-
For the swimmer:
//
// setup ZvSwimmer
//
// general
double[] beamDir = {0.,0.,1.};
// beam direction (positive z-axis)
swimmer.setBeamDirection(beamDir);
// fiducial volume
swimmer.setMaxSinL(1.0);
// max sin(dip_angle)
swimmer.setVolume(10.0,10.0);
// fiducial volume (r,z for cylinder in cm)
// tuning specialties (speed vs accuracy)
swimmer.setStepMin(0.000001);
// minimum step size for convergence
swimmer.setStepSize(0.01);
// initial step size
swimmer.setMaxTry(20);
// max tries for convergence
-
For the vertex fitter:
//
// setup ZvFitter
//
// general
fitter.setSwimmer(swimmer);
// vertex fitter needs swimmer
fitter.takeNewTrackList(true);
// output re-swum track parameters with vertex tracklist
// tuning
fitter.setDistMin(0.1);
// min distance for re-swimming tracks (in cm)
fitter.setVtxResMax(0.001);
// max vertex resolution for convergence
// special tuning
fitter.setMaxTry(5);
// max number of fit tries
fitter.setMaxTryInner(2);
// max number of tries for inner fit loop
Event processing
The processing of events in the process()
method of your Processor should at least contain:
-
Definition of a ZvTrackList with the tracks
to be considered:
//
ZvTrackList forwardList = new ZvTrackList(new
Filter(event.getTrackList().getTracks(),
new ZvtThrustPredicate(es.thrustAxis(),+1)));
-
Creation of a ZvTopVertexer object:
//
// setup vertexer
ZvTopVertexer vertexer = new ZvTopVertexer(vtxParam);
vertexer.setSwimmer(swimmer);
vertexer.setVtxFitter(fitter);
vertexer.setBeamSpot(beamSpot);
-
Run of ZvTopVertexer
on this tracklist:
//
vertexer.setTrackList(forwardList);
ZvTopStatus fwdVtxStatus
= vertexer.findVertices();
-
Check of the vertex finding status with
the
ZvTopStatus object:
//
out.println("Forward: "+fwdVtxStatus.toString());
-
Retrieving the list of ZvVertex
objects:
//
ZvVertexList forwardVtxList = vertexer.finalVertices();
// could be a null pointer or empty
if ( fwdVtxStatus.success() )
out.println(" #vertices
= "+forwardVtxList.getNVertices());
Complete example
The following example code for jobs running
ZvTopVertexer in the JAS/lcd framework is available:
-
ZvtExample1--
runs ZvTopVertexer on e+e--> qqbar events and produces flavor dependent
vertex multiplicity histograms.
Contact
Please feel free to
contact me:
Wolfgang
Walkowiak (walkowia@scipp.ucsc.edu)
Last update on 06/22/01 by Wolfgang
Walkowiak