Non-member submission from ["M.E. Hagen" <m.e.hagen at phys.keele.ac.uk>]
Kim Lefmann
kim.lefmann at risoe.dk
Tue May 15 10:01:36 CEST 2001
>From m.e.hagen at phys.keele.ac.uk Tue May 15 02:31:53 2001
Return-Path: <m.e.hagen at phys.keele.ac.uk>
Received: from mail.risoe.dk (really [130.226.48.21]) by neutron.risoe.dk
via in.smtpd with esmtp
id <m14zSki-0006vhC at elm-298.risoe.dk> (Debian Smail3.2.0.102)
for <neutron-mc at neutron.risoe.dk>; Tue, 15 May 2001 02:31:52 +0200 (CEST)
Received: from CONVERSION-DAEMON.risoe.dk by risoe.dk (PMDF V6.0-24 #38262)
id <EZHM08N011JC0901P0 at risoe.dk> for neutron-mc at neutron.risoe.dk
(ORCPT neutron-mc at risoe.dk); Tue,
15 May 2001 00:42:49 +0200 (W. Europe Daylight Time)
Received: from owat.kis.keele.ac.uk (owat.kis.keele.ac.uk [160.5.46.3])
by risoe.dk (PMDF V6.0-24 #38262) with ESMTP id <EZGG08N7GZWW0902D4 at risoe.dk>
for neutron-mc at neutron.risoe.dk (ORCPT neutron-mc at risoe.dk); Tue,
15 May 2001 00:42:48 +0200 (W. Europe Daylight Time)
Received: from pha70 by owat.kis.keele.ac.uk with local (Exim 2.12 #2)
id 14zR39-00058n-00 for neutron-mc at risoe.dk; Mon, 14 May 2001 23:42:47 +0100
Date: Mon, 14 May 2001 23:42:47 +0100 (BST)
From: "M.E. Hagen" <m.e.hagen at phys.keele.ac.uk>
Subject: Some infor on Fermi chopper routine
To: neutron-mc at risoe.dk
Message-id: <E14zR39-00058n-00 at owat.kis.keele.ac.uk>
MIME-version: 1.0
X-Mailer: ELM [version 2.5 PL3]
Content-type: text/plain; charset=us-ascii
Content-transfer-encoding: QUOTED-PRINTABLE
PMDF-SMTP-Warning: Lines longer than SMTP allows found and truncated.
Stuart,
The curved Fermi chopper routine that Andrew wrote for McStas is, I t=
hink, a version of the Fermi chopper routine that I wrote for PRMON i=
n FORTRAN-90. Andrew and I shared an office at KEK for a while and wo=
rked on simulating a curved Fermi chopper for MARI. I'll send you dir=
ectly a copy of the FORTRAN-90 code which also includes a routine for=
a "straight" Fermi chopper which may (or may not) help. Also I can o=
utline the "theory" behind the curved Fermi chopper routine which may=
help with understanding the McStas code.
The routine works by transforming to the frame of reference of the cu=
rved chopper not the lab frame. In the chopper frame the curved blade=
s remain fixed in position of course but the neutron now follows a /c=
urved/ path. Assuming that the Fermi chopper is a cylinder shape then=
in the lab frame one can calculate the entrance and exit positions a=
nd times at which the neutron intersects the chopper body. One then t=
ransforms those positions into the chopper frame, the transform invol=
ves the frequency and phase of the chopper.
The slats (channels) of the chopper are assumed to be on constant rad=
ii from an origin. One computes the radial distances of the entrance =
position and exit position of the neutron and checks if they correspo=
nd to the same slat. If they don't the neutron is rejected. If they d=
o one must then check that the neutron always stays within the slat a=
s it passes through the chopper. The algebra we worked out showed tha=
t if one plots the radial distance of the neutron along its flight pa=
th (in the chopper frame) from entrance to exit as a function of time=
(or polar angle) it can only have a maximum of one turning point. Th=
us first one checks the derivatives of the radius at the entrance and=
exit points, if they are the same the neutron stayed within the slat=
and is accepted. If they are different then one must bisect down to =
the position where the derivative is zero. If at any time the radial =
distance of the neutron wanders outside the inner and outer radii of =
the slat the neutron is rejected. If it doesn't the neut
If the neutron makes it through one just uses the exit position and t=
ime in the lab frame.=20
Andrew was only interested in MARI and so only produced a curved chop=
per routine I believe, the straight chopper can be simplified slightl=
y (see FORTRAN-90 code).
Hope that is some help, e-mail me if you want to know more,
cheers,
Mark
More information about the mcstas-users
mailing list