File: SOLEIL_ANATOMIX.instr

package info (click to toggle)
mccode 3.5.19%2Bds5-2
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 1,113,256 kB
  • sloc: ansic: 40,697; python: 25,137; yacc: 8,438; sh: 5,405; javascript: 4,596; lex: 1,632; cpp: 742; perl: 296; lisp: 273; makefile: 226; fortran: 132
file content (190 lines) | stat: -rw-r--r-- 7,349 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
/*******************************************************************************
* Instrument: SOLEIL_ANATOMIX
*
* %Identification
* Written by: J. Perrin and E. Farhi
* Date: 2022-03-23
* Origin: Synchrotron SOLEIL
* %INSTRUMENT_SITE: SOLEIL
*
* The ANATOMIX tomography beam-line at Synchrotron SOLEIL.
*
* %Description
* The beamline ANATOMIX (Advanced Nanotomography and Imaging with coherent X rays)
* works at photon energies between 5 and 50 keV. It is dedicated to full-field
* radiography and tomography in absorption and phase contrast, with pixel sizes
* from 20 nm to 20 µm.
*
* ANATOMIX is a beamline for X-ray tomography on the micro- and nanoscale, in
* absorption and phase contrast. It operates in the energy range from 5 keV upward
* and allows its users to obtain two- and three-dimensional radiographic images of
* bulk volume samples of macroscopic size (up to several cm thickness). For
* smaller samples, a spatial resolution down to 50 nm (20 nm pixel size) can be
* achieved. Real-time studies are possible at speeds of currently up to one
* microtomography scan per second; higher speeds up to 20 volume scans per second
* (50 ms per scan) have been demonstrated.
*
* A flexible sample interface enables in situ and/or operando studies under
* conditions similar to the natural or working environment of the samples
* (temperature, humidity, mechanical load, transport processes). Biological
* samples can be measured without dehydration and, in many cases, without chemical
* fixation. With suitable sample preparation, cellular imaging without cryogenic
* environment is possible.
*
* This is a simplified model with an Undulator, a double channel-cut monochromator,
* a sample stage and a detector. It models a parallel beam full field tomograph.
* The monochromator is an Si(111), the sample is made of Ge. The sample is 2 cm
* wide.
*
* List of important beamline elements. Distances are given from the center of the undulator.
*
* Element | Distance (m) | Description  |Hutch
* --------|--------------|--------------|-------------------
* Diaphragm       | 22.7 | Rectangular aperture | 2.5 × 2 mm2 (h×v). | OH1
* Vertical slit   | 23.2 | Horizontal aperture 100. . .300 μm, removable. Increases horizontal transverse coherence where needed. |
* Primary slits   | 25.9 | Define footprint on mirror and other optics. |
* Attenuators     | 34.6 | Protect transfocator and other downstream elements. | OH3
* Mirror M1       | 35.3 | Horiz. deflection. Useful length 400 mm. Bender for horiz. focusing (focal length 3.5 m). Coatings: B4C, Rh, Pt. Grazing angle ≈ 3 mrad. |
* Mirror M2       | 36.3 | Horiz. deflection. Plane mirror, steers beam back into direction parallel to direct beam, offset 5 mm. Same length, angle and coatings as M1. |
* Transfocator    | 37.7 | Beryllium lenses. |
* Vertical slit   | 38.8 | Defines horizontal secondary source when mirror is used. |
* Secondary slits | 48.4 | Define footprint on monochromators. | OH4
* Attenuators     | 48.8 | Filter out low energies, especially when using DMM. |
* DMM             | 49.8 | Under design. Vertical deflection, beam offset 20 mm. Tentative specs: two strips Ru/B4C, Ir/B4C, d = 2.4 nm. 400-mm substrates. |
* DCM             | 52.7 | Vertical deflection, beam offset 20 mm. Si(111), LN2-cooled. |
* EH3             | 165.7-174.1 | Guard slits; TXM sample stage and zone-plate table;  microtomography sample stage; detector table | EH3
* EH4             | 197.2-208.5 | Guard slits; microtomography sample stage; detector table; X-ray grating interferometer | EH4
*
* %Example: -n 1e5 E0=17 Detector: psd_monitor_after_cc_I=8.7e+17
*
* %Parameters
* E0:    [keV] Energy selected at the Undulator.
* Emono: [keV] Energy selected at the monochromator. When 0, it is set to E0.
* dE:    [keV] Energy spread at the Undulator.
* ANGLE: [deg] Rotation angle of the sample stage.
* sample:[str] Sample geometry file, OFF/PLY format.
* 
* %Link
* https://www.synchrotron-soleil.fr/en/beamlines/anatomix
* %Link
* T Weitkamp et al 2017 J. Phys.: Conf. Ser. 849 012037 DOI: 10.1088/1742-6596/849/1/012037
*
* %E
*******************************************************************************/
DEFINE INSTRUMENT SOLEIL_ANATOMIX(E0=11, Emono=0, dE=1, ANGLE=0, string sample="wire.ply")

DECLARE
%{
    double calculated_angle;
%}

INITIALIZE
%{
    if (Emono==0) Emono=E0;
    
    if (E0-dE < Emono && Emono < E0+dE) {
    
      double arg=12398.42*sqrt(3)/(2*5.4309*Emono*1e3);
      if (fabs(arg) > 1)
        exit(printf("%s: ERROR: Monochromator can not reach this energy.\n", NAME_INSTRUMENT));
      calculated_angle = RAD2DEG*asin(arg);
    } else {
      exit(printf("%s: ERROR: Monochromator energy is outside the Undulator bandwidth.\n", NAME_INSTRUMENT));
    }
%}

TRACE

COMPONENT origin = Progress_bar()
AT (0, 0, 0) RELATIVE ABSOLUTE

// Undulator U18
COMPONENT source=Undulator(
 E0=E0, dE=dE, Ee=2.75, dEe=0.001, Ie=0.5, 
 K=1.03118, Nper=140, lu=3.2e-2, 
 sigex=267.9e-6, sigey=8.4e-6, sigepx=30.1e-6, sigepy=3.9e-6, 
 dist=50, E1st=12.400)
AT (0, 0, 0) RELATIVE PREVIOUS

COMPONENT e_repartition_before_cc = Monitor_nD(
    xwidth=0.01, 
    yheight=0.01, 
    restore_xray=1, 
    options="auto energy, y", bins=100,
    filename="e_repartition_before_cc")
AT (0, 0, 50) RELATIVE PREVIOUS

COMPONENT psd_monitor_before_cc = PSD_monitor(
    filename="psd_monitor_before_cc.dat", 
    xwidth=0.01, 
    yheight=0.01)
AT (0, 0, 0) RELATIVE PREVIOUS

// double channel-cut monochromator at about 50 m from undulator
COMPONENT bragg_crystal = Bragg_crystal(
    crystal_type=2)
AT (0, 0, 0.1) RELATIVE PREVIOUS
ROTATED (-calculated_angle, 0, 0) RELATIVE PREVIOUS

COMPONENT arm = Arm()
AT (0, 0, 0) RELATIVE PREVIOUS
ROTATED (-calculated_angle, 0, 0) RELATIVE PREVIOUS

COMPONENT bragg_crystal_two = Bragg_crystal(
    crystal_type=2)
AT (0, 0.01, calculated_angle ? 0.01/tan(calculated_angle*DEG2RAD) : 0) RELATIVE bragg_crystal
ROTATED (calculated_angle, 0, 0) RELATIVE PREVIOUS

COMPONENT arm_two = Arm()
AT (0, 0, 0) RELATIVE PREVIOUS
ROTATED (calculated_angle, 0, 0) RELATIVE PREVIOUS


COMPONENT psd_after_cc = PSD_monitor(
  xwidth =0.1 , yheight=0.1 ,
  filename="psd_after_cc2",restore_xray = 1) 
AT (0,0,1) RELATIVE PREVIOUS

COMPONENT e_monitor_before_sample = E_monitor(
    filename="e_monitor_before_sample.dat", 
    xwidth=1, 
    yheight=1, 
    Emin=E0-dE, 
    Emax=E0+dE, 
    nE=500,
    restore_xray=1)
AT (0, 0, 1) RELATIVE PREVIOUS

COMPONENT psd_repartition_after_cc = PSD_monitor(
  xwidth =.1 , yheight=.1 ,
  filename="psd_repartition_after_cc",restore_xray = 1) 
AT (0,0,0) RELATIVE PREVIOUS

COMPONENT sample_rotation_stage = Arm()
AT (0, 0, 150) RELATIVE PREVIOUS

// sample at about 200 m from Undulator
COMPONENT sample = Filter(material_datafile="Ge.txt",
    geometry=sample,xwidth=0.02,yheight=0,zdepth=0)
AT (0, 0, 0) RELATIVE PREVIOUS
ROTATED (0,ANGLE,0) RELATIVE PREVIOUS

COMPONENT e_monitor_after_sample = E_monitor(
    filename="e_monitor_after_sample.dat", 
    xwidth=1, 
    yheight=1, 
    Emin=E0-E0*0.1, 
    Emax=E0+E0*0.1, 
    nE=500,
    restore_xray=1)
AT (0, 0, 0.5) RELATIVE sample_rotation_stage

COMPONENT psd_monitor_after_cc = PSD_monitor(
    filename="psd_monitor_after_sample.dat", nx=512, ny=512,
    xwidth=.02, 
    yheight=.02)
AT (0, 0, 0) RELATIVE PREVIOUS


END