In [1]:
%pylab inline
from scipy.interpolate import interp1d

from IPython.display import Image


Populating the interactive namespace from numpy and matplotlib

Details

Below are the recorded measurements for the first batch of cutout factor measurements

Ionisation conversion

The following cell is used to initialise the ionisation to dose conversion function. Data is extracted from table 20 within TRS398. R50 of the 12 MeV beam is $4.75~g/cm^2$


In [2]:
zOnR50 = concatenate((array([0.02]), arange(0.05,1.25,0.05)))
R50of45 = array([0.997,1,1.004,1.008,1.012,1.017,1.021,1.026,1.03,
                 1.035,1.04,1.045,1.051,1.056,1.062,1.067,1.073,1.08,
                 1.086,1.092,1.099,1.106,1.113,1.120,1.128])

R50of50 = array([0.991,0.994,0.998,1.002,1.006,1.011,1.016,1.02,1.025,
                 1.03,1.035,1.041,1.046,1.052,1.058,1.064,1.07,1.076,
                 1.083,1.09,1.097,1.104,1.112,1.119,1.128])

R50of47_5 = mean([R50of45,R50of50],axis=0)

stopRatio = interp1d(zOnR50 * 47.5,R50of47_5)

Measurements

These measurements were done on Harry 2694, with a Markus chamber set to +300 V. The sensitivity was $1.398 \times 10^9$. All measurements were done at 100 SSD with a 12 MeV beam and a $10\times10$ cm applicator. Below are the readings recorded in chronological order.

Readings


In [3]:
standard_insert_reading = {}
cutout_reading = {}
factor = {}

Standard Insert


In [4]:
standard_insert_reading = array([])

standard_insert_reading = append(standard_insert_reading,mean([1.538,1.539,1.539])) # 01
standard_insert_reading = append(standard_insert_reading,mean([1.538])) # 02
standard_insert_reading = append(standard_insert_reading,mean([1.539,1.540,1.539])) # 03
standard_insert_reading = append(standard_insert_reading,mean([1.540,1.540,1.540])) # 04
standard_insert_reading = append(standard_insert_reading,mean([1.534,1.534,1.534])) # 05
# standard_insert_reading = append(standard_insert_reading,mean([])) # 06

uncertainty = std(standard_insert_reading)

standard_insert_reading = mean(standard_insert_reading)

Output function definition


In [5]:
def outputFunction(cutout,depth,readings,reference):
    
    if size(readings) == 1:
        
        cutout_reading = readings
        factor = reference / cutout_reading * (stopRatio(25) / stopRatio(depth[0]))
        
    else:
    
        stop_ratio_corrected = stopRatio(depth) * readings

        scatter(depth,stop_ratio_corrected)
        ylabel('Stopping power ratio corrected')
        xlabel('Depth (mm)')
        title('Relative ionsation to relative dose')
        show()
        
        ref = argmax(stop_ratio_corrected)
        
        cutout_reading = readings[ref]
        
        factor = (reference / cutout_reading) * (stopRatio(25) / stopRatio(depth[ref]))
    
    
    print("Reading = %0.3f" %(cutout_reading))

    
    print("Cutout factor = %0.3f | %0.1f%%" %(factor, (factor - 1) * 100))
   
    return cutout_reading, factor

Cutout readings


In [6]:
# Applicator 01 measurement done here

In [7]:
cutout = '032'
depth = array([25])
readings = array([])

readings = append(readings,mean([1.550,1.549,1.549])) # ionisation at depth 25 mm RW3

cutout_reading[cutout], factor[cutout] = outputFunction(cutout,depth,readings,1.539)

Image('../figures/saved/'+cutout+'.png')


Reading = 1.549
Cutout factor = 0.993 | -0.7%
Out[7]:

In [8]:
cutout = '018'
depth = array([25,25])
readings = array([])

readings = append(readings,mean([1.542,1.542,1.542])) # ionisation at depth 25 mm RW3
# readings = append(readings,mean([1.542])) # ionisation at depth 25 mm RW3 -- 

cutout_reading[cutout], factor[cutout] = outputFunction(cutout,depth,readings,1.539)

Image('../figures/saved/'+cutout+'.png')


Reading = 1.542
Cutout factor = 0.998 | -0.2%
Out[8]:

In [9]:
cutout = '070'
depth = array([25])
readings = array([])

readings = append(readings,mean([1.543,1.542,1.542])) # ionisation at depth 25 mm RW3

cutout_reading[cutout], factor[cutout] = outputFunction(cutout,depth,readings,1.538)

Image('../figures/saved/'+cutout+'.png')


Reading = 1.542
Cutout factor = 0.997 | -0.3%
Out[9]:

In [10]:
# Applicator 02 measurement here

In [11]:
cutout = '006'
depth = array([25])
readings = array([])

readings = append(readings,mean([1.536,1.536,1.536])) # ionisation at depth 25 mm RW3

cutout_reading[cutout], factor[cutout] = outputFunction(cutout,depth,readings,1.538)

Image('../figures/saved/'+cutout+'.png')


Reading = 1.536
Cutout factor = 1.001 | 0.1%
Out[11]:

In [12]:
cutout = '073'
depth = array([25])
readings = array([])

readings = append(readings,mean([1.546,1.546,1.546])) # ionisation at depth 25 mm RW3

cutout_reading[cutout], factor[cutout] = outputFunction(cutout,depth,readings,1.539)

Image('../figures/saved/'+cutout+'.png')


Reading = 1.546
Cutout factor = 0.995 | -0.5%
Out[12]:

In [13]:
cutout = '034'
depth = array([25])
readings = array([])

readings = append(readings,mean([1.549,1.549,1.550])) # ionisation at depth 25 mm RW3

cutout_reading[cutout], factor[cutout] = outputFunction(cutout,depth,readings,1.539)

Image('../figures/saved/'+cutout+'.png')


Reading = 1.549
Cutout factor = 0.993 | -0.7%
Out[13]:

In [14]:
# Applicator 03 here

In [15]:
cutout = '041'
depth = array([25])
readings = array([])

readings = append(readings,mean([1.547,1.547,1.547])) # ionisation at depth 25 mm RW3

cutout_reading[cutout], factor[cutout] = outputFunction(cutout,depth,readings,1.539)

Image('../figures/saved/'+cutout+'.png')


Reading = 1.547
Cutout factor = 0.995 | -0.5%
Out[15]:

In [16]:
cutout = '109'
depth = array([25])
readings = array([])

readings = append(readings,mean([1.529,1.528,1.528])) # ionisation at depth 25 mm RW3

cutout_reading[cutout], factor[cutout] = outputFunction(cutout,depth,readings,1.539)

Image('../figures/saved/'+cutout+'.png')


Reading = 1.528
Cutout factor = 1.007 | 0.7%
Out[16]:

In [17]:
cutout = '082'
depth = array([25])
readings = array([])

readings = append(readings,mean([1.538,1.537,1.538])) # ionisation at depth 25 mm RW3

cutout_reading[cutout], factor[cutout] = outputFunction(cutout,depth,readings,1.539)

Image('../figures/saved/'+cutout+'.png')


Reading = 1.538
Cutout factor = 1.001 | 0.1%
Out[17]:

In [18]:
cutout = '016'
depth = array([25])
readings = array([])

readings = append(readings,mean([1.540,1.541,1.541])) # ionisation at depth 25 mm RW3

cutout_reading[cutout], factor[cutout] = outputFunction(cutout,depth,readings,1.540)

Image('../figures/saved/'+cutout+'.png')


Reading = 1.541
Cutout factor = 1.000 | -0.0%
Out[18]:

In [19]:
# Applicator 04 here

In [20]:
# cutout = '014' # equivalent 14
# depth = array([23,22,21,20])
# readings = array([])

# readings = append(readings,mean([1.481,1.480,1.481])) # ionisation at depth 23 mm RW3
# readings = append(readings,mean([1.484,1.484,1.484])) # ionisation at depth 22 mm RW3
# readings = append(readings,mean([1.488,1.487,1.487])) # ionisation at depth 21 mm RW3
# readings = append(readings,mean([1.486,1.486])) # ionisation at depth 20 mm RW3

# # cutout_reading[cutout], factor[cutout] = outputFunction(cutout,depth,readings)

# Image('../figures/saved/'+cutout+'.png')

In [21]:
cutout = '014' # 14.2
depth = array([20,21,22])
readings = array([])

readings = append(readings,mean([1.487,1.487])) # ionisation at depth 20 mm RW3
readings = append(readings,mean([1.486,1.486,1.486])) # ionisation at depth 21 mm RW3
readings = append(readings,mean([1.483,1.483,1.482])) # ionisation at depth 22 mm RW3

cutout_reading[cutout], factor[cutout] = outputFunction(cutout,depth,readings,1.537)

Image('../figures/saved/'+cutout+'.png')


Reading = 1.486
Cutout factor = 1.043 | 4.3%
Out[21]:

In [22]:
# cutout = '014' # 14.1
# depth = array([22,21])
# readings = array([])

# readings = append(readings,mean([1.480,1.480])) # ionisation at depth 22 mm RW3
# readings = append(readings,mean([1.483,1.482,1.483])) # ionisation at depth 21 mm RW3

# # cutout_reading[cutout], factor[cutout] = outputFunction(cutout,depth,readings)

# Image('../figures/saved/'+cutout+'.png')

In [23]:
# Applicator 05 here

In [24]:
with open('cutout_factors','r') as f:
    
    loaded_factors = eval(f.read())

    
factors_to_save = dict(list(loaded_factors.items()) + list(factor.items()))

with open('cutout_factors','w') as f:
    
    f.write(str(factors_to_save))