Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 15 additions & 43 deletions include/lsst/ip/diffim/DipoleAlgorithms.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
// -*- LSST-C++ -*-

/*
* LSST Data Management System
Expand Down Expand Up @@ -79,12 +78,11 @@ class PsfDipoleFluxControl : public DipoleFluxControl {
*/
class DipoleCentroidAlgorithm : public meas::base::SimpleAlgorithm {
public:
enum {
FAILURE=meas::base::FlagHandler::FAILURE,
POS_FAILURE,
NEG_FAILURE,
N_FLAGS
};

static meas::base::FlagDefinition const FAILURE;
static meas::base::FlagDefinition const POS_FLAG;
static meas::base::FlagDefinition const NEG_FLAG;
static meas::base::FlagDefinitionList const & getFlagDefinitions();

typedef DipoleCentroidControl Control;

Expand Down Expand Up @@ -115,12 +113,11 @@ class DipoleCentroidAlgorithm : public meas::base::SimpleAlgorithm {
*/
class DipoleFluxAlgorithm : public meas::base::SimpleAlgorithm {
public:
enum {
FAILURE=meas::base::FlagHandler::FAILURE,
POS_FAILURE,
NEG_FAILURE,
N_FLAGS
};

static meas::base::FlagDefinition const FAILURE;
static meas::base::FlagDefinition const POS_FLAG;
static meas::base::FlagDefinition const NEG_FLAG;
static meas::base::FlagDefinitionList const & getFlagDefinitions();

/// A typedef to the Control object for this algorithm, defined above.
/// The control object contains the configuration parameters for this algorithm.
Expand Down Expand Up @@ -155,12 +152,7 @@ inline DipoleCentroidAlgorithm::DipoleCentroidAlgorithm(
) :
_ctrl(ctrl)
{
static std::array<meas::base::FlagDefinition,N_FLAGS> const flagDefs = {{
{"flag", "general failure flag, set if anything went wrong"},
{"pos_flag", "failure flag for positive, set if anything went wrong"},
{"neg_flag", "failure flag for negative, set if anything went wrong"}
}};
_flagHandler = meas::base::FlagHandler::addFields(schema, name, flagDefs.begin(), flagDefs.end());
_flagHandler = meas::base::FlagHandler::addFields(schema, name, getFlagDefinitions());
meas::base::CentroidResultKey::addFields(schema, name, doc+": overall centroid", meas::base::SIGMA_ONLY);
meas::base::CentroidResultKey::addFields(schema, name+"_pos", doc+": positive lobe", meas::base::SIGMA_ONLY);
meas::base::CentroidResultKey::addFields(schema, name+"_neg", doc+": negative lobe", meas::base::SIGMA_ONLY);
Expand All @@ -175,16 +167,12 @@ inline DipoleCentroidAlgorithm::DipoleCentroidAlgorithm(
) :
_ctrl(ctrl)
{
_flagHandler = meas::base::FlagHandler::addFields(schema, name, getFlagDefinitions());
meas::base::CentroidResultKey::addFields(schema, name, doc+": overall centroid", meas::base::SIGMA_ONLY);
meas::base::CentroidResultKey::addFields(schema, name+"_pos", doc + ": positive lobe", meas::base::SIGMA_ONLY);
meas::base::CentroidResultKey::addFields(schema, name+"_neg", doc + ": negative lobe", meas::base::SIGMA_ONLY);
static std::array<meas::base::FlagDefinition,N_FLAGS> const flagDefs = {{
{"flag", "general failure flag, set if anything went wrong"},
{"pos_flag", "failure flag for positive, set if anything went wrong"},
{"neg_flag", "failure flag for negative, set if anything went wrong"}
}};
_flagHandler = meas::base::FlagHandler::addFields(schema, name, flagDefs.begin(), flagDefs.end());
_centerKeys = ResultKey(schema[name]);

_positiveKeys = ResultKey(schema[name+"_pos"]);
_negativeKeys = ResultKey(schema[name+"_neg"]);
}
Expand All @@ -195,12 +183,7 @@ inline DipoleFluxAlgorithm::DipoleFluxAlgorithm(
) :
_ctrl(ctrl)
{
static std::array<meas::base::FlagDefinition,N_FLAGS> const flagDefs = {{
{"flag", "general failure flag, set if anything went wrong"},
{"pos_flag", "failure flag for positive, set if anything went wrong"},
{"neg_flag", "failure flag for negative, set if anything went wrong"}
}};
_flagHandler = meas::base::FlagHandler::addFields(schema, name, flagDefs.begin(), flagDefs.end());
_flagHandler = meas::base::FlagHandler::addFields(schema, name, getFlagDefinitions());
meas::base::FluxResultKey::addFields(schema, name+"_pos", doc+": positive lobe");
meas::base::FluxResultKey::addFields(schema, name+"_neg", doc+": negative lobe");
_positiveKeys = ResultKey(positiveKeys);
Expand All @@ -213,12 +196,7 @@ inline DipoleFluxAlgorithm::DipoleFluxAlgorithm(
) :
_ctrl(ctrl)
{
static std::array<meas::base::FlagDefinition,N_FLAGS> const flagDefs = {{
{"flag", "general failure flag, set if anything went wrong"},
{"pos_flag", "failure flag for positive, set if anything went wrong"},
{"neg_flag", "failure flag for negative, set if anything went wrong"}
}};
_flagHandler = meas::base::FlagHandler::addFields(schema, name, flagDefs.begin(), flagDefs.end());
_flagHandler = meas::base::FlagHandler::addFields(schema, name, getFlagDefinitions());
meas::base::FluxResultKey::addFields(schema, name+"_pos", doc+": positive lobe");
meas::base::FluxResultKey::addFields(schema, name+"_neg", doc+": negative lobe");
_positiveKeys = ResultKey(schema[name+"_pos"]);
Expand Down Expand Up @@ -263,12 +241,6 @@ class NaiveDipoleFlux : public DipoleFluxAlgorithm {
*/
class NaiveDipoleCentroid : public DipoleCentroidAlgorithm {
public:
enum {
FAILURE=meas::base::FlagHandler::FAILURE,
POS_FLAGS,
NEG_FLAGS,
N_FLAGS
};

NaiveDipoleCentroid(Control const & ctrl, std::string const & name, afw::table::Schema & schema);
/**
Expand Down
24 changes: 24 additions & 0 deletions src/DipoleAlgorithms.cc
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,30 @@ namespace afwGeom = lsst::afw::geom;

namespace lsst { namespace ip { namespace diffim {

namespace {
meas::base::FlagDefinitionList dipoleFluxFlagDefinitions;
}

meas::base::FlagDefinition const DipoleFluxAlgorithm::FAILURE = dipoleFluxFlagDefinitions.addFailureFlag();
meas::base::FlagDefinition const DipoleFluxAlgorithm::POS_FLAG = dipoleFluxFlagDefinitions.add("pos_flag", "failure flag for positive, set if anything went wrong");
meas::base::FlagDefinition const DipoleFluxAlgorithm::NEG_FLAG = dipoleFluxFlagDefinitions.add("neg_flag", "failure flag for negative, set if anything went wrong");

meas::base::FlagDefinitionList const & DipoleFluxAlgorithm::getFlagDefinitions() {
return dipoleFluxFlagDefinitions;
}

namespace {
meas::base::FlagDefinitionList dipoleCentroidFlagDefinitions;
}

meas::base::FlagDefinition const DipoleCentroidAlgorithm::FAILURE = dipoleCentroidFlagDefinitions.addFailureFlag();
meas::base::FlagDefinition const DipoleCentroidAlgorithm::POS_FLAG = dipoleCentroidFlagDefinitions.add("pos_flag", "failure flag for positive, set if anything went wrong");
meas::base::FlagDefinition const DipoleCentroidAlgorithm::NEG_FLAG = dipoleCentroidFlagDefinitions.add("neg_flag", "failure flag for negative, set if anything went wrong");

meas::base::FlagDefinitionList const & DipoleCentroidAlgorithm::getFlagDefinitions() {
return dipoleCentroidFlagDefinitions;
}

int const NEGCENTXPAR(0); // Parameter for the x-component of the negative lobe centroid
int const NEGCENTYPAR(1); // Parameter for the y-component of the negative lobe centroid
int const NEGFLUXPAR(2); // Parameter for the flux of the negative lobe
Expand Down