File:
PDTable.h
This file may become a part of CLHEP - a Class Library for High Energy Physics.
This is the definition of the HepPDTable class.
The HepPDTable class implements the actual particle property data base in CLHEP. HepPDTable handles all HepParticleData, HepParticleMatcher, HepDecayMode, and HepPackageHandler objects to be used in a program.
The main member is the std::map of pointers to all HepParticleData objects indexed by their STDHEP id numbers. Pointers to HepParticleData objects can be retrieved by their STDHEP id number, but also by its name or according to a user defined numbering scheme used by a package. Pointers to HepParticleMatcher objects can similarly be retrieved by their name.
HepPDTable is not persistent. Instead it can be read and written to a file using a specified ascii format. Since neither the HepParticledata or HepDecayMode classes are polymorphic, all standard particle properties and decay modes can easily be handled this way. User defined HepParticleMatcher objects, however, are polymorphic and must therefore be instanciated and added to the HepDTable before any files are read where the name of the objects is encountered. In the same way, all HepPackageHandler objects must be instanciated and added to HepPDTable by hand and these objects must be able to instanciate all HepPatricleProducer and HepDecayModel objects stored in a file.
All HepParticleData, HepParticleMatcher, HepDecayMode and HepPackageHandler objects added to HepPDTable must be allocated by new and will be deleted by HepPDTable upon destruction.
In addition HepPDTable handles parameters used by different packages which are accessed by their package id number and a package specific name.
After any changes has been made to HepPDTable, the init() method must be called to set up all cross references and check the consistency.
CLASS HepPDTable