source: MML/trunk/machine/SOLEIL/common/synchro/bucketnumber.m @ 4

Last change on this file since 4 was 4, checked in by zhangj, 10 years ago

Initial import--MML version from SOLEIL@2013

File size: 1.1 KB
Line 
1function [n1 n2] = bucketnumber(num)
2%BUCKETNUMBER - Computes n1 n2 for timing system master board for a bucket
3%number.
4%
5%  INPUTS
6%  1. num - Bucket number
7%
8%  OUPUTS
9%  1. n1 - number of step for extraction table
10%  2. n2 - number of step for linac table
11%
12%  ALGORITHM
13% Table extraction n1 entier compris entre 0 et 51
14% Table Linac n2 entier compris entre 0 et 7
15% n1 = 0; n2 = 0; injection dans paquet 1 de l'anneau
16% n1 = 0; n2 = 1; injection dans paquet 2 de l'anneau
17
18%
19%  Written by Laurent S. Nadolski
20
21num = num - 1;
22n2 = mod(num,8);
23d = fix(num/8);
24[u v] = bezout(52,23,d);
25n1 = v;
26
27%fprintf('n1 = %d n2 = %d\n', n1, n2)
28%fprintf('Injection dans paquet numero %d\n', mod(n1*184,416) + n2 + 1)
29
30%%%%
31
32function [u v] = bezout(a,b,c)
33% Resolution de 52 u + 23 v = c
34%        ou  encore 416 u + 184 v = 8*c
35%        ou  encore de 184 v = 8*c modulo 416
36%  Soit travail dans l'ensemble quotient Z/416Z
37
38% ALGORITHME de BEZOUT
39
40a = 52;
41b = 23;
42
43u = 1;
44v = 0;
45
46s = 0;
47t = c;
48while b > 0
49    q = fix(a/b);r = rem(a,b);
50    a = b; b = r;
51    tmp = s;
52    s = u - q * s;
53    u = tmp; tmp = t;
54    t = v - q * t;
55    v = tmp;
56end
57u;
58v = mod(v,52);
Note: See TracBrowser for help on using the repository browser.