/***************************************************************************** * McStas instrument definition URL=http://www.mcstas.org * * Instrument: Test_Monochromators * * %Identification * Written by: Peter Christiansen * Date: July 2006. * Origin: RISOE. * Release: McStas CVS_080624 * Version: $Revision: 1.2 $ * %INSTRUMENT_SITE: tests * * Compares intensities of Monochromator_flat and Monochromator_pol * * %Description * * Very simple setup to compare intensities between Monochromator_flat * and Monochromator_pol. * * Example: mcrun Test_Monchromators.instr * * %Parameters * INPUT PARAMETERS: * Lambda : Source wavelength [Angs] * Moz : Mosaicity [Arc minutes] * * %Link * * %End ****************************************************************************/ DEFINE INSTRUMENT Test_Monochromators(Lambda=2.0, Moz=40) 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 mono_q; /* This variable helps us switch on and off the different setups*/ double filterProb; %} /* end of DECLARE */ INITIALIZE %{ int ORDER = 1; double Ki; int SM; /* SM : scattering at mono to the right (-1)/left(+1) */ SM = 1; mono_q = 2*PI*ORDER/DM; /* Q mono in Angs-1 */ Ki = 2*PI/Lambda; A2 = asin(mono_q/2/Ki)*RAD2DEG*2; A2 *= SM; /* A1 : mono theta (crystal) */ A1 = A2/2; /* A2 : mono 2 theta (arm to sample) */ %} /* end of INITIALIZE */ TRACE /* Source description */ COMPONENT Origin = Arm() AT (0,0,0) ABSOLUTE EXTEND %{ // Multiply probability by 3 because we have 3 cases // Case 1: Monochromator_flat // Case 2: Monochromator_pol // Case 3: Monochromator_pol (with pThreshold=0.01) p*=3.0; filterProb = rand01(); %} /* a flat constant source */ COMPONENT Source = Source_simple(radius = 0.01, dist = 1.0, xw = 0.02, yh = 0.02, Lambda0 = Lambda, dLambda = 0.2*Lambda) AT (0,0,0) RELATIVE Origin COMPONENT lamStart = L_monitor(nchan = 200, filename = "lambdaStart.dat", xwidth = 0.10, yheight = 0.10, Lmin = 0.7*Lambda, Lmax = 1.3*Lambda) AT (0, 0, 0.5) RELATIVE Origin COMPONENT Mono_Arm = Arm() AT (0, 0, 1.0) RELATIVE Source ROTATED (0, A1, 0) RELATIVE Source COMPONENT Mono_Out = Arm() AT (0, 0, 0) RELATIVE Mono_Arm ROTATED (0, A2, 0) RELATIVE Source COMPONENT Mono1 = Monochromator_flat(width = 0.10, height = 0.10, mosaich = Moz, mosaicv = Moz, r0 = 0.9, Q=mono_q) WHEN (filterProb<1.0/3.0) AT (0, 0, 0) RELATIVE Mono_Arm COMPONENT Mono2 = Monochromator_pol(zw = 0.10, yh = 0.10, mosaic = Moz, dspread = 0.0, Rup = 0.9, Rdown = 0.9, Q=mono_q) WHEN (filterProb>=1.0/3.0 && filterProb<2.0/3.0) AT (0, 0, 0) RELATIVE Mono_Arm COMPONENT Mono3 = Monochromator_pol(zw = 0.10, yh = 0.10, mosaic = Moz, dspread = 0.0, Rup = 0.9, Rdown = 0.9, Q=mono_q, pThreshold=0.01) WHEN (filterProb>=2.0/3.0) AT (0, 0, 0) RELATIVE Mono_Arm COMPONENT lam1 = L_monitor(nchan = 200, filename = "lambda1.dat", xwidth = 0.10, yheight = 0.10, Lmin = 0.7*Lambda, Lmax = 1.3*Lambda) WHEN (filterProb<1.0/3.0) AT (0, 0, 0.25) RELATIVE Mono_Out COMPONENT lam2 = L_monitor(nchan = 200, filename = "lambda2.dat", xwidth = 0.10, yheight = 0.10, Lmin = 0.7*Lambda, Lmax = 1.3*Lambda) WHEN (filterProb>=1.0/3.0 && filterProb<2.0/3.0) AT (0, 0, 0.25) RELATIVE Mono_Out COMPONENT lam3 = L_monitor(nchan = 200, filename = "lambda3.dat", xwidth = 0.10, yheight = 0.10, Lmin = 0.7*Lambda, Lmax = 1.3*Lambda) WHEN (filterProb>=2.0/3.0) AT (0, 0, 0.25) RELATIVE Mono_Out COMPONENT psd1 = PSD_monitor(xwidth = 0.10, yheight = 0.10, nx=20, ny=20, filename="psd1.dat") WHEN (filterProb<1.0/3.0) AT (0, 0, 0.5) RELATIVE Mono_Out COMPONENT psd2 = PSD_monitor(xwidth = 0.10, yheight = 0.10, nx=20, ny=20, filename="psd2.dat") WHEN (filterProb>=1.0/3.0 && filterProb<2.0/3.0) AT (0, 0, 0.5) RELATIVE Mono_Out COMPONENT psd3 = PSD_monitor(xwidth = 0.10, yheight = 0.10, nx=20, ny=20, filename="psd3.dat") WHEN (filterProb>=2.0/3.0) AT (0, 0, 0.5) RELATIVE Mono_Out END