source: MML/trunk/machine/SOLEIL/StorageRing/insertions/idMeasElecBeam_NoTime.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: 2.8 KB
Line 
1function outStructElecBeam = idMeasElecBeam_NoTime(inStructElecBeam, inclPerturbMeas, dispData)
2
3%On and Off e-beam size meas.:
4inclSizeMeas = 0; %1;
5
6% Pause duration between eventual measurements of the dispersion functions and chromatisities:
7pauseTime_s = 5;
8
9try
10    % H orbit
11    inStructElecBeam.X = getx;
12    % V orbit
13    inStructElecBeam.Z = getz;
14catch
15    lasterror('reset');
16    print 'Failure in getx or getz; trying again...';
17        outStructElecBeam = idMeasElecBeam_NoTime(inStructElecBeam, inclPerturbMeas, dispData);
18    return;
19end
20
21% Stored electron beam current
22inStructElecBeam.current = getdcct;
23% Tunes
24inStructElecBeam.tune = gettune;
25% Beam lifetime
26%temp = tango_read_attribute2('ANS/DG/PUB-LifeTime','double_scalar');
27%inStructElecBeam.tau = temp.value(1);
28
29if inclPerturbMeas ~= 0
30        % Measure dispersion functions. ATTENTION, it perturbes e-beam !
31        [dx dz] = measdisp('Physics');
32        inStructElecBeam.dx = dx;
33        inStructElecBeam.dz = dz;
34    %inStructElecBeam,
35    pause(pauseTime_s);
36
37        % Measure chromaticities. ATTENTION, it perturbes e-beam !
38        inStructElecBeam.ksi = measchro('Physics');
39else
40        inStructElecBeam.dx = 0;
41        inStructElecBeam.dz = 0;
42    inStructElecBeam.ksi = [0, 0];
43end
44
45%E-Beam Size / Emittance measurements
46if inclSizeMeas ~= 0
47    devemit = 'ANS-C02/DG/PHC-EMIT';
48
49    numPinholeMeas = 20;
50    pauseTimePinhole_s = 1;
51    sumSigX = 0;
52    sumSigZ = 0;
53    sumEmitX = 0;
54    sumEmitZ = 0;
55    sumCoupling = 0;
56    for j = 1:numPinholeMeas
57        sumSigX = sumSigX + readattribute([devemit '/SrcPointSigmaH']);
58        sumSigZ = sumSigZ + readattribute([devemit '/SrcPointSigmaV']);
59        sumEmitX = sumEmitX + readattribute([devemit '/EmittanceH']);
60        sumEmitZ = sumEmitZ + readattribute([devemit '/EmittanceV']);
61        sumCoupling = sumCoupling + readattribute([devemit '/Coupling']);
62        pause(pauseTimePinhole_s);
63    end
64    inStructElecBeam.SigX = sumSigX/numPinholeMeas;
65    inStructElecBeam.SigZ = sumSigZ/numPinholeMeas;
66    inStructElecBeam.EmitX = sumEmitX/numPinholeMeas;
67    inStructElecBeam.EmitZ = sumEmitZ/numPinholeMeas;
68    inStructElecBeam.Coupling = sumCoupling/numPinholeMeas;
69end
70
71inStructElecBeam.date = datestr(now); % convert date to string
72outStructElecBeam = inStructElecBeam;
73
74if dispData ~= 0
75        fprintf('I = %f\n', outStructElecBeam.current);
76    %fprintf('Tau = %f\n', outStructElecBeam.tau);
77    %fprintf('P=%d\n',pres)
78    fprintf('nux = %f\n', outStructElecBeam.tune(1));
79    fprintf('nuz = %f\n', outStructElecBeam.tune(2));
80    fprintf('ksix = %f\n', outStructElecBeam.ksi(1));
81    fprintf('ksiz = %f\n', outStructElecBeam.ksi(2));
82   
83    if inclSizeMeas ~= 0
84        fprintf('SigX = %f;  EmitX = %f\n', inStructElecBeam.SigX, inStructElecBeam.EmitX);
85        fprintf('SigZ = %f;  EmitZ = %f\n', inStructElecBeam.SigZ, inStructElecBeam.EmitZ);
86        fprintf('Coupling = %f\n', inStructElecBeam.Coupling);
87    end
88end
89
Note: See TracBrowser for help on using the repository browser.