IN6 monochromator
Kristian Nielsen
kristian.nielsen at risoe.dk
Mon Mar 6 10:29:36 CET 2000
I think you have actually three possibilities:
1. If your real monochromators are build each from 7 flat pieces,
consider using 3 x 7 instances of Mosaic_anisotropic in the
simulation. See the TAS1 example in the McStas manual for how to build a
simulation for a composit monochromator.
2. To extend Mon2_foc to do an MC choice should be straightforward. I
have not studied Peter Link's code in detail, but I think the relevant
sequence is
tmp3 = (theta-theta0)/(MIN2RAD*mosaich);
if(tmp3 > DIV_CUTOFF)
{
x = old_x; y = old_y; z = old_z; t = old_t;
}
else
{
p *= r0*exp(-tmp3*tmp3*4*log(2)); /* Use mosaics */
Here the weight is adjusted with the reflectivity
R=r0*exp(-tmp3*tmp3*4*log(2)). To instead do an MC choice, something
like the following should be used
tmp3 = (theta-theta0)/(MIN2RAD*mosaich);
if(tmp3 > DIV_CUTOFF || rand01() > r0*exp(-tmp3*tmp3*4*log(2)))
{ /* No scattering */
x = old_x; y = old_y; z = old_z; t = old_t;
}
else
{ /* Scatter, no weight adjustment here! */
I have not tested this, but the main point is to replace the weight
adjustment by the MC choice
rand01() > r0*exp(-tmp3*tmp3*4*log(2))
3. To extend Mosaic_anisotropic to use a curved surface would also be
feasible, the only problem should be the need to understand the code of
both components. Only the geometry calculations should change, ie. the
computation of the intersection between the neutron flight path and the
monochromator surface, and the calculation of the surface normal.
Hope this helps,
- Kristian.
--
Kristian Nielsen kristian.nielsen at risoe.dk
Risø National Laboratory
Condensed Matter Physics and Chemistry Department
Tel. +45 4677 5515 Fax +45 4677 4790
Encryption PGP key http://neutron.risoe.dk/kn.txt
More information about the mcstas-users
mailing list