48 namespace SourceXtractor {
50 using namespace ModelFitting;
85 [reference_coordinates, coordinates, offset](
double x,
double y) {
86 return coordinates->worldToImage(reference_coordinates->imageToWorld(
ImageCoordinate(x-1, y-1))).m_x - offset.
m_x + 0.5;
91 [reference_coordinates, coordinates, offset](
double x,
double y) {
92 return coordinates->worldToImage(reference_coordinates->imageToWorld(
ImageCoordinate(x-1, y-1))).m_y - offset.
m_y + 0.5;
108 [reference_coordinates, coordinates, offset](
double x,
double y) {
109 return coordinates->worldToImage(reference_coordinates->imageToWorld(
ImageCoordinate(x-1, y-1))).m_x - offset.
m_x + 0.5;
114 [reference_coordinates, coordinates, offset](
double x,
double y) {
115 return coordinates->worldToImage(reference_coordinates->imageToWorld(
ImageCoordinate(x-1, y-1))).m_y - offset.
m_y + 0.5;
118 auto n = std::make_shared<ManualParameter>(1);
119 auto x_scale = std::make_shared<ManualParameter>(1);
122 [](
double flux,
double radius,
double aspect) {
return flux / (2 * M_PI * 0.35513 * radius * radius * aspect); },
127 [](
double eff_radius) {
return 1.678 / eff_radius; },
137 [](
double angle) {
return -angle; },
142 size, size, pixel_x, pixel_y, jacobian);
155 [reference_coordinates, coordinates, offset](
double x,
double y) {
156 return coordinates->worldToImage(reference_coordinates->imageToWorld(
ImageCoordinate(x-1, y-1))).m_x - offset.
m_x + 0.5;
161 [reference_coordinates, coordinates, offset](
double x,
double y) {
162 return coordinates->worldToImage(reference_coordinates->imageToWorld(
ImageCoordinate(x-1, y-1))).m_y - offset.
m_y + 0.5;
165 auto n = std::make_shared<ManualParameter>(4);
166 auto x_scale = std::make_shared<ManualParameter>(1);
169 [](
double flux,
double radius,
double aspect) {
return flux / (2 * M_PI * 0.001684925 * radius * radius * aspect); },
174 [](
double eff_radius) {
return 7.669 /
pow(eff_radius, .25); },
184 [](
double angle) {
return -angle; },
189 size, size, pixel_x, pixel_y, jacobian);
194 return 2 * n - 1.0 / 3.0 + 4 / (405 * n)
195 + 46 / (25515 * n * n) + 131 / (1148175 * n * n * n) - 2194697 / (30690717750 * n * n * n * n);
208 [reference_coordinates, coordinates, offset](
double x,
double y) {
209 return coordinates->worldToImage(reference_coordinates->imageToWorld(
ImageCoordinate(x-1, y-1))).m_x - offset.
m_x + 0.5;
214 [reference_coordinates, coordinates, offset](
double x,
double y) {
215 return coordinates->worldToImage(reference_coordinates->imageToWorld(
ImageCoordinate(x-1, y-1))).m_y - offset.
m_y + 0.5;
218 auto x_scale = std::make_shared<ManualParameter>(1);
221 [](
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); },
226 [](
double eff_radius,
double n) {
return computeBn(n) /
pow(eff_radius, 1.0 / n); },
238 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