|
| 1 | +function test_suite = test_stfGeneratorPhotonIMRT |
| 2 | + |
| 3 | + test_functions=localfunctions(); |
| 4 | + |
| 5 | + initTestSuite; |
| 6 | + |
| 7 | + function test_basic_construct() |
| 8 | + stfGen = matRad_ParticleStfGeneratorIMPT(); |
| 9 | + assertTrue(isa(stfGen, 'matRad_ParticleStfGeneratorIMPT')); |
| 10 | + |
| 11 | + function test_pln_construct() |
| 12 | + load protons_testData.mat |
| 13 | + stfGen = matRad_ParticleStfGeneratorIMPT(pln); |
| 14 | + stfGen.isAvailable(pln); |
| 15 | + assertTrue(isa(stfGen, 'matRad_ParticleStfGeneratorIMPT')); |
| 16 | + assertEqual(stfGen.gantryAngles, pln.propStf.gantryAngles); |
| 17 | + assertEqual(stfGen.couchAngles, pln.propStf.couchAngles); |
| 18 | + assertEqual(stfGen.isoCenter, pln.propStf.isoCenter); |
| 19 | + assertEqual(stfGen.radiationMode, pln.radiationMode); |
| 20 | + assertEqual(stfGen.machine, pln.machine); |
| 21 | + assertEqual(stfGen.bixelWidth, pln.propStf.bixelWidth); |
| 22 | + |
| 23 | + function test_generate_multibeams() |
| 24 | + % geometry settings |
| 25 | + load protons_testData.mat ct cst pln stf; |
| 26 | + |
| 27 | + stfGen = matRad_ParticleStfGeneratorIMPT(pln); |
| 28 | + stf2 = stfGen.generate(ct,cst); |
| 29 | + |
| 30 | + assertTrue(isfield(stf2, 'radiationMode')); |
| 31 | + assertTrue(isfield(stf2, 'machine')); |
| 32 | + assertTrue(isfield(stf2, 'gantryAngle')); |
| 33 | + assertTrue(isfield(stf2, 'couchAngle')); |
| 34 | + assertTrue(isfield(stf2, 'isoCenter')); |
| 35 | + assertTrue(isfield(stf2, 'bixelWidth')); |
| 36 | + assertTrue(isfield(stf2, 'SAD')); |
| 37 | + assertTrue(isfield(stf2, 'numOfRays')); |
| 38 | + assertTrue(isfield(stf2, 'numOfBixelsPerRay')); |
| 39 | + assertTrue(isfield(stf2, 'totalNumOfBixels')); |
| 40 | + assertTrue(isfield(stf2, 'sourcePoint')); |
| 41 | + assertTrue(isfield(stf2, 'sourcePoint_bev')); |
| 42 | + assertTrue(isfield(stf2, 'ray')); |
| 43 | + |
| 44 | + for i = 1:numel(stf2) |
| 45 | + |
| 46 | + assertEqual(stf2(i).totalNumOfBixels,stf(i).totalNumOfBixels); |
| 47 | + assertEqual(stf2(i).numOfBixelsPerRay,stf(i).numOfBixelsPerRay); |
| 48 | + assertEqual(stf2(i).numOfRays,stf(i).numOfRays); |
| 49 | + assertEqual(stf2(i).bixelWidth,stfGen.bixelWidth); |
| 50 | + assertEqual(stf2(i).radiationMode,stfGen.radiationMode); |
| 51 | + assertEqual(stf2(i).machine,pln.machine); |
| 52 | + assertEqual(stf2(i).gantryAngle,stfGen.gantryAngles(i)); |
| 53 | + assertEqual(stf2(i).couchAngle,stfGen.couchAngles(i)); |
| 54 | + |
| 55 | + rotMat = matRad_getRotationMatrix(stf2(i).gantryAngle,stf2(i).couchAngle); |
| 56 | + assertEqual(stf2(i).sourcePoint,stf2(i).sourcePoint_bev*rotMat); |
| 57 | + assertEqual(stf2(i).sourcePoint_bev,[0 -stf2(i).SAD 0]); |
| 58 | + |
| 59 | + assertTrue(isstruct(stf2(i).ray)); |
| 60 | + assertEqual(numel(stf2(i).ray),numel(stf(i).ray)); |
| 61 | + assertEqual(numel(stf2(i).ray),stf2(i).numOfRays); |
| 62 | + |
| 63 | + assertTrue(isfield(stf2(i).ray,'rangeShifter')); |
| 64 | + |
| 65 | + rayPosTest = vertcat(stf2(i).ray.rayPos); |
| 66 | + rayPosTest_bev = rayPosTest*rotMat; |
| 67 | + rayPos_bevTest = vertcat(stf2(i).ray.rayPos_bev); |
| 68 | + rayPosRef = vertcat(stf(i).ray.rayPos); |
| 69 | + assertElementsAlmostEqual(sort(rayPosTest,1),sort(rayPosRef,1)); |
| 70 | + assertElementsAlmostEqual(sort(rayPos_bevTest,1),sort(rayPosTest_bev,1)); |
| 71 | + |
| 72 | + targetPointTest = vertcat(stf2(i).ray.targetPoint); |
| 73 | + targetPointRef = vertcat(stf(i).ray.targetPoint); |
| 74 | + targetPoint_bevTest = vertcat(stf2(i).ray.targetPoint_bev); |
| 75 | + targetPoint_bevRef = vertcat(stf(i).ray.targetPoint_bev); |
| 76 | + assertElementsAlmostEqual(sort(targetPointTest,1),sort(targetPointRef,1)); |
| 77 | + assertElementsAlmostEqual(sort(targetPoint_bevTest,1),sort(targetPoint_bevRef,1)); |
| 78 | + assertElementsAlmostEqual(sort(targetPoint_bevTest,1),sort(targetPointTest*rotMat,1)); |
| 79 | + |
| 80 | + energiesTest = [stf2(i).ray.energy]; |
| 81 | + energiesRef = [stf(i).ray.energy]; |
| 82 | + assertEqual(unique(energiesTest),unique(energiesRef)); |
| 83 | + |
| 84 | + %assertTrue(isscalar(stf2(i).ray.energy)); |
| 85 | + end |
0 commit comments