SUBROUTINE zxipcf(ear, ne, param, ifl, photar, photer) INTEGER ne, ifl REAL ear(0:ne),param(4),photar(ne),photer(ne),eparam(3) C--- C XSPEC model subroutine for redshifted "partial covering C absorption". Assumes that part of the emitter is covered by C the given absorption and the rest of the emitter is unobscured. C--- C number of model parameters: 2 C 1 ANH Hydrogen column density (in units of 10**22 C atoms per square centimeter c 2 xi C 3 FRACT Covering fraction (0 implies no absorption, C 1 implies the emitter is all absorbed with C the indicated column ANH. C 4 REDSHIFT C--- C Arguments : C ear r i: energy ranges c ne i i: number of energy ranges c param r i: model parameter values c ifl i i: the dataset c photar r r: the transmission fraction C--- REAL fract, fractc, zfac INTEGER ie CHARACTER pname*128, pvalue*128, contxt*255 CHARACTER*255 filenm LOGICAL qexist INTEGER lenact CHARACTER fgmstr*128 EXTERNAL lenact, fgmstr c nh in units of 1e22 - param(1) eparam(1) = param(1)*1.e22 c logxi eparam(2) = param(2) c z=0 eparam(3)=0.0 C shift energies to the emitter frame zfac = 1.0 + param(4) DO ie = 0, ne ear(ie) = ear(ie) * zfac ENDDO c construct the path to the mtable file required pname = 'ZXIPCF_DIR' pvalue = fgmstr(pname) IF ( lenact(pvalue) .GT. 0 ) THEN filenm = pvalue(:lenact(pvalue))//'zxipcf_mtable.fits' ELSE filenm = 'zxipcf_mtable.fits' ENDIF c check whether the file exists INQUIRE(file=filenm, exist=qexist) IF (.NOT.qexist) THEN contxt = ' zxipcf model ignored : cannot find ' & //filenm(:lenact(filenm)) CALL xwrite(contxt, 5) contxt = ' use xset ZXIPCF_DIR directory to point to the file' CALL xwrite(contxt, 5) DO ie = 1, ne photar(ie) = 1.0 ENDDO RETURN ENDIF c interpolate on the mtable call xsmtbl(ear, ne, eparam, filenm, ifl, photar, photer) C now modify for the partial covering fract = param(3) fractc = 1. - fract DO ie = 1, ne photar(ie) = fractc + fract * photar(ie) ENDDO C shift energies back to the observed frame zfac = 1.0 + param(4) DO ie = 0, ne ear(ie) = ear(ie) / zfac ENDDO RETURN END