aboutsummaryrefslogtreecommitdiffstats
path: root/acispy/spectrum.py
diff options
context:
space:
mode:
authorAaron LI <aaronly.me@outlook.com>2017-02-19 16:26:40 +0800
committerAaron LI <aaronly.me@outlook.com>2017-02-19 16:26:40 +0800
commit2aaf7d8106e7d596654c9ae1cf0fa75fd642f3eb (patch)
treeb524d1fa54a4ad6251d467175b71e9dfea5a6631 /acispy/spectrum.py
parent89adbc474890c50963537e8e32bdeff8aa3e10d1 (diff)
downloadchandra-acis-analysis-2aaf7d8106e7d596654c9ae1cf0fa75fd642f3eb.tar.bz2
Setup module 'acispy' and clean 'scripts' directory
Setup a module 'acispy' to hold some generic Python modules for better/easier reuse, and clean up the 'scripts' directory, which will be used to hold the CLI tools.
Diffstat (limited to 'acispy/spectrum.py')
-rw-r--r--acispy/spectrum.py44
1 files changed, 44 insertions, 0 deletions
diff --git a/acispy/spectrum.py b/acispy/spectrum.py
new file mode 100644
index 0000000..ad38b0d
--- /dev/null
+++ b/acispy/spectrum.py
@@ -0,0 +1,44 @@
+# Copyright (c) 2017 Weitian LI <liweitianux@live.com>
+# MIT license
+
+"""
+Chandra ACIS spectrum.
+"""
+
+
+from astropy.io import fits
+
+from acis import ACIS
+
+
+class Spectrum:
+ """
+ Chandra ACIS spectrum
+ """
+ def __init__(self, filepath):
+ self.filepath = filepath
+ self.fitsobj = fits.open(filepath)
+ ext_spec = self.fitsobj["SPECTRUM"]
+ self.header = ext_spec.header
+ # spectral data
+ self.channel = ext_spec.data.columns["CHANNEL"].array
+ self.counts = ext_spec.data.columns["COUNTS"].array
+ # spectral keywords
+ self.EXPOSURE = self.header.get("EXPOSURE")
+ self.BACKSCAL = self.header.get("BACKSCAL")
+
+ def calc_pb_flux(self, elow=9500, ehigh=12000):
+ """
+ Calculate the particle background flux:
+ flux = counts / exposure / area
+
+ Parameters
+ ----------
+ elow, ehigh : float, optional
+ Lower and upper energy limit for the particle background.
+ """
+ chlow = ACIS.energy2channel(elow)
+ chhigh = ACIS.energy2channel(ehigh)
+ counts = self.counts[(chlow-1):chhigh].sum()
+ flux = counts / self.EXPOSURE / self.BACKSCAL
+ return flux