lsst.afw
g3a5ebb7d8a+28b83bf6a5
Toggle main menu visibility
Loading...
Searching...
No Matches
src
image
Calib.cc
Go to the documentation of this file.
1
// -*- lsst-c++ -*-
2
3
/*
4
* LSST Data Management System
5
* Copyright 2008-2016 LSST Corporation.
6
*
7
* This product includes software developed by the
8
* LSST Project (http://www.lsst.org/).
9
*
10
* This program is free software: you can redistribute it and/or modify
11
* it under the terms of the GNU General Public License as published by
12
* the Free Software Foundation, either version 3 of the License, or
13
* (at your option) any later version.
14
*
15
* This program is distributed in the hope that it will be useful,
16
* but WITHOUT ANY WARRANTY; without even the implied warranty of
17
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
* GNU General Public License for more details.
19
*
20
* You should have received a copy of the LSST License Statement and
21
* the GNU General Public License along with this program. If not,
22
* see <http://www.lsstcorp.org/LegalNotices/>.
23
*/
24
25
/*
26
* Classes to support calibration (e.g. photometric zero points, exposure times)
27
*/
28
#include <cstdint>
29
30
#include "ndarray.h"
31
#include "
lsst/pex/exceptions.h
"
32
#include "
lsst/afw/image/Calib.h
"
33
34
namespace
lsst
{
35
namespace
afw
{
36
37
namespace
image
{
38
40
template
<
typename
T>
41
ndarray::Array<T, 1>
abMagFromFlux
(ndarray::Array<T const, 1>
const
& flux) {
42
ndarray::Array<T, 1> out = ndarray::allocate(flux.getShape());
43
for
(
std::size_t
ii = 0; ii < flux.getNumElements(); ++ii) {
44
out[ii] =
abMagFromFlux
(flux[ii]);
45
}
46
return
out;
47
}
48
50
template
<
typename
T>
51
ndarray::Array<T, 1>
abMagErrFromFluxErr
(ndarray::Array<T const, 1>
const
& fluxErr,
52
ndarray::Array<T const, 1>
const
& flux) {
53
if
(flux.getNumElements() != fluxErr.getNumElements()) {
54
throw
LSST_EXCEPT
(
pex::exceptions::LengthError
, (boost::format(
"Length mismatch: %d vs %d"
) %
55
flux.getNumElements() % fluxErr.getNumElements())
56
.str());
57
}
58
ndarray::Array<T, 1> out = ndarray::allocate(flux.getShape());
59
for
(
std::size_t
ii = 0; ii < flux.getNumElements(); ++ii) {
60
out[ii] =
abMagErrFromFluxErr
(fluxErr[ii], flux[ii]);
61
}
62
return
out;
63
}
64
66
template
<
typename
T>
67
ndarray::Array<T, 1>
fluxFromABMag
(ndarray::Array<T const, 1>
const
& mag) {
68
ndarray::Array<T, 1> out = ndarray::allocate(mag.getShape());
69
for
(
std::size_t
ii = 0; ii < mag.getNumElements(); ++ii) {
70
out[ii] =
fluxFromABMag
(mag[ii]);
71
}
72
return
out;
73
}
74
76
template
<
typename
T>
77
ndarray::Array<T, 1>
fluxErrFromABMagErr
(ndarray::Array<T const, 1>
const
& magErr,
78
ndarray::Array<T const, 1>
const
& mag) {
79
if
(mag.getNumElements() != magErr.getNumElements()) {
80
throw
LSST_EXCEPT
(
pex::exceptions::LengthError
, (boost::format(
"Length mismatch: %d vs %d"
) %
81
mag.getNumElements() % magErr.getNumElements())
82
.str());
83
}
84
ndarray::Array<T, 1> out = ndarray::allocate(mag.getShape());
85
for
(
std::size_t
ii = 0; ii < mag.getNumElements(); ++ii) {
86
out[ii] =
fluxErrFromABMagErr
(magErr[ii], mag[ii]);
87
}
88
return
out;
89
}
90
91
// Explicit instantiation
92
#define INSTANTIATE(TYPE) \
93
template ndarray::Array<TYPE, 1> abMagFromFlux(ndarray::Array<TYPE const, 1> const& flux); \
94
template ndarray::Array<TYPE, 1> abMagErrFromFluxErr(ndarray::Array<TYPE const, 1> const& fluxErr, \
95
ndarray::Array<TYPE const, 1> const& flux); \
96
template ndarray::Array<TYPE, 1> fluxFromABMag(ndarray::Array<TYPE const, 1> const& mag); \
97
template ndarray::Array<TYPE, 1> fluxErrFromABMagErr(ndarray::Array<TYPE const, 1> const& magErr, \
98
ndarray::Array<TYPE const, 1> const& mag);
99
100
INSTANTIATE
(
float
);
101
INSTANTIATE
(
double
);
102
103
}
// namespace image
104
}
// namespace afw
105
}
// namespace lsst
Calib.h
INSTANTIATE
#define INSTANTIATE(FROMSYS, TOSYS)
Definition
Detector.cc:509
LSST_EXCEPT
#define LSST_EXCEPT(type,...)
lsst::pex::exceptions::LengthError
exceptions.h
lsst::afw::image
Definition
imageAlgorithm.dox:1
lsst::afw::image::abMagErrFromFluxErr
double abMagErrFromFluxErr(double fluxErr, double flux)
Compute AB magnitude error from flux and flux error in Janskys.
Definition
Calib.h:60
lsst::afw::image::fluxErrFromABMagErr
double fluxErrFromABMagErr(double magErr, double mag) noexcept
Compute flux error in Janskys from AB magnitude error and AB magnitude.
Definition
Calib.h:68
lsst::afw::image::abMagFromFlux
double abMagFromFlux(double flux)
Compute AB magnitude from flux in Janskys.
Definition
Calib.h:57
lsst::afw::image::fluxFromABMag
double fluxFromABMag(double mag) noexcept
Compute flux in Janskys from AB magnitude.
Definition
Calib.h:65
lsst::afw
Definition
imageAlgorithm.dox:1
lsst
std::size_t
Generated on
for lsst.afw by
1.17.0