BUCKETNUMBER - Computes n1 n2 for timing system master board for a bucket number. INPUTS 1. num - Bucket number OUPUTS 1. n1 - number of step for extraction table 2. n2 - number of step for linac table ALGORITHM Table extraction n1 entier compris entre 0 et 51 Table Linac n2 entier compris entre 0 et 7 n1 = 0; n2 = 0; injection dans paquet 1 de l'anneau n1 = 0; n2 = 1; injection dans paquet 2 de l'anneau
0001 function [n1 n2] = bucketnumber(num) 0002 %BUCKETNUMBER - Computes n1 n2 for timing system master board for a bucket 0003 %number. 0004 % 0005 % INPUTS 0006 % 1. num - Bucket number 0007 % 0008 % OUPUTS 0009 % 1. n1 - number of step for extraction table 0010 % 2. n2 - number of step for linac table 0011 % 0012 % ALGORITHM 0013 % Table extraction n1 entier compris entre 0 et 51 0014 % Table Linac n2 entier compris entre 0 et 7 0015 % n1 = 0; n2 = 0; injection dans paquet 1 de l'anneau 0016 % n1 = 0; n2 = 1; injection dans paquet 2 de l'anneau 0017 0018 % 0019 % Written by Laurent S. Nadolski 0020 0021 num = num - 1; 0022 n2 = mod(num,8); 0023 d = fix(num/8); 0024 [u v] = bezout(52,23,d); 0025 n1 = v; 0026 0027 %fprintf('n1 = %d n2 = %d\n', n1, n2) 0028 %fprintf('Injection dans paquet numero %d\n', mod(n1*184,416) + n2 + 1) 0029 0030 %%%% 0031 0032 function [u v] = bezout(a,b,c) 0033 % Resolution de 52 u + 23 v = c 0034 % ou encore 416 u + 184 v = 8*c 0035 % ou encore de 184 v = 8*c modulo 416 0036 % Soit travail dans l'ensemble quotient Z/416Z 0037 0038 % ALGORITHME de BEZOUT 0039 0040 a = 52; 0041 b = 23; 0042 0043 u = 1; 0044 v = 0; 0045 0046 s = 0; 0047 t = c; 0048 while b > 0 0049 q = fix(a/b);r = rem(a,b); 0050 a = b; b = r; 0051 tmp = s; 0052 s = u - q * s; 0053 u = tmp; tmp = t; 0054 t = v - q * t; 0055 v = tmp; 0056 end 0057 u; 0058 v = mod(v,52);