Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F93511208
structure.h
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Fri, Nov 29, 08:36
Size
16 KB
Mime Type
text/x-c
Expires
Sun, Dec 1, 08:36 (2 d)
Engine
blob
Format
Raw Data
Handle
22641806
Attached To
R1448 Lenstool-HPC
structure.h
View Options
#ifndef STRUCTURE_H
#define STRUCTURE_H
#include "dimension.h"
#include<gsl/gsl_matrix.h>
// Parameter constants
#define CX 0
#define CY 1
#define EPOT 2
#define EMASS 3
#define THETA 4
#define PHI 5
#define RC 6
#define B0 7
#define ALPHA 8
#define BETA 9
#define RCUT 10
#define MASSE 11
#define ZLENS 12
#define RCSLOPE 13
#define PMASS 14
#define OMEGAM 15
#define OMEGAX 16
#define WX 17
#define WA 18
#define SCX 19
#define SCY 20
#define SA 21
#define SB 22
#define SEPS 23
#define STHETA 24
#define SINDEX 25
#define SFLUX 26
#define VFCX 27
#define VFCY 28
#define VFVT 29
#define VFRT 30
#define VFI 31
#define VFTHETA 32
#define VFLCENT 33
#define VFSIGMA 34
/*
* structure definition
*/
/*****************************************************************/
/* */
/* Definition de type */
/* */
/*****************************************************************/
typedef struct
{
double re;
double im;
} complex;
/*****************************************************************/
/* */
/* structure point */
/* */
/*****************************************************************/
struct point
{
double x;
double y;
};
/*****************************************************************/
/* */
/* structure lens-data */
/* */
/*****************************************************************/
typedef struct
{
double alpha_now, x_now, kappa, dpl;
} lensdata;
/*****************************************************************/
/* */
/* Definition des structures de controle */
/* */
/*****************************************************************/
struct g_observ
{
int bruit;
int setbin;
int bin;
int setseeing;
int filtre;
double seeing;
double seeing_a;
double seeing_b;
double seeing_angle;
char psffile[FILENAME_SIZE];
double r0st;
double r0st_a;
double r0st_b;
double prec;
double SKY;
double gain;
int idum;
};
struct g_mode
{
int verbose;
int sort;
int grille;
int ngrille;
double zgrille;
int inverse; /* mode inversion de la lentille */
int itmax; /* iter. max lors de l'optimisation*/
double rate; /* rate in the bayesian optimisation*/
double minchi0; /* minimal chi2 for the optimisation*/
int ichi2; /* compute the chi2 with the given model and constraints*/
int image; /* flag pour fichier d'images */
char imafile[FILENAME_SIZE];
int source; /* flag pour fichier de sources */
char sourfile[FILENAME_SIZE];
/* from an image file compute only the source catalogue */
int sof; /* flag pour fichier de sources */
char imsfile[FILENAME_SIZE];
char sfile[FILENAME_SIZE];
/* correlate shear with model */
int icorshear; /* flag pour fichier de correlation */
char corshfile[FILENAME_SIZE];
/* etude pour le comportement local des image */
int local; /* flag d'etude de e_i dans le repere local */
char localfile[FILENAME_SIZE];
/* etude pour l'inversion des arclets en fonction du redshift */
int study; /* flag d'etude de e_s en fonction de z_s */
char studyfile[FILENAME_SIZE];
int fake;
int mean;
double seeing;
/* etude pour le calcul du amplification du plan image */
int iampli;
int nampli;
double zampli;
char amplifile[FILENAME_SIZE];
/* etude pour le calcul du poten du plan image */
int ipoten;
int npoten;
double zpoten;
char potenfile[FILENAME_SIZE];
/* etude pour le calcul du mass du plan image */
int imass;
int nmass;
double zmass;
char massfile[FILENAME_SIZE];
/* etude pour le calcul du dpl du plan image */
int idpl;
int ndpl;
double zdpl;
char dplxfile[FILENAME_SIZE];
char dplyfile[FILENAME_SIZE];
/* etude pour le calcul du curvature du plan image */
int icurv;
int ncurv;
double zcurv;
char cxxfile[FILENAME_SIZE];
char cxyfile[FILENAME_SIZE];
char cyyfile[FILENAME_SIZE];
/* etude pour le calcul du shear-field du plan image */
int ishearf;
double zshearf;
char shearffile[FILENAME_SIZE];
int nshearf;
/* etude pour le calcul du amplification-field du plan image */
int iamplif;
double zamplif;
char ampliffile[FILENAME_SIZE];
/* etude pour le calcul du shear du plan image */
int ishear;
int nshear;
double zshear;
char shearfile[FILENAME_SIZE];
/* etude pour le calcul du time_delay du plan image */
int itime;
int ntime;
double ztime;
char timefile[FILENAME_SIZE];
/* etude pour le calcul des props du plan image */
int prop;
int nprop;
double zprop;
char propfile[FILENAME_SIZE];
double radius;
double masse;
/* visualisation pixelise du champ */
int pixel;
int npixel;
char pixelfile[FILENAME_SIZE];
/* datacube */
int cube;
int nslices;
char cubefile[FILENAME_SIZE];
/* Reference absolue */
int iref;
double ref_ra;
double ref_dec;
/* calcul des markers sources de markers images donnes */
int marker;
double zmarker;
char markfile[FILENAME_SIZE];
/* etude d'une coupe des props du plan image */
int radial;
double zradial;
double theta;
/* visualisation pixelise du plan source */
int iclean;
double zclean;
/* center of multiple images file */
char centerfile[FILENAME_SIZE];
};
/* potfile parameters */
struct g_pot
{
int potid; // 1: pot P, 2: pot Q
int ftype;
char potfile[FILENAME_SIZE];
int type;
double zlens;
double core;
double corekpc;
double mag0;
int select;
int ircut;
double cut, cut1, cut2;
double cutkpc1, cutkpc2;
int isigma;
double sigma, sigma1, sigma2;
int islope;
double slope, slope1, slope2;
int ivdslope;
double vdslope, vdslope1, vdslope2;
int ivdscat;
double vdscat, vdscat1, vdscat2;
int ircutscat;
double rcutscat, rcutscat1, rcutscat2;
int ia; // scaling relation of msm200
double a, a1, a2;
int ib; // scaling relation of msm200
double b, b1, b2;
};
/* dynfile parameters */
struct g_dyn {
int dyntype;
int dynnumber;
double dynvel;
double dynevel;
double indmass;
double indemass;
double refradius;
};
// parameters of an image in pixels with WCS coordinates
struct g_pixel
{
int column;
int ech;
int format;
char pixfile[FILENAME_SIZE];
int ncont;
char outfile[FILENAME_SIZE];
char contfile[10][FILENAME_SIZE];
double pixelx;
double pixely;
int header;
double xmin;
double xmax;
double ymin;
double ymax;
int nx;
int ny;
double meanFlux;
struct WorldCoor *wcsinfo;
};
struct g_cube
{
int format;
char pixfile[FILENAME_SIZE];
double xmin;
double xmax;
double ymin;
double ymax;
double lmin;
double lmax;
double pixelx;
double pixely;
double pixelz;
int nx;
int ny;
int nz;
int header;
double meanFlux;
struct WorldCoor *wcsinfo;
};
struct g_image
{
int random;
int nzlim;
int npcl;
/* shear map parameteres */
int shmap;
double zsh, dl0ssh, dossh, drsh;
char shfile[FILENAME_SIZE];
/* arclets parameteres */
int stat;
int statmode;
char arclet[FILENAME_SIZE];
char nza[10]; /*index of the redshift known arclet in z_arclet*/
double zarclet;
double drarclet;
double sigell, dsigell; // ellipticity of sources and associated error
double sig2ell;
// source plane fitting
int srcfit; // boolean yes/no
long int nsrcfit; // number of points in srcfit global variable
char srcfitFile[FILENAME_SIZE]; // name of the srcfit catalog of points
char srcfitMethod[50]; // source plane fitting method
/* multiple arcs parameteres */
int forme;
int n_mult;
int mult_abs;
int mult[NFMAX];
char multfile[FILENAME_SIZE];
double sig2pos[NFMAX][NIMAX]; // position error per system
double **weight; // inverse of covariance matrix
double detCov; // determinant of the covariance matrix
double sig2amp;
double Dmag;
int adjust;
char Afile[FILENAME_SIZE];
int Anx;
int Any;
int Abin;
int Anfilt;
int Anpixseeing;
double Apixel;
double Aseeing;
double Axmin;
double Axmax;
double Aymin;
double Aymax;
double Amean;
double Adisp;
};
struct g_source
{
int grid;
int rand;
long int ns;
int distz;
double emax;
double zs;
double zsmin;
double zsmax;
double par1; // for Smail et al. distrib
double par2;
double par3;
double taille;
double lfalpha;
double lfm_star;
double lfm_min;
double lfm_max;
};
struct g_grille
{
int ngrid; // number of cells in source-image plane inversion
int pol; // boolean : 0 regular grid, 1 polar grid
long int nlens; // size of lens[] list
long int nplens[NPOTFILE+1]; // array of potfile starting indexes in lens[]
int npot; // number of potfiles
long int nlens_crit; // number of lens for which the critical lines have to be computed
long int no_lens; // individual clump to optimise index in lens[]
long int nmsgrid; // multi-scale grid final index in lens[]
char splinefile[FILENAME_SIZE];
double xmin;
double xmax;
double ymin;
double ymax;
double dx;
double dy;
int nx;
int ny;
int echant;
double exc;
double excmin;
double **invmat; // msgrid transformation matrix between vector Sigma and sig2
};
// Multi-scale grid definition
struct g_msgrid
{
double threshold; // splitting threshold
int levels; // number of splitting
double param; // for PIEMD grid : rcut/rcore
char gridfile[FILENAME_SIZE];// file containing the description of a grid
};
struct g_cline
{
int nplan;
double cz[NPZMAX];
int zone;
int npzone;
char zonefile[FILENAME_SIZE];
double cpas; // minimum size of the squares in MARCHINGSQUARES or initial step size in SNAKE
double dmax;
char algorithm[20]; //SNAKE or MARCHINGSQUARES algorithm for critical lines search
double limitHigh; // maximum size of the squares in MARCHINGSQUARES algorithm
};
struct g_frame
{
double xmin;
double xmax;
double ymin;
double ymax;
double lmin;
double lmax;
double rmax;
};
struct g_large
{
double dlarge;
char iname[50];
int vitesse;
int iso;
int nmaxiso;
double scale;
double zonex;
double zoney;
int profil;
int pt;
int ncourbe;
int npt;
};
struct g_cosmo
{
//function g_cosmo_equal make comparison of two g_cosmo structures
//see distcosmo2_cash.c
int model; //TV
double omegaM;
double omegaX;
double kcourb;
double wX;
double wa;
double H0;
double h;
};
/*****************************************************************/
/* */
/* Definition des types */
/* */
/*****************************************************************/
struct polar
{
double r;
double theta;
};
struct segment
{
double dist;
int k;
};
struct matrix
{
double a;
double b;
double c;
double d;
};
struct vecteur
{
double x;
double y;
};
struct biline
{
int i;
struct point I;
struct point S;
};
struct ellipse
{
double a;
double b;
double theta;
};
struct pointgal
{
int n;
struct point C;
double z;
};
struct pointell
{
struct point C;
struct ellipse E;
};
struct shear
{
int n;
struct point C;
double mx;
double my;
double dx;
double dy;
double err;
};
//"class" for cashing results of distcosmo2 (see cosmoratio.c )
struct distcosmo2_cash
{
//you should initialise distcosmo2_cash before using
//set z1 = 0 z2 = 0 dsl=0 (or run distcosmo2_cash_init)
//or define it as global variables which will set zero automatically
//Of course, in c++ life is easy and we simple could write constructor
struct g_cosmo C; //cosmologe for which dls = distcosmo2(z1,z2) was calculated
double z1, z2;
double dls; //cashing value
};
//"members" of "class" distcosmo2_cash
//you should run distcosmo2_cash_init after creatig distcosmo2_hash
void distcosmo2_cash_init(struct distcosmo2_cash* cash);
//calculate distcosmo2(z1,z2) and store result in the case
//or get value from the cash if we've already calculated it
double distcosmo2_cash_request(struct distcosmo2_cash* cash, double z1, double z2);
struct galaxie
{
char n[IDSIZE];
struct point C;
struct point Grad; // total deflection with all clumps
struct ellipse E;
char c;
int type;
double magabs;
double mag;
double flux;
double mu;
double I0;
double z;
double dl0s; // DLS distcosmo2 between lens[0] and z
double dos; // DOS distance to z
double dr; // ratio dl0s/dos
double q;
double eps;
double tau;
double dis;
double A;
double ep;
double tp;
double dp;
double thp;
double taux;
double tauy;
double time;
double kappa;
double gamma1;
double gamma2;
double var1; // multipurpose variable1
double var2; // multipurpose variable2
struct point grad; // deflection due to the not optimised clumps
struct matrix grad2; // absolute projected potential of the not optimised clumps
struct point *np_grad; // deflection due to non parametric clumps with b0=1
double *np_grad2a; // laplacian due to non parametric clumps with b0=1
double *np_grad2b; // laplacian due to non parametric clumps with b0=1
double *np_grad2c; // laplacian due to non parametric clumps with b0=1
struct distcosmo2_cash dls_cash; //cash of distcosmo2 result
struct point (*gsource)[NGGMAX][NGGMAX]; //we use it only for single image families!
//(see chi2SglImage function in o_chi.c)
//gsource is a 2D map of G.ngrid^2 points in the source plane defined
//by dlsds. Each point in gsource is linked to a single point in the
//gimage global variable. Those 2 maps define a kind of bijection
//between the source and the image planes.
double grid_dr; //dlsds ratio for the grid used from source to image plane
};
struct gal_pol
{
int n;
struct polar C;
struct ellipse E;
double z;
};
struct z_lim
{
int opt;
char n[128];
int bk;
int bk0; // opt_mc stuff golse2002
double percent; // opt_mc stuff golse2002
double min;
double max;
double err;
double ddmin;
double ddmax;
double dderr;
double excu;
double excd;
};
struct sigposStr
{
int bk;
double min;
double max;
double prec;
double excu;
double excd;
};
struct propertie
{
int n;
struct point P;
double k;
double s;
double e;
double t;
double q;
double theta;
double d;
double A;
double g;
};
struct ligne
{
double i;
double e;
double theta;
};
struct line
{
double e;
double theta;
double i;
double phi;
};
struct cline
{
int n;
struct point C;
double phi;
double dl;
double z;
double dos; // distcosmo1 to redshift z
double dl0s; // distcosmo2 between lens[0] and z
double dlsds; // ratio of dl0s/dos
};
struct pot
{
int type;
char n[IDSIZE];
struct point C;
double epot;
double emass;
double theta;
double phi; // triaxiality
double sigma;
double rc;
double rckpc;
double rcut;
double rcutkpc;
double alpha;
double beta;
double rcslope;
double z;
double dlsds; /*ratio D(LS)/D(OS) angular distances*/
double psicut;
double psimcut;
double psiccut;
double b0;
double masse;
double pmass;
double cr;
double ct;
double mag;
double lum;
double mtol;
double effradius;
// double omegaM;
// double omegaX;
// double wX;
};
struct ipot
{
int pmax;
int map;
int map_z;
int lens[10];
int para[10];
int lens_z[10];
int para_z[10];
int zlim[2];
int extend;
int masse;
};
struct triplet
{
struct point a;
struct point b;
struct point c;
};
struct bitriplet
{
struct triplet i;
struct triplet s;
};
struct chaine
{
struct triplet S;
struct triplet I;
struct chaine *F;
};
struct arbre
{
struct galaxie *N;
struct arbre *FG;
struct arbre *FD;
};
struct variation
{
struct point C;
double elip;
double theta;
};
struct pixlist
{
double i;
double j;
double flux;
};
struct MCarlo
{
int optMC;
int n_MonteCarlo;
int iterations;
int squares_par;
int tosses_sq;
};
//velocity field
struct vfield
{
double vt;
double rt;
struct point C;
double i;
double theta;
double lcent;
double sigma;
int profile;
};
#endif // if STRUCTURE_H
Event Timeline
Log In to Comment