/*******************************************************************************
*
* McStas, neutron ray-tracing package
* Copyright (C) 1997-2008, All rights reserved
* Risoe National Laboratory, Roskilde, Denmark
* Institut Laue Langevin, Grenoble, France
*
* Instrument: BNL_H8
*
* %Identification
* Written by: Emmanuel Farhi
* Date: 1st Feb 2001.
* Origin: ILL (France)
* %INSTRUMENT_SITE: Brookhaven
*
* The former thermal H8 triple-axis spectrometer from Brookhaven reactor
*
* %Description
* This instrument is a simple model of the thermal H8 triple-axis spectrometer
* from former Brookhaven reactor. It is directly illuminated by the moderator,
* and has flat monochromator and analyzer. Sample is a vanadium cylinder.
* Such an instrument was used for the Monte Carlo neutron simulation package
* cross comparison related in paper "A Model Instrument for Monte Carlo Code
* Comparisons", Neutron News 13 (No. 4), 24-29 (2002).
*
* %Example: lambda=2.36 Detector: He3H_I=9.84026e-10
*
* %Parameters
* lambda: [Angs] source energy
*
* %Link
* Neutron News 13 (No. 4), 24-29 (2002).
*
* %End
*******************************************************************************/
DEFINE INSTRUMENT BNL_H8(lambda=2.36)
DECLARE
%{
double DM = 3.3539; /* Monochromator d-spacing in Angs */
/* PG002 Orders : 1st 3.355 2e 1.6775, 3e 1.1183 */
/* to compute */
double A1,A2;
double A3,A4;
double A5,A6;
double mono_q, Ei;
%}
/* end of DECLARE */
INITIALIZE
%{
int ORDER = 1;
double vi, Ki;
int SM,SS,SA;
char hostname[256];
/* SM : scattering at mono to the right (-1)/left(+1) */
/* SS : scattering at sample to the right (-1)/left(+1) */
/* SA : scattering at analyser to the right (-1)/left(+1) */
SM = 1; SS = -1; SA = 1;
/* SM = 0; SS = -0; SA = 0; */
mono_q = 2*PI*ORDER/DM; /* Q mono in Angs-1 */
Ki = 2*PI/lambda;
vi = K2V*fabs(Ki);
Ei = VS2E*vi*vi;
A2 = asin(mono_q/2/Ki)*RAD2DEG*2;
A4 = A2; A6 = A2;
A2 *= SM; /* A1 : mono theta (crystal) */
A1 = A2/2; /* A2 : mono 2 theta (arm to sample) */
A4 *= SS; /* A3 : sample theta */
A3 = A4/2; /* A4 : sample 2 theta (arm to analyser) */
A6 *= SA; /* A5 : analyser theta (crystal) */
A5 = A6/2; /* A6 : analyser 2 theta (arm to Dector) */
strcpy(hostname, getenv("HOSTNAME") ? getenv("HOSTNAME") : "localhost");
printf("Instrument: %s on %s.\n",NAME_CURRENT_COMP, hostname);
printf("Monochromator : DM = %g\n",DM);
printf("A1 = %.2f, A2 = %.2f (deg)\n",A1,A2);
printf("Ki = %.4g Angs-1 Energy = %.4g meV\nVelocity = %.4g m/s, lambda = %.4g Angs\n", Ki, Ei, vi,
lambda);
%}
/* end of INITIALIZE */
TRACE
/* Source description */
COMPONENT Origin=Progress_bar()
AT (0,0,0) ABSOLUTE
/* a flat constant source */
COMPONENT Source = Source_simple(
radius = 0.10,
dist = 2.7473,
focus_xw = 0.031, focus_yh = 0.054,
E0 = Ei,
dE = 0.03*Ei)
AT (0,0,0) ABSOLUTE
COMPONENT D0_Source = PSD_monitor(
xwidth = 0.03, yheight= 0.054,
nx=20, ny=20, filename="D0_Source.psd")
AT (0, 0, 0.0001) RELATIVE Source
/* SC1 collimator. 40'=3 slots, 20'=6 slots */
COMPONENT SC1 = Guide(
w1 = 0.031, h1 = 0.054, l = 0.9144,
R0 = 1.0, Qc=0.021, alpha=6, m=1, W=0.0003)
AT (0.0, 0, 2.7473) RELATIVE Source
COMPONENT D1_SC1_Out = PSD_monitor(
xwidth = 0.03, yheight= 0.054,
nx=20, ny=20, filename="D1_SC1_Out.psd")
AT (0.0, 0, 0.9145) RELATIVE SC1
COMPONENT As1 = Slit(
xwidth = 0.04450, yheight= 0.0635)
AT (0, 0, 3.6998) RELATIVE Source
COMPONENT As2 = Slit(
xwidth = 0.04450, yheight= 0.0635)
AT (0, 0, 4.0808) RELATIVE Source
COMPONENT As3 = Slit(
xwidth = 0.04450, yheight= 0.0635)
AT (0, 0, 4.1189) RELATIVE Source
COMPONENT As4 = Slit(
xwidth = 0.04450, yheight= 0.0635)
AT (0, 0, 4.4141) RELATIVE Source
COMPONENT D2_A4 = PSD_monitor(
xwidth = 0.04450, yheight= 0.0635,
nx=20, ny=20, filename="D2_A4.psd")
AT (0, 0, 0.0001) RELATIVE As4
COMPONENT Mono_Cradle = Arm()
AT (0, 0, 5.2746) RELATIVE Source ROTATED (0, A1, 0) RELATIVE Source
SPLIT COMPONENT PG1Xtal = Monochromator_flat(
zwidth = 0.1, yheight = 0.08,
mosaich = 40, mosaicv = 40,
r0 = 0.7, Q=mono_q)
AT (0, 0, 0.0001) RELATIVE Mono_Cradle
/* on mono, pointing towards sample */
COMPONENT Mono_Out = Arm()
AT (0,0,0.0002) RELATIVE Mono_Cradle ROTATED (0, A2, 0) RELATIVE Source
/* D3 should be in transmission, there at 222.2 mm */
COMPONENT D4_SC2_In = PSD_monitor(
xwidth = 0.0318, yheight = 0.0495,
nx=20, ny=20, filename="D4_SC2_In.psd")
AT (0, 0, 0.2222) RELATIVE Mono_Out
/* SC2 collimator. 40'=4 slots, 20'=8 slots */
COMPONENT SC2 = Guide(
w1 = 0.0318, h1 = 0.0495, l = 0.6096,
R0 = 1.0, Qc=0.021, alpha=6, m=1, W=0.0003)
AT (0, 0, 0.2223) RELATIVE Mono_Out
COMPONENT D5_SC2_Out = PSD_monitor(
xwidth = 0.0318, yheight = 0.0495,
nx=20, ny=20, filename="D5_SC2_Out.psd")
AT (0, 0, 0.6097) RELATIVE SC2
COMPONENT Sample_Cradle = Arm()
AT (0, 0, 0.7811) RELATIVE D5_SC2_Out ROTATED (0, A3, 0) RELATIVE Mono_Out
COMPONENT Sample_Out = Arm() /* this is the sample-ana axis */
AT (0,0,0) RELATIVE Sample_Cradle ROTATED (0, A4, 0) RELATIVE Mono_Out
SPLIT COMPONENT Sample = V_sample(
radius = 0.0064, yheight = 0.0254,
focus_xw = 0.0478, focus_yh = 0.049, pack = 1,
target_index = +1)
AT (0,0,0) RELATIVE Sample_Out
/* D6 should be in transmission, there at 235.0 mm */
COMPONENT D7_SC3_In = PSD_monitor(
xwidth = 0.0478, yheight = 0.049,
nx=20, ny=20, filename="D7_SC3_In.psd")
AT (0, 0, 0.2349) RELATIVE Sample_Out
/* SC3 collimator. 40' = 12 slots, 20'=24 slots */
COMPONENT SC3 = Guide(
w1 = 0.0478, h1 = 0.0490, l = 0.3048,
R0 = 1.0, Qc=0.021, alpha=6, m=1, W=0.0003)
AT (0, 0, 0.2350) RELATIVE Sample_Out
COMPONENT D8_SC3_Out = PSD_monitor(
xwidth = 0.0478, yheight = 0.049,
nx=20, ny=20, filename="D8_SC3_Out.psd")
AT (0, 0, 0.3047) RELATIVE SC3
COMPONENT Ana_Cradle = Arm()
AT (0, 0, 0.1397) RELATIVE D8_SC3_Out ROTATED (0, A5, 0) RELATIVE Sample_Out
SPLIT COMPONENT PG2Xtal = Monochromator_flat(
zwidth = 0.10, yheight = 0.08,
mosaich = 40, mosaicv = 40,
r0 = 0.7, Q=mono_q)
AT (0, 0, 0) RELATIVE Ana_Cradle
COMPONENT Ana_Out = Arm() /* this is the sample-ana axis */
AT (0,0,0) RELATIVE Ana_Cradle ROTATED (0, A6, 0) RELATIVE Sample_Out
/* D9 should be in transmission, there at 336.6 mm */
COMPONENT D10_SC4_In = PSD_monitor(
xwidth = 0.0478, yheight = 0.049,
nx=20, ny=20, filename="D10_SC4_In.psd")
AT (0, 0, 0.3365) RELATIVE Ana_Out
/* SC4 collimator. 80' = 6 slots */
COMPONENT SC4 = Guide(
w1 = 0.0478, h1 = 0.0490, l = 0.3048,
R0 = 1.0, Qc=0.021, alpha=6, m=1, W=0.0003)
AT (0, 0, 0.3366) RELATIVE Ana_Out
/* vertical 3He Detector */
/*
COMPONENT He3S = PSD_monitor(
xmin = -0.025400, xmax = 0.025400,
ymin = -0.042850, ymax = 0.042850,
options="x y, all bins=50")
AT (0, 0, 0.3048+0.00001) RELATIVE SC4
*/
COMPONENT He3H = PSD_monitor(
xwidth = 0.0508, yheight = 0.0857,
nx=20, ny=20, filename="He3.psd")
AT (0, 0, 0.3049) RELATIVE SC4
END