How to add a new variable

Adding a new variable must be done in code.  The LCFIPlus package should be downloaded (e.g. checked out from SVN) and compiled, with appropriate environmental variables defined for Marlin.

Each variable is defined inside src/FlavorTag.cc as a class inheriting from FTAlgo. The name of the variable is defined by providing a string argument to the constructor of the parent class. The variable class should implement the process() method which performs the variable computation. One can access the jet data through the member "_jet" and the event data through "_event".  The result should be stored in the member variable "_result". One can optionally implement the processEvent() method which is called once per every event. The class should be instantiated and added to the FTManager object inside the FlavorTag::init() method to make the variable known to LCFIPlus.

An example implementation of a variable is shown below.

// computes the number of vertices in a jet
class FtNvtx : public FTAlgo {class FtNvtx : public FTAlgo {
  public:
    FtNvtx() : FTAlgo("nvtx") {}
    void process() { _result = _jet->getVertices().size(); }
};

Variables defined in this way can be used as a flavor tagging variable in the XML configuration.  The name of the variable identified in XML is the same as the one given as a string in the constructor of the C++ code.

List of input variables

All variables are computed for each jet. A brief explanation is given below for the variables which are defined by LCFIPlus.

name

description

trk1d0sig

d0 significance of track with highest d0 significance

trk2d0sig

d0 significance of track with second highest d0 significance

trk1z0sig

z0 significance of track with highest d0 significance (ordering by d0, not z0)

trk2z0sig

z0 significance of track with second highest d0 significance (ordering by d0, not z0)

trk1pt

transverse momentum of track with highest d0 significance

trk1pt_jete

trk1pt divided by the jet energy

trk2pt

transverse momentum of track with second highest d0 significance

trk2pt_jete

trk2pt divided by the jet energy

jprobr

joint probability in the r-phi plane using all tracks

jprobr5sigma

joint probability in the r-phi plane using all tracks having impact parameter significance exceeding 5 sigma

jprobz

joint probability in the z projection using all tracks

jprobz5sigma

joint probability in the z projection using all tracks having impact parameter significance exceeding 5 sigma

d0bprob

product of b-quark probabilities of d0 values for all tracks, using b/c/q d0 distributions

d0cprob

product of c-quark probabilities of d0 values for all tracks, using b/c/q d0 distributions

d0qprob

product of q-quark probabilities of d0 values for all tracks, using b/c/q d0 distributions

z0bprob

product of b-quark probabilities of z0 values for all tracks, using b/c/q z0 distributions

z0cprob

product of c-quark probabilities of z0 values for all tracks, using b/c/q z0 distributions

z0qprob

product of q-quark probabilities of z0 values for all tracks, using b/c/q z0 distributions

nmuon

number of identified muons

nelectron

number of identified electrons

trkmass

mass of all tracks exceeding 5 sigma significance in d0/z0 values

1vtxprob

vertex probability with all tracks associated in vertices combined

vtxlen1

decay length of the first vertex in the jet (zero if no vertex is found)

vtxlen1_jete

vtxlen1 divided by the jet energy

vtxlen2

decay length of the second vertex in the jet (zero if number of vertex is less than two)

vtxlen2_jete

vtxlen2 divided by the jet energy

vtxlen12

distance between the first and second vertex (zero if number of vertex is less than two)

vtxlen12_jete

vtxlen12 divided by the jet energy

vtxsig1

decay length significance of the first vertex in the jet (zero if no vertex is found)

vtxsig1_jete

vtxsig1 divided by the jet energy

vtxsig2

decay length significance of the second vertex in the jet (zero if number of vertex is less than two)

vtxsig2_jete

vtxsig2 divided by the jet energy

vtxsig12

vtxlen12 divided by its error as computed from the sum of the covariance matrix of the first and second vertices, projected along the line connecting the two vertices

vtxsig12_jete

vtxsig12 divided by the jet energy

vtxdirang1

the angle between the momentum (computed as a vector sum of track momenta) and the displacement of the first vertex

vtxdirang1_jete

vtxdirang1 multiplied by the jet energy

vtxdirang2

the angle between the momentum (computed as a vector sum of track momenta) and the displacement of the second vertex

vtxdirang2_jete

vtxdirang2 multiplied by the jet energy

vtxmult1

number of tracks included in the first vertex (zero if no vertex is found)

vtxmult2

number of tracks included in the second vertex (zero if number of vertex is less than two)

vtxmult

number of tracks which are used to form secondary vertices (summed for all vertices)

vtxmom1

magnitude of the vector sum of the momenta of all tracks combined into the first vertex

vtxmom1_jete

vtxmom1 divided by the jet energy

vtxmom2

magnitude of the vector sum of the momenta of all tracks combined into the second vertex

vtxmom2_jete

vtxmom2 divided by the jet energy

vtxmass1

mass of the first vertex computed from the sum of track four-momenta

vtxmass2

mass of the second vertex computed from the sum of track four-momenta

vtxmass

vertex mass as computed from the sum of four momenta of all tracks forming secondary vertices

vtxmasspc

mass of the vertex with minimum pt correction allowed by the error matrices of the primary and secondary vertices

vtxprob

vertex probability; for multiple vertices, the probability P is computed as 1-P = (1-P_1)(1-P_2)...*(1-P_N)

Example plots of input variables

The plots below are made from 6 jet samples at 500 GeV using ILD detector simulation. They were made in the context of the DBD studies in 2012.

The color scheme is as follows: blue = b jets, green = c jets, red = uds jets.

  • No labels