This commit is contained in:
2024-11-01 14:56:46 +03:00
parent 2dc9aa6a8d
commit 908e25b200
51 changed files with 338 additions and 432 deletions

View File

@@ -34,5 +34,5 @@ This directory contains preprocessed ISGRI detector count rate cleaned from the
### cobe_ibis_resp_lon.dat
This file comes from [Krivonos+ 2007](https://ui.adsabs.harvard.edu/abs/2007A%26A...463..957K/abstract) paper
This file comes from [Krivonos+ 2007](https://ui.adsabs.harvard.edu/abs/2007A%26A...463..957K/abstract) paper, and is used in Figure 1 of the current paper.

View File

@@ -98,104 +98,104 @@
-2.99981 -1.584635716374209E-004 4.05677620714671
-1.9998 -1.601728698576348E-004 4.14460425365896
-0.999804 -1.618485992135904E-004 4.20283820107557
7.391063585095475E-005 -1.634896152618052E-004 4.24714842919316
1.00007538246518 -1.650948021933402E-004 4.23521323452837
2.00007685869151 -1.666630726222933E-004 4.19981639323352
3.00007833903195 -1.681933673218127E-004 4.14870274802363
4.00007982322146 -1.696846551414032E-004 4.09098444969177
5.00008131101137 -1.711359324710015E-004 3.99885667540513
6.00008280216830 -1.725462231105744E-004 3.89347299791858
7.00008429647310 -1.739145779075349E-004 3.76462574577249
8.00008579371966 -1.752400743718950E-004 3.63635072815927
9.00008729371401 -1.765218162898285E-004 3.50638304157508
10.0000887962735 -1.777589335948580E-004 3.37145501598623
11.0000903012260 -1.789505817842232E-004 3.24177379875826
12.0000918084088 -1.800959417821170E-004 3.11478207103756
13.0000933176683 -1.811942191922550E-004 2.99374761306871
14.0000948288589 -1.822446444250974E-004 2.87861908304001
15.0000963418429 -1.832464721404567E-004 2.77561053788302
16.0000978564895 -1.841989809262620E-004 2.68308013212301
17.0000993726742 -1.851014728922422E-004 2.60453777524445
18.0001008902786 -1.859532733439200E-004 2.53565104306417
19.0001024091895 -1.867537306728816E-004 2.47233716673087
20.0001039292990 -1.875022156165036E-004 2.41091856457831
21.0001054505034 -1.881981214837714E-004 2.35183597832713
22.0001069727033 -1.888408632217865E-004 2.29505497188558
23.0001084958029 -1.894298775692284E-004 2.23966311949082
24.0001100197099 -1.899646225331532E-004 2.18270405221428
25.0001115443348 -1.904445771997502E-004 2.12658153420184
26.0001130695907 -1.908692410715939E-004 2.06970103422394
27.0001145953933 -1.912381344397690E-004 2.01055711062610
28.0001161216601 -1.915507972881687E-004 1.95086601011597
29.0001176483103 -1.918067894801539E-004 1.89349532821088
30.0001191752645 -1.920056903595918E-004 1.83465529800941
31.0001207024444 -1.921470982763575E-004 1.77267803851111
32.0001222297725 -1.922306305796736E-004 1.70824972704387
33.0001237571719 -1.922559227833552E-004 1.64434312285321
34.0001252845660 -1.922226288049937E-004 1.58380085501745
35.0001268118780 -1.921304202843803E-004 1.52350376647231
36.0001283390309 -1.919789863003307E-004 1.46309418488510
37.0001298659472 -1.917680331569949E-004 1.40282681792836
38.0001313925484 -1.914972839266613E-004 1.34490940128067
39.0001329187551 -1.911664780462734E-004 1.28528094690644
40.0001344444861 -1.907753711016494E-004 1.22954122097706
41.0001359696588 -1.903237342239712E-004 1.17455169070665
42.0001374941884 -1.898113540913749E-004 1.12244635417390
43.0001390179878 -1.892380319898919E-004 1.07219353857889
44.0001405409671 -1.886035840694833E-004 1.02430360841000
45.0001420630336 -1.879078402523141E-004 0.979428719444290
46.0001435840910 -1.871506442657522E-004 0.935356858468708
47.0001451040393 -1.863318530396520E-004 0.894827492395949
48.0001466227743 -1.854513363215080E-004 0.855432838859234
49.0001481401873 -1.845089759862736E-004 0.817676828920911
50.0001496561647 -1.835046660514693E-004 0.781697224403438
51.0001511705870 -1.824383114971961E-004 0.746880450942950
52.0001526833291 -1.813098283567813E-004 0.714481382326025
53.0001541942592 -1.801191429264108E-004 0.683907557802099
54.0001557032385 -1.788661911306080E-004 0.655179352879342
55.0001572101204 -1.775509181874801E-004 0.629516307759393
56.0001587147500 -1.761732780107737E-004 0.605500599333575
57.0001602169637 -1.747332325530905E-004 0.583744119521001
58.0001617165877 -1.732307511904491E-004 0.564742241822184
59.0001632134378 -1.716658101147992E-004 0.547030353536971
60.0001647073187 -1.700383920016535E-004 0.531224684628053
61.0001661980224 -1.683484850463790E-004 0.517929610622562
62.0001676853279 -1.665960823503505E-004 0.507160103381866
63.0001691689998 -1.647811816903592E-004 0.498444379609143
64.0001706487874 -1.629037844165511E-004 0.494034330260365
65.0001721244231 -1.609638950946140E-004 0.492719032342890
66.0001735956217 -1.589615210223331E-004 0.493270940429287
67.0001750620784 -1.568966712897368E-004 0.495773721904444
68.0001765234679 -1.547693564880757E-004 0.500681739849555
69.0001779794421 -1.525795881118784E-004 0.506208278777099
70.0001794296292 -1.503273780500624E-004 0.511988313341823
71.0001808736314 -1.480127383410312E-004 0.518444152681345
72.0001823110226 -1.456356805333828E-004 0.524610710513296
73.0001837413472 -1.431962154441874E-004 0.531530819999874
74.0001851641172 -1.406943534929457E-004 0.541253395874888
75.0001865788098 -1.381301039000888E-004 0.547252179962178
76.0001879848655 -1.355034754089646E-004 0.550328944960229
77.0001893816847 -1.328144763017401E-004 0.548374638305539
78.0001907686254 -1.300631150450550E-004 0.543457647253208
79.0001921449999 -1.272494010247291E-004 0.534844103019597
80.0001935100720 -1.243733454872078E-004 0.525534664790709
81.0001948630535 -1.214349630980337E-004 0.513037455404691
82.0001962031013 -1.184342737515831E-004 0.496574141874924
83.0001975293133 -1.153713045970800E-004 0.477024601855444
84.0001988407258 -1.122460930887494E-004 0.457166893096085
85.0002001363093 -1.090586902617891E-004 0.431005130023210
86.0002014149656 -1.058091646539957E-004 0.403735383331875
87.0002026755239 -1.024976071592920E-004 0.374798473396735
88.0002039167387 -9.912413684496408E-005 0.347173148457788
89.0002051372859 -9.568890728414767E-005 0.319852120748145
90.0002063357613 -9.219211437681474E-005 0.292631801156368
91.0002075106785 -8.863400506449633E-005 0.266228044396145
92.0002086604679 -8.501488724089448E-005 0.240945560706418
93.0002097834773 -8.133514139907735E-005 0.218025197616317
94.0002108779727 -7.759523291160514E-005 0.196663382713245
95.0002119421417 -7.379572672469782E-005 0.178672240628803
96.0002129740982 -6.993730257401385E-005 0.163732183028421
97.0002139718896 -6.602077225506821E-005 0.151594421381940
98.0002149335069 -6.204709821040018E-005 0.140721254721218
99.0002158568978 -5.801741279101933E-005 0.133490005530158
100.000216739984 -5.393303921308732E-005 0.128219990691853
7.391063585095475E-005 -1.634896152618052E-004 4.24714842919316
1.00007538246518 -1.650948021933402E-004 4.23521323452837
2.00007685869151 -1.666630726222933E-004 4.19981639323352
3.00007833903195 -1.681933673218127E-004 4.14870274802363
4.00007982322146 -1.696846551414032E-004 4.09098444969177
5.00008131101137 -1.711359324710015E-004 3.99885667540513
6.00008280216830 -1.725462231105744E-004 3.89347299791858
7.00008429647310 -1.739145779075349E-004 3.76462574577249
8.00008579371966 -1.752400743718950E-004 3.63635072815927
9.00008729371401 -1.765218162898285E-004 3.50638304157508
10.0000887962735 -1.777589335948580E-004 3.37145501598623
11.0000903012260 -1.789505817842232E-004 3.24177379875826
12.0000918084088 -1.800959417821170E-004 3.11478207103756
13.0000933176683 -1.811942191922550E-004 2.99374761306871
14.0000948288589 -1.822446444250974E-004 2.87861908304001
15.0000963418429 -1.832464721404567E-004 2.77561053788302
16.0000978564895 -1.841989809262620E-004 2.68308013212301
17.0000993726742 -1.851014728922422E-004 2.60453777524445
18.0001008902786 -1.859532733439200E-004 2.53565104306417
19.0001024091895 -1.867537306728816E-004 2.47233716673087
20.0001039292990 -1.875022156165036E-004 2.41091856457831
21.0001054505034 -1.881981214837714E-004 2.35183597832713
22.0001069727033 -1.888408632217865E-004 2.29505497188558
23.0001084958029 -1.894298775692284E-004 2.23966311949082
24.0001100197099 -1.899646225331532E-004 2.18270405221428
25.0001115443348 -1.904445771997502E-004 2.12658153420184
26.0001130695907 -1.908692410715939E-004 2.06970103422394
27.0001145953933 -1.912381344397690E-004 2.01055711062610
28.0001161216601 -1.915507972881687E-004 1.95086601011597
29.0001176483103 -1.918067894801539E-004 1.89349532821088
30.0001191752645 -1.920056903595918E-004 1.83465529800941
31.0001207024444 -1.921470982763575E-004 1.77267803851111
32.0001222297725 -1.922306305796736E-004 1.70824972704387
33.0001237571719 -1.922559227833552E-004 1.64434312285321
34.0001252845660 -1.922226288049937E-004 1.58380085501745
35.0001268118780 -1.921304202843803E-004 1.52350376647231
36.0001283390309 -1.919789863003307E-004 1.46309418488510
37.0001298659472 -1.917680331569949E-004 1.40282681792836
38.0001313925484 -1.914972839266613E-004 1.34490940128067
39.0001329187551 -1.911664780462734E-004 1.28528094690644
40.0001344444861 -1.907753711016494E-004 1.22954122097706
41.0001359696588 -1.903237342239712E-004 1.17455169070665
42.0001374941884 -1.898113540913749E-004 1.12244635417390
43.0001390179878 -1.892380319898919E-004 1.07219353857889
44.0001405409671 -1.886035840694833E-004 1.02430360841000
45.0001420630336 -1.879078402523141E-004 0.979428719444290
46.0001435840910 -1.871506442657522E-004 0.935356858468708
47.0001451040393 -1.863318530396520E-004 0.894827492395949
48.0001466227743 -1.854513363215080E-004 0.855432838859234
49.0001481401873 -1.845089759862736E-004 0.817676828920911
50.0001496561647 -1.835046660514693E-004 0.781697224403438
51.0001511705870 -1.824383114971961E-004 0.746880450942950
52.0001526833291 -1.813098283567813E-004 0.714481382326025
53.0001541942592 -1.801191429264108E-004 0.683907557802099
54.0001557032385 -1.788661911306080E-004 0.655179352879342
55.0001572101204 -1.775509181874801E-004 0.629516307759393
56.0001587147500 -1.761732780107737E-004 0.605500599333575
57.0001602169637 -1.747332325530905E-004 0.583744119521001
58.0001617165877 -1.732307511904491E-004 0.564742241822184
59.0001632134378 -1.716658101147992E-004 0.547030353536971
60.0001647073187 -1.700383920016535E-004 0.531224684628053
61.0001661980224 -1.683484850463790E-004 0.517929610622562
62.0001676853279 -1.665960823503505E-004 0.507160103381866
63.0001691689998 -1.647811816903592E-004 0.498444379609143
64.0001706487874 -1.629037844165511E-004 0.494034330260365
65.0001721244231 -1.609638950946140E-004 0.492719032342890
66.0001735956217 -1.589615210223331E-004 0.493270940429287
67.0001750620784 -1.568966712897368E-004 0.495773721904444
68.0001765234679 -1.547693564880757E-004 0.500681739849555
69.0001779794421 -1.525795881118784E-004 0.506208278777099
70.0001794296292 -1.503273780500624E-004 0.511988313341823
71.0001808736314 -1.480127383410312E-004 0.518444152681345
72.0001823110226 -1.456356805333828E-004 0.524610710513296
73.0001837413472 -1.431962154441874E-004 0.531530819999874
74.0001851641172 -1.406943534929457E-004 0.541253395874888
75.0001865788098 -1.381301039000888E-004 0.547252179962178
76.0001879848655 -1.355034754089646E-004 0.550328944960229
77.0001893816847 -1.328144763017401E-004 0.548374638305539
78.0001907686254 -1.300631150450550E-004 0.543457647253208
79.0001921449999 -1.272494010247291E-004 0.534844103019597
80.0001935100720 -1.243733454872078E-004 0.525534664790709
81.0001948630535 -1.214349630980337E-004 0.513037455404691
82.0001962031013 -1.184342737515831E-004 0.496574141874924
83.0001975293133 -1.153713045970800E-004 0.477024601855444
84.0001988407258 -1.122460930887494E-004 0.457166893096085
85.0002001363093 -1.090586902617891E-004 0.431005130023210
86.0002014149656 -1.058091646539957E-004 0.403735383331875
87.0002026755239 -1.024976071592920E-004 0.374798473396735
88.0002039167387 -9.912413684496408E-005 0.347173148457788
89.0002051372859 -9.568890728414767E-005 0.319852120748145
90.0002063357613 -9.219211437681474E-005 0.292631801156368
91.0002075106785 -8.863400506449633E-005 0.266228044396145
92.0002086604679 -8.501488724089448E-005 0.240945560706418
93.0002097834773 -8.133514139907735E-005 0.218025197616317
94.0002108779727 -7.759523291160514E-005 0.196663382713245
95.0002119421417 -7.379572672469782E-005 0.178672240628803
96.0002129740982 -6.993730257401385E-005 0.163732183028421
97.0002139718896 -6.602077225506821E-005 0.151594421381940
98.0002149335069 -6.204709821040018E-005 0.140721254721218
99.0002158568978 -5.801741279101933E-005 0.133490005530158
100.000216739984 -5.393303921308732E-005 0.128219990691853

View File

@@ -1,10 +0,0 @@
LIBS=-L ${HEADAS}/lib -lcfitsio
FFLAGS= -O -ffree-form
all:modelrxte
modelrxte: modelrxte.f
${FC} ${FFLAGS} -o modelrxte modelrxte.f ${LIBS}

View File

@@ -1,6 +0,0 @@
This Fortran code makes projected GRXE sky model.
Model parameters are from [Revnivtsev+ 2006](https://ui.adsabs.harvard.edu/abs/2006A%26A...452..169R/abstract) paper.
The final map can be converted to `erg/s/cm2` by multiplying by `Lsun/kpc^2` (Lsun=3.826e+33 ergs/s, kpc=3.08568e+21 cm)
`

View File

@@ -1,60 +0,0 @@
c physical constants
c MG; Mon Nov 11 16:28:45 MSK 1996
c------ pi
real*8 pi,pi2,rg,gr
parameter (pi=3.14159265358979312d00,pi2=pi+pi,rg=180d0/pi,gr=1d0/rg)
c------ physical constants
real*8 sigthomson
parameter(sigthomson=6.65246d-25)
real*8 clight
parameter(clight=2.99792458d10)
real*8 mproton,melectron
parameter(mproton=1.6726231d-24,melectron=9.1093897d-28)
real*8 echarge
parameter(echarge=4.8032068d-10)
real*8 sigsb
parameter(sigsb=5.67051d-5)
real*8 kboltzmann
parameter(kboltzmann=1.380658d-16)
real*8 ggrav
parameter(ggrav=6.67259d-8)
real*8 hplanck
parameter(hplanck=6.6260755d-27)
real*8 msun
parameter (msun=1.9891d33)
real*8 rsun
parameter (rsun=6.9599d10)
real*8 lsun
parameter (lsun=3.845d33)
c------ units conversions
c...... energy
real*8 kev2erg
parameter(kev2erg=1.602177d-9)
real*8 kev2hz
parameter(kev2hz=2.417965d17)
real*8 kev2kelvin
parameter(kev2kelvin=1.16048d7)
real*8 jy2erg
parameter(jy2erg=1d-23)
c...... flux
c flux[erg/s/cm^2/Hz] = ergcms_anstr2ergcms_hz_0 * lambda[Anstr]^2 * flux[erg/s/cm^2/A]
real*8 ergcms_anstr2ergcms_hz_0
parameter(ergcms_anstr2ergcms_hz_0=3.33d-19)
c...... lenth
real*8 pc2cm,kpc2cm,mpc2cm
parameter(pc2cm=3.085678d18,kpc2cm=1e3*pc2cm,mpc2cm=1e6*pc2cm)
c...... time
real*8 yr2sec
parameter(yr2sec=3.15576d7)

View File

@@ -1,21 +0,0 @@
!c==========================================================================
subroutine printerror(status)
!c--------------------------------------------------------------------------
!c print error message (for fitsio routines)
!c--------------------------------------------------------------------------
implicit none
integer status
character errtext*30,errmessage*80
if(status.le.0) return
call ftgerr(status,errtext)
print *,'FITSIO Error Status =',status,': ',errtext
call ftgmsg(errmessage)
do while (errmessage .ne. ' ')
print *,errmessage
call ftgmsg(errmessage)
end do
!c if(status.ne.0) stop
return
end

View File

@@ -1,21 +0,0 @@
!c==========================================================================
subroutine crabmodel(status)
!c--------------------------------------------------------------------------
!c print error message (for fitsio routines)
!c--------------------------------------------------------------------------
implicit none
integer status
character errtext*30,errmessage*80
if(status.le.0) return
call ftgerr(status,errtext)
print *,'FITSIO Error Status =',status,': ',errtext
call ftgmsg(errmessage)
do while (errmessage .ne. ' ')
print *,errmessage
call ftgmsg(errmessage)
end do
!c if(status.ne.0) stop
return
end

View File

@@ -1,20 +0,0 @@
!c=========================================================================
subroutine deletefile(filename,status)
!c-------------------------------------------------------------------------
!c delete fits file
!c-------------------------------------------------------------------------
implicit none
integer status
character*(*) filename
integer access,i,unlink
if(access(filename,'w').eq.0) then
i=unlink(filename)
endif
return
end

View File

@@ -1,137 +0,0 @@
!c===============================================================
subroutine ibis_eresp(filename,crval1,crval2,crpix1,crpix2,cdelt1,cdelt2,crota2,erange,image,skyexp0,nxm,nx,ny,fast,status)
!c--------------------------------------------------------------
!c write image to FITS file
!c
!c Created: Mon May 16 14:21:02 EDT 1994
!c--------------------------------------------------------------
implicit none
character*(*) filename
integer nxm,nx,ny,erange,n,m
logical anyf
integer lnblnk,fast
integer bitpix,pcount
real*8 norma0,norma1,slope0,slope1,dist,e1,e2,texp
real*8 crval1,crval2,crpix1,crpix2,cdelt1,cdelt2,crota2
integer naxes(3),naxis,gcount,extend
integer unit,status,block,extver,hdutype,simple
character*400 comment
integer nmapm,nmapx,nmapy
parameter(nmapm=2000)
real skyexp(nmapm,nmapm)
real skyexp0(nmapm,nmapm)
real image(nmapm,nmapm)
status=0
norma1=0.0
slope1=1.0
if(erange .eq. -1) then
norma0=0.0
slope0=1.0
else if(erange .eq. 1) then
norma0=0.48859433
slope0=1.3304603
norma1=0.083260782
slope1=0.68063210
else if(erange .eq. 2) then
norma0=0.21444822
slope0=1.7809195
norma1=0.045216999
slope1=1.3624652
else if(erange .eq. 3) then
norma0=0.097560597
slope0=1.0071800
else if(erange .eq. 9) then
norma0=0.32660987
slope0=1.7066450
norma1=0.24734285
slope1=0.17543571
else if(erange .eq. 10) then
norma0=0.10310040
slope0=1.3237412
else if(erange .eq. 8) then
norma0=-0.079264878
slope0=0.91217010
else if(erange .eq. 13) then
norma0=-0.035629722
slope0=1.3605498
else if(erange .ge. 4 .and. erange .le. 7) then
norma0=0.0
slope0=1.0
else if(erange .eq. 11 .or. erange .eq. 12 .or. erange .eq. 14 .or. erange .eq. 15) then
norma0=0.0
slope0=1.0
else
print*,'No such energy interval ',erange
stop
endif
call ftgiou(unit,status)
call ftopen(unit,filename,0,block,status)
if(status.ne.0) then
print*,'Bad file, skip it'
call ftclos(unit,status)
call ftfiou(unit,status)
return
endif
extver=0
hdutype=-1
call ftghpr(unit,2,simple,bitpix,naxis,naxes,pcount,gcount,extend,status)
!call ftg2de(unit,0,0.,nmapm,naxes(1),naxes(2),skydld,anyf,status)
call FTGKYd(unit,'EXPOSURE ',texp,comment,status)
call ftgkyd(unit,'E1 ',e1,comment,status)
call ftgkyd(unit,'E2 ',e2,comment,status)
call ftgkyd(unit,'CRPIX1 ',crpix1,comment,status)
call ftgkyd(unit,'CRPIX2 ',crpix2,comment,status)
call ftgkyd(unit,'CRVAL1 ',crval1,comment,status)
call ftgkyd(unit,'CRVAL2 ',crval2,comment,status)
call ftgkyd(unit,'CDELT1 ',cdelt1,comment,status)
call ftgkyd(unit,'CDELT2 ',cdelt2,comment,status)
call ftgkyd(unit,'CROTA2 ',crota2,comment,status)
!call ftmnhd(unit,hdutype,'skyerr',extver,status)
!call ftg2de(unit,0,0.,nmapm,naxes(1),naxes(2),skyerr,anyf,status)
if(fast .eq. 0) then
call ftmnhd(unit,hdutype,'skyexp',extver,status)
call ftg2de(unit,0,0.,nmapm,naxes(1),naxes(2),skyexp,anyf,status)
skyexp0=skyexp
else
skyexp=skyexp0
endif
nmapx=naxes(1)
nmapy=naxes(2)
call ftclos(unit,status)
call ftfiou(unit,status)
if(status.gt.0) then
return
endif
!
! Np = (skyexp(n,m)/texp/(e2-e1)) number of open pixels visible from given direction
!
do n=1,nmapy
do m=1,nmapx
skyexp(n,m)=skyexp(n,m)/texp/(e2-e1) ! (Np)
enddo
enddo
do n=1,nmapx
do m=1,nmapy
! pixel offset
dist=dsqrt((DBLE(n)-DBLE(ny)/2.0)**2+(DBLE(m)-DBLE(nx)/2.0)**2)
dist=dist*cdelt1
image(n,m)=skyexp(n,m)*(1.0+norma0*EXP(-dist/slope0))*(1.0+norma1*EXP(-dist/slope1)) ! Crab fit
enddo
enddo
nx=nmapx
ny=nmapy
return
end

View File

@@ -1,21 +0,0 @@
!c==========================================================================
subroutine printerror(status)
!c--------------------------------------------------------------------------
!c print error message (for fitsio routines)
!c--------------------------------------------------------------------------
implicit none
integer status
character errtext*30,errmessage*80
if(status.le.0) return
call ftgerr(status,errtext)
print *,'FITSIO Error Status =',status,': ',errtext
call ftgmsg(errmessage)
do while (errmessage .ne. ' ')
print *,errmessage
call ftgmsg(errmessage)
end do
!c if(status.ne.0) stop
return
end

View File

@@ -1,110 +0,0 @@
!c===============================================================
subroutine read_co(dglon,dglat,dflux,tnrows)
!c--------------------------------------------------------------
!c write image to FITS file
!c
!c Created: Mon May 16 14:21:02 EDT 1994
!c--------------------------------------------------------------
implicit none
character filename*40
integer nxm,nx,ny,erange,n,m
logical anyf
logical exact,anynull
integer lnblnk
integer bitpix,pcount
real*8 norma0,norma1,slope0,slope1,dist,e1,e2,texp
real*8 crval1,crval2,crpix1,crpix2,cdelt1,cdelt2,crota2
integer naxes(3),naxis,gcount,extend
integer unit,status,block,extver,hdutype,simple
character*400 comment
integer nmapm,nmapx,nmapy
parameter(nmapm=2000)
integer nhdu,tnrows,tncols
integer ixc,iyc,ival
real skyexp(nmapm,nmapm)
real skydld(nmapm,nmapm)
real skyerr(nmapm,nmapm)
real image(nmapm,nmapm)
! cobe
integer TROWMAX,ipixno,irezid,istddev,iglat,iglon,iraw,isum,isel
parameter (TROWMAX=500000)
integer dpixno(TROWMAX),idx,sel(TROWMAX)
real dflux(TROWMAX),dglat(TROWMAX),dglon(TROWMAX)
real*8 dl,db
real dflux_49(TROWMAX)
integer*4 mask(TROWMAX)
call ftgiou(unit,status)
call ftopen(unit,'/afs/mpa/home/krivonos/results/latscan/CO/comap_list.fits',0,block,status)
if(status.ne.0) then
print*,'Bad file, skip it'
call ftclos(unit,status)
call ftfiou(unit,status)
status=0
call exit(0)
endif
call FTGHDN(unit,nhdu)
call ftmahd(unit,2,hdutype,status)
call FTGHDN(unit,nhdu)
call FTGNRW(unit,tnrows, status)
call FTGNCL(unit,tncols, status)
if(tnrows.gt.trowmax) then
print*,'Too many points',tnrows,trowmax
call ftclos(unit,status)
call ftfiou(unit,status)
stop
endif
exact=.false.
call ftgcno(unit,exact,'XCOORD',ixc,status)
call ftgcno(unit,exact,'YCOORD',iyc,status)
call ftgcno(unit,exact,'VALUE',ival,status)
do iraw=1,tnrows
call ftgcve(unit,ixc,iraw,1,1,0,dglon(iraw),anynull,status)
call ftgcve(unit,iyc,iraw,1,1,0,dglat(iraw),anynull,status)
call ftgcve(unit,ival,iraw,1,1,0.,dflux(iraw),anynull,status)
end do
call ftclos(unit,status)
call ftfiou(unit,status)
if(status.gt.0) then
print*,'Too many errors',tnrows,trowmax
call ftclos(unit,status)
call ftfiou(unit,status)
call exit(0)
endif
do iraw=1,tnrows
if (isnan(dflux(iraw))) then
!if(abs(Nint(dflux(iraw))) .eq. 32768) then
print*,dglon(iraw),dglat(iraw),dflux(iraw)
dflux(iraw)=0.0
endif
enddo
! modify coordinates
do iraw=1,tnrows
if(dglon(iraw) .gt. 180.0) then
dglon(iraw)=dglon(iraw)-360.0
endif
enddo
!RAW MAP
!do iraw=1,tnrows
! print*,dglon(iraw),dglat(iraw),dflux(iraw)
!enddo
!stop
return
end

View File

@@ -1,219 +0,0 @@
!c===============================================================
subroutine read_cobe(dglon,dglat,dflux_49,tnrows)
!c--------------------------------------------------------------
!c write image to FITS file
!c
!c Created: Mon May 16 14:21:02 EDT 1994
!c--------------------------------------------------------------
implicit none
character filename*40
integer nxm,nx,ny,erange,n,m
logical anyf
logical exact,anynull
integer lnblnk
integer bitpix,pcount
real*8 norma0,norma1,slope0,slope1,dist,e1,e2,texp
real*8 crval1,crval2,crpix1,crpix2,cdelt1,cdelt2,crota2
integer naxes(3),naxis,gcount,extend
integer unit,status,block,extver,hdutype,simple
character*400 comment
integer nmapm,nmapx,nmapy
parameter(nmapm=2000)
integer nhdu,tnrows,tncols
real skyexp(nmapm,nmapm)
real skydld(nmapm,nmapm)
real skyerr(nmapm,nmapm)
real image(nmapm,nmapm)
! cobe
integer TROWMAX,ipixno,irezid,istddev,iglat,iglon,iraw,isum,isel
parameter (TROWMAX=500000)
integer dpixno(TROWMAX),idx,sel(TROWMAX)
real dflux(TROWMAX),dglat(TROWMAX),dglon(TROWMAX)
real*8 dl,db
real dflux_49(TROWMAX),dflux_49_orig(TROWMAX),dflux_12(TROWMAX)
real dratio(TROWMAX)
integer*4 mask(TROWMAX)
! read DIRBE flux 4.9 microns (Resid)
! The sum of the selected column is 90891.360
! The mean of the selected column is 0.23114868
! The standard deviation of the selected column is 0.76384730
! The minimum of selected column is 3.64903696E-02
! The maximum of selected column is 110.34200
! The number of points used in calculation is 393216
!
! Expected value 0.0823
!
call ftgiou(unit,status)
call ftopen(unit,'/afs/mpa/project/integral/results/latscan/COBE/DIRBE_BAND04_ZSMA.FITS',0,block,status)
!call ftopen(unit,'/afs/mpa/project/integral/results/latscan/COBE/DIRBE_BAND3A_ZSMA.FITS',0,block,status)
if(status.ne.0) then
print*,'Bad file, skip it'
call ftclos(unit,status)
call ftfiou(unit,status)
status=0
call exit(0)
endif
call FTGHDN(unit,nhdu)
call ftmahd(unit,2,hdutype,status)
call FTGHDN(unit,nhdu)
call FTGNRW(unit,tnrows, status)
call FTGNCL(unit,tncols, status)
if(tnrows.gt.trowmax) then
print*,'Too many points',tnrows,trowmax
call ftclos(unit,status)
call ftfiou(unit,status)
stop
endif
exact=.false.
call ftgcno(unit,exact,'pixel_no',ipixno,status)
call ftgcno(unit,exact,'resid',irezid,status)
do iraw=1,tnrows
call ftgcvj(unit,ipixno,iraw,1,1,0,dpixno(iraw),anynull,status)
call ftgcve(unit,irezid,iraw,1,1,0.,dflux_49(iraw),anynull,status)
end do
call ftclos(unit,status)
call ftfiou(unit,status)
if(status.gt.0) then
call exit(0)
endif
!
! Read DIRBE flux 1.25 microns
!
! The sum of the selected column is 194936.15
! The mean of the selected column is 0.49574827
! The standard deviation of the selected column is 1.3725306
! The minimum of selected column is 2.56427769E-02
! The maximum of selected column is 215.81805
! The number of points used in calculation is 393216
!
! Expected value: 0.0775
!
call ftgiou(unit,status)
call ftopen(unit,'/afs/mpa/project/integral/results/latscan/COBE/DIRBE_BAND1A_ZSMA.FITS',0,block,status)
if(status.ne.0) then
print*,'Bad file, skip it'
call ftclos(unit,status)
call ftfiou(unit,status)
status=0
call exit(0)
endif
call FTGHDN(unit,nhdu)
call ftmahd(unit,2,hdutype,status)
call FTGHDN(unit,nhdu)
call FTGNRW(unit,tnrows, status)
call FTGNCL(unit,tncols, status)
if(tnrows.gt.trowmax) then
print*,'Too many points',tnrows,trowmax
call ftclos(unit,status)
call ftfiou(unit,status)
stop
endif
exact=.false.
call ftgcno(unit,exact,'pixel_no',ipixno,status)
call ftgcno(unit,exact,'resid',irezid,status)
do iraw=1,tnrows
call ftgcvj(unit,ipixno,iraw,1,1,0,dpixno(iraw),anynull,status)
call ftgcve(unit,irezid,iraw,1,1,0.,dflux_12(iraw),anynull,status)
end do
call ftclos(unit,status)
call ftfiou(unit,status)
if(status.gt.0) then
call exit(0)
endif
! read DIRBE coordinates
call ftgiou(unit,status)
call ftopen(unit,'/afs/mpa/project/integral/results/latscan/COBE/DIRBE_SKYMAP_INFO.FITS',0,block,status)
if(status.ne.0) then
print*,'Bad file, skip it'
call ftclos(unit,status)
call ftfiou(unit,status)
status=0
call exit(0)
endif
call FTGHDN(unit,nhdu)
call ftmahd(unit,2,hdutype,status)
call FTGHDN(unit,nhdu)
call FTGNRW(unit,tnrows, status)
call FTGNCL(unit,tncols, status)
if(tnrows.gt.trowmax) then
print*,'Too many points',tnrows,trowmax
call ftclos(unit,status)
call ftfiou(unit,status)
stop
endif
exact=.false.
call ftgcno(unit,exact,'QSPIXEL',ipixno,status)
call ftgcno(unit,exact,'GLON-CSC',iglon,status)
call ftgcno(unit,exact,'GLAT-CSC',iglat,status)
do iraw=1,tnrows
call ftgcvj(unit,ipixno,iraw,1,1,0,dpixno(iraw),anynull,status)
call ftgcve(unit,iglon,iraw,1,1,0.,dglon(iraw),anynull,status)
call ftgcve(unit,iglat,iraw,1,1,0.,dglat(iraw),anynull,status)
end do
call ftclos(unit,status)
call ftfiou(unit,status)
if(status.gt.0) then
call exit(0)
endif
! modify coordinates
do iraw=1,tnrows
if(dglon(iraw) .gt. 180.0) then
dglon(iraw)=dglon(iraw)-360.0
endif
enddo
! substruct background
do iraw=1,tnrows
dflux_12(iraw)=dflux_12(iraw)-0.07
dflux_49(iraw)=dflux_49(iraw)-0.08
enddo
! correction for absorbtion
do iraw=1,tnrows
dratio(iraw)=0.0
if(dflux_49(iraw).gt.0.5.and.dflux_49(iraw).lt.50.0.and.dflux_12(iraw).gt. 0.8 .and. dflux_12(iraw).lt.20.0) then
dratio(iraw)=dflux_12(iraw)/dflux_49(iraw)/3.5
else
dflux_49(iraw)=0.0
dflux_12(iraw)=0.0
dratio(iraw)=0.0
endif
enddo
do iraw=1,tnrows
if(dratio(iraw) .gt. 0.0 .and. dratio(iraw) .lt. 1.0) then
dratio(iraw)=(dratio(iraw))**(-0.25)
dflux_49(iraw)=dratio(iraw)*dflux_49(iraw)
else
dflux_49(iraw)=0.0
endif
enddo
do iraw=1,tnrows
if(abs(dglat(iraw)).gt.7.0) then
dflux_49(iraw)=0.0
endif
enddo
return
end

View File

@@ -1,104 +0,0 @@
!c===============================================================
subroutine read_modelrxte(dglon,dglat,dflux,tnrows)
!c--------------------------------------------------------------
!c write image to FITS file
!c
!c Created: Mon May 16 14:21:02 EDT 1994
!c--------------------------------------------------------------
! see details /afs/mpa/project/integral/results/latscan/f90/modelrxte.f
implicit none
character filename*40
integer nxm,nx,ny,erange,n,m
logical anyf
logical exact,anynull
integer lnblnk
integer bitpix,pcount
real*8 norma0,norma1,slope0,slope1,dist,e1,e2,texp
real*8 crval1,crval2,crpix1,crpix2,cdelt1,cdelt2,crota2
integer naxes(3),naxis,gcount,extend
integer unit,status,block,extver,hdutype,simple
character*400 comment,fn
integer nmapm,nmapx,nmapy
parameter(nmapm=2000)
integer nhdu,tnrows,tncols
integer ixc,iyc,ival
real skyexp(nmapm,nmapm)
real skydld(nmapm,nmapm)
real skyerr(nmapm,nmapm)
real image(nmapm,nmapm)
integer lfblnk
! cobe
integer TROWMAX,ipixno,irezid,istddev,iglat,iglon,iraw,isum,isel
parameter (TROWMAX=3000000)
integer dpixno(TROWMAX),idx,sel(TROWMAX)
real dflux(TROWMAX),dglat(TROWMAX),dglon(TROWMAX)
real*8 dl,db
!real dflux_49(TROWMAX)
integer*4 mask(TROWMAX)
status=0
!fn='/afs/mpa/project/integral/results/latscan/f90/modelrxte_hires.bintab.fits'
fn='/afs/mpa/project/integral/results/latscan/f90/modelrxte_ait_wide.bintab.fits'
print*,'Read file',fn(:lfblnk(fn))
call ftgiou(unit,status)
call ftopen(unit,fn,0,block,status)
if(status.ne.0) then
print*,'Bad file, skip it'
call ftclos(unit,status)
call ftfiou(unit,status)
status=0
call exit(0)
endif
call FTGHDN(unit,nhdu)
call ftmahd(unit,2,hdutype,status)
call FTGHDN(unit,nhdu)
call FTGNRW(unit,tnrows, status)
call FTGNCL(unit,tncols, status)
if(tnrows.gt.trowmax) then
print*,'Too many points',tnrows,trowmax
call ftclos(unit,status)
call ftfiou(unit,status)
stop
endif
exact=.false.
call ftgcno(unit,exact,'GLON',ixc,status)
call ftgcno(unit,exact,'GLAT',iyc,status)
call ftgcno(unit,exact,'VALUE',ival,status)
do iraw=1,tnrows
call ftgcve(unit,ixc,iraw,1,1,0,dglon(iraw),anynull,status)
call ftgcve(unit,iyc,iraw,1,1,0,dglat(iraw),anynull,status)
call ftgcve(unit,ival,iraw,1,1,0.,dflux(iraw),anynull,status)
end do
call ftclos(unit,status)
call ftfiou(unit,status)
if(status.gt.0) then
print*,'Too many errors',tnrows,trowmax
call ftclos(unit,status)
call ftfiou(unit,status)
call exit(0)
endif
do iraw=1,tnrows
if (isnan(dflux(iraw))) then
!if(abs(Nint(dflux(iraw))) .eq. 32768) then
print*,dglon(iraw),dglat(iraw),dflux(iraw)
dflux(iraw)=0.0
endif
enddo
! modify coordinates
do iraw=1,tnrows
if(dglon(iraw) .gt. 180.0) then
dglon(iraw)=dglon(iraw)-360.0
endif
enddo
return
end

View File

@@ -1,279 +0,0 @@
!c===============================================================
subroutine wimage_simple_i4(filename,image,nxm,nx,ny)
!c--------------------------------------------------------------
!c write image to FITS file
!c
!c Created: Mon May 16 14:21:02 EDT 1994
!c--------------------------------------------------------------
implicit none
character*(*) filename
integer nxm,nx,ny
integer image(nxm,*)
integer lnblnk
integer status,bitpix,naxis,pcount,gcount
integer naxes(2)
integer unit
status=0
print 10,filename(:lnblnk(filename))
10 format(/'Write FITS image to file ',a)
call deletefile(filename,status)
call ftgiou(unit,status)
bitpix=32
naxis=2
pcount=0
gcount=1
naxes(1)=nx
naxes(2)=ny
call ftinit(unit,filename,0,status)
call ftphpr(unit,.true.,bitpix,naxis,naxes,pcount,gcount,.false.,status)
call ftpdef(unit,bitpix,naxis,naxes,pcount,gcount,status)
call ftp2dj(unit,0,nxm,naxes(1),naxes(2),image,status)
call ftclos(unit,status)
call ftfiou(unit,status)
if(status.gt.0) call printerror(status)
return
end
!c===============================================================
subroutine wimage_simple_r4(filename,image,nxm,nx,ny)
!c--------------------------------------------------------------
!c write image to FITS file
!c
!c Created: Mon May 16 14:21:02 EDT 1994
!c--------------------------------------------------------------
implicit none
character*(*) filename
integer nxm,nx,ny
real image(nxm,*)
integer lnblnk
integer status,bitpix,naxis,pcount,gcount
integer naxes(2)
integer unit
status=0
print 10,filename(:lnblnk(filename))
10 format(/'Write FITS image to file ',a)
call deletefile(filename,status)
call ftgiou(unit,status)
bitpix=-32
naxis=2
pcount=0
gcount=1
naxes(1)=nx
naxes(2)=ny
call ftinit(unit,filename,0,status)
call ftphpr(unit,.true.,bitpix,naxis,naxes,pcount,gcount,.false.,status)
call ftpdef(unit,bitpix,naxis,naxes,pcount,gcount,status)
call ftp2de(unit,0,nxm,naxes(1),naxes(2),image,status)
call ftclos(unit,status)
call ftfiou(unit,status)
if(status.gt.0) call printerror(status)
return
end
!c===============================================================
subroutine wimage_simple_r8(filename,image,nxm,nx,ny)
!c--------------------------------------------------------------
!c write image to FITS file
!c
!c Created: Mon May 16 14:21:02 EDT 1994
!c--------------------------------------------------------------
implicit none
character*(*) filename
integer nxm,nx,ny
real*8 image(nxm,*)
integer lnblnk
integer status,bitpix,naxis,pcount,gcount
integer naxes(2)
integer unit
status=0
print 10,filename(:lnblnk(filename))
10 format(/'Write FITS image to file ',a)
call deletefile(filename,status)
call ftgiou(unit,status)
bitpix=-64
naxis=2
pcount=0
gcount=1
naxes(1)=nx
naxes(2)=ny
call ftinit(unit,filename,0,status)
call ftphpr(unit,.true.,bitpix,naxis,naxes,pcount,gcount,.false.,status)
call ftpdef(unit,bitpix,naxis,naxes,pcount,gcount,status)
call ftp2dd(unit,0,nxm,naxes(1),naxes(2),image,status)
call ftclos(unit,status)
call ftfiou(unit,status)
if(status.gt.0) call printerror(status)
return
end
!c=============================================================================
subroutine read_image_r4(fn,image,nxm,mapx,mapy)
!c-----------------------------------------------------------------------------
!c read image (real*4)
!c-----------------------------------------------------------------------------
implicit none
character*(*) fn
integer nxm,mapx,mapy
real image(nxm,*)
character*80 comment
integer unit,status,block,hdutype,extver,naxis,naxes(4),bitpix
integer pcount,gcount
logical anyf,exact,simple,extend
status=0
call ftgiou(unit,status)
call ftopen(unit,fn,0,block,status)
call ftghpr(unit,2,simple,bitpix,naxis,naxes,pcount,gcount,extend,status)
!print*,' image nx,ny:',naxes(1),naxes(2)
call ftg2de(unit,0,0.,nxm,naxes(1),naxes(2),image,anyf,status)
call ftclos(unit,status)
call ftfiou(unit,status)
if(status.gt.0) then
call printerror(status)
endif
mapx=naxes(1)
mapy=naxes(2)
return
end
subroutine write_image(outfile,flux,xrval,yrval,xrpix,yrpix,xinc,yinc,rot,size_sky,nxm)
implicit none
integer nxm
integer size_sky,i,j
real*8 xrval,yrval,xrpix,yrpix,xinc,yinc,rot
real flux(nxm,*)
integer ounit,status,lnblnk
integer bitpix,naxis,naxes(2),pcount,gcount
character*200 outfile,errmsg
bitpix=-32
naxis=2
pcount=0
gcount=1
naxes(1)=size_sky
naxes(2)=size_sky
status=0
call ftgiou(ounit,status)
call ftinit(ounit,outfile,0,status)
if(status.eq.103) then
print*,' Can not create file. File already exist'
print *,''
stop
endif
call ftphpr(ounit,.true.,bitpix,naxis,naxes,pcount,gcount,.true.,status)
call ftpdef(ounit,bitpix,naxis,naxes,pcount,gcount,status)
call ftpkys(ounit,'CTYPE1','GLON-AIT','X-axis type',status)
call ftpkys(ounit,'CTYPE2','GLAT-AIT','Y-axis type',status)
call ftpkyd(ounit,'CRVAL1',xrval,10,'Reference pixel value',status)
call ftpkyd(ounit,'CRVAL2',yrval,10,'Reference pixel value',status)
call ftpkyd(ounit,'CRPIX1',xrpix,10,'Reference pixel',status)
call ftpkyd(ounit,'CRPIX2',yrpix,10,'Reference pixel',status)
call ftpkyd(ounit,'CDELT1',xinc,10,'Degrees/pixel',status)
call ftpkyd(ounit,'CDELT2',yinc,10,'Degrees/pixel',status)
call ftpkyd(ounit,'CROTA1',rot,10,'',status)
call ftpdat(ounit,status)
call ftphis(ounit,'Created by R.Krivonos, krivonos@iki.rssi.ru',status)
call ftp2de(ounit,0,nxm,size_sky,size_sky,flux,status)
if (status.ne.0) then
call ftgerr(status,errmsg)
print *,errmsg
endif
call ftpcks(ounit,status)
call ftclos(ounit,status)
call ftfiou(ounit,status)
if(status.eq.0) then
print *,'File is written: ',outfile(1:lnblnk(outfile))
endif
end
subroutine write_image_xy(outfile,flux,xrval,yrval,xrpix,yrpix,xinc,yinc,rot,size_sky_x,size_sky_y,nxm)
implicit none
integer nxm
integer size_sky_x,size_sky_y,i,j
real*8 xrval,yrval,xrpix,yrpix,xinc,yinc,rot
real flux(nxm,*)
integer ounit,status,lnblnk
integer bitpix,naxis,naxes(2),pcount,gcount
character*200 outfile,errmsg
bitpix=-32
naxis=2
pcount=0
gcount=1
naxes(1)=size_sky_x
naxes(2)=size_sky_y
status=0
call ftgiou(ounit,status)
call ftinit(ounit,outfile,0,status)
if(status.eq.103) then
print*,' Can not create file. File already exist'
print *,''
stop
endif
call ftphpr(ounit,.true.,bitpix,naxis,naxes,pcount,gcount,.true.,status)
call ftpdef(ounit,bitpix,naxis,naxes,pcount,gcount,status)
call ftpkys(ounit,'CTYPE1','GLON-AIT','X-axis type',status)
call ftpkys(ounit,'CTYPE2','GLAT-AIT','Y-axis type',status)
call ftpkyd(ounit,'CRVAL1',xrval,10,'Reference pixel value',status)
call ftpkyd(ounit,'CRVAL2',yrval,10,'Reference pixel value',status)
call ftpkyd(ounit,'CRPIX1',xrpix,10,'Reference pixel',status)
call ftpkyd(ounit,'CRPIX2',yrpix,10,'Reference pixel',status)
call ftpkyd(ounit,'CDELT1',xinc,10,'Degrees/pixel',status)
call ftpkyd(ounit,'CDELT2',yinc,10,'Degrees/pixel',status)
call ftpkyd(ounit,'CROTA1',rot,10,'',status)
call ftpdat(ounit,status)
call ftphis(ounit,'Created by R.Krivonos',status)
call ftp2de(ounit,0,nxm,size_sky_x,size_sky_y,flux,status)
if (status.ne.0) then
call ftgerr(status,errmsg)
print *,errmsg
endif
call ftpcks(ounit,status)
call ftclos(ounit,status)
call ftfiou(ounit,status)
if(status.eq.0) then
print *,'File is written: ',outfile(1:lnblnk(outfile))
endif
end

View File

@@ -1,235 +0,0 @@
!
! Makes projected GRXE sky model. Model parameters are from Revnivtsev+ 2006
! The final map can be converted to erg/s/cm2 by multiplying by Lsun/kpc^2
! Roman Krivonos, 2013
!
! ergs-to-photons coefficient is taken from the following model:
!========================================================================
!Model atable{polarmodel.fits}<1> + gaussian<2> Source No.: 1 Active/On
!Model Model Component Parameter Unit Value
! par comp
! 1 1 polarcol wdmass 0.600000 frozen
! 2 1 polarcol norm 1.26483E-09 +/- 2.76500E-11
! 3 2 gaussian LineE keV 6.70000 frozen
! 4 2 gaussian Sigma keV 0.190000 frozen
! 5 2 gaussian norm 1.10106E-02 +/- 1.41770E-03
!________________________________________________________________________
! flux 3 20
! Model Flux 0.22374 photons (2.3232e-09 ergs/cm^2/s) range (3.0000 - 20.000 keV)
! k= 0.22374/2.3232e-09=9.63068e+07
include 'inc/wimage_simple.f'
include 'inc/deletefile.f'
include 'inc/printerror.f'
include 'inc/read_cobe.f'
implicit none
integer nmapm,nmapx,nmapy
parameter(nmapm=40000)
integer NROWS
parameter (NROWS=609)
real skydld(nmapm,nmapm),skyerr(nmapm,nmapm)
real skyexp(nmapm,nmapm)
real sky(nmapm,nmapm)
real*8 crval1,crval2,crpix1,crpix2,cdelt1,cdelt2,crota2
character*80 comment
integer unit,status,block,extver,hdutype,simple,bitpix
integer naxes(3),naxis,pcount,gcount,extend
logical anyf
real*8 ibx1,iby1,ibx2,iby2
integer TROWMAX,isel,tnrows,iraw
parameter (TROWMAX=500000)
integer sel(TROWMAX)
real dflux(TROWMAX),dflux_49(TROWMAX),dglat(TROWMAX),dglon(TROWMAX)
character filename*140,fileout*140,nullstr*1
logical exact,anynull
integer irx,iry,nr
integer s,i,j,n,m
real*8 ra,dec,lon,lat,xsrc,ysrc,totalcobe,totalmodel
real*8 dr,rd,resp2Crab,delta
character*400 arg
parameter (dr=0.0174533,rd=57.2958)
real*8 sumd,sumd_r,sumd_m,koeff,id_l,id_b,b0,texp,sigma,pi,fwhm
PARAMETER(pi=3.14159)
real*8 rmin,rmax,rstep,r,rEarth
real*8 lmin,lmax,bmin,bmax,model,model0,model1,modelrxte
real*8 dOmega,dV,l,b,x0,y0,z0,theta,phi,zEarth,R0,theta0,phi0
! parameters for AIT projection
character*200 outfile
integer size_sky,sx,sy,k,ir
parameter (size_sky=2000)
real ncatched(size_sky,size_sky)
real*8 xrval,yrval,xinc,yinc,rot,xrpix,yrpix,lcur,bcur,x,y,totFlux,Flux
real aitmap(nmapm,nmapm),prev,lonr,latr
delta=2.0
sx=int(380.0/delta)
sy=int(200.0/delta)
if(sx .gt. nmapm .or. sy .gt. nmapm) then
print*,sx,sy,nmapm
return
endif
xinc=delta
yinc=delta
rot=0.0
xrpix=sx/2.0
yrpix=sy/2.0
xrval=0.0d0
yrval=0.0d0
aitmap=0.0
zEarth=16.46d0/1000.0d0
rEarth=8.5d0
rmin=1.0
rmax=22.0
nr=2600
rstep=(rmax-rmin)/(nr-1)
status=0
!lmin=-180.0
!lmax=180.0
bmin=-30.0
bmax=30.0
totFlux=0.0
sumd=0.0
sumd_r=0.0
outfile='modelrxte_ait_wide.dat'
call ftgiou(unit,status)
open(unit,file=outfile)
do j=1,nmapm
do k=1,nmapm
status=0
call FTWLDP(DBLE(j),DBLE(k),xrval,yrval,xrpix,yrpix,xinc,yinc,rot,'-AIT',lon,lat,status)
if(status.eq.0) then
if(lat.gt.bmax.or.lat.lt.bmin) cycle
l=lon
b=lat
phi=l*dr
theta=(90.0+b)*dr
dOmega=sin(theta)*(delta*dr)**2
sumd_r=0.0d0
do ir=0,nr-1
r=rmin+ir*rstep
dV=r*r*rstep*dOmega
x0=r*sin(theta)*cos(phi)-rEarth
y0=r*sin(theta)*sin(phi)
z0=r*cos(theta)-zEarth
R0=dsqrt(x0**2+y0**2+z0**2)
phi0=datan2(y0,x0)!-pi..pi
theta0=dacos(z0/R0)!0..pi
model=modelrxte(x0,y0,z0,R0,theta0,phi0)
Flux=model*dV/r/r/4/pi
sumd_r=sumd_r+Flux
sumd=sumd+model*dV
totFlux=totFlux+Flux
enddo
aitmap(j,k)=sumd_r
write(unit,'(2f9.3,1pe14.4)'),lon,lat,aitmap(j,k)
else
call ftgerr(status,comment)
!print *,comment
!stop
cycle
status=0
endif
enddo
enddo
close(unit)
call ftfiou(unit,status)
print*,'Total Flux',totFlux
print*,'Integral ',sumd
! In oder to convert pixel value of the map to flux in this pixel, you need to multiply by Lsun/kpc**2=4.01831e-10
! Lsun=3.826e+33 erg/s, kpc=3.08568e+21 cm
outfile='modelrxte_ait_3to20keV_flux.fits'
call deletefile(outfile,status)
call write_image_xy(outfile,aitmap,xrval,yrval,xrpix,yrpix,xinc,yinc,rot,sx,sy,nmapm)
200 end
real*8 function modelrxte(X,Y,Z,R,theta,phi)
implicit none
real*8 dr,rd
parameter (dr=0.0174533,rd=57.2958)
real*8, intent(in) :: R,theta,phi
REAL*8 X,Y,Z
REAL*8 Xt,Yt,Zt
REAL*8 X0,Y0,Z0,Rdisk,Rt,Rmax,Rm,BarRmax,Rxy,r0,BarCutoff
REAL*8 BarTilt,Zdisk,rhobulge0,rhobulge,rhodisk,rhodisk0
parameter (BarTilt=(180d0-29.0)*dr,BarRmax=2.4)
parameter (X0=3.4,Y0=1.2,Z0=1.12,Rdisk=2.5,Zdisk=0.13,Rm=3.0)
real*8 Lsun
parameter(Lsun = 3.826e+33)
modelrxte=0.0
rhobulge0=1.0
! Mikej bulge luminosity 3.9+/-0.5 x 10^37 erg/s = 1.02e4 Lsun
! bulge volume without BarCutoff = 42.599
rhobulge0=1.02e4/42.599
Rmax=10.0
rhodisk0=1.0
! disk volume = 4.82471
! Mikej disk lumin ~10e37 = 26137 Lsun
rhodisk0=2.6137e4/4.82471
Xt=X*dcos(BarTilt)-Y*dsin(BarTilt)
Yt=X*dsin(BarTilt)+Y*dcos(BarTilt)
Zt=Z
r0=0.5
Rxy=dsqrt( (Xt)**2 + (Yt)**2 )
BarCutoff=1 .0
if(Rxy.gt.BarRmax) then
BarCutoff=dexp(-Rxy**2/2/r0**2)
endif
Rt=dsqrt((Xt/X0)**2 + (Yt/Y0)**2 + (Zt/Z0)**2)
! Avoid singularity in GC, say close than 1pc
if(Rt.lt.0.05) Rt=0.05
rhobulge = rhobulge0*Rt**(-1.8)*exp(-Rt**3)*BarCutoff
rhodisk = 0.0
if(R.lt.Rmax) then
rhodisk=rhodisk0*dexp(-(Rm/R)**3 -R/Rdisk -dabs(Z)/Zdisk)
endif
modelrxte=rhodisk+rhobulge
!check, volume should be 4/3*pi = 4.18879
!modelrxte=0.0
!if(R.lt.15.0) modelrxte=1.0
return
end function modelrxte

Binary file not shown.

View File

@@ -1,12 +0,0 @@
method leven 10 0.01
abund angr
xsect vern
cosmo 70 0 0.73
xset delta 0.01
systematic 0
model atable{../../data/polarmodel.fits} + powerlaw
0.73486 1 0 0 3 3
2.27115e-09 0.01 0 0 1e+20 1e+24
1.23053 0.01 -3 -2 9 10
0.0103601 0.01 0 0 1e+20 1e+24
bayes off

View File

@@ -1,12 +0,0 @@
method leven 10 0.01
abund angr
xsect vern
cosmo 70 0 0.73
xset delta 0.01
systematic 0
model atable{../../data/polarmodel.fits} + powerlaw
0.713934 1 0 0 3 3
2.27522e-09 0.01 0 0 1e+20 1e+24
1.80029 0.01 -3 -2 9 10
0.138919 0.01 0 0 1e+20 1e+24
bayes off

View File

@@ -1,10 +0,0 @@
method leven 10 0.01
abund angr
xsect vern
cosmo 70 0 0.73
xset delta 0.01
systematic 0
model atable{../../data/polarmodel.fits}
0.724678 1 0 0 3 3
1.03624e-09 0.01 0 0 1e+20 1e+24
bayes off

View File

@@ -1,18 +0,0 @@
method leven 10 0.01
abund angr
xsect vern
cosmo 70 0 0.73
xset delta 0.01
systematic 0
model cflux*bremss + cflux*powerlaw
20 -0.1 0 0 1e+06 1e+06
60 -0.1 0 0 1e+06 1e+06
-9.0642 0.01 -100 -100 100 100
20.3536 1 0.0001 0.0001 100 200
1e-05 -1 0 0 1e+20 1e+24
80 -0.1 0 0 1e+06 1e+06
200 -0.1 0 0 1e+06 1e+06
-11.2811 0.01 -100 -100 100 100
-1.5 -1 -3 -2 9 10
1e-05 -1 0 0 1e+20 1e+24
bayes off