54 namespace SourceXtractor {
56 using namespace ModelFitting;
92 [reference_coordinates, coordinates, offset](
double x,
double y) {
93 return coordinates->worldToImage(reference_coordinates->imageToWorld(
ImageCoordinate(x-1, y-1))).m_x - offset.
m_x + 0.5;
98 [reference_coordinates, coordinates, offset](
double x,
double y) {
99 return coordinates->worldToImage(reference_coordinates->imageToWorld(
ImageCoordinate(x-1, y-1))).m_y - offset.
m_y + 0.5;
115 [reference_coordinates, coordinates, offset](
double x,
double y) {
116 return coordinates->worldToImage(reference_coordinates->imageToWorld(
ImageCoordinate(x-1, y-1))).m_x - offset.
m_x + 0.5;
121 [reference_coordinates, coordinates, offset](
double x,
double y) {
122 return coordinates->worldToImage(reference_coordinates->imageToWorld(
ImageCoordinate(x-1, y-1))).m_y - offset.
m_y + 0.5;
126 auto x_scale = std::make_shared<ManualParameter>(1);
130 [](
double flux,
double radius,
double aspect) {
return flux / (2 * M_PI * 0.35513 * radius * radius * aspect); },
135 [](
double eff_radius) {
return 1.678 / eff_radius; },
143 size, size, pixel_x, pixel_y, jacobian));
156 [reference_coordinates, coordinates, offset](
double x,
double y) {
157 return coordinates->worldToImage(reference_coordinates->imageToWorld(
ImageCoordinate(x-1, y-1))).m_x - offset.
m_x + 0.5;
162 [reference_coordinates, coordinates, offset](
double x,
double y) {
163 return coordinates->worldToImage(reference_coordinates->imageToWorld(
ImageCoordinate(x-1, y-1))).m_y - offset.
m_y + 0.5;
166 auto n = std::make_shared<ManualParameter>(4);
167 auto x_scale = std::make_shared<ManualParameter>(1);
170 [](
double flux,
double radius,
double aspect) {
return flux / (2 * M_PI * 0.001684925 * radius * radius * aspect); },
175 [](
double eff_radius) {
return 7.669 /
pow(eff_radius, .25); },
183 size, size, pixel_x, pixel_y, jacobian));
188 return 2 * n - 1.0 / 3.0 + 4 / (405 * n)
189 + 46 / (25515 * n * n) + 131 / (1148175 * n * n * n) - 2194697 / (30690717750 * n * n * n * n);
201 [reference_coordinates, coordinates, offset](
double x,
double y) {
202 return coordinates->worldToImage(reference_coordinates->imageToWorld(
ImageCoordinate(x-1, y-1))).m_x - offset.
m_x + 0.5;
207 [reference_coordinates, coordinates, offset](
double x,
double y) {
208 return coordinates->worldToImage(reference_coordinates->imageToWorld(
ImageCoordinate(x-1, y-1))).m_y - offset.
m_y + 0.5;
211 auto x_scale = std::make_shared<ManualParameter>(1);
214 [](
double flux,
double radius,
double aspect,
double n) {
return flux / (2 * M_PI *
pow(
computeBn(n), -2*n) * n *
std::tgamma(2*n) * radius * radius * aspect); },
219 [](
double eff_radius,
double n) {
return computeBn(n) /
pow(eff_radius, 1.0 / n); },
231 manager.
getParameter(source, m_angle), size, size, pixel_x, pixel_y, jacobian));
std::shared_ptr< DependentParameter< std::shared_ptr< EngineParameter > > > x
CircularlySymmetricModelComponent< SersicProfile > SersicModelComponent
std::shared_ptr< DependentParameter< Parameters...> > createDependentParameter(typename DependentParameter< Parameters...>::ValueCalculator value_calculator, Parameters...parameters)
std::shared_ptr< DependentParameter< std::shared_ptr< EngineParameter > > > y
std::unique_ptr< T > make_unique(Args &&...args)