00001
00002
00003 #ifndef __imf_h__
00004 #define __imf_h__
00005
00006
00008 class Cimf
00009 {
00010
00011 public:
00012 virtual double get_nstars_frac(double mass, double m_low, double m_up) =0;
00013 virtual double get_nstars_all(double mass) =0;
00014 virtual double calculate_norm(void) =0;
00015 virtual double get_imf_val(double) =0;
00016 };
00017
00019 class CPowerlaw: public Cimf
00020 {
00021 double exponent;
00022 double lower_mass_bound;
00023 double upper_mass_bound;
00025 double nstarfrac_coeff;
00026 double nstarall_coeff;
00028 double norm;
00032 double moment_zero(double,double);
00033 double moment_first(double,double);
00034
00035 public:
00036 CPowerlaw(double exponent,double lower_mass_bound,double upper_mass_bound);
00037
00038 double get_nstars_frac(double mass, double m_low, double m_high);
00039 double get_nstars_all(double mass);
00040 double calculate_norm(void);
00041 double get_imf_val(double);
00042 };
00043
00044
00045
00046
00047
00048
00049
00050 #endif