<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def tag_ca_geometry(self, force=False, reference_axis=None, reference_axis_name='ref_axis'):
 """Tags each `Monomer` in the `Assembly` with its helical geometry. Parameters force : bool, optional If True the tag will be run even if `Monomers` are already tagged. reference_axis : list(numpy.array or tuple or list), optional Coordinates to feed to geometry functions that depend on having a reference axis. reference_axis_name : str, optional Used to name the keys in tags at `Chain` and `Residue` level. """

        for polymer in self._molecules:
            if polymer.molecule_type == 'protein':
                polymer.tag_ca_geometry(
                    force=force, reference_axis=reference_axis,
                    reference_axis_name=reference_axis_name)
        return