Ejemplo n.º 1
0
def simSpc(mat, e0, det, dose, ntraj, simDir):
    """
    simSpc(mat, e0, det, dose, ntraj, simDir)

    simulate a spectrum from a material and write it out.
	"""
    xrts = []
    trs = mc3.suggestTransitions(mat, e0)
    for tr in trs:
        xrts.append(tr)

    xtraParams = {}
    xtraParams.update(mc3.configureXRayAccumulators(xrts, True, True, True))
    xtraParams.update(mc3.configureOutput(simDir))

    spc = mc3.simulate(mat, det, e0, dose, True, nTraj, True, True, xtraParams)
    fmtS = "%s-at-%g-kV"
    sName = fmtS % (mat.getName(), e0)
    spc.rename(sName)
    spc.display()
    fi = simDir + "/"
    fi += sName
    fi += "-%g-Traj.msa" % (nTraj)
    spc.save(fi)
    return spc
Ejemplo n.º 2
0
def simulateBulkStandard(mat,
                         name,
                         det,
                         e0,
                         lt,
                         pc,
                         withPoisson=True,
                         nTraj=100,
                         sf=True,
                         bf=True,
                         xtraParams={}):
    """simulateBulkStandard(mat, name, det, e0, lt, pc, withPoisson=True,
	nTraj=100, sf=True, bf=True, xtraParams={})"""
    std = mc3.simulate(mat,
                       det,
                       e0,
                       lt * pc,
                       withPoisson=True,
                       nTraj=nTraj,
                       sf=True,
                       bf=True,
                       xtraParams={})
    props = std.getProperties()
    props.setNumericProperty(epq.SpectrumProperties.LiveTime, lt)
    props.setNumericProperty(epq.SpectrumProperties.FaradayBegin, pc)
    props.setNumericProperty(epq.SpectrumProperties.FaradayEnd, pc)
    props.setNumericProperty(epq.SpectrumProperties.BeamEnergy, e0)
    std.setAsStandard(mat)
    return (std)
Ejemplo n.º 3
0
def simBulkStd(mat, det, e0, nTraj, lt=100, pc=1.0, ctd=True):
    """simBulkStd(mat, det, e0, nTraj, lt=100, pc=1.0)

    Use mc3 simulation to simulate an uncoated standard specimen

    Parameters
    ----------
    mat - a dtsa material.
        Note the material must have an associated density. It should have a useful name.
    det - a dtsa detector
        Here is where we get the detector properties and calibration
    e0 - float
        The accelerating voltage in kV
    nTraj - integer
        The number of trajectories to run
    lt - integer (100)
        The live time (sec)
    pc - float (1.0)
        The probe current in nA
    ctd - Boolean (True) - is C coated


    Returns
    -------
    sim - DTSA scriptable spectrum 
        The simulated standard spectrum
    
    Example
    -------
    import dtsa2.jmMC3 as jm3
    det = findDetector("Oxford p4 05eV 2K")
    cu = material("Cu", density=8.92)
    a = jm3.simBulkStd(cu, det, 20.0, 100, 100, 1.0)
    a.display()

    """
    dose = pc * lt  # na-sec"
    xrts = []

    trs = mc3.suggestTransitions(mat, e0)
    for tr in trs:
        xrts.append(tr)

    xtraParams = {}
    xtraParams.update(mc3.configureXRayAccumulators(xrts, True, True, True))

    sim = mc3.simulate(mat,
                       det,
                       e0,
                       dose,
                       withPoisson=True,
                       nTraj=nTraj,
                       sf=True,
                       bf=True,
                       xtraParams=xtraParams)

    sName = "%s-%g-kV" % (mat, e0)
    sim.rename(sName)
    sim.setAsStandard(mat)
    return sim
def simSpc(mat, e0, det, dose, ntraj, simDir):
	"""
    simSpc(mat, e0, det, dose, ntraj, simDir)

    simulate a spectrum from a material and write it out.
	"""
	xrts = []
	trs = mc3.suggestTransitions(mat, e0)
	for tr in trs:
		xrts.append(tr)

	xtraParams={}
	xtraParams.update(mc3.configureXRayAccumulators(xrts,True, True, True))
	xtraParams.update(mc3.configureOutput(simDir))

	spc = mc3.simulate(mat, det, e0, dose, True,
                       nTraj, True, True, xtraParams)
	fmtS = "%s-at-%g-kV"
	sName = fmtS % (mat.getName(), e0)
	spc.rename(sName)
	spc.display()
	fi =  simDir + "/"
	fi += sName
	fi += "-%g-Traj.msa" % (nTraj)
	spc.save(fi)
	return spc
Ejemplo n.º 5
0
def simulateBulkStandard(mat, name, det, e0, lt, pc, withPoisson=True, nTraj=100, sf=True, bf=True, xtraParams={}):
    """simulateBulkStandard(mat, name, det, e0, lt, pc, withPoisson=True,
    nTraj=100, sf=True, bf=True, xtraParams={})"""
    std = mc3.simulate(mat, det, e0, lt*pc, withPoisson=True, nTraj=nTraj, sf=True, bf=True, xtraParams={})
    props=std.getProperties()
    props.setNumericProperty(epq.SpectrumProperties.LiveTime, lt)
    props.setNumericProperty(epq.SpectrumProperties.FaradayBegin, pc)
    props.setNumericProperty(epq.SpectrumProperties.FaradayEnd, pc)
    props.setNumericProperty(epq.SpectrumProperties.BeamEnergy, e0)
    std.setAsStandard(mat)
    return(std)
Ejemplo n.º 6
0
def simBulkStd(mat, det, e0, nTraj, lt=100, pc=1.0, ctd=True):
    """simBulkStd(mat, det, e0, nTraj, lt=100, pc=1.0)

    Use mc3 simulation to simulate an uncoated standard specimen

    Parameters
    ----------
    mat - a dtsa material.
        Note the material must have an associated density. It should have a useful name.
    det - a dtsa detector
        Here is where we get the detector properties and calibration
    e0 - float
        The accelerating voltage in kV
    nTraj - integer
        The number of trajectories to run
    lt - integer (100)
        The live time (sec)
    pc - float (1.0)
        The probe current in nA
    ctd - Boolean (True) - is C coated


    Returns
    -------
    sim - DTSA scriptable spectrum 
        The simulated standard spectrum
    
    Example
    -------
    import dtsa2.jmMC3 as jm3
    det = findDetector("Oxford p4 05eV 2K")
    cu = material("Cu", density=8.92)
    a = jm3.simBulkStd(cu, det, 20.0, 100, 100, 1.0)
    a.display()

    """
    dose = pc * lt  # na-sec"
    xrts = []

    trs = mc3.suggestTransitions(mat, e0)
    for tr in trs:
        xrts.append(tr)

    xtraParams={}
    xtraParams.update(mc3.configureXRayAccumulators(xrts,True, True, True))

    sim = mc3.simulate(mat, det, e0, dose, withPoisson=True, nTraj=nTraj,
                       sf=True, bf=True, xtraParams=xtraParams)

    sName = "%s-%g-kV" % (mat, e0)
    sim.rename(sName)
    sim.setAsStandard(mat)
    return sim
Ejemplo n.º 7
0
def simulate_spectrum(mat, e0, det, nTraj, dose, spcDir):
    """
    simulate_spectrum(mat, e0, det, nTraj, dose, spcDir)
    """
    xrts = []
    trs = mc3.suggestTransitions(mat, e0)
    for tr in trs:
        xrts.append(tr)

    xtraParams={}
    xtraParams.update(mc3.configureXRayAccumulators(xrts,True, True, True))
    # xtraParams.update(mc3.configureOutput(simDir))
    spc = mc3.simulate(mat, det, e0, dose, True, nTraj, True, True, xtraParams)
    sName = "%s std-%g-kV" % (mat.getName(), e0)
    spc.rename(sName)
    spc.setAsStandard(mat)
    spc.display()
    # Save the spectra if NTraj > 500
    if nTraj > 500:
        fi =  spcDir + "/"
        fi += sName
        fi += "-%g-Traj.msa" % (nTraj)
        spc.save(fi)
    return (spc)
Ejemplo n.º 8
0
def fullSimBulkStd(mat, det, e0, nTraj, outPath, dim=5.0e-6, lt=100, pc=1.0, emiSize=512, ctd=False):
    """
    fullSimBulkStd(mat, det, e0, nTraj, outPath, dim=5.0e-6, lt=100, pc=1.0, emiSize=512, ctd=False)

    Use mc3 simulation to simulate an uncoated standard specimen

    Parameters
    ----------
    mat - a dtsa material.
        Note the material must have an associated density. It should have a useful name.
    det - a dtsa detector
        Here is where we get the detector properties and calibration
    e0 - float
        The accelerating voltage in kV
    nTraj - integer
        The number of trajectories to run
    outPath - string
        The path to the directory for output
    dim - float (5.0e-6)
        The size of the emission images
    lt - integer (100)
        The live time (sec)
    pc - float (1.0)
        The probe current in nA
    emiSize - int (default 512)
        The width and depth of the emission images.
    ctd - Boolean (False) - is C coated


    Returns
    -------
    sim - DTSA scriptable spectrum 
        The simulated standard spectrum
    
    Example
    -------
    import dtsa2 as dtsa2
    import dtsa2.mcSimulate3 as mc3
    det = findDetector("Oxford p4 05eV 2K")
    cu = material("Cu", density=8.92)
    a = fullSimBulkStd(cu, det, 20.0, 100, 100, 1.0)
    a.display()

    """
    dose = pc * lt  # na-sec"
    xrts = []

    trs = mc3.suggestTransitions(mat, e0)
    for tr in trs:
        xrts.append(tr)
    mc3.configureEmissionImages(xrts, dim, emiSize)

    xtraParams={}
    xtraParams.update(mc3.configureXRayAccumulators(xrts,True, True, True))
    # note that the image size on the specimen is in meters...
    xtraParams.update(mc3.configureEmissionImages(xrts, 5.0e-6, 512))
    xtraParams.update(mc3.configurePhiRhoZ(5.0e-6))
    xtraParams.update(mc3.configureTrajectoryImage(5.0e-6, 512))
    xtraParams.update(mc3.configureVRML(nElectrons=100))
    xtraParams.update(mc3.configureOutput(outPath))
    mc3.configureOutput(outPath)
    print("Output sent to %s") % (outPath)

    dose = lt*pc

    sim = mc3.simulate(mat, det, e0, dose, withPoisson=True, nTraj=nTraj,
                       sf=True, bf=True, xtraParams=xtraParams)

    sName = "%s-%g-kV" % (mat, e0)
    sim.rename(sName)
    sim.setAsStandard(mat)
    sim.display()
    fi =  outPath + "/"
    fi += sName
    fi += "-%g-Traj.msa" % (nTraj)
    print(fi)
    sim.save(fi)
    return(sim)
Ejemplo n.º 9
0
DataManager.clearSpectrumList()
start = time.time()

zno = material("ZnO", density=5.61)
si  = material("Si", density=2.33)

xrts = []
trs = mc3.suggestTransitions(zno, e0)
for tr in trs:
    xrts.append(tr)

xtraParams={}
xtraParams.update(mc3.configureXRayAccumulators(xrts,True, True, True))
# xtraParams.update(mc3.configureOutput(simDir))
spc_zno_std = mc3.simulate(zno, det, e0, dose, True, nTraj, True, True, xtraParams)
sName = "ZnO std-%g-kV" % (e0)
spc_zno_std.rename(sName)
spc_zno_std.setAsStandard(zno)
spc_zno_std.display()
fi =  resDir + "/"
fi += sName
fi += "-%g-Traj.msa" % (nTraj)
spc_zno_std.save(fi)

xrts = []
trs = mc3.suggestTransitions(si, e0)
for tr in trs:
    xrts.append(tr)

xtraParams={}
Ejemplo n.º 10
0
start = time.time()

homDir = os.environ['HOME']
homDir = homDir.replace('\\', '/')
wrkDir = homDir + "/Documents/git/dtsa2Scripts/utility"
outDir = homDir + "/Documents/git/dtsa2Scripts/utility/output/"
rptDir = wrkDir + '/test-mc3-simulate-Al Results/'

DataManager.clearSpectrumList()

e0 = 15.0
det = findDetector("Probe")
mat = material("Al", 2.7)

spc = mc3.simulate(mat, det, e0, 120.0, True, 10000, True, True, {})
sName = "Bulk Al"
spc.rename(sName)
spc.display()

shutil.rmtree(rptDir)
print "Done!"

end = time.time()
delta = (end - start) / 60
msg = "This script required %.3f min" % delta
print msg
if (delta > 60):
    delta = delta / 60
    msg = "...or %.3f hr" % delta
    print msg
Ejemplo n.º 11
0
    xrts.append(tr)

# print(xrts)

xtraParams = {}
xtraParams.update(mc3.configurePhiRhoZ(przDepUm * 1.0e-6))
xtraParams.update(mc3.configureXRayAccumulators(xrts, True, True, True))
# note that the image size on the specimen is in meters...
xtraParams.update(mc3.configureEmissionImages(xrts, imgSzUm * 1.0e-6, imgSize))
xtraParams.update(mc3.configureTrajectoryImage(imgSzUm * 1.0e-6, imgSize))
xtraParams.update(mc3.configureVRML(nElectrons=vmrlEl))
xtraParams.update(mc3.configureOutput(simDir))

print(xtraParams)

sim = mc3.simulate(mix, det, e0, dose, True, nTraj, True, True, xtraParams)
fmtS = "Admiralty-Brass-at-%g-kV"
sName = fmtS % (e0)
sim.rename(sName)
sim.display()
fi = simDir + "/"
fi += sName
fi += "-%g-Traj.msa" % (nTraj)
sim.save(fi)

# clean up cruft
shutil.rmtree(rptDir)
print "Done!"

end = time.time()
delta = (end - start) / 60
Ejemplo n.º 12
0
gitHom = os.environ['GIT_HOME']
relPrj = "/dtsa2Scripts/mc3Scripts"
prjDir = gitHom + relPrj
datDir = prjDir + "/dat"
simDir = datDir + "/sim"

jmg.ensureDir(datDir)
jmg.ensureDir(simDir)

os.chdir(prjDir)
pyrDir = prjDir + "/mc3Bulk Results"


xrts = [transition("Fe K-L3"), transition("Fe K-M3"), transition("Fe L3-M5"), transition("O K-L3")]

xtraParams={}
xtraParams.update(mc3.configureXRayAccumulators(xrts, charAccum=True, charFluorAccum=True, bremFluorAccum=True))
# note that the image size on the specimen is in meters...
xtraParams.update(mc3.configureEmissionImages(xrts, imgSzUm*1.0e-6, imgSizePx))
xtraParams.update(mc3.configurePhiRhoZ(imgSzUm*1.0e-6))
xtraParams.update(mc3.configureTrajectoryImage(imgSzUm*1.0e-6, imgSizePx))
xtraParams.update(mc3.configureVRML(nElectrons = vmrlEl))
xtraParams.update(mc3.configureOutput(simDir))

spc = mc3.simulate(material("Fe2O3",5.0), det, e0, dose = pc*lt, nTraj=nTraj, sf=True, bf=True, xtraParams = xtraParams)

display(spc)

shutil.rmtree(pyrDir)
print "Done!"
Ejemplo n.º 13
0
# mc3SimulateBaTiO3.py
#
# Simulate a bulk barium titanante spectrum. This is as simple as it
# gets.
#
# Date        Ver  Who  Notes
# 2015-05-21 0.90  JRM  Initial example. Verified with Iona v.2015-05-01
#
import dtsa2.mcSimulate3 as mc3

det = findDetector("Probe")  # DTSA-II default detector, use yours
e0 = 15  # keV
nTraj = 1000  # electrons
dose = 150  # nA*sec
withPoisson = True  # Add Poisson noise
sf = True  # Secondary Florescence
bf = True  # Brehmstrahlung Florescence

mat = epq.Material(
    epq.Composition([epq.Element.Ba, epq.Element.Ti, epq.Element.O],
                    [0.2058, 0.2053, 0.5889]), epq.ToSI.gPerCC(6.02))
mat.setName("BaTiO3")

spc = mc3.simulate(mat, det, e0, dose, withPoisson,
                   nTraj)  #  sf=False, bf=False, xtraParams={})

display(spc)
Ejemplo n.º 14
0
def uncoatedSimBulkStd(mat,
                       det,
                       e0,
                       nTraj,
                       outPath,
                       dim=5.0e-6,
                       lt=100,
                       pc=1.0,
                       emiSize=512):
    """
	uncoatedSimBulkStd(mat, det, e0, nTraj, outPath,
					   dim=5.0e-6, lt=100, pc=1.0, emiSize=512)

	Use mc3 simulation to simulate an uncoated standard specimen

	Parameters
	----------
	mat - a dtsa material.
		Note the material must have an associated density. It should
		have a useful name.

	det - a dtsa detector
		Here is where we get the detector properties and calibration

	e0 - float
		The accelerating voltage in kV

	nTraj - integer
		The number of trajectories to run

	outPath - string
		The path to the directory for output

	dim - float (5.0e-6)
		The size of the emission images in um

	lt - integer (100)
		The live time (sec)

	pc - float (1.0)
		The probe current in nA

	emiSize - int (default 512)
		The width and depth of the emission images.


	Returns
	-------
	sim - DTSA scriptable spectrum 
		The simulated standard spectrum
	
	Example
	-------
	import dtsa2 as dtsa2
	import dtsa2.jmMC3 as jm3
	outPath = "path/to/yours/spc"
	cu = material("Cu", density=8.92)
	det = findDetector("Si(Li)")
	a = jm3.uncoatedSimBulkStd(cu, det, 15.0, 100, outPath,
							   dim=5.0e-6, lt=100,
							   pc=1.0, emiSize=512)
	a.display()
	"""
    start = time.time()
    strMat = mat.getName()
    dose = pc * lt  # na-sec"

    # specify the transitions to generate
    xrts = []

    trs = mc3.suggestTransitions(mat, e0)
    for tr in trs:
        xrts.append(tr)

    # At 20 kV the images are best at 2.0e-6
    xtraParams = {}
    xtraParams.update(mc3.configureXRayAccumulators(xrts, True, True, True))
    # note that the image size on the specimen is in meters...
    xtraParams.update(mc3.configureEmissionImages(xrts, dim, emiSize))
    xtraParams.update(mc3.configurePhiRhoZ(dim))
    xtraParams.update(mc3.configureTrajectoryImage(dim, emiSize))
    xtraParams.update(mc3.configureVRML(nElectrons=100))
    xtraParams.update(mc3.configureOutput(outPath))
    print("Output sent to %s") % (outPath)
    sim = mc3.simulate(mat, det, e0, lt * pc, True, nTraj, True, True,
                       xtraParams)
    sName = "%s-%g-kV" % (strMat, e0)
    sim.rename(sName)
    sim.setAsStandard(mat)
    sim.display()

    end = time.time()
    delta = end - start
    msg = "This simulation required %.f sec" % (delta)
    print(msg)
    msg = "						 %.f min" % (delta / 60.0)
    print(msg)
    msg = "						 %.f hr" % (delta / 360.0)
    print("")
    return (sim)
Ejemplo n.º 15
0
dose      = pc * lt # nA sec
DataManager.clearSpectrumList()
b  = material("B", density=2.37)
bn = material("BN", density=2.1)
aln = material("AlN", density=3.26)
# Sim B
xrts = [transition("B K-L2"), transition("B K-L3")]
xtraParams={}
xtraParams.update(mc3.configureXRayAccumulators(xrts, charAccum=True, charFluorAccum=True, bremFluorAccum=True))
# note that the image size on the specimen is in meters...
xtraParams.update(mc3.configureEmissionImages(xrts, imgSzUm*1.0e-6, imgSizePx))
xtraParams.update(mc3.configurePhiRhoZ(imgSzUm*1.0e-6))
xtraParams.update(mc3.configureTrajectoryImage(imgSzUm*1.0e-6, imgSizePx))
xtraParams.update(mc3.configureVRML(nElectrons = vmrlEl))
xtraParams.update(mc3.configureOutput(spcDir))
b_spc = mc3.simulate(b, det, e0, dose = pc*lt, nTraj=nTraj, sf=True, bf=True, xtraParams = xtraParams)
b_spc.rename("B")
# b_spec.setAsStandard(b)
display(b_spc)
fi = spcDir + "/B-%g-kV-%g-Traj.msa" % (e0, nTraj)
b_spc.save(fi)
# Sim BN
xrts = [transition("B K-L2"), transition("B K-L3"),
        transition("N K-L2"), transition("N K-L3")]
xtraParams={}
xtraParams.update(mc3.configureXRayAccumulators(xrts, charAccum=True, charFluorAccum=True, bremFluorAccum=True))
#
# note that the image size on the specimen is in meters...
xtraParams.update(mc3.configureEmissionImages(xrts, imgSzUm*1.0e-6, imgSizePx))
xtraParams.update(mc3.configurePhiRhoZ(imgSzUm*1.0e-6))
xtraParams.update(mc3.configureTrajectoryImage(imgSzUm*1.0e-6, imgSizePx))
Ejemplo n.º 16
0
xp.update(
    mc3.configureXRayAccumulators(xrts,
                                  charAccum=True,
                                  charFluorAccum=True,
                                  bremFluorAccum=True))
# xp.update(mc3.configureEmissionImages(xrts,imgSzUm*1.0e-6, imgSzPx))
# xp.update(mc3.configurePhiRhoZ(imgSzUm*1.0e-6))
# xp.update(mc3.configureTrajectoryImage(imgSzUm*1.0e-6, imgSzPx))
# xp.update(mc3.configureVRML(nElectrons = 40))
xp.update(mc3.configureOutput(outDir))
xp.update(mc3.configureGun(beamSzNm * 1.0e-9))

ts = time.time()

# first sim bare Si
spc = mc3.simulate(si, det, e0, dose, True, nTraj, True, True, xp)
spc = epq.SpectrumUtils.addNoiseToSpectrum(spc, 1.0)
spc = wrap(spc)

sName = "Si-%g-kV-%d-traj" % (e0, nTraj)
spc.rename(sName)
res = anaConSi(spc, det, digits=2, display=False)
cI = res["C"]
siI = res["Si"]

lT.append(0.0)
lPICmu.append(cI[0])
lPICuc.append(cI[1])
lPISimu.append(siI[0])
lPISiuc.append(siI[1])
Ejemplo n.º 17
0
wrkDir = homDir + "/Documents/git/dtsa2Scripts/utility"
outDir = homDir + "/Documents/git/dtsa2Scripts/utility/output/"
rptDir = wrkDir + '/test-mc3-simulate-Fe2O3/'

# Note: On Win10 MSA files are in:
# C:\Users\johnr\Documents\git\dtsa2scripts\utility\output

bSaveSpc = True
DataManager.clearSpectrumList()

e0 = 20.0  # or 5.0
nTraj = 10000
det = findDetector("Oxford p4 05eV 4K")
mat = material("Fe2O3", 5.0)

spc = mc3.simulate(mat, det, e0, 120.0, True, nTraj, True, True, {})
sName = "Bulk Fe2O3"
spc.rename(sName)
spc.display()
fi = outDir + "/Fe2O3-%g-kV-%g-Traj.msa" % (e0, nTraj)
spc.save(fi)

print "Done!"

end = time.time()
delta = (end - start) / 60
msg = "This script required %.3f min" % delta
print msg
if (delta > 60):
    delta = delta / 60
    msg = "...or %.3f hr" % delta
Ejemplo n.º 18
0
    transition("O K-L3")
]

xtraParams = {}
xtraParams.update(
    mc3.configureXRayAccumulators(xrts,
                                  charAccum=True,
                                  charFluorAccum=True,
                                  bremFluorAccum=True))
# note that the image size on the specimen is in meters...
xtraParams.update(
    mc3.configureEmissionImages(xrts, imgSzUm * 1.0e-6, imgSizePx))
xtraParams.update(mc3.configurePhiRhoZ(imgSzUm * 1.0e-6))
xtraParams.update(mc3.configureTrajectoryImage(imgSzUm * 1.0e-6, imgSizePx))
xtraParams.update(mc3.configureVRML(nElectrons=vmrlEl))
xtraParams.update(mc3.configureOutput(simDir))

spc = mc3.simulate(material("Fe2O3", 5.0),
                   det,
                   e0,
                   dose=pc * lt,
                   nTraj=nTraj,
                   sf=True,
                   bf=True,
                   xtraParams=xtraParams)

display(spc)

shutil.rmtree(pyrDir)
print "Done!"
Ejemplo n.º 19
0
b = material("B", density=2.37)
# bn  = material("BN", density=2.1)
# aln = material("AlN", density=3.26)

# Sim B
xrts = [transition("B K-L2"), transition("B K-L3")]
xtraParams = {}
xtraParams.update(
    mc3.configureXRayAccumulators(xrts,
                                  charAccum=True,
                                  charFluorAccum=True,
                                  bremFluorAccum=True))
# note that the image size on the specimen is in meters...
xtraParams.update(
    mc3.configureEmissionImages(xrts, imgSzUm * 1.0e-6, imgSizePx))
xtraParams.update(mc3.configurePhiRhoZ(imgSzUm * 1.0e-6))
xtraParams.update(mc3.configureTrajectoryImage(imgSzUm * 1.0e-6, imgSizePx))
xtraParams.update(mc3.configureVRML(nElectrons=vmrlEl))
xtraParams.update(mc3.configureOutput(spcDir))

b_spc = mc3.simulate(b, det, e0, dose, nTraj, True, True, xtraParams)
b_spc.rename("B")
b_spc.setAsStandard(b)
display(b_spc)
fi = spcDir + "/B-%g-kV-%g-Traj.msa" % (e0, nTraj)
b_spc.save(fi)

end = time.time()

delta = end - start
print(delta)
Ejemplo n.º 20
0
DataManager.clearSpectrumList()
start = time.time()

zno = material("ZnO", density=5.61)
si = material("Si", density=2.33)

xrts = []
trs = mc3.suggestTransitions(zno, e0)
for tr in trs:
    xrts.append(tr)

xtraParams = {}
xtraParams.update(mc3.configureXRayAccumulators(xrts, True, True, True))
# xtraParams.update(mc3.configureOutput(simDir))
spc_zno_std = mc3.simulate(zno, det, e0, dose, True, nTraj, True, True,
                           xtraParams)
sName = "ZnO std-%g-kV" % (e0)
spc_zno_std.rename(sName)
spc_zno_std.setAsStandard(zno)
spc_zno_std.display()
fi = resDir + "/"
fi += sName
fi += "-%g-Traj.msa" % (nTraj)
spc_zno_std.save(fi)

xrts = []
trs = mc3.suggestTransitions(si, e0)
for tr in trs:
    xrts.append(tr)

xtraParams = {}
Ejemplo n.º 21
0
xp.update(mc3.configureXRayAccumulators(xrts,
                                        charAccum=True, 
                                        charFluorAccum=True, 
                                        bremFluorAccum=True))
# xp.update(mc3.configureEmissionImages(xrts,imgSzUm*1.0e-6, imgSzPx))
# xp.update(mc3.configurePhiRhoZ(imgSzUm*1.0e-6))
# xp.update(mc3.configureTrajectoryImage(imgSzUm*1.0e-6, imgSzPx))
# xp.update(mc3.configureVRML(nElectrons = 40))
xp.update(mc3.configureOutput(outDir))
xp.update(mc3.configureGun(beamSzNm*1.0e-9))

ts = time.time()

# first sim bare Si
spc = mc3.simulate(si, det, e0, dose, True, nTraj, True, True, xp)
spc = epq.SpectrumUtils.addNoiseToSpectrum(spc, 1.0)
spc = wrap(spc)

sName = "Si-%g-kV-%d-traj" % ( e0, nTraj)
spc.rename(sName)
res = anaConSi(spc, det, digits=2, display=False)
cI  = res["C"]
siI = res["Si"]
    
lT.append(0.0)
lPICmu.append(cI[0])
lPICuc.append(cI[1])
lPISimu.append(siI[0])
lPISiuc.append(siI[1])
Ejemplo n.º 22
0
start = time.time()

homDir = os.environ['HOME']
homDir = homDir.replace('\\','/')
wrkDir = homDir + "/Documents/git/dtsa2Scripts/utility"
outDir = homDir + "/Documents/git/dtsa2Scripts/utility/output/"
rptDir = wrkDir + '/test-mc3-simulate-Al Results/'

DataManager.clearSpectrumList()

e0  = 15.0
det = findDetector("Probe")
mat = material("Al", 2.7)

spc = mc3.simulate(mat, det, e0, 120.0, True, 10000, True, True, {})
sName = "Bulk Al"
spc.rename(sName)
spc.display()

shutil.rmtree(rptDir)
print "Done!"

end = time.time()
delta = (end-start)/60
msg = "This script required %.3f min" % delta
print msg
if(delta > 60):
    delta = delta/60
    msg = "...or %.3f hr" % delta
    print msg
Ejemplo n.º 23
0
# mc3SimulateBaTiO3.py
#
# Simulate a bulk barium titanante spectrum. This is as simple as it
# gets. 
#
# Date        Ver  Who  Notes
# 2015-05-21 0.90  JRM  Initial example. Verified with Iona v.2015-05-01
#
import dtsa2.mcSimulate3 as mc3

det         = findDetector("Probe") # DTSA-II default detector, use yours
e0          = 15   # keV
nTraj       = 1000 # electrons
dose        = 150  # nA*sec
withPoisson = True # Add Poisson noise
sf          = True # Secondary Florescence
bf          = True # Brehmstrahlung Florescence
 
mat = epq.Material(epq.Composition([epq.Element.Ba, epq.Element.Ti, epq.Element.O],
                                   [0.2058,         0.2053,         0.5889]      ),
                                    epq.ToSI.gPerCC(6.02))
mat.setName("BaTiO3")

spc = mc3.simulate(mat, det, e0, dose, withPoisson, nTraj) #  sf=False, bf=False, xtraParams={})

display(spc)
Ejemplo n.º 24
0
# print(xrts)

xtraParams={}
xtraParams.update(mc3.configurePhiRhoZ(przDepUm*1.0e-6))
xtraParams.update(mc3.configureXRayAccumulators(xrts,True, True, True))
# note that the image size on the specimen is in meters...
xtraParams.update(mc3.configureEmissionImages(xrts, imgSzUm*1.0e-6,
                                              imgSize))
xtraParams.update(mc3.configureTrajectoryImage(imgSzUm*1.0e-6, imgSize))
xtraParams.update(mc3.configureVRML(nElectrons = vmrlEl))
xtraParams.update(mc3.configureOutput(simDir))

print(xtraParams)

sim = mc3.simulate(mix, det, e0, dose, True,
                   nTraj, True, True, xtraParams)
fmtS = "Admiralty-Brass-at-%g-kV"
sName = fmtS % (e0)
sim.rename(sName)
sim.display()
fi =  simDir + "/"
fi += sName
fi += "-%g-Traj.msa" % (nTraj)
sim.save(fi)



# clean up cruft
shutil.rmtree(rptDir)
print "Done!"
Ejemplo n.º 25
0
lDoseUnk = [50, 100, 200, 500, 1000, 2500, 5000]

xrts = []

trs = mc3.suggestTransitions(sio2, e0)
for tr in trs:
    xrts.append(tr)

xtraParams = {}
xtraParams.update(mc3.configureXRayAccumulators(xrts, True, True, True))
# xtraParams.update(mc3.configureOutput(simDir))

print(xtraParams)

spc_sio2_std = mc3.simulate(sio2, det, e0, doseStd, True, nTrajStd, True, True,
                            xtraParams)
sName = "SiO2 std"
spc_sio2_std.rename(sName)
spc_sio2_std.setAsStandard(sio2)
spc_sio2_std.display()

stds = {element("O"): spc_sio2_std, element("Si"): spc_sio2_std}

# oStd  = {"El":element("O"),  "Spc":spc_sio2_std}
#
# stds = [oStd, siStd]

for doseUnk in lDoseUnk:
    spc_sio = mc3.simulate(sio, det, e0, doseUnk, True, nTrajStd, True, True,
                           xtraParams)
    sName = "SiO Unk %g nA-sec" % (doseUnk)
Ejemplo n.º 26
0
SRM482 = ( SRM482A, SRM482B, SRM482C, SRM482D, SRM482E, SRM482F, )

range = electronRange(SRM482A,e0,density=None)

xtraP = {}
xtraP.update(mc3.configureOutput(DefaultOutput))
xtraP.update(mc3.configurePhiRhoZ(1.5*range))
xtraP.update(mc3.configureEmissionImages(mc3.suggestTransitions(SRM482C,e0), 1.5*range, size = 512))
xtraP.update(mc3.configureTrajectoryImage(1.5*range, size = 512))

specs = {}
for mat in SRM482:
   if terminated:
      break
   specs[mat] = mc3.simulate(mat, det,e0=e0, nTraj=nE, dose=500.0, sf=True, bf=True,xtraParams=xtraP)
   specs[mat].save("%s/%s.msa" % ( DefaultOutput, specs[mat] ))
   specs[mat].display()
   

unks = ( specs[SRM482B], specs[SRM482C], specs[SRM482D], specs[SRM482E] )
stds = { "Au" : specs[SRM482A], "Cu" : specs[SRM482F] }

res = {}
for unk in unks:
   res[unk]=quantify(unk, stds, preferred = ( "Au L3-M5", "Cu K-L3" ))
   
   
tabulate(unks)

# Finally output analytical model phi(rho z) curves for comparison
Ejemplo n.º 27
0
trs = [
    epq.XRayTransitionSet(epq.Element.C, epq.XRayTransitionSet.K_ALPHA),
    epq.XRayTransitionSet(epq.Element.O, epq.XRayTransitionSet.K_ALPHA),
    epq.XRayTransitionSet(epq.Element.Si, epq.XRayTransitionSet.K_ALPHA)
]

# start with bulk standards
#
# C

siSpc = mc3.simulate(si,
                     det,
                     e0=e0,
                     dose=dose,
                     withPoisson=True,
                     nTraj=nTraj,
                     sf=charF,
                     bf=bremF,
                     xtraParams={})
sp = siSpc.getProperties()
sp.setTextProperty(epq.SpectrumProperties.SpectrumDisplayName, "Si-std")
sp.setNumericProperty(epq.SpectrumProperties.LiveTime, lt)
sp.setNumericProperty(epq.SpectrumProperties.FaradayBegin, dose)
sp.setNumericProperty(epq.SpectrumProperties.FaradayEnd, dose)
sp.setNumericProperty(epq.SpectrumProperties.BeamEnergy, e0)
sp.setCompositionProperty(epq.SpectrumProperties.StandardComposition,
                          epq.Composition(epq.Element.Si))
display(siSpc)
siStd = {"El": element("Si"), "Spc": siSpc}
Ejemplo n.º 28
0
e0      =   7.0    # keV

dose = pc * lt # nA sec
# start clean
DataManager.clearSpectrumList()

# create the materials
c  = material("C", density=2.25)
cu = material("Cu", density=8.96)

trs = [epq.XRayTransitionSet(epq.Element.C, epq.XRayTransitionSet.K_FAMILY), 
epq.XRayTransitionSet(epq.Element.Cu, epq.XRayTransitionSet.L_FAMILY)]

# start with bulk standards

cSpc = mc3.simulate(c, det, e0=e0, dose=dose, withPoisson=True, nTraj=nTraj, sf=charF, bf=bremF, xtraParams={})
sp=cSpc.getProperties()
sp.setTextProperty(epq.SpectrumProperties.SpectrumDisplayName,"C-std")
sp.setNumericProperty(epq.SpectrumProperties.LiveTime, lt)
sp.setNumericProperty(epq.SpectrumProperties.FaradayBegin, dose)
sp.setNumericProperty(epq.SpectrumProperties.FaradayEnd, dose)
sp.setNumericProperty(epq.SpectrumProperties.BeamEnergy, e0)
sp.setCompositionProperty(epq.SpectrumProperties.StandardComposition, epq.Composition(epq.Element.C))
# display(cSpc)
cStd  = {"El":element("C"),  "Spc":cSpc}

cuSpc = mc3.simulate(cu, det, e0=e0, dose=dose, withPoisson=True, nTraj=nTraj, sf=charF, bf=bremF, xtraParams={})
sp=cuSpc.getProperties()
sp.setTextProperty(epq.SpectrumProperties.SpectrumDisplayName,"Cu-std")
sp.setNumericProperty(epq.SpectrumProperties.LiveTime, lt)
sp.setNumericProperty(epq.SpectrumProperties.FaradayBegin, dose)
Ejemplo n.º 29
0
ag = material("Ag", density=10.5)

trs = [
    epq.XRayTransitionSet(epq.Element.Au, epq.XRayTransitionSet.L_ALPHA),
    epq.XRayTransitionSet(epq.Element.Cu, epq.XRayTransitionSet.K_ALPHA)
]

# start with bulk standards
#
# Au

auSpc = mc3.simulate(au,
                     det,
                     e0=e0,
                     dose=dose,
                     withPoisson=True,
                     nTraj=nTraj,
                     sf=charF,
                     bf=bremF,
                     xtraParams={})
sp = auSpc.getProperties()
sp.setTextProperty(epq.SpectrumProperties.SpectrumDisplayName, "Au-std")
sp.setNumericProperty(epq.SpectrumProperties.LiveTime, lt)
sp.setNumericProperty(epq.SpectrumProperties.FaradayBegin, dose)
sp.setNumericProperty(epq.SpectrumProperties.FaradayEnd, dose)
sp.setNumericProperty(epq.SpectrumProperties.BeamEnergy, e0)
sp.setCompositionProperty(epq.SpectrumProperties.StandardComposition,
                          epq.Composition(epq.Element.Au))
display(auSpc)
auStd = {"El": element("Au"), "Spc": auSpc}