def evtrack(self,m,feh=<NUM_LIT:0.0>,minage=None,maxage=None,dage=<NUM_LIT>,<EOL>return_df=True):
if minage is None:<EOL><INDENT>minage = self.minage<EOL><DEDENT>if maxage is None:<EOL><INDENT>maxage = self.maxage<EOL><DEDENT>ages = np.arange(minage,maxage,dage)<EOL>Ms = self.mass(m,ages,feh)<EOL>Rs = self.radius(m,ages,feh)<EOL>logLs = self.logL(m,ages,feh)<EOL>loggs = self.logg(m,ages,feh)<EOL>Teffs = self.Teff(m,ages,feh)<EOL>mags = {band:self.mag[band](m,ages,feh) for band in self.bands}<EOL>props = {'<STR_LIT>':ages,'<STR_LIT>':Ms,'<STR_LIT>':Rs,'<STR_LIT>':logLs,<EOL>'<STR_LIT>':loggs, '<STR_LIT>':Teffs, '<STR_LIT>':mags}<EOL>if not return_df:<EOL><INDENT>return props<EOL><DEDENT>else:<EOL><INDENT>d = {}<EOL>for key in props.keys():<EOL><INDENT>if key=='<STR_LIT>':<EOL><INDENT>for m in props['<STR_LIT>'].keys():<EOL><INDENT>d['<STR_LIT>'.format(m)] = props['<STR_LIT>'][m]<EOL><DEDENT><DEDENT>else:<EOL><INDENT>d[key] = props[key]<EOL><DEDENT><DEDENT>try:<EOL><INDENT>df = pd.DataFrame(d)<EOL><DEDENT>except ValueError:<EOL><INDENT>df = pd.DataFrame(d, index=[<NUM_LIT:0>])<EOL><DEDENT>return df<EOL><DEDENT>
Returns evolution track for a single initial mass and feh.

:param m:
    Initial mass of desired evolution track.

:param feh: (optional)
    Metallicity of desired track.  Default = 0.0 (solar)

:param minage, maxage: (optional)
    Minimum and maximum log(age) of desired track. Will default
    to min and max age of model isochrones.

:param dage: (optional)
    Spacing in log(age) at which to evaluate models.  Default = 0.02

:param return_df: (optional)
    Whether to return a ``DataFrame`` or dicionary.  Default is ``True``.


:return:
    Either a :class:`pandas.DataFrame` or dictionary
    representing the evolution
    track---fixed mass, sampled at chosen range of ages.