|
|
|
@ -43,17 +43,32 @@ bool Configfile::parseConfigfile()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool Configfile::getBin(int &bin)
|
|
|
|
|
bool Configfile::getSpectralBin(int &spectralBin)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
bin = cfg.lookup("bin");
|
|
|
|
|
spectralBin = cfg.lookup("spectralBin");
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
catch(const SettingNotFoundException &nfex)
|
|
|
|
|
{
|
|
|
|
|
cerr << "No 'bin' setting in configuration file." << endl;
|
|
|
|
|
cerr << "No 'spectralBin' setting in configuration file." << endl;
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool Configfile::getspatialBin(int &spatialBin)
|
|
|
|
|
{
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
spatialBin = cfg.lookup("spatialBin");
|
|
|
|
|
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
catch(const SettingNotFoundException &nfex)
|
|
|
|
|
{
|
|
|
|
|
cerr << "No 'spatialBin' setting in configuration file." << endl;
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -62,22 +77,41 @@ bool Configfile::getEffectiveWindow(int &width, int &offsetx, int &height, int &
|
|
|
|
|
{
|
|
|
|
|
const Setting& root = cfg.getRoot();
|
|
|
|
|
|
|
|
|
|
// Output a list of all books in the inventory.
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
const Setting &effective_window = root["effective_window"];
|
|
|
|
|
int count = effective_window.getLength();
|
|
|
|
|
int spatialBin;
|
|
|
|
|
int spectralBin;
|
|
|
|
|
getspatialBin(spatialBin);
|
|
|
|
|
getSpectralBin(spectralBin);
|
|
|
|
|
|
|
|
|
|
int bin;
|
|
|
|
|
getBin(bin);
|
|
|
|
|
string spatialBinString;
|
|
|
|
|
if(spatialBin == 1)
|
|
|
|
|
{
|
|
|
|
|
spatialBinString = "bin1";
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
spatialBinString = "bin2";
|
|
|
|
|
}
|
|
|
|
|
const Setting &spatialArgument = root["effective_window"][spatialBinString]["spatial"];
|
|
|
|
|
if(!(spatialArgument.lookupValue("width", width)
|
|
|
|
|
&& spatialArgument.lookupValue("offsetx", offsetx)))
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const Setting &window = effective_window[bin-1];
|
|
|
|
|
string name = window.getName();
|
|
|
|
|
|
|
|
|
|
if(!(window.lookupValue("width", width)
|
|
|
|
|
&& window.lookupValue("offsetx", offsetx)
|
|
|
|
|
&& window.lookupValue("height", height)
|
|
|
|
|
&& window.lookupValue("offsety", offsety)))
|
|
|
|
|
string spectralBinString;
|
|
|
|
|
if(spectralBin == 1)
|
|
|
|
|
{
|
|
|
|
|
spectralBinString = "bin1";
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
spectralBinString = "bin2";
|
|
|
|
|
}
|
|
|
|
|
const Setting &spectralArgument = root["effective_window"][spectralBinString]["spectral"];
|
|
|
|
|
if(!(spectralArgument.lookupValue("height", height)
|
|
|
|
|
&& spectralArgument.lookupValue("offsety", offsety)))
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
@ -95,16 +129,25 @@ bool Configfile::getEffectiveWindowRoi(int &width, int &offsetx)
|
|
|
|
|
{
|
|
|
|
|
const Setting& root = cfg.getRoot();
|
|
|
|
|
|
|
|
|
|
// Output a list of all books in the inventory.
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
const Setting &effective_window = root["effective_window_roi"];
|
|
|
|
|
int count = effective_window.getLength();
|
|
|
|
|
|
|
|
|
|
int bin;
|
|
|
|
|
getBin(bin);
|
|
|
|
|
int spatialBin;
|
|
|
|
|
getspatialBin(spatialBin);
|
|
|
|
|
|
|
|
|
|
const Setting &window = effective_window[bin-1];
|
|
|
|
|
string spatialBinString;
|
|
|
|
|
if(spatialBin == 1)
|
|
|
|
|
{
|
|
|
|
|
spatialBinString = "spatialBin1";
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
spatialBinString = "spatialBin2";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const Setting &window = effective_window[spatialBinString];
|
|
|
|
|
string name = window.getName();
|
|
|
|
|
|
|
|
|
|
if(!(window.lookupValue("width", width)
|
|
|
|
@ -127,16 +170,25 @@ bool Configfile::getGainOffset(float &gain, float &offset)
|
|
|
|
|
{
|
|
|
|
|
const Setting& root = cfg.getRoot();
|
|
|
|
|
|
|
|
|
|
// Output a list of all books in the inventory.
|
|
|
|
|
try
|
|
|
|
|
{
|
|
|
|
|
const Setting &gainOffset = root["gainOffset"];
|
|
|
|
|
int count = gainOffset.getLength();
|
|
|
|
|
|
|
|
|
|
int bin;
|
|
|
|
|
getBin(bin);
|
|
|
|
|
int spectralBin;
|
|
|
|
|
getSpectralBin(spectralBin);
|
|
|
|
|
|
|
|
|
|
const Setting &gainOffsetSetting = gainOffset[bin-1];
|
|
|
|
|
string spectralBinString;
|
|
|
|
|
if(spectralBin == 1)
|
|
|
|
|
{
|
|
|
|
|
spectralBinString = "spectralBin1";
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
spectralBinString = "spectralBin2";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const Setting &gainOffsetSetting = gainOffset[spectralBinString];
|
|
|
|
|
string name = gainOffsetSetting.getName();
|
|
|
|
|
|
|
|
|
|
if(!(gainOffsetSetting.lookupValue("gain", gain)
|
|
|
|
@ -164,46 +216,51 @@ bool Configfile::createConfigFile()
|
|
|
|
|
Setting &root = cfg.getRoot();
|
|
|
|
|
|
|
|
|
|
// Add some settings to the configuration.
|
|
|
|
|
Setting &bin = root.add("bin", Setting::TypeInt) = 1;
|
|
|
|
|
Setting &SN = root.add("SN", Setting::TypeString) = "0098";
|
|
|
|
|
Setting &spatialBin = root.add("spatialBin", Setting::TypeInt) = 1;
|
|
|
|
|
Setting &SpectralBin = root.add("spectralBin", Setting::TypeInt) = 2;
|
|
|
|
|
|
|
|
|
|
Setting &effective_window = root.add("effective_window", Setting::TypeGroup);
|
|
|
|
|
Setting &effective_window_Bin1 = effective_window.add("bin1", Setting::TypeGroup);
|
|
|
|
|
Setting &effective_window_Bin1_spatial = effective_window_Bin1.add("spatial", Setting::TypeGroup);
|
|
|
|
|
Setting &effective_window_Bin1_Spectral = effective_window_Bin1.add("spectral", Setting::TypeGroup);
|
|
|
|
|
Setting &effective_window_Bin2 = effective_window.add("bin2", Setting::TypeGroup);
|
|
|
|
|
Setting &effective_window_Bin2_spatial = effective_window_Bin2.add("spatial", Setting::TypeGroup);
|
|
|
|
|
Setting &effective_window_Bin2_Spectral = effective_window_Bin2.add("spectral", Setting::TypeGroup);
|
|
|
|
|
|
|
|
|
|
effective_window_Bin1.add("width", Setting::TypeInt) = 1392;
|
|
|
|
|
effective_window_Bin1.add("offsetx", Setting::TypeInt) = 272;
|
|
|
|
|
effective_window_Bin1.add("height", Setting::TypeInt) = 300;
|
|
|
|
|
effective_window_Bin1.add("offsety", Setting::TypeInt) = 348;
|
|
|
|
|
effective_window_Bin1_spatial.add("width", Setting::TypeInt) = 1392;
|
|
|
|
|
effective_window_Bin1_spatial.add("offsetx", Setting::TypeInt) = 272;
|
|
|
|
|
effective_window_Bin1_Spectral.add("height", Setting::TypeInt) = 300;
|
|
|
|
|
effective_window_Bin1_Spectral.add("offsety", Setting::TypeInt) = 348;
|
|
|
|
|
|
|
|
|
|
effective_window_Bin2.add("width", Setting::TypeInt) = 712;
|
|
|
|
|
effective_window_Bin2.add("offsetx", Setting::TypeInt) = 128;
|
|
|
|
|
effective_window_Bin2.add("height", Setting::TypeInt) = 151;
|
|
|
|
|
effective_window_Bin2.add("offsety", Setting::TypeInt) = 174;
|
|
|
|
|
effective_window_Bin2_spatial.add("width", Setting::TypeInt) = 712;
|
|
|
|
|
effective_window_Bin2_spatial.add("offsetx", Setting::TypeInt) = 128;
|
|
|
|
|
effective_window_Bin2_Spectral.add("height", Setting::TypeInt) = 150;
|
|
|
|
|
effective_window_Bin2_Spectral.add("offsety", Setting::TypeInt) = 174;
|
|
|
|
|
|
|
|
|
|
Setting &effective_window_roi = root.add("effective_window_roi", Setting::TypeGroup);
|
|
|
|
|
Setting &effective_window_roi_Bin1 = effective_window_roi.add("bin1", Setting::TypeGroup);
|
|
|
|
|
Setting &effective_window_roi_Bin2 = effective_window_roi.add("bin2", Setting::TypeGroup);
|
|
|
|
|
Setting &effective_window_roi_spatialBin1 = effective_window_roi.add("spatialBin1", Setting::TypeGroup);
|
|
|
|
|
Setting &effective_window_roi_spatialBin2 = effective_window_roi.add("spatialBin2", Setting::TypeGroup);
|
|
|
|
|
|
|
|
|
|
effective_window_roi_Bin1.add("width", Setting::TypeInt) = 1364;
|
|
|
|
|
effective_window_roi_Bin1.add("offsetx", Setting::TypeInt) = 14;
|
|
|
|
|
effective_window_roi_spatialBin1.add("width", Setting::TypeInt) = 1364;
|
|
|
|
|
effective_window_roi_spatialBin1.add("offsetx", Setting::TypeInt) = 14;
|
|
|
|
|
// effective_window_roi_Bin1.add("height", Setting::TypeInt) = 300;
|
|
|
|
|
// effective_window_roi_Bin1.add("offsety", Setting::TypeInt) = 348;
|
|
|
|
|
|
|
|
|
|
effective_window_roi_Bin2.add("width", Setting::TypeInt) = 682;
|
|
|
|
|
effective_window_roi_Bin2.add("offsetx", Setting::TypeInt) = 15;
|
|
|
|
|
effective_window_roi_spatialBin2.add("width", Setting::TypeInt) = 682;
|
|
|
|
|
effective_window_roi_spatialBin2.add("offsetx", Setting::TypeInt) = 15;
|
|
|
|
|
// effective_window_roi_Bin2.add("height", Setting::TypeInt) = 151;
|
|
|
|
|
// effective_window_roi_Bin2.add("offsety", Setting::TypeInt) = 174;
|
|
|
|
|
|
|
|
|
|
Setting &gainOffset = root.add("gainOffset", Setting::TypeGroup);
|
|
|
|
|
Setting &gainOffsetBin1 = gainOffset.add("bin1", Setting::TypeGroup);
|
|
|
|
|
Setting &gainOffsetBin2 = gainOffset.add("bin2", Setting::TypeGroup);
|
|
|
|
|
Setting &gainOffsetSpectralBin1 = gainOffset.add("spectralBin1", Setting::TypeGroup);
|
|
|
|
|
Setting &gainOffsetSpectralBin2 = gainOffset.add("spectralBin2", Setting::TypeGroup);
|
|
|
|
|
|
|
|
|
|
gainOffsetBin1.add("gain", Setting::TypeFloat) = 2.00313433;
|
|
|
|
|
gainOffsetBin1.add("offset", Setting::TypeFloat) = -300.46283157590585;
|
|
|
|
|
gainOffsetSpectralBin1.add("gain", Setting::TypeFloat) = 2.00313433;
|
|
|
|
|
gainOffsetSpectralBin1.add("offset", Setting::TypeFloat) = -300.46283157590585;
|
|
|
|
|
|
|
|
|
|
gainOffsetBin2.add("gain", Setting::TypeFloat) = 4.00626868;
|
|
|
|
|
gainOffsetBin2.add("offset", Setting::TypeFloat) = -299.46126663407176;
|
|
|
|
|
gainOffsetSpectralBin2.add("gain", Setting::TypeFloat) = 4.00626868;
|
|
|
|
|
gainOffsetSpectralBin2.add("offset", Setting::TypeFloat) = -299.46126663407176;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Write out the new configuration.
|
|
|
|
|