Changeset 945 for trunk/GSASIIpwd.py


Ignore:
Timestamp:
Jun 11, 2013 9:58:44 AM (9 years ago)
Author:
vondreele
Message:

some mods for POWGEN data for single peak fitting
unify profile parm calcs into G2mth

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIpwd.py

    r939 r945  
    716716    cw = np.append(cw,cw[-1])
    717717    if 'C' in dataType:
    718         U = parmDict['U']
    719         V = parmDict['V']
    720         W = parmDict['W']
    721         X = parmDict['X']
    722         Y = parmDict['Y']
    723718        shl = max(parmDict['SH/L'],0.002)
    724719        Ka2 = False
     
    737732                    sig = parmDict[sigName]
    738733                else:
    739                     sig = U*tand(theta)**2+V*tand(theta)+W
     734                    sig = G2mth.getCWsig(parmDict,theta)
    740735                sig = max(sig,0.001)          #avoid neg sigma
    741736                gamName = 'gam'+str(iPeak)
     
    743738                    gam = parmDict[gamName]
    744739                else:
    745                     gam = X/cosd(theta)+Y*tand(theta)
     740                    gam = G2mth.getCWgam(parmDict,theta)
    746741                gam = max(gam,0.001)             #avoid neg gamma
    747742                Wd,fmin,fmax = getWidthsCW(pos,sig,gam,shl)
     
    766761        Pdabc = parmDict['Pdabc']
    767762        difC = parmDict['difC']
    768         alp0 = parmDict['alpha']
    769         bet0 = parmDict['beta-0']
    770         bet1 = parmDict['beta-1']
    771         sig0 = parmDict['sig-0']
    772         sig1 = parmDict['sig-1']
    773         X = parmDict['X']
    774         Y = parmDict['Y']
    775763        iPeak = 0
    776764        while True:
     
    787775                        alp = np.interp(dsp,Pdabc[0],Pdabc[1])
    788776                    else:
    789                         alp = alp0/dsp
     777                        alp = G2mth.getTOFalpha(parmDict,dsp)
    790778                betName = 'bet'+str(iPeak)
    791779                if betName in varyList:
     
    795783                        bet = np.interp(dsp,Pdabc[0],Pdabc[2])
    796784                    else:
    797                         bet = bet0+bet1/dsp**4
     785                        bet = G2mth.getTOFbeta(parmDict,dsp)
    798786                sigName = 'sig'+str(iPeak)
    799787                if sigName in varyList:
    800788                    sig = parmDict[sigName]
    801789                else:
    802                     sig = sig0+sig1*dsp**2
     790                    sig = G2mth.getTOFsig(parmDict,dsp)
    803791                gamName = 'gam'+str(iPeak)
    804792                if gamName in varyList:
    805793                    gam = parmDict[gamName]
    806794                else:
    807                     gam = X*dsp**2+Y*dsp
     795                    gam = G2mth.getTOFgamma(parmDict,dsp)
    808796                gam = max(gam,0.001)             #avoid neg gamma
    809797                Wd,fmin,fmax = getWidthsTOF(pos,alp,bet,sig,gam)
     
    849837    cw = np.append(cw,cw[-1])
    850838    if 'C' in dataType:
    851         U = parmDict['U']
    852         V = parmDict['V']
    853         W = parmDict['W']
    854         X = parmDict['X']
    855         Y = parmDict['Y']
    856839        shl = max(parmDict['SH/L'],0.002)
    857840        Ka2 = False
     
    872855                    sig = parmDict[sigName]
    873856                else:
    874                     sig = U*tanth**2+V*tanth+W
    875                     dsdU = tanth**2
    876                     dsdV = tanth
    877                     dsdW = 1.0
     857                    sig = G2mth.getCWsig(parmDict,theta)
     858                    dsdU,dsdV,dsdW = G2mth.getCWsigDeriv(theta)
    878859                sig = max(sig,0.001)          #avoid neg sigma
    879860                gamName = 'gam'+str(iPeak)
     
    881862                    gam = parmDict[gamName]
    882863                else:
    883                     gam = X/costh+Y*tanth
    884                     dgdX = 1.0/costh
    885                     dgdY = tanth
     864                    gam = G2mth.getCWgam(parmDict,theta)
     865                    dgdX,dgdY = G2mth.getCWgamDeriv(theta)
    886866                gam = max(gam,0.001)             #avoid neg gamma
    887867                Wd,fmin,fmax = getWidthsCW(pos,sig,gam,shl)
     
    936916        Pdabc = parmDict['Pdabc']
    937917        difC = parmDict['difC']
    938         alp0 = parmDict['alpha']
    939         bet0 = parmDict['beta-0']
    940         bet1 = parmDict['beta-1']
    941         sig0 = parmDict['sig-0']
    942         sig1 = parmDict['sig-1']
    943         X = parmDict['X']
    944         Y = parmDict['Y']
    945918        iPeak = 0
    946919        while True:
     
    957930                        alp = np.interp(dsp,Pdabc[0],Pdabc[1])
    958931                    else:
    959                         alp = alp0/dsp
    960                     dada0 = 1./dsp
     932                        alp = G2mth.getTOFalpha(parmDict,dsp)
     933                        dada0 = G2mth.getTOFalphaDeriv(dsp)
    961934                betName = 'bet'+str(iPeak)
    962935                if betName in varyList:
     
    966939                        bet = np.interp(dsp,Pdabc[0],Pdabc[2])
    967940                    else:
    968                         bet = bet0+bet1/dsp**4
    969                     dbdb0 = 1.
    970                     dbdb1 = 1/dsp**4
     941                        bet = G2mth.getTOFbeta(parmDict,dsp)
     942                        dbdb0,dbdb1,dbdb2 = G2mth.getTOFbetaDeriv(dsp)
    971943                sigName = 'sig'+str(iPeak)
    972944                if sigName in varyList:
    973945                    sig = parmDict[sigName]
    974946                else:
    975                     sig = sig0+sig1*dsp**2
    976                     dsds0 = 1.
    977                     dsds1 = dsp**2
     947                    sig = G2mth.getTOFsig(parmDict,dsp)
     948                    dsds0,dsds1,dsds2 = G2mth.getTOFsigDeriv(dsp)
    978949                gamName = 'gam'+str(iPeak)
    979950                if gamName in varyList:
    980951                    gam = parmDict[gamName]
    981952                else:
    982                     gam = X*dsp**2+Y*dsp
    983                     dsdX = dsp**2
    984                     dsdY = dsp
     953                    gam = G2mth.getTOFgamma(parmDict,dsp)
     954                    dsdX,dsdY = G2mth.getTOFgammaDeriv(dsp)
    985955                gam = max(gam,0.001)             #avoid neg gamma
    986956                Wd,fmin,fmax = getWidthsTOF(pos,alp,bet,sig,gam)
     
    1016986                if 'beta-1' in varyList:
    1017987                    dMdv[varyList.index('beta-1')] += dbdb1*dervDict['bet']
     988                if 'beta-q' in varyList:
     989                    dMdv[varyList.index('beta-q')] += dbdb2*dervDict['bet']
    1018990                if 'sig-0' in varyList:
    1019991                    dMdv[varyList.index('sig-0')] += dsds0*dervDict['sig']
    1020992                if 'sig-1' in varyList:
    1021993                    dMdv[varyList.index('sig-1')] += dsds1*dervDict['sig']
     994                if 'sig-q' in varyList:
     995                    dMdv[varyList.index('sig-q')] += dsds2*dervDict['sig']
    1022996                if 'X' in varyList:
    1023997                    dMdv[varyList.index('X')] += dsdX*dervDict['gam']
     
    11721146            insVals.append(Inst[parm][1])
    11731147            if parm in ['U','V','W','X','Y','SH/L','I(L2)/I(L1)','alpha',
    1174                 'beta-0','beta-1','sig-0','sig-1',] and Inst[parm][2]:
     1148                'beta-0','beta-1','beta-q','sig-0','sig-1','sig-q',] and Inst[parm][2]:
    11751149                    insVary.append(parm)
    11761150        instDict = dict(zip(insNames,insVals))
     
    11911165                if sigName not in varyList:
    11921166                    if 'C' in Inst['Type'][0]:
    1193                         parmDict[sigName] = parmDict['U']*tand(pos/2.0)**2+parmDict['V']*tand(pos/2.0)+parmDict['W']
     1167                        parmDict[sigName] = G2mth.getCWsig(parmDict,pos)
    11941168                    else:
    11951169                        dsp = pos/Inst['difC'][1]
    1196                         parmDict[sigName] = parmDict['sig-0']+parmDict['sig-1']*dsp**2
     1170                        parmDict[sigName] = G2mth.getTOFsig(parmDict,dsp)
    11971171                gamName = 'gam'+str(iPeak)
    11981172                if gamName not in varyList:
    11991173                    if 'C' in Inst['Type'][0]:
    1200                         parmDict[gamName] = parmDict['X']/cosd(pos/2.0)+parmDict['Y']*tand(pos/2.0)
     1174                        parmDict[gamName] = G2mth.getCWgam(parmDict,pos)
    12011175                    else:
    12021176                        dsp = pos/Inst['difC'][1]
    1203                         parmDict[sigName] = parmDict['X']*dsp**2+parmDict['Y']*dsp
     1177                        parmDict[gamName] = G2mth.getTOFgamma(parmDict,dsp)
    12041178                iPeak += 1
    12051179            except KeyError:
     
    12141188        for parm in Inst:
    12151189            if parm in  ['U','V','W','X','Y','SH/L','I(L2)/I(L1)','alpha',
    1216                 'beta-0','beta-1','sig-0','sig-1',]:
     1190                'beta-0','beta-1','beta-q','sig-0','sig-1','sig-q',]:
    12171191                ptlbls += "%s" % (parm.center(12))
    12181192                ptstr += ptfmt % (Inst[parm][1])
     
    12581232                    peak[2*j] = parmDict['alpha']/dsp
    12591233                elif 'beta' in parName:
    1260                     peak[2*j] = parmDict['beta-0']+parmDict['beta-1']/dsp**4
     1234                    peak[2*j] = G2mth.getTOFbeta(parmDict,dsp)
    12611235                elif 'sig' in parName:
    12621236                    if 'C' in Inst['Type'][0]:
    1263                         peak[2*j] = parmDict['U']*tand(pos/2.0)**2+parmDict['V']*tand(pos/2.0)+parmDict['W']
     1237                        peak[2*j] = G2mth.getCWsig(parmDict,pos)
    12641238                    else:
    1265                         peak[2*j] = parmDict['sig-0']+parmDict['sig-1']*dsp**2
     1239                        peak[2*j] = G2mth.getTOFsig(parmDict,dsp)
    12661240                elif 'gam' in parName:
    12671241                    if 'C' in Inst['Type'][0]:
    1268                         peak[2*j] = parmDict['X']/cosd(pos/2.0)+parmDict['Y']*tand(pos/2.0)
     1242                        peak[2*j] = G2mth.getCWgam(parmDict,pos)
    12691243                    else:
    1270                         peak[2*j] = parmDict['X']*dsp**2+parmDict['Y']*dsp
     1244                        peak[2*j] = G2mth.getTOFgamma(parmDict,dsp)
    12711245                       
    12721246    def PeaksPrint(dataType,parmDict,sigDict,varyList):
Note: See TracChangeset for help on using the changeset viewer.