1 | /* ------------------------------------------------------------------------- |
---|
2 | * trace_optics.h |
---|
3 | * |
---|
4 | * --- header file for trace_optics.h |
---|
5 | * |
---|
6 | * Copyright (c) 2000-2010 N.Sakaki, Y.Takizawa, Y.Kawasaki |
---|
7 | * All rights reserved. |
---|
8 | * $Id$ |
---|
9 | * ------------------------------------------------------------------------- |
---|
10 | */ |
---|
11 | #ifndef _NTRACE_OPTICS_H |
---|
12 | #define _NTRACE_OPTICS_H |
---|
13 | |
---|
14 | #include <stdio.h> |
---|
15 | #include "Nphoton.hh" |
---|
16 | |
---|
17 | #define FS_TOLERANCE 0.01 /* mm */ |
---|
18 | #define FS_DEF_STEP 0.1 /* mm */ |
---|
19 | #define FSLOOP_MAX 100 |
---|
20 | |
---|
21 | #define NSURFACES 9 |
---|
22 | #define SURFDOE NSURFACES |
---|
23 | #define NMATERIALS 8 |
---|
24 | |
---|
25 | namespace NTraceLens{ |
---|
26 | |
---|
27 | typedef struct _MatData{ |
---|
28 | char *name,*filename; |
---|
29 | int ndata,size; |
---|
30 | double *wl; |
---|
31 | double *n,*zn; |
---|
32 | double *k,*zk; |
---|
33 | } MatData; |
---|
34 | |
---|
35 | typedef struct _SurfData{ |
---|
36 | int ndata,size,matid; |
---|
37 | char *filename; |
---|
38 | double r_cut,r_lens,r_cutx; |
---|
39 | double Rc,Sz,Zc; |
---|
40 | double *r; |
---|
41 | double *z; |
---|
42 | } SurfData; |
---|
43 | |
---|
44 | typedef struct _tel_param{ |
---|
45 | char *name; |
---|
46 | int nmat; |
---|
47 | int flag_printray; |
---|
48 | int DOE_order; |
---|
49 | double DOE_efficiency; |
---|
50 | double r_wall, r_fs, r_cut_fs, r_cutx_fs; |
---|
51 | MatData material[NMATERIALS]; |
---|
52 | SurfData surface[NSURFACES+1]; |
---|
53 | double FS_C, FS_K, FS[4], FS_OFFSET; /* for FS */ |
---|
54 | double lambda0; /* nm */ |
---|
55 | char lens_dir[256]; |
---|
56 | } tel_param; |
---|
57 | |
---|
58 | |
---|
59 | |
---|
60 | int read_tel_param(char *filename, tel_param *param, FILE *fplog); |
---|
61 | int print_param(tel_param *p); |
---|
62 | int trace_main(tel_param *param, NPhoton *photon, FILE *fplog); |
---|
63 | double FocalSurface(double r, tel_param *p); |
---|
64 | }; |
---|
65 | #endif /* _TRACE_OPTICS_H */ |
---|