/******************************************************************************* * * McStas, the neutron ray-tracing package * Maintained by Kristian Nielsen and Kim Lefmann, * Copyright 1997-2000 Risoe National Laboratory, Roskilde, Denmark * * %I * Written by: KL, KN * Date: Sept. 14 1998 * Version: $Revision: 1.1.1.1 $ * Origin: McStas release * * A simple neutron filter. * * %D * Be-type filter defined by two identical rectangular opening apertures. * The transmission is interpolated liniearly between the high- and low-energy * transmissions beyond the upper and lower cut-off energies. * * %P * INPUT PARAMETERS: * * xmin: Lower x bound (m) * xmax: Upper x bound (m) * ymin: Lower y bound (m) * ymax: Upper y bound (m) * len: Distance between apertures (m) * T0: Transmittance of low energy neutrons (1) * T1: Transmittance of high energy neutrons (1) * Emin: Lower cut-off energy (meV) * Emax: Upper cut-off energy (meV) * * %E *******************************************************************************/ DEFINE COMPONENT Filter DEFINITION PARAMETERS () SETTING PARAMETERS (xmin, xmax, ymin, ymax, len, T0, T1, Emin, Emax) STATE PARAMETERS (x,y,z,vx,vy,vz,t,s1,s2,p) TRACE %{ double E; double dt; PROP_Z0; E=VS2E*(vx*vx+vy*vy+vz*vz); if (xxmax || yymax) ABSORB; dt = len/vz; PROP_DT(dt); if (xxmax || yymax) ABSORB; if(E>=Emax) if(T1==0) ABSORB; else p*=T1; else if(E<=Emin) if(T0==0) ABSORB; else p*=T0; else p*= T1+(T0-T1)*(Emax-E)/(Emax-Emin); %} MCDISPLAY %{ magnify("xy"); multiline(5, (double)xmin, (double)ymin, 0.0, (double)xmax, (double)ymin, 0.0, (double)xmax, (double)ymax, 0.0, (double)xmin, (double)ymax, 0.0, (double)xmin, (double)ymin, 0.0); multiline(5, (double)xmin, (double)ymin, (double)len, (double)xmax, (double)ymin, (double)len, (double)xmax, (double)ymax, (double)len, (double)xmin, (double)ymax, (double)len, (double)xmin, (double)ymin, (double)len); line(xmin, ymin, 0.0, xmin, ymin, len); line(xmax, ymin, 0.0, xmax, ymin, len); line(xmin, ymax, 0.0, xmin, ymax, len); line(xmax, ymax, 0.0, xmax, ymax, len); %} END