Reference Guide to the DaVinci code

Home Computing DAQ E-mail Notes Meetings Subsystems Search

This page last edited by PK on January 30, 2007 .

 

Last update refers to DaVinci v17r8

This page is essentially a set of links to the Doxygen code documentation, with some comments and some structuring. It is not a tutorial. Please go to the Tutorial page for more material.

Sequencers  Event Model DVAlgorithm Tools Specialized Algorithms Generic Algorithms

Sequencers

It's a good idea to embed all executed algorithms in a GaudiSequencer. This allows skipping subsequent algorithms if an algorithm hasn't found anything. It also provides a nice printout for timing.

Sequencers  Event Model DVAlgorithm Tools Specialized Algorithms Generic Algorithms

Event Model

The Event model is defined in the LHCb project. The most relevant classes for DaVinci are:

LHCb::Particle

Particle of defined PID (assigned by the user). Composite Particles contain links to vertex and to daughters.

LHCb::ProtoParticle

Not-yet-a-particle. 4-momentum and PID probabilities but not a defined PID. See ParticleMaker below.

LHCb::Vertex

Vertex. Contains links to Particles used to make it.

LHCb::RecVertex

Vertex made of tracks. The PV is a RecVertex.

LHCb::MCParticle

MC true particle.

LHCb::MCVertex

MC true vertex.

LHCb::ParticleID

Particle ID.

ParticleProperty

Property of a given particle (in Gaudi).

LHCb::RecHeader

Event Header.

LHCb::SelResult Selection result. Every DVAlgorithm writes out one.

 

Sequencers  Event Model DVAlgorithm Tools Specialized Algorithms Generic Algorithms

DVAlgorithm base-class

The DVAlgorithm base-class is designed to provide all commonly used features needed in a physics analysis algorithm. It inherits from GaudiTupleAlg, GaudiHistoAlg and GaudiAlgorithm.

You get a template if you open a .h or .cpp file with emacs and answer D to the first question.

DVAlgorithm already provides instances of most commonly-used tools and methods that access it. Look at the DVAlgorithm doxygen documentation for a full list.

It is mandatory to call the setFilterPassed(bool&) method at each event (or a warning is issued). This not only controls the execution of the sequence, but also writes a SelResult object that can be read in by some algorithm later on.

The PhysDesktop tool

The PhysDesktop tool hides all the I/O operations. It allows to retrieve the input particles and vertices and to save the created particles and vertices. The most important option is InputLocations:

MyAlg.PhysDesktop.InputLocations = { "Phys/FirstAlgo", "Phys/SecondAlgo" } ;

The output of the PhysDesktop is forced to the location "Phys/MyAlg" to avoid clashed of container names.

Sequencers  Event Model DVAlgorithm Tools Specialized Algorithms Generic Algorithms

Available tools

The following list shows the tool interfaces provided in the DaVinciKernel package. Most of them have several implementations. Look at the doxygen documentation to find out which implementation does the job best.

Particle Makers

IParticleMaker Interface class to make Particles from other classes (e.g. ProtoParticle). This tools is internally used by the PhysDesktop. In principle you don't need to use this tool as all Particles are already provided as Standard Particles.

Particle Filter

IParticleFilter Given a vector of Particles, provides a sub-vector of Particles satisfying a set of IFilterCriteria.  
IFilterCriterion Applies a criterion (cut) on a Particle and returns a yes/no. Several implementations available.

Vertex fitters

IVertexFit  All vertex fitter inherit this interface. Follow the links from doxygen to the fitter you want.

Flavour Tagging

IBTaggingTool Flavour tagging tool.

Miscellaneous tools

ICheckOverlap Tool to check if more than one particle originate from the same ProtoParticle in he decay tree of a composite particle.
IDecayFinder Finds a decay given by a decay string.
IGeomDispCalculator Calculates distances between lines, points, tracks and vertices.
IPhysDesktop See above.
IPlotTool Fill some plots given a Particle or a vector of Particles.

Available MC tools

MC Tools

IDebugTool  Prints a tree of Particles or MCParticles.
IMCDecayFinder   Finds a MC decay given by a decay string.
IMCParticleSelector Selection of MCParticles given a criteria.
IVisPrimVertTool    Analyses collision vertices.

 

Sequencers  Event Model DVAlgorithm Tools Specialized Algorithms Generic Algorithms

Specialized algorithms

The following list shows a selection of algorithms that can be used in a typical analysis sequence to monitor it or to control it's behaviour. You will usually find some example option file in the relevant directory.

Package Algorithm Description

Particles Makers

ParticleMaker PreLoadParticles    Run the default CombinedParticleMaker or any other, to make particles.

Particle filtering

DaVinciFilter ApplyParticleFilter Just applies the ParticleFilter on all particles in the PhysDesktop InputLocation.
FilterByBestParticles Applies the IBestParticles tool on all particles in the PhysDesktop InputLocation.
PhysSelections PIDFilter Filters all particles in the PhysDesktop InputLocation according to their PID.

Primary vertex

DaVinciTools CheckPV Checks that there is a PV.

Plotting

DaVinciTools SimplePlots Calls a IPlotTool for all particles in the PhysDesktop InputLocation.

SelResult access

Tools/Utilities CheckSelResult Checks SelResult objects from previous algorithms. Allows to control sequence according t previously run algorithms (even outside of sequence).
SelResultCorrelations  Prints correlation matrix of algorithms.

Tagging

FlavourTagging BTagging    Apply B Tagging
FlavourTaggingChecker CheatedSelection  Use cheated selection for B tagging.

MC Algorithms

MC Event filtering

DaVinciMCTools FilterGoodDecay Keeps only events containing the requested decay.
IsBEvent Keeps only events containing the requested particle or quark.

Debugging

DaVinciMCTools
PrintMCTree  Prints the decay tree of a MCParticle,
PrintTree Prints the decay tree of a Particle.
Tools/Utilities PrintHeader Prints Run and Event number

 

Sequencers  Event Model DVAlgorithm Tools Specialized Algorithms Generic Algorithms

Generic algorithms

The HLT and the stripping require the usage of generic selection algorithms, that allow the selection of any decay steered only by job options.

They both rely on the ByPIDFilterCriterion and thus have the same syntax. More details will appear here when they are stable.

Sequencers  Event Model DVAlgorithm Tools Specialized Algorithms Generic Algorithms

Any comment is very welcome. Flame me here.