|
|
# Example of ARPES/XPS Experiment
|
|
|
|
|
|
<span style='color:Blue'> Top cell is where we define functions and sample positions </span>
|
|
|
|
|
|
|
|
|
```python
|
|
|
#top: Bi2Se3
|
|
|
S_top=[-0.7, -0.0, 12.4, 0.0, 0.0, 0.0]
|
|
|
#middle: Mn-Bi2Se3
|
|
|
S_middle=[-0.6, -0.18, 15.1, 0.0, 0.0, 0.0]
|
|
|
#bottom: Au
|
|
|
#z=16.9
|
|
|
```
|
|
|
|
|
|
<span style='color:Blue'> Setting the energy for finding the samples (hv = 500 is often a good place to start) </span>
|
|
|
|
|
|
|
|
|
```python
|
|
|
energy(725)
|
|
|
```
|
|
|
|
|
|
MAIN SHUTTER CLOSED !!! Tue 20 Jul 2021 14:06:49
|
|
|
ID now in user mode -Tue 20 Jul 2021 14:06:49
|
|
|
Opening Main Shutter...
|
|
|
MAIN SHUTTER CLOSED !!! Tue 20 Jul 2021 14:06:59
|
|
|
ID now in user mode -Tue 20 Jul 2021 14:06:59
|
|
|
Opening Main Shutter...
|
|
|
ID Ready
|
|
|
|
|
|
ID SET : 740.6 eV
|
|
|
ID RBV : 737.3 eV
|
|
|
Down Table
|
|
|
Mono set to 725 eV
|
|
|
|
|
|
|
|
|
Mono set to 725 eV
|
|
|
|
|
|
|
|
|
<span style='color:Blue'> Getting the EA (electron analzyer) current settings </span>
|
|
|
|
|
|
|
|
|
```python
|
|
|
EA.get()
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
{'PHV': '29idcScienta:HV:',
|
|
|
'_Pcam': '29idcScienta:basler:cam1:',
|
|
|
'_savePlugin': '29idcScienta:HDF1:',
|
|
|
'_statsPlugin': '29idcScienta:Stats4:',
|
|
|
'dtype': 'h5',
|
|
|
'wk': 0.0,
|
|
|
'ElementSet': 0,
|
|
|
'LensMode': 'Transmission',
|
|
|
'PassEnergy': 200.0,
|
|
|
'KineticEnergy': 615.0,
|
|
|
'SpectraMode': 'Fixed',
|
|
|
'ExpFrames': 1.0,
|
|
|
'Sweeps': 1}
|
|
|
|
|
|
|
|
|
|
|
|
<span style='color:Blue'> Use the cursors on cam2 as a good starting point (top hat x ~ 0, flat plate x ~ 2.5)
|
|
|
Scanning z to find centers of samples
|
|
|
</span>
|
|
|
|
|
|
|
|
|
```python
|
|
|
scanz(6,20,.1)
|
|
|
```
|
|
|
|
|
|
Scan1: 29idc:m3.VAL= 6.0 / 20.0 / 0.1
|
|
|
ARPES_1143 started at Tue 20 Jul 2021 14:23:54
|
|
|
ARPES_1143 finished at Tue 20 Jul 2021 14:29:32
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
#z-scan
|
|
|
plot_mda(1143,17)
|
|
|
```
|
|
|
|
|
|
/home/beams/29IDUSER/Documents/User_Folders/Staff/lastfigure.png
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
![png](output_9_1.png)
|
|
|
|
|
|
|
|
|
|
|
|
<span style='color:Blue'> Picking top sample (smallest z value)
|
|
|
</span>
|
|
|
|
|
|
|
|
|
```python
|
|
|
mvz(12.4)
|
|
|
```
|
|
|
|
|
|
z = 12.401
|
|
|
|
|
|
|
|
|
<span style='color:Blue'> Scanning laterally (y) to find the center - Note: y is a left handed motor </span>
|
|
|
|
|
|
|
|
|
```python
|
|
|
scany(-3,3,.1,'relative')
|
|
|
```
|
|
|
|
|
|
start, stop, step = -2.752, 3.248, 0.1
|
|
|
Scan1: 29idc:m2.VAL= -2.752 / 3.248 / 0.1
|
|
|
ARPES_1144 started at Tue 20 Jul 2021 14:32:35
|
|
|
ARPES_1144 finished at Tue 20 Jul 2021 14:35:10
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
plot_mda(1144,17,1144,16,norm='y')
|
|
|
```
|
|
|
|
|
|
/home/beams/29IDUSER/Documents/User_Folders/Staff/lastfigure.png
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
![png](output_14_1.png)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
mvy(0)
|
|
|
```
|
|
|
|
|
|
y = -0.002
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
EA.put(500,200,'Transmission') #Pick a KE without core levels but with counts
|
|
|
```
|
|
|
|
|
|
<span style='color:Blue'> Adjust x by hand (narrowest tranmission line, depth of focus ~0.05mm </span>
|
|
|
|
|
|
|
|
|
```python
|
|
|
mprint() #Top sample position; copy this to top cell for later user
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[-0.7, -0.0, 12.4, 0.0, 0.0, 0.0]
|
|
|
|
|
|
|
|
|
|
|
|
### Changed folder to NXschool (was staff) <span style='color:Blue'> (numbering starts over) </span>
|
|
|
|
|
|
<span style='color:Blue'> Overview XPS scan to check sample quality </span>
|
|
|
|
|
|
|
|
|
```python
|
|
|
energy(1200)
|
|
|
```
|
|
|
|
|
|
ID Ready
|
|
|
|
|
|
ID SET : 1231.5 eV
|
|
|
ID RBV : 1226.7 eV
|
|
|
Down Table
|
|
|
Mono set to 1200 eV
|
|
|
|
|
|
|
|
|
Mono set to 1200 eV
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
XPS_overview=["KE",300,1205,1,200,1,1]
|
|
|
scanEA(XPS_overview)
|
|
|
```
|
|
|
|
|
|
_scanEAPrefix prefix: MDAscan0001
|
|
|
|
|
|
All extra positionners cleared
|
|
|
Sweep scan KE: 300 | 1205 | 1
|
|
|
Scan1: = 0.0 / 1.0 / 1.0
|
|
|
ARPES_1 started at Tue 20 Jul 2021 15:07:22
|
|
|
ARPES_1 finished at Tue 20 Jul 2021 15:14:54
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<span style='color:Blue'> initialize loading (use .update to add new data) </span>
|
|
|
|
|
|
|
|
|
```python
|
|
|
data=IEXdata(1)
|
|
|
```
|
|
|
|
|
|
path = /net/s29data/export/data_29idc/2021_2/NXschool/mda/
|
|
|
Loaded mdaAD scanNums: [[1]]
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
path = '/net/s29data/export/data_29idc/2021_2/NXschool/mda/'
|
|
|
prefix = 'ARPES_'
|
|
|
data = IEXdata(1,inf,path=path, prefix=prefix)
|
|
|
```
|
|
|
|
|
|
path = /net/s29data/export/data_29idc/2021_2/NXschool/mda/
|
|
|
Scan ARPES_0002.mda aborted no data taken
|
|
|
Scan ARPES_0004.mda aborted no data taken
|
|
|
Scan ARPES_0006.mda aborted no data taken
|
|
|
Scan ARPES_0007.mda aborted no data taken
|
|
|
Scan ARPES_0012.mda aborted no data taken
|
|
|
Loaded mdaAD scanNums: [[1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23]]
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
data.plotEDC(1)
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
![png](output_26_0.png)
|
|
|
|
|
|
|
|
|
|
|
|
<span style='color:Blue'> Optimizing bottom sample </span>
|
|
|
|
|
|
|
|
|
```python
|
|
|
mvz(15.1)
|
|
|
```
|
|
|
|
|
|
z = 15.1
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
EA.put(900,200,'Transmission') #Pick a KE without core levels but with counts
|
|
|
```
|
|
|
|
|
|
<span style='color:Blue'> Adjust x by hand (narrowest tranmission line, depth of focus ~0.05mm </span>
|
|
|
|
|
|
|
|
|
```python
|
|
|
scany(-3,3,.1)
|
|
|
```
|
|
|
|
|
|
Scan1: 29idc:m2.VAL= -3.0 / 3.0 / 0.1
|
|
|
ARPES_3 started at Tue 20 Jul 2021 15:36:01
|
|
|
ARPES_3 finished at Tue 20 Jul 2021 15:39:41
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
mvy(-.18)
|
|
|
```
|
|
|
|
|
|
y = -0.18
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
mprint() #Bottom sample position; copy this to top cell for later user
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[-0.6, -0.18, 15.1, 0.0, 0.0, 0.0]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
XPS_overview=["KE",300,1205,1,200,1,1]
|
|
|
scanEA(XPS_overview)
|
|
|
```
|
|
|
|
|
|
_scanEAPrefix prefix: MDAscan0005
|
|
|
|
|
|
All extra positionners cleared
|
|
|
Sweep scan KE: 300 | 1205 | 1
|
|
|
Scan1: = 0.0 / 1.0 / 1.0
|
|
|
ARPES_5 started at Tue 20 Jul 2021 16:07:18
|
|
|
ARPES_5 finished at Tue 20 Jul 2021 16:14:52
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
data.update(5)
|
|
|
```
|
|
|
|
|
|
Loaded mdaAD scanNums: [[5]]
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
data.plotEDC(5)
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
![png](output_36_0.png)
|
|
|
|
|
|
|
|
|
|
|
|
<span style='color:Blue'> Quick and dirty Mn XAS </span>
|
|
|
|
|
|
|
|
|
```python
|
|
|
scanXAS_BL([[620,680,1]])
|
|
|
```
|
|
|
|
|
|
ID Ready
|
|
|
|
|
|
ID SET : 631.1 eV
|
|
|
ID RBV : 625.3 eV
|
|
|
Down Table
|
|
|
Mono set to 618.0 eV
|
|
|
|
|
|
|
|
|
Mono set to 618.0 eV
|
|
|
ID Ready
|
|
|
|
|
|
ID SET : 632.1 eV
|
|
|
ID RBV : 626.3 eV
|
|
|
Down Table
|
|
|
Mono set to 619.0 eV
|
|
|
|
|
|
|
|
|
Mono set to 619.0 eV
|
|
|
Scan1: 29idmono:ENERGY_SP= 0.0 / 0.0 / 0.0
|
|
|
ARPES_9 started at Tue 20 Jul 2021 16:42:17
|
|
|
ARPES_9 finished at Tue 20 Jul 2021 16:49:59
|
|
|
|
|
|
|
|
|
|
|
|
All extra positionners cleared
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
data.update(9)
|
|
|
```
|
|
|
|
|
|
Loaded mdaAD scanNums: [[9]]
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
data.plotmda(9,16) # can see Mn
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
![png](output_40_0.png)
|
|
|
|
|
|
|
|
|
|
|
|
<span style='color:Blue'> Moving back to top (undoped sample) to look for bands</span>
|
|
|
|
|
|
|
|
|
```python
|
|
|
sample(S_top)
|
|
|
```
|
|
|
|
|
|
|
|
|
x=-0.7 y=-0.0 z=12.4 theta=0.0 chi=0.0 phi=0.0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
energy(500)
|
|
|
```
|
|
|
|
|
|
ID Ready
|
|
|
|
|
|
ID SET : 512.8 eV
|
|
|
ID RBV : 505.4 eV
|
|
|
Down Table
|
|
|
Mono set to 500 eV
|
|
|
|
|
|
|
|
|
Mono set to 500 eV
|
|
|
|
|
|
|
|
|
<span style='color:Blue'> Check focus, sample is still cooling </span>
|
|
|
|
|
|
|
|
|
```python
|
|
|
EA.put(500-50,200,'Transmission')#x=-0.65
|
|
|
```
|
|
|
|
|
|
|
|
|
```python
|
|
|
scanEA(["KE",495,200,17*60*4,1])
|
|
|
```
|
|
|
|
|
|
_scanEAPrefix prefix: MDAscan0013
|
|
|
|
|
|
All extra positionners cleared
|
|
|
Fixed scan KE: 495
|
|
|
Scan1: = 0.0 / 1.0 / 1.0
|
|
|
ARPES_13 started at Tue 20 Jul 2021 17:00:44
|
|
|
ARPES_13 finished at Tue 20 Jul 2021 17:04:41
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
data.plotEA(13)
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
![png](output_47_0.png)
|
|
|
|
|
|
|
|
|
|
|
|
<span style='color:Blue'> Setting up for a Fermi Map </span>
|
|
|
|
|
|
The focus of an analyzer is not at the center of rotation, therfore we need to addjust the
|
|
|
position as we rotate the sample.
|
|
|
|
|
|
Put the analyzer in tranmission mode
|
|
|
1) mvth(val) val starts with largest (most positive) th you will use and ends with the smallest (most negative) value (@ 500 eV +/= 10 will get you more than one zone for most materials)
|
|
|
2) Iterate scanning x and y (lateral and focus) (so that you are in focus at the lateral position you want)
|
|
|
3) mprint() and copy the output into a list of RoughPositions (see cell below)
|
|
|
|
|
|
Repeat 1-3 for you whole theta range. We will linearly interpolate between the rough positions when taking a Fermi map. Small rough sample far from the center of rotation require smaller theta step, larg uniform flat sample can use 5 degree steps
|
|
|
|
|
|
|
|
|
```python
|
|
|
EA.put(495-10,200,"Transmission")
|
|
|
```
|
|
|
|
|
|
|
|
|
```python
|
|
|
mprint()
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[-0.4, -0.0, 14.85, -10.0, 0.0, 0.0]
|
|
|
|
|
|
|
|
|
|
|
|
<span style='color:Blue'>Taking a Fermi map </span>
|
|
|
|
|
|
|
|
|
```python
|
|
|
z=12.5
|
|
|
logprint('FermiMap Bi2Se3, z='+str(z))
|
|
|
RoughPositions=[[-0.85, -0.0, z, 10.0, 0.0, 0.0],
|
|
|
[-0.8, -0.0, z, 7.5, 0.0, 0.0],
|
|
|
[-0.75, -0.0, z, 5.0, 0.0, 0.0],
|
|
|
[-0.7, -0.0, z, 2.5, 0.0, 0.0],
|
|
|
[-0.65, -0.0, z, 0.0, 0.0, 0.0],
|
|
|
[-0.6, -0.0, z, -2.5, 0.0, 0.0],
|
|
|
[-0.55, -0.0, z, -5.0, 0.0, 0.0],
|
|
|
[-0.45, -0.0, z, -7.5, 0.0, 0.0],
|
|
|
[-0.4, -0.0, z, -10.0, 0.0, 0.0]]
|
|
|
|
|
|
EAlist=['BE',5,200,20*4,1,'BS']
|
|
|
scanFM(RoughPositions,[9,-9,.25],EAlist)
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
FermiMap Bi2Se3, z=12.5
|
|
|
_scanEAPrefix prefix: MDAscan0015
|
|
|
|
|
|
All extra positionners cleared
|
|
|
Baby-Sweep scan KE: 495.0015156
|
|
|
Scan1: 29idcScienta:userCalcOut10.PROC= 0.0 / 0.0 / 0.0
|
|
|
Scan2: 29idc:m4.VAL= 0.0 / 0.0 / 0.0
|
|
|
ARPES_15 started at Tue 20 Jul 2021 20:48:54
|
|
|
ARPES_15 finished at Wed 21 Jul 2021 02:14:15
|
|
|
|
|
|
|
|
|
_scanEAPrefix prefix: EA
|
|
|
|
|
|
All extra positionners cleared
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
data.update(15)
|
|
|
```
|
|
|
|
|
|
Loaded mdaAD scanNums: [[15]]
|
|
|
|
|
|
|
|
|
<span style='color:Blue'>Checking the individual scans </span>
|
|
|
|
|
|
|
|
|
```python
|
|
|
%matplotlib inline
|
|
|
data.plotEA(15,1) #scan 15, spectra(image) 6
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
![png](output_55_0.png)
|
|
|
|
|
|
|
|
|
|
|
|
<span style='color:Blue'>Plotting a Fermi Map with Image Tool </span>
|
|
|
|
|
|
|
|
|
```python
|
|
|
#creating a regular array for Image Tool
|
|
|
ra=data.stackmdaEA(15)
|
|
|
```
|
|
|
|
|
|
Degrees Kinetic Energy (eV)
|
|
|
|
|
|
|
|
|
![image.png](attachment:0726f6cf-7682-49cc-bd86-57e59e50dd94.png)
|
|
|
|
|
|
![image.png](attachment:3efa28b7-dbe1-4ce8-8b2b-30dc03e9f2cb.png)
|
|
|
|
|
|
<span style='color:Blue'>Mn XAS </span>
|
|
|
|
|
|
|
|
|
```python
|
|
|
Mn_XAS=[[630,635,0.5],[635,637,0.25],[637,645,0.1],[645,649,0.25],[649,655,0.1],[655,670,0.5]]
|
|
|
scanXAS_BL(Mn_XAS,average=4)
|
|
|
```
|
|
|
|
|
|
|
|
|
```python
|
|
|
data.mda.keys()
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
dict_keys([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23])
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
data.plotmda(16,16)
|
|
|
```
|
|
|
|
|
|
|
|
|
---------------------------------------------------------------------------
|
|
|
|
|
|
KeyError Traceback (most recent call last)
|
|
|
|
|
|
Input In [3], in <cell line: 1>()
|
|
|
----> 1 data.plotmda(16,16)
|
|
|
|
|
|
|
|
|
File /home/beams22/29IDUSER/Documents/User_Macros/Macros_29id/IEX_nData.py:846, in IEXdata.plotmda(self, scanNum, detNum, posNum, **kwargs)
|
|
|
844 if len(y.shape)==2:
|
|
|
845 if "row" not in kwargs and "column" not in kwargs:
|
|
|
--> 846 if kwargs['Norm2One']:
|
|
|
847 print('Norm2One not currently implemented in 2D data, adjust vmin,vmax')
|
|
|
848 del kwargs['Norm2One']
|
|
|
|
|
|
|
|
|
KeyError: 'Norm2One'
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
%run Macros_29id/ScanFunctions_plot.py
|
|
|
plot_mda(16,16)
|
|
|
```
|
|
|
|
|
|
/home/beams22/29IDUSER/Documents/User_Macros/Macros_29id/ScanFunctions_plot.py
|
|
|
/net/s29data/export/data_29idc/2022_2/NX_school/mda/ARPES_0016.mda not found
|
|
|
error
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
![png](output_64_1.png)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
|
```
|
|
|
|
|
|
<span style='color:Blue'>Putting Beamline in safe state </span>
|
|
|
|
|
|
|
|
|
```python
|
|
|
EA.off()
|
|
|
Close_CBranch()
|
|
|
```
|
|
|
|
|
|
Closing C-Shutter...
|
|
|
Closing C-Valve...
|
|
|
Closing C-Valve...
|
|
|
Closing C-Valve...
|
|
|
Can't close valve; check status
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
---------------------------------------------------------------------------
|
|
|
|
|
|
NameError Traceback (most recent call last)
|
|
|
|
|
|
Input In [1], in <cell line: 1>()
|
|
|
----> 1 resolution()
|
|
|
|
|
|
|
|
|
NameError: name 'resolution' is not defined
|
|
|
|
|
|
|
|
|
|
|
|
```python
|
|
|
|
|
|
``` |