File: ISIS_MERLIN.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 (179 lines) | stat: -rw-r--r-- 6,436 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
/*******************************************************************************
*
* McStas, neutron ray-tracing package
*         Copyright (C) 1997-2017, All rights reserved
*         Risoe National Laboratory, Roskilde, Denmark
*         Institut Laue Langevin, Grenoble, France
*
* Instrument: ISIS_MERLIN
*
* %Identification
* Written by: Rob Bewley
* Date: May 2017.
* Origin: <a href="http://www.isis.stfc.ac.uk">ISIS (UK)</a>
* %INSTRUMENT_SITE: ISIS
*
* MERLIN: High count rate, medium energy resolution, direct geometry chopper spectrometer.
*
* %Description
* Merlin has been in user operation since 2008. It was designed to be a high intensity, medium energy 
* resolution spectrometer that would complement the high-resolution MAPS spectrometer, and replace 
* the HET spectrometer. Merlin's design exploited recent advances in technology with a supermirror 
* guide to enhance flux, as well as 3 m long position-sensitive detectors in a vacuum, making it 
* ideal for the study of single crystals. The detector bank covers a massive \pi steradians of solid 
* angle with an angular range from -45 to 135 degrees in the horizontal plane, and \pm 30 degrees in 
* the vertical plane. This allows large swathes of Q,\omega space to be accessed in a single run. 
*
* Since 2014, Merlin has been running in event mode, and by using the new Gd chopper combined with a 
* disk chopper, it is able to run in repetition-rate multiplication (RRM) mode, allowing users to 
* simultaneously measure with several incident energies.
*
* %Parameters
* INPUT PARAMETERS:
* E_min: [meV]   lowest energy sampled      [meV]
* E_max: [meV]   highest energy sampled     [meV]
* E_foc: [meV]   energy selected by chopper [meV]
* nu_hz: [Hz]    frequency of chopper rotation [Hz]
* type:  [int]   chopper package selected sloppy chopper = 1, B chopper = 2, Gd chopper = 3
* m:     [float] m value of guides
* 
* %L 
* <a href="http://www.isis.stfc.ac.uk/instruments/merlin">http://www.isis.stfc.ac.uk/instruments/merlin</a>
* %E
*******************************************************************************/
DEFINE INSTRUMENT ISIS_MERLIN(E_min=1.0, E_max=2000.0, m=3.0,
E_foc=80.0,nu_hz=200.0,int type=3)

DECLARE
%{
double slit_curv,num_slits,width,len;
double lam,phase_time,t_det,t_fer;
%}

// #include <math.h>

INITIALIZE 
%{ 

if (type==1)
  {slit_curv=1/0.82;
   num_slits=55;
   width=0.00114;
   len=0.099;
   fprintf(stderr,"MERLIN b chopper selected");
  }
if (type==2)
  {slit_curv=1/1.3;
   num_slits=28;
   width=0.00228;
   len=0.099;
   fprintf(stderr,"MERLIN Sloppy selected selected");
  }
if (type==3)
  {slit_curv=0;
   num_slits=350;
   width=0.0002;
   len=0.01;
   fprintf(stderr,"Merlin Gd selected selected");
  }

/* calculate opening time of the fermi chopper at 10m from moderator*/
phase_time = (2.28e-3*10.0/sqrt(E_foc));
printf("\nphase_time: %f\n\n",phase_time);
t_det=1.43*phase_time;
t_fer=1.02*phase_time;
lam = sqrt(81.81/E_foc);
%}

TRACE

/* define origin */
COMPONENT Origin = Arm()
  AT (0,0,0) ABSOLUTE

/* The moderator */
COMPONENT isis_mod =
ViewModISIS(Face="TS1_S04_Merlin.mcstas", E0 = E_min, E1 = E_max,
dist = 1.7, focus_xw = 0.094, focus_yh = 0.094, modPosition=0,xw=0.12,yh=0.12)
 AT (0,0,0) RELATIVE Origin

/* TOF monitor for getting moderator time structure */
COMPONENT TOF_mod= TOF_monitor(
    nt = 150, filename = "mod.m",xmin = -0.025,
    xmax = 0.025, ymin = -0.025, ymax = 0.025, tmin=0, tmax =150 )
  AT (0, 0, 0.001) RELATIVE Origin

/* 1st piece of guide in shutter */
COMPONENT shutter_guide = Guide_channeled(
    w1 = 0.094, h1 = 0.094, w2 = 0.094, h2 = 0.094, l = 2.0, alphax = 4.38, alphay = 4.38 ,
 W=3e-3, mx = m, my = m)
  AT (0, 0, 1.7) RELATIVE Origin

/* 2nd piece of guide converging to chopper pit */
COMPONENT conv_guide = Guide_channeled(
    w1 = 0.094, h1 = 0.094, w2 = 0.067, h2 = 0.067, l = 4.760, alphax = 4.38, alphay = 4.38 ,
 W=3e-3, mx = m, my = m)
  AT (0, 0, 3.704) RELATIVE Origin

/* 3rd piece of guide leading to fermi chopper*/
COMPONENT between_guide = Guide_channeled(
    w1 = 0.0629, h1 = 0.0629, w2 = 0.0594, h2 = 0.0594, l = 0.640, alphax = 4.38, alphay = 4.38 ,
 W=3e-3, mx = m, my = m)
  AT (0, 0, 9.182) RELATIVE Origin

/* the fermi chopper */
COMPONENT fermi = FermiChopper(delay=phase_time, radius=0.055, nu=-nu_hz,
  yheight=0.07, w=width ,nslit=num_slits, R0=0.0,
  Qc=0.02176, alpha=2.33, m=0, length=len, eff=0.95, curvature=-slit_curv, zero_time=0)
  AT (0,0,10) RELATIVE Origin

/* TOF monitor after fermi chopper */
COMPONENT TOF_fermi= TOF_monitor(
    nt = 50, filename = "fermi.m",xmin = -0.025,
    xmax = 0.025, ymin = -0.025, ymax = 0.025, tmin=(1e6*t_fer)-12, tmax =(1e6*t_fer)+22 )
  AT (0, 0, 10.2) RELATIVE Origin

/* final guide section just bebore sample */
COMPONENT final_Guide = Guide_channeled(
    w1 = 0.0568, h1 = 0.0568, w2 = 0.0506, h2 = 0.0506, l = 1.10, alphax = 4.38, alphay = 4.38 ,
 W=3e-3, mx = m, my = m)
  AT (0, 0, 10.277) RELATIVE Origin

/* horizontal beam divergence monitor at sample */
COMPONENT horz_div = Div1D_monitor(ndiv=30, filename="horz.div.m",
          xmin=-0.025, xmax=0.025, ymin=-0.025, ymax=0.025,
          maxdiv=0.3*lam+.4)
 AT (0, 0, 11.79) RELATIVE Origin

/* Position sentive detector*/
COMPONENT PSD = PSD_monitor(xmin=-0.04, xmax=0.04, ymin=-0.04, ymax=0.04,
            nx=20, ny=20, filename="Output.psd")
 AT (0, 0, 11.795) RELATIVE Origin

COMPONENT det_lmon = L_monitor(xmin=-0.005, xmax=0.005,
 ymin=-0.005, ymax=0.005, nL=100, filename="det_Lmon.m", Lmin=0.0, Lmax=10)
AT (0,0,11.796) RELATIVE Origin

/* incoherent scattering sample */
COMPONENT sample = Incoherent(radius=0.02, thickness=0.001,yheight=0.04,
      focus_xw=0.025, focus_yh=0.1,sigma_abs=0.0,sigma_inc=100, target_index=2)
 AT (0, 0, 11.8) RELATIVE Origin

/* define a new origin at sample */
COMPONENT detectorarm = Arm()
  AT (0, 0, 0) RELATIVE sample
  ROTATED (0,20.0,0) RELATIVE sample

/* a detector */
COMPONENT detector= TOF_monitor(
    nt = 25, filename = "detector.m",xmin = -0.0125,
    xmax = 0.0125, ymin = -0.05, ymax = 0.05, tmin=(1e6*t_det)-20, tmax =(1e6*t_det)+30)
  AT (0, 0, 2.5) RELATIVE detectorarm

END

/* horizontal beam divergence monitor at sample */
/*COMPONENT div = Divergence_monitor(nh=20, nv=20, filename="div.m",
          xmin=-0.025, xmax=0.025, ymin=-0.025, ymax=0.025,
         maxdiv_h=0.3*lam+.4,  maxdiv_v=0.3*lam+.4)
 AT (0, 0, 11.795) RELATIVE Origin*/