/***********************************************************************
*
* McStas, the neutron ray-tracing package: Convert_FlatE_2_Maxwell.comp
* Copyright 1997-2001 Risoe National Laboratory, Roskilde, Denmark
*
* Component: Convert_FlatE_2_Maxwell
*
* %IDENTIFICATION
*
* Author: Thomas C Hansen
* Date: 07 March 2000
* Version: $Revision: 1.12 $
* Origin: McStas 1.5/ILL (Obsolete)
* Modified by: EF, 2004. Moved to obsolete as better similar comps exist.
*
* Conversion from flat energy distribution to Maxwellian neutron spectra
*
* %DESCRIPTION
*
* The routine modifies/converts the incident flat (in energy) neutron
* spectra, as it comes out from a source to obtain a Maxwellian neutron
* distribution, as it is approximatively the case for thermal neutrons in a
* reactor's moderator. So, this component is only a virtual one, not
* corresponding to a real element in a neutron beam.
* OBSOLETE: rather use sources/Source_Maxwell_3 or Source_gen
*
* Example: Convert_FlatE_2_Maxwell(T=315,E0=14.68,dE=2)
*
* %PARAMETERS
*
* INPUT PARAMETERS:
*
* T: (K) Temperature of the source, 25 and 315 K for cold/thermal neutrons
* E0: (meV) Mean energy of neutrons
* dE: (meV) Energy spread (energy range is from E0-dE to E0+dE)
*
* OUTPUT PARAMETERS:
*
* Lmin: (AA) Minimum wavelength in energy range
* Lmax: (AA) Maxium wavelength in energy range
* l0: (AA) Mean wavelength of neutron spectra, about 1.8 AA for thermal neutrons
* L2P: (AA**4) Normalisation constant for Maxwell distribution
*
* %END
*
***********************************************************************/
DEFINE COMPONENT Convert_FlatE_2_Maxwell
DEFINITION PARAMETERS ()
SETTING PARAMETERS (T=315,E0=14.68,dE=2)
OUTPUT PARAMETERS (Lmin,Lmax,l0,L2P)
STATE PARAMETERS (x,y,z,vx,vy,vz,t,s1,s2,p)
DECLARE
%{
double l0, L2P, Lmin,Lmax;
%}
INITIALIZE
%{
double k;
k = 1.38066e-23;
l0=1.0e10*sqrt(HBAR*HBAR*4.0*PI*PI/2.0/MNEUTRON/k/T);
L2P=2*l0*l0*l0*l0;
Lmin = sqrt(81.81/(E0+dE)); /* AAngstroem */
Lmax = sqrt(81.81/(E0-dE));
%}
TRACE
%{
double l,E, Maxwell,dE_dl;
l= (2*PI/V2K)/sqrt(vx*vx + vy*vy + vz*vz);
E=(VS2E*4.0*(PI*PI)/(V2K*V2K))/l/l;
dE_dl=E/l*2.0;
p*=2.0*dE/(Lmax - Lmin)/dE_dl;
Maxwell=L2P/l/l/l/l/l*exp(-l0*l0/l/l);
p*= Maxwell;
SCATTER;
%}
FINALLY
%{
%}
MCDISPLAY
%{
magnify("xy");
circle("xy",0,0,0,0.1);
%}
END