Skip to content

Commit 30a7f9c

Browse files
committed
io: More flexible spectral background subtraction
Instead of hard-coding a fixed value for the dark signal background, we can now pass a value around. This value can now be passed along from the callers, and is set to the previous default when not explicitly set. A value of -1. subtracts the spectral median as a background.
1 parent 539fbb9 commit 30a7f9c

File tree

2 files changed

+15
-13
lines changed

2 files changed

+15
-13
lines changed

Datei_IO.cpp

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -81,26 +81,27 @@ double average_over_wl_range(std::vector<float> rad, std::vector<float> wl,
8181
vector<Messung_Limb> make_messung_limb_vector(string Dateiname,
8282
std::vector<Limb_Datensatz> &Limbdaten, std::vector<float> &Wellenlaengen,
8383
int no_of_alt, int no_of_pix, int Datum[6], float cent_lat_lon[10],
84-
float orbit_phase, int no_of_heights, int offset, int direction)
84+
float orbit_phase, int no_of_heights, int offset, int direction,
85+
double dark_sig)
8586
{
8687
bool has_straylight = false;
8788
// dark signal and error
8889
// constant dark signal (default and fall-back)
8990
//dark_sig = 2.731e9;
90-
double dark_sig = 3.9e9;
91+
//double dark_sig = 3.9e9;
92+
//double dark_sig = 0.0;
9193
double dark_err = 0.0;
92-
/*
94+
95+
if (dark_sig == -1.) {
9396
// normal average or median for the dark signal correction
9497
dark_sig = average_over_wl_range(Limbdaten[no_of_alt - 1].m_radiance,
9598
Wellenlaengen, 238.0, 282.0, true);
9699
dark_err = average_over_wl_range(Limbdaten[no_of_alt - 1].m_error,
97100
Wellenlaengen, 238.0, 282.0, true);
98-
// */
99101

100-
/*
101102
if (dark_sig > 6.e9)
102103
has_straylight = true;
103-
// */
104+
}
104105
std::cerr << "dark signal: " << dark_sig << std::endl;
105106

106107
// 4. Erstellung des Übergabevektors
@@ -170,7 +171,7 @@ vector<Messung_Limb> make_messung_limb_vector(string Dateiname,
170171
////////////////////////////////////////////////////////////////////////////////
171172
vector<Messung_Limb> ReadL1C_Limb_mpl_binary(string Dateiname,
172173
Messung_Limb &Troposphaerische_Saeule, Messung_Limb &mean_10_20,
173-
int Anzahl_Hoehen)
174+
int Anzahl_Hoehen, double dark_bg)
174175
{
175176
//binärdateien sind nicht gepackt(das wär einfach nicht effizient)...
176177
//ansonsten hier packen und später entpacken
@@ -216,7 +217,7 @@ vector<Messung_Limb> ReadL1C_Limb_mpl_binary(string Dateiname,
216217
Ergebnisvektor
217218
= make_messung_limb_vector(Dateiname, Limbdaten, Wellenlaengen,
218219
no_of_alt, no_of_pix, Datum, Center_Lat_Lon, orbit_phase,
219-
Anzahl_Hoehen, no_of_alt - Anzahl_Hoehen - 1, 1);
220+
Anzahl_Hoehen, no_of_alt - Anzahl_Hoehen - 1, 1, dark_bg);
220221

221222
//Teile von Schritt 4 nochmal für die Troposhärische Säule
222223
//Eigentlich reichen Intensitäten
@@ -274,7 +275,8 @@ vector<Messung_Limb> ReadL1C_Limb_meso_thermo_mpl_binary(string Dateiname,
274275
////////////////////////////////////////////////////////////////////////////////
275276
vector<Messung_Limb>
276277
ReadL1C_Limb_meso_thermo_mpl_binary_reduziert(string Dateiname,
277-
Messung_Limb &niedrigste_Hoehe, Messung_Limb &space, int Anzahl_Hoehen)
278+
Messung_Limb &niedrigste_Hoehe, Messung_Limb &space, int Anzahl_Hoehen,
279+
double dark_bg)
278280
{
279281
// Hier wieder nur Höhen von 70 bis 90 km....(einziger unterschied liegt in
280282
// der for schleife die nur bis 7 geht)
@@ -328,7 +330,7 @@ ReadL1C_Limb_meso_thermo_mpl_binary_reduziert(string Dateiname,
328330
Ergebnisvektor
329331
= make_messung_limb_vector(Dateiname, Limbdaten, Wellenlaengen,
330332
no_of_alt, no_of_pix, Datum, Center_Lat_Lon, orbit_phase,
331-
Anzahl_Hoehen, Anzahl_Hoehen - 1, -1);
333+
Anzahl_Hoehen, Anzahl_Hoehen - 1, -1, dark_bg);
332334

333335
//Teile von Schritt 4 nochmal für die niedrigste Höhe
334336
//Eigentlich reichen Intensitäten
@@ -339,7 +341,7 @@ ReadL1C_Limb_meso_thermo_mpl_binary_reduziert(string Dateiname,
339341
// It then returns the only element as the "space" limb scan as requested.
340342
space = make_messung_limb_vector(Dateiname, Limbdaten, Wellenlaengen,
341343
no_of_alt, no_of_pix, Datum, Center_Lat_Lon, orbit_phase,
342-
1, Anzahl_Hoehen, +1).front();
344+
1, Anzahl_Hoehen, +1, dark_bg).front();
343345

344346
return Ergebnisvektor;
345347
}

Datei_IO.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,13 @@
3333
// günstiger...kann später mal gefixt werden...erstmal programm fertig kriegen
3434
std::vector<class Messung_Limb> ReadL1C_Limb_mpl_binary(std::string Dateiname,
3535
class Messung_Limb &Troposphaerische_Saeule, class Messung_Limb &mean_10_20,
36-
int Anzahl_Hoehen = -1);
36+
int Anzahl_Hoehen = -1, double dark_bg = 3.9e9);
3737
std::vector<Messung_Limb> ReadL1C_Limb_meso_thermo_mpl_binary(std::string Dateiname,
3838
class Messung_Limb &niedrigste_Hoehe, class Messung_Limb &space);
3939
std::vector<class Messung_Limb>
4040
ReadL1C_Limb_meso_thermo_mpl_binary_reduziert(std::string Dateiname,
4141
class Messung_Limb &niedrigste_Hoehe, class Messung_Limb &space,
42-
int Anzahl_Hoehen = -1);
42+
int Anzahl_Hoehen = -1, double dark_bg = 3.9e9);
4343
std::vector<class Messung_Nadir> ReadL1C_Nadir_mpl_binary(std::string Dateiname, int &Anzahl_Messungen);
4444
//Besser ein dynamisches Array einlesen, schneller als Vektor
4545
////////////////////////////////////////////////////////////////////////////////

0 commit comments

Comments
 (0)