
legacy 2.43-2 (11 July 2019)


	Overview
	=======================================================================
	This legacy release has been created to back port critical bug fixes 
	for instruments supported by earlier versions of CRUSH, but for which
	support was dropped starting the 2.50 releases.
	Namely, ASzCA, p-ArTeMiS, MAKO, MAKO-2, MUSTANG-2, and SHARC (gen 1).
	All other CRUSH supported instruments should continue to use the
	current (>= 2.50) releases, which continue to be the state-of-the-art
	data reduction solutions for far-infrared and sumbillimeter imaging.
	=======================================================================

	
	[FIX] {SOFIA} Default coordinate epoch of J2000.0 is assumed when
        coordinate epoch is unknown (-9999.0, or "UNKNOWN" in FITS). (back port
	from master).

	[FIX] Remove misguided sqrt() in Instrument.standardWeights() / 
	sampleWeights(). (back port from master)

	[FIX] Fix motion signal processing. (back port from master)

	[FIX] Fix channel lookup duplicate IDs. (back port from master)

	[TWEAK] Prepended 'legacy' to version reporting, and checking for
	v2/legacy.version.

	[CODE] {ElevationCouplingCurve} Change default serialVersionUID to 
	generated. (back port from master)

	[PRUNE] Removed unneeded 'tools' and all of 'test' package.

	[PRUNE] Removed 'devel' packages. (No development will take place on
	legacy branch).

	[PRUNE] {GISMO} Deactivate 'read.sae' option. (back port from master)

	[BUILD] Fix wrong closing tag for <move>. (back port from master)

	[CHANGE] Removed immature support for SOFIA/HIMES.

	[CONFIG] {LABOCA} Opacities and calibration tables up to and including
	2018-08-26.


2.43-1 (27 December 2018)
 

	Overview
	=======================================================================
	This release fixes the broken Windows deployment (both installer and 
	runner scripts), and bumps preliminary SOFIA/HIRMES support to v.7 
	simulated data. It also restores APEX (LABOCA & SABOCA) photometry 
	mode, which was quite incapacitated yet again.
	For developers, this version now offers an API for incorporating CRUSH
	into another Java application.
	=======================================================================

	[BUG] {APEX} {Photometry} merging of photometry data from multithreaded
	reductions did not carry over the individual scan fluxes, which then
	resulted in a NullPointerException being thrown. Fixed.

	[BUG] {Windows} The Windows 'autoconf.bat' had malformed 'if' 
	conditions causing all CRUSH programs to fail. Fixed.

	[BUG] {Windows} Self-extracting .EXE archive was badly broken. It 
	neither contained the self-extraction code, not the AUTORUN directive. 
	Both have been fixed.

	[NEW] Gains derived from phases now allow to be processed as needed
	before applying. For example, for LABOCA photometry the gains
	derived for nod-left and nod-right are now arithmetic averaged to
	provide a scan-averaged gain. 

	[NEW] Decorrelation ('correlated.<?>' options) now have a new 
	sub-option 'uniform' that can be set to force using uniform gains
	regardless of what gains may have been loaded or calculated prior.
	(The new option is used by the updated LABOCA configs.) 

	[NEW] {HIRMES} Updated to work with v.7 sims, complete with correlated
	noise on MUX rows ('mux') and cols ('pins'), as well as separated
	temperature and sky correlated noise and using blind pixels for
	cleaner speparation of these in imaging mode.

	[FIX] Robust weighting ('weighting.method=robust') was broken due to
	a bad overall weight normalization (sum vs. average). Fixed.

	[FIX] {APEX} {Photometry} A mistake in the chopped configuration file
	has incapacitated chopped photometry. Fixed ('gains.span' corrected
	to 'array.span' + 'boxes.span' + 'cables.span')

	[FIX] AdaptiveFilter spectral source profile calculation to take
	modulation (e.g. by chopping/waveplate) into account.

	[FIX] Crossing time calculations to take only scanning motion into
	account. Modulation is accounted for separately.

	[FIX] Spectral axis CRVAL header value in FITS was not cast to the
	proper units, but was written in their natural SI units. Now fixed.

	[CHANGE] {APEX} {photometry} Disable removing 1/f drifts from phase 
	signals. It's really unnecessary (since phases are always differenced
	anyway) and can cause unwanted discontinuities. (Corresponding code
	is also discarded).

	[CHANGE] Renamed options: 
	  'phaseweights' -> 'weighting.phases'
	  'phasedespike' -> 'despike.phases' 

	[TWEAK] A few checks and initialization steps migrated from 
	CRUSH.main() to the constructor. This should make it easier to invoke
	CRUSH from another Java program...

	[API] Change CRUSH API to make it easier to call CRUSH from another
	Java program.

	[DOC] {README.api} New markdown/HTML for describing the top-level 
	CRUSH API 

	[DOC] {CRUSH.java} Inline javadoc for the public CRUSH API.

	[CONFIG] Restructured configurations. Now static (non-iteration 
	specific) settings for 'extended' mode are in 'extended.cfg'. Options
	for reducing 'chopped' data are in 'chopped.cfg', 'lab' mode
	configurations are in 'lab.cfg', and options for 'derive' (deriving
	pixel data) are in 'derive.cfg'. 

	[CONFIG] {LABOCA} Updated configurations, especially for chopped & 
	faint modes, to favor solution stability. Chopped configuration 
	has been more thoroughly revised, especially on how gains are dealt 
	with.

	[CODE] Change static variable CRUSH.workPath into proper instance 
	variable.




2.42-1 (12 Oct 2018) 


	Overview
	======================================================================
	This release adds forward compatibility to Java 10 & 11, and fixes some
	old problems with the Linux binary packages (.rpm and .deb). 
	CRUSH Now supports all reduction modes for HIRMES simulations (v.6), 
	complete with physical array layout & dimensions and predicted optical 
	dispersion parameters. Data products for SOFIA cameras (HAWC+ and 
	HIRMES) now have FITS fully populated FITS headers, compliant with 
	Rev. G of the DCS prescription. Under the hood many loose end have been
	tied up. Many updates to documentation...
	======================================================================

	[NEW] New option 'gzip' can be used to write GZIP'ed output, when
	it is available (e.g. FITS outputs).

	[NEW] {HIRMES} Now works with Version 6 simulated data, supporting all
	modes (spectral imaging, lo/mid/hi-res spectroscopy) with physical
	pixel layouts and realistic dispersion models (grating and FPI).

	[NEW] {SOFIA} New option 'organization' allows to specify what value
	is written for the FITS 'ORIGIN' keyword (SOFIA requirement). Its 
	default value is set to 'Sofia Data Processing System', as requested.

	[NEW] {SOFIA} All required SOFIA header values are now written to the 
        primary FITS headers, according to the DSC specification available.

	[NEW] {HAWC+} Extra scanning keywords are parsed and migrated to
	scan and image headers.

	[NEW] {HIRMES} Now processing SOFIA spectral (heterodyne) header keys.

	[NEW] {HIRMES} Spectral cubes can generate further data products, such
	as a flattened image ('write.flattened'), aggregate 1D field spectra 
	('write.fieldspec'), and EPS/PNG plots thereof ('write.fieldspec.png',
	'write.fieldspec.eps'). The plot appearance can be further tweaked
	with a set of further options.

	[NEW] {HIRMES} Spectral cubes can now generate PNG previews, either
	as an average or median (if 'write.png.median' is specified) image over
	the spectral slices.

	[NEW] {HIRMES} Default spectral resolution is now set to be 2x the
	spectral detector channel spacing.

	[FIX] RPM and Debian (.deb) packages were broken for several reasons.
	(Scripts did not follow symlinks in /usr/bin properly; missing app
	icons for 'show'; and the fits.jar provided by Debian's libfits-java
	crashes when trying to retrieve version info).
	Hopefully all of them are now fixed.
	
	[FIX] POSIX runner scripts did not follow links correctly. 
	Unfortunately, the simple solution of using `readlink -f` does not
	work on MacOS X. Hence a more verbose bash workaround is needed.

	[FIX] {SCUBA-2} LST calculation had a rate flaw, which is now fixed.
	It could have resulted in poorly calculated Alt/Az coordinates.

	[FIX] {pixelmap} Pixelmap (formerly known as beammap) functionality was 
	broken. 

        [FIX] {HAWC+} Change interpretation of the value of PIXSCAL 
	(array.pixelSize) to correspond to the mean lateral pixel size used in 
	the reduction.

	[FIX] Command line arguments weren't correctly recorded via the ARGn
	FITS keywords. Fixed.

	[FIX] {SOFIA} All required SOFIA header keys are written.

	[FIX] {SOFIA} Removed obsolete SOFIA header keys and the corresponding
	log entries.

	FIX] {SOFIA} PWV_END just repeated PWV_STA. fixed.

	[FIX] {HIRMES} Include coordinate information in FITS headers generated
	by Spectral Cubes.

	[FIX] Many fixes to deep copy calls all over, which were partially
	shallow in several cases. Some specific examples are shown below.

	[FIX] CorrelatedSignal copies shared dependents. However, the method
	was not called anywhere, so the bug had no impact.
	
	[FIX] {SOFIA} {HAWC+} {HIRMES} {SCUBA-2} Some frame copies, used when
	downsampling were partially shallow, and could result in corruptions.

	[FIX] {HAWC+} {HIRMES} Fixed shallow copies of some instrument 
	properties (one instance could overwrite the properties of another
	instance). Fixed with proper deep copy().

	[FIX] {HIRMES} Parsing of imaging/spectroscopy modes from FITS header

        [CHANGE] 'beammap' has been renamed to the more descriptive 'pixelmap'.
	However, the 'beammap' option will continue to be recognized for the 
	foreseeable future... 
 
	[TWEAK] FITS keyword 'DATE' added to reflect the file creation date.

	[TWEAK] {SOFIA} SOFIA header keys updated to match Rev. G. of the DCS
	keyword presciption & dictionary.

	[TWEAK] Use sigmyne.com for checking for new releases and in 
	console info output.

	[CONFIG] {LABOCA} Updated skydip and calibrator data with 2018 April
	run values.

	[CONFIG] {HAWC+} Additional HAWC keys migrated from original headers.
        These are chop-nod-pol keywords that have nothing to do with CRUSH but
        SOFIA counts them as required keywords, so there they go marching...

	[DOC] Updated '-help' information for HAWC+ & HIRMES.

	[DOC] {HAWC+} {HIRMES} Common SOFIA-specific documentation is now 
        separated into README.sofia. The instrumenr-specific manuals for HAWC+
	and HIRMES, are now just differential guides on top.

	[CODE] Source does not compile under Java 10/11 due to a javac compiler
	bug (JDK-8211004). If you do want to build CRUSH from source, you
	can use any JDK version 1.6 -- 1.8, or an alternate compiler (such 
	as Eclipse's ecj or IBM's java). Hopefully the guys at Oracle will fix
	the bug soon...

	[CODE] Java 11+ compatibility: Class.newInstance() is deprecated in 
	Java 11. Updated source to use Class.getConstructor().newInstance() 
	instead.

	[CODE] SourceModel.getWorkingCopy(*) -> copy(*) from CopiableContent<>.
	And, the copies are made more complete (keeping references to external
	objects, including base).

	[CODE] Got rid of a whole lot of equals()/hashCode() override. It's
	best to just treat most CRUSH objects as unique, which aren't equal
	unless the same exact object. The exception to the rule are some ID 
	classes.

	[CODE] Integration.comments changed String -> StringBuffer for more
	efficient handling.

	[PACKAGE] Updated RPM and Debian (.deb) package JRE requirements to
	headless, with full JRE recommended.

	[PACKAGE] RPM and Debian (.deb) packages now distinguish between 
	required packages and recommended packages (gnuplot, commons-compress).
	The latter are not essential to CRUSH per se, but enable certain
	advanced features. Being 'recommended' mean they will be installed
	along CRUSH if possible, but that CRUSH can be installed without them
	too, if they are problematic.

	[PACKAGE] RPM and Debian (.deb) packages have been updated with
	dependecies provided by other packages (e.g. commons-compress.jar) 
	which are no longer bundled when available otherwise.
	('fits.jar' continues to be included --  the RPM an nom-tam-fits 
	package in the repos is old [1.15.1], while the Debian package has
	a broken version lookup -- thus neither are suitable for use by CRUSH.)


2.42-a1	(7 May 2018)


	Overview
	======================================================================
	This release introduces initial support for HIRMES. Currently it 
	support imaging-mode simulated data only, but support for mid and-
	hi-resolution spectroscopic imaging will be added gradually over 
	May/June 2018.
	======================================================================


	[NEW] {HIRMES} Created initial HIRMES classes to process simulated
	imaging data. (More coming soon!)

	[NEW] {SOFIA} New option 'aperture' can define an effective aperture
	diameter (m) for wavelength-dependent beam FWHM calculation.

	[CHANGE] Updated startup scripts to not use -d32/-d64 option any more,
	The options were meaningful for Solaris only, and have been deprecated 
        in Java 10, where their attempted use results in an error.

	[FIX] {SOFIA} Default wavelength-dependent beam size calculation had
	wrong units. Fixed.

	[FIX] {SpectralCube} Spectral unit determination had quotes around
	String variable name. Fixed.

	[TWEAK] {SOFIA} Discriminating scans that are in a different band 
	moved from SofiaCamera -> HAWC+. (Since HIRMES allows to combine
	data taken at slightly different wavelengths).

	[DOC] {HIRMES} Initial HIRMES README documentation.

	[DOC] {HAWC+} Slight corrections to the HAWC+ documentation.

	[CODE] CRUSH.getSourceModelInstance now takes a list of scans as
	argument so it can make decisions based on the data (e.g. spectral
	cubes for multiwavelength data, or polarization maps for data with
	multiple HWP angles...)

	[CODE] Cleaner & more robust Task process(...) call hierarchy.



2.41-3	(19 March 2018)


	Overwiew
	======================================================================
	This (second) update fixes the accidentally broken LABOCA photomety,
	and refines HAWC+ configurations.
	======================================================================

	[BUG] {APEX} {photometry} Fixed ClassCastException in 
	ApexChoppedPhotometry.

	[FIX] {jnum} Workaround for Exceptions when trying to write NaN's into 
	FITs header from failed source fits. The offending keys are simply
	skipped.

	[CONFIG] {HAWC+} Now includes FS14 flux jump table (v1) from Darren
	Dowell.

	[CONFIG] {HAWC+} Updated FS15 flux jump table (v3) from Darren Dowell.
	
	[CONFIG] {HAWC+} New FS13 per-pixel flux jumps table (v1) from
	Darren Dowell.

	[JNUM] Uses jnum 0.20-4.


2.41-2 (2 March 2018)


	Overview
	======================================================================
	This updated 2.41 release brings new flatfields and a slightly tweaked
	calibration for HAWC+, as well as workarounds for some of the 
	astrometry glitches experienced during FS15. It also fixes a sign error
	with non-central SIBS-Y positioning, and eliminates a flux reporting
	discrepancy between console output and the logs. All relatively minor
	changes, which nonetheless elevate the HAWC+ reduction quality.
	======================================================================

	[FIX] There was a discrepancy between integrated fluxes reported 
	on console and those logged, due to differences in taking smoothing
	into account. Now reconciled.

	[FIX] {HAWC+} Discard frames with zero RA & DEC or zero NonSiderealRA 
	& NonSiderealDec columns (astrometry glitches). 

	[FIX] More error-proof FITS header editing for possibly invalid (NaN) 
	coordinates.

	[FIX] {HAWC+} SIBS_Y was not interpreted correctly, thus referencing
	non-central pointing to the wrong location on the array. Fixed and
	updated configurations to match.

	[CHANGE] {HAWC+} Reported SIBS offset is now referred to the
	uncorrected pointing center for the mean chopper position.

	[CONFIG] FS15 flux jump corrections using Darren's table. 

	[CONFIG] {HAWC+} Added FS14 (May 2017) pointing corrections.
	
	[CONFIG] {HAWC+} Static flagging and calibration updated with FS15
	flatfields and flux logging fix. Only band A calibration is 
	significantly different from FS14...

	[CONFIG] {HAWC+} New FS15 flatfields for 170mK operating temperature.
	(These are now default starting F443).
	


2.41-1 (31 January 2018)


	Overview
	=======================================================================
	This release fixes several unfortunate bugs in the 2.40 releases that
	completely crippled 'deep' mode reduction, and APEX/LABOCA photometry,
	affected 'show' and 'imagetool' and were to blame for various other 
	problems. There are also new feautures and impromevemts, including
	an up-to-date configuration for HAWC+ including FS15 support. 	 
	=======================================================================


	[BUG] A bug in the jnum subpackage broke 'weighting.scans' behavior
	when the 'rms' method was used (in 'deep' mode). Fixed.

	[BUG] Map sizing could run into a nasty Exception when the 'perimeter'
	was used (without 'noslim'). Fixed.

	[BUG] {APEX} Photometry reductions badly broken, for multiple reasons.
	First, chopper positions weren't used due ot a coding bug. Second,
	the chopper-phase decorrelation was fatally disabled.

	[BUG] There was a nasty bug from 2.40 that broke 'deep' reductions 
	completely, and affected other reductions slightly.

	[BUG] Another equally nasty bug made filter corrections (also used
	in 'deep') completely garbage. Fixed.

	[BUG] {show} Smoothed units were mishandled in all 2.40 releases in
	show and imagetool. It's been fixed and cleaned up. 
  
        [NEW] Source-model specific loggable quantities, such as 'skydip.tau'
        (for skydips) 'phot.flux' (for photometry, e.g. LABOCA).

	[NEW] {HAWC+} New options 'los' and 'roll' (short for 'correlated.los'
	and 'correlated.roll' respectively) introduced for removing 
	correlations with the seconds derivatives of the telescope 
	line-of-sight (LOS) angle, and the aircraft roll angle. As such, they
	may be useful for removing signals indiced by pitch/roll type
	accelerations.

	[NEW] {HAWC+} The option 'peakflux' may be used to switch to peak
	flux calibration from the default aperture flux calibration. 
	Recommended for point-sources only.

	[NEW] Packaging with OpenJDK compilation (instead of Eclipse's 
	compiler), and new packaging script, and now bundling compression
	libs also.

	[NEW] New option 'pointing.radius' (in arcsec) can be used to restrict 
	the pointing fit to a circular area around the nominal center position.
	It may be useful for deriving ponting in a 'crowded' field.
	
	[NEW] {SOFIA} Implemented a correction scheme for gyro drifts, based
	on the guide-star relock data stored in the FITS headers. The 
	correction is not enabled by default (as it can be troublesome when
	the relock data itself is garbage), but can be enabled explicitly
	via the 'gyrocorrect' option. You can also set a limit to how big
	of a gyro drift can be corrected via the 'gyrocorrect.max' option
	(in arcsecs). Drifts bigger than that will be ignored for single
	scan reductions (assuming they are flukes), but dropped from multi-scan
	reductions (in case they are in fact bad).

	[NEW] {CSO} Maitau lookups now use offline lookup instead of 
	contacting MaiTau server. Since the CSO has retired, we have all the
	MaiTau data there will ever be. The files with the 225GHz and 350um
	polynomial coefficients are set by the 'maitau.225GHz' and
	'maitau.350um' keywords. (The 'maitau.server' keyword is obsoleted.)

	[DEPRECATE] The option 'whiten.below' (which allowed to amplify 
        spectral bins) has been deprecated as it is fundamentally troublesome.

	[CHANGE] 'weighting.scans' now reports relative noise factors on
	console rather than relative weighs. (It's easier to work with...)

	[FIX] {crushtools} Image processing tools (e.g. 'show', 'imagetool'
	or 'detect' have not recognised extended structure filtering by
	recen (>2.30) crush releases.

	[FIX] Integrated fluxes weren't reported correctly by the pointing
	fits.

	[FIX] source.filter using the FFT method was broken in 2.40
	due to a missing back transform and some other mishaps. Ooops.
	Luckily, the FFT method was not default... 

	[FIX] Some fixes to convolution filtering (used in deep mode).

	[FIX] {SHARC-2} default pixeldata path was incorrect.

	[TWEAK] Improved pointing fits now concetrate more on the central
	peak, can deal with negative peaks, and less likely to stall.

	[CONFIG] {LABOCA} Tau and calibration scaling data now up to and
	including 2017-09-17.

	[CONFIG] {HAWC+} Tweaked calibration for FS15 (Oct/Nov 2017) and
	forward (band A, D, E).

	[CONFIG] {HAWC+} Pointing corrections for FS15 (Oct/Nov 2017).

	[CONFIG] {HAWC+} Updated array geometry parameters for 2017-October
	flight series (the focal planes got a new suspension just before,
	so a change was expected.)

	[CONFIG] {chopped} Velocity clipping ('vclip') and downsampling
	are disabled by default for 'chopped' data.

	[CONFIG] {APEX} Configuration for chopped photometry data moved
	to 'apex/chopped.cfg'.
	
	[CONFIG] 'source.despike' disabled in deep mode. There is little
	evidence it's ever needed, and it can cause trouble in some cases
	if one isn't careful...

	[DOC] Updated 'README.rebuild' for new source package organization.
        (now in markdown format also).

	[PACKAGE] Apache compression libraries (commons-compress.jar) is now
	bundled in binary archives (tar.gz and exe), offering wider FITS
	compression support (not for all supported cameras though!).

	[PACKAGE] New simpler source package hierarchy for those who like to
	tinker with the code. (And an updated README.rebuild to go with it.) 

	[CODE] {FieldResponse} Can now set to use n'th derivative of the
	signal represented by the field value...

	[CODE] Better recognition of jansky unit specification even if 
	provided in the wrong case, e.g. as 'JY' or 'jy', or 'JANSKY'.



2.40-2 (11 October 2017)


	[FIX] Units with multiplier prefixed (e.g. 'mJy', 'GHz') were not
	handled properly, resulting in default scalings when used. Fixed.

	[FIX] 'Jy/pixel' units did not propagate to written maps. Fixed.

	[COSMETIC] Leftover HISTORY entry removed from FITS output maps.



2.40-1 (24 September 2017)


	Overview
	=====================================================================
	This major release brings a (a) a new package structure, and (b) a 
	complete overhaul of the underlying 2D imaging classes of CRUSH 
	(provided by the jnum subpackage).

	a. CRUSH is now distributed as separate binary and source packages. The
	source packages now also contain ant build files enabling a painless 
	complete rebuild from the source alone. The package hierarchy has been
	reorganized in a more logical way.

	b. The overhaul of the imaging classes consists of an enourmous amount 
        of changed code. The new imaging classes are better structured, more 
	powerful, and less bug-prone that the architecture they replace. Much 
	of the change should be transparent from a user's point of view, apart 
	from a few (very) minor fixes along the way.
	
	And, there is the usual round of fixes and improvements that come
	with a release. The PolKa module, especially, has seen major updates.
	=====================================================================

	[NEW] {Java} 'commons-compress.jar' and 'fits.jar' are now 
	automatically added to CLASSPATH on Linux from the standard Java
	libraries location from '/usr/share/java' if they exist there.

	[NEW] {PolKa} Implemented correction for instrumental polarization.

	[NEW] {PolKa} New option 'waveplate.tp' to explicitly select waveplate
	reconstruction from the total-power modulation signature. This option
	is mainly for use as an engineering option, since the method is
	automatically triggered when the waveplate information is not
	otherwise available.

	[DEPRECATE] 'source.filter.interpolation' is deprecated. Cubic spline
	is now default.

	[FIX] A bunch of potential bugs found and fixed with the help of
	FindBugs.

	[FIX] MakoModel distortion term lookup fixed to use Term instead of
	Parameter.

	[FIX] Suppressing non-essential messages from FITS (nom.tam.fits)
	library when header card comments are truncated.

	[CHANGE] {PolKa} Overhauled PolKa classes and algorithms, with improved
	and streamlined waveplate position calculation.

	[CHANGE] Option 'pointing=suggest' replaced with new option
	'pointing.suggest'. This allows applying pointing corrections via
	'pointing' AND deriving incremental corrections on top of that based
	on the apparent position of the source via 'pointing.suggest'.
	
	[TWEAK] Measured pointing offsets are now added to the scan HDU header
	for each input scan. For SOFIA, the suggested SIBS pixel increments are
	added also as SIBS_DX and SIBS_DY.

	[TWEAK] {PolKa} HWP filter leaves alone the polarization signal 
	entirely (skipping every 4th harmonic).

	[TWEAK] Improved control of FITS header ordering.

	[TWEAK] {HAWC+} Dropped redundant SCANSPEC keyword from scan HDU 
	headers, as these were identical to SCANID.
		
	[TWEAK] {SOFIA} Do not register repeated auxilliary files in the FITS
	header when processing multiple input scans.

	[CONFIG] {PolKa} Calibrated polarization angles, incidence phase, and
	instrumental polarization based on 2016 Moon data.

	[CONFIG] Source clipping and blanking disabled in 'bright.cfg'.

	[CONFIG] {SHARC2} {GISMO} Pointing reductions no longer suggest
	instant focus corrections, as these are irrelevant now.

	[CONFIG] {HAWC+} 'biaslines.gainrange' changed from -10:10 to 0.3:3.0,
	which helps avoid artifacts.
	
	[CONFIG] {HAWC+} 'jumpdata' disabled starting May 1, 2017, as
	improvements in the readout make it unecessary for newer data.

	[CODE] More potential bugs found and fixed with the help of Eclipse.
	(e.g. null pointers, hidden variables). Streamlined to avoud 
	unnecessary casts, tailored clone() return types, unnecessary else
	statements. 

	[CODE] SpectralCube modeling is in place (for HIRMES), largely sharing
	the tested 2D mapping code.

	[CODE] AstroData2D provides generalized methods for AstroModel2D's with
	a backing Data structure.

	[CODE] {AstroModel2D} write() methods with more generality...

	[CODE] Instrument.getSizeUnitValue() and getSizeName() replaced with
	Unit getSizeUnit().

	[CODE] Checking for 'filter' before 'weighting' in 
	Integration.process(task) did not work, but not really necessary
	anyway. Deleted.

	[CODE] Explicit Configurator.equals(String key) added and used
	by equals(Object) when appropriate.

	[CODE] FitsHeaderEditing and FitsHeaderParsing now provide common
	interfaces for FITS header manipulations etc.

	[CODE] Major revamp of jnum (Java Numerical) package, with improved
	2D image support, FFT classes, parsing of time/angle formats, parsing
	of spherical coordinates, 2D region classes, and more...

	[CODE] Class hierarchy is reorganized, moving all instrument 
	subpackages under crush.instrument, and all telescope subpackages
	under crush.telescope.

	[CODE] Deprecated Integration.getSequentialFFT()/getParallelFFT() in 
	favor of getFFT().

	[MAN] Updated UNIX-style man pages with runtime configuration info and
	new e-mail address for bug reports.

	[UPDATE] {FITS} nom.tam.fits libraries updated to 1.15.2.

	[PACKAGE] Re-organized package hierarchy. All configuration files are
	now under the 'config/' folder, all documentation is under the 
        'Documentation/' folder, JARs are under the 'lib/' folder. Installer
	scripts are under the 'Install/' folder.





2.34-3


	Overview
	=====================================================================
	The update provides minor fixes and improvements over the prior, and 
	an implementation of Bill Vacca's flux correction scheme for HAWC+, 
	and the implementation of Darren's flux-jump correction scheme.
	=====================================================================


	[NEW] {crushtools} Handling maps written in 'Jy/pixel' units.

	[NEW] Calibration using Bill Vacca's polynomial model is now
	available via the 'tau=atran' option. The polynomial coefficents are
	set via the 'atran.amcoeffs' and 'atran.altcoeffs' options. Simply
	specify the coefficients in increasing order, as a comma-separated
	list of values. The absolute calibration can be adjusted via the
	'atran.reference' option, which specifies the total transmission
	at the reference point (41 kft, 45 deg).

	[NEW] Flux jump correction using column data derived by Darren.
	The data file is specified via the new option 'jumpdata'.

	[FIX] {crushtools} Fixes to 'imagetool' etc.

	[FIX] Pointing did not work when mapping in 'focalplane' coordinates.
	Fixed.

	[FIX] {SOFIA} Pointing SIBS offset properly derotates by SI
	orientation.

	[FIX] Camera.getRotationAngle() returned NaN instead of the actual
	rotation angle. Fixed.

	[FIX] Global 'source.flatfield' option referred to hawc+/flatfield.cfg
        instead of just flatfield.cfg. Fixed.

	[FIX] {HAWC+} CRUSH could hang, when encountering errors, while being 
	run from the DRP pipeline using the 'drp' option enabling messaging.
	This was caused by an uncaught exception in the DRP messaging code.
	Should be fixed.

	[TWEAK] {HAWC+} Focal plane orientation switched s.t. it now more
	directly follows the SOFIA convention. As such the default rotation
	of HAWC+ is no longer upside-down (180) but near 0.

	[CONFIG] 'extended' mode rounds changed to 15 (from 20).

	[CONFIG] 'extended' mode 'blank' setting stays at S/N > 100.

	[CONFIG] {HAWC+} More lenient band A pixel noise cut (0.3:10).

	[CONFIG] {HAWC+} Use 'bright' setting for Mars and Jupiter, in band A
	only. 

	[CONFIG] 'source.flatfield' to skip decorrelating 'sky' separately
	from thermal gains, as it presumes the result that the flatfielding
	is supposed to provide.

	[CONFIG] {HAWC+} Adjusted calibration conversion factors for default
	'tau=pwvmodel' setting.

	[CONFIG] {HAWC+} Refined PWV-tau scaling relations.

	[CONFIG] {HAWC+} Updated array geometry and anticipated pointing 
	correction for May 2016, based on chop-nod and scan-mode pointing
	difference (new XMLs are based on the chop-nod pointing).




2.34-2 (22 February 2017)


	Overview
	======================================================================
	This update fixes two major bugs from recent releases, one that was
	responsible for sub-optimal 'faint' and 'deep' mode reductions, and 
	another that broke 'imagetool'. The release also includes improved 
        deployment onto Windows systems. The updated Windows batch files
	now provide the same functionality as the bash scripts under POSIX,
	including automatic Java configuration and user-level runtime 
	configurations. A new (experimental) 'install.bat', or the new .exe
	installer, can be used for installing CRUSH on Windows systems in a 
	standardized way. Finally, HAWC+ configurations have been tweaked 
	once again, providing improved calibration for the December 2016 
	commissioning run...
	======================================================================


	[BUG] Scan weighting based on map noise produced inverted weights. 
	This resulted in suboptimal 'faint' and 'deep' mode reductions. Fixed.

	[BUG] {imagetool} 'imagetool' was broken due to a badly placed line of 
	code. Fixed.

	[EXPERIMENTAL] {Windows} An executable Windows installer is also
	provided to make deployment on Windows simpler. It should normally be
	'Run As Administrator'. The installer is experiemntal, and is expected
	to become the standard way for deploying CRUSH onto Windows soon...

	[EXPERIMENTAL] {Windows} There is now an 'install.bat' script located 
        under the 'windows' sub-directory in crush, which can be used to 
        install crush on Windows computers in a standardized way. After 
        unpacking crush (from a ZIP file), users can run the 'install' script 
        as Administrator, to install crush under C:\Program Files\, add the 
        CRUSH executables to the default search path automatically, and add 
        the 'show' tool the Start Menu. If run not as Administrator, the 
        script performs an in-situ installation, without path manipulation or 
        Start Menu shortcut.

	[NEW] {HAWC+} New correlated modality 'sky' can be used to decorrelate
	on the common optical signal in addition to the common thermal signal.

	[NEW] New option 'sourcegains', can be used to merge the channel
	coupling constant into the channel gain variable, that is used for
	correlated noise removal. Incorporating the optical coupling into the
	correlated signal gains is useful for reducing skydips, when the
 	correlated noise is optically, and not thermally dominated. Therefore,
	this option is now default for skydip reductions. There is no obvious
	use case for the new option outside of skydips.

	[FIX] {HAWC+} Revised how the 'non-sidereal' property of scans is
	determined, even if real-time object coordinates are used at all times.
	Thanks to the fix, the scans from Dec 2016 and after can be reduced
	in non-equatorial coordinate systems. 

	[FIX] Workaround for bad OGIP1.0 long FITS header values, reverting
	to old CRUSH convention on these. Long HIERARCHs work, nonetheless...

	[FIX] Loading channel data (e.g. default flags) and flags before 
	establishing channel groups, divisions, and modalities.

	[FIX] {Windows} Windows batch wrapper script was broken. Fixed.

	[TWEAK] 'source.flatfield' is now a globally available option. However,
	currently it isn't fine tuned for any instrument, other than HAWC+.
	But, at least it can be...

	[TWEAK] {Windows} Updated Windows batch scripts now provide equivalent
	functionality to the UNIX shell scripts, such as automatic runtime
	configuration, and support for manual tweaks to runtime settings
	based on configuration files placed in 'C:\Program Data\crush\startup'
	or '%USERPROFILE%\.crush\startup' directories. Users can set startup
	variables such as JAVA, JVM, USEMB, and EXTRAOPTS. And, similarly to 
	the POSIX behavior, these folders can host any batch-file content that 
	will be called on before CRUSH is run.

	[TWEAK] Try drain the DRP message queue before exiting.

	[TWEAK] Downsampling always after vclipping. Before now explicit 
	downsampling preceded vclip, whereas automatic downsampling did not.
	There was no compelling reason for this difference, which could
	result in an unwanted difference if the same downsampling factor was
	given explicitly or chosen automatically.

	[TWEAK] Better initial tau guess for skydip fit.

	[TWEAK] 'connected' channel group renamed 'live', as it's more
	descriptive.

	[TWEAK] Dead channels are initialized with zero gain/weight defaults.
	This is just a safety measure to make sure they never contribute even
	if accidentally included.

	[TWEAK] Channel noise flagging now flags channels with default
	weights also. This is just a safety pin, as under normal circumstances
	alll channels should have proper noise weights derived before the
	noise flagging is called... 

	[TWEAK] {SOFIA} Don't force PWV as the default source of tau when
	tau is not set. This way opacity correction can be disabled via
	'-forget=tau', not only by setting tau explicitly to zero...

	[CONFIG] {HAWC+} The source flatfields produced via the 
	'source.flatfield' option now use unbiased maps, which do not attempt
	to recover extended emission forcibly. Such maps are better suited
	for unbiased gain estimation also.

	[CONFIG] {HAWC+} Skydips reduce with R0 only, since it's the least
	non-linear subarray.

	[CONFIG] {HAWC+} Updated pixel and beam sizes for all bands. The
	biggest change is for band C (4.23 --> 4.02 arcsec/pixel).

	[CONFIG] {HAWC+} Refined PWV-tau relations based on a more careful 
	selection of skydips. Updated calibrations.

	[COSMETIC] Updated icon set without outlines.

	[PACKAGE] {Windows} CRUSH is now distributed also as a .EXE installer
	for windows. It should typically be run 'As Administrator', although
	it will allow less-complete installations for non-privileged users also
	(without PATH manipulation or Start Menu icons).

	[PACKAGE] {Windows} ZIP archive now has all text files converted to
        DOS/Windows format (linebreaks).

	[CODE] Update e-mail address across files.



2.34-1 (20 January 2017)


	Overview
	=====================================================================
	This release fixes an unfortunate oops in 2.33 relating to an 
	unintended botch-up in the pixel numbering (which is used, e.g. by
	the 'flag' option). The bug affected LABOCA reductions the most.
	It also brings many improvements and fine-tunings for HAWC+, based on
	the December 2016 commissioning flights, including an 8% blind
	calibration in all bands...
	=====================================================================


	[BUG] {2.33-1} The dual approach to pixel IDs, introduced in 2.33-1, 
	was flawed, and produced unpredictable behaviour for all instruments
	with integer pixel ids (most supported instruments). Fixed.

	[NEW] {HAWC+} A default atmospheric altitude dependent extinction 
	model has been added to provide a typical PWV estimate based on altitude
	alone. The model is activated via the 'pwvmodel' option. Its parameters
	are the typical PWV value (microns) at 41 kilofeer set by 'pwv41k' and
	the scale height set by 'pwvscale' in kilofeet.

	[NEW] Ability to set configuration options conditionally based on
	environment variables or Java properties. E.g.:

	   env.[HOME]		# if HOME exists as an environment variable
	   env.[!HOME]		# if HOME does not exists in the environment
	   env.[HOSTNAME?bar]	# if HOSTNAME is set to 'bar', case independent
	   env.[HOSTNAME?!bar]	# if HOSTNAME is not set to 'bar'.
	
	Similarly, for Java properties:

	   property.[user.name?bar]	# if user.name is 'bar'
	   property.[user.name?!bar]	# if user.name is not 'bar'
	   

	[NEW] Ability to assign the values of FITS keys to CRUSH configuration
	options directly via the 'fits.assign.<key>' option'. E.g.

	  fits.assign.OBJECT object

        will set the CRUSH option 'object' to the same value as the OBJECT
	keyword in the FITS. The assignments take place when the main FITS
	header is read.

	[NEW] New option 'source.coupling.s2n' sets an S/N range for what
 	points in the map contribute to the estimation of coupling gains when 
	the 'source.coupling' option is enabled.

	[NEW] New option 'vclip.strict' will discard any frames outside of the
	acceptable speed range, rather than the default approach of simply 
	flagging slow motion for source modeling only.

	[NEW] {HAWC+} Automatic subarray gain renormalization after loading
	flatfield data.

	[NEW] Flag pixels based on integer field values and ranges. E.g. 
	HawcPlusPixels based on MUX (e.g. 'flag.mux=10,25-27') or rows
	(e.g. 'flag.row=0,11').
 
	[NEW] {HAWC+} New option 'chopper.shift' allows shifting the chopper
	signal by the specified number of frames forward relative to the data.
	The detector transitions clearly lag the chopper by about 2 samples, so
	'chopper.shift=2' compensates for the observed lag.

	[NEW] {HAWC+} New option 'chopper.tolerance' allows setting a
	tolerance for the chopper position in arcsec. If the actual chopper
	distance is not within the nominal chopper amplitude, then the
	exposure will not be used to avoid smearing.

	[NEW] {HAWC+} New option 'chopper.invert' flips the direction
	associated with the analog chopper R/S signals. There was such an
	apparent sign change between April and October 2016.

	[NEW] {skydip} Option 'skydip.attempts' now controls up to how many 
	times CRUSH will attempt to fit the skydip data before giving up.

	[NEW] Conditional settings based on total observing time using
	'obstime.[]'. The condition inside the brackets is a minimum or maximum
	observing time in seconds, e.g.:

		obstime.[>60] 
		obstime.[<60]

	The first activates for datasets longer than 1 minute, the second for
	datasets shorter than a minute. Nesting obstime conditions is possible,
	however, it is evaluated only once after all scans are read. Thus it 
	will have no effect if activated later (e.g. if nested inside an
	iteration.[] option).

	[NEW] Pointing/calibration results are now stored in the scan HDU 
	headers.

	[NEW] {SOFIA} Added some loggable quantities, such as 'tel.focus'
	and 'inst.wave', and many, many more... 

	[NEW] {skydip} The skydip resolution is now set by the new option
	'skydip.grid' to avoid conflict with setting mapping grid sizes.

	[FIX] {HAWC+} Workaround for unknown (-9999.0) or missing PWV data,
	assuming PWV=0 for such scans.

	[FIX] {HAWC+} Do not set null frames during reading. It can mess 
	things us later when data is realigned. Instead, incomplete frames
	are nulled duting validation.

	[FIX] {HAWC+} Do not notch if DIAG_HZ is invalid.

	[FIX] Median noise weight determination was flawed, using data 
	outside of the available range. Fortunately, the flawed code was
	probably never used.

	[FIX] 'source.coupling' was broken. Fixed.

	[FIX] {skydip} Convergence exceptions are now caught...

	[FIX] {skydip} Handling of NaN elevation coordinates.

	[FIX] FITS keyword-based conditions that with no matching FITS keys 
	in the header broke the keyword checking loop. Fixed.

	[FIX] CRUSH_NO_UPDATE_CHECK and CRUSH_NO_VM_CHECK environment variables
	weren't used as advertised. Fixed.

	[FIX] {HAWC+} Some early scans did not reduce with missing TELRA / 
	TELDEC. Fixed.

	[FIX] {SOFIA} {skydip} Ambient temperature was passed in Celsius 
	instead of Kelvin to the skydip model, resulting in bogus Jy/K value in
	the fit. Fixed.

	[TWEAK] Better treatment of chopped scans, for vclip, downsampling and
	filter corrections.

	[TWEAK] {SOFIA} Pointing fits now report SIBS offset instead of TA
	offset (in pixels).

	[TWEAK] {skydip} Acceptable tau range changed to 0:10. (Was 0:1).

	[TWEAK] {SOFIA} Scan lookup by flight and scan numbers now works with
	the more standard SOFIA convention as well as the old HAWC+ convention
	used in April and October 2016.

	[TWEAK] {SOFIA} Improved reporting of errors encountered while 
	accessing the FITS input.

	[CONFIG] {LABOCA} RCPs updated to include 2016 RCP data (2016-06 and
	2016-10) and tau lookup up to and including 2016-10-19.

	[CONFIG] {HAWC+} 'weighting.noiserange' re-extended to 0.3:10 to
	produce less flagging on bright sources (e.g. Mars). The range
	extension should not affect lower S/N data adversely...

	[CONFIG] {HAWC+} Skydip fitting to assume 'kelvin' scale based on
	specified 'jansky' and 'K2Jy' conversions. This helps derive less
	uncertain skydip taus, albeit at the price of some strong (and 
	hopefully correct) assumptions... 

	[CONFIG] {HAWC+} Default map pixelization ('grid' option) set closer
	to providing 5 pixels per beam in each band. 

	[CONFIG] {HAWC+} Configuration for processing demodulated chop-scan
	data.

	[CONFIG] Disable 'source.nosync' when writing timestreams, covariances
	or spectra.

	[CONFIG] {HAWC+} Pointing corrections based on Uranus (Flight 354).

	[CONFIG] {HAWC+} Updated calibrations for bands A,C,D,E including 
	approximate PWV-tau scaling relations based on Oct/Dec data. With it
	CRUSH seems to yield ~8% rms blind calibration in all bands.

	[CONFIG] {HAWC+} Incorporated optical pixel couplings derived from
	OMC-1 rasters.

	[CONFIG] {HAWC+} Updated band A and band D geometries based on flights
	353 and 354, respectively.

	[CONFIG] {HAWC+} Short (<40s) scans are reduced with a shorter 1/f
	stability timescale. This makes for cleaner focus reductions.

	[CONFIG] {HAWC+} Do not decorrelate chopper for skydips. (CHOPPING is
	erroneously set to T when running intcals during skydips -- during
	2016-12.)

	[CONFIG] {SOFIA} Reduced smoothing of telescope position data for
	velocity and acceleration clipping (1.0 --> 0.1 seconds).

	[CONFIG] {HAWC+} Real-time object coordinates (rtoc) are assumed to be
	default starting Oct 2016, obsoleting the use of the NONSIDE FITS 
	keyword, which was not determined automatically anyway. It is a robust
	solution going forward.

	[CONFIG] {HAWC+} Automatic skydip reductions based on OBSMODE or 
	DIAGMODE keywords, if available (i.e. starting Nov 2016).

	[CODE] Added superflous cast to 'instrument.new Fork()' in 
	GismoIntegration and HawcPlusIntegration, to avoid VerifyError when
	compiled by javac (seems like a compiler bug).

	[CODE] Fixed failed upper bound inference for javac build, by adding
	explicit upper bounds to declarations.

	[CODE] Removed unnecessary generic type PixelType from Camera.

	[CODE] HWPFilter made independent of PolKa in preparation for using
	with HAWC+ also.

	[CODE] Typical scanning speeds are estimated through a robust mean, 
	rather than a median before.

	[CODE] {HAWC+} When loading pixel (flatfield) data, kill all pixels
	with bad coupling...

	[CODE] Some cleanup on weight flagging...

	[CODE] Flagging of channels/frames only through method calls for
	better overall consistency.

	[CODE] Removed an archaic sourceGain field from Instrument which was
	a relic of SHARC-2.

	[CODE] {HAWC+} Added subarray channel groups for easy access of 
	the subarrays...

	[CODE] Deprecated unused method of average map filter correction.

	[CODE] Some refactoring for more representative method names.

	[CODE] C <--> K temperature conversions using 'Constant.zeroCelsius' 
	everywhere.



2.33-1 (22 October 2016)


	Overview
	=====================================================================
	This major release brings a long list of fixes and stability
	improvements, with a special focus on SOFIA/HAWC+. HAWC+ is now fully
	configured to work with the October 2016 commissioning flight data.
	Among the new features is user-specific Java/startup configuration,
	source masking, a new despiking option, smarter channel flagging and
	grouping options, new messaging architecture, and verbosity control. 
	===================================================================== 

	[NEW] {HAWC+} Parsing and reporting gyro drift magnitudes when reading
	scans.

	[NEW] New option 'mask' allows to flag out data around sources (e.g.
	bright sources). The argument is a path to a file with the same catalog
	format as usual (see example.mask).

	[NEW] Options 'flag' and 'group' now work both with channel IDs as well
	as fixed indices (usually starting from 1), and ranges specified with
	both conventions.

	[NEW] New option 'despike.block'. When set spikes will flag out an
	entire 'drifts' block of data, not just a single sample. This may be
	useful when spikes are due to discontinuities in the timestream.

	[NEW] {HAWC+} Gyro drift corrections are listed on console when reading
	scans.

	[NEW] {SOFIA} Locating scans by flight and scan numbers.

	[NEW] {SOFIA} Pointing now suggests corrections to the XML TA (optical)
	axis pixel location. 

	[NEW] {HAWC+} New option 'rtoc' to specify that the FITS has real-time
	object coordinates, regardless of whether the source is sidereal or
	not. This provides a manual override before EPHRA/EPHDEC (or ERA/EDEC)
	is implemented by Steve for the header...

	[NEW] User-specific user startup configuration is now possible on 
	POSIX/UNIX (incl. MacOS) by editing an appropriate file inside the
        corresponding '~/.crush2/startup/<progname>/' directory. These files 
	are shell (bash) snipplets that are sources right before Java/CRUSH is 
	invoked. For example, placing the following lines into
        '~/.crush2/startup/crush/myconfig.conf':

	  EXTRAOPTS="$EXTRAOPTS -Djava.awt.headless=true"
	  CRUSH_NO_UPDATE_CHECK="1"
	  
	will add headless mode to the current Java runtime options, and will
	disable update checking on startup -- for reductions ('crush' 
	executable) only, but not affecting the other tools (like 'show').

	[NEW] New options 'quiet' and 'veryquiet' can turn off most console
	output. 'quiet' will still display results (such as from pointing),
	while 'veryquiet' will report only basic status updates and 
	notifications (e.g. about data products), but without reporting 
	results.

	[NEW] Automatic update checking can be disabled by setting the shell
	variable CRUSH_NO_UPDATE_CHECK (to any value) before CRUSH is started.

	[NEW] Automatic VM checking on startup can be disabled by setting the
	shell variable CRUSH_NO_VM_CHECK (to any value) before CRUSH is 
	started. Beware though, that VM checking is useful for reporting when
	CRUSH is being run by an unsuitanble Java implementation (such as gij).

	[FIX] {Skydip} Skydips were broken after the update of the underlying 
	fitting code a few versions back. Now fixed.
	
	[FIX] NEFD reporting on console did not include per-channel gains
	(source gains including filter response). Now they do.

	[FIX] {HAWC+} Recovery from missing nonsidereal coordinates.

	[FIX] {HAWC+} Handling of null messages to the DRP pipeline.

	[FIX] Gains for fixed gain-modalities were estimated anyway. Fixed.

	[FIX] {HAWC+} Changed handling of reference coordinates, to mean
	object center, when real-time object coordinates are available...

	[FIX] {HAWC+} Boresight pixel position had switched x/y. Fixed.

	[FIX] {HAWC+} TELRA/TELDEC --> boresight, OBSRA/OBSDEC --> requested.

	[FIX] {HAWC+} Fixed broken 'lab' mode reductions.

	[FIX] {HAWC+} Improved translation of unknown SOFIA header values 
	between code and FITS.

	[FIX] Initialize coordinate search ranges with first coordinate value
	instead of positive and negative inifinities. The change is a robust 
	fix against potential issues with handling empty ranges...

	[FIX] Additional check for NaN coordinates when preparing source maps.
	Samples with NaN coordinate data will be flagged for exclusion.

	[FIX] {HAWC+} Requested equatorial and boresight equatorial DEC 
	coordinates parsed with units applied twice. Fixed.

	[FIX] CRUSH could hang if an unexpected error occurs at initialization,
	such as source map creation. Fixed.

	[FIX] {Java} Run CRUSH in headless mode (-Djava.awt.headless=true) to
	avoid issues with PNG generation if or when Java is headless (without 
	display mouse or keyboard present).

	[FIX] {FITS} Long HISTORY entries ended up producing corrupted FITS 
	files (due to a bug in the nom.tam.fits libraries). A workaround has
	been added to break long history entries into multiple lines. Wrapped
	lines start with "... " for easier human recognition...

	[FIX] {HAWC+} OBSRA/OBSDEC to serve as primary source of scan 
	coordinates instead of TELRA/TELDEC.

	[FIX] {HAWC+} Nearly all warning/error messages are now propagated to
	the DRP, with the traces added as DEBUG messages. Suggestions are also
	sent to the DRP as DEBUG messages.

	[FIX] {HAWC+} Missing header string values now automatically take 
	'UNKNOWN' for further processing.

	[FIX] {HAWC+} TELESCOP keyword did not parse properly from input files 
	due to a typo in the code. Fixed.

	[FIX] {HAWC+} Added AOR_IDs, and other IDs back into the image header.

	[CHANGE] More consistent output file naming for scans/integrations.

	[CHANGE] {SHARC-2} Pointing and focus check no longer suggests UIP
	corrections. These are irrelevant since the CSO is closed down... :-(
	
	[CHANGE] Update and VM checking takes place after instrument 
	initialization when possible, allowing to propagate the resulting 
	messages according to the instrument's own method.

	[TWEAK] Fixed channel indices can always be used as IDs for lookups.

	[TWEAK] {SOFIA} Improved and cleaner guessing of scan reference 
	coordinates using OBSRA/OBSDEC, or OBJRA/OBJDEC, or TELRA/TELDEC, or 
	real-time object coordinates, or initial scan position -- based on 
	what's really available and valid...

	[CONFIG] {LABOCA} Updated lookup tables with most current data. Tau
	lookup up to 2016-05-20, calibrator table up to 2016-10-19.

	[CONFIG] {HAWC+} updated geometry (rotations), band-C pixel scale 
	(4.23"/pix) and beam (9.5"), bands C & E initial calibrations on 
	Neptune. Current timing shift is 20 ms.

	[CONFIG] {HAWC+} PNG thumbnail generation ('write.png' option) disabled
	whenever DRP messaging is enabled ('drp' option), to avoid hangs due to
	internal Java errors when running in the DRP automatic pipeline (e.g.
	resulting from unexpected X-server disconnection).

	[UPDATE] {FITS} nom.tam.fits library updated to 1.15.1, solving long
	history (and other comment-like cards) problems from before. 

	[COSMETIC] {FITS} default log level set for warnings and above. Info
	messages from nom.tam.fits will not be reported.

	[COSMETIC] Failure to read a scan now produces a warning (with no 
	trace) rather than the error (with trace) before.

	[CODE] Most text inputs now use LineParser for consistent parsing and
	error handling.

	[CODE] Complete overhaul of messaging architecture that allows routing
	all messages as needed (including source processing fragments). Many
	hundreds of lines of non-critical code have been changed. It is
	possible that some of the formatting of console output may look strange
	as a result...

	

2.32-1 (29 June 2016)


	Overview
	======================================================================
	The release provides out-of-the-box support for Spring 2016 
	commissioning flight data of SOFIA/HAWC+. It also brings improved
	support for PolKa (now with calibrated polarization angles!). For APEX
	cameras it now uses PVW values when stored in the MONITOR table as the
	default source of tau. And, the latest FITS libraries (1.14.3) restore 
	Java 6 compatibility.
	Lots of fixes, improvements, and under-the-hood code changes, as usual.
	======================================================================

	[BUG] {PolKa} Total intensity map 'I' was constructed icomplete from 
	Q,U and N. fixed.

	[BUG] {notch} There was an infinite loop in the notch filter code (used
	by MAKO-2 only?) Fixed.

	[NEW] {HAWC+} Non-linear response modeling.

	[NEW] {APEX} Automatic detection of non-sidereal scans, in which the
	tracked object is moving w.r.t the celestial frame. When available,
	CRUSH now uses the MCRVALn column data that contains the real-time
	object position.

	[NEW] {APEX} Tau setting defaults to PWV, when PWV is stored in the
	MONITOR table. 

	[NEW] Ability to condense covariance matrix output to unflagged 'live'
	channels only, using the 'write.covar.condensed' option.

	[DEPRECATE] The option 'gains.span' is obsoleted. one should use 
	'subscans.merge' instead.

	[CHANGE] {HAWC+} Flatfield output (produced via 'write.flatfield')
	now contains HDUs for the R and T nonlinearity coefficients also...

	[CHANGE] {PolKa} The 'waveplate.regulate' option has been renamed to
	'waveplate.recalc' with an optional argument. Without the argument the
	waveplate angle is interpolated (linearly) between the timestamped
	reference crossings. If the argument is set to 'uniform', then a 
	uniform waveplate frequency is assumed and fitted to the data (same as 
	the deprecated 'waveplate.regulate' option.

	[CHANGE] 'scramble' option randomly exchanges pixel positions to 
	produce noise maps with smeared source flux (a jackknife alternative).
	Now works with all instruments. (Previously only APEX cameras were 
	supported, with a simpler mirroring only...)

	[CHANGE] Long FITS keyword/values now use the more standard (OGIP 1.0) 
	convention for long FITS keywords, relying on CONTINUE keys, rather 
	than CRUSH's own convention earlier. However, CRUSH will continue to 
	recognise images written in its own long string convention... 

	[CHANGE] 'perimeter' option for faster map sizing using only a set of
	pixels on the instrument's perimeter now supports the value 'auto'. 
	When used it will determine the optimal number of sections to use for
	the perimeter calculation. This setting is now default.

	[FIX] {FITS} Updated nom-tam-fits library (1.14.3) can once again deal
	with variable length columns in binary tables (such as APEX MONITOR 
	tables), and restores Java 1.6 compatibility. 

	[FIX] {SOFIA} Workaround for invalid (-9999.0) OBSRA/OBSDEC, 
	TELRA/TELDEC, and EQUINOX (in some May HAWC+ data). 

	[FIX] Comparing scans based on IDs instead of serial numbers. Serial
	numbers may not be available at all observatories...

	[FIX] Naming of coupled modes is now unique. (Previously, these were
	named exactly like their parent modes...).

	[FIX] {PolKa} Analyzer grid position in FITS is recognized both as 
	'X', 'Y' and as 'H', 'V'.

	[FIX] Fixed inconsistent frameset use for source map sizing, indexing
	update and sync (e.g. the inclusion of velocity clipped frames). Fixed.

	[FIX] Map lookup, update and sync could operate on different sets
	of pixels as pixels got flagged/unflagged. Fixed.	

	[TWEAK] 'subscans.merge' and 'segment' may be used together now, 
	allowing to re-arrange scan data into arbitrary-sized chunks...

	[TWEAK] Bootstrapping pixel weights (when reading scans) now uses
	differential weighting method always. It is robust with dirty signals

	[TWEAK] {SCUBA-2} More efficient scan reads, eliminating intermediate
	storage and loading detector data sirectly into CRUSH's data 
	structures.
	
	[TWEAK] {HAWC+} Reduced RAM overhead when reading scans -- using
	low-lever read to move data from FITS directly to CRUSH data 
	structures.

	[DEBUG] Java information printed to console in 'debug' mode.

	[CODE] Adapted for new jnum.data.fitting minimization API. Skydip 
	fitting, MAKO resonance ID fitting, and MAKO distortion fitting are 
	affected.

	[CODE] {APEX} Simplified scan file search, looking for uncompressed
	and various compressed (.gz, .xz, .Z, .bz2, .zip) FITS files that 
	match...

	[CODE] Non-linear response implementation.

	[CODE] Cleanup: deleted unused left-over constructors from Response 
	and subclasses.

	[CODE] HDURowReader, for processing FITS row-by-row, seems to be
	working and thread safe. However, it cannot handle compressed FITS 
	files. Also, there is likely little or no performance advantage for
	using more than 1 thread, in general...

	[CODE] Shifting frames pulled up ahead frame validation. This way 
	validation works with the timing-fixed data.

	[CODE] Time shifting can shift more quantities beyond just the detector
	timestream depending on each instrument's needs and implementation.
	
	[CODE] Frame validation improved s.t. invalid frames are nulled as
	the integration is validating.

	[CODE] Faster map index lookup.

	[CODE] Map sizing has been slightly tweaked. Should be more robust and
	a little more generalized for different source map classes...

	[CODE] Map setup and indexing, and various smaller methods moved
	upstream from SourceMap to ScalarMap.

	[PACKAGE] ZIP archive may have been out of date w.r.t the tarball
	in the past. Fixed.

	[CONFIG] {SCUBA-2} Disable 'subscans.merge' by default.

	[CONFIG] {PolKA} Reinstated default analyzer grid angles...

	[CONFIG] Moon is now assumed to be a 'bright' source for all 
	instruments, by default.



2.31-1 (20 April 2016)

	
	Overview
	======================================================================
	This release fixes a major bug in the accounting of the degrees of
	freedom (used in noise weighting). It also fixes a less severe issue 
	with gradient removal, and brings LABOCA photometry reductions back 
	from the brink, with a significant improvement on the previous best! 
        Improved SCUBA-2 configuration, and SHARC-2 reduction.
	A tweak in noise whitening results in more honest noise estimates
	(you might observe a change in the S/N compared to before...)
	Among the new features are an enhanced configuration engine with 
	improved polling and brand new locks. There are lots of smaller fixes 
	and improvements, some documentation updates, and changes under the 
	hood.
	====================================================================== 

	[BUG] {b2} {APEX} Channel dependents reset for phase data (photometry)
	was imcomplete due to a mishandled index range, resulting in slightly
	biased error estimates (LABOCA) or broken reductions (SABOCA). Fixed. 

	[BUG] Dependents were accumulated instead of being replaced, resulting
	in understated degrees of freedom that could spiral out of control.
	Fortunately, for typical reductions the effect was more or less
	contained. Still, this one was bad...

	[BUG] {APEX} photometry phase decorrelations did not sync back to
	phase data, leading to garbage photometry results (probably since 2.30)
	Fixed.

	[BUG] {APEX} photometry reductions still had race conditions from all
	prior 2.30 releases. Fixed.

	[NEW] {SHARC2} New decorrelation mode named 'smileys' which removes
	parabolic shaped correlations on detectors rows (possibly thermal
	features). It is enabled by default in 'faint' mode. 

	[NEW] New option 'lab' allows reductions without telescope data (for
	supported instruments only). CRUSH will not produce a source model.
	Instead, it will output power spectra for the pixels. The option
	'lab.scanspeed' can additionally be used to assume a typical scanning
	speed for adjusting the filtering, as if the data were taken on sky...

	[NEW] {APEX} 'chirange=min:max' option can specify a range of 
	acceptable reduced chi values. If a subscan cannot contribute 
	photometry within that range, it will not be part of the overall 
	photometry result.

	[NEW] 'system=native' to reduce in the native telescope coordinates. 
	For typical Alt/Az mount ground-based telescopes it is the same as 
	'system=horizontal', but it does not have to be. For SOFIA, it results
	in reducing in TARF/SIRF coordinates, in the telescope assembly's 
	XEL, EL system.

	[NEW] Improved flag management. Channel data files (see 
	'write.pixeldata') now contain flag letter codes for easier human
	readability, together with a key to the codes in the header section
	of these files. Scan HDUs in FITS images also contain keys to the
	flag values in the header.

	[NEW] Introducing the ability to create, undo, and modify persistent
	configuration settings, e.g. to prevent changes to these later (e.g. by 
	conditionals). For example, you can lock the 'tau.225GHz' setting to 
	your favored value:

	  > crush ... -tau.lock=0.31 ...

	By this you assure that CRUSH will use your specified value, even if
	normally it would look tau up for each scan, e.g. from a table.
	Once a setting this locked this way, it cannot be changed (or forgotten
	or blacklisted!) until it is unlocked again, e.g. by 'tau.unlock'.
	If you want to set a new favored value later, for some other scans,
	you'd have to:

	   > crush ... -tau.unlock -tau.lock=0.46 ...

	Or, you can use the stronger 'relock' directive, which will override
	existing locks as necessary:

	   > crush ... -tau.relock=0.46 ...

	When no argument is given to the lock, it will simply preserve the
	current value to the configuration option.

	[NEW] Improved polling of settings via the '-poll' command. Apart from
	listing current settings for all keys that start with the specified
	pattern (as it used to), it now also list any matching settings that
	were blacklisted (as bracketed). And, it also lists any conditionals
	that might change a matching settings dynamically.

	[DEPREATE] 'despike2' and 'despike3' pipeline steps are no longer
	supported. (They were never used).

	[CHANGE] {HAWC+} New data packing format (41x128), and corotating 
	Nasmyth mount.

	[CHANGE] Despiking 'features' method renamed to 'multires'.

	[FIX] Removal of coupled modes (such as gradients on top of another
	correlated mode) left unwanted signals between decorrelating the parent
	mode and the coupled mode. For example for sky gradients, this meant
	polluting signals between array decorrelation and gradient removal, so
	that the undesired remnants affected weighting, whitening and despiking
	in-between.

	[FIX] CorrelatedMode.getNormalizedGains could result in NaN gains 
	(when the mean gain was calculated 0.0). Now skipping renormalization 
	in such pathological cases...

	[FIX] Some new safety pins for dealing with NaN gains...

	[FIX] Better separation between channel/pixel ids and fixed indices.
	As a result some features that were broken for certain instruments
	should work again (such as recording extended pixel data in the output
	FITS). Reading of pixel/channel data is always by ID.

	[FIX] {APEX} {b2} Using quadrature chop phase data also, effectively
	doubling the number of useful datapoints for photometry. 

	[FIX] {LABOCA} He3 temperature rms is reported correctly again...

	[FIX] Signal drift removal could leave unwanted NaNs behind... 

	[FIX] {APEX} Tau or calibration lookup could end up empty handed when
	only table had a only few valid points in range. Fixed.

	[FIX] {APEX} Photometry accounting of degrees of freedom in the phase
	data was flawed. Fixed.

	[FIX] {APEX} Improved handling of errors on scan read...

	[FIX] Despiking via 'neighbours' method threshold was too high by about
	sqrt(2) typically. Fixed.

	[FIX] Pointing information is now correct for multiscan pointing 
	reductions, in any coordinate system, and also for moving objects.

	[TWEAK] Noise whitening automatic white-noise probe range set to better
	correspond to range of point source signals, leading to more honest
	noise eatimates.

	[TWEAK] {SCUBA-2} More informative error messaging when FITS input 
	is missing tables (ndf2fits proexts option was not used).

	[TWEAK] {APEX} {b2} Improved photometry despiking. Data can be NEFD 
	range bound -- outlying subscans are skipped, resulting in a more
	homogeneous chop set.

	[TWEAK] Cleaner, more versatile, reporting of pointing offsets.

	[TWEAK] Neighbour despiking domain tweaked to include all flagged 
	frames.

	[TWEAK] Absolute level despiking is now default starting in the 4th
	iteration (except in 'bright' mode).

	[TWEAK] Neighbour despiking to flag single sample only.

	[CONFIG] {SCUBA-2} decorrelation on rows (SQUID MUXes) is enabled. 
	(previously only decorrelation on cols -- SQUID address lines was 
	used).

	[CONFIG] {SCUBA-2} gain flagging ranges for 'rows', 'cols', and 
	'subarrays' decorrelations changed from -10:10 to 0.1:10, resulting
	in improved flagging of non-responsive pixels.

	[CONFIG] {SHARC2} 'mux' and 'smileys' decorrelation enabled by 
	default for 'faint' mode reductions.

	[CONFIG] Re-enabled 'weighting.noiserange' by default with range of
	0.1:10.0.

	[CONFIG] {LABOCA} Exploring a new paradigm for removing microphonics
	on the flexible band cables. Removing 'twisting' modes is now enabled
	by default, in all modes (except 'bright'). In photometry the cable
	gains are locked to their nominal values in 'pixel.dat'.

	[CONFIG] {GISMO} 'deep' mode 1/f stability changed back to 3 s,
	resulting in cleaner maps.

	[COSMETIC] {APEX} photometry summary give more comments on the 
	reduced chi^2 value. Just enough to put your mind at rest, or to make
	you a bit nervous...

	[COSMETIC] Some tweaks to the help screens.

	[DOC] Re-structured the README bringing the more useful topics up
	front. 

	[DOC] New user's guide extensions for APEX (apex/README), LABOCA
	(laboca/README), PolKa (polka/README), and SHARC-2 (sharc2/README).

        [DOC] The guide to the configuration engine has been split to a 
	separate document (README.syntax), leaving only a bare description 
	inside the main README. There are two good reasons for this split: 
	first, as the configuration engine was getting more feature rich, this 
	section was getting way too long, and distracting; secondly, the 
	configuration engine is really a standalone piece of software, which 
	may be (will be!) used outside of the bounds of CRUSH. The separate
	document makes better sense.

	[CODE] Wider use of native coordinates instead of hardcoded horizontal

	[CODE] CoupledMode moved upstream to Mode from CorrelatedMode. 
	(And the corresponding move of CoupledModality to Modality...)

	[CODE] CorrelatedMode always return normalized gains for use.

	[CODE] Got rid of Mode.getChannelIndex(), resulting in cleaner and 
	(slightly) faster decorrelations.

	[CODE] Gradient gain validation (centering) was cleaned up.
	
	[CODE] Some renames, e.g. Array -> Camera, GeometricRowColIndexed ->
	GridIndexed, APEXArray -> APEXCamera, APEXArrayScan -> APEXScan...

	[CODE] Phase data and signal storage downsized to float to reduce
	footprint. Phase sample flag space downsized to byte.

	[CODE] Despiking of phase data moved upstream to PhaseSet, obsoleting
	the PhaseDespiking interface.

	[CODE] Lots of under the hood changes to make handling native 
	coordinates, and conversion to/from them, more universal
	
	[CODE] Most classes now implement Serializable, as well as suitable
	overrides for the hashCode() and equals() methods.

	[CODE] kovacs.util packages renamed to jnum (Java Numerical).

	[UPDATE] The nom.tam.fits package updated to the official 1.14.2
	release.



2.30-4 (14 December 2015)


	Overview
	======================================================================
	This maintenance release fixes a critical bug for SCUBA-2, whereby long
	integration (consisting of more than 1 subscan) were processed 
	incorrectly. It also fixes a smaller bug with the parameter accounting
	of the correlated noise removal. And, the release offers the usual 
	suite of smaller fixes and improvements.
	======================================================================

	[CRITICAL] {SCUBA-2} Merging of integrations was buggy, leaving just 
        one subscan worth of data being processed. Fixed.

	[BUG] Correlated signal parameter accounting ooops. Reduced degrees
	of freedom due to filtering were calculated wrong.

	[NEW] {HAWC+} DRP messages through TCP/IP. The messages are turned on
	via the 'drp' option. The default setting assumes port 50747 on 
	localhost, which can be changed, if desired, through the 'drp.port'
	and 'drp.host' options respectively. Other sub-options are 'drp.id'
	(for setting sender ID), 'drp.fifo' (setting outgoing queue size)
	and 'drp.timeout' (TCP/IP socket timeout). 

	[FIX] Signal drift removal fixes and improvements. Drift removal now
	uses the level(from, to) method.

	[FIX] {MacOS X} The 'readlink' bash command on MacOS X does not 
	support the '-f' option (follow links through). CRUSH scripts updated 
	to use workaround, following links through manually. This approach 
	should work equally well on all platforms.

	[FIX] CRUSH could breach the OS limit for maximum number of processes
	if the number of scans times the number of threads (virtual CPU cores)
	exceeded the OS limit. Fixed. 	

	[TWEAK] {SCUBA-2} Tweaked SCUBA-2 configurations for a bit more 
	aggressive cleaning. Thanks to Zhi-yu Zhang for helping find more
	optimal default settings.

	[TWEAK] {GISMO} 'faint' and 'deep' mode 1/f 'stability' setting 
	set back to shorter (the shorter settings got commented a few versions
	back...)

	[TWEAK] Slight speedup of decorrelation parameter accounting. 

	[TWEAK] {GISMO} Some tweaks to de-jumping...
	
	[TWEAK] Small changes to time weighting: DOF measured over all 
	channels, weighting flags cleared up front, measure domain to use 
	previously flagged for weight/DOF (for redetermining these flags, as 
	needed).

	[TWEAK] {SOFIA} FITS requirements to conform to Rev. F.

	[TWEAK] nom.tam.fits package updated to 1.13.1. FITS resource leaks
	plugged.

	[CODE] Plugged some potential resource leaks.

	[CODE] HDUReader now goes through CRUSH's executor service when 
	possible.

	[CODE] scan validation separated from read.

	[CODE] Common handling of messages (informational, warning, and errors)
	introduced.
	
	[CONFIG] {SCUBA-2} Tweaked SCUBA-2 default configuration 
	(scuba2/default.cfg) based on suggestions by Zhi-yu Zhang.

	[CONFIG] {LABOCA} Skydip opacities and calibration data is included
	up to 2015-09-01.

	

2.30-3 (6 October 2015)


	[FIX] {SCUBA-2} Yet another astrometry bug. LST units were wrong, 
	causing problems when converting from native horizontal to equatorial
	coordinates.

	[FIX] {SCUBA-2} Coordinates of objects tracked in apparent coordinates 
	(Solar System objects) was still wrong. Fixed.

	[TWEAK] {SCUBA-2} Conversion from Horizontal to equatorial relative
	to tracking position, when tracking, to eliminate astrometric 
	imprecision.



2.30-2 (5 October 2015)


	[BUG] {SCUBA-2} Tracking coordinates not correctly processed from FITS,
	which led to some arbitrary absolute astrometry. Now fixed, and 
	supporting 'AZEL', 'APP', 'J2000', 'B1950', and 'GAL'.

	[FIX] Merging subscans gap filling was off by 1 frame.

	[FIX] {HAWC+} Using the new Vertical Position Angle column in the new
	simlations. 

	[FIX] {HAWC+} MOONANGL keyword in scan HDU could be NaN, which was not
	SOFIA standard. Fixed.



2.30-1 (22 September 2015)


	Overview
	=====================================================================
	This is major release, with some big changes and lots of new features. 
        The most important highlights are:

          * Brand new parallel architecture throughout, giving big boost to
	    single-scan reductions on multicore architectures.
          * Free and full SCUBA-2 support (initial version).
	  * Experimental support for MUSTANG-2.

	Beyond these, a lot of changes under the hood. Many old bugs found and
	fixed, and many improvements made. See the full list of changes below.
	=====================================================================

	[BUG] {RPM} {.deb} 'wrapper.sh' did not work as expected if CRUSH was
	invoked via a symlink (e.g. /usr/bin/crush), as was the case with the
	packaged installations.

	[BUG] {SourceMap} The use of unfiltered vs filtered gains for mapping
	did not depend on the mask as intented. The algorithm used a stale map
	index when making the choice. Fixed.

	[BUG] {PolKa} Parameter accounting for the removal of total-power
	modulation was buggy. The dependents that were to be accumulated for
	frames were instead added to channels, causing incorrect weightings
	over the iterations. Fixed.

	[BUG] {SyncModMap} Miscounting of good frames. However, this mapping
	feature was really unused, making this a rather inconsequential bug.

	[BUG] Gain renormalization (re-enabled in the last release) was flawed
	and could cause mapping artefacts. Now following a more cautious
	approach...

	[NEW] {post-b1} New option 'parallel' to select the parallelization
	mode. The acceptable values are:

	  scans   -- Reduce each scan in a separate thread.
	  ops     -- Each scan is reduced by parallel threads, one scan a time.
          hybrid  -- Reduce as many scans in parallel as possible, each with
                     an optimal number of parallel threads.

        The default value is 'hybrid', which is used if 'parallel' is not set
	or if its value is not one of the accepted values shown above.

	[NEW] {post-b1} Hybrid parallel architecture that gives the best of
	both worlds, optimally fast single-scan reductions, and as fast as
	possible multiscan reductions. The available threads are distributed
	on an N by M grid, where N scans run very efficiently in parallel,
	each with M concurrent threads (which are a bit less efficient because
	of more frequent data sharing).

	[NEW] Preliminary support for MUSTANG-2 (GBT). See mustang2/README
	for details.

	[NEW] Much updated support for SCUBA-2, now bundled with the rest of 
	CRUSH, under the same generic public license (GPLv3). It now supports
	all subarrays, with more precise array geometry (based on SMURF's own 
	sc2ast.c), and is roughly calibrated for integrated (i.e. aperture)
	fluxes, based on Uranus. (Beware, peak fluxes are very dependent on
	focus quality!). Many thanks to Ed Chapin for helping make sense of
	SCUBA-2 data, and Tony Mroczkowski for getting some essential training
	data to make this happen. See scuba2/README for details...

	[NEW] New option 'notch' for notch filtering the raw detector 
	timestreams. It is faster (usually) than the kill filter. It has the
	following sub-options: 'frequencies' to provide a comma-separated
	list of frequencies to notch out, 'harmonics' if you want to remove
	extra harmonics of those frequencies, and 'width' to specify the
	target width of the notch filter (in Hz). E.g.

		notch
		notch.frequencies 1.416, 50.0, 60.0
		notch.harmonics 6
		notch.width 0.1

	[NEW] New option 'subscans.merge.maxgap' to specify a maximum gap
	(seconds) between two consecutive subscans (integrations) that can
	be merged with the 'subscans.merge' option.

	[NEW] New experimental option 'regrid' to resample the final map to
	a different pixel grid than what was used during the reduction. This
	feature is somewhat experimental for now. The preferred approach is
	to use the time-tested 'imagetool' after the reduction to achieve the
	same effect.	

	[NEW] CRUSH to add a HISTORY note into the FITS output on the 
	reduction, by default. Instruments (like SOFIA cameras) may add further
	details to it. (Imagetool will also add HISTORY entries for processing
	steps...)

	[NEW] CRUSH has a brand new parallel architecture, giving a big boost
	to single-scan reductions (or the reductions of a few scans) on multi
	CPU or multicore machines (i.e. most of today's computers).	

	[NEW] New option 'segment' instructs crush to break long integrations
	into shorter ones, if desired. The argument is the desired shorter
	integration length in seconds. (It's the complement function to the
	existing 'merge' option). Can be used together with subscans.split too
	to break the segments into separate scans altogether.

	[NEW] New option 'shift' allows to shift the data relative to the frame
	headers to test for timing issues or correct for them. The argument is
	the desired timeshift in seconds, and can be positive or negative.

	[DEPRECATE] The option 'drifts.method' is no longer available. The
	standard 'blocks' method was safer and better than the laternative
	'fft'. Because the 'fft' method was inherently problematic, and never
	really used anyway, it's best to say goodbye to it...

	[FIX] 'weighting.noiserange' setting for 'extended'-mode reductions,
	defined in 'default.cfg', could cause problems. It is safer not to 
        define a separate noise flagging range for 'extended' mode by default. 

	[FIX] {despike} Neighbor despiking method had possible race condition
	introduced in 2.30 alpha releases. Fixed.

	[FIX] {LABOCA} Processing of He3 temperatures from MONITOR table was
	incorrect as a result of inverted iteration order. (Feature was not 
	used typically...)

	[FIX] When gaps were detected in data, the gap filling routine did not 
	work as expected. Fixed.

	[FIX] {HAWC+} Fixed multiple occurences of FITS keys: INSTRUME and
	TRACERR.

	[TWEAK] {post-b1} {SCUBA-2} pixel overlap calculation speeded up.

	[TWEAK] {MAKO-2} kill filter replaced by the faster notch filter for
	removing pulse-tube pickups.

	[TWEAK] Time weighting requires at least 1 full degree of freedom
	before flagging (was > 0 before).

	[TWEAK] {APEX} Automatic skydip reductions no longer hardcoded but
	set dynamically in the configuration apex/default.cfg based on the
	OBJECT name (= SKYDIP). No change in functionality.

	[TWEAK] fits.jar modified to forgo console messages on multiple keys.
	One of the SCUBA-2 HDU headers had duplicate EXTVER keys, which 
	produced a whole lot of warnings when processing the FITS files. These 
	inconsequential warnings are now supressed.

	[TWEAK] Stronger enforcement of gain normalization for correlated noise
	removal.

	[TWEAK] {HAWC+} Can process data from multiple 'TIMESTREAM DATA' HDUs,
	which can be interspersed with other HDUs in the FITS. (Using EXTNAME
	instead of fixed HDU index).

	[TWEAK] {HAWC+} Adjusted for not having a parallactic angle in the
	timestream. Uses VPA to calculate the effective instrument rotation
	instead of the default Nasmyth rotation...

	[TWEAK] {HAWC+} Aux files and configuration files added to processing 
	history.

	[TWEAK] {HAWC+} Instrument name now copies that from input files to
	make sure it conforms to specification.

	[TWEAK] {SOFIA} Handling of more SOFIA FITS keywords: OBSERNO, 
	FILEGPID, LST-OBS, MJD-OBS, WVTALOS, SUNANGL, MOONANGL, USRCRDSY, 
	USRREFCR, USRORIGX, USRORIGY, USRCRROT, USRX, USRY, USREQNX, HELI_COR,
	LSR_COR, INSTHWV, INSTSWV, SATURATE, DET_ANGL, COADDS, CHPSRC, CHPFUNC,
	CHPSETL, NODPOSX, NODPOSY, MAPPATT, DATAQUAL, OBSERVAT, DATASUM, 
	CHECKVER and array WCS keys. 
	Also, new keywords in v3.0 (rev F, 6-22-13): N_SPEC, COARSEEL, FD_EL, 
	FD_XEL, FD_LOS, DETCHAN, TOTINT, DTHCRSYS, DTHXOFF, DTHYOFF, OBSSTAT, 
	BANDWDTH, CHPACDC.
	And, CHPPHASE changed to floating point (rev F).

	[TWEAK] Derivation of source map not using filter gain correction as
	before. That scheme is expected to go awry with the filter bowls around
	sources, which is what it was designed to avoid in the first place...
	
	[TWEAK] PNG plots for skydip and photometry reductions, produced by
	gnuplot, now use the antialiased 'pngcairo' plot terminal instead of 
	the coarsely pixellated 'png' terminal. You should see higher plot
	quality as a result.

	[TWEAK] Some tweaks to parameter accounting. Sometimes samples that
	did not contribute to a model were still added to parameter dependents,
	which was incorrect.

	[TWEAK] Reverted to faster (async) parameter accounting, opting for
	explicit synxhronization externally (careful coding required...).

	[TWEAK] Beammaps do not need to operate on source copies, since the
	submaps provide a natural separation against race conditions. This
	should result in a speedup for processing beammaps.

	[CODE] {post-b1} Cleaned up unnecessary pipeline recreation at each
	iteration. Instead, pipelines are created at validation, and reused
	ever after...

	[CODE] {post-b1} Parallelized channel overlap calculation.

	[CODE] {post-b1} PhaseSignal now also parallelized.

	[CODE] {post-b1} Source model to use CRUSH's executor service when
	possible.

	[CODE] {post-b1} Removed synchronized directive from most of method 
	calls.

	[CODE] {MAKO} {MAKO-2} Resonator fitting made generic (crush.resonator)
	so that other frequency multiplexed instruments can reuse the same 
	code. (It also cleaned up some of the old resonance matching code).

	[CODE] Header editing to use both header and cursor where needed and 
	possible, to allow for more complex edits (e.g. overrides, removals)

	[CODE] pipeline task iteration ordering more explicit, by iterating
	on task indices.

	[CODE] {beammap} Beammap forks by pixel, instead of frame to avoid
	race conditions on master map without copies.
	
	[CODE] {SyncModMap} simplified by using sourceGain(mode) instead of old
	modulated waveform. No more sync() override...

	[CODE] {SourceMap} fewer argument for method adding samples to map.

	[CODE] {PolKa} removal of total-power modulation parallelized.

	[CODE] SyncModMap parallelized.

	[CODE] BeamMap to operate on original. No need for (slow) copies, 
	since the pixelmaps provide natural isolation agains race conditions.

	[CODE] BeamMap parallelized.
	
	[CODE] Photometry (in particulat for APEX) is parallelized.

	[CODE] new one-integration-at-a-time pipeline model.

	[CODE] Source model corner search made more efficient by performing on
	perimeter pixels only. New code determines which pixels define the 
	perimeter.	

	[CODE] Source model updates and syncs parallelized.

	[CODE] Source model corner search and indexing parallelized.

	[CODE] Signal updates and syncs parallelized.

	[CODE] Pipeline operations on Integrations are parallelized.

	[CODE] Filters parallelized.

	[CODE] SourceModel has its own recycler to handle temporary copies
	during the reduction, so these do not need to be reallocated again and
	again...

	[CODE] Array Recyclers handle temporary float[], double[] and
	DataPoint[] arrays both for the Instrument and for the Integrations,
	reducing the need to allocate these again and again on-the-fly.

	[CODE] All intensive validation tasks parallelized.

	[CONFOG] {LABOCA} Skydip opacities and calibration scalings updated
	up to and including 25 July 2015.



2.23-1 (16 June 2015)


	Overview
	======================================================================
	The release adds support for SOFIA/HAWC+, and improves reduction speed
	by ~30% (or more for instruments with a large number of pixels). It
	also streamlines installation with automatic Java configuration (on 
	most UNIX platforms, incl. Max OS X), and easier manual Java 
	configuration for those who need/want it. This release also fixes bad 
	aperture flux uncertainties in the prior version, adds many smaller 
	fixes, and brings many architecture improvements under the hood.
	======================================================================


	[BUG] {2.23-b1} {GISMO} Ooops! Array rotation SNAFU: 'rotation' was
	applied to pixel positions loaded from an RCP file, not just to 
	calculated pixel positions as was to be. (RCP rotation is handled via 
	separate 'rcp.rotate' option).

	[BUG] {2.23-b1...} {HAWC+} interpretation of parallactic angle and
	array orientation was wrong. The nearly totally degenerate solution
	used earlier was slightly inferior to the new (and likely) correct
	interpretation. 

	[NEW] Initial support for HAWC+.

	[NEW] On Linux systems CRUSH will attempt to automatically configure
	Java for optimal performance. On other systems (e.g. Mac OS X or
	Windows, it defaults to fail-safe settings of 32-bit VM and 1GB of 
	RAM).

	[NEW] On POSIX systems (e.g. Linux, Mac OS X), you can place your 
	persistent Java runtime configuration in arbitrary files under
	/etc/crush2/startup, or ~/.crush2/startup. (User settings in the latter
	will override the system-wide settings in the former). See Section 2.2 
	(Java Configuration) in the updated README for details.

	[NEW] Option 'source.inject' can be used to inject a test map into the 
	timestream. The sub-option 'scale' can specify a scaling before 
	injection. E.g.:

	   source.inject=~/test/mytestsource.fits
	   source.inject.scale=0.5

	The above will inject 'mytestsource.fits' with a scaling of 0.5.

	[NEW] Filters have new sub-option 'mrproper' (disabled by default) 
	which activates a re-levelling of the filtered signal. In truth, the 
	re-levelling should have insignificant effect on the filter's 
	effectiveness.

	[FIX] {LABOCA} Skydip reductions were broken in beta releases as the
	freshly fixed-up decorrelation with He3 bath temperature (as seen
	with the blind bolometers) has ruined the skydip signal. Now, the
	temperature decorrelation is blacklisted for skydip reductions. Fixed
	for final release. (Thanks to Karl Torstensson for finding the 
	problem.)
	
	[FIX] {SHARC-2} Better handling of JCMT tau tables lookup failure
	through 'jctables.fallback' option.

	[FIX] {MAKO} {MAKO-2} {beta releases} Found and fixed harmless 
	NullPointerExceptions in overlap calculation of unassigned pixels.

	[FIX] {beta releases} 'autoconf.sh' did not work on bash < 4. Fixed
	for final release.

	[FIX] Signal/CorrelatedSignal levelling interval was nil, due to a
	malformed interval calculation. Fixed.

	[FIX] Eliminated race condition fixed on parallel offset removal 
	(in parallel dependents accounting). The existence of the condition 
	resulted in a random reduction noise whose level was typically ~1% of 
	the detector noise...

	[FIX] Aperture flux uncertainties reported for a pointing fit at the 
	end of reduction was garbage in prior release. Fixed.
	
	[SPEED] Significant speedup for large geometrically indexed arrays
	(e.g. HAWC+) by restricting overlap calculation to nearby pairs of
	channels. (Overlap calculation is needed in the proper estimation of
	lost degrees of freedom, and hence in the noise estimation).

	[SPEED] Speedup by ~30%, from replacing slow hypot() with the faster
	(albeit less precise) sqrt(a^2 + b^2)...

	[README] Updated installation instructions.

	[PACKAGE] Added bash and coreutils to pre-requisites for RPM and Debian
	packages (The latter provides 'readlink' and 'dirname'). 

	[TWEAK] {HAWC+} {post-b6} Handle different-sized simulated arrays.
	It should work with both 41x32 and 41x64 FITS arrays, and also 
	intermediate sized ones...

	[TWEAK] Kill filter is applied at initialization, before downsampling.

	[TWEAK] Gains measured on correlated signals are renormalized (again).
	Correlated signals are always updated with normalized gains.

	[TWEAK] {MAKO-2} beammap functionality to produce output that is 
	also suitable as pixelid input.

	[TWEAK] {VariedFilter} Dependence accounting made faster by pooling
	channels in postFilter().

	[TWEAK] {Filter} loadTimeStream levelling inlined for better speed.

	[TWEAK] {FITS} Added a few sectioning comments to FITS headers to
	make it easier to read by humans.

	[COSMETIC] {CSO} Cassegrain platform rotator processing mentioned 
	'MAKO' in messages. Fixed.

	[CONFIG] {LABOCA} Laboca configuration is up-to-date till 2014 April 
	15.

	[CONFIG] {LABOCA} 2014 RCP's had invalid date ranges, and were not used
	as a result. CRUSH reverted back to the default RCP for 2014 data.
	Fixed.

	[CONFIG] {MAKO-2} New 350um and 850um pixel positions for the May 2015 
	run. Also, MAKO-2 is fully configured for that run.

	[CONFIG] Updated data/leap-seconds.list to most current.

	[CONFIG] {CSO} Common tau lookup settings move to cso/default.cfg.
	Also, updated URL to JCMT tau tables to new location.

	[CODE] {post-b3} {SOFIA} Eliminated double->float->double precision
	loss when processing header values. All values are now kept at
	double precision throughout.

	[CODE] SourceModel does not have standalone options but uses those of
	its instrument, removing a source of ambiguity that could result in
	unpredictable behavior.

	[CODE] {SHARC-2} {GISMO} {p-ArTEMIS} {SCUBA-2} Arrays with row/col 
	pixel indexing are handled more efficiently, and with more shared 
	code.
	
	[CODE] Use ExtraMath.roundupRatio() wherever possible.

	[CODE] Release version checking in main() instead of CRUSH 
	instantiation.

	[CODE] RotatingArray merged into Array. No good reason for keeping it
	a separate class.

	[CODE] Parameter dependents accounting made thread-safe without 
	unnecessary blocking (using Dependents.Entry inner class).

	[CODE] Closing FITS streams after reading (for all instruments) with
	no-action exception catch (not a real issue).

	[CODE] Reporting of CRUSH command line arguments in FITS header moved
	from GridSource to CRUSH.

	[CODE] InstrumentLayout constructor without arguments, and Instrument
	constructors to include a mandatory layout specification.

	[CODE] Instrument resolution made private with get/set access only.

	[CODE] {GISMO} {SHARC-2} {MAKO} {MAKO-2} pixelsize moved up to global
	instrument property.

	[CODE] {GISMO} Calculation of default pixel sizes moved to 
	setPlateScale() from setReferencePosition().

	[CODE] Initial generic support for SOFIA instruments, in general.

	[CODE] Tweaked instrument initialization/configuration. The instrument
	configuration used for global reduction options is now set to be the
	same as for the source model (or first scan if no source model is
	derived). Default settings, like resolution, etc are parsed upon
	validation only.




2.22-1 (31 March 2015)


        Overview
        ======================================================================
	The release comes with built-in configuration for the 2015 Feb/Mar
	GISMO run. It also fixes a few issues, adds new features, like 
	conditional configuration based on FITS headers, and the possibility
	to use external resources online. There are also many changes under 
	the hood, which should not affect the user experience, if all was done 
	right...
	====================================================================== 

	[BUG] {SHARC-2} Gap checking (and trimming to gap if necessary) was
	not active. Also, gap checking was inherently flawed. This affects 
	data taken in 2003 Mar/April when a bug in JSharc produced occasional 
	buffer wraparound, and corresponding timing gaps in the recorded 
	stream. Fixed.

	[NEW] Ability to set conditions based on FITS header keywords and
	values. Currently, this is applied to all instruments with FITS-based
	data formats. Here are some examples on how it may be used:

		fits.[CHOPPED] echo "Header has CHOPPED key"

	The above condition is active if the FITS header contains the CHOPPED
	keyword. The FITS keyword can be specified in lower or upper case, but
	the corresponding fits key is assumed to be upper case always.

		fits.[OBJECT?Jupiter] bright

	The above is an example of setting the 'bright' option when the value of
	the  OBJECT key in the FITS header is 'Jupiter'. The FITS value is case
	insensitive (i.e. "Jupiter" is the same as "JUPITER"). 

		fits.[INSTRUME?!SHARC-2] echo "Ooops, not a SHARC-2 data file."

	Similarly to the above, but if the character after the ? is a !, then
	crush checks for the negated condition. I.e., you could read the
	above as 'if INSTRUME is *not* SHARC-2 then ...'	

	[NEW] Lookup and interpolation tables now can be specified to fetch
	online resources via HTTP. Thus, tau lookup for the APEX cameras,
	GISMO or CSO cameras can all refer to online tables (See 'tau'
	'tau.tables', tau.jctables' options). Same goes for APEX calibration
	tables (see 'scaling'). Using online resources means that tau and
	calibration data can always stay current and up-to-date, and also
	allows for smaller distribution packages.

	[FIX] {tools} Some fixes to crushtools (e.g. imagetool, show etc.).
	Aperture flux uncertainties were understated for smoothed maps. Fixed.
	Now levelling outside of apertures only.

	[FIX] {SHARC} Better handling of timestamps and dates. (UTC vs MJD
	based on TT).

	[CHANGE] {SHARC-2} The option 'nogaps' no longer takes an optional
	argument ('JSharc'). Instead, the nogaps option is activated 
	conditionally based on checking the FITS header for CREATOR = 'JSharc'.

	[TWEAK] {FITS} Beam descriptions for the instrument, smoothing, 
	filtering, and flux correction are now using BMAJ/BMIN/BPA type FITS 
	keys (all in degrees) which allow non-circular definitions in a more 
	'standard' format. Thus, the prefix 'S' describes smoothing, 'X' the 
	extended filter, 'I' the instrument or intrinsic beam, while 'C' the 
	beam for which fluxes are normalized to.

	[CODE] Initial support for HAWC+, and SOFIA instruments, in general.
	(To be packaged in the next release, but available from the SVN repo 
	now.)

	[CODE] Added HDURowReader class that enables parallelized row-by-row
	reading of FITS Binary Tables. In principle, it has the advantage of
	not having to create an object for every table entry. However, in
	reality this does not lead to significant performance boost, probably
	because the allocation of large storage for ColumnTables is efficient
	also. Currently, no class relies on row-by-row reads.

	[CODE] Handling of channel grouping into pixels is now handled by a
	separate InstrumentLayout class, making it easier to create common
	superclasses to different type of instruments.	

	[CODE] A fair bit of reorganization and cleanup of the kovacs.util
	libraries. See util-change.log for details.

	[CODE] Images now rely on new GaussianPSF classes, and can support
	non-circular main beams in reductions. (Note, post-reduction tools, 
	e.g. 'imagetool', 'show', do not yet support elongated beams).

	[CODE] All reliance on old FFT classes now removed. (The old FFT
	classes are gone for good!).

	[CODE] {IRAM} IRAM-specific data (e.g. pointing model, scan-id, tau
	tables) have been moved to a subpackage (crush.iram).

	[CODE] {GISMO} In preparation for GISMO-2, common functionality has
	been abstractified.

	[CODE] {MAKO} Common functionality between MAKO and MAKO-2 are now
	in classes renamed as 'Abstract...', for clarity.

	[COSMETIC] FITS libraries (nom.tam.fits) version information is now
	also displayed at startup.

	[CONFIG] Updated 'data/leap-seconds.list' with the latest. The current
	leap seconds is 36 since 1 January 2015.

	[CONFIG] {SHARC} {SHARC-2} {MAKO} {MAKO-2} Tau scaling relations
	between 225GHz radiometer, 350um tipper, and precipitable water vapor
	(pwv) have been moved to common 'cso/default.cfg', with a few other
	common settings.

	[CONFIG] {GISMO} Configuration updated for the 2015 Feb/Mar run, with
	blind pointing accuracy to ~2.2" rms in both AZ and EL, and tau tables.
	Calibration updated based on a dozen or so observations of Uranus and
	the Bendo et al. 2012 temperature model. The calibration has been
	retroactively applied to the 2014 runs, for which calibration was
	difficult to nail down accurately. The new calibration yields 2014 
	fluxes that are on average 14% lower than before....


2.21-1	(13 January 2014)		


	Overview
	======================================================================
	The release fixes a few major bugs of the prior release, mainly
	affecting the post-reduction tools such as 'imagetool' or 'detect' 
	(see below). It also brings official support for MAKOv2 (Sep. 2014),
	and brings other smaller fixes and improvement.
	Upgrading from prior 2.20 releases is strongly recommended. 	
	======================================================================


	[BUG] {tools} {post-b1} Re-estimation of noise ran amok in 'imagetool',
	'detect' etc., causing major problems in the source extraction tool 
	'detect', for example. The bug was due to botched legacy support for 
	old maps created by CRUSH-1.xx. It is hopefully fixed now, while still 
	maintaining legacy support as expected.

	[BUG] {GISMO} {post-b1} Data from 2014-10-20 could not be reduced with 
	2.21-b1 due to a configuration bug. Fixed for 2.20-b2.

	[BUG] {crushtools} Equatorial (RA/DEC) image output had the wrong 
	CDELT1 sign (should have been negative, but was written positive). As 
	such, maps produced by 'imagetool', 'coadd', 'difference', or 'detect'
	all appeared inverted.

	[NEW] {MAKO2} Initial support for MAKO2.

	[NEW] {MAKO} {MAKO2} New option 'toneid.attempts' lets you control
	how many fitting attempts are made before the best is chosen for
	tone identifications (the default is 100).

	[FIX] {util} {post-b1} Smoothing weight normalization to account for 
	prior smoothing. The fix has no effect on the reduction since smoothing
	is applied to raw, unsmoothed, images only.

	[FIX] {util} {post-b1} Deconvolution normalization for imagetool, 
	show, etc. fixed.

	[FIX] {show} {post-b1} File->Reload did not reset menus as expected. 
	Fixed.

	[FIX] {SHARC} Fixed handling of Nyquist component (in fastest index)
	in the 2D FFT. (see util-change.log)

	[FIX] Reporting the configurations loading on console is reinstated.
	Also, it now shows hierarchical configuration loading (when one
	config file is spawned from another).

	[FIX] {beammap} Beam-map was broken due to some erroneous processing
	of branched source options (E.g. 'blank' vs 'beammap.blank' or
	'source.redundancy' vs 'beammap.redundancy'). [Note, that support for
	branched source options has been revoked. See further below.]

	[FIX] {MAKO} The MAKO configurations file (mako/default.cfg) had 
	'offsets.add' misspelled. Fixed. 

	[DEPRECATE] Branched source options, introduced in 2.16, has
	been deprecated, and no longer supported. It is not used in the current
	code, and it has unnecessarily increased the complexity of configuring,
	reducing transparency and making the source model(s) more bug prone as 
	a result.

	[CONFIG] {SHARC-2} {MAKO} The online JCMT 183 GHz tau made to be the 
	default source of zenith opacity after 2012-02-01 (the CSO shutdown)
	after which MaiTau is typically no longer available.

	[CONFIG] {LABOCA} RCP data, skydip opacities and calibration tables
	up to and inclusing 2014-10-21.

	[CONFIG] {GISMO} {post-b1} Shortened tau table to include only the
	dates for the run.

	[CONFIG] {GISMO} {post-b1} Updated residual pointing table with new one
	(This should nmot result in any real change from prior version).

	[CONFIG] {GISMO} Recalibrated based on Uranus on 2014-10-23, and the
	Bendo et al. 2013 temperature model. The calibration is applied 
	retroactively from April 2014.

	[CONFIG] {GISMO} Previous bias 16K calibration reinstated (uncommented)
	and appropriately re-scaled.

	[CONFIG] {GISMO} New calibration for 9K bias, based on 1800+400 
	observed both with 9K and 10K biases on 2014-10-23. 
	
	[CONFIG] {GISMO} There was something funny with the 2014-04 
	calibration, which was based on Mars. Everything else indicates that
	this calibration resulted in fluxes ~40% too low. Therefore, the
	run 10 calibration is changed assuming the same optical state as
	the following run in 2014 October.

	[TWEAK] {GISMO} More information printed on console in case of errors
	while reading tau tables. Also, entries with invalid values are now
	skipped rather than produce an error.

	[TWEAK] {CSO} Site coordinates updated to match those of the antenna
	computer.

	[TWEAK] {MAKO} Changed how resonance chi^2 is calculated in the
	resonance match. First, if the nearest channel is too far from a
	known resonance, then it is not considered in the fit. Secodly, it
	minimizes the reduced chi2 instead of the raw chi2.

	[CODE] Cleaned up tau setting code for CSO instruments. (It was getting
	messy with the growing number of possibilities to obtain or set tau).

	[CODE] Pixels with null positions are now processed without error.

	[CODE] ChannelGroup.slim() now removes channels soft-flagged to be
	discarded. Also made a bit faster.


2.20-3 (21 August 2014)

	[FIX] Polygon display inadvertently broken in previous update. Fixed.


2.20-2 (6 August 2014)


	[BUG] {show} The displayed equatorial coordinates in 'show' were
	inadvertently the complement angles. The bug was introduced in the 
	prior release, and affected only the 'show' tool's equatorial 
	coordinate display. Now fixed.

	[NEW] {show} Distance measure mode is added. In that mode, dragging
	will measure distances between two points on the map. The measure mode
	can be toggled on/off in the Tools menu, or via the hotkey 'm'.

	[FIX] {show} Changing color scaling or switching between image planes
	resulted in lost re-alignment. Now image stays aligned as expected.

	[TWEAK] {APEX} The 'project' option now accepts lower-case project
	names also, which are automatically converted to upper case when
	searching for matching file-names/directories.
	
	[TWEAK] {SHARC} Data locator options shown with '-help'.

	[COSMETIC] {show} Made region lines a bit thicker and antialiased for
	better appearance.

	[COSMETIC] Fixed identation on instrument-specific help screens.



2.20-1 (24 July 2014)

	Overview
	======================================================================
	This release of CRUSH comes with a version bumped to 2.20 mainly 
	because it requires Java 6 to run due to the update of the bundled FITS 
	libraries (nom.tam.fits). There are other leaps also, justifying the 
	bumped up version: The old CRUSH libraries have been replaced with a 
	much streamlined version, and the 'show' tool (for displaying FITS 
	images) has seen many improvements, both in terms of performance and 
	new features. Plus, the release adds support for SHARC.
	All these new things should make it an exciting release to play with.
	======================================================================

	[BUG] Parsing of mask files (used for inserting test sources) was still
	buggy for negative declinations. Fixed at last.

	[NEW] Initial support for SHARC. See 'sharc/README' for details.

	[NEW] {show} Desktop launcher (Linux only) is included in the
	distribution. It is automatically set up if CRUSH is installed from
	a package (RPM or Debian). Otherwise, it is included in the system-wide
	installation when running 'install.sh'. It also associates FITS images
	with the tool (without making it a default FITS viewer).
	
	[NEW] {show} A tab on top of the color scale now shows which image 
	plane is being displayed.

	[NEW] {show} Use arrows to reposition image in steps (or drag with
        mouse [see below] for finer control).

	[NEW] {show} Pressing Control key (Ctrl) together with mouse button is
        the same a a right button press, while Alt+button is the same as a
        middle button press. This makes things easier for the MacOS folks.

	[NEW] {show} can now be launched without an argument, bringing up the
	GUI without a preloaded image.

	[NEW] {show} Menus now support many operations (some of which are new).

	[NEW] {show} Mouse wheel (and two-finger scroll) gestures. On the 
	image, scrolling can be used to finely control the zoom. On the 
	scalebar ruler it can be used to finely changed the offset. The wheel 
	gestures are similar to pressing 'Z'/'z' or 'B'/'b', respectively, but 
	offer finer control of the zoom and image "brightness".

	[NEW] {show} Masks now work with non-equatorial maps (but mask 
	coordinates remain equatorial defined, for now.)

	[NEW] {show} Dragging with right button pressed can be used to drag 
	image.

	[NEW] {show} Hotkey 'D' deletes the last circular region in show.

	[NEW] {show} The 'show' tool can now display CRUSH maps in all 
	spherical coordinate systems, including those in Ecliptic, Galactic, 
	SuperGalactic or FocalPlane coordinates.

	[NEW] {show} The 'show' window now carries a CRUSH icon instead of the
	generic Java one.

	[FIX] {imagetool} In v2.20 test releases imagetool (and hence show)
	wrote FITS images with crucial coordinate information missing from the
	header. Fixed.

	[FIX] {show} In v2.20 test releases, the newly streamlined tools
	write incomplete coordinate information into the FITS headers. Fixed. 

	[FIX] {show} Middle and Right mouse clicks now detected for MacOS.

	[FIX] {show} Writing of equatorial regions had offset sign error.

	[FIX] {show} Regions weren't parsed correctly when mask entry had peak 
	flux in non-basic units, such as 'Jy/beam'.

	[FIX] {show} Resampling onto a finer grid (by pressing 's') was broken.
	Now fixed.

	[TWEAK] {imagetool} Flagging now applies to both circular and polygonal
	regions.

	[TWEAK] {imagetool} Retired the -fftFilter option. It was broken
	anyway...

	[TWEAK] {show} Eliminated slow point-rms to beam-rms conversion. As
	a result 'show' opens crush maps a lot faster.

	[TWEAK] Small tweaks to time-weighting, aiming to increase stability.

	[TWEAK] Simplified equatorial->equatorial conversions.

	[TWEAK] Streamlined channel overlap calculation.

	[SPEED] Parallel compound source model processing.

	[SPEED] Parallel offset removal during subscan validation. (Also moved
	getPointCrossingTime() outside of loop.)

	[SPEED] Parallel frame reading, frame validation, and frame slimming.

	[SPEED] {show} Faster rendering using BufferedImage. Obsoleted coarse 
	render from before.

	[SPEED] {show} Reversed loops for better performance.

	[SPEED] {show} When drawing/dragging large images in quality rendering
	mode, use a coarser sampling for speed until the operation is either
	finished or comes to a halt. Also when resizing...

	[SPEED] {show} Further performance enhancement via precalculated
	scaled maps.

	[SPEED] {show} Faster rendering while drawing/dragging (no antialiasing
	and optimized for speed).

	[SPEED] {show} Aim to draw only 1 map pixel per display pixel, esp.
	at very low zooms.

	[COSMETIC] {show} Cleaner and more informative output for aperture 		fluxes (hotkey 'F').

	[COSMETIC] {show} NaNs render same as low end displayed for log 
	scaled images.

	[COSMETIC] {show} Gaussian source fitting output made more elegant.

	[COSMETIC] {show} Improved polygon drawing.

	[COSMETIC] {show} Circular regions and polygons now update while 
	drawing is in progress.

	[COSMETIC] {show} Infobar on top of map now displays the region name 
	and center coordinates and current radius, while drawing circular 
	regions.

	[COSMETIC] {show} Showing only useful significant figures for aperture
	fluxes inside polygons.

	[COSMETIC] {show} labeling of polygonal apertures.

	[COSMETIC] {show} Map continuously updates as colorscale is dragged.

	[COSMETIC] {show} 'Temperature' colorscheme was added twice to list of
	color schemes.

	[COSMETIC] {show} Higher quality rendering and sans-serif fonts instead
	of monospaced. Finer zooming, antialiased rendering (can toggle with 
	'a').

	[TOOLS] The old CRUSH 1.xx tools have been streamlined 
	into a new much smaller tools.jar replacing the old crush.jar. Gone is
	all the old SHARC2-specific code, and the duplicate classes (which 
	were often a source of problems). The new tools are already more 
	generic (e.g. 'show' can handle galactic, ecliptic, etc. coordinates)
	and rely on the kovacs.util classes directly. 

	[PACKAGE] Linux RPM and .deb packages no longer include the source 
	code. However, the source code remains included in the standard tarball
	for anyone interested in it. Packages are also updated to correctly
	reflect dependecies.

	[INSTALL] Cleaned up installation script (install.sh).

	[MAN] SELinux context for man pages properly set. (It was causing
	SELinux denials on /usr/bin/mandb before.).

	[MAN] Updated UNIX man pages for 'crush' and 'show'.

	[MAN] Updated permissions. Also, ownership is fixed when copying by
	'install.sh'.
	
	[FITS] nom.tam.fits package updated to v 1.11.

	[JAVA] Recompiled for Java 1.6.



2.16-3 (2 July 2014)

	Overview
	=====================================================================
	This latest update provides a fix for the 'deep' mode point-source
	flux correction bugs in the previous 2.16 releases. If you want to use
	'deep' mode for reducing your data, be sure to upgrade immediately.
	=====================================================================

	[CRITICAL] 'deep' mode point source correction (and point source
	corrections below clipping level in other modes) was broken in previous
	2.16 releases. One part malformed 'if' statement about when such 
	corrections were to be applied, but also because imminent 'smoothing'
	was no taken into account.

	[FIX] Maps resolution now correctly reflects the true average 
	resolution of the image.

	[FIX] Effective smoothing from map pixellization was not accounted for
	since allowing different x and y resolutions. Also if 'smooth' option
	was smaller than the pixelization...

	[CALIBRATION] {GISMO} Recalibrated 2014 April. The new calibration is
	on average ~3% different from the earlier one.

	[README] Added new section about filtering corrections and transfer
	functions into the README (Sec. 2.1).



2.16-2 (19 June 2014)

	Overview
	=====================================================================
	This update fixes two obscure bugs, both of which trigger under 
	special circumtances only.
	=====================================================================

	[FIX] {GISMO} 2014 April tau tables switched to UTC. There seems to 
	have been an internal Java bug when dealing with CET tables around 
	12:00pm (CET). Something of an off-by-1-hour sort of bug...

	[FIX] {util} Sources in mask files with declination between 0 and -1
	degrees were incorrectly parsed. Fixed.

	[UPDATE] The example mask file 'example.mask' included in CRUSH has
	been updated, with some much needed explanatory comments.

	[CONFIG] Updates 'wrapper.sh' for easy selection of VMs. On 
	non-desktop systems (such as the ARM-based Raspberry Pi or the Jetson 
	TK1) the default 'server' VM runs in interpreted mode, which makes it
	painfully slow. It is better to use a light-weight VM, such as 'avian'
	or 'jamvm' instead -- depending on what is available. Now you can
	simply change the JVM variable to indicate which VM you prefer to use.



2.16-1 (2 June 2014)


	Overview
	=====================================================================
	This release fixes a few critical bugs from the prior release(s). Some
	map projections (CAR, MER, SFL, and AIT) were upside-down for a while 
	now. SHARC-2 had a pointing bug due to the lack of chopper levelling, 
	and moving-frame objects (planets, asteroids, moons) were not mapped 
	correctly to non-equatorial celestial coordinates.
	Apart from the major bug fixes, there are several new and improved
	features, some smaller fixes, tweaks and streamlined code. The instant 
	focus feature has been much improved.
	The release also offers up-to-date configuration for the GISMO
	2014 April run.
	=====================================================================

	[CRITICAL] Cylindrical and pseudo-cylindrical spherical projections 
	(CAR, MER, SFL, AIT) have been wrong for a while now, due to an 
	incorrectly set native pole. Zenithal (e.g. SIN, TAN, ZEA) and the 
	previously default GLS projections were fine all along. (b1: SFL, BON 
	deprojection bug, introduced in a6, also fixed.)

	[BUG] Non-equatorial celestial mapping (e.g. ecliptic coordinates) of 
	moving-frame objects (e.g. planets and asteroids) was buggy. Fixed.
	(Also made AstroProjector a bit more transparent.)

	[BUG] {SHARC-2} Pointing was incorrect due to lack of chopper zeroing,
	which was disabled in 2.13-b2 (around 2012 Dec), partly because the
	zeroing was somewhat flawed for chopped scans. A new two-round approach
	is implemented for chopper levelling, which should provide a better 
	measure of the true zero level even when only a few chopper cycles are 
	recorded in the data. Also, the adding of the chopper offsets is no 
	longer linked to the 'offsets.add' option, which, in turn, exclusively 
	refers to static mapping and chopper offsets, as it should have been 
	from the start.

	[NEW] {2.16-1} {CSO} The option 'nochopper' can be used to ignore the
	chopper position signal altogether (if present).

	[NEW] {2.16-1} The new option 'source.margin' adds a specified number 
	of pixels around the edges of the source map. It can be useful where 
	the the map undergoes extrapolation which may place valid flux into
	these map pixels on the margins.

	[NEW] {2.16-1} The possibility of using non-square pixel grids, which
	can be specified by two comma-separated pixelization values, e.g. as
	'grid=<dx>,<dy>'. However, be advised that 'show' does not yet
	recognize non-square grids, and neither does ds9. Thus, your viewer
	may show such images as elongated in one direction...

	[NEW] Ability to mix-and-match different beam sizes as illuminations
	evolve. CRUSH will now calculate a representative beam size for maps.

	[NEW] New options 'write.png.crop' and 'write.png.smooth' to allow
	further control over the PNG thumbnail output.

	[NEW] CRUSH can now log a global 1/f statistics for the array using
	the 'stat1f' quantity in the log (see README for details of the 
	logging support). The new option '1overf.freq' can be used to define
	the frequency (Hz) where the 1/f is measured. The default is 1 over the
	'stability' timescale. The option '1overf.ref' sets the reference 
	frequency at which white noise behaviour is assumed. The metric is
	the relative amplitude of these two, averaged over the array.

	[NEW] {GISMO} Pointing model now contains both X and Y temperature
	terms.

	[NEW] {GISMO} Instant focus in X and Y has been calibrated and
	enabled.

	[NEW] 'focus.r' can specify the radius as a multiple of FWHM of the
	circular aperture on which X and Y focus is measured. The default is
	2.5 (i.e. radius = 2.5 * FWHM).

	[NEW] 'focus.xscatter', 'focus.yscatter', and 'focus.zscatter' can
	specify the typical extrinsic scatter of instant-focus values, which
	is then incorporated in the total error in quadrature to the 
	statistical measurement error. Specifying the true extrinsic scatter
	will lead to more reliable focus corrections and uncertainties.

	[NEW] 'write.png.scaling' can be used to determine what scaling to
	use for the PNG thumbnails. Valid values are 'linear', 'log', or
	'sqrt'. The default is linear scaling.

	[NEW] New option 'list.divisions' will print out a list of available
	pixel divisions (and correlated modalities) for the instrument, which 
	may be decorrelated in the reduction. 

	[NEW] New option 'list.response' will print out a list of available
	correlated responses (to known signals), which can also be decorrelated
	during reduction.

	[NEW] Ability to measure coupling to signals. Both coupling 
	coefficients, and coupling spectra (including time delay form) can be 
	measured via and 'write.coupling' and 'write.coupling.spec' keywords.
	The argument to both these options is a list of signal names for
	which channel couplings are measured. E.g.

	  write.coupling = accel-mag, chopper-x

	Additionally the you can set the spectral window size via 
	'write.coupling.spec.windowsize' option. The default is to set the
	window size to the 1/f filter timescale (i.e. 'drifts' option).

	[NEW] {GISMO} The new option 'read.sae' instructs CRUSH to parse the
	SAE data from the FITS, which is a prerequisite for a number of new
	features relating to SAE coupling. The option is disabled by default.

	[NEW] {GISMO} Decorrelation of SAE signals is now available via
	the 'correlated.sae' option or 'sae' shorthand. The new option is 
	disabled by default. The option also requires the also new 'read.sae'
	option to be set.

	[NEW] {GISMO} 2nd and 3rd stage tuning parameters (bias and feedback)
	are now parsed from the FITS.

	[NEW] {GISMO} SAE coupling coefficients can be logged against 
	line-of-sight tau, detector bias, and tuning parameters, using the
	'log.saegains' keyword (requires 'read.sae' to be set also).

	[FIX] {2.16-1} {APEX} Better error messages when 'project' or 
	'datapath' are not defined.

	[FIX] Fixed point-source asymmetry and elongation error estimation.

	[FIX] Instant focus z suggestion was dependent on the x by mistake.
	Fixed.

	[FIX] Pixel offset/drift removal had a dependents accounting bug,
	which resulted in understated DOF and overstated NEFDs. The bug was 
	probably introduced early on in the 2.16 development, so it should
	not affect the previous stable release(s).

	[FIX] Projection class copy bug found and fixed.

	[FIX] {LABOCA} He3 temperature decorrelation using blind detectors did
	not take place as expected. Now fixed.

	[FIX] {GISMO} Old FITS format processing was broken due to bad
	elevation constraint. Now fixed.

	[FIX] {GISMO} 'pins.group' did not work as desired. The option is
	not used by default, so the bug had no real impact.

	[FIX] Skydip parameter errors were infinite if 'skydip.elRange' was
	not explicitly set. Now fixed.

	[FIX] Decorrelation of motion signals fixed. Previously these did
	nothing.

	[TWEAK] {2.16-1} {sourcesize} 'sourcesize' defines an underlying source
	size. Thus it may be 0 for point sources.

	[TWEAK] {2.16-1} {sourcesize} {vclip} Changed automatic velocity 
	clipping to use 'sourcesize' when it is defined.

	[TWEAK] {2.16-1} Explicit use of the built-in math functions expm1() 
	and log1p() in flagWeights().

	[TWEAK] {2.16-1} Tweaks to time-weighting, hopefully increasing	
	stability.

	[TWEAK] {2.16-1} {GISMO} Disabled time-weighting. It was a source
	of instability.

	[TWEAK] Source asymmetry (used for instant focus) is now measured 
	outside of the main beam, resulting in reduced scatter.

	[TWEAK] Source shape measurement (used for instant focus suggestion)
	is always calculated on circular apertures. Previously some stats
	were calculated on square areas.

	[TWEAK] {LABOCA} decorrelating He3 temperatures is now enabled by
	default.

	[TWEAK] {CSO} MaiTau server connection attempt times out after 3 
	seconds if a connection cannot be established. Also, MaiTau console
	logging made more traceable.

	[TWEAK] 'SFL' is now the default map projection, replacing 'GLS'. 
	'GLS' projection is the fastest to calculate, which is why it was
	preferred thus far, but it's a legacy projection that isn't well 
	supported by many current programs (including IDL).

	[TWEAK] Maps created in focal-plane coordinates now carry the axis
	definitions (CTYPEn keywords) as FLON/FLAT. There is no standard 
	notation for focal plane coordinates, so we just defined them here :-).

	[TWEAK] Decorrelation dependecies calculation now takes into account
	the lost degrees of freedom due to filtering (both hipass via 'drifts'
	and FFT filters like whitening and motion filtering.

	[DEPRECATE] {GISMO} 'flips' decorrelation is deprecated, it no longer
	has any effect. 'correlated.rows.group' and 'correlated.cols.group'
	are also deprecated.

	[CONFIG] {LABOCA} Skydip opacities and calibration data included up to
	1 May 2014.

	[CONFIG] {2.16-1} {GISMO} New tau table includes 2014-03-31 also.
	Thanks Israel :-).

	[CONFIG] {2.16-1} {GISMO} Calibration updated for 2014 April using
	a modified methodology on Mars including less of the error beam into
	the calibration, and thus providing a more accurate measure for 
	standard (non-bright) reductions. The change is of order 8.5% relative
	to the beta release.

	[CONFIG] {2.16-1} {GISMO} New synthetic RCP for April 2014 based on 
	measured pixel positions from 3C345 on 2014-04-09.

	[CONFIG] {GISMO} Update calibration for 2014 April.

	[CONFIG] {GISMO} Beam FWHM set to 16.0" starting April 2014, since
	the telescope pupil was enlarged.

	[CONFIG] {GISMO} Pointing model and calibration for the 2014 April
	run.

	[CONFIG] {SHARC-2} Instant forcus calubration based on observations
	of Ceres and Pallas on 2014-04-14.

	[CONFIG] {LABOCA} Re-enabled 'gradients' in 'faint' and 'deep' modes.

	[CONFIG] {GISMO} Run7 (Nov 2012) tau smoothing window increased from
	0.25 to 0.5 hour because the smaller window did not always result in
	a tau estimate.

	[CONFIG} {GISMO} MUX decorrelation replaces gradients removal in
	'faint' mode; MUX gained not solved until 4th iteration; MUX resolution
	set to 0.25s for 'faint'; reinstated time-weighting at full resolution 
	in 'faint' mode; dejumping re-enabled for 2013 October; 'faint'-mode 
	stability timescale increased to 15s.

	[CONFIG] {GISMO} Created configuration for Run 10 (1-11 April 2014).

	[CRUSH-1.xx] New projections added to CRUSH-1.xx toolset (e.g.
	'show', 'imagetool', etc...).

	[CODE] Simplified point-source corrections switches.

	[CODE] Different source models can have preferred options under their
	own branch. When these are defined they override the default source 
	option for these.

	[CODE] Initial and rudimentary support for old SHARC data, including
	some basic dual-beam deconvolution...

	[CODE] Changed how scans are invoked to accomodate old SHARC.

	[CODE] SyntheticRCP tool moved from crush.gismo to crush.array.

	[CODE] Some small tweaks to instant-focus.

	[CODE] Instrument validation/initialization changes. Removed 
	unnecessary configuration copies. Changed when and how pixel groups,
	divisions and modalities are initialized.

	[CODE] Instrument group, divisions, and modalities added on 
	initialization rather than at validation.

	[CODE] flagInvalidPixels() in Array.readRCP() was wrongly placed, 
	being called more often than necessary. Fixed.

	[CODE] {CSO} Chopper levelling is now common prevalidation step for
	CSO instruments (MAKO, SHARC-2). It also avoids superflous chopper
	detection when data was not a chopped observation. (b1: chopper signal
	always added to pointing after levelling). 

	[CODE] Slimming only if there are dead pixels to be eliminated.

	[CODE] Downsampling made more generic, allowing instrument
	subclasses to easily add extra quantities to downsample.

	[CODE] Kelvin units now recognised by all instruments if the conversion
	from data units is set either directly via the 'kelvin' option or
	indirectly via the combination of 'jansky' and 'K2Jy' options.

	[CODE] Some simplification and clean-up of the drift removal code.
	

2.15-2 (9 December 2013)


	Overview
	=====================================================================
	This is a maintenance re-release of CRUSH-2.15. It contains no critical
	changes, just a few smaller fixes (see below). The main change is
	up-to-date configuration for GISMO for the 2013 October/November run,
	with <3" rms pointing, and locally averaged tau lookup.
	Also introduces some new experimental features for the adventurous,
	none of which are activated by default (thus maintaining 
	configurational compatibility to the prior 2.15 release).
	=====================================================================

	[BUG] {b2} {GISMO} Tau lookup of the second beta was wrongly assuming 
	CET timezone for skydip data (like Gabrielle's file for 2012 November)
	whereas Israel's file is in UT. To fix this, the new option 
	'tau.timezone' was introduced, which may be set to any timezone
	specification, like 'UTC' or 'CET'. 

	[BUG] {GISMO} Tracking errors were not fully incorporated into the
	GISMO astrometry. Thanks to Robert Zylka for figuring this out.

	[NEW] {GISMO} The option 'tau.window' is now used also for GISMO,
	describing the 1-sigma Gaussian window in hours over which to average
	tau values.

	[NEW] {GISMO} Tau lookup from skydip table is now despiked at 5 sigma
	to yield more accurate and consistent values.

	[NEW] 'filter.motion' has new option 'stability' to adjust the filter
	for AM noise. The argument is a stability timescale in seconds. E.g.
	
	  filter.motion.stability = 10.0 
	
	to set a 10-second stability timescale. The longer the stability the
	less agressive the motion filter. If the option is not set (default)
	then no filter adjustment is made for AM noise. Currently, no 
	instrument is configured with this option.

	[NEW] The motion filter can now discard harmonics of the dominant
	motion frequencies also. This is useful if the detector response is
	non-linear with the motion. You can use 'filter.motion.harmonics' to
	specify how many harmonics to consider, and use 'filter.motion.odd'
	to reject only the odd harmonics. Currently, none of the default
	configurations use these new options.

	[NEW] The option 'source.sign' can be used to specify if and when the
	physical type of source(s) have a definite signedness. The argument
	can be negative, zero, or positive, and also '-', '*', and '+'. The
	default configuration is to assume that all sources are seen in 
	emission, i.e. have a positive signature. The signature affects how 
	clipping (via 'clip') and blanking (via 'blank') behave on the 
	intermediate source models. 

	[NEW] {GISMO} The condition 'SZ' can be used to tune the reduction for
	SZ clusters. E.g.:

	   > crush gismo [...] -sz <scans> ... 

	By default sources are assumed to be seen in emission only.
	Clusters also tend to be more extended than point sources and they
	can benefit from iterating. Thus, the configuration (gismo/default.cfg)
	has been tweaked such that using the 'SZ' option tunes things a little 
	differently from normal reductions. If you want to detect galaxies and 
	SZ clusters at the same time, it is recommended to reset 
	'source.sign=0' after the 'SZ' option.

	[FIX] {GISMO} CalFlag 10 (reconstructed astrometry) is no longer
	skipped by the reduction, unless the 'skipFWFix' option is set.

	[FIX] {GISMO} Scanning offsets 0.0,0.0 are considered to be invalid
	scan data. These exact offsets should never really occur during regular
	scanning, but they can be used to diagnose data outside of the 
	official scanning period (when the offset is explicitly set to be 0).

	[FIX] {GISMO} Occasionally there are garbage coordinates in the FITS
	table (a crate firmware issue, which can be prevented by rebooting the
	crate every day...). CRUSH now checks the elevation coordinate to 
	identify and flag invalid data when present.

	[FIX] Errors occuring during the pipeline reduction no longer hang 
	CRUSH. The error is reported with a trace and crush exists.

	[FIX] Checking for scans that caused outsized maps was broken. Fixed.

	[FIX] Supplying an initial source model (via 'source.model') did not
	work as intended, when the model was not exactly on the same grid 
	as the reduction image (i.e. if it was not produced by a similar 
	reduction itself.).

	[FIX] If the reduction is given an initial 'source.model' at a 
	different resolution than the instrument beam, then the fluxes are
	rescaled appropriately for the instrument resolution.

	[CHANGE] The keyword 'reservecpus' renamed to the simpler 'idle'. The
	old command remains acceptable as it is aliased to the new keyword. 
	Also, the argument can either be the number of CPU cores that are to
	be idled, or expressed as a percentage of the available core count.
	E.g. 'idle=2' or 'idle=50%'

	[TWEAK] ASCII timestream output (via 'write.ascii') now prints '---'
	in place of flagged data.

	[TWEAK] If source modelling is disabled, do not suggest ways to make
	the source model valid.

	[CONFIG] {GISMO} Updated configuration for Run 9 (2013 Oct-Nov), with
	pointing model, incremental pointing corrections, and locally averaged
	tau values (Gaussian window function with +/- 15 minutes 1-sigma 
	width).
	
	[CONFIG] {GISMO} Recalibrated with Uranus based on Bendo et al. 2013
	model (finalized for 2.15-2 release on 9 December 2013). The new 
	calibration agrees with the old within 4%, 3%, and 10% at 8K, 10K, and 
	12K biases respectively.

	[CONFIG] {GISMO} Added configuration for Run 9 (2013 Oct 22 -- Nov 5)
	and created a 'current' configuration for the future. 

	[CONFIG] {GISMO} Minimum valid scan length changed 30s --> 10s.
	
	[CONFIG] {PolKa} Added HWP analyzer angles, as determined by Helmut
	Wiesemeyer from the 2011 March data.

	[CONFIG] {LABOCA} Skydip and calibration tables updated with the
	latest available data, up to and including 2013 November 24.

	[CODE] Source map coordinate system setting moved up from ScalarMap to 
	SourceMap. Also, Scalarmap defines a grid before super.createFrom()
	sets the projection...

	[CODE] Updating source synchronization gains is now on a pixel-by-pixel
	basis instead of globally.

	[UTIL] Utilities updated to 0.03-1.
	
	[1.xx] Fixed imagetool's '-profile' option to center on sources as was 
	intended.




2.15-1 (19 August 2013)

	Overview
	=====================================================================
	Major improvements to photometry reductions of the BOCAs (LABOCA
	and SABOCA). Much effort went into improving the reliability and
	reproducibility of the photometry result. Photometry reductions now 
	produce output tables and plots (multi-scan reductions only) that can
	be displayed automatically via the 'show' option.
	Beyond photometry, the removal of correlated noise has got a boost,
	resulting in a few percent improvement in sensitivity, typically.
	Please report bugs back to me <attila[AT]submm.caltech.edu>.
	=====================================================================

	[BUG] {LABOCA} Photometry reductions broken in 2.14 (and perhaps also
	in 2.13) due to an unchecked null pointer. Now fixed!
	
	[NEW] {b2} {photometry} Deriving proper weights for the position switch
	phases, when the 'phaseweights' options is set. This way, the phase
	data is combined with proper accounting of the 1/f excess (if any).

	[NEW] {b2} {photometry} Despiking of position switched phase data when
	the 'phasedespike' option is set.

	[NEW] {b2} {photometry} The new key 'pointing.tolerance' can be used
	to control how close the wobbler must be (relative to beam FWHM) to its
 	target position for determining the photometry. A distance of 1/5 beams
	can result in 10% degradation on the boundaries, while the signal would
	degrade by 25% at 1/3 beams distance.

	[NEW] {b2} {photometry} The new option 'neighbours.radius' specifies
	the local neighbourhood of a pixel relative to the beam-size, within
	which other pixels are used for a localized flux correction. Not
	setting this option, or a value of 0.0 will disable neighbour-based
	photometry corrections.

	[NEW] {b2} {photometry} Additional sanity check to photometry, and
	proper degrees-of-freedom accounting and checking.

	[NEW] {photometry} Photometry reductions now write the final result, 
	as well as a scan-by-scan breakdown into a data file. Additionally, if 
	'gnuplot' is configured, it is possible to write also a PNG and EPS 
	output, showing the mean value and the scan-by-scan scatter. The option
	'show' can then be used to automatically display this plot at the end 
	of reduction. (All these functionalities work the same as introduced 
	for skydip reductions in 2.14).

	[NEW] {APEX} {LABOCA} {SABOCA} Photometry now reports the flux derived
	from each scan also, to allow users to evaluate how each scan 
	contributes to the aggregate photometry result.

	[CHANGE] The option 'planetary' has been renamed to the more
	descriptive 'moving' (as it applies to all objects that move relative
	to the celestial frame). However, the options remains aliased as
	'planetary' for full backward compatibility.

	[FIX] {b2} {photometry} Changed the weighting in gain increment 
	calculation. Weights now carry both the correlated signal weight 
	and the data weight.

	[FIX] {b2} {photometry} Photometry was not optimal if the subscan had
	non-integer chop cycles. Luckily, it seems APECS did not let this 
	happen, so the fix should not result in any change in the photometry 
	from the beta release.

	[FIX] {LABOCA} Calibration and tau table lookup now check for infinite
	values and return defaults instead.

	[TWEAK] {2.15-1} {APEX} {photometry} Disable neighbour-based photometry
	flux refinement by default.

	[TWEAK] {APEX} {photometry} Overhauled photometry reduction algorithms.
	1/f drifts are now removed from the chopper phases based on the
	'stability' setting, while chopping DC offsets are estimated from 
	pairwise chops instead of the previous 3-point method. (The pairwise 
	approach, while generally weaker than the 3-point method, works better 
	with the drift removal scheme.)

	[TWEAK] {APEX} {photometry} Photometry is extracted from all pixels
	that happen to chop over the source, even if it's not the reference
	pixel itself.

	[TWEAK] Improved correlated noise removal by updating residuals for any
	unsynchronized gain changes before estimating the new correlated 
	signal.

	[TWEAK] {APEX} {photometry} Nearby pixels are used to refine photometry
	estimate.

	[TWEAK] Initial DC levelling via 'level' now abides by the 'estimator'
	setting to determine whether it should use median or maximum-likelihood
	estimates.	

	[TWEAK] {GISMO} No more exlusivity between gradients and LSS filtering.

	[CONFIG] {GISMO} {b1} Run 7 (Nov 2012) configuration changed to 
	reenable decorrelation on SQUID MUX and also dejumping. Although there
	were no phase jumps (thanks to a clean ground) in Nov 2012 or since,
	the dejumping is also effective at flagging out the periodic IRIG
	interference. Therefore, it's good to leave it activated.

	[CONFIG] {LABOCA} The calibration table supplied with 2.14 (and probably
	many other recent releases) had most of 2012 missing. Fixed.

	[CONFIG] {LABOCA} {photometry} Reconfigured photometry reduction mode
	based on the 2009 commissioning data. 'twisting' is no longer used for 
	'faint' mode, gains are estimated from phases for both the correlated 
	'boxes' and 'cables', and solving the 'cable' gains is delayed until 
	the 2nd iteration.

	[MAN] The 'show' option is added to the crush man page, and help 
	screen, as one of the principal options to crush.

	[MAN] The 'moving' option is added to the crush man page, and help 
	screen, as one of the principal reduction options.

	[MAN] Added 'MAKO' crush man page.
	
	[MAN] Specific HTML descriptions for the UNIX-style online manual 
	pages.

	[MAN] Author hyperlinked in online man pages :-).

	[PACKAGE] Gnuplot dependecies added for RPM and Debian packages. While
	gnuplot is not strictly required to run crush, it enables some plotting
	features for photometry and skydip reductions. Package managers will 
	have no trouble locating and installing gnuplot along with crush, so
	it does not hurt to make it a required dependicy. For now, no version
	requirement is placed on the gnuplot packages though...
	Also, java dependencies updated for Debian package. 

	[CODE] Phase-based and Chopped data are not commonly assumed for all
	instruments, only those that implement the appropriate PhaseModulated
	or Chopping interfaces.

	[CODE] {APEX} Routines to write out nod-cycle data and spectra. These
	are meant for debugging use only, and not (yet) accessible to users.

	[CODE] {skydip} {photometry} PNG and EPS outputs have CRUSH version
	printed on.

	[CODE] {GISMO} Default pixel size updated to April 2012 value, for
	the permanent mount and finalized optics configuration.

	[CODE] Introducing SourceModel.getASCIIHeader().

	[UTIL] Compliance with kovacs.util 0.02-2.



2.14-2 (15 July 2013)


	Overview
	=====================================================================
	This update fixes a critical bug introduced in the last release, which
	could affect calibration and result in excess noise.
	Other than the bug fix, there is little change in functionality.
	However, a lot of work happened under the hood. CRUSH packages have
	become simpler (though larger), while the utility classes that used to 
	be an integral part of CRUSH have started an existence on their own as
	the 'kovacs.util' project. This way, many of the powerful Java tools 
	developed for CRUSH can benefit other projects also. The new 
	kovacs.util classes are currently undergoing some rapid development. 
	Many bits of old code have been cleaned up and re-optimized to work 
	ever faster...
	=====================================================================	


	[CRITICAL] The quick-and-dirty DC levelling that removed DC offsets 
	from a subset of frames only. Ouch! Unfortunately the effect of this 
	bug propagated to the sky-noise removal and gain estimation, which in 
	turn could affect calibration and produce excess noise. Not all 
	instruments and all scans were affected equally. But, everyone using 
	version 2.14-1 is advised to update to this new release as soon
	as possible.

	[PACKAGE] The streamlined packaging of CRUSH no longer includes the
	hundreds of individual source and binary files. Instead, it includes
	a handful of JAR archives. The source code is also included as a JAR,
	and remains available via SVN through the SourceForge project page 
	(click the Project tab on top of the CRUSH homepage.)

	[UTIL] Including kovacs.util classes with version 0.02-1.

	[FIX] Not setting a gainRange for correlated signals was not working
	due to a badly defined default range. Now fixed.

	[FIX] {LABOCA} RCP configuration was incorrect for 2008-05-16 to 
	2008-06-15 due to a typo in the configuration file (laboca/default.cfg)

	[FIX] Parameter accounting of pixel drift/offset removal was sloppy.
	Now fixed.

	[FIX] {MAKO} 'assign.guessT' was not used. Fixed.

	[TWEAK] {APEX} {photometry} {b1} calculated relative phase weights for
	channels now takes into account the lost degrees of freedom from 
	modeling.

	[TWEAK] {GISMO} PaKo pointing corrections suggested only if no 
	pointing model override (via 'pointing.model') and no incremental
	corrections (via 'pointing.log') have been applied.

	[TWEAK] {LABOCA} Chopped photometry DC levelling through mean not 
	median. Median can get ugly with bimodal distributions, such as is the
	chopper signal. The mean is a safer bet here.

	[TWEAK] LSS filtering tweaked such that filter blanking is applied
	only for the composite map, but not on a per-scan basis. This should
	not result in any noticeable change for 'deep' mode reductions, where
	filtering is normally used, since individual scans should not have
	any features bright enough to exceed the blanking threshold, by
	definition. 

	[TWEAK] Modified connection procedure for checking updates. Hopefully
	this resolves the hanging when crush is run with a stale connection.

	[CONFIG] {LABOCA} Adjusted gain range for correlated 'boxes' and 
	'cables' to allow nearly 0 response.

	[CONFIG] {MAKO} 'gradients' enabled for 'faint' and 'deep' reductions.

	[CONFIG] {MAKO} Updated calibration.

	[CODE] {SHARC-2} {MAKO} Removed duplicate code between SHARC-2 and
	MAKO via designated common ancestors. This should also reduce the 
	chance of one or the other having bugs due to unspotted small 
	differences.

	[CODE] Compliance with kovacs.util 0.02-1.

	[CODE] Java utilities previously included in crush are now managed
	separately from crush under the 'kovacs.util' project, and are imported
	into crush through a JAR.

	[CODE] zenithTau moved Frame -> HorizontalFrame.

	[CODE] Frame.getSourceGain(mode) return type changed from double to
	float. It was normally used in a context with other floats, making
	the extra precision unnecessary, while requiring a typecast.	

	[CONFIG] {GISMO} Added pointing model and incremental corrections
	table for the 20143 April run. The pointing is good to 2.5" rms in AZ
	and 2.9" rms in EL for the entire run. Based on 1107 pointing 
	observations.

	[CONFIG] {LABOCA} {SABOCA} Configurations (RCP, tau and calibration
	data) are updated to what is available as of 2013-07-15.

	[CONFIG] LSS filter blanking is now disabled by default, even in deep
	mode. This way, the filtered map has a constant PSF rather than the
	S/N-dependent filtered PSF shape when blanking was used. Users can 
	enable blanking if they desire.

	[UPDATE] Leap seconds data good until 28 Dec 2013. (No new leap second
	was added in June 2013).




2.14-1 (2 June 2013)


	Overview
	======================================================================
	The release fixes a couple of embarrasing bugs, and introduces a host
	of new features, including initial support for MAKO based on the
	April 2013 run; and improved 'beammap' and 'skydip' reduction modes -- 
	the latter now supporting EPS and PNG image outputs. There are many 
	smaller fixes, improvements, and some under-the-hood code changes also.
	======================================================================


	[BUG] The option '-planetary' produced RA/DEC images upside down. 
	Ooops.

	[BUG] Suggested pointing corrections were sometimes wrong, when PNG
	thumbnail writing was on. It was a case a bad inheritance, by which
	the cropping of the PNG image messed up the coordinate system of the
	working image. Fixed.

	[BUG] {skydip} Uninitialized copies of SkyDip data resulted in an error 
	during reduction. Fixed.	

	[NEW] Initial MAKO support.

	[NEW] Option 'flatweights' overrrides weights from 'pixeldata' with
	their uniformized average, s.t. each channel carries the same initial
	weight. This can be useful sometimes when the 'pixeldata' weights are 
	not applicable for some reason.

	[NEW] Option 'show' is introduced to control whether to try display 
	the source model. Currently, only the 'skydip' model uses that to
	to bring up a persistent gnuplot window. However, in the future, other 
	models (like maps) may use this directive also.

	[NEW] The option 'level' removes detector DC levels before entering
	the pipeline analysis. Now default for all currently supported 
	instruments.

	[NEW] New log entries for the source model (map), such as size, rms
	min, max, depth etc. See README for details.

	[NEW] Option 'nefd.map' records NEFD estimates rescaled by map noise,
	when 'weighting.scans' is also set. Without this option, the NEFD 
	estimates will be based on time-stream noise alone. Thus, if 'nefd.map'
	is not set, there is no change in behaviour to prior versions. (The new
	option is mainly useful for logging the desired NEFD measure via 
	'log').

	[NEW] New option 'gnuplot' allows using gnuplot as an external plotting
	tool (e.g. for skydip reductions). If gnuplot is in your path, the
	option does not need an argument. Otherwise, the optional argument
	can point to the gnuplot executable to use, e.g.:

		gnuplot /usr/bin/gnuplot

	[NEW] New options 'K2Jy' and 'kelvin' are introduced. 'K2Jy' can be
	used to set a Jy/K conversion value, whereas 'kelvin' can be used
	alternatively to set a conversion from data units directly to kelvin,
	similarly to how the 'jansky' option works. Currently only the skydip
	model uses the 'kelvin' scale, but it may be added as an alternative
	unit for all source models in the future.

	[NEW] New option 'skydip.ELrange' can restrict what elevation range
	to use from the skydip data. E.g.:

		skydip.ELrange = 15:65

	Will restrict the fitting to between 25 deg and 55 deg elevation.	

	[FIX] {2.14-1} Log-based average gain normalization was not used for
	gain flagging. Now it is :-).

	[FIX] CircularRegion.fineTunePeak to update coordinates. Used for 
	pointing fit via 'peak' method.

	[FIX] {b1} {MAKO} Equatorial scans OK.

	[FIX] {SHARC-2} Date- or MJD-specific conditions were not applied, 
	since the scan date was not set via the prescribed method. This was
	not a big problem, since only serial-number-specific conditionals were
	(are) used in the SHARC-2 configuration. Nevertheless, the possibility
	for date- and MJD-specific conditions should be left open for all
	instruments, including SHARC-2.

	[FIX] Previously, projections did not apply to horizontal maps or
	moving objects (reduced with -planetary). Those were always produced
	in the default projection (GLS, or as the old-fashioned tend to call
	it: SFL). From now on, the projection directive is always followed,
	even in focal-plane coordinates. (It makes things a tiny bit slower
	but these are not the typical reduction modes anyway...) 

	[FIX] Noise whitening filter went berserk when 'whiten.proberange'
	was set to '*'. Now fixed.
	
	[FIX] Diagonals of covariance matrices were not flagged out as
	intended.

	[FIX] {SHARC-2} Instant focus suggested incorrect x_position due to
	a units conversion issue. Now, the instant focus uses proper units to
	avoid further confusion. 
	
	[TWEAK] {2.14-1} {MAKO} Assumed cold-load temperature changed to 112.2 
	K, based on the sky-load fit.

	[TWEAK] log based average sensitivity calculation for weight flagging.
	Should make noise range flagging more robust.

	[TWEAK] 'whiten.proberange' can be set to 'auto' to automatically 
	ajust the probing range for point sources. This is now default for
	all instruments, except LABOCA where microphonics avoidance requires
	a fixed probing range.

	[TWEAK] {b1} {beammap} Beam maps are now procured in focal-plane
	coordinates. Thus, scan maps are properly derotated frame-by-frame
	s.t. the resulting maps are fully aligned in array coordinates.

	[TWEAK] {b1} {MAKO} Two-step pixel assignment. First, assign tones with
	a static toneid based on hot/cold measurements. Then, match the pixel
	identifications to these. This way, only uniquely identified tones
	get pixel assignment for mapping, and beammaps are possible with
	fixed tone-ids across different loading conditions.

	[TWEAK] {b1} {MAKO} Eliminated possible duplicate tone assignments.

	[TWEAK] {b1} {MAKO} Blind tones are ignored.

	[TWEAK] Changed the method of average gain calculation to log-based. 
	This mutes the effect of insane pixels/channels messing up the gain
	flagging step. As a result, gain flagging should become more robust.

	[TWEAK] Removal of DC levels and bootstrap pixel weight estimation
	(if 'pixeldata' is not set) are now common features to all instruments.

	[TWEAK] Changed [beammap] conditions in configs to the more properly
	formulated [source.type?beammap] condition.
	
	[CONFIG] 'offsets' and 'drifts' made mutually exclusive, by default.

	[CODE] RCP formatting is now decentralized similar to writing channel
	information via 'pixeldata'. Allows more flexible instrument-specific
	formatting. 

	[CODE] Beammap RCP writing uses array's RCP writing, removing a silly
	duplicity.

	[CODE] Updated Vector2D and Complex classes. Cleanup and performance
	tweaks.

	[CODE] channel.fixedIndex access via safer get/set methods only.
	
	[CODE] Frame/HorizontalFrame updates.

	[CODE] Eliminated unnecessary instrument copy for source instance
	generation.
	
	[CODE] Updated copyright headers for all source files.

	[CLEAN] The sub-key 'data2k' changed to 'kelvin' (which was in the
	GLOSSARY) on skydip and skydip.kelvin. 



2.13-1	(14 April 2013)

	[NEW] {APEX} New configuration keys 'tau.window' and 'scale.window' can 
	be used to specify the 1-sigma Gaussian time window (in hours) for 
	obtaining locally averaged tau and scaling values from lookup tables.

	[BUG] {beammap} beammaps could not be iterated due to an ill-defined
	accumulation operation. Now fixed.
	
	[BUG] {beammap} Validation was broken. Now fixed.

	[FIX] {beammap} Flagged pixels could result in error.

	[FIX] {SHARC-2} Parsing of the pointing center from the FITS was off
	by 1 pixels in both directions (Java vs FITS indexing). This caused
	no trouble in general since the pointing center was defined in the
	config file, overriding the FITS values.

	[CHANGE] {APEX} Changed the way tau and calibration tables are 
	processed, to use weighted local averages instead of the old linear
	interpolation method. The new keywords 'tau.window' and 'scale.window'
	can be used to set the 1-sigma weighting window in hours.

	[TWEAK] {GISMO} More efficient pointing table lookup and tau table 
	lookup, changed from O(N) to O(log2 N).

	[TWEAK] 'poll' lists 'forgotten' keys, only if these exist.

	[SPEED] Smarter sourcemodel copies are made, by skipping content copy
	when not necessary. Same goes for resets. These results in a small 
	performance gain, especially for large source maps...

	[CODE] Locally averaged data (pointing tables, tau taubles, etc.) now
	have a common framework, with O(log2 N) lookup time, and a common 
	distance-based weighting scheme (with a default Gaussian profile).

	[CODE] Infrastructure for new smarter handling of channel flags. The
	main purpose is to be able to use letter codes (and/or names) in 
	datafiles instead of the obscure binary values.

	[CODE] {SHARC-2} Eliminated some dead (commented-out) code.

	[CODE] Some cleanup of imaging classes. Safer copies by annihilating 
	before setSize().

	[UPDATE] {LABOCA} 'tau.dat' and 'calibration.dat' updated to current
	as of what wad available on 8 April 2013.


2.13-b2 (beta)


	[NEW] {GISMO} 'tau.225GHz' can now specify a file containing skydip
        indormation (in the format of Gabrielle Bruni). From this, CRUSH
        calculates an appropriate tau for each scan based on a Gaussian 
        weighted sum of the measuremens with FWHM of 10 minutes around each 
        scan. This method of tau determination is now default for the 2012
        November run.

	[BUG] {APEX} Error estimates were quite wrong in LABOCA/SABOCA 
	photometry.

	[FIX] {SHARC2} The rarely used horizontal scanning offsets were already
	included for Nov 2002 data (but need to be added afterwards). New
	configuration key 'offsets.add' can be used to specify when the static
	offsets have to be added explicitly to the coordinates. Same goes for
	chopper offsets.

	[FIX] Levelling of chopper signals used medians, but because it's
	bimodal, the mean is better.

	[FIX] {log} Logging of dates could be wrong, when run in a non-UTC
	timezone. Fixed it by forcing UTC time-zones always to give proper
	UTC dates.
	
	[FIX] Some sanity checks for automatic downsampling.

	[FIX] {SHARC2} Stale equatorial coordinates are ignored when reducing
	non-tracking scans.
	
	[FIX] {SHARC2} Logging of 'pnt.FZAO' was incorrect.
	
	[FIX] {SHARC2} Logging focus quantities wrote them in microns rather
	than the expected mm units. Now fixed.

	[FIX] {SHARC2} Fixes for processing very early data from the beginning
	of Nov 2002, when the data format was not yet finalized. The fixes 
	include:

	  * Missing source coordinates in FITS header.
	  * Missing rotator information.
	  * RA/DEC columns in radians rather than expected units.
	  * Incorrect source names.

	As a result nearly all scans from Nov 2002 can now be reduced correctly
	and without problems.

	[TWEAK] {SHARC2} Adjusted 'faint' + 'extended' configuration, based on
	the Cygnus X dataset bu F. Motte.

	[TWEAK] Default 'mappingfraction' changed to 0.5 (from 0.67), requiring
	at least half of non-dead pixels to be healthy for mapping to proceed
	 
	[TWEAK] Maximum-likelihood estimators are now default from the start,
	except for GISMO, which retains median estimators for the first 
	iteration.

	[TWEAK] {SHARC-2} Chopper response, when chopper is used, is estimated 
	for 'faint' and 'deep' mode reductions only. Previously it was default
	at all brightness levels.

	[UPDATE] {LABOCA} Pixel gain/weight/flag data updated. The photometry
	reductions especially are sensitive on how such pixel data are derived.


2.13-b1 (beta)

	[BUG] 'beammap' option was once again broken due to a non-inheritance
	of the configuration options. Now fixed.

	[NEW] Added troubleshooting information for failed reductions, when the 
	reduction does not result in a valid source model. Suggestions are
	also provided for improvement when not all of the scans are 
	contributing to the source.

	[NEW] 'outpath.create' can be used to automatically create, as needed, 
	the path specified by 'outpath'.

	[NEW] {GISMO} Added 'bias' as a log quantity.

	[NEW] Added 'version' and 'fullversion' to CRUSH properties. This 
	allows, for example, to set output paths, which are version dependent.
	E.g.:

	   outpath ~/data/{&version}

	will place the output into '~/data/2.13-1' for the 2.13-1 release. The 
	'fullversion' propertry also contains the extended release info, e.g. 
	'2.13-b1 (devel.6)'.

	[FIX] {GISMO} Suggested PaKo pointing offsets now can be entered as 
	shown. Prior to the fix, these were incremental values, which had to
	be added to the values already applied.

	[FIX] Leap-seconds lookup threw an exception. Now fixed. Also, 
	the current historical list of leap second data are now parsed from
	'data/leap-seconds.list' for accurate conversion between UTC calendar 
	dates and MJD dates. This file has to be updated manually. 

	[TWEAK] CRUSH will exit with an error if the specified output path is 
	invalid. It will also offer suggestions fo making it work.

	[TWEAK] Noise weighting proceeds even if all channels are flagged on
	entry, since the re-weighting might result in the unflagging of some
	of these.

	[TWEAK] Logging no longer produces an error if it encounters an
	invalid log file. Instead, it will produce a warning, and proceed
	with the specified conflict policy (overwrite, or versioning) to
	create a new valid log file.

	[TWEAK] {imagetool} Added improved '-masks=extract' functionality,
	which can be used for extracting counterparts to a given catalog. The
	extraction routine properly accounts for the search area, based on the
	error circle radius specified in the catalog file and the S/N of the
	nearest peak within, and calculates detection confidence levels 
	accordingly.

	[DEPRECATE] Deprecated 'source.nefd' option. Low NEFD scans are not
	necessarily bad, and are automatically downweighted by the reduction
	making this crude flagging generally unnecessary. It was also the 
	source of trouble to users, who sometimes had trouble with why the
	reduction produced no map. The option therefore is no longer 
	supported.

	[CHANGE] When all pixels are flagged after noise weighting the 
	message in place of the NEFD number is changed to 'FLAG' to make it
	more indicative. One may try to adjust the noise flagging via
	'weighting.noiseRange'.

	[SPEED] Filters now use newly implemented, state-of-the-art 
	split-radix FFTs. These are not only faster than the old, and less 
	efficient radix-2, but also do not accumulate errors as much, resulting 
	in better precision for large datasets. The new FFT performance matches 
	that of the FFTW libraries (allegedly the fastest FFTs) when running on
	a single-thread, and significantly exceeds FFTW when run parallelized 
	on multi-core CPUs.

	[CONFIG] {GISMO} Calibration for bias 16000 has been derived and
	added to run6.cfg. It is based on comparison of a quasar flux with
	both the Run6 setting for 12K, and the 16K bias. The value is expected
	to be accurate on the 1% level.

	[CONFIG] {GISMO} Now has pointing model and incremental corrections,
	based on the pointing measurements, for the 2012 November run. The
	model is good to 2.8" in AZ and 3.8" in EL (rms) for most of the run.
	There were large excursions from the model on Nov 10-12 (probably
	wind-related). Be extra cautious when reducing data from that period.

	[CODE] New functions added to Util class, helping rounding integers
	to nearest powers of 2.
	
	[CODE] Removed unnecessary empty statements.


2.12-2 (10 Sep 2012)


	Overview
	=====================================================================
	This is a bug-fix update of the 2.12 release. One major bug was found
	and fixed relating to the use of the Large-Scale Structure (LSS)
	filter in 'deep' mode reduction. The intention was for the filter to
	preserve point-source fluxes, by applying an appropriate correction.
	However, a badly constructed 'if' statement meant that no corrections
	were applied, resulting in 5-30% reduced point source fluxes, depending
	on the filter setting.
	Also updated the GISMO 'faint' and 'deep' configurations, and bringing
	a few more fixes and improvements.
	=====================================================================

	[BUG] {deep} LSS filter corrections were inadvertently not applied. 
	This resulted in a 5-30% underestimation of 'deep' mode fluxes 
	(depending on the filter width relative to the beam size). Now fixed. 
	Several other issues also fixed and cleaned-up relating to the filter 
	correction scheme.

	[NEW] New 'show' colors now fully ported to CRUSH-2, and are available
	to 'write.png.color' (see GLOSSARY for details).

	[CONFIG] {faint} {deep} Despiking by 'absolute' deviations starting
	from the 2nd iteration is reinstated. It seems to produce higher
	quality deep maps.

	[CONFIG] {GISMO} {faint} {deep} Updated the GISMO 'faint' and 'deep'
	configurations based on the GDF data, including the 2012 April run.
	The changes include a delayed switch from median to maximum-likelihood
	estimators for correlated signals, a relaxed motion filter, and 15
	iterations.

	[COSMETIC] Updated 'wrapper.sh' to make it even easier to configure
	Java runtime settings. The updated version is structured in a more
	logical fashion.

	[PACKAGE] Cleaned & fixed spec file used for making RPM packages.

	[CODE] Some structural changes to parallel processing framework.


2.12-1 (20 Jun 2012)


	Overview
	=====================================================================
	A new experimental feature allows including dynamic references in 
	configuration key/value statements, to other config settings, shell
	environment variables or Java properties, making for smarter scripting.
	New colors have been added to 'show' (still the old 1.xx version). 
	Also, the release brings CRUSH up-to-date with GISMO's 2012 April run,
	with new features, improvements and a current configuration for the
	finalized state of the instrument. There are also fixes and 
	improvements for the function of other instruments, and to CRUSH in
	general.	
	=====================================================================

	[NEW] {since-b1} New 'echo' command added allowing to print user's
	statements to the error stream as configuration settings are parsed.
	Together with the experimental new feature to include references (see
	further below), 'echo' can be used to track actual values (in some way 
	similarly to 'poll', but resolving dynamic references also, and 
	including other user-specified information). E.g.:

	   crush [...] -echo="### Check: Jy = {?jansky} {?dataunit}" [...]

	The above line, when used with 2007 LABOCA data would print to the
	console:
	
	   ### Check: Jy = 1.78e-7 V

	right when the parser reaches the 'echo' statement.

	[NEW] {since-a1} Added some new color schemes to 'show' (hint: you can 
	cycle through the colors by pressing 'k' or 'K' (for reverse cycle) in 
	the 'show' display', while pressing 'h' brings up a help screen with 
	all the functions!).

	[NEW] {since-a1} {GISMO} Ability to set options based on IRAM scan IDs.
	These work just like the 'serial' options, but use the IRAM specific
	format of scan IDs that include the date ('YYYY-MM-DD.nnn'). E.g.
	
	   id.[2012-04-11.132:2012-04-13.26] jansky 18.6

	sets the conversion factor (counts/Jy) to 18.6 starting scan #136 on
	2012-04-11 until (but not including!) scan #26 on 2012-04-13.

	[NEW] {since a1} Gain changes are immediately applied to all signals
	that rely on the same set of gains. This adds a refinement on the
	removal of gradients (all arrays), the LABOCA twisting mode or the
	GISMO wiring-trace 'flip' mode. 

	[NEW] Pointing reductions now measure the source shape in a more
	sophisticated way, providing a measure of the x and y asymmetry of the
	source (and lobes!). This, in principle allows focusing on a single
	image of a point source, provided that it is characterized how the
	source shape changes with focus settings. The conversion of shape 
	parameters (asymmetry and elongation) into focus changes is controlled
	by the new configuration keys 'focus.xcoeff', 'focus.ycoeff' and 
	'focus.zcoeff'. The definition of these is still in progress.

	[NEW] Pipeline elements can be activated/deactivated scan-by-scan, and
	conditionally induced by date, MJD or serial number. As before, global
	options should precede the listing of scans.

	[NEW] {GISMO} Two new pipeline features have been added, to help deal 
	with the observed jumps in detector levels (probably due to E-M pickup
	on the SQUID muxes). The first of these is the addition of a 'flips'
	modalility, that can be decorrelated. These model signals on muxes with
	alternating gains on pairs of pixels. The model is preliminary and 
	awaits confirmation from Dominic Benford who designed the wiring traces
	that give rise to these current flips. The second new feature is
	'dejump', which looks for sudden transient changes in the readout 
	levels (somewhat similarly to how 'despike' works). The critical level
	can be set by the 'level' subkey, as a relative noise threshold (>1.0)
	while the length of jumps that are shorter than the 'minlength' setting
	(in seconds) will be flagged, whereas longer jumps will be re-levelled
	and kept.

	[NEW] {GISMO} Bias-dependent settings are now allowed via conditionals
	under the 'bias' key. E.g. to define different conversion values
	(from counts to jansky):

		bias.[8000] jansky 36.6
		bias.[10000] jansky 24.67

	[NEW] New logging entries for source elongation and angle, as well as
	projected elongation in the telescope x direction. See README for
	details.

	[NEW] 'drifts' can now take the value 'max', which fits just a single
	offset value for the timestream of a detector channel. As such the
	setting is identical in functionality to 'offsets'.

	[EXPERIMENTAL] {since-b1} New configuration syntax allows to 
	incorporate references (to other configuration values or environment 
	variables) directly in script or in command-line using square brackets 
	to indicate references (in general). E.g. if you want to set the output
	folder relative to the location of the raw data, you can now do it by 
	enclosing 'datapath', whose value will be substituted, between 
	curly {}'s with a ?:

		outpath={?datapath}/images

	The ?'s specify that the 'datapath' variable should be substituted when
	evaluated. The substitution will happen dynamically, i.e. every time the
	'outpath' value is accessed. This will not work for recursive 
	substitutions (which will be stuck in an infinite loop!). Instead you
	can use & for static subsitutions, E.g.

		outpath={&outpath}/2012

	This second type of expression is evaluated only once, at parsing, when
	the substitution is made once and for all. The above line would set the
	new outpath to the '2012' subfolder of the old 'outpath'.
	In addition to configuration values you can also query the 'instrument'
	value the same way. E.g.:

		> crush laboca -config="~/{?instrument}/myconfig.cfg" ...

	will load the configuration from "~/laboca/myconfig.cfg"

	Finally, the same way you can now always access environment variables
	with @, or Java properties with #. E.g.

		outpath={@HOME}/images
		outpath={#user.home}/images

	The old way of incorporating environment variables (e.g. as {$HOME})
	will be deprecated downstream. The old way worked only with a few
	options (unlike the new method which works universally), and also 
	conflicted with the shell (bash) syntax, when used on the command-line.
	The new syntax is more shell (bash) friendly.
	Note, this new feature is still at an experimental stage, because the 
	syntax may evolve for better command-line integration across platforms 
	and shells.

	[CHANGE] {since a1} Changes to keystrokes in 'show': 'K' now works with
	'k' to toggle colorschemes back and forth, while convolving to beam is 
        performed by 'Q' (paired with devoncolution 'q').

	[CHANGE] Naming of focus quantities for logging has been changed. See
	the logging section of the README for details.

	[CHANGE] Map redundancy check moved from scan to compound map.

	[FIX] {since-b1} {GISMO} 'dejump.minlength' was not working exactly
	as advertised, maxing out at the current 1/f filter time-scale. Now
	fixed.

	[FIX] {since-b1} {GISMO} Decorrelating 'flips' was not working as
	intended in 2.12-b1 because of a residue from abandoned code. Should
	be OK now.

	[FIX] {since-b1} Changing signal resolution during reduction was not
	handled well under certain flagging conditions. Now fixed.

	[FIX] {since-b1} Changed the way gradient gains are centered, such that
	they are orthogonal to the underlying correlated component.

	[FIX] {since-b1} Values with errors printed funny by default when no 
	unit was specified.

	[FIX] {GISMO} All pointing information in FITS is now correctly 
	interpreted (or so I hope). Looks like Nasmyth offsets in CRUSH model 
	are inverted w.r.t. the IRAM constants. it works, so probably leave it 
	as is...

	[FIX] All HDUs in the output image FITS now contain the full header 
	information as expected.

	[FIX] Found reason why filters did not work together with time
	weighting. The problem was that MultiFilter did not propagate the
	number of data points to its children, which ended up with infinite 
	frame dependents as a result. The fix includes checking to make sure
	that dependents are valid, and propagating the number of data points
	to children. 

	[FIX] {GISMO} Focus and Nasmyth offsets were not parsed correctly. 
	(Was looking for these values in the wrong HDU.)

	[FIX] Filter levelling was not taking frame weights into account.

	[FIX] {GISMO} Fixed treating horizontal and equatorial (projection)
	offsets.

	[FIX] {GISMO} Suggested Nasmyth pointing offsets sign fixed and 
	confirmed.

	[FIX] Fixed and cleaned up rendering transformations and zooming of 
	various image classes used by CRUSH to make parts work that weren't 
	really used before. These will eventually provide the imaging for 
	the upcoming native crush-2 'show' tool. (We are still using the
	CRUSH-1.xx 'show' and other tools).

	[FIX] PNG centering: previously, PNG images were centered on the 
	nominal tracking center, not the image center, sometimes resulting
	in images that were shifted to one side and part of it cut off on the
	other side. From now, the PNG images always fill the allotted image 
	area.
	
	[FIX] The results of pointing reductions (via 'point') were ever so 
	slightly incorrect in reporting. (The fix does not change reductions,
	only the way the pointing fit to the source is performed/analyzed.)

	[FIX] PolarVector2D power op was wrongly defined. However, since this
	feature was never used in CRUSH, there was no damage done by it.

	[TWEAK] {since-b1} Slight adjustment of parameter accounting for 
	correlated signals, now taking into account the effect of 1/f 
	filtering and gain normalization (which make the values less than fully 
	independent!)

	[TWEAK] {since-b1} {GISMO} Refined the way de-jumping counts its
	parameters dependecies (used for obtaining proper noise weights).

	[TWEAK] {since-a1} De-jumping produced unintended time-weighting 
	residues. Now, at the end of the de-jumping algorithm, the previous 
	time weights are reinstated, except in the re-levelled regions, where
	uniform weights are presumed (until more correct weights are assigned).

	[TWEAK] {since-a1} Decorrelation of sky gradients now properly includes
	the measured common-mode gains. (Essentially a Spinoff of the common
	mode).

	[TWEAK] {since-a1} 'flips' gains linked to 'mux' gains and are applied
	on top of those, without independent fitting.

	[TWEAK] Time-weighting renormalization adjusted.

	[TWEAK] Uncertainty calculation of elongation measure improved.

	[CONFIG] {since-b1} {GISMO} Tweaked faint/deep-mode configurations
	based on the set of faint sources of 249-11. Dejumping mainly by 
	flagging, no wire-trace flips (these are too much of a guess-work
	anyway), longer 7.5 sec stability for 'deep', and no frame-weighting.

	[CONFIG] {since-b1} {GISMO} Solving for MUX gains delayed until the 2nd
	iteration. It results in better and more stable reductions.

	[CONFIG] {since-a1} {GISMO} Recalibrated pre-2012 configs for 17.5" 
	FWHM beam (previous 16.7" was assumed but was quite certainly too 
	low!). The new calibration is simply a rescaled version of the old 
	calibration for the different beam size.

	[CONFIG] {since-a1} Reenabled MUX gain modelling. It is necessary to
	reach white-noise limit.

	[CONFIG] Finalized pointing model, and pointing log (for incremental
	corrections) for the 2012 April run. The model is good to ~3" rms
	in both directions for the entire run, while the incremental
	corrections should further reduce the pointing uncertainty to ~1--2"
	rms.

	[CONFIG] {GISMO} Updated 'deep' configuration to run for fewer (12) 
	iterations. Nevertheless, the best deep maps are usually obtained with
	25--30 iterations. Set 'rounds' manually if more iterations are 
	desired.

	[CONFIG] {GISMO} Gradients re-enabled in 'deep' mode. LSS filter 
	cannot completely replace gradients because of 'edge' effects...
	
	[CONFIG] {GISMO} tau(225GHz) to PWV conversion changed to match that on
	IRAM's weather page (ATM07).
	
	[CONFIG] Updated 'extended' configuration based on AtlasGal.

	[CONFIG] {GISMO} Finalized RCP and pixel data for April 2012 run.

	[CONFIG] {GISMO} Finalized conversion factors (for bias settings 
	8000, 10000, and 12000) based on Mars and Neptune. Good to ~1% or
	better.

	[CONFIG] {GISMO} Finalized pointing models for the 2012 April run. The
	model gives a blind pointing to 3" rms accuracy in both directions for
	the entire duration of the run. On top of that incremental pointing 
	corrections are applied based on nearby pointing sources, s.t. the 
	final pointing accuracy of CRUSH for the 2012 April run ought to be 
	around 1--2" rms or better.

	[COSMETIC] Despiking now reports the number of spikes removed rather 
	than a percentage of frames.

	[CODE] {since-b1} Made sure all open streams are closed when no longer 
	used. Thanks to Eclipse JUNO for finding the trouble spots!

	[CODE] {since-b1} Configured paths now uniformly accessed through
	Configurator.getPath().

	[CODE] {since-b1} Improved rendering and transparency handling of PNG 
	(and display) images. PNG output can now handle complex components
	(e.g. with coordinates, labels, colorbars) not just pure images. Most
	of these changes will not be visible to the user until the new 'show'
	tool is released (soon...).

	[CODE] {since-b1} Each configuration banch now has direct access to the
	root of the configuration tree (needed for resolving dynamic 
	references).

	[CODE] {since-a1} Cleaned up access to associated instrument properties
	in source model.

	[CODE] {since-a1} Added equals() for Mode to go with its hashCode().
	
	[CODE] {since-a1} Modes that share gains with other correlated modes
	are now Spinoff modes of the parent gain provider mode. Also, new code
	allows for more flexibility in specifying mode gains.
	
	[CODE] Units completely revamped, with smarter parsing & compounding.
	Better integration with Data2D and derived classes.

	[CODE] Data2D and children now use Compound units and dynamically 
	evaluated 'jansky', 'beam', and 'pixel' units. This makes life a whole
	lot easier when doing operations like smoothing/regridding...

	[CODE] Gismo.copy() updated to correctly deal with fields.

	[CODE] Many classes are updated to hide private fields, and access them
	through getters/setters only. The change reduces the propensity for 
	nasty bugs.

	[CODE] More work on imaging classes. The day of native CRUSH-2 image
	tools is getting ever closer...

	[PACKAGE] Added java7-runtime as acceptable dependence for Debian 
	packages.	

	[PACKAGE] Fixed bad RPM symlinks to executables.

	[UPDATE] Updated configs to use the new environment variable reference
	scheme. The old syntax is also accepted, although it may eventually be
	phased out.


2.11-2 (16 March 2012)


	Overview
	======================================================================
	This is a maintenance update of CRUSH 2.11, fixing the broken 'beammap'
	function, and fixing many smaller issues of the previous release. 
	Some improvements (esp. for GISMO) are included also.
	======================================================================


	[BUG] {beammap} Beammap function did not work. Now fixed.

	[NEW] The 'poll' command now recognises and expands aliases. 

	[NEW] 'write.png.plane' can be used to select which image plane is
	dispalyed in the PNG image. The argument can be one of 'flux', 'noise'
	'weight', 'time', or 's2n'. The default value is 'flux'.

	[NEW] 'write.png.bg' now accepts 'transparent' as an argument.

	[NEW] 'write.png' now enabled by default, s.t. a PNG preview image is
	generated with every FITS file. This makes it easier to 'browse' crush
	images. The default size is 500x500 pixels, the color scheme is 
	'colorful' and background is 'transparent'. These settings can be 
	overwritten by the various sub-options of 'write.png'. Also, to provide
	a high quality preview, the preview images are always smoothed by 1/2 
	beam (resulting in just 12% degradation in resolution), even if the 
	FITS image itself is not smoothed, and are presented as S/N, to 
	de-emphasise the noisy edges.

	[NEW] {GISMO} Now handling scans with exotic coordinate basis (e.g.
	ecliptic, galactic or supergalactic frame).	

	[NEW] {GIDMO} Now using PNTROW, and PNTCOL keywords to determine the
	pointing center on the array, allowing, in principle, to center the
	source anywhere on the array. The changing of the pointing center
	does not affect the pointing model, which is referenced to the 
	geometric array center (but this needs to be tested, though!!!).

	[NEW] {GISMO} Improved conformance to IRAM FITS files: (1) support for
	raw scanning offsets (not 'True' angles); (2) parsing of static 
	scanning offsets, and the nasmyth offset (set by user in PAKO); (3)
	Now using telescope location from FITS (having had confirmed that these 
	agree with Juan's values). (4) Nasmyth offset incorporated into 
	pointing (but it does not actually center source on array!)

	[CHANGE] {GISMO} 'pointing.log' key renamed to 'pointing.table'.

	[CHANGE] {GISMO} 'dataname.end' now accepts a comma-separated list of
	filename endings, which are tried in order until a match is found.

	[FIX] {GISMO} 'rotation' key had no effect. Fixed.
	
	[FIX] Long values to full length (8 character) standard FITS keywords
	resulted in a exception. Now fixed.

	[FIX] Date-dependent configurations sometimes left an unconfigured day
	between connecting intervals. In principle, the end date of one 
	interval should match exactly the starting date of the next interval
	since both are interpreted as 00:00:00 UT, when the time is not 
	specified explicitly. E.g.:

		date.[2012.03.01--2012.04.01] march2012
		date.[2012.04.01--2012.05.01] april2012

	[FIX] {GISMO} Scans in equatorial coordinates could not be processed 
	before because the rotation of scanning offsets into native horizontal 
	offsets preceded the prerequisite calculation of the parallactic angle.
	Fixed.

	[FIX] {GISMO} Tracking errors were missing from scanning positions!
	(Also, in the old version these errors were assumed with the wrong
	sign. Untypically, the values are commanded minus actual.)

	[FIX] {GISMO} Version-specific conditionals were not parsed as 
	advertised. Now fixed.

	[FIX] {GISMO} Automatic merge version detection failed with old FITS
	format (ver 1.6) unless explicitly set by the 'ver' option.
	
	[FIX] {APEX} Photometry formatting of negative fluxes always produced
	results in uJy/beam. Fixed.

	[TWEAK] 'write.png' now smoothes thumbnail image by half a beam (12%
	degradation of resolution) and presents S/N to give the preview image
	a higher quality visual appearance.

	[TWEAK] {GISMO} Pointing model expanded to 16 constants, with terms
	dependent on 2AZ, as well as refraction correction.

	[TWEAK] Slight speedup of scan reading, by skipping processing of FITS 
	rows with no telescope data (or if invalid otherwise).

	[TWEAK] {GISMO} The time window for high quality incremental pointing 
	correction has been expanded to 1 hour. This mitigates the effect of
	a single pointing datum with anomalous refraction.

	[TWEAK] {GISMO} Sign convention of GISMO Nasmyth offsets made to 
	conform with IRAM's convention, both for the pointing model and the
	suggested offsets. Note, however, that Juan's poiting fit gives a V
	that has an opposite sign compared to P11.

	[TWEAK] {GISMO} If (for wahetever reason) the FITS merge version does 
	not appear in the FITS file, assume the latest version possible...

	[TWEAK] 'faint' and 'deep' no longer switch to 'absolute' despiking
	after the first iteration. This is to prevent over-zelous despiking.

	[TWEAK] Source extraction via 'detect' now offers two types of false
        detection rates (one based on purely Gaussian statistics, and one with
        guesstimate corrections for actual distribution of sources/negatives).
        In its output it also offers some explanation as to what these values
        and confidence percentages mean.

	[TWEAK] Source extraction 'detect' now does a cleanup round, to
        ensure no additional sources can be found inside the filter bowls of
        the last successful extraction round.

	[TWEAK] {GISMO} Using a new synthetic RCP, based on the measured one
	on Neptune, with positions for all pixels, not only the ones detecting
	during the beammap.
	
	[CODE] Configurator.Entry made into a proper inner class.

	[UPDATE] {GISMO} Updated static pointing model for new FITS. merge.
	Should be good to 2.5" rms in both directions, for the April 2011 run.

	[UPDATE] {GISMO} Run 5 (starting 2012-03-03) configuration added.
	However, with the issues we were experiencing with M5 and M6, there is
	not much use for this configuration...
	

2.11-1 (16 Feb 2012)

	Overview
	===================================================================
	This is a major update of CRUSH. It fixes a but on reporting pointing
	offsets for SHARC-2, provides much better support for PolKa, based on 
	the Dec 2011 run. It also fixes various other issues, and offers
	improvements (esp. for GISMO). Under the hood, a lot of code was
	restructured for cleaner and faster operation.
	===================================================================

	[BUG] {SHARC-2} suggested FZAO pointing offsets were wrongly calculated
	(sign error). Fixed.

	[BUG] Crossing times were not correctly calculated (returned size, not
	actual crossing time...). Fixed.

	[NEW] Reductions in moving frames (e.g. planets, Moons). The option
	'planetary' can be used to specify moving frames, if these aren't
	automatically detected based on the scan headers.

	[NEW] Introducing a parallel processing framework for images. The goal 
	is to speed up image processing functionality on modern multicore 
	systems. Most image operations are now utilizing all available CPU 
	power. This will result in a small gain for reduction purposes, but 
	should make the upcoming new 'show', 'imagetool' (etc.) more 
	responsive, especially when handling large images...

	[NEW] {GISMO} Implemented new merged data reading. The new FITS files
	(ver. 1.7) correspond more closely with the original IRAM data, and 
	thus hopefully fix the pointing problems we experienced earlier.

	[NEW] {PolKa} New loggable quantities 'analyzer', 'wpdelay', 'wpdir', 
	'wpok'. See the logging section of the README for details.

	[NEW] {PolKa} A map of the polarization angles can now be produced also
	via the 'source.polar.angles' option or the 'spa' shorthand.
	
	[NEW] {PolKa} Now taking into account the non-sinusoidal modulation of
	polarized light resulting from the oblique incidence on the waveplate.
	The incidence angle can be set by 'waveplate.incidence', while the
	direction of the incidence is set by 'waveplate.incidence.phase'.

	[NEW] {PolKa} The angles (in the horizontal frame of the C-cabin) of
	the analyzer grids can now be set separately via 'analyzer.v' and
	'analyzer.h'.

	[NEW] {PolKa} A workaround for missing waveplate data during the 2011
	December run. Waveplate angles can be reconstructed using the total-
	power modulation of a specified channel ('waveplate.tpchannel') using
	a specified harmonic of the waveplate frequency 
	('waveplate.tpharmonic'), and using the phases 'analyzer.h.phase' and
	'analyzer.v.phase' (which can be measured via 'waveplate.tpchar' when
	the waveplate data is there).

	[NEW] {PolKa} As of 2011 Dec, the time offset to the last available 
	waveplate crossing is stored in one of the unused LABOCA channels. The
	option 'waveplate.tchannel' can be used to specify which channel that 
	is, allowing a full reconctruction of the waveplate crossings.

	[NEW] {PolKa} There is still a problem with the accuracy of the 
	waveplate timestamps, which impacts how accurately the waveplate angles
	are reconstructed. Luckily, the physical rotation of the waveplate
	seems extremely uniform. Thus, one can use 'waveplate.regulate' to use
	a linear fit to the timestamps rather than the inaccurate timestamps
	themselves. The quality of the fit can be improved by despiking via
	'waveplate.despike'.

	[NEW] {PolKa} Occasionally, the waveplate restarts in the wrong 
	direction. If this is properly diagnosed, the data can be reduced 
	correctly with the 'waveplate.counter' option.

	[NEW] {PolKa} Pipeline step 'purify' can now be added to the ordering
	of possible operations to remove the total-power modulation at any
	stage of the reduction. Note, that whether or not this option is used
	the total-power modulation is always removed before constructing
	Q and U maps...

	[NEW] {PolKa} Reimplemented Fourier half-wave-plate (HWP) filter 
	capability for removing total power modulation when the waveplate angle
	is both jittery and projected. The filter can be activated by 
	'filter.hwp'. As before, the jitter can be set by 'waveplate.jitter', 
	while the number of harmonics filtered is set by 
	'filter.hwp.harmonics'. The filter may be useful for early PolKa data, 
	where the stored waveplate angles were flaky. However, when the angles 
	are stored correctly, 'purify' is the preferred method for removing the
	total-power modulation.

	[NEW] {PolKa} An image with the polarization angles (A) can be produced
	using the 'source.polar.angles' option, or with the shorthand 'spa'.

	[NEW] {PolKa} If analyzer is not in place (total-power mode) then 
	polka reductions revert back to pseudo-laboca mode. This is similar but
	not the same as normal laboca reductions, since the configurations are
	modified by polka. The main purpose of the new feature is to allow
	batch reductions of scans (e.g. for logging) without prior knowledge
	of whether or not polarization or total-power mode was observed.

	[NEW] {PolKa} Check to make sure that polarized scans (with horizontal
	or vertical analyzer in place) are not reduced together with total-
	power scans (without analyzer). When both type of scans are submitted
	the first scan determines the reduction mode (polarization or total-
	power), and subsequent incompatible scans are discarded.

	[NEW] Ranges now accept '<' and '>' to specify open-ended ranges. E.g
	The following ways of specifying ranges are all acceptable:

		<456.0
		>3.1415
		*
		*:456.0
		3.1415:*
		3.1415:456.0
		3.1415-456.0 (positive only!)

	[NEW] {GISMO} It is now possible to set options for GISMO based on the
	FITS merge version (currently 1.7), using the 'ver' key and a range
	specification in the conditional. E.g.

		ver.[<1.7] pointing.model=old.model	
		ver.[1.6-1.7] forget=pointing.model.static

	You can also force specify the version via 'ver=X' option. When used
	CRUSH will ignore the version information stored in the FITS and use
	the explicitly defined value.

	[FIX] APEX scans in unusual coordinates systems (e.g. ecliptic, 
	galactic did not set coordinates as expected. These were always (0,0).
	Fixed.	

	[FIX] {SHARC-2} The gain compression under load is now correctly
	reflected in the NEFD values.

	[FIX] {b1} Undoing of prior point-source filtering was not using stored
	and applied value but a recalculating filtering.	

	[FIX] Source model type now determined by first scan, allowing dynamic
	changes depending on the preprocessing of the scans.

	[FIX] Updated parsing of configuration entries to take into account
	bracketed expressions properly. Previously spaces, tabs and : and =
	characters inside conditional brackets did not work as expected. Now,
	they should...

	[FIX] {PolKa} Direction of waveplate rotation was wrongly assumed, 
	resulting in wrong parallactic angle derotations.

	[FIX] Conditional by serial number were not activated by default.

	[FIX] {PolKa} Polarized power (P) is now more-or-less properly 
	de-biased for the Rice distribution. The points where the polarization 
	cannot be determined are flagged. More rigorous de-biasing is left for
	later, but this makes only a slight difference in the low-S/N (<4) 
	regime only.

	[FIX] {PolKa} All Stokes parameters now correctly include the 50% loss 
	due to the analyzer grid (as of 2.11-a6).

	[FIX] {PolKa} 'waveplate.jitter' overrides the value calculated from 
	the stored frequencies.

	[FIX] Scan maps were zero-leveled in every iteration, whereas this is
	meant to happen only once at the beginning.
	
	[FIX] Counting source parameters, and source generations for each
	integration has been made more universal. Previously only scalar maps
	and subclassed took care of this.

	[FIX] {PolKa} Various fixes since 2.11-a1. If 'waveplate.frequency' is 
	manually set, then 'waveplate.channel' and 'waveplate.fchannel' are 
	ignored. Also fixed reduction error when waveplate channels are not 
	defined. Previously, all channels werre flagged in the second iteration
	when this was the case. Finally, waveplate data is correctly 
	extrapolated when waveplate data is not directly available.

	[FIX] {SCUBA-2} When both an SDF and a FITS file were present in the
	same directory for the same subscan, it was read twice in 2.11-a1.
	Now, the SDF will be ignored, and only the FITS will be read, as
	expected.

	[FIX] {a1} GISMO reductions were broken in first alpha (2.11-a1).

	[FIX] Multithreaded reductions on multicore systems could end up in
	unpredictable race conditions while procuring the composite source
	model. Luckily, the chances of this happening were tiny, so the fix
	should be unnoticeable for the most part...

	[FIX] {GISMO} 'pointing.model' and 'pointing.log' now accept path
	specifications with shell variables. (Prior to the fix only literal 
	paths were processed).

	[FIX] {SCUBA-2} Fixed error when both an SDF and a FITS file are 
	present for the same scan and in the same location.

	[FIX] {SCUBA-2} Updated the SCUBA-2 proprietary module to work with
	CRUSH v2.11 (module Version 4).

	[FIX] Fixed problem with Complex FFTs whereby the real and imaginary
	components got mixed up, as a result of reversed iteration order. The
	good news is that Complex FFTs were never used in CRUSH, so the bug
	was completely harmless.

	[FIX] If the path to the Java executable was too long, it could 
	produce an error when trying to write that information to the FITS 
	image. Now fixed.

	[FIX] Smoothing of fixed signals always used boxcar, not the specified
	window function. It's not a feature that was much used, and the fix
	should make little difference anyway.

	[FIX] The function of 'B' and 'b' keys (i.e. brightness control) in
        'show' was not working as expected in sqrt scaling, due to a sign bug.
        Now fixed.

	[CHANGE] Some FITS keywords describing the Java environment running
	crush has been changed to more intuitive names.

	[TWEAK] Obsoleted key 'filter.whiten.neighbours' removed from 
	configuration.

	[TWEAK] {PolKa} Q and U can be iterated without interference to total-
	power blanking. Also, the blanking mask includes significant portions 
	of the Q/U maps.

	[TWEAK] {PolKa} Polarization angles and fractions are not calculated 
	when the polarization fraction is estimated to be zero.

	[TWEAK] Various small performance tweaks: eliminating some temp arrays
	and declaring more variables final.

	[TWEAK] {SCUBA-2} Slight tweaks to the SCUBA-2 configuration files to
	enhance 'deep' mode reductions.

	[TWEAK] Calibration and tau tables are loaded as necessary and stay
	persistent. This speeds up the reading of sets of scans using the same 
	data.

	[TWEAK] {GISMO} Pointing logs are loaded as necessary and persist, 
	making the reading of multiple scans more efficient.

	[TWEAK] Motion filter frequency range restricted to <1Hz.

	[TWEAK] Slightly tweaked 'faint' despiking settings, reverting to
	more stringent despiking of faint sources. Even more so for GISMO.

	[TWEAK] {GISMO} 'deep' reductions to whiten more aggressively than
	usual.

	[COSMETIC] Reorganized FITS header key ordering to bring the most 
	important keys up front.

	[CODE] Cleaned up old GISMO frame parsing...

	[CODE] {b1} Instrument.sourceGain now generalized to all instruments, 
	not only SHARC-2.

	[CODE] Access to serial numbers, mjd and source name are through
	getters and setters only. It allows invoking conditionals automatically
	as soon as these values are defined.

	[CODE] Instrument name access through getter/setter only.

	[CODE] {PolKa} Polarization products are now prepared using Parallel.

	[CODE] ScalarMap masking overhauled. masks can be composited, e.g.
	from diffent submaps (e.g. I, Q, U).

	[CODE] {a1} Source model processing separated from synching.

	[CODE] {a1} Improved error handling in new Parallel processing
	architecture. In the first alpha, an IllegalMonitorState exception
	was thrown rather than the trace of the real error that was at the
	root of the problem.

	[CODE] Old Parallel architecture replaced by the new task-oriented
	hieracrchy in source model tasks.

	[CODE] HDU readers converted to new Parallel architecture. However,
	only single threaded reads are used until concurrency is properly
	debugged for these...
	
	[CODE] Avoid cloning of Threads (which is wrongly allowed in Java 
	5 & 6) and use Runnables instead for implementing parallel tasks...
	As a result of this 'fix' CRUSH now runs under Java 7 and with lesser
	distinction also under the GNU Java (libgcj/gij).

	[CODE] Added number formatting classes that omit trailing zeroes.
	These will be likely used in the new display function...

	[CODE] Made concurrent access (e.g. on multicore systems) to source
	models more safe by requiring synchronization of all methods that
	explicitly change the model data.

	[CODE] {GISMO} PointingTable.Entry made into proper inner class.

	[CODE] Made access to images more conventional by restrincting direct
	access to fields, and using convenience methods instead.
	
	[CODE] Generalized projections, grids and images using grids.

	[CODE] GridImage<GridType> changed to GridImage<CoordinateType>. As a
	result, a whole lot of code has been moved around to generalize objects
	s.t. more of the crush tools can be used also on non-astronomical
	images (perhaps sometime in the future...).

	[CODE] Undid generic types on SourceModel. It did not really make sense
	to use them here (no specific reverse access to scans and instruments
	is necessary, and restriction to instrument subclasses is easily done
	through the constructor). At the same time, the lifting of the 
	restriction makes for nicer code, and removes some annoying obstacles.

	[CODE] {2.11-a1} Various fixes in image/instrument initialization, and
	gaussian source insertion/removal.

	[CLEANUP] Removed some unused variables, spotted by Eclipse Indigo.

	[CLEANUP] Removed obsoleted key 'whiten.neighbours' from configuration.

	[UPDATE] {GISMO} Updated the Run 4 (April 2011) configuration files 
	with the  much improved pointing of the new merge. (Gone are the 
	mysterious pointing drifts[!] which were probably the result of 
	tilt-corrections not being properly included in the absolute AZ/EL 
	coordinates.)

	[UPDATE] {APEX} Updated LABOCA and SABOCA configurations (opacities,
	calibration scalings and RCPs). LABOCA data is good thru 2012.11.08.
	SABOCA data is good thru 2011.10.25.


2.10-1 (15 Oct 2011)

	Overview
	=====================================================================
	This is a major update of CRUSH. The main new feature is an innovative
	motion filter, which may be used to reject signals induced by the
	scanning telescope movement (esp. when it is roughly periodic). The new
	filter is especially useful for GISMO faint/deep reductions. Many
	big changes improvements to Fourier filtering in general, including
	some critical bug fixes to restore calibration stability of point
	source fluxes when Fourier filters are used (both spatially, or on the
	timestreams). Also, fixed polarimetry with PolKa.
	=====================================================================

	[BUG] Large-scale structure (LSS) filtering via 'source.filter' was
	not applying filter corrections (or did it incorrectly) due to a 
	malformed conditional statement. This affected flux calibration in 
	'deep' mode reductions, typically by 5%--10% (depending on the
	filtering setting for the particular instrument). For GISMO, the
	effect was larger (~30%--40%) due to the much heavier filtering used.
	
	[BUG] {a1} Fourier filter corrections were not reflected in the point-
	source flux corrections scheme or NEFD numbers in 2.10-a1. Now 
	included.

	[BUG] {PolKa} Polarization maps were wrongly synced back to timestreams
	as total power, explaining why polarization reduction was broken when
	iterating on Q & U.

	[NEW] The biggest change is the addition of a new motion filter. The
	periodic motions of the scanning can excite vibrational modes in the
	telescope as well as the instrument. Since these are scan-synchronous
	signals, they will have a fixed imprint in the maps, showing up as
	artefacts. To counter this, CRUSH can now spectrally filter the 
	timestreams to reject the frequencies where most of the motion power
	is. The feature is controlled by the 'filter.motion' key and its
	subkeys 's2n' (setting a minimum S/N for removed components) and 
	'above' (setting a minimum relative fraction to peak component for
	removal), and 'range' (setting the target frequency range). E.g.

		filter.motion.range 0.03--10.0
		filter.motion.s2n 10.0
		filter.motion.above 0.05
		
	will identify and filter features of the scanning motion, between 30mHz
	and 10Hz, that are at least 10-sigma significant and have an amplitude 
	at least 5% of the strongest feature. The filter itself is enabled by
		
		filter.motion
	
	(It is enabled by the default configuration, see 'default.cfg')
	The motion filter is part of the unified filter architecture also 
	introduced in this version.

	[NEW] Introducing a unified filter architercture for frequency domain
	filtering of timestreams. The umbrella filter is controlled by the
	'filter' key, and its components are specified by 'filter.ordering'.
	The available, and default, components are

		filter.ordering  motion, kill, whiten 

	corresponding to motion filtering (see above), killing specific 
	frequencies and spectral bands altogether, and the adaptive
	whitening filter. The filtering architecure makes sure these filters
	do not conflict and that the source filtering and paramter accountings
	are always correct. Additionally, the umbrella filter optimizes for
	speed by requiring a single FFT pair per channel for all filters.

	[NEW] Another new component of the new filter structure is the kill
	filter, controlled by 'filter.kill'. The sub-option 'bands', can 
	specify the frequency ranges, which should be totally discarded. This
	can be used to set up specific notch filters for instruments that have
	known bothersome resonances. E.g.

		filter.kill.bands 0.33--0.39, 5.74--6.71, 12.2:12.3

	will set up the notch filter for three bands, each specified in Hz.
	The filter itself is enabled, as usual by 

		filter.kill

	When used standalone, the filter uses DFT or FFT depending on which
	is faster. (Same is true for the motion filter).

	[NEW] The new key 'filter.whiten.below.max' gives more control over how
	much the whitening filter may boost spectral power when whitening
	frequencies with a deficit of signal relative to the white noise level.
	(i.e. when 'filter.whiten.below' is used). This is to make sure that 
	the whitening does not insanely enhance certain frequencies.	

	[NEW] {PolKa} The new key 'source.polarization.fraction' allows writing
	images of the polarized fraction (F) as well as the default products 
	(N, Q, U, P, & I). You can clip away the noisy bits via the 'rmsclip'
	sub-option. For convenience, the shorthand 'spf' is defined for this
	option. E.g., you may write:

	   > crush polka -spf -spf.rmsclip=0.01 [...]

	To enable the writing of polarized fraction showing only the parts
	with <1% rms.

	[NEW] 'pol' is now a shorthand for 'source.polarization'

	[CHANGE] For better conformance with the new filter-architecture, the
	old 'whiten' key and its subkeys have been moved under 'filter.whiten'.
	At the same time 'whiten' remains a valid alias for backward 
	compatibility.

	[FIX] {APEX} Fixed error when observer names contain quotation marks.
	Normally they should not, but because the apecs syntax often requires
	strings to be enclosed in quotes, these can end up as extraneous quotes
	in the FITS headers. The fix includes a workaround by removing any 
	quotes from observer names. Thanks Giorgio for helping to get to the 
	end of this!

	[FIX] Setting PNG image background via 'write.png.bg' was ineffective.
	Now fixed.

	[FIX] {b1} 'whiten.level' was not used in 2.10-b1, resulting in 
	whitening as if level was set to 1.0. That may have been a little too 
	strong...

	[FIX] {a1} Filtering order fixed. In 2.10-a1, filters were applied in 
	reverse order (i.e. default iteration order).

	[FIX] {a1} Nyquist response of multiple filters in 2.10-a1 fixed.

	[FIX] Removed superflous noise rescaling when applying LSS filter
	via 'source.filter'.

	[FIX] Some fixes to noise whitening. The zeroth component is now 
	ignored, since that is the domain of the drifts filtering. The 
	neighbour-based round is also adjusted to reflect the lack of a zeroth
	component.

	[TWEAK] {PolKa} The polarization products Q, U, P, I (and F) are not
	written if the 'source.polarization' option was never enabled during
	the reduction, allowing to solve for the necessary models.

	[TWEAK] Leveling and re-wrighting of output maps happens only when
	the map type supports it. As a result of this change polarization Q 
	and U maps, and the derivatives P (polarized power) and F (polarized
	fraction) maps are no longer levelled. 

	[TWEAK] {PolKa} Undo duplicate total-power-modulation removal. Instead
	do it just once, right before Q/U modulation modeling. This should be
	sufficient to prevent TP leakage into polarization signals.

	[TWEAK] {PolKa} Tweaked configuration: allowing downsampling and noise 
	whitening for polar maps.

	[TWEAK] Relaxed whitening level. Should preserve source structures
	more effectively...

	[TWEAK] Suggestion of pointing offsets ('point' option) now smoothes
	by the optimal amount rather than the beam if and when 'smooth.optimal'
	is defined.

	[TWEAK] {a1} Motion filter enabled only for GISMO faint/deep modes, but
	not otherwise (as opposed to 2.10-a1 where it was always enabled), 
	since it can interfere with the recovery of larger scales.

	[TWEAK] Amplitude noise, used for determining when a deviation from
	target noise level is significant, was wrongly calculated erring on the
	conservative side. The result of the fix is somewhat more aggressive
	detection of non-white noise, and therefore a stronger noise whitening
	filter.

	[TWEAK] Tweaked noise whitening, by eliminating some unnecessary FFTs,
	and by conforming to the common dependent accounting instead of its own
	measure of noise adjustment.

	[TWEAK] {GISMO} Commented superflous 'whiten.below', which could 
	interfere with the 1st generation motion filter.

	[TWEAK] Noise whitening filter now fully ignores the DC component.

	[TWEAK] Further tweaks to noise whitening to fully account for killed
	frequency components. 

	[TWEAK] Deprecated 'neighbour' based noise whitening. There is no real
	need for it, and it can really mess up when used with other filters.

	[TWEAK] Adjusted DataPoint decimal formatting s.t. the precision of
	the value matches that of the printed error. (E.g. '45.2 +- 1.1' vs
	the previous '45 +- 1.1'). This is simply more pleasant to read, 
	without providing any real information with the increased precision.

	[TWEAK] {SHARC-2} Nominal beam sizes switched back to 8.0", which was
	the default value before 2.05. It seems, after all, that this is
	closer to the true diffraction-limited beam size than 8.5" would be...
	
	[TWEAK] Despiking relaxed in 'faint' and 'deep' modes to >10-sigma
	spikes (from >8-sigma before).

	[TWEAK] {SABOCA, SCUBA-2} 'accel' is now a shorthand for
	'correlated.accel-mag'. Previously, 'correlated.accel-norm' was part
	of the pipeline but without an alias for SABOCA and SCUBA-2.	

	[TWEAK] {APEX} Checking for invalid coordinates (-999 deg) is now
	inlined for greater efficiency.

	[CLEANUP] Cleaned up units and simplified coordinate axes.

	[CODE] Motion filter moved under the common filtering architecture.

	[UPDATE] {LABOCA, SABOCA} Configuration files (RCPs, opcaity and 
	calibration lookup tables) have been updated thru 9 Oct 2011 for 
	LABOCA and 5 Oct 2011 for SABOCA


2.05-2

	Overview
	=====================================================================
	This is a maintenance update on the last release. It fixes a bug that
	broke skydip reductions in the last version. It also contains minor 
	fixes and tweaks, and some re-coding.
	=====================================================================

	[BUG] {APEX} Skydip reductions were broken due to trying to validate
	equatorial coordinates, which are no longer parsed from the tables.

	[FIX] Telescope accelerations (for decorrelating and flagging) now
	include the cos(EL) term as expected.

	[FIX] Scanning velocities and telescope accelerations had a branching
	disconitnuity at 180 degrees (between +180 and -180). The fix should
	take care of this, and provide the expected behaviour at the 'dateline'
	boundary.

	[FIX] Fixed signals (e.g. telescope position/acceleration signals)
	can now be absolute (e.g. acceleration signals) or floating (e.g.
	position signals). Floating signals are automatically levelled to
	zero mean, while absolute signals are kept as they are. The separation
	should allow better decorrelation of their responses. Previously all
	signals were assumed floating.

	[FIX] Various small and fairly inconsequential arithmetic fixes.

	[FIX] One of the Complex FFT routines has not copied contents into a
	real array properly. However, this particular routine was never used
	in crush so the bug was inconsequential.

	[FIX] Signal.differenciate() fixed and improved. The functionality was
	not really used so far, but may be in the future...

	[TWEAK] {APEX} Changed smoothing of telescope position data to 48ms
	('positions.smooth=0.048') matching the native telescope rate. 

	[SPEED] Various small speed optimizations on iterating over arrays and
	image smoothing. As a result, reduction speeds may have improved by
	a few percent (i.e. not much).

	[CODE] The beginnings of a common FFT filter umbrella structure, which
	will be the base of noise whitening and profiled filters in the near
	future...

	[CODE] New 1D array resampling functionality, which can be used for
	dynamic resizing of filter profiles in the future...

	[CODE] 2D Complex FFT to rely on native 1D Complex FFT (rather than
	NR style array).

	[CODE] CoordinatePair default values changed to 0,0 from NaN,NaN

	[CODE] Vector classes replaced by faster Lists in Configurator and
	Pipeline.

	[UPDATE] {LABOCA, SABOCA} Zenith opacities and calibration lookup
	tables updated thru 28 Aug 2011.


2.05-1 (3 Aug 2011)
	
	Overview
	=====================================================================
	This update fixes bugs affecting the pointing of the APEX cameras and 
	GISMO. Also fixes the filter correction bug of CRUSH-1.xx tools (e.g.
	'detect'. Includes a updated/improved 'detect' tool, and offers several 
	fixes and improvements in general. The main new features are object-
	depended configuration capability, and better diagnostic of invalid 
	scans/subscans, and handling of unusual APEX scans (e.g. in Ecliptic
	or Galactic coordinates). A lot of under-the-hood code changes to
	clean up and reorganize some old code, and bring the native CRUSH-2
	tools one step closer (perhaps in the next release...)
	=====================================================================

	[BUG] {detect} Major bug found with the filter correction algorithm of 
	'detect' tool. This could have resulted in somewhat wrong source fluxes
 	when  heavy spatial filtering was used (e.g. at 2--3 times the beam 
	size).

	[BUG] {APEX} An issue was identified with applying pointing corrections
	for APEX scans, resulting from is an inconsistency in the raw data 
	between the reported AZ,EL and RA,DEC coordinates. This did not affect
	reductions before version 2.05-b1, as long as the 'pointing' option was
	not used to try correct for pointing offsets (when 'pointing' was used,
	it produced unpredictable results). The first attempt at a fix (in 
	version 2.05-b1) assumed that the AZ,EL values were correct. However, 
	this seems not be the case. The latest fix uses BASLONG and BASLAT 
	columns (usually in equatorial) exclusively, which seems to work well, 
	and also results in simpler, cleaner code.

	[BUG] {GISMO} There was an oops when trying to use an absolute pointing
	model together with the incremental corrections based on a pointing 
	log for GISMO. In essence, a differential pointing model was used where
	an absolute model was needed, resulting in hugely wrong corrections.
	Now fixed :-).

	[NEW] {APEX} New astrometry code can handle unusual basis coordinate
	systems in the raw data file (e.g. scans performed in Ecliptic, 
	Galactic, or Super-Galactic coordinates). Thus, for the first time 
	fully complying  to the MBFITS specification on coordinates.

	[NEW] Implemented bicubic spline interpolation for inbetween pixels.
	This replaces the old piecewise quadratic interpolation, which could
	produce small discontinuities at patch boundaries. The interpolation
	is used for the fast convolution of large-scale-structure (LSS) 
	filtering, via the 'source.filter' option. The default interpolation 
	method can be changed via the new 'source.filter.interpolation' key, 
	which can take the following values:

		nearest		Nearest pixel value.
		linear		Bilinear interpolation.
		cubic		Bicubic spline method.

	[NEW] {detect} The source extraction tool 'detect' was always designed
	to work in a way that would accomodate non-Gaussian map noise, by 
	getting some empirical measure of the high S/N tail statistics from the
	map itself. However, most instruments do produce very Gaussian noise
	and therefore, this adaptive method may be overly cautious and less
	accurate than the strict assumption of Gaussianity. For this reason, 
	the latest update to 'detect' introduces the '-gaussian' command-line 
	option to enforce the use of Gaussian statistics for calculating 
	confidence levels and cumulative false detection rates.

	[NEW] {detect} New 'detect' option '-dynamic' can be used for 
	re-estimating the noise distribution after each extraction round. This
	may be helpful if the presence of unextracted sources leads to a
	bias in the noise eastimate earlier on. Previously this was the
	default behaviour. However, the removal of noise peaks in the 
	extraction can also lead to overly optimistic noise estimates, 
	especially when extracting sources from a small map (i.e. at low S/N
	cutoff). For this reason, noise reestimaion is now disabled by default. 

	[NEW] The option 'subscan.minlength', originally introduced for the
	SCUBA-2 module, is now extended to all instruments, allowing to specify
	the minimum length of an integration (subscan) that is processed. 
	Integrations shorter than the specified length (in seconds) will be
	ignored by crush.

	[NEW] Conditionals under the 'object' key can be used to set object-
	specific conditions. E.g., the object-dependent 'bright' setting for
	Jupiter can be specified by the config statement:

		object.[Jupiter] bright

	As such, the 'bright.cat' method introduced in 2.04 is now deprecated.
	The condition check is case insensitive and is satisfied whenever the 
	source name starts with the specified sequence. E.g.

		object.[PNT_] point

	specifies to derive pointing corrections for all objects whose names
	begin with the string 'PNT_'. Thus, in SHARC-2 similar lines replace
	the hardcoded automatic pointing for such sources, making this more 
	transparent and user adjustable.

	[NEW] {GISMO} Introducing the new configuration keyword 'dataname.end'
	which specifies the naming convention of merged GISMO FITS files. E.g.
	for runs 1-4, the appropriate setting is:

		dataname.end GISMO-IRAM-condensed.fits

	The above line now appears in 'gismo/default.cfg' as part of the 
	default configuation. This setting was hardcoded previously. With the 
	new keyword, there is more flexibility for changing the naming 
	convention in the future, if necessary...

	[NEW] New jackknifing option through 'jackknife.alternate' will invert
	every other scan on the list. This, more controlled, jackknifing has
	some advantages over the default random approach: (1) For an even
	number of scans, *exactly* half will be inverted, and (2) scans taken
	after one another (assuming chronological listing) will have opposite
	source signatures. Both of these result in a more perfect cancellation
	of source signals, especially for smaller datasets, than the random
	jackknife.

	[FIX] Improved checking for invalid integrations/subscans. Those with
	too little data (either too few channels, set by 'mappingpixels', or
	too few frames, set by 'subscan.minlength') will be ignored after 
	producing a warning message.

	[FIX] {SCUBA-2} 'subscan.minlength' was not used by the SCUBA-2 module,
	which was expecting just 'minlength' instead. Now fixed.

	[FIX] {detect} Revised how confidence levels are calculated in the
	detection source list. The new method should take more properly into
	account the detection bias (the fact that any peak is more likely to
	be a source than noise after several sources have already been found 
	in a  map). The old method was crude, and also quite wrong...

	[FIX] Fixed a few outstanding issues in the way coordinate grids were
	calculated when a non-trivial matrix transformation was present. 
	Luckily, such transformations were never used by crush, making these
	entirely harmless bloopers... :-)

	[TWEAK] {detect} Interpolation method between pixels has been changed 
	from piecewise  quadratic to bicubic spline in crush-1.xx tools (e.g.
	'detect' or 'imagetool'). This may have a small effect (e.g. on 
	fluxes reported by 'detect').

	[TWEAK] Piecewise quadratic (i.e. old) interpolation inbetween image 
	pixels has been improved to fall back to linear when lack of data (e.g.
	edges) does not allow for quadratic interpolation. This method is now
	deprecated in crush-1.xx tools (e.g. 'detect', see above) but can be
	selected for filtering in reductions via 'source.filter.interpolation'
	(see further above).

	[TWEAK] Added 'pnt.dX' and 'pnt.dY' to the list of loggable quanties.
	These are the pointing increments in the telescope's native frame. I.e.
	these are the same as 'pnt.dAZ' and 'pnt.dEL' for horizontal mounts, 
	and 'pnt.dRA' and 'pnt.dDEC' or equatorial mounts.

	[TWEAK] {GISMO} Pointing reduction no longer suggests absolute 
	pointing on screen. It was confusing, and was also inconsistent with 
	the values written into the the log. Therefore, it's best to omit (for 
	now, at least).

	[TWEAK] {GISMO} 'maximum-likelihood' estimation made default from 
	start for GISMO.

	[TWEAK] {GISMO} Run 4 data erroneously invoked configuration from the
	end of Run 3 (2010 April). This wasn't harmful, since the settings
	were then overwritten by the proper Run 4 configuration. Nevertheless,
	the unintended behaviour has been eliminated.

	[TWEAK] {SHARC-2} Nominal beam sizes are changed slightly (e.g. 
	8.0" --> 8.5" at 350um), to more realistic values. As a result, the 
	default conversions from volts to Janskys ('jansky' option) has been 
	updated too to yield the same peak fluxes as before.

	[TWEAK] {GISMO} Updated 'deep' configuration based on the optimal 
	parameters of the deep-field dataset. These are shorter 1/f stability
	timescale, more stringent LSS filter, and longer iterations.

	[CODE] New regrid algorithm implemented in CRUSH-2. This relies on
	antialias filtering (via an appropriate Gaussian filter) before
	straightforward resampling using the interpolation method of the image
	(bicubic spline is default). The new method is cleaner, more efficient,
	and has been tested.

	[CODE] Reorganized 2D image and grid classes for more hierarchical
	structure. This is in preparation for a more generic (not necessarily
	astronomical) image processing classes.

	[CODE] Migrated (and tested) CLEAN algorithm, and regrid functionality 
	of CRUSH-1. These aren't used right now, but are in preparation for 
	migrating the old CRUSH-1 tools into CRUSH-2.
	
	[CODE] Complete overhaul of imaging and spherical grid classes. The
	new gridding is cleaner, more generic and more efficient, while the 
	new imaging classes have been designed with more powerful and generic
 	plotting capabilities in mind -- bringing a native crush 'show' tool
	one big step closer...

	[CODE] {APEX} Cleaned up code handling the selectable basis system
	of APEX MBFITS files.

	[CODE] Changed regridding functions to rely on interpolation rather
	than the old slow Gaussian method.

	[DEPRECATE] 'autobright' option, introduced in 2.04-2, is deprecated.
	Use object dependent conditionals instead, which were introduced in 
	this version. Check new features above for details.

	[UPDATE] LABOCA & SABOCA configuration data (RCPs, skydips and
	calibration tables) updated and good thru 28 Jul 2011.


2.04-2 (13 Jun 2011)

	Overview
        =====================================================================
	This update of crush offer some important fixes to how timestamps are
	handled (esp. for the GISMO pointing logs), and other improvements
	to the GISMO pointing model. As usual there are many other smaller
	fixes and improvements also.
	=====================================================================

	[BUG] Timestamp parsing/formatting was done in local time rather than
	UTC as it should have been. This was a major problem with the
	processing of GISMO timestamps and the application of incremental
	pointing corrections because MJD and UT were wrongly calculated.

	[NEW] {GISMO} Pointing model now contains absolute pointing constants
	by default (unless 'pointing.model.incremental' is set) and is used
	for calculating differential corrections to whatever pointing model was
	used during the observing. This allows changing the telescope pointing
	model during observations without penalty.
	
	[NEW] {GISMO} Added time variability to GISMO pointing constants.
	The time variablility terms can be ignored by setting the 
	'pointing.model.static' option.

	[NEW] {GISMO} Included the finalized pointing log for the April 2011
	run. The table can be found inside the gismo/ sub-directory and can be
	used for applying incremental pointing corrections, via 'pointing.log',
	on top of the pointing model. 

	[NEW] CRUSH now reports a sub-version string (both on console and in
	FITS files) that allow identification of intermediate development
	versions. 

	[FIX] Some FITS image tools seem to have trouble understanding negative
	longitudes, even though the FITS standard (e.g. Hanisch 2001, 
	Calabretta & Greisen 2002) do not prescribe any range, in which angles
	have to be represented. Nonetheless, to conform better to non-standard 
	FITS utilities, the longitudes are now written in the 0--2Pi range.

	[FIX] FITS timestamps are now parsed and printed in UT rather than UTC,
	as they should be :-).

	[FIX] Conditional set by 'date' are now interpred as proper FITS dates.

	[TWEAK] {GISMO} Log quantities 'pnt.X', and 'pnt.Y' are now absolute
	pointing offsets including the corrections applied by the telescope 
	pointing model (but not the dynamic corrections by the inclinometer).
	
	[TWEAK] When jackknifing options are used, the source name gets 
	automatically appended with '-JK' to indicate it being a jackknife
	rather than an actual source map.

	[TWEAK] Logging now reports 'RAh' values in 0--24 range (rather than
	-12:12 as before).

	[TWEAK] {GISMO} Slightly adjusted default GISMO log format.

	[TWEAK] Added 'Tamb', 'pressure', 'humidity', 'windspeed', 'windpk',
	and 'winddir' as log quantities. Not all instruments/telescoped may 
	provide all these values.

	[TWEAK] {GISMO} The pointing corrections from the telescope pointing 
	model and the inclinometer can be logged via 'modelX', 'modelY', and 
	'tiltX', 'tiltY' labels.

	[TWEAK] {GISMO} Adjusted acceptable readout ranges.

	[TWEAK] {SHARC-2} Added 'Uranus' to 'sharc2/bright.cat', so it is
	reduced with the 'bright' setting by default. 

	[TWEAK] Pointing/calibration reduction automatically invoked for GISMO
	and SHARC-2 when reducing single scans 3 minutes or shorter.

	[CODE] Improved accounting for leap seconds. The new code allows the
	loading of a standard NIST leap-seconds table from 
	
	   ftp://time.nist.gov/pub/ 

	Currently, this table is not automatically loaded or updated. Such 
	automatic leap second update might be implemented in the future...

	[CODE] Reporting of non-fatal exceptions during scan reading is fixed.

	[CODE] FITS image header parsing moved up: AstroMap -> AstroImage. 

	[CODE] Some cleanup of Coordinate set() vs. setNative() methods.

	[UPDATE] {LABOCA, SABOCA} Updated LABOCA and SABOCA configuration 
	data (RCPs, opacities and calibration tables) with the latest from the
	APEX pages. All data is good thru 25 May 2011.	


2.04-1 (28 Apr 2011)
	
	Overview
	=====================================================================
	This version of crush brings many cool new features, like PNG image 
	writing and automatic scan type detection, as well as better photometry
 	support by fixing bugs and adding new features to the relevant code. 
	Many more innovations make this one of the most feature-packed releases
	to date.. 
	Under the hood a lot of code changes to make the decorrelation more 
	transparent, solid, and bug proof. Many other fixes correct various
	smaller issues. SHARC-2 configurations come with updated astrometric
	parameters, thanks to a recent discovery by Mike Dunham on the 
	variability of these. Many improvements to GISMO reductions based on
	the Apr 2011 run.
	=====================================================================

	[BUG] {APEX} Obsolete trimChopper() and markChopperEnds() functions 
	removed. Bugs in these caused subscans to be needlessly dropped from 
	the  reduction, leading to increased photometry errors in the prior 
	update (2.03-2).
	
	[BUG] Fixed bug in applying an a-priori source model via the
	'source.model' key. The problem was with the coordinate transformations
	when a nontrivial transformation matrix was defined.

	[BUG] {PolKa} Instrument object name had a wrong case letter in the
	specification file in the 'instruments' sub-directory. Fixed.

	[BUG] {PolKa} Fatal error on instrument initialization fixed. It was
	due to a null options field to the source model.

	[BUG] {2.04-b4} A bug was carelessly introduced into 2.04-b4, which
	resulted in empty or mostly empty maps. Now fixed.

	[BUG] {beammap} Error in beammap reduction mode during initialization
	is now fixed. Same null pointer issue as the one that broke 
	polarimetry reductions (further above).

	[BUG] {PolKa} Several bugs fixed that broke PolKa reductions. (1)
	waveplate angles were not calculated causing NaNs, and (2) spurious
	polarization signal filter was badly set up. As a result, de-biasing
	created NaN timestreams.

	[BUG] {SABOCA} Reductions broken due to invalid ADC range flagging.

	[NEW] Added new capability to create PNG thumbnail images for all FITS
	images. The PNG image writing is activated by 'write.png', the size
	can be set with 'write.png.size' (default is 300x300), and the
	colorscheme is determined by 'write.png.color'. You can also set the
	backgrounf via 'write.png.bg'

	[NEW] {APEX} Automatic pointing scan detection. Reduction will suggest
	pointing offsets for standalone pointing scans. However, no automatic
	pointing suggestion for multiscan datasets (you can still manually set
	'point' to do it anyway).

	[NEW] {APEX} Automatic skydip detection. No need to manually set the
	'skydip' option. :-). Also, skydips will be removed from mapping data
	sets, in case they are accidentally included in the list.

	[NEW] {GISMO} Automatic skydip detection. (see also above).

	[NEW] {SHARC-2} Automatic pointing/calibration reduction for standalone
	scans of pointing/calibration sources whose catalog names start with
	'PNT_' and 'CAL_'.
	
	[NEW] More control over the decorrelation of phases (e.g. for chopped
	photometry data). The 'correlated.<?>.phasegains' keys and 'phasegains'
	can be used to derived gains from the correlated phases rather than
	using the correlated fast samples -- either per modality or as a
	global setting. The 'phases.estimator' key can specify what estimator
	to use for deriving phases, if it is different from the defalt
	estimator type set by 'estimator'. 

	[NEW] The results of pointing reductions (via 'point') are now 
	available for logging. The pointing information are accessible with
	keywords starting with 'pnt.' while the fluxes and geometry have keys
	that begin with 'src.'. See Section 2.7 of the README for details.

	[NEW] Additional instrument-dependent logging capabilities. Check 
	Section 2.7 of the README for details on what instrument-specific
	qunatities are available.

	[NEW] Quantities 'UT' and 'UTh' have been added to the list of values
	that can be logged.

	[NEW] {GISMO} Pointing corrections can be calculated and applied
	automatically via an incremental pointing model using the
	'pointing.model' option

	[NEW] {GISMO} Incremental pointing corrections can be automatically
	derived and applied based on the scan logs, using the 'pointing.log'
	option. (Tweak: avoid double counting nearest pointing.)

	[NEW] Additional jackkniving possibilities, allowing to randomly invert
	frames or channels via 'jackknife.frames' and 'jackknife.channels' 
	respectively. Such jackknives give less realistic noise maps that the
	regular 'jackknife' option, which inverts entire integations/subscans,
	because frame and channel jackkniving may belie temporal or spatial
	correlations. However, for datasets with too few scans for a true
	jackknife, these give at least some alternative to estimate noise
	characteristics, even if they are not perfectly ideal.

	[NEW] 'autobright' option allows to automatically set 'bright' 
	reduction mode for sources listed in the '<instrument>/bright.cat'
	file (one source name per line). Currently, 'autobright' is enabled
	for 'gismo','laboca' and 'sharc2' with planets that typically 
	require the 'bright' reduction mode.

	[NEW] {PolKa} Changed the algorithm for total-power modulation removal
	from FFT-based filtering to time-domain analysis. The new time-domain
	filter is both faster (linear with data size) and works well even if 
	the waveplate rotation is very jittery. Thus, the new algorithm should
	yield more robust rejection of the unwanted power modulation. The
	new option 'waveplate.oversample' can be used to fine-tune the
	time-domain filter.

	[FIX] {PolKa} 'waveplate.frequency' option had no effect. Fixed.
	Also, now when the option is set, it is used to calculate waveplate
	angles with it. However, this means that the phase information of the
	polarization is lost, as the reference timings are lost.
	
	[FIX] {PolKa} No warning message when external timestamp data is not
	available. Such timestamps were used only in the initial commissioning
	phase of LABOCA, and are no longer needed for proper operation.

	[FIX] {PolKa} Power modulation filter was wrongly calculated.

	[FIX] {SHARC-2} Fixed triggered decorrelation issue. The first 
	iteration did not detect the trigger. This meant that chopper response 
	was decorrelated once even for non-chopped observations. Neither was 
	'gains.span' trigger aware, which meant that the chopper response was
	always decorrelated when the spanning option was set. 

	[FIX] Fixed a multitude of problems with the derivation of gains from 
	the phases. As a result, chopped photometry reductions can now derive
	sky-noise gains properly using phases. Therefore, the configuration
	has been updated to use this feature rather than relying on the 
	accuracy of pre-supplied fixed gains.

	[FIX] The option 'rcp.gains' was ineffective since 'pixeldata'
	overwrote those gains afterwards. By switching the order of RCP
	and pixeldata reads, the function of 'rcp.gains' should be restored.

	[FIX] {PolKa} 'I' is now proper Stokes I, rather than the unpolarized
	power before. The unpolarized power is written as 'N', and is more
	sensitive than 'I' = 'N' + 'P'. For low polarization fractions,
	therefore it is a good idea too use 'N' as a proxy for the real 'I'. 

	[FIX] {PolKa} More proper noise calculation for polarized power 'P'.

	[FIX] {PolKa} Non-destructive writing plus small optimizations. As such
	polarization images can work with 'source.intermediates', if desired...

	[FIX] {PolKa} Tau relations were not defined for 'polka'. Fixed by
	referring to the 'laboca' relation.

	[FIX] Small fix for dependent accounting of decorrelation. Now all 
	channels in a correlated mode get their dependents cleared upon the
	update of the correlated signal. This is the correct behavior.

	[FIX] Empty maps are not written but skipped as intended.

	[FIX] Fixed log formatting with 's0'...'s9' formats (human readable
	format with 0...9 significant figures.

	[FIX] Log entries supplied by first integration not working. Fixed.

	[FIX] It turns out that old PolKa data already contained the POLTYP
	values, making it impossible to reduce old polarization data, where it
	was recorded as 'N' always. The new keyword 'analyzer' can be used to 
	override the stored setting. Valid values to 'analyzer' are 'H' or 'V'.

	[FIX] Jackkniving was not functional. This is now fixed.

	[FIX] Highpass filtering thru 'drifts.method=fft' was badly broken.

	[TWEAK] The invocation of 'bright.cfg', 'faint.cfg' and 'deep.cfg'
	configuration files with the corresponding options is not longer hard-
	coded. Rather, these happen via the conditional settings established
	in 'default.cfg'.

	[TWEAK] {APEX} Adjusted APEX photometry configuration to solve for
	sky-noise gains and apply these as the source gains also. The change
	decreases the reliance on an up-to-date pixel data file for accurate
	photometry.

	[TWEAK] {APEX} Disabled noise whitening for photometry. It has little
	or no benefit, and if anything it may harm reliability...

	[TWEAK] Adjusted initial blanking and clipping when a source model
	is supplied via 'source.model'.

	[TWEAK] {APEX} photometry reductions now check to make sure enough
	good pixels remain in the reduction (see 'mappingpixels' and 
	'mappingfraction') before proceeding to obtain photometry from the
	subscans.

	[TWEAK] Chop phase data are updated whenever a change could result
	(after time weighting, despiking or whitening) to make sure all
	correlated signals end up in the right places (phases vs samples).

	[TWEAK] Pointing applies its own exposureclip to discard the under-
	exposed parts of the map, thereby increasing the reliability of the
	pointing measurement.

	[TWEAK] {PolKa} improved filtering of total-power modulation, by
	better tailoring to the waveplate jitter, and application only before
	the derivation of Q and U maps.

	[TWEAK] Automatic veclocity clipping ('vclip=auto') adjusted s.t. low
	scanning speeds are more stringently rejected.

	[TWEAK] {LABOCA} Adjusted 'gainrange' option for 'cables' and 'boxes',
	to reject very low (<0.1) gains relative to average. As a result, the
	new configuration ought to be more reliable...

	[TWEAK] {PolKa} Disabled whitening for PolKa. The whitening filter
	may inadvertendtly remove polarization signals, so it's best to avoid
	it.

	[TWEAK] {SHARC-2} The typical Nasmyth plate-scale values are made 
	default, making it easier to generate overriding options for current
	runs without the need for pre-pending date-specific conditionals...

	[TWEAK] {LABOCA} Not using resistors to decorrelate amplifier boxes and
	cables. While, the inclusion of channels wired with 1 MOhm resistors,
	instiead of bolometers, could help obtain more robust solutions, in
	practice the evidence is that they slightly degrade the reduction
	quality. Thus, the 'noresistors' option is now set by default.

	[TWEAK] {LABOCA} Switched the order of decorretaling amplifier boxes
	(now first) and gradients (now second). This reflects the prominance
	of signals in these two modes, leading to more robust solutions given
	the level of degeneracy between the two.

	[TWEAK] {GISMO} Switched the order of MUX decorrelation and gradients.
	See above entry for more details.

	[TWEAK] {GISMO} Adjusted default log format: 'RAh' with 1 decimal, and
	added 'NEFD' and 'scanspeed'.

	[CODE] Complete reorganization of the decorrelation code among classes
	that take part in the process. The new locations of the code make
	the behaviour more transparent.

	[CODE] Cleaned up some of the gain derivation code, with an eye on
	using more common code to get gains from phases or from samples.

        [CODE] Disabled gain renormalization, until it can be made perfectly
	safe...

	[CODE] Double precision weights of stored phases and phase signals. 

	[CODE] 'uniform' now sets all gains uniform.

	[CODE] {LABOCA} Keep resistors properly flagged, so they can be used 
	for decorrelating amplifier boxes and the flexible cryogenic band 
	cables.
	
	[CODE] {APEX} Validating chopped-modulated offsets s.t. those without 
	enough frames for estimating offsets are removed from the set.

	[CODE] {PolKa} Use Modulation rather than Mode as nomenclature for 
	separating the polarization signals.

	[CODE] Slight changes to weighted median calculation methods. No change
	in functionality.

	[CODE] Decorrelation od signal skips over channels with zero gains or
	weights.

	[CODE] Added some assertions in places where NaNs or Infs can be 
	produced.  

	[CODE] Disabled old subscan logging code. Its function has been
	superceded by a much more versatile logging capability.
	
	[CODE] Log formats now accept C-style '\t' to signify a tab in the
	format specification string.

	[CODE] Chopper state is now copy safe (i.e. not sharing the same 
	object after copy.

	[CODE] Removed copy() from Integrations. There should be no need to
	duplicate data, and the depndent field classes can be very troublesome
	for copying over properly. It's safest to not have this feature.

	[CODE] Log formats can now deal with properly escaped sequences.

	[CODE] Rotation of arrays was a little bit messy. This has been cleaned
	up, offering more consistency across various arrays (GISMO, SHARC-2, 
	SCUBA-2). The applied rotation is also printed on the console allowing 
	verification.

	[COSMETIC] {PolKa} The detailed information is shown only for the
	unpolarized power map, while other maps are written more silently. 

	[COSMETIC] {LABOCA} Now reports line-of-sight tau and equivalent PWV
	when setting zenith tau (manually or from skydip table).

	[COSMETIC] {SHARC-2} Duplicate reporting of 'direct' tau values when
	falling back on MaiTau is fixed.

	[COSMETIC] Decorrelation steps that do not flag channels by gain 
	do not display a census of active channels unnecessarily...

	[UPDATE] {LABOCA} Updated pixel data files to include resistors.

	[UPDATE] {SHARC-2} Updated configurations with the latest array 
	astrometry from Darren Dowell, Mike Dunham and Attila Kovacs. The
	zoom of the SHARC-2 array is very sensitive to its distance in the
	optical path. Some 10% variation has been found in the astrometric
	parameters since Sep 2004. The exact date boundaries of these changes
	are still under debate, but the currect configuration presents a first
	best guess. We hope to refine the configuration in upcoming releases. 

	[UPDATE] {GISMO} Pixel positions have been fitted to the Neptune 
	beammap using a quadratic distortion model, yielding 0.6" rms in x
	and 0.9" rms in y (not bad for a 17" beam!). The fitted positions are
	now the default.


2.03-2 (3 Apr 2011)

	Overview
        =====================================================================
        This update fixes an unfortunate configuration bug with the APEX                bolometers. Due to a badly placed line of code, 'chopped' configuration
        settings were always activated, resulting in suboptimal pipeline
        settings for scans obtained in mapping mode.
        A few smaller issues were also fixed (especially in the photometry
        code). Photometry errors may have increased slightly, but these
        uncertainties are expected to be more accurate than before.
        =====================================================================

	[BUG] {APEX} Conditional settings for photometry were always active
        for APEX scans due to a coding error. Should be fixed now...

        [FIX] Fixed GLS projection problem around RA~12h (and AZ~180 deg).
	(Also updated SphericalCoordinates.getNativeOffsetFrom() method.)

        [FIX] Lines containing only empty spaces in the configuration files
        resulted in errors when parsing. The fix checks for 'empty' lines and
        ignored these as expected.

	[FIX] Source gains were not used for photometry reductions as intended.
        This is now fixed. As such options like 'source.fixedgains' now work
        as expected.

        [TWEAK] Default file names are now constructed with an edited version
        of the catalog source name, with problematic character sequences (such 
	as white spaces, quotes, *, ?, /, and \) replaced with underscores
        ('_'). This makes it easier to refer to the output files from the
        command line. Thanks to Giorgio for the suggestion.

	[CODE] Changed the markup of photometry phases.

        [CODE] Cleaned up phase update code to work properly on a selection of
        channels. (The old code was a mule, which only really worked when
        phases were updated for the full instrument. Luckily, that was the
        case...).

        [CODE] Dependent accounting fixed for phase update. The last sample in
        the phase has slipped through previously.

        [CODE] Removed extra phase decorrelation step from photometry code.

	[CODE] No automatic phase updates after weighting, whitening or 
        despiking. However, phases are updated with the offsets.

	[CODE] Better handling of 'source.fixedgains'.

	[CODE] More shared code between regular Fourier filtering and noise
	whitening.

        [COSMETIC] Extra white space on the console output (from a skipped
        decorrelation step) removed.

	[UPDATE] {LABOCA} Updated opacities ('laboca/tau.dat') and calibration
        scaling data ('laboca/calibration.dat') up to and including 29.03.2011.


2.03-1 (21 Mar 2011)
	
	Overview
	=====================================================================
	This is a major update of CRUSH.
	It fixes a critical bug that surfaced since 2.02-1, and affected 
	releases before 2.03-b2. APEX configurations were not properly
	established when crush was run from outside of its distribution 
	directory.
	The main new feature of this version is a powerful custom logging
	capability (read more about it in Section 2.7 of the README), and the
	ability to detect and flag channels at or near their saturation values.
	It also comes with updated photometry configuration for LABOCA (based
	on the patches released for the previous version).
	=====================================================================

	[CRITICAL] {APEX} Common APEX configurations were not loaded when CRUSH
	was run from outside of its disctibution directory, because the 
	invocation syntax did not follow the rules of the 'config' option 
	(which did not take full pathnames, only relative ones!). Sorry for 
	the inconvenience.

	[NEW] Introducing a powerful custom logging of scans (and reductions)
	via the 'log' and 'obslog' keys, and their various sub-options. You
	can specify what quantities are logged, and how they are formatted.
	Please have a look at the new Section 2.7 of the README for a detailed
	explanation of the logging capability. Over time, more quantities will	
	be made available for these logs, so keep an eye out for changes and
	additions.

	[NEW] Pixels and data, which are at, or close to, the limits of the 
	readout (ADC) range are now identified and flagged. You can use the 
	'range' keyword to specify the range of acceptable values, and 
	'range.flagfraction' to set the maximum fraction of affected samples 
	before the pixel is discarded from the reduction. It is an expert-level
	setting. You probably do not need to play with this option unless you 
	really know what you are doing... Note, that the range is always 
	specified in the units of the raw data as it is stored in the data 
	files (see 'dataunit'). LABOCA can set the range automatically, based
	on the backend gain setting, if the 'range.auto' option is set.

	[FIX] Photometry reductions had a small level (10--15%) of unaccounted 
	flux filtering resulting from the decorrelation of phase offsets. As
	of now, the information in the on-source channel no longer contributes
	to the estimate of the correlated offset, and therefore there is no
	more undesired filtering of the source fluxes.

	[FIX] Decorrelation steps in photometry reductions did not report
	the number of unflagged channels correctly. However, this was simply a
	display issue, with no effect on the actual reduction.

	[FIX] Changed the way the 'config' option behaves. If the specified
	config file is not found in one of the standard locations for crush or
	for the instrument, CRUSH will attempt to interpret it as a regular
	pathname. This way users can actually store their custom configs
	anywhere on the file system, as long as the names do not clash with
	those distributed with crush. When using non-standard config files
	try avoid names like 'default.cfg', 'faint.cfg', 'deep.cfg' or 
	'bright.cfg' to minimize undesired behaviour...

	[FIX] Allows processing configuration values enclosed in quotes. E.g.
	
	   crush -datapath="C:\My Data"

	Both single (') and double (") quotes are allowed (as long as they 
	match at the beginning and end).

	[FIX] Slight issue with copying Instrument classes. If the instrument
	was already populated with channels, then the channel copies kept 
	carrying their original Instrument object as their parent instead of
	its copy. Luckily the parental references were rarely used and in
	non-critical context only. This prevented the issue from being a much
	more serious bug...

	[TWEAK] Whitening restricted to rejection of excess noise (by disabling 
	'whiten.below') for chopped photometry reductions. Otherwise, with the 
	fixed filter time-scale bug (see below), the whitening could go
	berzerk. Proper white noise is a nice property to have for maps, but it
	is not essential for photometry, where spatial information is not 
	retained. Thus, the more restricted whitening has no negative impact 
	whatsoever on the result :-).

	[TWEAK] Drifts removal updates filter timescales to the shorter of the
	previous filter time scale and the new filter time scale. This is the
	failsafe behaviour, even though the configurations were set up such 
	that there should be no difference in behaviour as a result of this 
	change.

	[TWEAK] Average gains and weights (for gain an weight flagging) now
	use robust means, with the 10% tails ignored.

	[TWEAK] {APEX} Chopped photometry reductions to use 'neighbours'
	method to despike, even in 'faint' and 'deep' modes.

	[TWEAK] {APEX} Photometry reductions to use more up-to-date pixel 
	values. The pixel data table should be updated more regularly...

	[TWEAK] {APEX} Tweaked photometry configurations for better precision.
	These tweaks are used for the only photometry summary on the CRUSH
	pages.

	[CODE] Instruments are instantiated without adding channels. They
	are populated with channels only when reading the data.

	[CODE] Pixel offsets are now interpreted at the readout stage.

	[CODE] Overhauled scaling data to and from detector stage. 

	[CODE] Statistics functionality moved to Statistics class.

	[CLEANUP] Fixed Debian package permissions providing global read access
	to all files of crush.


2.02-1 (7-Mar-2011)

	Overview
        =====================================================================
	It is a significant update of CRUSH-2, bringing a new APEX photometry
	reduction mode (for chopped photometry), tau conversions for all
	instruments, and other new features. It also fixes a range of smaller
	issues from the prior versions, offers some tweaks, some code 
	restructuring, and up-to-date configuration files for LABOCA and 
	SABOCA.
	=====================================================================

	[NEW] Preliminary support for APEX chopped photometry reductions. 

	[NEW] Added 'sources' key, allowing to specify a catalog of test 
	sources, which are inserted into the data. For an example catalog file,
	see 'example.mask' inside the crush distribution directory. By default 
	'source.fixedgains' is also set together with the 'sources' option to 
	assure that test sources are extracted with the same pixel gains as the
	ones used for the insertion.

	[NEW] The new option 'correlated.<?>.phases' allows the decorrelating 
	of chopper phases together with the usual decorrelation on the high-
	frequency samples. It is not recommended that you change the default 
	settings for LABOCA (and SABOCA) unless you are really sure what you 
	are doing.

	[NEW] The new option 'correlated.<?>.nofield' allows the decoupling
	of correlated noise gains from the field values stored under each 
	channel. The field values are read and written via the 'pixeldata'
	option. The option is meant to provide more tweaking ability for true 
	experts.

	[NEW] Dataset validation for APEX photometry scans. The validation
	discards all scans from the data set which are not compatible with the
	photometry of the first scan. Eventually, the validation will check
	for other types of inconsitencies (e.g. different filter bands,
	focus and skydip scans etc.)

	[NEW] Common default configuration for APEX instruments is moved under 
	the new 'apex' subdirectory.

	[NEW] Tau scaling relations are now extended to all instruments
	not only for SHARC2. Normally, a set of useful relations should be 
	defined for the instrument by default. Please contact Attila if you 
	would want to add a new relation into the default configuration of the 
	distribution. Once the scaling relations are established, you can set 
	values with them. E.g., to specify opacities for GISMO using a PWV 
	value of 0.5 mm, you would write (this time on the command line):
		
		> crush gismo [...] -tau.pwv=0.5 -tau=pwv [...]

	The first option ('tau.pwv') specifies the PWV value, while the 
	second option ('tau') instructs to use the PWV for determining the
	appropriate GISMO in-band opacity. The following relations
	are defined as defaults:

		SCUBA-2: '186GHz', '225GHz', 'PWV'
		SHARC-2: '225GHz', '350um', 'PWV', 'direct'
		GISMO:	 '225GHz', 'PWV'
		LABOCA:	 'PWV'
		SABOCA:  'PWV'

	The SHARC-2 'direct' value is not really a scaling relation, rather
	it is a calibrated method to convert total-power DC offsets into 
	in-band line-of-sight opacities when operating at 350um.
	A PWV scaling relation is included in the configurations of LABOCA
	and SABOCA.	

	[CHANGE] 'exposureclip' and 'noiseclip' now specify clipping values
	relative to the median exppsure/rms of the map, rather than the max/min
	values used before. This should make it more robust when a small part
	of the map is overexposed, having caused NaN images.

	[CHANGE] Decorrelation time constants (controlled by the options
	'correlated.<?>.resolution') are now rounded to the nearest power of
	2 frames to avoid awkward boundaries, esp. in relation with the
	1/f 'drifts' filtering.

	[CHANGE] Repackaged utility classes for better organization. This does
	not affect the functionality of the bundled code, but will break prior
	versions of plugins (e.g. for SCUBA-2) which will have to be updated 
	also. This change is one of the reasons for bumping the version number 
	to 2.02...

	[FIX] A problem existed when adding Gaussian sources to images with
	FWHM larger than the beam size. In such cases the patch size used for
	the insertion was too small. Thanks Haukur, for finding this one.

	[FIX] There has been a recursion error when keys were removed from 
	the configuration set, resulting in nested 'removed' branches being
	created. (This created some very long FITS keys, which caused errors.)
	A twofold solution was inplemented. 1. Checking for and disallowing 
	nested branching of 'removed' keys, and 2. introducing a 'purge' 
	function, which permanently removes branches from the configuration
	set, to be used by internally, e.g. when intersecting configurations.
	Many thanks to Haukur and Ciriaco for diagnosing this!	

	[FIX] Check for very long HIERARCH fits keys, which cannot be written
	conventionally. Use abbreviated form when writing.

	[FIX] Small fix on parameter accounting of decorrelation steps. Now
	the dependencies are calculated only for the same unflagged channels
	as are used for the decorrelation itself.

	[FIX] Relax photometry position checking for moving objects, such as
	solar system bodies.  

	[FIX] Fixed problem with 'config' option not accepting paths with
	variables and shorthands.

	[FIX] Fixed a small problem with the selection of channels used in 
	normalizing gains of different correlated modes.

	[FIX] Fixed problem with 'correlated.<*>.nogains' not having any 
	effect.

	[FIX] Invalid subscans no longer produce an error on validation. 
	Instead, these are dropped from the reduction, as indicated by the 
	corresponding warning message on the console.

	[FIX] Prevent error resulting from an empty "" command line argument.
	Although such empty arguments should never be produced, it never hurts
	to be safe...

	[FIX] An error was fixed in complex FFT function. Currently, this has 
	no effect on CRUSH since it uses real transforms only.
	
	[FIX] {SHARC-2} 'tau=direct' did not take residual DC offsets into
	account. As such the tau values were not as accurate as they could have
	been when the instrument was not levelled at the beginning of the scan.
	Now, the issue is fixed, leading to more accurate 'direct' tau values
	at all times :-).

	[FIX] {SHARC-2} 'tau=225GHz' option was not working due to a hardcoded 
	case-sensitive table lookup error. Now fixed.

	[FIX] {SHARC-2} The use of tau scaling relations has been generalized.
	It now allows the use of PWV values and user-specified relations.

	[FIX] {SHARC-2} Optimal smoothing ('smooth.optimal') is now set only 
	for 350um reduction mode. At other wavelengths, the deep reductions 
	default to beam smoothing. (Earlier, all wavelengths were wrongly using
	the optimal 350um value).

	[FIX] {SHARC-2, GISMO} Fixed a minor issue with the copying of pixels,
	with the pixel sizes having been shallow copies rather than the desired
	deep ones.

	[IMPROVE] {GISMO} Pointing information enhanced, by including 			cumulative horizontal offsets.

	[IMPROVE] Avoid double validation of subscans/integrations.

	[SPEED] {post-b2} parallelized source insertion via 'sources'. 

	[SPEED] Various small performance tweaks relating to FFTs. Since FFTs
	are rarely used, and the tweaks are relatively minor, there is no
	noticeable boost to reduction speeds.

	[SPEED] Source extraction now using one source copy per thread, rather
	than per scan as before. Should result in a minor performance boost,
	epsecially for large maps and datasets.

	[TWEAK] {APEX} Exposure and noise clipping ('exposureclip' and 
	'noiseclip') are made more robust, by selecting the 5/95-percentile
	values as the reference, rather than the absolute max/min values as
	before.

	[TWEAK] {APEX} Smooth telescope positions only by 0.1s (used to be
	0.25s), to be more sensitive to rapid motion changes.

	[TWEAK] {APEX} Checking for incompatible datasets (photometry vs
	mapping data, or photometry on different objects) is extended for
	checking the names of solar system (moving frame) objects also.

	[TWEAK] {SHARC-2} 'maitau.fallback' adjusted to use 'direct' tau only
	for 350um data, and 225GHz taus otherwise. (see sharc2/default.cfg).

	[CODE] Configurator.value now private, access only through get and set
	methods.	

	[CODE] Use Parallel class to reimplement parallel operations on 
	source (extraction, synching, boxing, and indexing). 

	[CODE] Restructured pipeline code. Tasks are now performed scanwise
	rather than integrationwise. The new code is cleaner.

	[CODE] Restructured decorrelation code among Integration, Modality and
	Scan classes. The idea is to allow some operations (like gain 
	estimation) to perform on scans rather than integrations. The effect is
	to have gains that span an entire scan and not just an integration
	within it.

	[CODE] Got rid of non-necessary exception handling when editing
	headers for scan data HDUs.

	[CODE] Instruments can now edit the FITS image headers, allowing
	for more structured editing.

	[CODE] The performing of tasks moved from Pipeline to Integration
	(and its subclasses). This allows for the definition of tasks that are
	specific to certain data types only...

	[UPDATE] {LABOCA, SABOCA} RCP, tau and calibration data up-to-date
	as of 07 Mar 2011.

	[UPDATE] {LABOCA, SABOCA} PWV to tau conversions refined for LABOCA
	and SABOCA based on all skydip data to date (4000+ for LABOCA and ~300
	for SABOCA).


2.01-4 (19-Nov-2010)

	Overview
	=====================================================================
	This is a maintenance update of CRUSH 2.01. The main change is a 
	complete overhaul of the configuration parser engine, with the aim
	of overcoming some of its pathologies, especially with the way aliases
	and wildcards are processed. Apart from the parser, there has been
	an update of the FITS image code, to handle a wider variety of FITS
	images, in preparation for the new show/imagetool. Various smaller
	fixes and improvements are also part of this release.
	=====================================================================

	[NEW] The command 'blacklist' without an argument now produces a list
	of all blacklisted settings on the console.

	[NEW] Introducing 'conditions' command, which allows checking on the
	currently active conditional statements. Used without an argument it
	lists all conditions, while an optional argument can be used to match
	only conditions that start with the specified pattern.

	[FIX] {parser} 'restore' commands was not recognised by the parser,
	which expected the deprecated 'replace' command instead. The GLOSSARY
	has been updated accordingly. The deprecated 'replace' command will be 
	recognized as an alternative to 'restore' for some time to come...

	[FIX] {parser} Fixed parsing of wildcards '*' in 'forget', 'recall', 
	'remove', 'restore', and 'whitelist' statements. No wildcards are 
	allowed for 'blacklist' (since these would be hard to enforce for
	arbitrary non-enxisting branches).

	[FIX] {parser} Fixes to how 'forget', 'remove', 'blacklist' etc. deal 
	with aliased statements.

	[FIX] {parser} 'recall' now checks for pending conditionals.

	[FIX] {parser} Fixes to the way conditions are canonized. (removing 
	leading white spaces, and replacing sequences of other spaces and 
	'=' with a single '?').

	[FIX] {FITS} Added precession FITS processing for Ecliptic Coordinates.

	[FIX] {FITS} Precessing coordinates now recognize 'FK4-NO-E' epoch, but
	process it just like the regular 'FK4'.

	[TWEAK] {GISMO} Added 'beam' size to default configuration. The same
	beam size was already assumed as the hardcoded default, so it changes
	nothing, except it makes the setting more transparent.
	
	[TWEAK] {GISMO} MUXes are decorrelated at the full time resolution of
	the downsampled data in 'faint' and 'deep' modes.	

	[TWEAK] {deep} Source filtering over 5 beam widths is now default in 
	'deep' mode, instead of gradients. In case of some instruments, like 
	SCUBA-2 and GISMO, the filter is made even more agressive to combat 
	sky noise.

	[TWEAK] {parser} Configuration branches removed by the 'remove' command
	are now stored under the 'removed' key, for greater transparency.
	
	[TWEAK] Simplified the calculation of 1/f filter (drift) corrections.

	[TWEAK] 'faint' + 'extended' now enables the removal of gradients by 
	default. It also enables row decorrelation for SHARC-2. This is more
	in line with the intended behaviour...

	[IMPROVE] {poll} Polling the configuration (via '-poll') now also 
	prints the forgotten configuration keys with their values, such that 
	the user may more easily decide if to 'recall' an old value, or set it 
	freshly again. 

	[IMPROVE] {FITS} Overhauled code for handling spherical projections and
	celestial coordinates, to conform more closely with the specification
	by Calabretta and Greisen (2002). Specifically, coordinate system
	transformations are now built in, and the projection classes 
	recognize most of the designated FITS keywords. These changes will be 
	used by the new 'show' and 'imagetool' utilities (coming soon!).

	[IMPROVE] {FITS} Overhauled code to allow images with non-square 
	pixels, and to process 2x2 coordinate transformation matrices. 
	Currently, neither of these features is used. Rather, it is an 
	important preparatory step towards the new show/imagetool (coming 
	soon!).

	[IMPROVE] {parser} Reduced costly string comparisons in parser.

	[SPEED] Noise whitening is made faster by using floating point 
	precision instead of double precision arithmetic.

	[COSMETIC] {FITS} Conditionals are now properly bracketed in FITS
	headers.

	[UPDATE] Updated README on the configuration syntax/rules and on the 
	explanation of the console output, and on checking the current
	configuration settings. 

	[UPDATE] Bundled CRUSH-1.xx tools (e.g. 'show', 'imagetool', 'detect')
	have been upgraded to 1.63-15.

	[UPDATE] LABOCA and SABOCA configurations updated thru 17-Nov-2010.


2.01-3 (26-Sep-2010)

	Overview
	=====================================================================
	This is a maintenance release of CRUSH-2.01. There have been a number
	of issues identified in the previous release(s). This update offers
	fixes to all issues identified thus far. There are also a number of 
	smaller tweaks, improvements, and configuration updates.
	=====================================================================

	[BUG] CRUSH tools (e.g. 'show', 'imagetool', and 'detect') indicated 
	that the map fluxes were uncorrected, when in fact they were corrected
	for point-sources. This may have caused calibration issues when

	   1. 'source.filter' was used during reduction (default only for
	      'deep' mode SCUBA-2 reductions).

        AND
	
	   2. Additional filtering was performed via 'show' or 'imagetool' 
	      *after* reduction (via the '-extFilter' option), OR fluxes were 
	      extracted with the 'detect' tool. 
 
	When both the above conditions were met, CRUSH applied duplicate 
	point-source corrections. 
	Part of the problem was traced back to a missing FITS header key/value 
	pair. A second issue was an unexpected change in the FITS libraries, 
	which defaulted even when the correct value was stored. Both issues are
	now fixed, and the correction scheme should now work as expected.
	
	[FIX] Rare divide by zero bug found and fixed when calculating the
	point-source filtering of decorrelation steps.

	[FIX] 'source.model' option worked only if the model was exactly the 
	same size, and on the same grid, as the target map. This was fine if 
	the model was produced from exactly the same set of scans, and if it
	was not cropped afterwards via 'imagetool'. The fix now allow models 
	to be provided on any grid, and any size...

	[FIX] Beam units recalculated after regrid operation also, (not just
	after smoothing).
	
	[SPEED] Map indexing has been parallelized for better performance...

	[TWEAK] By accident 'median' estimators were made default in 2.01-2 for 
	one iteration in 'faint' and 'deep' modes (but not in default mode). It
 	is not a bad idea, in fact, to start with the more robust median 
	estimators at first. Therefore, starting from this release, medians are
	made default for one iteration in all reduction modes...
	
	[TWEAK] {gismo} Configurations slightly tweaked on use of 'median' vs.
	Maximum-likelihood estimators...

	[TWEAK] Streamlined reading of data of all instruments, using a faster
	method of reading FITS binary tables (by columns instead of rows).

	[CONFIG] 'split' reductions should not be clipped by exposure before
	coadding. Instead, noise or exposure clipping can be performed after 
	the coaddition, using 'imagetool'.

	[CONFIG] {laboca} 'faint' mode reductions now always decorrelate
	modes at the full time resolution of the data. This was already the
	default in non-extended mode, but now 'faint' together with 'extended'
	will also adopt these settings.

	[COSMETIC] Removed extra line-feed when 'source.filter' is used.
	
	[UPDATE] Expanded README, to include sections on 'Pixellization and
	smoothing' and on 'Image processing post-reduction'. Also reorganized
	its sections, and made small edits in parts.

	[UPDATE] {laboca} Calibration information ('laboca/tau.dat' and
	'laboca/calibration.dat') updated until 26.09.2010, using data from
	the APEX pages

	[UPDATE] Bundled CRUSH 1.xx tools ('show', 'imagtool', 'detect' etc.) 
	are upgraded to 1.63-14. The update fixes various issues with the 
	handling of CRUSH-2 images.


2.01-2
	
	[FIX] {java} The default JAVA runtime configuraton in the previous
	release was accidentally changed, during testing, to use 4GB of memory.
	This update reverts back to the usual 1GB requirement, and 32-bit 
	memory model (since the -d64 flag is also non-standard accross virtual 
	machines). Since these settings should normally be edited during 
	installation, as descibed, the update is not critical.

2.01-1	
	
	Overview
	=====================================================================
	This release fixes a critical bug, which strongly affected calibration
	in the 'faint' and 'deep' reduction modes. The bug had to do with the
	'Jy/beam' unit normalization, when smoothing was used internally
	in the reduction.
	The main new feature of CRUSH is to support SCUBA-2 scan reductions. 
	It  also introduces a few other features, and provides some smaller 
	fixes, tweaks, and cosmetic improvements over the prior release.
	=====================================================================

	[CRITICAL] 'faint' and 'deep' mode reductions had incorrect 
	normalization due to peak fluxes normalized to the instrument beam, 
	instead of the proper image beam. For 'deep' mode reductions this 
	skewed calibration by a full factor of 2. The images (S/N and 
	structures are otherwise correct). The bug can be compensated manually
	by scaling images with (1 + smoothFWHM^2/instrumentFWHM^2) manually
	after reduction (e.g. by imagetool). Extremely sorry for this nasty 
	bug!!! 

	[BUG] {GISMO} Date-specific options were set too late for some of the 
	settings to take effect in time. The date-specific configuration is now
	moved ahead for such settings to be loaded in time...

	[NEW] SCUBA-2 modules are available upon request. These modules are
	strictly private and proprietary, with restrictions on its 
	distribution, use, and modification. If interested, please contact
	Attila <kovacs[AT]astro.umn.edu> for a personalized copy of the plugin.

	[NEW] {SABOCA} Automatic tau from skydips, and calibration corrections
	from observations of calibration sources are now included for SABOCA
	between 2009-09-13 and 2010-08-31, thanks to the information becoming
	available on the APEX pages. Only data with 'OK' quality designation
	is used.

	[NEW] 'source.type=null' can be used for sourceless reductions. When
	set, CRUSH will not even attempt to create a source model for data, but
	will process using the other pipeline steps. This is useful for
	reducing diagnostic or lab data (e.g. noise measurements), where 
	modeling a source is meaningless.

	[FIX] {parser} Statements in which the key and value were identical
	strings were parsed incorrectly. Since such a scenario never occured
	in the supplied configurations, there was no maleffect. The parser has
	been adjusted to handle such cases.

	[FIX] {whiten} Make sure that there is a resonable frequency range for 
	probing the white noise properties, even of the desired probing range 
	falls outside of the available spectrum. In such cases use a minimum 
	number of channels, set by the new key 'whiten.minchannels' closest to 
	the desired range to determine the 'white' noise levels.

	[TWEAK] {faint} RMS weighting is made default in 'faint' mode 
	reductions also for 'extended' sources.

	[TWEAK] {source.filter} Spatial filtering of source maps has been
	adjusted to act both on the scan maps (for deriving proper weights on 
	these) and on the final composite (to properly reflect the filter 
	blanking of the final output).

	[TWEAK] {GISMO} The GISMO reduction of 'faint' + 'extended' sources did
	not work as intended. Several tweaks have been applied to 'extended' 
	mode reductions both in 'gismo/default.cfg' and in 'gismo/faint.cfg'.

	[TWEAK] {GISMO} The pointing center for run 2 has been changed back to 
	the nominal array center, for better backwards compatibility with
	pointing in older scripts (e.g. CasA)...

	[COSMETIC] Extra line-feeds on console when 'pointing' (old 'center')
	option was used. Cleaned up...

	[COSMETIC] More cleanup on scan/subscan IDs, both on the reduction
	console and for the data output...

	[COSMETIC] Scans containing no valid integration are now dropped.
	(This should never occur, except for some SCUBA-2 scans, which may
	not have the antenna information in them).

	[COSMETIC] Use scan ID more consistently instead of scan number in
	various output file names and on the console. Also, the subscan ID is 
	included where it is informative. There is no change in functionality.

	[COSMETIC] For multi-subscan reductions, the subscan ID was not
	separated by '|' from the scan ID on the console output.

	[COSMETIC] Scan reading/processing reporting made more structured, 
	especially when processing multiple subscans in the same scan...

	[UPDATE] {copyright} E-mail address updated in the copyright statement
	appearing in the source files.
	
	[UPDATE] {LABOCA} Updated laboca configuration (RCPs, 'tau.dat' and
	'calibration.dat') with the latest information from the APEX pages.
	Information is good thru 31 Aug 2010. Only data with 'OK' quality
	is used.

	[UPDATE] {SABOCA} RCP data update to latest from APEX pages. (Also
	added new tau and calibration data -- see above!)

	

2.00-1

	Overview
	======================================================================
	The first official CRUSH-2 release at last :-)...
	It fixes a number of remaining issues from the final beta (b4) and 
	provides a few small improvements over it.
	This version of CRUSH is now the official stable release for all
	instruments, replacing both CRUSH-1.xx and miniCRUSH as the default
	reduction package. The old versions will, however, coexists for the 
	time-being, in case unexpected problems arise with the newer version.
	Users are strongly encouraged to convert to CRUSH-2 sooner than later.
	======================================================================

	[BUG] Disabled parallel scan reading. It appears that the FITS 
	libraries aren't thread safe, leading to slight instabilities when
	processing FITS data in parallel. Fortunately, the effect was small
	enough s.t. it was not easily noticed. However, to be safe, crush is
	reverting to the original (and slower) serial processing of FITS data.

	[NEW] CRUSH is now available also as RPM or Debian packages, making
	installation a breeze under Linux (if you have root privileges).

	[NEW] Added man pages for crush and the various crush-1.xx image tools 
	bundled with it. If you are installing CRUSH from an RPM or Debian 
	package, then the man pages are fully accesible. You can also install 
	the man pages (and the executables) from the archive (tarball or zip) 
	distribution, by running 'install.sh' as root (or via 'sudo').
	The man pages are also available online through the CRUSH homepage,
	under the 'Documentation' section.

	[NEW] {tar.gz|zip} Included 'install.sh' and 'remove.sh' scripts in 
	non-package distributions to make system-wide access to the 
	executables simpler and to install the newly added man pages (try 
	'man crush' after running 'install.sh' to verify the installation).
	Uninstalling is possible via the 'remove.sh' script. You need root
	privileges to run these scripts.

	[NEW] Added check for a suitable java virtual machine. If crush is
	configured to run on GNU Java (libgcj/gij), it will produce a warning 
	message recommending users to change to something more reliable.

	[CHANGE] Scans are no longer sorted by serial number before reduction.
	Instead, the order, in which they were submitted, is retained.

	[CHANGE] {GISMO} The default GISMO output file names now contain the 
	full IRAM scan IDs, i.e. YYYY-MM-DD.<scanNo>, or their range when
	reducing multiple scans. This should make the origin of images
 	traceable by name. (The same ID are also used on the console output
	during the reduction.)

	[CHANGE] Changed the way instruments are loaded, making them more plug 
	and play modules (rather than the hardcoded list before). Instruments 
	are now registered in the instruments subdirectory. A file, named the 
	way you would invoke the instrument in crush, specifies the 
	corresponding java class of the instrument. While, the change has no 
	immediate effect to the user, it allows instrument packages added to or
 	removed from crush installations at any time. (As instrument-related
	content grows, it makes sense to allow customized instrument 
	installations).

	[FIX] {LABOCA} 'laboca/faint.cfg' contained old 'maxHe3rms' key. 
	Corrected to 'H3.maxrms'.

	[FIX] {SABOCA,ASZCA,p-ArTeMiS} Created 'amps' alias for minicrush 
	compatibility.

	[FIX] {pointing} Pointing corrections are properly accumulated. 
	It is possible to both apply an initial pointing corrections
	(via 'pointing=x,y') and then make crush suggest incremental 
 	corrections (e.g. via 'point'). Previously, the suggestions were 
	incremental to the initially supplied values, but it makes more sense
	to provide the user with the aggregated pointing correction at the
	end of the reduction.

	[FIX] {skydip} Skydip reduction was broken, because it was trying to
	find a group of channels by their old name, which is no longer used. 
	The source code is now fixed with the correct channel group 
	identification ('obs-channels').

	[FIX] Windows .bat files were not working correctly when CRUSH was
	installed in a location whose path contained white spaces. The updated
	batch files should now work as expected.

	[FIX] Checking for updates on startup was suffering from incomplete
	version comparison, which should now be fixed.

	[TWEAK] {sharc2} Rehabilitated decorrelation on rows by default. The 
	prior releases did this only for 'faint' reductions, which was fine in 
	most cases, but occasionally the stability seems to have been worse, 
	and some data really benefit from the row decorrelations. Nonetheless, 
	it  remains default to ignore the 'rows' in 'extended' reductions...

	[TWEAK] {point} The suggesting of pointing corrections is made more
	informative with integrated flux (in an adaptive aperture), S/N and 
	FWHM uncertainty reporting, and providing elongation (major, minor 
	axis and position angle on map). 

	[TWEAK] {point} The FWHM estimation is made more adaptive, with a
	growing aperture until ~98% of the central source flux is captured.

	[TWEAK] {bright} Disabled all clipping of 'bright' source redcutions.

	[UPDATE] Updated README installation instructions to include 
	system-wide install (executables and man pages), and Linux packages.

	[UPDATE] {README} Moved 'Recovery of Extended Structures' section
	further up in the README, thus giving it a more prominent place. Added
	exaples of pointing/calibration scan reduction, skydip and beammap
	reductions in the 'Quick Start' section. Small corrections elsewhere.

	[UPDATE] {crush.jar} Updated crush-1.xx image tools (e.g. 'imagetool'
	'show', 'histogram') to 1.63-13.

	[UPDATE] {laboca} Updated LABOCA opacities until 2010-08-18.
	(calibration scaling factors not updated due to a broken www interface)
	Also added latest RCP data for Aug 2010.

	[UPDATE] {saboca} Added RCP for Aug 2010.

2.00-b4

	Overview
	======================================================================
	Hopefully the last beta release before the finalized CRUSH-2.00 hits
	the streets. This update bring several fixes to the prior version and
	a brand new capability for reducing pointing scans to obtain suggested 
	pointing corrections.
	======================================================================

	[NEW] Added preliminary pointing support to CRUSH-2. To obtain 
	pointing corrections, reduce with the '-point' option. E.g.

	   > crush laboca -point 11564

	The pointing (and calibration information) is displayed at the end of
	the reduction. Currently, only the values are calculated, without
	displaying the result (as in the old crush) since much work is still
	needed to migrate the display capabilities to CRUSH-2. Note, the
	pointing corrections are calculated independently of the map
	orientation, thus the use of the 'altaz' option is not at all required.
	
	[NEW] The option 'pointing' is now used for both specifying pointing 
	corrections at reduction time (as x,y), or can be used to calculate 
	these automatically 'auto'. The old 'center' option is now deprecated, 
	although it will be allowed for the foreseeable future. Thus,
	
		crush [...] -pointing=-3.4,5.0 [...]
		
	can be used to specify pointing offsets of -3.4" (in azymuth) and
	5.0" (in elevation), and

		crush [...] -pointing=auto [...]
	
	is used for determining pointing offsets from appriate observations of
	pointing sources (which must be bright enough to see with enough S/N
	in single scans!). The shorthand 'point' stands for 'iteration.[last]
	pointing=auto", i.e. calculating pointing corrections in the last 
	iteration only.

	The option 'pointing.method' controls the method of measuring positions
	and can be set to 'centroid' (default) or 'peak', at present.

	[FIX] Fixed issue with '~' and environment variables such as {$HOME}
	not being accepted in the 'datapath' specification.
	
	[FIX] {cosmetic} 'write.ascii' subscan numbering to start from 1 
	instead of 0.

	[FIX] 'write.spectra' malfunction if windowname was not explicitly
	specified. Now fixed to use 'Hamming' as default.

	[FIX] 'write.spectrum' PSD normalization is fixed. Output is now in 
	'Jy/sqrt(Hz)'.

	[FIX] {GISMO} FITS time-stamp was parsed wrongly after the latest
	changes to the FITS file during run 3. This cosmetic detail is now
	addressed.

	[CHANGE] Added header information to various ASCII output data (e.g.
	pixel data, RCP) to make it easier to trace the origin of such files

	[TWEAK] Improved centroid pointing algorithm. 

	[UPDATE] Updated GISMO pixel position data (.rcp) using the improved
	centroid fitting algorithm.

	[UPDATE] Updated LABOCA tau and calibration data to 2010.06.30.

	[UPDATE] CRUSH-1.xx tools ('show', 'imagetool' etc.) are updated to
	the latest 1.63-12 release.


2.00-b3
	
	Overview
	======================================================================
	This is a critical update. The previous release did not have the
	essential FITS libraries packaged. Additionally both prior beta 
	releases suffered from a B1950 bug, which is now fixed.
	======================================================================

	[CRITICAL] Precession from Besselian epochs to Julian epochs (e.g. 
	B1950 to J2000) was messed up, due to a typo in the MJD value for 
	B1900.0. As such, the astrometry of all scans taken with B1950 
	coordinates is wrong, since the conversion to J2000 is automatic in 
	crush.

	[FIX] FITS libraries (fits.jar) were not actually bundled in the
        previous update, which instead contained a dysfunctional symbolic link
        to it...

	[CHANGE] Overhauled code for defining regions on maps. The changes may
	only affect the 'beammap' functionality in minor ways...
	
	[UPDATE] Laboca 'tau.dat' and 'calibration.dat' files up to 6/23/2010.



2.00-b2

	Overview
	======================================================================
	This is an update on the first beta release of CRUSH-2. A critical
	bug fix addresses the reduction dependence of calibration. It has 
	always been a stated aim of CRUSH to make calibration completely
	independent of the reduction options used. Unfortunately, due to a
	number of bugs and features this was not fully accomplished. This new
	update hopefully lives up to the promise.
	Another major area of work has been a major revision to the way the
	noise whitening filter works. All instrument configurations have been
	updated to with new whitening parameters.
	Otherwise, the update also contains a number minor fixes and 
	performace tweaks. It also includes updated LABOCA and SABOCA 
	configurations up to June 2010.
	======================================================================

	[CRITICAL] {calibration,deep} Identified various problems with the 
	filtering correction scheme. The idea is to make calibration entirely 
	independent of reduction parameters. However, due to several coding 
	bugs, the corrections were underestimated, resulting in overoptimistic
	noise levels, and reduced fluxes in 'deep' mode reductions. 

	[BUG] {GISMO} Beam map data was erroneously handled. See details below.
	As a result all GISMO beam maps have been updated.

	[BUG] {beammap} Major bug with beammap algorithm. There was a botch-up
	in the pixel indexing scheme as well as what quantities were calculated
	and written.

	[BUG] {parser} There was a problem parsing statements, in which '=' 
	was used after a condition, such as "-iteration.[2]forget=clip". Such 
	statements were effectively ignored. This is now corrected.

	[CHANGE] {whitening} Major changes to the noise whitening filter
	behaviour. The new keyword 'whiten.below' allows the whitening filter
	to behave not only as a rejection filter (suppressing excessive
	spectral components) but also as an enhancing filter, whereby 
	components below the white noise level are scaled up in order to arrive
	at a truly white noise spectrum (which is necessary for obtainig maps
	without intrinsic spatial correlations). This new mode of whitening
	is made default for all instruments. Two more new keywords provide
	more control over the whitening filter. 'whiten.neighbours' enables
	a whitening based on neighboruring spectral regions (at different
	spectral resolutions). Such a behaviour was already implicitly present.
	Finally, a the key 'whiten.proberange' can be used for defining a
	spectral range (Hz) in which the white-noise level is to be measured.
	All instruments are configured to use the truly flat part of their
	typical pixel spectra for white noise level estimation.
	The changes of the noise whitening may impact the results of reductions
	significantly. You can restore the old behaviour via the

		whiten.proberange *:*
		forget whiten.below
	
	configuration settings.

	[CHANGE] New release checking will pause for 5 seconds before 
	continuing with the reduction, when a new release is available, to 
	bring attention to the update. Users should always upgrade to the 
	latest (stable) version.

	[CHANGE] Move map filtering step (see 'source.filter') up to the scan
	level. This way each scan map is filtered independently, before 
	weighting and coadding. This should provide cleaner results when
	source filters are used. Especially the edges of scan-coverages should
	be better behaved...

	[NEW] New option 'write.scandata.details' can be used to add more 
	inforation into the data tables of scan HDUs, such as channel gains, 
	weights, offsets and filter profiles, noise spectra (and more...)

	[FIX] {spectrum} The 'spectrum' key resulted in spectra with a
	messed-up Nyquist component due to a coding error. Fixed.

	[FIX] {correction} Filtering corrections of decorrelation steps
	and the 1/f drifts filtering were not applied, because of a coding 
	error. The corrections applied only to the noise whitening filter. 
	As a result, deep mode fluxes were slightly (or in some cases) 
	significantly below expected.

	[FIX] {correction} Filter corrections of drifts would have been 
	applied repeatedly, if not for the above bug, which resulted in not
	being used at all. 

	[FIX] {correction} Calibration corrections did not take smoothing
	into account. Smoothing increases the filtering effect because the
	negative bowls around point sources are blended into the positive peaks
	further reducing them. With the changes in place, the independence of
	the calibration on reduction parameters should be fully restored.

	[FIX] {deep} Deep reductions were not beam smoothed as intended. This
	is now corrected.

	[FIX] {scripts} Updated shell wrapper scripts to correctly deal with 
	spaces in command line arguments (when quoted or escaped). This is 
	achieved by replacing $* with ${1+"$@"}, which results in the correct 
	expansion of arguments.

	[FIX] {decorrelation} Problem with the hipass filtering of correlated
	signals. Integer math was used where floating point was necessary,
	resulting (at times) in incorrect filter frame counts. This is now 
	corrected.

	[FIX] {decorrelation} time-scales should never exceed the 1/f filter
	time scales. This is also true for any other time-scale in the
	reduction. Accordingly, a maximum timescale is now enforced for all
	things...

	[FIX] {Minor} Arithmetic error in calculating the noise in single-plane
	images. This did not affect any reduction, since CRUSH never uses 
	single-plane images internally...

	[FIX] {regrid} Fixed regrid signal and noise normalizations.

	[FIX] {show} Changed 'show' tool to disable unit changes when 
	displaying the S/N image. This produces the expected behaviour.

	[FIX] {Minor} A small fix for the interpolation of image values between
	pixel positions to return NaN when the nearest position is flagged.

	[FIX] {Minor} Fast convolution method to ensure flagging of any NaNs.

	[FIX] {p-ArTeMiS} Reinstated 'median' estimators as default for 
	p-ArTeMiS. Using maximum-likelihood caused unstable solutions for some
	scans. 

	[SPEED] Parallelized FITS scan reading. This should result in some 
	performance enhancement on multicore systems, although the gain may not
	scale with the number of cores simply because the underlying FITS 
	library is not thread safe, thus only the processing of steps are
	apeeded up.

	[TWEAK] {faint,deep} Disable 'weighting.frames' by default. The time
	weighting can lead to a lot of instabilities in the reduction. At the
	same time, there is no evidence for non-stationary noise for any of
	the instruments. It is better therefore to turn this feature off in
	general, and enable it only when truly necessary...

	[TWEAK] {Minor} Performance enhancement of image operations.
	
	[TWEAK] {Minor} Performance enhancement of some iterators.

	[TWEAK] {Minor} Use floats instead of doubles for medians where 
	possible.

	[TWEAK] {Minor} Simplified initialization of some commonly used 
	classes, by eliminating duplicate field inits.

	[TWEAK] {Minor} Simplified constructor of EquatorialCoordinates and
	EclipticCoordinates for the default (J2000) epoch.

	[TWEAK] {Minor} Converted much of the precession algorithm to faster 
	floating point math, which is sufficient given that the precession 
	constants aren't provided to higher accuracy.

	[TWEAK] {show} Turned on antialiasing for text in 'show' tool. It 
	should remove the JVM dependence of the font antialiasing.
	
	[UPDATE] Updated LABOCA RCP, calibration and tau data, which is now
	available up to 06/20/2010. Thanks to Andreas Lundgren for bringing
	attention to the information.

	[UPDATE] Updated SABOCA RCP information, with the most current data
	from the APEX SABOCA pages.
	
	[UPDATE] Updated GISMO configurations (new RCP/coupling data and
	various tweaks to the configuration options.

	[UPDATE] All instrument configurations have been updated with new
	noise whitening parameters.

	[UPDATE] Updated nom.tam.fits libraries to 1.04.


2.00-b1	(24 May 2010)

	######################################################################
	First official beta release of CRUSH-2. :-)
	######################################################################
