File: PreMonitor_nD.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 (100 lines) | stat: -rw-r--r-- 2,767 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
/*******************************************************************************
*
* McXtrace, x-ray tracing package
*         Copyright, All rights reserved
*         DTU Physics, Kgs. Lyngby, Denmark
*         Synchrotron SOLEIL, Saint-Aubin, France
*
* Component: PreMonitor_nD
*
* %Identification
* Written by: <a href="mailto:farhi@ill.fr">Emmanuel Farhi</a>
* Modified for xrays by Erik B Knudsen
* Date: 01st Nov 2011.
* Origin: <a href="http://www.ill.fr">ILL (France)</a>
* Release: McXtrace 1.1
*
* Xray parameters spatial cross-correlation monitor.
*
* %Description
* Photon parameters are stored when entering in the PreMonitor.
* If this photon then reaches the associated Monitor_nD, this latter
* component measures the previously stored parameters. This enables to study
* correlations between a given parameter in one place of the instrument
* and an other detection position in the instrument.
*
* <b>EXAMPLES:</b>
* Here follows a Phase-Space correlation diagram detector
* (used for guides for instance)
*
*  MyPreMonitor = PreMonitor_nD(
*   monitor_comp = MyMonitor)
*
* ...some optics....
*
* MyMonitor = Monitor_nD(
*   xwidth = 0.1, yheight = 0.1,
*   options = "hdiv x, auto, use premonitor");
*
* %Parameters
* INPUT PARAMETERS:
*
* monitor_comp: name of the associated Monitor_nD where the detection should take place [no quotes]
*
* CALCULATED PARAMETERS:
*
* %Link
* <a href="Monitor_nD.html">Monitor_nD</a>
*
* %End
*******************************************************************************/

DEFINE COMPONENT PreMonitor_nD
SETTING PARAMETERS (string monitor_comp)
/* Xray parameters: (x,y,z,kx,ky,kz,phi,t,Ex,Ey,Ez,p) */ 

/* Flag will be set to 1 automatically */
/* unset by user in Monitor_nD if required (with 'not') */
/* Monitor_nD with premonitor should check that a PreMonitor exists */
/* if Flag==0 in option parsing -> no pre monitor -> warning, normal monitor */

INITIALIZE
%{
  struct MonitornD_Variables *Vars = COMP_GETPAR3(Monitor_nD, monitor_comp, Vars);
    Vars->Flag_UsePreMonitor = 1;
    strncpy(Vars->UserName1, NAME_CURRENT_COMP, 64);
%}

TRACE
%{
    struct MonitornD_Variables *Vars = COMP_GETPAR3(Monitor_nD, monitor_comp, Vars);
    /* directly act on MonitornD_Variables pointer, do not need to update */
    if (Vars->Flag_UsePreMonitor == 1)
    {
        Vars->cp = p;
        Vars->cx = x;
        Vars->ckx = kx;
        Vars->cEx = Ex;
        Vars->cy = y;
        Vars->cky = ky;
        Vars->cEy = Ey;
        Vars->cz = z;
        Vars->ckz = kz;
        Vars->cEz = Ez;
        Vars->ct = t;
        Vars->cphi = phi;
        SCATTER;
    }
%}

MCDISPLAY
%{
  /* A bit ugly; hard-coded dimensions. 0.1 m */
  
  line(0,0,0,0.1,0,0);
  line(0,0,0,0,0.1,0);
  line(0,0,0,0,0,0.1);
%}

END