File: ESS_IN5_reprate.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 (355 lines) | stat: -rw-r--r-- 15,235 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
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
/*******************************************************************************
*
* McStas, neutron ray-tracing package
*         Copyright (C) 1997-2008, All rights reserved
*         Risoe National Laboratory, Roskilde, Denmark
*         Institut Laue Langevin, Grenoble, France
*
* Instrument: ESS_IN5_reprate
*
* %Identification
* Written by: Kim Lefmann (kim.lefmann@risoe.dk), Helmuth Schober, Feri Mezei
* Date: September 20, 2006
* Origin:ESS
* %INSTRUMENT_SITE: ESS
*
* An IN5 type (cold chopper) multi-frame spectrometer at ESS LPTS
*
* %Description
* McStas instrument for simulating IN5-TYPE (cold chopper) multi-frame spectrometer at ESS LPTS.
* The sample is incoherent with an inelastic tunneling line.
*
* %Example: Lmin=4.9 Detector: PSDfast2_I=1.18335e+10
*
* %Parameters
* Lmin: [AA]              Minimum wavelength emitted by the moderator
* Lmax: [AA]              Maximum wavelength emitted by the moderator
* lambda0: [AA]           Target wavelength for the monochromating crystal
* Pulse_width: [s]        Length of the long pulse. Default to 2 ms.
* Num_pulses: [1]         Number of pulses to simulate. Default 1.
* GUI_start: [m]          Distance from moderator to guide start
* FO1_DIST: [m]           Distance from moderator to FO1 chopper
* L_ballistic_begin: [m]  Length of expanding ballistic section in the beginning of the guide
* L_ballistic_end: [m]    Length of compressing ballistic section in the end of the guide
* Length: [m]             Total length of spectrometer (moderator to F2)
* SAMPLE_DIST: [m]        Distance from F2 to sample
* DETECTOR_DIST: [m]      Length sample-detector
* GUI_h: [m]              Height of guide opening at entry
* GUI_w: [m]              Width of guide opening at entry
* H1: [m]                 Height of guide elements
* H2: [m]                 Height of guide elements
* H3: [m]                 Height of guide elements
* H4: [m]                 Height of guide elements
* W1: [m]                 Width of guide elements
* W2: [m]                 Width of guide elements
* W3: [m]                 Width of guide elements
* W4: [m]                 Width of guide elements
* GUI_GAP: [m]            Gap between guides due to chopper hardware
* H_chop: [m]             Height at F2 chopper position
* W_chop: [m]             Width at F2 chopper position
* H_end: [m]              Height of guide opening at exit
* W_end: [m]              Width of guide opening at exit
* ALPHA: [m]              Parameter for supermirrors in guides, Swiss Neutronics best at 3.4
* M: [1]                  Parameter for supermirrors in guides, Swiss Neutronics best at 4
*
* F_slow1: [Hz]           Frequency of the FO1 chopper
* F_slow2: [Hz]           Frequency of the FO2 chopper
* F_fast1: [Hz]           Frequency of the F1 chopper
* F_fast2: [Hz]           Frequency of the F2 chopper
* N_fast: [1]             Number of symmetric openings in the fast F choppers
* SLOW1_THETA: [deg]      Opening angle of the FO1 chopper
* FO3: [1]                Inverse frequency of FO3 chopper (if 1, same as F2; if 2, half of F2, etc.)
* THETA_fast1: [deg]      Opening angle of the F1 chopper
* FAST_THETA: [deg]       Opening angle of the F2 chopper
* Gamma: [meV]            Width of sample quasielastic scattering (0=elastic)
* Etun: [meV]             Tunneling energy
* V_HOLE: [m]             Radius of hole in V sample (must be smaller than the outer radius: 0.01)
* FRAC_QUASIEL: [1]       Fraction of the sample that scatters quasielastically
* TT: [deg]               2Theta (or a4) scattering angle
* RES_DE: [meV]           Adjustable zoom for energy monitor at detector position
* FRAC_TUNNEL: [ ]        Fraction of the sample that scatters on the tunneling peaks   
* cold: [ ]               Fraction of neutrons emitted from the cold moderatorx
*
* %Link
* The <a href="http://wwwold.ill.fr/Computing/links/meetings/ESS-LP/">ESS-Rencurel</a> website.
* %Link
* <a href="http://www.ill.fr/in5">The IN5@ILL Yellow Pages</a>
*
* %End
*******************************************************************************/
DEFINE INSTRUMENT ESS_IN5_reprate(Lmin=4.9, Lmax=5.1, lambda0=5, Pulse_width=2.857e-3, Num_pulses=1, GUI_start=2.0,  FO1_DIST=6, L_ballistic_begin=19.5, L_ballistic_end=17, Length=100, SAMPLE_DIST=1.2,  DETECTOR_DIST=4, GUI_h=0.105, GUI_w=0.1, GUI_GAP=0.05, H1=0.167, W1=0.116, H2=0.185, W2=0.15, H3=0.19, W3=0.15, H4=0.213, W4=0.14, H_chop=0.075, W_chop=0.03, H_end=0.042,  W_end=0.0215, ALPHA=3.4, M=3.5, F_slow1=16.6667, F_slow2=0, F_fast1=0, F_fast2=200,  N_fast=1, SLOW1_THETA=120, FO3=1, THETA_fast1=180, FAST_THETA=5, Gamma=0, Etun=1,  V_HOLE=0, FRAC_QUASIEL=0, FRAC_TUNNEL=0, TT=50, RES_DE=0.5, cold=0.95)

DECLARE
%{
        double FREQ;
        double t_FO1, t_FO2, t_fast1, t_fast2, t_fast2a, t_fast3, t_sample, t_detector;
        double tmin_zoom, tmax_zoom, t_offset;
        double E_target;
%}

INITIALIZE
%{
        FREQ = ESS_SOURCE_FREQUENCY;
        t_offset=Pulse_width/2.0+170e-6;
        t_FO1 = FO1_DIST*lambda0/(2*PI*K2V)+t_offset;
        t_FO2 = Length/2*lambda0/(2*PI*K2V)+t_offset;
        t_fast1 = (Length/2+0.1)*lambda0/(2*PI*K2V)+t_offset;
        t_fast2 = Length*lambda0/(2*PI*K2V)+t_offset;
        t_fast2a = (Length+GUI_GAP)*lambda0/(2*PI*K2V)+t_offset;
        t_fast3 = (Length+2*GUI_GAP)*lambda0/(2*PI*K2V)+t_offset;
        t_sample = (Length+SAMPLE_DIST)*lambda0/(2*PI*K2V)+t_offset;
        t_detector = (Length+SAMPLE_DIST+DETECTOR_DIST)*lambda0/(2*PI*K2V)+t_offset;
        tmin_zoom = t_fast2*1e6-1e3;
        tmax_zoom = t_fast2*1e6+1e3;
        E_target = VS2E*(K2V*2*PI/lambda0)*(K2V*2*PI/lambda0);
%}

TRACE


/* Displaced wrt Origin - as it has a volume... */
COMPONENT source = ESS_butterfly(sector="W",beamline=5,Lmin=Lmin,Lmax=Lmax,dist=GUI_start,target_index=6,cold_frac=cold,focus_xw = GUI_w, focus_yh = GUI_h, n_pulses=Num_pulses)
  AT (0, 0, -0.1) ABSOLUTE


COMPONENT Origin = Progress_bar()
  AT (0,0,0) ABSOLUTE

COMPONENT TOFmoderator_zoom = TOF_monitor(
    nt = 1000, filename = "TOFmoderator_zoom.dat", xwidth = 0.12,
    yheight = 0.12, tmin = 0, tmax = 5000, restore_neutron=1)
    AT (0, 0, 1E-6) RELATIVE Origin

COMPONENT TOFmoderator = TOF_monitor(
    nt = 1000, filename = "TOFmoderator.dat", xwidth = 0.12,
    yheight = 0.12, tmin = 0, tmax = 3.0e5, restore_neutron=1)
  AT (0, 0, 1E-6) RELATIVE Origin

COMPONENT Lmon_guistart = L_monitor(
    nL = 1000, filename = "Lmon_guistart.dat", xwidth = GUI_w+0.01,
    yheight = GUI_h+0.01, Lmin = 0, Lmax = Lmax+1)
  AT (0, 0, GUI_start-2e-6) RELATIVE Origin

COMPONENT Lmon_normalize = L_monitor(
    nL = 2880, filename = "Lmon_guistart_normalize.dat", xwidth = 0.10,
    yheight = 0.10, Lmin = 0, Lmax = 20)
  AT (0, 0, GUI_start-1e-6) RELATIVE Origin



COMPONENT Guide1 = Guide(
    w1 = GUI_w, h1 = GUI_h, w2 = W1, h2 = H1, l = FO1_DIST-GUI_start-GUI_GAP/2, R0 = 1,
    alpha = ALPHA, m = M, W = 0.003)
  AT (0, 0, GUI_start) RELATIVE Origin

COMPONENT Lmonslow1 = L_monitor(
    nL = 200, filename = "Lmonslow1.dat", xwidth = 0.06,
    yheight = 0.21, Lmin = 0, Lmax = Lmax+1)
  AT (0, 0, FO1_DIST-2e-6) RELATIVE Origin

COMPONENT PSDslow1 = PSD_monitor(
    filename = "PSDslow1.dat", xwidth = 0.1, yheight = 0.25)
  AT (0, 0, FO1_DIST-1e-6) RELATIVE Origin

COMPONENT FOchop1 = DiskChopper(
    yheight=0.20, theta_0 = SLOW1_THETA, radius = 0.6, nu = F_slow1, nslit = 1, delay = t_FO1)
  AT (0, 0, FO1_DIST) RELATIVE Origin

COMPONENT TOFLmon1 = TOFLambda_monitor(
    nL = 200, nt = 200, filename = "TOFLmon1.dat", tmin = 0,
    tmax = 3e5, xwidth = 0.05, yheight = 0.21, Lmin = 0,
    Lmax = Lmax+1)
  AT (0, 0, 1e-6) RELATIVE FOchop1

COMPONENT Lmon_afterslow1 = L_monitor(
    nL = 200, filename = "Lmon_afterslow1.dat", xwidth = 0.06,
    yheight = 0.21, Lmin = 0, Lmax = Lmax+1)
  AT (0, 0, 2e-6) RELATIVE FOchop1

COMPONENT PSD_afterslow1 = PSD_monitor(
    filename = "PSD_afterslow1.dat", xwidth = 0.1, yheight = 0.25)
  AT (0, 0, 3e-6) RELATIVE FOchop1

COMPONENT Guidelong1 = Guide(
    w1 = W1, h1 = H1, w2 = W2, h2 = H2,
    l = L_ballistic_begin+GUI_start-FO1_DIST-GUI_GAP/2,
    R0 = 1, alpha = ALPHA, m = M, W = 0.003)
  AT (0, 0, GUI_GAP/2) RELATIVE FOchop1

COMPONENT Guidelong1b = Guide(
    w1 = W2, h1 = H2, w2 = W3, h2 = H3, l = Length/2-L_ballistic_begin-GUI_start-GUI_GAP/2,
    R0 = 1, alpha = ALPHA, m = M, W = 0.003)
  AT (0, 0, L_ballistic_begin+GUI_start) RELATIVE Origin

COMPONENT Lmon_slow2 = L_monitor(
    nL = 200, filename = "Lmon_slow2.dat", xwidth = 0.06,
    yheight = 0.21, Lmin = 0, Lmax = Lmax+1)
  AT (0, 0, Length/2-1e-6) RELATIVE Origin

COMPONENT FOchop2 = DiskChopper(
     yheight=0.6, theta_0 = 155, radius=0.6, nu = F_slow2, nslit = 1, delay = t_FO2)
  AT (0, 0.1, Length/2) RELATIVE Origin

COMPONENT Fastchop1 = DiskChopper(
    yheight=0.5, theta_0 = THETA_fast1, radius = 0.5, nu = F_fast1, nslit = N_fast, delay = t_fast1)
  AT (0, 0.1, Length/2+GUI_GAP) RELATIVE Origin

COMPONENT PSD_afterslow2 = PSD_monitor(
    filename = "PSD_afterslow2.dat", xwidth = 0.1, yheight = 0.25)
  AT (0, -0.1, 1e-6) RELATIVE Fastchop1

COMPONENT Lmon_afterslow2 = L_monitor(
    nL = 200, filename = "Lmon_afterslow2.dat", xwidth = 0.06,
    yheight = 0.21, Lmin = 0, Lmax = Lmax+1)
  AT (0, 0, 1e-6) RELATIVE PREVIOUS

COMPONENT TOFL_afterslow2 = TOFLambda_monitor(
    nL = 200, nt = 200, filename = "TOFL_afterslow2.dat", tmin = 0,
    tmax = 3.0e5, xwidth = 0.05, yheight = 0.21, Lmin = 0,
    Lmax = Lmax+1)
  AT (0, 0, 1e-6) RELATIVE PREVIOUS

COMPONENT Guidelong2 = Guide(
    w1 = W3, h1 = H3, w2 = W4, h2 = H4, l = Length/2-2*GUI_GAP-L_ballistic_end,
    R0 = 1, alpha = ALPHA, m = M, W = 0.003)
  AT (0, -0.1, GUI_GAP/2) RELATIVE Fastchop1

COMPONENT Lmon_beforeballistic = L_monitor(
    nL = 200, filename = "Lmon_before_ballistic.dat", xwidth = 0.06,
    yheight = 0.18, Lmin = 0, Lmax = Lmax+1)
  AT (0, 0, Length/2-2*GUI_GAP-L_ballistic_end+1e-6) RELATIVE Guidelong2

COMPONENT PSD_beforeballistic = PSD_monitor(
    filename = "PSD_beforeballistic.dat", xwidth = 0.1, yheight = 0.25)
  AT (0, 0, 1e-6) RELATIVE PREVIOUS

COMPONENT Guidelong2a = Guide(
    w1 = W4, h1 = H4, w2 = W_chop, h2 = H_chop, l = L_ballistic_end,
    R0 = 1, alpha = ALPHA, m = M, W = 0.003)
  AT (0, 0, 1e-6) RELATIVE PREVIOUS

COMPONENT Lmonfast2 = L_monitor(
    nL = 200, filename = "Lmonfast2.dat", xwidth = 0.06,
    yheight = 0.18, Lmin = 0, Lmax = Lmax+1)
  AT (0, 0, L_ballistic_end+1e-6) RELATIVE PREVIOUS

COMPONENT Lmonfast2_zoom = L_monitor(
    nL = 200, filename = "Lmonfast2_zoom.dat", xwidth = 0.06,
    yheight = 0.18, Lmin = lambda0-0.2, Lmax = lambda0+0.2)
  AT (0, 0, 1e-6) RELATIVE PREVIOUS

COMPONENT TOFLfast2 = TOFLambda_monitor(
    nL = 200, nt = 200, filename = "TOFLfast2.dat", tmin = 0,
    tmax = 3.0e5, xwidth = 0.05, yheight = 0.12, Lmin = 0,
    Lmax = Lmax+1)
  AT (0, 0, 1e-6) RELATIVE PREVIOUS

COMPONENT TOFLfast2zoom = TOFLambda_monitor(
    nL = 200, nt = 200, filename = "TOFLfast2_zoom.dat", tmin = tmin_zoom,
    tmax = tmax_zoom, xwidth = 0.05, yheight = 0.12, Lmin = lambda0-0.2,
    Lmax = lambda0+0.2)
  AT (0, 0, 1e-6) RELATIVE PREVIOUS

COMPONENT PSDfast2 = PSD_monitor(
    filename = "PSDfast2.dat", xwidth = 0.1, yheight = 0.25)
  AT (0, 0, 1e-6) RELATIVE PREVIOUS

COMPONENT Fastchop2 = DiskChopper(
    yheight=0.35, theta_0 = FAST_THETA, radius = 0.35, nu = F_fast2, nslit = N_fast, delay = t_fast2)
  AT (0, 0.04, Length) RELATIVE Origin

COMPONENT Fastchop2counter = DiskChopper(
    yheight=0.35, theta_0 = FAST_THETA, radius = 0.35, nu = -F_fast2, nslit = N_fast, delay = -t_fast2a)
  AT (0, 0.04, Length+GUI_GAP) RELATIVE Origin

COMPONENT FOchop3 = DiskChopper(
    yheight=0.35, theta_0 = 2*FAST_THETA, radius = 0.35, nu = F_fast2/FO3, nslit = N_fast, delay = t_fast3)
  AT (0, 0.04, Length+2*GUI_GAP) RELATIVE Origin

COMPONENT TOFfast2_zoom = TOF_monitor(
    nt = 100, filename = "TOF_fast2.dat", xwidth = 1.1,
    yheight = 1.2, tmin = 1e6*t_fast3-2e2, tmax = 1e6*t_fast3+2e2)
  AT (0, -0.04, 1e-6) RELATIVE PREVIOUS

COMPONENT Lmon_afterfast2 = L_monitor(
    nL = 500, filename = "Lmon_afterfast2.dat", xwidth = 0.06,
    yheight = 0.18, Lmin = 0, Lmax = Lmax+1)
  AT (0, 0, 1e-6) RELATIVE PREVIOUS

COMPONENT TOFL_afterfast2 = TOFLambda_monitor(
    nL = 200, nt = 200, filename = "TOF_afterfast2.dat", tmin = 0,
    tmax = 3.0e5, xwidth = 0.05, yheight = 0.12, Lmin = 0,
    Lmax = Lmax+1)
  AT (0, 0, 1e-6) RELATIVE PREVIOUS

COMPONENT TOFL_afterfast2_zoom = TOFLambda_monitor(
    nL = 200, nt = 200, filename = "TOFL_afterfast2_zoom.dat", tmin = tmin_zoom,
    tmax = tmax_zoom, xwidth = 0.05, yheight = 0.12, Lmin = lambda0-0.2,
    Lmax = lambda0+0.2)
  AT (0, 0, 1e-6) RELATIVE PREVIOUS

COMPONENT PSD_afterfast2 = PSD_monitor(
    filename = "PSD_afterfast2.dat", xwidth = 0.1, yheight = 0.25)
  AT (0, 0, 1e-6) RELATIVE PREVIOUS

COMPONENT Guidesample = Guide(
    w1 = W_chop, h1 = H_chop, w2 = W_end, h2 = H_end, l = SAMPLE_DIST-4*GUI_GAP,
    R0 = 1, alpha = ALPHA, m = M, W = 0.003)
  AT (0, 0, GUI_GAP/2) RELATIVE PREVIOUS

COMPONENT Lmon_guideend = L_monitor(
    nL = 1000, filename = "Lmon_guideend.dat", xwidth = W_end+0.01,
    yheight = H_end+0.01, Lmin = 0, Lmax = Lmax+1)
  AT (0, 0, SAMPLE_DIST-4*GUI_GAP+1e-6) RELATIVE PREVIOUS

COMPONENT PSDsample = PSD_monitor(
    filename = "PSDsample.dat", xwidth = 0.1, yheight = 0.25)
  AT (0, 0, SAMPLE_DIST-3*GUI_GAP+1e-6) RELATIVE PREVIOUS

COMPONENT TOFsample_zoom = TOF_monitor(
    nt = 500, filename = "TOF_sample.dat", xwidth = 0.02,
    yheight = 0.04, tmin = 1e6*t_sample-5e4, tmax = 1e6*t_sample+5e4)
  AT (0, 0, 1e-6) RELATIVE PREVIOUS

COMPONENT Esample = E_monitor(
    nE = 400, filename = "Esample", xwidth = 0.02,
    yheight = 0.04, Emin = E_target-RES_DE, Emax = E_target+RES_DE)
  AT (0, 0, 1e-6) RELATIVE PREVIOUS

COMPONENT Lmon_sample_zoom = L_monitor(
    nL = 100, filename = "LMON_sample_zoom.dat", xwidth = 0.02,
    yheight = 0.04, Lmin = lambda0-0.1, Lmax = lambda0+0.1)
  AT (0, 0, 1e-6) RELATIVE PREVIOUS

COMPONENT sample = Tunneling_sample(
    thickness = 0.01-V_HOLE, radius = 0.01, yheight = 0.04, p_interact = 1,
    f_QE = FRAC_QUASIEL, f_tun=FRAC_TUNNEL, gamma = Gamma, E_tun = Etun,
    focus_xw = 0.015, focus_yh = 0.015, target_index = 2)
  AT (0, -0.04, SAMPLE_DIST) RELATIVE Fastchop2

COMPONENT detectorarm = Arm(
    )
  AT (0, 0, 0) RELATIVE sample
  ROTATED (0,TT,0) RELATIVE sample

COMPONENT TOFdetector = TOF_monitor(
    nt = 512, filename = "TOF.dat", xwidth = 0.015,
    yheight = 0.015, tmin = 0, tmax = 2e5)
  AT (0, 0, DETECTOR_DIST) RELATIVE detectorarm

COMPONENT TOFdetector_zoom = TOF_monitor(
    nt = 100, filename = "TOF_zoom.dat", xwidth = 0.015,
    yheight = 0.015, tmin = 1e6*t_detector-10e2, tmax = 1e6*t_detector+10e2)
  AT (0, 0, 1e-6) RELATIVE PREVIOUS

COMPONENT Edetector = E_monitor(
    nE = 400, filename = "Edet", xwidth = 0.015,
    yheight = 0.015, Emin = E_target-RES_DE, Emax = E_target+RES_DE)
  AT (0, 0, 1e-6) RELATIVE PREVIOUS

COMPONENT TOF2Edetector = TOF2E_monitor(
    nE = 200, filename = "TOF2E.dat", xwidth = 0.015,
    yheight = 0.015, Emin=E_target-RES_DE, Emax=E_target+RES_DE, T_zero = t_sample, L_flight = DETECTOR_DIST)
  AT (0, 0, 1e-6) RELATIVE PREVIOUS

END