LCFIPlus
LCFIPlus is a reconstruction software which performs vertex finding, jet finding, and flavor tagging in one package. It is implemented as a Marlin processor configurable with the XML steering file.
Quick Links
JIRA issue tracker: 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:
svn co
https://svnsrv.desy.de/public/marlinreco/LCFIPlus/trunk
LCFIPlus
Discussions about the package happen on the mailing list lcfi-vertex AT desy DOT de
Algorithms
LCFIPlus contains the following algorithms:
- PrimaryVertexFinder - searches for the primary vertex
- BuildUpVertex - searches secondary vertices
- JetClustering - jet clustering using vertex information
- 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
<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 |
trk2pt |
transverse momentum of track with second highest d0 significance |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Using training results
Example of getting flavor tagging information inside a Marlin processor:
// get jet collection LCCollection* colJet = evt->getCollection("VertexJets"); // get PIDHandler associated with the jet collection PIDHandler pidh( colJet ); // get algorithm ID associated with LCFIPlus int algo = pidh.getAlgorithmID( "lcfiplus" ); // get index number for flavor tagging int ibtag = pidh.getParameterIndex(algo, "BTag"); int ictag = pidh.getParameterIndex(algo, "CTag"); // loop over jets to extract flavor tagging information for(int i=0; i < colJet->getNumberOfElements(); i++) { ReconstructedParticle *part = dynamic_cast<ReconstructedParticle*>( colJet->getElementAt( i ) ); const ParticleID &pid = pidh.getParticleID(part, algo); cout << "btag = " << pid.getParameters()[ibtag] << endl; cout << "ctag = " << pid.getParameters()[ictag] << endl; }