MAGIC variance reduction

I added the MAGIC variance reduction technique to variancereduction.py. @makeclean, you should review the method. Tests were also added.

Theory manual addition still needed.

issue #344
below the tolerance
On 11/24/2014 11:28 AM, Elliott Biondo wrote:
>
> In tests/test_variancereduction.py:
>
> > +    tally = Mesh(structured=True, structured_coords=coords)
> > +
> > +    tally.particle = "neutron"
> > +    tally.e_bounds = [0.0, 1.0]
> > +    tally.n_flux = IMeshTag(1, float)
> > +    tally.n_flux[:] = flux_data
> > +
> > +    tally.n_rel_error = IMeshTag(1, float)
> > +    tally.n_rel_error[:] = flux_error
> > +
> > +    tolerance = 0.15
> > +    null_value = 0.001
> > +
> > +    magic(tally, "n_flux", "n_rel_error", tolerance=tolerance, null_value=null_value)
> > +
> > +    expected_ww = [0.181818182, 0.5, 0.2424242, 0.001]
>
>     I don't see how one tests where all of the values are above the
>     tolerance will be any different?
>
> Same.
>
> —
> Reply to this email directly or view it on GitHub 
> <https://github.com/pyne/pyne/pull/589/files#r20806078>.
>