You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 10 Next »

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.

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;
}
  • No labels