Title :ETHA Keywords :EELS,STEM,COLLECTION EFFICIENCY,CONVERGENT BEAM Computer :DEC LSI-11/73 Operating System :RSX-11M-PLUS Programming Language :DEC-FORTRAN IV Hardware Requirements :None Author(s) :Dr. Pierre TREBBIA Correspondence Address :Laboratoire de Physique des Solides :Bat. 510, F91405 ORSAY CEDEX FRANCE Abstract: When EELS spectra are recorded with a convergent beam (STEM case), one has to compute an effective collection angle BETA* which should be used in computing the interaction cross sections, instead of the actual collection angle BETA. This is the job of program ETHA. A complete description of the algorithm is given in "Unbiased Method for Signal Estimation in Electron Energy Loss Spectroscopy...", P. TREBBIA, Ultramicroscopy (1988). Title :ETHA Keywords :EELS,STEM,COLLECTION EFFICIENCY,CONVERGENT BEAM Computer :DEC LSI-11/73 Operating System :RSX-11M-PLUS Programming Language :DEC-FORTRAN IV Hardware Requirements :None Author(s) :Dr. Pierre TREBBIA Correspondence Address :Laboratoire de Physique des Solides :Bat. 510, F91405 ORSAY CEDEX FRANCE Description : see comments line in the source code text References : see comments line in the source code text Compilation procedure : compile the program ETHA Linking procedure : Link the resulting object file. Test data : ETHA.DAT is the output that ETHA should give if the appropriate parameters are entered. General comments : If the compiler is not a DEC-FORTRAN IV compiler, do check the source code : for example, the ! sign in a line means that the remaining text is comments, or the LOG function is implicitely changed to DLOG if the variable is double precision. Title :ETHA Keywords :EELS,STEM,COLLECTION EFFICIENCY,CONVERGENT BEAM Computer :DEC LSI-11/73 Operating System :RSX-11M-PLUS Programming Language :DEC-FORTRAN IV Hardware Requirements :None Author(s) :Dr. Pierre TREBBIA Correspondence Address :Laboratoire de Physique des Solides :Bat. 510, F91405 ORSAY CEDEX FRANCE PROGRAM ETHA c c LAST VERSION : 28-JUL-1987 09:21:14 c c purpose c ------- c This program computes etha(alpha,beta), that is the collection c efficiency associated to the following geometry : c c alpha = half angle of illumination (0 -> pi/2) c beta = half angle of collection (0 -> pi/2) c (pi/2 = 1570.795 mrad) c c A constant angular distribution of incident electrons is assumed c for any incident angle (-alpha,alpha). These electrons impige the c target and a single energy loss event occurs, with a characteristic c angle theta-e (relativistic). The angular distribution of the c electrons after the target is analytically derived. c This program integrates this distribution from theta=0 up to c theta=beta with an adjustable angular step. c This program also computes beta* which is the theoretical c collection angle which would give the same value of etha(alpha,beta) c with a parallel incident beam. c c subroutines and function subprograms required c --------------------------------------------- c none c c comments c -------- c c The following parameters are asked as input : c accelerating voltage (kV), energy loss range (eV) for the study, c energy loss step (eV) in this range, alpha (mrad), beta (mrad). c The program returns for each energy loss step : c alpha (mrad), beta (mrad), theta-e (relativistic) (mrad), c energy loss (eV), etha (%), beta * (mrad) c c author : c -------- c Pierre TREBBIA c US 41 : "Microscopie Electronique Analytique Quantitative" c Laboratoire de Physique des Solides, Bat. 510 c Universite Paris-Sud, F91405 ORSAY Cedex c Phone : (33-1) 69 41 53 68 c real*8 pi,zx,zi,z1,z2,z3,z4,z5,z6,z7,x0,x1,x2,x3,x4,x5,x6,x7,x8 real*8 x9,x10,theta,dtheta,eta,etha2,beta logical pr pi=3.14159 pr=.true. ! enable record of data c c Results storage ? c ----------------- c type 2 2 format(' Do you want a report ? [default : Y] ? ',$) read(5,1010,end=800) rep if ((rep.eq.'n').or.(rep.eq.'N')) pr=.false. if(pr) then open(4,name='ETHA.DAT',status='new') type *,' ** Your report is in the file ETHA.DAT **' endif c c Ask for input values c -------------------- c 5 write(5,10) 10 format(' Accelerating voltage (kV) = ',$) read (5,*,end=800) z1 z1=z1*1000. ! eV write(5,15) 15 format(' from energy loss (ev)= ',$) read(5,*,end=800) z2 write(5,20) 20 format(' to energy loss (ev)= ',$) read(5,*,end=800) z3 write(5,25) 25 format(' with a step (ev)= ',$) read(5,*,end=800) z4 write(5,30) 30 format(' 1/2 illumination angle (mrad)= ',$) read(5,*,end=800) z5 z5=z5*0.001 ! rad write(5,35) 35 format(' 1/2 collection angle (mrad)= ',$) read(5,*,end=800) z6 z6=z6*0.001 ! rad z7=500. ! number of integration steps to be modified at will if(pr) then write(4,50) z1/1000.,z2,z3,z4,z5*1000.,z6*1000. 50 format(//,' Accelerating voltage (kV)= ',f6.1,/, & ' from energy loss (ev)= ',f6.1,/, & ' to energy loss (ev)= ',f6.1,/, & ' with a step (ev)= ',f6.1,/, & ' 1/2 illumination angle (mrad)= ',f8.3,/, & ' 1/2 collection angle (mrad)= ',f8.3) endif write(5,60) if(pr) write(4,60) 60 format( 6x,'ALPHA',6x,'BETA',7x,'THETA-E', & 7x,'ENERGY',6x,'ETHA',6x,'BETA * ') c c main loop on energy loss c do 300 zx=z2,z3,z4 ! zx = current energy loss eta=0. x0=zx*(z1+511060.)/(z1*(z1+1022120.)) ! x0 = relativistic theta-e x1=pi/(2.*x0) x2=x0*x0+z5*z5 x3=z5/x0*z5/x0 x4=0.1*sqrt(x2) dtheta=(z6-x4)/z7 c c calculation of the analytical expression c do 100 zi=1.,z7,1. theta=x4+dtheta*zi x5=theta*theta x6=4.*x5*x0*x0 x7=x2-x5 x8=sqrt(x7*x7+x6) x9=(x8+x7)/(2.*x0*x0) x10=2.*theta*dtheta*log(x9) eta=eta+x10 100 continue eta=eta+x2/100.*log(1.+x3) ! addition of the central contribution x4=z5*z5*log(1.+x1*x1) ! normalisation eta=eta/x4 c c correction by geometrical factor (beta/alpha)**2 c if (z6.lt.z5) then x5=z5/z6 eta=eta*x5*x5 endif 150 etha2=eta*100. c c calculation of beta * c x6=(1.+x1*x1)**eta x7=x0*sqrt(x6-1.) beta=x7*1000. c c results output c write(5,200) z5*1000.,z6*1000.,x0*1000.,zx,etha2,beta if(pr) write(4,200) z5*1000.,z6*1000.,x0*1000.,zx,etha2,beta 200 format(3x,f7.1,4x,f7.1,7x,f7.4,5x,f7.1,4x,f7.1,4x,f7.2) 300 continue c c Run again c --------- type *,' Start again. Input new data. Enter CTRL Z for exit' go to 5 c c Program exit c ------------ c 800 if(pr) then close(5) open(5,status='new') write(5,805) 805 format(10x,'Do you want your report to be printed ? ', & '[default : N] ',$) read(5,1010,end=1000) pri if((pri.eq.'y').or.(pri.eq.'Y')) then close(4,dispose='print') type *,'Don''t forget your report !' endif endif 1000 stop 1010 format(a1) end DEMONSTRATION OF PROGRAM ETHA Accelerating voltage (kV)= 100.0 from energy loss (ev)= 500.0 to energy loss (ev)= 700.0 with a step (ev)= 10.0 1/2 illumination angle (mrad)= 15.000 1/2 collection angle (mrad)= 25.000 ALPHA BETA THETA-E ENERGY ETHA BETA * 15.0 25.0 2.7228 500.0 33.4 22.60 15.0 25.0 2.7772 510.0 33.2 22.61 15.0 25.0 2.8317 520.0 33.0 22.61 15.0 25.0 2.8862 530.0 32.8 22.61 15.0 25.0 2.9406 540.0 32.6 22.61 15.0 25.0 2.9951 550.0 32.4 22.61 15.0 25.0 3.0495 560.0 32.2 22.62 15.0 25.0 3.1040 570.0 32.0 22.62 15.0 25.0 3.1584 580.0 31.9 22.62 15.0 25.0 3.2129 590.0 31.7 22.62 15.0 25.0 3.2674 600.0 31.5 22.62 15.0 25.0 3.3218 610.0 31.3 22.63 15.0 25.0 3.3763 620.0 31.2 22.63 15.0 25.0 3.4307 630.0 31.0 22.63 15.0 25.0 3.4852 640.0 30.8 22.63 15.0 25.0 3.5396 650.0 30.6 22.63 15.0 25.0 3.5941 660.0 30.5 22.64 15.0 25.0 3.6485 670.0 30.3 22.64 15.0 25.0 3.7030 680.0 30.1 22.64 15.0 25.0 3.7575 690.0 30.0 22.64 15.0 25.0 3.8119 700.0 29.8 22.65