File: Spin_random.comp

package info (click to toggle)
mccode 3.5.19%2Bds5-2
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 1,113,256 kB
  • sloc: ansic: 40,697; python: 25,137; yacc: 8,438; sh: 5,405; javascript: 4,596; lex: 1,632; cpp: 742; perl: 296; lisp: 273; makefile: 226; fortran: 132
file content (51 lines) | stat: -rw-r--r-- 1,097 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
/*****************************************************************************
*
* McStas, neutron ray-tracing package
*         Copyright 1997-2024, All rights reserved
*         Technical University of Denmark, Kongens Lyngby, Denmark
*         Institut Laue Langevin, Grenoble, France
*
* Component: Spin_random
*
* %I
* Written by: Michael Schneider (SNAG)
* Date: 2024
* Origin: SNAG
*
* Set a random polarisation
*
* %D
*
* This component has no physical size or extent, it simply asigns the neutron
* ray polarisation randomly to either spin-up or spin-down.
*
* %P
* INPUT PARAMETERS:
*
* CALCULATED PARAMETERS:
*
* %E
*******************************************************************************/
DEFINE COMPONENT Spin_random

SETTING PARAMETERS ()
/* STATE PARAMETERS (x,y,z,vx,vy,vz,t,s1,s2,p) */
/* POLARISATION PARAMETERS (sx,sy,sz) */
TRACE
%{
    int S_check;
    sx = 0.0;
    sz = 0.0;
    do
     {
      sy = randpm1();
      S_check = 0;
      if (sy < 0)
       {sy = -1.0; S_check=1;}
      if (sy  > 0)
       {sy =  1.0; S_check=1;}
     }while (S_check == 0); 
%}

END