File: Test_GROUP_restore.instr

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 (137 lines) | stat: -rw-r--r-- 4,196 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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
/*******************************************************************************
*         McStas instrument definition URL=http://www.mcstas.org
*
* Instrument: test (rename also the example and DEFINE lines below)
*
* %Identification
* Written by: Peter Willendrup
* Date: June 2024
* Origin: DTU/ESS
* %INSTRUMENT_SITE: Tests_grammar
*
* Test instrument for GROUP of monitors using restore_neutron
*
* %Description
* Test instrument for GROUP of monitors using restore_neutron.
*
* 1st test: Source emits intensity of 6e6 - "cube" positioned monitors each catch 1/6 of that.
* 2nd test: Reduced dimension of monitors mean a fraction is lost in the GROUP
* 3rd test: Adding a "catchall" arm recovers the intensity
*
* %Example: mcrun Test_GROUP_restore catchall=0 Detector: Mon00_12_I=1.00e+06
* %Example: mcrun Test_GROUP_restore catchall=0 dim=3 Detector: psd_monitor_4pi_3m_I=4.22e+06
* %Example: mcrun Test_GROUP_restore catchall=1 dim=3 Detector: psd_monitor_4pi_3m_I=6.00e+06
*
* %Parameters
* dim:        [m] Width/height of monitors in "cubic" GROUP arrangement
* catchall:   [1] Flag to indicate if "catchall"-Arm is included in GROUP
* src_dim:    [m] radius of 4PI-emitting source
*
* %Link
* A reference/HTML link for more information
*
* %End
*******************************************************************************/
DEFINE INSTRUMENT Test_GROUP_restore(dim=4,int catchall=0, int restore=1, src_dim=0.01)

/* The DECLARE section allows us to declare variables or  small      */
/* functions in C syntax. These may be used in the whole instrument. */
DECLARE
%{
%}

/* The INITIALIZE section is executed when the simulation starts     */
/* (C code). You may use them as component parameter values.         */
INITIALIZE
%{
%}

/* Here comes the TRACE section, where the actual      */
/* instrument is defined as a sequence of components.  */
TRACE

/* The Arm() class component defines reference points and orientations  */
/* in 3D space. Every component instance must have a unique name. Here, */
/* Origin is used. This Arm() component is set to define the origin of  */
/* our global coordinate system (AT (0,0,0) ABSOLUTE). It may be used   */
/* for further RELATIVE reference, Other useful keywords are : ROTATED  */
/* EXTEND GROUP PREVIOUS. Also think about adding a neutron source !    */
/* Progress_bar is an Arm displaying simulation progress.               */
COMPONENT Origin = Progress_bar()
  AT (0,0,0) ABSOLUTE

COMPONENT source_div = Source_4PI(gauss=1, flux=6e6, lambda0=4, dlambda=0.1, radius=src_dim)
AT (0, 0, 0) RELATIVE PREVIOUS

COMPONENT psd_monitor_4pi = PSD_monitor_4PI()
AT (0, 0, 0) RELATIVE PREVIOUS

COMPONENT dir00 = Arm()
AT (0,0,0) RELATIVE source_div
ROTATED (0,0,0) RELATIVE source_div

COMPONENT dir90 = Arm()
AT (0,0,0) RELATIVE source_div
ROTATED (0,90,0) RELATIVE source_div

COMPONENT dir180 = Arm()
AT (0,0,0) RELATIVE source_div
ROTATED (0,180,0) RELATIVE source_div

COMPONENT dir270 = Arm()
AT (0,0,0) RELATIVE source_div
ROTATED (0,270,0) RELATIVE source_div

COMPONENT dirup = Arm()
AT (0,0,0) RELATIVE source_div
ROTATED (90,0,0) RELATIVE source_div

COMPONENT dirdown = Arm()
AT (0,0,0) RELATIVE source_div
ROTATED (-90,0,0) RELATIVE source_div

COMPONENT Mon00 = PSD_monitor(
    xwidth=dim, 
    yheight=dim, restore_neutron=restore)
AT (0, 0, 2) RELATIVE dir00
GROUP Mons

COMPONENT COPY(Mon00) = COPY(Mon00)
AT (0, 0, 2) RELATIVE dir90
GROUP Mons

COMPONENT COPY(Mon00) = COPY(Mon00)
AT (0, 0, 2) RELATIVE dir180
GROUP Mons

COMPONENT COPY(Mon00) = COPY(Mon00)
AT (0, 0, 2) RELATIVE dir270
GROUP Mons

COMPONENT COPY(Mon00) = COPY(Mon00)
AT (0, 0, 2) RELATIVE dirup
GROUP Mons

COMPONENT COPY(Mon00) = COPY(Mon00)
AT (0, 0, 2) RELATIVE dirdown
GROUP Mons

COMPONENT ArmCatcha = Arm()
WHEN (catchall) AT (0, 0, 0) RELATIVE source_div
GROUP Mons
EXTEND %{
	if(INSTRUMENT_GETPAR(catchall)) SCATTER;
%}

COMPONENT psd_monitor_4pi_3m = PSD_monitor_4PI(radius=5)
AT (0, 0, 0) RELATIVE source_div


/* This section is executed when the simulation ends (C code). Other    */
/* optional sections are : SAVE                                         */
FINALLY
%{
%}
/* The END token marks the instrument definition end */
END