LCFIPlus
LCFIPlus is a reconstruction software which performs part of iLCSoft - software packages developed for the International Linear Collider (ILC). It is designed to perform vertex finding, jet finding, and flavor tagging in one package. It is implemented as a Marlin processor configurable with flexible configuration via the XML steering file.
Reporting bugs
Please use the JIRA issue tracker to report bugs. A confluence account will be needed for this.
https://jira.slac.stanford.edu/browse/LCFI
How to obtain LCFIPlus
The LCFIPlus package is included in the ILCSoft release.
The latest version can be downloaded from the DESY SVN repository:
Code Block |
---|
svn co https://svnsrv.desy.de/public/marlinreco/LCFIPlus/trunk LCFIPlus |
June 8, 2012: The latest tag is available:
Code Block |
---|
https://svnsrv.desy.de/public/marlinreco/LCFIPlus/branches/v00-05-pre-02
|
Reporting issues
The recommended way to report bugs and issues is through the JIRA issue tracker. A confluence account will be needed for this.
https://jira.slac.stanford.edu/browse/LCFI
Additionally, the main developers can be contacted:
Tomohiko Tanabe (tomohiko AT icepp.s.u-tokyo.ac DOT jp), Taikan Suehara (suehara AT icepp.s.u-tokyo.ac DOT jp)
Jan Strube (jan.strube AT cern DOT ch) is the contact person for SiD and CLIC. LCFIPlus
Discussions about the package happen on the mailing list list lcfi-vertex AT desy DOT de
...
- PrimaryVertexFinder - searches for the primary vertex
- BuildUpVertex - searches secondary vertices
- JetClustering - jet clustering using vertex information
- JetVertexRefiner - performs refitting and re-association of vertex tracks
- FlavorTag - prepares of flavor tagging input variables
- MakeNtuple - produces ROOT files containing ntuples for training
- TrainMVA - performs TMVA training
- ReadMVA - applies result of training
Example of PrimaryVertexFinder + BuildUpVertex
Code Block |
---|
<processor name="MyLcfiplusProcessor" type="LcfiplusProcessor">
<!-- run primary and secondary vertex finders -->
<parameter name="Algorithms" type="stringVec"> PrimaryVertexFinder BuildUpVertex </parameter>
<!-- specify input collection names -->
<parameter name="PFOCollection" type="string" value="PandoraPFOs" />
<parameter name="PrimaryVertexCollectionName" type="string" value="PrimaryVertex" />
<parameter name="BuildUpVertexCollectionName" type="string" value="BuildUpVertex" />
<!-- parameters for primary vertex finder -->
<parameter name="PrimaryVertexFinder.TrackMaxD0" type="double" value="20." />
<parameter name="PrimaryVertexFinder.TrackMaxZ0" type="double" value="20." />
<parameter name="PrimaryVertexFinder.TrackMaxInnermostHitRadius" type="double" value="20." />
<parameter name="PrimaryVertexFinder.TrackMinVtxFtdHits" type="int" value="5" />
<parameter name="PrimaryVertexFinder.Chi2Threshold" type="double" value="25." />
<!-- parameters for secondary vertex finder -->
<parameter name="BuildUpVertex.TrackMaxD0" type="double" value="10." />
<parameter name="BuildUpVertex.TrackMaxZ0" type="double" value="20." />
<parameter name="BuildUpVertex.TrackMinPt" type="double" value="0.1" />
<parameter name="BuildUpVertex.TrackMaxD0Err" type="double" value="0.1" />
<parameter name="BuildUpVertex.TrackMaxZ0Err" type="double" value="0.1" />
<parameter name="BuildUpVertex.TrackMinTpcHits" type="int" value="20" />
<parameter name="BuildUpVertex.TrackMinFtdHits" type="int" value="3" />
<parameter name="BuildUpVertex.TrackMinVxdHits" type="int" value="3" />
<parameter name="BuildUpVertex.TrackMinVxdFtdHits" type="int" value="0" />
<parameter name="BuildUpVertex.PrimaryChi2Threshold" type="double" value="25." />
<parameter name="BuildUpVertex.SecondaryChi2Threshold" type="double" value="9." />
<parameter name="BuildUpVertex.MassThreshold" type="double" value="10." />
<parameter name="BuildUpVertex.MinDistFromIP" type="double" value="0.3" />
<parameter name="BuildUpVertex.MaxChi2ForDistOrder" type="double" value="1.0" />
<parameter name="BuildUpVertex.AssocIPTracks" type="int" value="1" />
<parameter name="BuildUpVertex.AssocIPTracksMinDist" type="double" value="0." />
<parameter name="BuildUpVertex.AssocIPTracksChi2RatioSecToPri" type="double" value="2.0" />
</processor> <processor name="MyLcfiplusProcessor" type="LcfiplusProcessor">
</processor>
|
Input variables for flavor tagging
Variables are computed for each jet.
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 |
jprobz | joint probability in the z projection |
vtxlen1 | decay length of the first vertex in the jet (zero if no vertex is found) |
vtxlen2 | decay length of the second vertex in the jet (zero if number of vertex is less than two) |
vtxlen12 | distance between the first and second vertex (zero if number of vertex is less than two) |
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 |
vtxdirdot1 | the cosine of the angle between the momentum (computed as a sum of track four momenta) and the displacement of the first vertex |
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) |
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) |
|
|
|
|
|
|
|
|
|
|
How to add a new variable
Each variable is defined inside 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.
Code Block |
---|
// 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(); }
};
|
Using training results
Example of getting flavor tagging information inside a Marlin processor:
...