ATLAS Offline Software
Particle
Author
Andre.nosp@m.as.W.nosp@m.ildau.nosp@m.er@c.nosp@m.ern.c.nosp@m.h, Fredr.nosp@m.ik.A.nosp@m.kesso.nosp@m.n@ce.nosp@m.rn.ch

Introduction:

Particle is a first version of a "more than a track" object. It provides the user with a particle which has (or has not) a track, a vertex, an origin (type of vertex) and a charge. It is meant as an interface between the reconstruction world an physics. All algorithms after the particle creation (i.e. JetFinder, b-tagging, ...) should run on TrackParticle(s) instead of Trk::Track(s) directly.

TrackParticle Creation

To create TrackParticles one should not use the TrackParticle constructors but the TrkParticleCreator tool which is located in Tracking/TrkTools/TrkParticleCreator. The reason for that is that the tool always attempts to create an as complete TrackParticle as possible. E.g. if your input track does not have a perigee, the tool will notice and will use the TrkExtrapolator package to calculate a perigee. For info on how to use the TrkParticleCreator tool have a look at one of its clients: InDetParticleCreation.

TrackParticle in general

If TrackParticle is used not only as input but also as output (i.e. objects of TrackParticle are created by an algorithm), please consider the following:

The datamembers m_originalTrack and m_reconstructedVertex are pointer datamembers to a track and a vertex respectively. Where they point to can be assigned via the constructor. Usually the ownership of an object is given away with the pointer, and the object which gets the pointer has to delete the object it points to. For pointer datamembers this is usually done in the destructor of the class. For TrackParticle this is different. The pointer datamembers are NOT DELETED when a TrackParticle gets out of scope. The reason is that usually m_originalTrack and m_reconstructedVertex point to objects in StoreGate and therefore must not be deleted by the destructor of TrackParticle. This would cause Athena to crash.


Summary: If you construct your own TrackParticle in one of your algorithms and you use new statements to pass a vertex or a track, be sure you delete them at the end.

TrackParticle in InnerDetector

In InnerDetector software the TrackParticle is created by InDetParticleCreation after the primary vertex reconstruction. In that case it always has a pointer to a track, a pointer to a vertex and the info of the vertex type. The vertex pointer always points to the primary vertex. In case the track of the TrackParticle was used in the fit of the primary vertex the datamember m_trackParticleOrigin will have the value Rec::PriVtx. If the track was not used in the primary vertex fit this enum has the value Rec::NoVtx. The StoreGate key for the ID TrackParticleContainer is "TrackParticleCandidate".

Package Contents:

Particle contains the following files/classes:

  • TrackParticle.cxx ... the TrackParticle itself.
  • TrackParticleContainer.cxx ... container to store TrackParticle(s) in StoreGate.

Extra Pages