<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def run_type(self):
 """ Returns the run type. Currently supports LDA, GGA, vdW-DF and HF calcs. TODO: Fix for other functional types like PW91, other vdW types, etc. """


        METAGGA_TYPES = {"TPSS", "RTPSS", "M06L", "MBJL", "SCAN", "MS0", "MS1", "MS2"}

        if self.parameters.get("LHFCALC", False):
            rt = "HF"
        elif self.parameters.get("METAGGA", "").strip().upper() in METAGGA_TYPES:
            rt = self.parameters["METAGGA"].strip().upper()
        elif self.parameters.get("LUSE_VDW", False):
            vdw_gga = {"RE": "DF", "OR": "optPBE", "BO": "optB88",
                       "MK": "optB86b", "ML": "DF2"}
            gga = self.parameters.get("GGA").upper()
            rt = "vdW-" + vdw_gga[gga]
        elif self.potcar_symbols[0].split()[0] == 'PAW':
            rt = "LDA"
        else:
            rt = "GGA"
        if self.is_hubbard:
            rt += "+U"
        return rt