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

Compare with Current View Page History

« Previous Version 9 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
<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>

How to get 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