docs: def __math_on_stack(self, used_lock=False):
          """will perform all the various update of the stack, such as populating the stack_sigma, caluclate the density of the
          layers....etc. """
  
          # populate stack_sigma (Sigma vs Energy for every element)
          self.__get_sigmas()
  
          # populate compound density (if none provided)
          self.__update_layer_density()
  
          # populate compound molar mass
          # self.__update_layer_molar_mass()  ### included in __calculate_atoms_per_cm3
  
          # populate atoms_per_cm3
          self.__calculate_atoms_per_cm3(used_lock=used_lock)
  
          # calculate transmission and attenuation
          self.__calculate_transmission_attenuation()