Commit d56ee4fc authored by Johann Cohen-Tanuji's avatar Johann Cohen-Tanuji
Browse files

Merge branch 'master' into '37-python-needs-a-proper-installation-scheme-properly-documented'

# Conflicts:
#   .gitignore
parents c6a1dd5c 8b2f06b8
......@@ -2,8 +2,8 @@
doc/latex
doc/html
build
dist
bin
dist
doc/html
source/*.o
source/mag_gal
......@@ -19,5 +19,8 @@ test/photoz/cpp/*.out
test/photoz/fortran
test/WORK/*
test/*.out
test/Id*.spec
lephare/*.so
lephare.egg-info/
*__pycache__*
*/*.DS_Store
MARA23032010/CB1_0_LOIII4.sed A
MARA23032010/S0_template_norm.sed A
MARA23032010/Sb_template_norm.sed A
MARA23032010/Spi4_template_norm.sed A
MARA23032010/M82_template_norm.sed A
MARA23032010/I22491_template_norm.sed.save A
MARA23032010/Sey18_template_norm.sed A
MARA23032010/Sey2_template_norm.sed A
MARA23032010/S0_10_QSO2_90.sed A
MARA23032010/S0_20_QSO2_80.sed A
MARA23032010/S0_30_QSO2_70.sed A
MARA23032010/S0_40_QSO2_60.sed A
MARA23032010/S0_50_QSO2_50.sed A
MARA23032010/S0_60_QSO2_40.sed A
MARA23032010/S0_70_QSO2_30.sed A
MARA23032010/S0_80_QSO2_20.sed A
MARA23032010/S0_90_QSO2_10.sed A
MARA23032010/Mrk231_template_norm.sed A
MARA23032010/I22491_90_TQSO1_10.sed A
MARA23032010/I22491_80_TQSO1_20.sed A
MARA23032010/I22491_70_TQSO1_30.sed A
MARA23032010/I22491_60_TQSO1_40.sed A
MARA23032010/I22491_50_TQSO1_50.sed A
MARA23032010/I22491_40_TQSO1_60.sed A
MARA23032010/pl_I22491_30_TQSO1_70.sed A
MARA23032010/pl_I22491_20_TQSO1_80.sed A
MARA23032010/pl_I22491_10_TQSO1_90.sed A
MARA23032010/pl_QSOH_template_norm.sed A
MARA23032010/pl_QSO_DR2_029_t0.spec A
MARA23032010/pl_TQSO1_template_norm.sed A
/*
17/11/14
......@@ -259,7 +260,7 @@ void SED::writeSED(ofstream& ofsBin, ofstream& ofsPhys, ofstream& ofsDoc) {
ofsDoc << "MOD_" << nummod << " " << setw(6) << jtype << " " << setw(6) << nbw << " " << setw(10) << " " << name << endl;
// Info screen
cout << "Done with SED " << name << " \r " << flush;
// cout << "Done with SED " << name << " \r " << flush;
return;
......@@ -1246,24 +1247,18 @@ void GalSED::generateEmPhys(double zmet, double qi) {
// For Z < 0.03 in solar unit, Z1=0.0004
double Z1_line[65] = { 22.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.245, 0.245, 0.295, 0.203, 0.27, 0.015, 0.005, 0.002, 0.256, 0.109, 0.466, 0.036, 0.01, 1.0, 1.097, 3.159, 0.003, 0.0, 0.096, 0.008, 0.009, 0.005, 2.87, 0.015, 0.026, 0.037, 0.029, 0.028, 0.027, 0.012, 0.007, 0.067, 0.0, 0.0, 0.0, 0.0, 0.0, 0.232, 0.352, 0.165, 0.0906, 0.0368, 0.0366, 0.0254, 0.0184, 0.0138, 0.0106, 0.0185, 0.00666, 0.00541, 0.0884, 0.0471, 0.0281, 0.0186, 0.0127, 0.00914, 0.00683, 0.00524 };
// Ratio from Patrice Cloudy
// double Z1_line[65] = {25.498, 0.0, 0.125, 0.257, 0.003, 0.037, 0.377, 0.416, 0.568, 0.505, 0.209, 0.317, 4026.191, 0.007, 0.002, 0.265, 0.082, 0.478, 0.041, 0.01, 1.0, 2.521, 7.521, 0.001, 0.001, 0.104, 0.019, 0.019, 0.02, 2.779, 0.058, 0.029, 0.076, 0.058, 0.026, 0.093, 0.013, 0.011, 0.022, 0.19, 0.478, 0.002, 0.002, 0.002, 0.222, 0.296, 0.152, 0.086, 0.053, 0.036, 0.025, 0.018, 0.0138, 0.0106, 0.0185, 0.00666, 0.00541, 0.065, 0.04, 0.025, 0.017, 0.012, 0.009, 0.00683, 0.00524 };
// check
longEL = sizeof(Z1_line)/sizeof(Z1_line[0]);
if(longEL!= 65)cout << " Error with size of lines Z1 " << longEL << endl;
// 0.03 < Z <= 0.3 in solar unit, Z2=0.004
double Z2_line[65] = { 22.2, 0.0, 0.058, 0.0, 0.0, 0.0, 0.31, 0.896, 0.896, 0.416, 0.192, 0.283, 0.015, 0.017, 0.007, 0.256, 0.066, 0.466, 0.036, 0.014, 1.0, 1.617, 4.752, 0.01, 0.0, 0.108, 0.041, 0.017, 0.059, 2.87, 0.175, 0.03, 0.188, 0.138, 0.023, 0.071, 0.027, 0.014, 0.176, 0.2, 0.51, 0.0, 0.0, 0.0, 0.225, 0.352, 0.165, 0.0906, 0.0368, 0.0366, 0.0254, 0.0184, 0.0138, 0.0106, 0.0185, 0.00666, 0.00541, 0.0884, 0.0471, 0.0281, 0.0186, 0.0127, 0.00914, 0.00683, 0.00524 };
// Ratio from Patrice Cloudy
// double Z2_line[65] = { 23.988, 0.0, 0.018, 0.116, 0.004, 0.073, 0.612, 0.753, 1.023, 0.315, 0.211, 0.26, 0.015, 0.013, 0.004, 0.265, 0.022, 0.477, 0.043, 0.014, 1.0, 1.631, 4.866, 0.005, 0.003, 0.111, 0.036, 0.015, 0.081, 2.801, 0.238, 0.031, 0.196, 0.149, 0.023, 0.117, 0.016, 0.014, 0.028, 0.279, 0.701, 0.003, 0.004, 0.003, 0.218, 0.312, 0.159, 0.089, 0.055, 0.037, 0.026, 0.019, 0.0138, 0.0106, 0.0185, 0.00666, 0.00541, 0.07, 0.042, 0.027, 0.018, 0.012, 0.009, 0.00683, 0.00524};
// Check
longEL = sizeof(Z2_line)/sizeof(Z2_line[0]);
if(longEL!= 65)cout << " Error with size of lines Z2 " << longEL << endl;
// 0.3 < Z in solar unit, Z3-Z5=0.008-0.05
double Z3_line[65] = { 22.2, 0.11, 0.01, 0.18, 0.01, 0.29, 0.07, 1.505, 1.505, 0.3, 0.107, 0.159, 0.015, 0.029, 0.011, 0.256, 0.01, 0.466, 0.05, 0.0, 1.0, 1.399, 4.081, 0.03, 0.01, 0.14, 0.13, 0.03, 0.136, 2.87, 0.404, 0.03, 0.3, 0.21, 0.04, 0.035, 0.026, 0.014, 0.086, 0.365, 0.945, 0.048, 0.058, 0.054, 0.229, 0.352, 0.165, 0.0906, 0.0368, 0.0366, 0.0254, 0.0184, 0.0138, 0.0106, 0.0185, 0.00666, 0.00541, 0.0884, 0.0471, 0.0281, 0.0186, 0.0127, 0.00914, 0.00683, 0.00524 };
// Ratio from Patrice Cloudy
// double Z3_line[65] = { 23.637, 0.11, 0.0, 0.004, 0.0, 0.012, 0.113, 0.277, 0.369, 0.043, 0.214, 0.175, 0.015, 0.006, 0.002, 0.263, 0.001, 0.474, 0.048, 0.0, 1.0, 0.289, 0.863, 0.004, 0.001, 0.125, 0.009, 0.003, 0.139, 2.856, 0.409, 0.036, 0.203, 0.158, 0.022, 0.065, 0.002, 0.001, 0.015, 0.196, 0.493, 0.001, 0.002, 0.001, 0.22, 0.337, 0.168, 0.094, 0.058, 0.038, 0.027, 0.019, 0.0138, 0.0106, 0.0185, 0.00666, 0.00541, 0.078, 0.047, 0.029, 0.019, 0.013, 0.01, 0.00683, 0.00524};
// Check
longEL = sizeof(Z3_line)/sizeof(Z3_line[0]);
if(longEL!= 65)cout << " Error with size of lines Z3 " << longEL << endl;
......@@ -1688,7 +1683,7 @@ void GalSED::writeSED(ofstream& ofsBin, ofstream& ofsPhys, ofstream& ofsDoc) {
ofsDoc << "MOD_" << nummod << " " << setw(6) << jtype << " " << setw(6) << nbw << " " << setw(10) << age << " " << name << endl;
// Info screen
cout << "Done with SED " << name << " Age " << age << " \r " << flush;
// cout << "Done with SED " << name << " Age " << age << " \r " << flush;
}
......@@ -1770,7 +1765,6 @@ void GalSED::writeLib(string outasc, ofstream& ofsBin, ofstream& ofsDat, vector<
double dummy = -99.0;
nrec++;
// number of filters
int nbFlt=mag.size();
......@@ -2067,7 +2061,6 @@ void GalSED::fillPhys(const vector<double>& phys)
*/
void GalSED::fit(const onesource& source, const int imagm, const string zfix, const double consideredZ, const double lmasi, const double lmass,const double magabsB[2], const double magabsF[2], const double funz0, const int bp[2]){
// Initialize the chi2 by a crazy high value in case there is no fit
chi2=1e9;
// Case ZFIX=YES with the spec-z already set, reject other solutions in the library
......@@ -2080,7 +2073,7 @@ void GalSED::fit(const onesource& source, const int imagm, const string zfix, c
// Upper-limits
for (int k=0;k<imagm;k++){
if (source.bused[k]==1 && source.sab[k]<=0 && (dm*(flux[k]))>source.ab[k]){
reject=1;
reject=1;
}
}
// Use mass scaling for model rejection
......@@ -2252,9 +2245,9 @@ void QSOSED::writeLib(string outasc, ofstream& ofsBin, ofstream& ofsDat, vector<
nrec++;
// Info screen
cout << "Compute magnitudes for QSO SEDs " << name << " z " << setw(6) << red << " Ext law " << extlawId << " E(B-V) " << ebv;
cout << " \r " << flush;
// cout << "Compute magnitudes for QSO SEDs " << name << " z " << setw(6) << red << " Ext law " << extlawId << " E(B-V) " << ebv;
// cout << " \r " << flush;
// number of filters
int nbFlt=mag.size();
// Write the library in a binary file
......@@ -2494,7 +2487,7 @@ void StarSED::writeLib(string outasc, ofstream& ofsBin, ofstream& ofsDat, vector
nrec++;
// Info screen
cout << "Compute magnitudes for SED " << name << " \r " << flush;
// cout << "Compute magnitudes for SED " << name << " \r " << flush;
// number of filters
int nbFlt=mag.size();
......
......@@ -4,7 +4,7 @@
#include <string>
#include <bitset>
#define MAX_CONTEXT 128
#define MAX_CONTEXT 1024
#define CHECK_CONTEXT_BIT(context, n) (std::bitset<MAX_CONTEXT>(context).test(n))
using namespace std;
......
......@@ -66,6 +66,11 @@ Mag::Mag(keymap & key_analysed){
}
// Output file in ascii ?
outasc = ((key_analysed["LIB_ASCII"]).split_string("NO",1))[0];
// Want to display the template number on the screen
// VERBOSE output file - YES default
verbose = ((key_analysed["VERBOSE"]).split_string("YES",1))[0];
}
// destructor of the class Mag cleaning all the vectors
......@@ -536,8 +541,10 @@ void GalMag::read_SED(){
// Info screen
//Display in the right order, even when the code is parrallelized
cout << "SED " << oneSEDInt.name << " z " << setw(6) << oneSEDInt.red;
cout << " Ext law " << extlaw[i] << " E(B-V) " << ebv[j] << " Age " << oneSEDInt.age << " \r " << flush;
if(verbose[0]=='Y' || verbose[0]=='y'){
cout << "SED " << oneSEDInt.name << " z " << setw(6) << oneSEDInt.red;
cout << " Ext law " << extlaw[i] << " E(B-V) " << ebv[j] << " Age " << oneSEDInt.age << " \r " << flush;
}
// Cleaning
oneSEDInt.clean();
......@@ -819,9 +826,10 @@ void QSOMag::read_SED(){
// Info screen
//Display in the right order, even when the code is parrallelized
cout << "SED " << oneSEDInt.name << " z " << setw(6) << oneSEDInt.red;
cout << " Ext law " << extlaw[i] << " E(B-V) " << ebv[j] << " \r " << flush;
if(verbose[0]=='Y' || verbose[0]=='y'){
cout << "SED " << oneSEDInt.name << " z " << setw(6) << oneSEDInt.red;
cout << " Ext law " << extlaw[i] << " E(B-V) " << ebv[j] << " \r " << flush;
}
// Cleaning
oneSEDInt.clean();
......@@ -938,7 +946,7 @@ void StarMag::read_SED(){
allSED.push_back(oneSED);
// Info screen
cout << "Read SED " << oneSED.name << " z " << setw(6) << oneSED.red << " \r " << flush;
if(verbose[0]=='Y' || verbose[0]=='y')cout << "Read SED " << oneSED.name << " z " << setw(6) << oneSED.red << " \r " << flush;
}
}
......
......@@ -20,7 +20,7 @@
class Mag{
protected:
string config, typ;
string config, typ, verbose;
cosmo lcdm;
string filtFile, magtyp, outasc;
vector<string> extlaw;
......
......@@ -59,7 +59,7 @@ int main (int argc, char *argv[])
//List of the keywords to be found in the config file/command line
string list_keywords[] = {"t","COSMOLOGY","FILTER_FILE","MAGTYPE","EXTINC_LAW","EB_V","MOD_EXTINC","ZGRID_TYPE","Z_STEP","GAL_LIB_IN","QSO_LIB_IN","STAR_LIB_IN","GAL_LIB_OUT","QSO_LIB_OUT","STAR_LIB_OUT","LIB_ASCII","EM_LINES","EM_DISPERSION"};
string list_keywords[] = {"t","COSMOLOGY","FILTER_FILE","MAGTYPE","EXTINC_LAW","EB_V","MOD_EXTINC","ZGRID_TYPE","Z_STEP","GAL_LIB_IN","QSO_LIB_IN","STAR_LIB_IN","GAL_LIB_OUT","QSO_LIB_OUT","STAR_LIB_OUT","LIB_ASCII","EM_LINES","EM_DISPERSION","VERBOSE"};
//Number of keywords
int nb_ref_key= (int)(sizeof(list_keywords)/sizeof(list_keywords[0]));
......
......@@ -70,8 +70,6 @@ void onesource::readsource(const string line,const int cat_fmt,const string catt
}
cout << "Read source " << spec << " context " << cont << " spectro-z " << zs << " \r " << flush;
return;
}
......@@ -322,11 +320,15 @@ void onesource::substellar(const string substar, vector<flt> allFilters){
void onesource::errors(const vector<double> min_err, const vector<double> fac_err,const int imagm){
// check if the number of filters in min_err corresponds to the expected one
if( (size_t)imagm== min_err.size()){
if( (size_t)imagm== min_err.size() || min_err.size()==1){
for(int k=0; k<imagm; k++){ // loop over the filters
if(sab[k]>0){
sab[k]=1.086*sab[k]/ab[k];
sab[k]=sqrt(pow(sab[k],2.)+pow(min_err[k],2.)); // Add in quadrature
if(min_err.size()>1){
sab[k]=sqrt(pow(sab[k],2.)+pow(min_err[k],2.)); // Add in quadrature
}else{
sab[k]=sqrt(pow(sab[k],2.)+pow(min_err[0],2.)); // Add in quadrature
}
// Put abs(ab[k]) if negative flux
sab[k]=abs(ab[k])*sab[k]/1.086;
}
......@@ -337,9 +339,13 @@ void onesource::errors(const vector<double> min_err, const vector<double> fac_er
// multiply all the errors in flux by a common factor
// check if the number of filters in fac_err corresponds to the expected one
if((size_t)imagm==fac_err.size()){
if((size_t)imagm==fac_err.size() || fac_err.size()==1){
for(int k=0; k<imagm; k++){
if(sab[k]>0) sab[k]=sab[k]*fac_err[k];}
if(fac_err.size()>1){
if(sab[k]>0) sab[k]=sab[k]*fac_err[k];
}else{
if(sab[k]>0) sab[k]=sab[k]*fac_err[0];}
}
}else{
cout << " Can not add error in quadrature: dimension of fac_err " << imagm << " " << fac_err.size() << endl;
}
......@@ -1394,7 +1400,7 @@ void onesource::limits(vector<SED*> fulllib, vector<double> limits_zbin,int limi
double diff=0;
// Check if feasible
if(indmin[0]>=0){
if((indmin[0]>=0) && (size_t)(indmin[0])<fulllib.size()-1){
// Loop over the redshift bin for the selection filter
FltSel=-1;
......@@ -1412,10 +1418,10 @@ void onesource::limits(vector<SED*> fulllib, vector<double> limits_zbin,int limi
// check if the difference between the observed magnitude and magnitude limit
while(diff < (MagSel - mab[FltSel]) ){
// check if the difference between the observed magnitude at the minimum redshift and maximum redshift
diff = fulllib[indmin[0]+deca]->mag_ori[FltSel] - fulllib[indmin[0]]->mag_ori[FltSel];
deca+=1;
// Check that we are below the size of the library
if((size_t)(indmin[0]+deca)>=fulllib.size()-1){deca-=1 ; break;}
// Check that we didn't reach the maximum redshift of this model
......@@ -1483,6 +1489,9 @@ void onesource::writeSpec(vector<SED*> fulllib, vector<SED*> fulllibIR, cosmo lc
GalSED SED_gal(*(fulllib[ind0]));
// Associate the right emission lines
SED_gal.fac_line=SED_emSave.fac_line;
// For spherex, try fac_line at 0
for(size_t it=0; it<SED_gal.fac_line.size(); it++){
SED_gal.fac_line[it].val=0.;}
if(consiz>0){
// Generate the spectra at the right redshift, opacity, emission lines
SED_gal.generate_spectra(consiz,dmmin[0],opaAll);
......
......@@ -76,6 +76,10 @@ PhotoZ::PhotoZ(keymap& key_analysed)
// CAT_OUT output file - zphot.out default
outf = ((key_analysed["CAT_OUT"]).split_string("zphot.out",1))[0];
// Want to display the template number on the screen
// VERBOSE output file - YES default
verbose = ((key_analysed["VERBOSE"]).split_string("YES",1))[0];
/* SECONDARY OPTIONS */
// CAT_TYPE Type of catalogue (short: read only Id mag err; long: add context zs ...) - SHORT default
......@@ -86,7 +90,13 @@ PhotoZ::PhotoZ(keymap& key_analysed)
int nerr = int(min_err.size());
// ERR_FACTOR Multiply the flux uncertainties by a given factor - 1.0 default
fac_err = ((key_analysed["ERR_FACTOR"]).split_double("1.0",nerr)); //should be # of filters instead of nerr
fac_err = ((key_analysed["ERR_FACTOR"]).split_double("1.0",-1));
int nfac = int(fac_err.size());
if((nerr>1) && (nfac>1) && (nfac!=nerr)){
cout << "The number of filters in ERR_SCALE and ERR_FACTOR do not correspond." << endl;
cout << " Error in the keywords. " << endl;
cout << " Stop " << endl;
}
// BD_SCALE Bands used for the scaling - 0 default (all bands)
bdscal = ((key_analysed["BD_SCALE"]).split_long("0",1))[0];
......@@ -885,7 +895,7 @@ PhotoZ::run_autoadapt()
adaptSources[k].zmin[0]=adaptSources[k].zs;
adaptSources[k].interp_lib(fullLib,imagm,lcdm);
}
cout << " Fit source for adapt " << adaptSources[k].spec << " \r " << flush;
if(verbose[0]=='Y' || verbose[0]=='y')cout << " Fit source for adapt " << adaptSources[k].spec << " \r " << flush;
}
// run auto-adapt
auto_adapt(adaptSources,a0,a1,converge,iteration);
......@@ -972,7 +982,6 @@ vector<vector<int>> bestFilter(int nbFlt, vector<double> gridz, vector<SED*> ful
vector<vector<int>> bestFlt;
vector<int> bestFlt_z;
int j=0;
// Loop over the grid in redshift
for(size_t i=0; i<gridz.size();i++){
......@@ -1102,7 +1111,6 @@ void minimizekcolor(vector<double> gridz, vector<SED*> fulllib, vector<vector<in
int imagm=bestFlt[0].size();
int nbz=bestFlt.size();
// initialize the maximum and minimum values
for(int i=0; i<nbz;i++){ // Loop over all redshifts
for (int k=0; k<imagm;k++){ // loop over all filters
......@@ -1127,8 +1135,7 @@ void minimizekcolor(vector<double> gridz, vector<SED*> fulllib, vector<vector<in
}
}
int nbPossi=possiFlt.size();
// loop over the reference filters to be considered
for (int r=0; r<imagm; ++r){
......@@ -1278,7 +1285,6 @@ void PhotoZ::run_photoz(const GalMag& opaOut, const vector<double>& a0,
// MIN_THRES threshold to trigger the detection - 0.1 by default
double min_thres =((keys["MIN_THRES"]).split_double("0.1",1))[0];
/* Define what are the filters to be used for the absolute magnitude depending on the method adopted */
// MABS_METHOD method to compute the absolute magnitudes
int method = ((keys["MABS_METHOD"]).split_int("0",-1))[0];
......@@ -1344,6 +1350,7 @@ void PhotoZ::run_photoz(const GalMag& opaOut, const vector<double>& a0,
onesource oneObj(nobj,gridz);
// Read the object
oneObj.readsource(line,cat_fmt,cattyp,imagm);
if(verbose[0]=='Y' || verbose[0]=='y')cout << "Read source " << oneObj.spec << " spectro-z " << oneObj.zs << " \r " << flush;
// Use zspec from external file
// open the external file with zspec
if ( externalzfile.substr(0, 4)!="NONE" ){
......@@ -1399,8 +1406,7 @@ void PhotoZ::run_photoz(const GalMag& opaOut, const vector<double>& a0,
if((methz[0]=='M' || methz[0]=='m') && (zfix[0]=='N' || zfix[0]=='n')){
oneObj.chimin[0]=1.e9;
oneObj.fit(fullLib,imagm,"YES",oneObj.zml,lmasi,lmass,magabsB,magabsF,funz0,bp);
}
}
// Interpolation at the new redshift (only gal for the moment)
oneObj.interp_lib(fullLib,imagm,lcdm);
// Compute absolute magnitudes
......
......@@ -21,7 +21,7 @@ class PhotoZ
long gbcont, contforb, bdscal;
double lmasi, lmass, funz0, adzmin, adzmax, auto_thresmin, auto_thresmax, min_thres, dz_win;
double fir_lmin, fir_cont, fir_scale;
string fir_frsc, substar;
string verbose,fir_frsc, substar;
double magabsB[2],magabsF[2];
bool outsp,outchi;
string cat, methz, zfix, typm, catmag, cattyp, zmulti, zintp, outf, outpara, outpdz, pdztype;
......
......@@ -52,7 +52,7 @@ int main (int argc, char *argv[])
*/
//List of the keywords to be found in the config file/command line
string list_keywords[] = {"t","GAL_SED","GAL_FSCALE","GAL_LIB","SEL_AGE","AGE_RANGE","QSO_SED","QSO_FSCALE","QSO_LIB","STAR_SED","STAR_LIB","STAR_FSCALE"};
string list_keywords[] = {"t","GAL_SED","GAL_FSCALE","GAL_LIB","SEL_AGE","AGE_RANGE","QSO_SED","QSO_FSCALE","QSO_LIB","STAR_SED","STAR_LIB","STAR_FSCALE"};
//Number of keywords
int nb_ref_key= (int)(sizeof(list_keywords)/sizeof(list_keywords[0]));
......
......@@ -52,7 +52,7 @@ int main (int argc, char *argv[])
//List of the keywords to be found in the config file/command line
string list_keywords[] = {"CAT_IN","INP_TYPE","CAT_MAG","CAT_FMT","CAT_LINES","ZPHOTLIB","PARA_OUT","CAT_OUT","CAT_TYPE","ERR_SCALE","ERR_FACTOR","BD_SCALE","GLB_CONTEXT","FORB_CONTEXT","MASS_SCALE","MAG_ABS","MAG_ABS_AGN","MAG_REF","NZ_PRIOR","ZFIX","Z_INTERP","EXTERNALZ_FILE","RM_DISCREPENT_BD","Z_RANGE","EBV_RANGE","DZ_WIN","MIN_THRES","PROB_INTZ","SPEC_OUT","FIR_LIB","FIR_LMIN","FIR_CONT","FIR_SCALE","FIR_FREESCALE","FIR_SUBSTELLAR","MABS_METHOD","MABS_CONTEXT","MABS_REF","MABS_FILT","MABS_ZBIN","RF_COLORS","M_REF","Z_METHOD","APPLY_SYSSHIFT","AUTO_ADAPT","ADAPT_BAND","ADAPT_LIM","ADAPT_CONTEXT","ADAPT_ZBIN","PDZ_OUT","PDZ_TYPE","PDZ_MABS_FILT","ADD_EMLINES","ADDITIONAL_MAG","LIMITS_ZBIN","LIMITS_MAPP_REF","LIMITS_MAPP_SEL","LIMITS_MAPP_CUT"};
string list_keywords[] = {"CAT_IN","INP_TYPE","CAT_MAG","CAT_FMT","CAT_LINES","ZPHOTLIB","PARA_OUT","CAT_OUT","VERBOSE","CAT_TYPE","ERR_SCALE","ERR_FACTOR","BD_SCALE","GLB_CONTEXT","FORB_CONTEXT","MASS_SCALE","MAG_ABS","MAG_ABS_AGN","MAG_REF","NZ_PRIOR","ZFIX","Z_INTERP","EXTERNALZ_FILE","RM_DISCREPENT_BD","Z_RANGE","EBV_RANGE","DZ_WIN","MIN_THRES","PROB_INTZ","SPEC_OUT","FIR_LIB","FIR_LMIN","FIR_CONT","FIR_SCALE","FIR_FREESCALE","FIR_SUBSTELLAR","MABS_METHOD","MABS_CONTEXT","MABS_REF","MABS_FILT","MABS_ZBIN","RF_COLORS","M_REF","Z_METHOD","APPLY_SYSSHIFT","AUTO_ADAPT","ADAPT_BAND","ADAPT_LIM","ADAPT_CONTEXT","ADAPT_ZBIN","PDZ_OUT","PDZ_TYPE","PDZ_MABS_FILT","ADD_EMLINES","ADDITIONAL_MAG","LIMITS_ZBIN","LIMITS_MAPP_REF","LIMITS_MAPP_SEL","LIMITS_MAPP_CUT"};
//Number of keywords
int nb_ref_key= (int)(sizeof(list_keywords)/sizeof(list_keywords[0]));
......
......@@ -95,6 +95,7 @@ ZPHOTLIB CE_COSMOS,STAR_COSMOS,QSO_COSMOS # Library used for Chi2 (max:3)
#------------------ Output catalog Name ---------------------------------
CAT_OUT zphot.out # Output catalog (-> working directory)
PARA_OUT output.para # Ouput parameters (full path)
VERBOSE YES # Display the templates/objects which are computed
#
################# PHOTOMETRIC REDSHIFTS OPTIONS
# FIR LIBRARY
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment