In order to determine how faint monitor window targets can be and still get any useful data, do a simple experiment of examining raw L0 image data for stars fainter than 10.2 mag observed in 8x8 readout mode. Simply sum up the image counts (without the background pixels) and do statistics.
import numpy as np
import matplotlib.pyplot as plt
from Chandra.Time import DateTime
from astropy.table import Table, vstack
from mica.archive import aca_l0
%matplotlib inline
# from Ska.Matplotlib import plot_cxctime
from Ska.DBI import DBI
from Ska.Matplotlib import plot_cxctime
dbh = DBI(dbi='sybase', server='sybase', user='aca_read')
/export/tom/anaconda/envs/ska/lib/python2.7/site-packages/setuptools-5.8-py2.7.egg/pkg_resources.py:1032: UserWarning: /home/aldcroft/.python-eggs is writable by group/others and vulnerable to attack when used with get_resource_filename. Consider a more secure location (set with .set_extraction_path or the PYTHON_EGG_CACHE environment variable).
tstart= DateTime('2013:001').secs
tstop = DateTime('2014:180').secs
stars = dbh.fetchall('select obsid, slot, kalman_tstart, kalman_tstop, aoacmag_median, aoacmag_5th, aoacmag_95th, '
'n_samples, not_tracking_samples'
' from trak_stats_data'
' where obsid > 50000 and'
' aoacmag_median > 10.2 and'
' not_tracking_samples < 300 and'
' n_samples > 3000 and'
' kalman_tstart > {} AND kalman_tstart < {}'.format(tstart, tstop))
len(stars)
110
stars = Table(stars)
stars[:5]
obsid | slot | kalman_tstart | kalman_tstop | aoacmag_median | aoacmag_5th | aoacmag_95th | n_samples | not_tracking_samples |
---|---|---|---|---|---|---|---|---|
54020 | 7 | 474534529.716 | 474549080.617 | 10.25 | 10.1875 | 10.3125 | 14195 | 0 |
53992 | 4 | 475685399.778 | 475690582.178 | 10.5625 | 10.5 | 10.75 | 5055 | 8 |
53992 | 6 | 475685399.778 | 475690582.178 | 10.25 | 10.1875 | 10.375 | 5055 | 0 |
53988 | 4 | 475704001.479 | 475710033.604 | 10.5625 | 10.5 | 10.6875 | 5885 | 72 |
53988 | 6 | 475704001.479 | 475710033.604 | 10.25 | 10.25 | 10.375 | 5885 | 0 |
def get_img0(star):
files = aca_l0.get_files(start=star['kalman_tstart'], stop=star['kalman_tstop'], slots=[star['slot']], imgsize=[8])
if not files:
raise ValueError('No 8x8')
tables = []
for fn in files:
tables.append(Table.read(fn))
if len(tables) > 1:
t = vstack(tables, metadata_conflicts='silent')
else:
t = tables[0]
ok = (t['TIME'] > star['kalman_tstart']) & (t['TIME'] < star['kalman_tstop']) & (t['QUALITY'] == 0)
t = t[ok]
return t
def sum_imgraw(imr):
for r0 in (0, 7):
for c0 in (0, 1, 6, 7):
imr[:, r0, c0] = 0
return np.sum(imr.reshape(-1, 64), axis=1)
stars['p1'] = -1
stars['p5'] = -1
stars['p16'] = -1
stars['p50'] = -1
stars['p84'] = -1
stars['p95'] = -1
stars['p99'] = -1
stars['sigma'] = -1
for star in stars:
obsid = star['obsid']
print 'Processing obsid {}'.format(obsid),
try:
img0 = get_img0(star)
except Exception as err:
print('Error {}'.format(err))
continue
flux = sum_imgraw(img0['IMGRAW'])
p1, p5, p16, p50, p84, p95, p99 = np.percentile(flux, [1, 5, 16, 50, 84, 95, 99])
star['p1'] = p1
star['p5'] = p5
star['p16'] = p16
star['p50'] = p50
star['p84'] = p84
star['p95'] = p95
star['p99'] = p99
star['sigma'] = (p84 - p16) * 5 / 1.7 # 5 e-/DN / (1.7 sec/readout)
print(' sigma={:.1f} e-/sec'.format(star['sigma']))
Processing obsid 54020 sigma=426.0 e-/sec Processing obsid 53992 Error No 8x8 Processing obsid 53992 Error No 8x8 Processing obsid 53988 sigma=426.0 e-/sec Processing obsid 53988 sigma=499.0 e-/sec Processing obsid 53986 Error No 8x8 Processing obsid 53977 Error No 8x8 Processing obsid 53975 sigma=370.0 e-/sec Processing obsid 53970 sigma=824.0 e-/sec Processing obsid 53970 sigma=768.0 e-/sec Processing obsid 53970 sigma=743.0 e-/sec Processing obsid 53969 Error No 8x8 Processing obsid 53969 Error No 8x8 Processing obsid 53969 Error No 8x8 Processing obsid 53966 sigma=623.0 e-/sec Processing obsid 53966 sigma=991.0 e-/sec Processing obsid 53965 sigma=550.0 e-/sec Processing obsid 53963 Error No 8x8 Processing obsid 53960 sigma=991.0 e-/sec Processing obsid 53960 sigma=543.0 e-/sec Processing obsid 53959 sigma=977.0 e-/sec Processing obsid 53959 sigma=541.0 e-/sec Processing obsid 53957 Error No 8x8 Processing obsid 53957 Error No 8x8 Processing obsid 53955 Error No 8x8 Processing obsid 53955 Error No 8x8 Processing obsid 53954 sigma=824.0 e-/sec Processing obsid 53953 sigma=570.0 e-/sec Processing obsid 53953 sigma=376.0 e-/sec Processing obsid 53953 sigma=709.0 e-/sec Processing obsid 53949 Error No 8x8 Processing obsid 53949 Error No 8x8 Processing obsid 53949 Error No 8x8 Processing obsid 53945 sigma=305.0 e-/sec Processing obsid 53945 sigma=526.0 e-/sec Processing obsid 53944 sigma=433.0 e-/sec Processing obsid 53942 Error No 8x8 Processing obsid 53941 Error No 8x8 Processing obsid 53941 Error No 8x8 Processing obsid 53938 sigma=358.0 e-/sec Processing obsid 53938 sigma=429.0 e-/sec Processing obsid 53935 Error No 8x8 Processing obsid 53934 Error No 8x8 Processing obsid 53934 Error No 8x8 Processing obsid 53878 sigma=370.0 e-/sec Processing obsid 53854 sigma=744.0 e-/sec Processing obsid 53846 sigma=517.0 e-/sec Processing obsid 53846 sigma=850.0 e-/sec Processing obsid 53839 sigma=482.0 e-/sec Processing obsid 53835 sigma=508.0 e-/sec Processing obsid 53828 sigma=776.0 e-/sec Processing obsid 53828 sigma=647.0 e-/sec Processing obsid 53814 sigma=1017.0 e-/sec Processing obsid 53789 sigma=360.0 e-/sec Processing obsid 53762 sigma=391.0 e-/sec Processing obsid 53762 sigma=557.0 e-/sec Processing obsid 53760 sigma=592.0 e-/sec Processing obsid 53734 sigma=793.0 e-/sec Processing obsid 53731 sigma=770.0 e-/sec Processing obsid 53709 sigma=636.0 e-/sec Processing obsid 53673 sigma=469.0 e-/sec Processing obsid 53673 sigma=620.0 e-/sec Processing obsid 53655 sigma=1229.0 e-/sec Processing obsid 53604 sigma=323.0 e-/sec Processing obsid 53593 sigma=356.0 e-/sec Processing obsid 53591 sigma=388.0 e-/sec Processing obsid 53582 sigma=300.0 e-/sec Processing obsid 53552 sigma=467.0 e-/sec Processing obsid 53537 sigma=385.0 e-/sec Processing obsid 53533 sigma=429.0 e-/sec Processing obsid 53510 sigma=532.0 e-/sec Processing obsid 53503 sigma=405.0 e-/sec Processing obsid 53486 sigma=423.0 e-/sec Processing obsid 53471 sigma=540.0 e-/sec Processing obsid 53466 sigma=485.0 e-/sec Processing obsid 53466 sigma=461.0 e-/sec Processing obsid 53465 sigma=394.0 e-/sec Processing obsid 53449 sigma=374.0 e-/sec Processing obsid 53439 sigma=758.0 e-/sec Processing obsid 53387 sigma=581.0 e-/sec Processing obsid 53364 sigma=661.0 e-/sec Processing obsid 53360 sigma=535.0 e-/sec Processing obsid 53334 sigma=472.0 e-/sec Processing obsid 53306 sigma=438.0 e-/sec Processing obsid 53288 sigma=426.0 e-/sec Processing obsid 53262 sigma=250.0 e-/sec Processing obsid 53256 sigma=500.0 e-/sec Processing obsid 53249 sigma=481.0 e-/sec Processing obsid 53199 sigma=425.0 e-/sec Processing obsid 53139 sigma=849.0 e-/sec Processing obsid 53093 sigma=369.0 e-/sec Processing obsid 53088 sigma=488.0 e-/sec Processing obsid 53052 sigma=491.0 e-/sec Processing obsid 53045 sigma=509.0 e-/sec Processing obsid 53031 sigma=522.0 e-/sec Processing obsid 53024 sigma=376.0 e-/sec Processing obsid 52996 sigma=650.0 e-/sec Processing obsid 52955 sigma=429.0 e-/sec Processing obsid 52923 sigma=770.0 e-/sec Processing obsid 52910 sigma=273.0 e-/sec Processing obsid 52910 sigma=561.0 e-/sec Processing obsid 52876 sigma=322.0 e-/sec Processing obsid 52865 sigma=632.0 e-/sec Processing obsid 52865 sigma=1167.0 e-/sec Processing obsid 52852 sigma=314.0 e-/sec Processing obsid 52826 sigma=564.0 e-/sec Processing obsid 52809 sigma=426.0 e-/sec Processing obsid 52806 sigma=405.0 e-/sec Processing obsid 52753 sigma=770.0 e-/sec Processing obsid 52747 sigma=276.0 e-/sec
stars[:10]
obsid | slot | kalman_tstart | kalman_tstop | aoacmag_median | aoacmag_5th | aoacmag_95th | n_samples | not_tracking_samples | p1 | p5 | p16 | p50 | p84 | p95 | p99 | sigma |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
54020 | 7 | 474534529.716 | 474549080.617 | 10.25 | 10.1875 | 10.3125 | 14195 | 0 | 2095 | 2128 | 2161 | 2240 | 2306 | 2343 | 2374 | 426 |
53992 | 4 | 475685399.778 | 475690582.178 | 10.5625 | 10.5 | 10.75 | 5055 | 8 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 |
53992 | 6 | 475685399.778 | 475690582.178 | 10.25 | 10.1875 | 10.375 | 5055 | 0 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 |
53988 | 4 | 475704001.479 | 475710033.604 | 10.5625 | 10.5 | 10.6875 | 5885 | 72 | 1612 | 1656 | 1707 | 1758 | 1852 | 1917 | 1961 | 426 |
53988 | 6 | 475704001.479 | 475710033.604 | 10.25 | 10.25 | 10.375 | 5885 | 0 | 2127 | 2154 | 2185 | 2238 | 2354 | 2403 | 2435 | 499 |
53986 | 4 | 475907558.29 | 475919136.69 | 10.25 | 10.1875 | 10.375 | 11295 | 56 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 |
53977 | 5 | 476157596.803 | 476162756.654 | 10.75 | 10.625 | 10.8125 | 5033 | 114 | -1 | -1 | -1 | -1 | -1 | -1 | -1 | -1 |
53975 | 5 | 476166087.904 | 476171822.779 | 10.6875 | 10.625 | 10.8125 | 5595 | 80 | 1312 | 1339 | 1372 | 1430 | 1498 | 1535 | 1581 | 370 |
53970 | 4 | 476384216.115 | 476389433.366 | 10.625 | 10.4375 | 10.6875 | 5089 | 0 | 1378 | 1428 | 1487 | 1602 | 1767 | 1864 | 1998 | 824 |
53970 | 6 | 476384216.115 | 476389433.366 | 10.4375 | 10.375 | 10.9375 | 5089 | 174 | 1797 | 1828 | 1889 | 1980 | 2150 | 2236 | 2315 | 768 |
ok = stars['sigma'] > 0
sigma = stars['sigma'][ok]
plt.hist(sigma, bins=20)
plt.title('1-$\sigma$ noise in integrated counts)')
plt.xlabel('Noise (e-/sec)');
np.mean(sigma)
551.48314606741576