[3115] | 1 | #ifndef SCHECHTER_SEEN
|
---|
| 2 | #define SCHECHTER_SEEN
|
---|
| 3 |
|
---|
| 4 | #include "machdefs.h"
|
---|
| 5 | #include "genericfunc.h"
|
---|
| 6 |
|
---|
| 7 | namespace SOPHYA {
|
---|
| 8 |
|
---|
[3320] | 9 | class Histo;
|
---|
| 10 | class FunRan;
|
---|
| 11 |
|
---|
[3115] | 12 | //-----------------------------------------------------------------------------------
|
---|
| 13 | class Schechter : public GenericFunc {
|
---|
| 14 | public:
|
---|
| 15 | Schechter(double nstar,double mstar,double alpha);
|
---|
| 16 | Schechter(Schechter& f);
|
---|
[3320] | 17 | Schechter(void);
|
---|
[3115] | 18 | virtual ~Schechter(void);
|
---|
[3320] | 19 |
|
---|
[3115] | 20 | void SetOutValue(unsigned short outvalue=0);
|
---|
[3320] | 21 | unsigned short GetOutValue(void);
|
---|
| 22 | void SetParam(double nstar,double mstar,double alpha);
|
---|
| 23 | void GetParam(double& nstar,double& mstar,double& alpha);
|
---|
| 24 |
|
---|
[3115] | 25 | virtual double operator() (double m);
|
---|
[3320] | 26 |
|
---|
| 27 | double Integrate(double massmin,double massmax,int npt=100);
|
---|
| 28 |
|
---|
[3193] | 29 | virtual void Print(void);
|
---|
[3320] | 30 |
|
---|
[3115] | 31 | protected:
|
---|
| 32 | double nstar_,mstar_,alpha_;
|
---|
| 33 | unsigned short outvalue_;
|
---|
| 34 | };
|
---|
| 35 |
|
---|
[3320] | 36 | //-----------------------------------------------------------------------------------
|
---|
| 37 | class SchechterMassDist : public AnyDataObj {
|
---|
| 38 | friend class ObjFileIO<SchechterMassDist>;
|
---|
| 39 | public:
|
---|
| 40 | SchechterMassDist(Schechter sch,double massmin,double massmax,int nbinmass);
|
---|
| 41 | SchechterMassDist(void);
|
---|
| 42 | virtual ~SchechterMassDist(void);
|
---|
| 43 |
|
---|
| 44 | int GetMassLim(double& massmin,double& massmax);
|
---|
| 45 | int SetNgalLim(int ngalmax,int ngalmin=1,unsigned long nalea=10000);
|
---|
| 46 | int GetNgalLim(int& ngalmax,int& ngalmin);
|
---|
| 47 | int GetNgalLim(void) {return nvalngal_;}
|
---|
[3345] | 48 | Schechter& GetSchechter(void) {return sch_;}
|
---|
[3320] | 49 |
|
---|
| 50 | inline int IndexFrNGal(int ngal) {
|
---|
| 51 | int i = ngal-ngalmin_;
|
---|
| 52 | if(nvalngal_<1 || i<0) return -1;
|
---|
| 53 | if(i>=nvalngal_) return -2; else return i;
|
---|
| 54 | }
|
---|
| 55 | inline int NGalFrIndex(int i) {
|
---|
| 56 | if(nvalngal_<1 || i<0 || i>=nvalngal_) return -1;
|
---|
| 57 | return ngalmin_+i;
|
---|
| 58 | }
|
---|
| 59 |
|
---|
| 60 | Histo GetHmDnDm(void) const;
|
---|
| 61 | FunRan GetTmDnDm(void) const;
|
---|
| 62 |
|
---|
| 63 | Histo GetHisto(int i) const;
|
---|
| 64 | FunRan GetFunRan(int i) const;
|
---|
| 65 |
|
---|
| 66 | double TirMass(int ngal);
|
---|
| 67 |
|
---|
| 68 | void Print(void);
|
---|
| 69 | void PrintStatus(void);
|
---|
| 70 |
|
---|
| 71 | void WritePPF(string ppfname);
|
---|
| 72 | void ReadPPF(string ppfname);
|
---|
| 73 |
|
---|
| 74 | protected:
|
---|
| 75 | void Delete(void);
|
---|
| 76 |
|
---|
| 77 | Schechter sch_;
|
---|
| 78 | unsigned short sch_outvalue_;
|
---|
| 79 |
|
---|
| 80 | double massmin_,massmax_; int nbinmass_;
|
---|
| 81 | int ngalmin_,ngalmax_,nvalngal_;
|
---|
| 82 | unsigned long ntrial_dir, ntrial_tab;
|
---|
| 83 |
|
---|
| 84 | Histo* hmdndm_;
|
---|
| 85 | FunRan* tirhmdndm_;
|
---|
| 86 |
|
---|
| 87 | vector<Histo> hmass_;
|
---|
| 88 | vector<FunRan> tmass_;
|
---|
| 89 | };
|
---|
| 90 |
|
---|
[3115] | 91 | //-----------------------------------------------------------------------------------
|
---|
[3320] | 92 | bool IsCompatible(Schechter& sch1,Schechter& sch2,double eps=1.e-4);
|
---|
| 93 |
|
---|
| 94 | //-----------------------------------------------------------------------------------
|
---|
[3365] | 95 | double Msol2LumiHI(double m);
|
---|
[3196] | 96 | double Msol2FluxHI(double m,double d);
|
---|
| 97 | double FluxHI2Msol(double f,double d);
|
---|
[3115] | 98 |
|
---|
[3325] | 99 | } // Fin du namespace SOPHYA
|
---|
| 100 |
|
---|
[3115] | 101 | #endif
|
---|