| [801] | 1 |                         // Dominique YVON, CEA/DAPNIA/SPP 02/2000
 | 
|---|
 | 2 | 
 | 
|---|
 | 3 | #ifndef LightSrcSep_H
 | 
|---|
 | 4 | #define LightSrcSep_H
 | 
|---|
 | 5 | 
 | 
|---|
 | 6 | #include "abslightsource.h"
 | 
|---|
 | 7 | 
 | 
|---|
 | 8 | class LightSrcSep:public AbsLightSource {
 | 
|---|
 | 9 |  friend class LSrcRadSpecSep;
 | 
|---|
 | 10 | public: 
 | 
|---|
 | 11 |   LightSrcSep(){LScrFSep=true; QPtSource=false;}
 | 
|---|
 | 12 |   ~LightSrcSep() {      }
 | 
|---|
 | 13 |   virtual double powSpecDens(double theta,double phi,double freq){
 | 
|---|
 | 14 |     // Return power density at coordinates (W/m2/Hz/St)
 | 
|---|
 | 15 |                 return spectre(freq)*powerDensAmpli(theta,phi);
 | 
|---|
 | 16 |   }
 | 
|---|
 | 17 |   
 | 
|---|
 | 18 |   virtual double spectre(double frequence)=0; 
 | 
|---|
 | 19 |         // Return the frequency spectrum independent of coordinates
 | 
|---|
 | 20 |         // should have no dimension
 | 
|---|
 | 21 |   virtual double powerDensAmpli(double theta,double phi)=0;
 | 
|---|
 | 22 |                 // Return power density Amplidude at coordinates
 | 
|---|
 | 23 |         // (W/m2/Hz/St)
 | 
|---|
 | 24 | protected:
 | 
|---|
 | 25 | };
 | 
|---|
 | 26 | 
 | 
|---|
 | 27 | class LightSrcDiffBlackBody:public LightSrcSep {
 | 
|---|
 | 28 |         // Classe mettant en oeuvre les sources parametrees 
 | 
|---|
 | 29 |         // Comme des ecarts de temperature a la tempe du CMB
 | 
|---|
 | 30 |         // valable dans la limite des petits ecarts de tempe de TCMB
 | 
|---|
 | 31 |     // DeltaT retourne la DTCMB apparente au point theta, phi.
 | 
|---|
 | 32 | public:
 | 
|---|
 | 33 |    LightSrcDiffBlackBody() {
 | 
|---|
 | 34 |                 h_kT=6.626e-34/T_CMBR/1.38e-23;  // Hz-1
 | 
|---|
 | 35 |         Prefac=2*6.626e-34*6.626e-34/(9.e16*1.38e-23*T_CMBR*T_CMBR); 
 | 
|---|
 | 36 |              // 2*h2/(c2*k*TCMB2) ( W/m2/st/Hz^3/K) ou (J/m2/st/Hz^4/K)
 | 
|---|
 | 37 |    }
 | 
|---|
 | 38 |    virtual ~LightSrcDiffBlackBody() { };
 | 
|---|
 | 39 | protected:
 | 
|---|
 | 40 |         double h_kT;            // nanosecondes
 | 
|---|
 | 41 |         double Prefac;
 | 
|---|
 | 42 |         virtual double DeltaT(double theta,double phi)=0;       // en Kelvin
 | 
|---|
 | 43 |     virtual double spectre(double freq){                                //      Frequence en Hz
 | 
|---|
 | 44 |                 return pow(freq,4)*exp(h_kT*freq)/pow((exp(h_kT*freq)-1),2);
 | 
|---|
 | 45 |                 // Hz^4  
 | 
|---|
 | 46 |         }       
 | 
|---|
 | 47 |         virtual double powerDensAmpli(double theta,double phi){
 | 
|---|
 | 48 |                 // Return power density Amplidude at coordinates
 | 
|---|
 | 49 |         // J/m2/st/Hz^4 ou W/m2/St/Hz^5
 | 
|---|
 | 50 |         double PDens= Prefac*DeltaT(theta,phi);
 | 
|---|
 | 51 |                 return PDens;
 | 
|---|
 | 52 |     }
 | 
|---|
 | 53 | 
 | 
|---|
 | 54 | };
 | 
|---|
 | 55 | 
 | 
|---|
 | 56 | 
 | 
|---|
| [798] | 57 | #endif | 
|---|