Question about PET scanner `info` parameters

I am trying to follow the reconstruction tutorial but encounter some issues with setting up the info parameter: GATE (Listmode Reconstruction; Without Time of Flight) — PyTomography 3.4.0 documentation

I wonder if there’s more information on what are the individual attributes listed here means:

{'min_rsector_difference': 0,
 'crystal_length': 20.0,
 'radius': 337.0,
 'crystalTransNr': 8,
 'crystalTransSpacing': 4.0,
 'crystalAxialNr': 8,
 'crystalAxialSpacing': 4.0,
 'submoduleAxialNr': 1,
 'submoduleAxialSpacing': 0,
 'submoduleTransNr': 1,
 'submoduleTransSpacing': 0,
 'moduleTransNr': 1,
 'moduleTransSpacing': 0.0,
 'moduleAxialNr': 8,
 'moduleAxialSpacing': 32.25,
 'rsectorTransNr': 56,
 'rsectorAxialNr': 1,
 'NrCrystalsPerRing': 448,
 'NrRings': 64,
 'firstCrystalAxis': 1}

I am a bit confused by NrCrystalPerRing and NrRings in particular

The geometry definitions are based on the CylindricalPET convention in GATE. See the OpenGATE documentation here, specifically sections 1.1 and 1.4.3. NrCrystalPerRing and NrRings are actually extras here and contain redundant information. NrCrystalPerRing is the number of crystals going around the bore of the scanner and NrRings is the number of rings of crystals in the axial direction of the scanner. If you multiply these two, you would get the total number of crystals in the scanner. Below, you can see how they are redundant and can be calculated from the other parameters:

info[‘NrCrystalsPerRing’] = info[‘crystalTransNr’] * info[‘moduleTransNr’] * info[‘submoduleTransNr’] * info[‘rsectorTransNr’]
info[‘NrRings’] = info[‘crystalAxialNr’] * info[‘submoduleAxialNr’] * info[‘moduleAxialNr’] * info[‘rsectorAxialNr’]

Hope this helps!