-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathGalacticRadiationField.h
executable file
·74 lines (49 loc) · 2.08 KB
/
GalacticRadiationField.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#ifndef _rf_GalacticRadiationField_h_
#define _rf_GalacticRadiationField_h_
#include <fitsio.h>
#include <string>
//#include <vector>
//#include <cmath>
#include <valarray>
namespace rf {
class GalacticRadiationField {
public:
enum Component { STELLAR, SCATTERED, INFRARED, CMB, TOTAL };
GalacticRadiationField(const std::string& filename,
bool useIsotropic = false);
~GalacticRadiationField();
// Energy density returned in (eV cm^-3 micron^-1)*micron
double GetEnergyDensity(const double wl,
const double r,
const double z,
const Component comp) const;
// Intensity returned in (eV cm^-2 s^-1 sr^-1 micron^-1)*micron
double GetIntensity(const double wl,
const double r,
const double z,
const double azimuth,
const double cosZenith,
const Component comp) const;
const std::valarray<double>& GetWavelengthData() const { return fWavelengthData; }
const std::valarray<double>& GetAzimuthData() const { return fAzimuthData; }
const std::valarray<double>& GetCosZenithData() const { return fCosZenithData; }
const std::valarray<double>& GetRData() const { return fRData; }
const std::valarray<double>& GetZData() const { return fZData; }
private:
bool fInitialised;
double fAzimuthDelta, fCosZenithDelta;
std::valarray<double> fRData, fZData, fWavelengthData, fAzimuthData, fCosZenithData;
//float* fEnergyDensity;
//float* fAngularDistribution;
std::valarray< std::valarray< std::valarray<double> > > fEnergyDensityStellar, fEnergyDensityScattered, fEnergyDensityInfrared;
std::valarray< std::valarray< std::valarray< std::valarray< std::valarray<double> > > > > //fIntensityStellar, fIntensityScattered, fIntensityInfrared,
fIntensityTotal;
GalacticRadiationField();
void ExtractFITSData(const std::string& filename, const bool useIsotropic);
void ExtractFITSEnergyDensity(fitsfile* fptr);
void ExtractFITSAngularDistribution(fitsfile* fptr);
double BlackBodyEnergyDensity(const double energy,
const double kT) const;
};
}
#endif