/*******************************************************************************
*
* McStas, neutron ray-tracing package
* Copyright 1997-2002, All rights reserved
* Risoe National Laboratory, Roskilde, Denmark
* Institut Laue Langevin, Grenoble, France
*
* Instrument: HET
*
* %Identification
* Written by: Dickon Champion
* Date: 22nd Jan 2004.
* Origin: ISIS (UK)
* Release: McStas 1.7/1.8
* Version: $Revision: 1.2 $
* %INSTRUMENT_SITE: ISIS
*
* HET: High Energy Transfer Chopper Spectrometer
*
* %Description
* This instrument is a simple model of the HET spectrometer at the ISIS neutron
* facility. The input arguments are hardwired so that the Fermi chopper position
* is 10 metres from the moderator. This instrument uses the FC module written by
* Andrew Garret which comes with no guarantees as to its accuracy in modelling the
* Fermi Chopper.
*
*
* Example: mcrun HETfull.instr E_0=443.0,E_1=470.0,chop_select=450.0,nu_chop=600.0, type=2
*
* %Parameters
* INPUT PARAMETERS:
* E_0 : lowest energy sampled [meV]
* E_1 : highest energy sampled [meV]
* chop_select : energy selected by chopper [meV]
* nu_chop : frequency of chopper rotation [Hz]
* type : chopper package selected [sloppy chopper = 1, B chopper = 2]
*
* %End
*******************************************************************************/
DEFINE INSTRUMENT HET(E_0=443.0,E_1=470.0,chop_select=450.0,nu_chop=600.0,int type=2)
DECLARE
%{
/* chopper variables to compute according to "type" input */
double c_h1,c_h2, roc, chan_w,chop_phase;
int nslits;
%}
INITIALIZE
%{
/* type=1 sloppy chopper
type=2 B chopper
*/
if (type==1)
{c_h1=-0.032;
c_h2=0.032;
roc=-1.3;
nslits=16;
chan_w=0.00283;
fprintf(stderr,"sloppy chopper selected");
}
if (type==2)
{c_h1=-0.026;
c_h2=0.026;
roc=-0.92;
nslits=24;
chan_w=0.00184;
fprintf(stderr,"250mev chopper selected");
}
/* hardwired for FC position 10m from moderator */
chop_phase=0.002528*9.044/sqrt(chop_select);
%}
TRACE
COMPONENT a1 = Arm()
AT (0,0,0) ABSOLUTE
COMPONENT ts1_mod = ISIS_moderator(
Face ="Water", E0 = E_0, E1 = E_1, dist = 9.85, xw = 0.045,
yh = 0.045, modXsize = 0.074, modYsize = 0.074, CAngle = 0.0, SAC=1)
AT (0, 0, 0) RELATIVE a1
COMPONENT FC = Chopper_Fermi(
radius=0.05, nu=nu_chop, delta=chop_phase, ymin=c_h1, ymax=c_h2,
w=chan_w, n=nslits, r_slit=roc)
AT (0,0,10) RELATIVE ts1_mod
COMPONENT FCslit1 = Slit(
xmin = -0.0225, xmax = 0.0225, ymin = -0.0225, ymax = 0.0225)
AT (0, 0, 0.15) RELATIVE FC
COMPONENT monT = Monitor_nD(
options = "square auto t bins=100",
filename = "FC_mon.dat", xwidth=0.2, yheight = 0.2)
AT (0, 0, 0.035) RELATIVE FCslit1
COMPONENT postFCslit = Slit(
xmin = -0.0225, xmax = 0.0225, ymin = -0.0225, ymax = 0.0225)
AT (0, 0, 0.2) RELATIVE FC
COMPONENT presampslit = Slit(
xmin = -0.0225, xmax = 0.0225, ymin = -0.0225, ymax = 0.0225)
AT (0, 0, 1.4) RELATIVE postFCslit
COMPONENT target = V_sample(radius_o=0.00,
xwidth=0.04,yheight=0.04,zthick=0.002,
focus_aw=19.38,focus_ah=3.435,
pack = 1,
target_x=0.8139,target_y=0.0,target_z=2.3678)
AT (0,0,0.2) RELATIVE presampslit
COMPONENT a2=Arm()
AT (0,0,0) RELATIVE target
COMPONENT cyl = Monitor_nD(
options = "banana, auto t bins=100 , theta limits[9.31 28.69] bins=1",
filename = "det_out.dat", xwidth=5.0, yheight = 0.3)
AT (0, 0, 0) RELATIVE a2
END