NuFlav and Parent

These objects both inherit from a class called ParticleParam. Basically, the ParticleParam stores a particle name, and PDG code. The two daughter classes exist simply to avoid a neutrino as being used as a parent, and vice versa. The Parameters class stores a separate vector for NuFlav and Parent objects, and these are used to configure a Spectra. Most of the most common particles are predefined, so it is unlikely the user will need to create or play with these objects directly. However, the user can create NuFlav and/or Parent objects if necessary.

Predefined Objects

The most common particles, for both neutrino flavors and parent species, are predefined in ParticleParam.h and ParticleParam.cxx. The predefined flavors are the electron neutrino, anti-electron neutrino, muon neutrino, anti-muon neutrino, tau neutrino, and anti-tau neutrino. The parent species are the pi plus, pi minus, mu plus, mu minus, K plus, K minus, and K Long. There are also versions of the muon, pion, and kaon, for use when parent sign is ignored. These versions use the PDG > 0 value, and do not specify a charge in the stored name.


The constructor to both the NuFlav and Parent take a std::string for the particle name, and an integer for the particle PDG. The example below shows how to define the K Short.

  Parent kKShort("KS", 310);

General Use

The name and PDG of the particle cannot be changed once the object is created. However, these values can be accessed using either GetName and or GetPDG appropriately, each of which take no arguments.

  std::cout << "The " << kKShort.GetName() << " has a PDG value of " << kKShort.GetPDG() << std::endl;

Both the NuFlav and Parent class have their own function to produce a std::vector of NuFlav or Parent objects, respectively. However, the Parameters class uses these functions to create its own lists, so the user should not need to use these functions. Likewise, each class has their own functions to remove a NuFlav or Parent from a previously existing vector; but again, the user should use the versions defined in Parameters instead.