def setroi(roinum, element, edge=None, det=None): ''' Set energy ROIs for Vortex SDD. Selects elemental edge given current energy if not provided. roinum [1,2,3] ROI number element <symbol> element symbol for target energy edge optional: ['ka1','ka2','kb1','la1','la2','lb1','lb2','lg1','ma1'] ''' cur_element = xrfC.XrfElement(element) if edge == None: for e in [ 'ka1', 'ka2', 'kb1', 'la1', 'la2', 'lb1', 'lb2', 'lg1', 'ma1' ]: if cur_element.emission_line[e] < energy.energy.get()[1]: edge = 'e' break else: e = edge e_ch = int(cur_element.emission_line[e] * 1000) if det is not None: det.channel1.set_roi(roinum, e_ch - 100, e_ch + 100, name=element + '_' + e) cpt = getattr(det.channel1.rois, f'roi{roinum:02d}') cpt.kind = 'hinted' else: for d in [xs.channel1, xs.channel2, xs.channel3]: d.set_roi(roinum, e_ch - 100, e_ch + 100, name=element + '_' + e) cpt = getattr(d.rois, f'roi{roinum:02d}') cpt.kind = 'hinted' print("ROI{} set for {}-{} edge.".format(roinum, element, e))
def getemissionE(element, edge=None): cur_element = xrfC.XrfElement(element) if edge == None: print("edge\tenergy [keV]") for e in element_edges: if cur_element.emission_line[ e] < 25. and cur_element.emission_line[e] > 1.: print("{0:s}\t{1:8.2f}".format(e, cur_element.emission_line[e])) else: return cur_element.emission_line[edge]
def getemissionE(element, edge=None): cur_element = xrfC.XrfElement(element) if edge is None: print("Edge\tEnergy [keV]") for e in element_edges: if cur_element.emission_line[e] < 25. and \ cur_element.emission_line[e] > 1.: # print("{0:s}\t{1:8.2f}".format(e, cur_element.emission_line[e])) print(f"{e}\t{cur_element.emission_line[e]:8.2f}") else: return cur_element.emission_line[edge]
def setroi(roinum, element, edge): ''' Set energy ROIs for Vortex SDD. Selects elemental edge given current energy if not provided. roinum [1,2,3] ROI number element <symbol> element symbol for target energy edge optional: ['ka1','ka2','kb1','la1','la2','lb1','lb2','lg1','ma1'] ''' cur_element = xrfC.XrfElement(element) e_ch = int(cur_element.emission_line[edge] * 1000) for (n, d) in xs.channels.items(): d.set_roi(roinum, e_ch-200, e_ch+200, name=element + '_' + edge) getattr(d.rois, f'roi{roinum:02d}').kind = 'normal' print("ROI{} set for {}-{} edge.".format(roinum, element, edge))
interestinglist = [ 'Si', 'P', 'S', 'Cl', 'Ar', 'K', 'Ca', 'Sc', 'Ti', 'V', 'Cr', 'Mn', 'Fe', 'Co', 'Ni', 'Cu', 'Zn', 'Ga', 'Ge', 'As', 'Se', 'Br', 'Kr', 'Rb', 'Sr', 'Y', 'Zr', 'Nb', 'Mo', 'Tc', 'Ru', 'Rh', 'Pd', 'Ag', 'Cd', 'In', 'Sn', 'Sb', 'Te', 'I', 'Xe', 'Cs', 'Ba', 'La', 'Ce', 'Pr', 'Nd', 'Pm', 'Sm', 'Eu', 'Gd', 'Tb', 'Dy', 'Ho', 'Er', 'Tm', 'Yb', 'Lu', 'Hf', 'Ta', 'W', 'Re', 'Os', 'Ir', 'Pt', 'Au', 'Hg', 'Tl', 'Pb', 'Bi', 'Po', 'At', 'Rn', 'Fr', 'Ra', 'Ac', 'Th', 'Pa', 'U' ] elements = dict() element_edges = ['ka1', 'ka2', 'kb1', 'la1', 'la2', 'lb1', 'lb2', 'lg1', 'ma1'] element_transitions = ['k', 'l1', 'l2', 'l3', 'm1', 'm2', 'm3', 'm4', 'm5'] for i in interestinglist: elements[i] = xrfC.XrfElement(i) def setroi(roinum, element, edge=None, det=None): ''' Set energy ROIs for Vortex SDD. Selects elemental edge given current energy if not provided. roinum [1,2,3] ROI number element <symbol> element symbol for target energy edge optional: ['ka1','ka2','kb1','la1','la2','lb1','lb2','lg1','ma1'] ''' cur_element = xrfC.XrfElement(element) if edge == None: for e in [ 'ka1', 'ka2', 'kb1', 'la1', 'la2', 'lb1', 'lb2', 'lg1', 'ma1' ]: if cur_element.emission_line[e] < energy.energy.get()[1]: