source: MML/trunk/machine/SOLEIL/StorageRing/insertions/idCalcFldIntFromElecBeamMeasForUndSOLEIL.m @ 4

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

Initial import--MML version from SOLEIL@2013

File size: 2.0 KB
Line 
1function [vI1x, vI2x, vI1z, vI2z, vKickX1, vKickX2, vKickZ1, vKickZ2] = idCalcFldIntFromElecBeamMeasForUndSOLEIL(idName, dirMeasData, fileNamesMeasMain, fileNamesMeasBkgr, dirModel, arIndsBPMsToSkip, kick2x_rad, kick2z_rad)
2
3%Calculates effective first and second horizontal and vertical field
4%integrals of SOLEIL undulators from COD
5
6GeomParUnd = idGetGeomParamForUndSOLEIL(idName);
7
8ElecBeamModelData = idReadElecBeamModel(dirModel);
9[mCODx, vR0x] = idCreateModelOrbDistMatr('x', ElecBeamModelData, GeomParUnd);
10[mCODz, vR0z] = idCreateModelOrbDistMatr('z', ElecBeamModelData, GeomParUnd);
11
12numMeas = length(fileNamesMeasMain);
13numMeasBkgr = length(fileNamesMeasBkgr);
14if(numMeas ~= numMeasBkgr)
15    sprintf('Inconsistent numbers of the main and background measurements\n');
16    return;
17end
18
19vI1x = zeros(numMeas, 1);
20vI2x = zeros(numMeas, 1);
21vI1z = zeros(numMeas, 1);
22vI2z = zeros(numMeas, 1);
23vKickX1 = zeros(numMeas, 1);
24vKickX2 = zeros(numMeas, 1);
25vKickZ1 = zeros(numMeas, 1);
26vKickZ2 = zeros(numMeas, 1);
27
28if strcmp(dirMeasData, '')
29    dirMeasData = getfamilydata('Directory',idName);
30end
31
32for i = 1:numMeas
33    dirStart = pwd;
34       
35    %if strcmp(dirMeasData, '') == 0
36        cd(dirMeasData);
37    %end
38   
39        %ElecBeamMeasMain = load(char(fileNamesMeasMain(i)));
40        %ElecBeamMeasBkgr = load(char(fileNamesMeasBkgr(i)));
41        ElecBeamMeasMain = load(fileNamesMeasMain{i});
42        ElecBeamMeasBkgr = load(fileNamesMeasBkgr{i});
43
44        cd(dirStart);
45   
46    [vI1x(i), vI2x(i), vI1z(i), vI2z(i)] = idCalcFldIntFromElecBeamMeas(ElecBeamMeasMain, ElecBeamMeasBkgr, mCODx, mCODz, arIndsBPMsToSkip, GeomParUnd.idLen, GeomParUnd.idKickOfst, ElecBeamModelData.E, kick2x_rad, kick2z_rad, vR0x, vR0z);
47
48        DX_Meas = ElecBeamMeasMain.X - ElecBeamMeasBkgr.X;
49        DZ_Meas = ElecBeamMeasMain.Z - ElecBeamMeasBkgr.Z;
50        KicksX = idLeastSqLinFit(mCODx, DX_Meas, arIndsBPMsToSkip);
51        KicksZ = idLeastSqLinFit(mCODz, DZ_Meas, arIndsBPMsToSkip);
52    vKickX1(i) = KicksX(1);
53    vKickX2(i) = KicksX(2);
54    vKickZ1(i) = KicksZ(1);
55    vKickZ2(i) = KicksZ(2);
56end
57
58
Note: See TracBrowser for help on using the repository browser.