-->

Tuesday, November 20, 2012

The Peculiar Balmer Decrement of SN 2009ip: Constraints on Circumstellar Geometry

 [ arXiv ]



SN2009ip is a particularly interesting "supernova" since it left a bright remnant behind, indicating that it was instead a supernova impostor.  The 2012B event, a brightening in late September 2012, looked like it might be a "genuine supernova", but maybe not.  Have a look at the other papers on this object: http://arxiv.org/abs/1210.3568, http://arxiv.org/abs/1210.3347, http://arxiv.org/abs/1209.6320.

A few folks at CU, primarily Guy, had acquired some spectra of SN2009ip right around the 2012B event.  We had a quick look at the data and decided there was something really interesting in it that other groups (who probably had more complete data) had overlooked.

The most interesting single point we noted was a peculiar "Balmer Decrement" (which is the ratio of H-alpha to H-beta).  The normal Balmer decrement is ~3 (2.87 at n~103 and 10000K), but we observed a decrement of ~1.4 (and so did others, see e.g. http://users.northnet.com.au/~bohlsen/Nova/sn2009ip.htm).

This Balmer decrement is weird, because all normal effects will increase rather than decrease the Balmer decrement.

  • Interstellar reddening - affects the blue more than the red, therefore should decrease H-beta relative to H-alpha.  Of course, the reddening towards SN2009ip has been measured to be quite low.
  • Line Splitting due to optical depth in the H-beta line (photons become "trapped" in the n=4 state and "escape" via Paschen-alpha and H-alpha) - but this only serves to decrease H-beta and increase H-alpha.  This is known as "Case C recombination" (see Xu et al 1992, Figure 1)
So what can increase the Balmer decrement?  Two possibilities: 
  1. Hydrogen reaches local densities above 1013 cm-3: above these densities, it reaches collisional equilibrium with the gas and adopts the gas temperature.  At 10000K, H-beta will be a few times brighter than H-alpha [to-do: put exactly how much brighter...]
  2. H-alpha becomes optically thick, while H-beta remains optically thin.  This is essentially a geometric argument, and is explored a little in the text.  If H-alpha becomes optically thick, more hydrogen won't increase the H-alpha brightness, but if H-beta remains optically thin, more hydrogen will increase its brightness.  Simple argument, and it hasn't been fully explored yet (does the radiative transfer work, or does the "Case-C" situation kick in too hard first?), but it is a plausible alternative.

If you want to see my calculations in action, check out the ipython notebook performing the calculations.

In case you're interested in Case C recombination, here's a first step: a hydrogen level diagram with levels connected by the (sum of the) Einstein A values between the relevant levels (from http://physics.nist.gov/cgi-bin/ASD/lines1.pl, generated with https://github.com/keflavich/energyleveldiagrams).


Sunday, November 18, 2012

Short timescale variability in Orion? Nope.

I attempted to use TripleSpec finder / guider images to search for variability  on short (~5s) timescales in the Orion Nebula region.  This project was an offshoot of the related http://adamginsburg.blogspot.com/2012/10/using-guider-images-to-achieve.html.  I successfully matched the images using a particular catalog & the ever-cool astrometry.net with a great deal of assistance from Dustin Lang and some from David Hogg.  I'll post details of that process later; it proved challenging but will DEFINITELY be useful again in the future.  Short story: I had to build my own indices, then fit twice - once for the first match, once after distortion was applied to re-extract the sources in the right location.

Conveniently, one of the products output by the astrometry.net code is ra,dec locations and fluxes (background subtracted) for all of the identified sources.  So, I used a simple script to match all sources within 2" of a known source from my input catalog and generate timestream data.  It took about an hour of processing (nested for loops - awful, but the only obvious choice at first.  Half of the time was probably file IO anyway).

I now had a few hundred timestreams of Orion stars.  At this point, I hadn't done any kind of quality control, which was obviously a problem because the Trapezium and neighbors were clearly saturated.  Also, there are known hot pixels that will drive some stars into weird behavior.  But I ignored all of that.  All I did for quality control was reject stars with more than about 5% missing data.

I elected to go straight for PCA analysis.  I assumed the primary component (the most correlated component) would be from the atmosphere, which is almost certainly true.  Subtracting that off (shown in the notebook linked below) left some clearly correlated components left over - some of these are instrumental, others are correlated backgrounds, others are correlated saturation levels.  I don't honestly know what all of the components are, but I DO know that correlated components are very unlikely to be intrinsic phenomena - stellar brightness isn't correlated.

So I tried to cut out ALL correlated components.  However, I think in the process I probably removed any useful information - even un-correlated signal should probably have a high amplitude (if it's interesting...) that will get removed through the process I used.  Nonetheless, I probably have some upper limits on the 5s scale variability of these stars in K-band.  Not enough to do anything like asteroseismology, but it was worth a day's effort.

Here's the ipython notebook (gist & nbviewer) for those interested:
https://gist.github.com/4109329
http://nbviewer.ipython.org/4109329/

Thursday, October 11, 2012

Planned Serendipity: H-alpha maps around O-stars

Plenty of O-stars have been observed in H-alpha because they're in star forming regions.  But there are plenty of others - runaways and the like - that haven't.  A survey of these stars may turn up nearby ionized features.  We may find externally illuminated AGB stars, allowing for determination of their ejecta composition with diagnostic lines that are usually unexcited and unavailable.  We may find bipolar ejection nebulae or planetary nebulae with peculiar illumination patterns because they are not centrally lit.

A good starting point & justification for this survey would be to estimate the chance of a coincidence (within 5 pc?  10 pc?) of an O star and an AGB star given purely random sampling.  Based on the detection of SBW 2 in Carina, I think the odds must be pretty good.

Friday, October 5, 2012

Using Guider images to achieve ~arcsecond pointing accuracy

One of the challenges of observing in the near-IR / optical is field identification. In the case of the Apache Point Observatory 3.5m, the "raw" pointing - i.e., if you enter a coordinate and press "slew" - is usually good to within ~1 arcminute. However, once you're on the target field, it's up to you as the observer to identify the exact location within the 5x5' field to observe.

This proves quite challenging in crowded fields, especially with rotation. It is far more difficult, though, in sparse fields when your target is a faint emission line feature - there will be no corresponding light in your guider image. But you still want ~arcsecond pointing accuracy.

I think this can be achieved by using the astrometry.net source recognition and field identification tools, but highly constrained to be within ~10' of the target field. The WCS coordinates would then be applied to the guider image, and the target location identified and translated into a telescope pointing offset.

This technique is probably not needed for most spectroscopic observations (e.g., of bright point sources). However, for slit-scan-mapping or observations of faint point sources, this approach provides the opportunity to do fast-switching with a bright calibration star so that telluric correction can be provided on a short (~5-10 minute) timescale, as is needed for truly accurate calibration.

Wednesday, September 26, 2012

Galactic H2CO Densitometry I: Pilot survey of Ultracompact HII regions and methodology

[ ADS ] [ Full Version ]
We examined 24 UCHII regions using the GBT to observe the 2-2 line of ortho-Formaldehyde. We measured the local gas density and compared to GMCs and other galaxies. We found densities in GMCs that are 1-2 orders of magnitude higher than the mean density in GMCs, implying that extreme overdensities are common even in "quiescent" (non-star-forming) GMCs. This work was almost entirely my own, but was seeded by Jeremy Darling Some highlight figures from the paper:
A sample spectrum. On the top, black is Formaldehyde 1-1, red is Formaldehyde 2-2. On the bottom, blue is 13CO, red is H77α, black is H110α.
Histograms of GMC mean densities and the densities measured directly from our survey. Note that even for "serendipitious" line of sight GMCs, the densities are MUCH higher than typical GMC densities.
Comparison of the measured column densities of formaldehyde and inferred number densities of H2.

Thursday, September 20, 2012

The optically bright post-AGB population of the LMC

[ ADS ] [ arXiv ]
E. van Aarle, H. Van Winckel, T. Lloyd Evans, T. Ueta, P. R. Wood, and A. G. Ginsburg
A catalog of post-AGB stars in the LMC, useful in particular because they are at a common distance. Post-AGB stars are quite luminous (> 1000 LO usually), so easily detected in the LMC.

My contribution to this work was years ago; I worked on the SAGE project for a few months at the University of Denver with Toshiya Ueta. I generated a catalog of post-AGB objects and an online catalog with automatic SED plotter. It was a pretty neat project, but I left before I was able to convince others that my catalog was definitive; nonetheless it was eventually used in this publication. As an aside, that was my first foray into data languages, and I ended up using the Perl Data Language long before I learned of python and before I got a free IDL license.

Characterizing Precursors to Stellar Clusters with Herschel

[ ADS ] [ arXiv ]
C. Battersby, J. Bally, A. Ginsburg, J.-P. Bernard, C. Brunt, G.A. Fuller, P. Martin, S. Molinari, J. Mottram, N. Peretto, L. Testi, M.A. Thompson 2011
The paper includes a careful characterization of the properties of both dense and diffuse regions within the two Hi-Gal Science Demonstration Phase fields (l=30 and l=59). It demonstrated that star formation tracers are more common at higher temperatures, and that IRDCs exist on both the near and far side of the galaxy, where the difference between near and far is around 5-7 kpc.

I helped develop the iterative background subtraction method and contributed to the discussion and conclusions; most of the work was Cara's but my experience with iterative flux estimation from the BGPS pipeline proved useful.

Wednesday, September 19, 2012

IMF and number of massive stars per cluster

Some experiments determining what fraction of massive stars form in clusters above a given mass, given a few assumptions about the cluster initial mas function. I'm sure this has been done in papers, but I needed to do the exercise for myself.... and I don't know which papers off the top of my head (but I should add them to this post if/when I find them).
In [1]:
from agpy import imf
figsize(12,8)
reg_gal2cel requires coords & pyregion
Region Photometry requires pyregion
cubes.py requires pyregion for getspec_reg
cubes.py requires pywcs for some subimage_integ,aper_wordl2pix,getspec, and coords_in_image
In [2]:
# From a Schecter mass function with some cutoff, generate a collection of clusters
# Then, determine whether "most" massive stars are in massive clusters or if they're evenly distributed with mass
mrange = logspace(1,5,1000) # from 10 msun to million msun clusters
schec = imf.modified_schechter(mrange,m0=1e4,m1=100) # cutoff at low mass
figure()
loglog(mrange,schec,label="Modified Schecter $m_1=10^2$, $m_0=10^4$")
loglog(mrange,imf.schechter(mrange,m0=1e5),label="Schecter $m_0=10^5$")
loglog(mrange,imf.schechter(mrange,m0=1e4),label="Schecter $m_0=10^4$")
xlabel("Cluster Mass")
ylabel("Fractional Number of Clusters")
legend(loc='best')
Out [2]:
<matplotlib.legend.Legend at 0x10e81b950>
In [3]:
nclusters = 50000
clusters = []
obcount = []
ocount = []
mclusters = []
for rn in np.random.rand(nclusters):
mcluster = imf.inverse_imf(rn, massfunc=imf.modified_schechter, mmax=1e7, mmin=10, m1=100, m0=1e5)
cluster = imf.make_cluster(mcluster, silent=True)
obcount.append((cluster>8).sum())
ocount.append((cluster>20).sum())
mclusters.append(mcluster)
clusters.append(cluster)
In [4]:
close(1)
figure(1,figsize=(18,10)); clf()
plot(sort(mclusters),np.cumsum(np.array(obcount)[argsort(mclusters)])/1./np.sum(obcount),'.',label="$M_0=10^5$ OB Mod Schec")
plot(sort(mclusters),np.cumsum(np.array(ocount)[argsort(mclusters)])/1./np.sum(ocount),'.',label="$M_0=10^5$ O Mod Schec")
semilogx(sort(mclusters),np.array(mclusters)*0+0.5,'r--')
xlabel("Cluster Mass $M_i$")
ylabel("Fraction of Clusters with $M<M_i$")
Out [4]:
<matplotlib.text.Text at 0x10e71b5d0>
In [5]:
imf.inverse_imf(0.99, massfunc=imf.modified_schechter, m1=100, m0=1e5, mmin=10, mmax=1e7)
Out [5]:
7619.788265653388
In [6]:
max(mclusters)
Out [6]:
311567.90346958087
In [7]:
np.cumsum(obcount)
Out [7]:
array([     1,      1,      1, ..., 307506, 307506, 307594])
In [8]:
argsort(mclusters)
Out [8]:
array([40808, 22411, 41334, ..., 23973, 21675, 31040])
In [9]:
nclusters = 50000
Sclusters = []
Sobcount = []
Socount = []
Smclusters = []
for rn in np.random.rand(nclusters):
mcluster = imf.inverse_imf(rn, massfunc='schechter', mmax=1e7, mmin=10, m0=1e5)
cluster = imf.make_cluster(mcluster, silent=True)
Sobcount.append((cluster>8).sum())
Socount.append((cluster>20).sum())
Smclusters.append(mcluster)
Sclusters.append(cluster)
In [10]:
fig = figure(1)
plot(sort(Smclusters),np.cumsum(np.array(Sobcount)[argsort(Smclusters)])/1./np.sum(Sobcount),'.',label="$M_0=10^5$ OB Schechter")
plot(sort(Smclusters),np.cumsum(np.array(Socount)[argsort(Smclusters)])/1./np.sum(Socount),'.',label="$M_0=10^5$ O Schechter")
legend(loc='best')
Out [10]:
<matplotlib.legend.Legend at 0x19f9b3810>
In [11]:
nclusters = 50000
S4clusters = []
S4obcount = []
S4ocount = []
S4mclusters = []
for rn in np.random.rand(nclusters):
mcluster = imf.inverse_imf(rn, massfunc='schechter', mmax=1e6, mmin=10, m0=1e4)
cluster = imf.make_cluster(mcluster, silent=True)
S4obcount.append((cluster>8).sum())
S4ocount.append((cluster>20).sum())
S4mclusters.append(mcluster)
S4clusters.append(cluster)
In [12]:
fig = figure(1)
plot(sort(S4mclusters),np.cumsum(np.array(S4obcount)[argsort(S4mclusters)])/1./np.sum(S4obcount),'.',label="$M_0=10^4$ OB Schechter")
plot(sort(S4mclusters),np.cumsum(np.array(S4ocount)[argsort(S4mclusters)])/1./np.sum(S4ocount),'.',label="$M_0=10^4$ O Schechter")
legend(loc='best')
Out [12]:
<matplotlib.legend.Legend at 0x10e7fead0>
In [13]:
sum(S4mclusters)
Out [13]:
3125486.249456272
In [14]:
# this scenario is where the smallest cluster is a single star, so the exponential turnover is at 1 msun, and the minimum cluster mass is 0.1 msun
# need to go to larger numbers for this one, of course
nclusters = 100000
allclusters = []
allobcount = []
allocount = []
allmclusters = []
for rn in np.random.rand(nclusters):
mcluster = imf.inverse_imf(rn, massfunc=imf.modified_schechter, mmax=1e8, mmin=0.1, m0=1e4, m1=1)
cluster = imf.make_cluster(mcluster, silent=True)
allobcount.append((cluster>8).sum())
allocount.append((cluster>20).sum())
allmclusters.append(mcluster)
allclusters.append(cluster)
In [15]:
fig = figure(1)
plot(sort(allmclusters),np.cumsum(np.array(allobcount)[argsort(allmclusters)])/1./np.sum(allobcount),'.',label="$M_0=10^4 M_1=1$ OB Mod Schechter")
plot(sort(allmclusters),np.cumsum(np.array(allocount)[argsort(allmclusters)])/1./np.sum(allocount),'.',label="$M_0=10^4 M_1=1$ O Mod Schechter")
legend(loc='best')
Out [15]:
<matplotlib.legend.Legend at 0x19f9ddd10>
In [16]:
A = argmin(abs(0.5-np.cumsum(np.array(allobcount)[argsort(allmclusters)])/1./np.sum(allobcount)))
sort(allmclusters)[A]
A = argmin(abs(0.5-np.cumsum(np.array(allocount)[argsort(allmclusters)])/1./np.sum(allocount)))
sort(allmclusters)[A]
Out [16]:
689.71604560136109
In [21]:
%pastebin 0-16 raw=False
Out [21]:
u'https://gist.github.com/3751918'