Canonical partition function