Copying from the Google doc discusion:
Related to the discussion above about cosmo vs fid_cosmo. The way I understand this function get_chi2 is that it is a static function, like most functions in the likelihood and theory classes. This means that calling that function should not change the state of any of the internal objects within the likelihood class (not the data, not theory, not the emulator).
So if we ask for get_chi2 and provide as a likelihood parameter a cosmological parameter, this will not modify self.theory.fid_cosmo, it will create a new cosmo object with the right settings that will only leave during the call to get_chi2, and then disappear.