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()