From 13d7d6c743dd89cbf21887cb6fe34e27ba2189fa Mon Sep 17 00:00:00 2001 From: Perry Gee Date: Fri, 24 Feb 2017 17:12:12 -0800 Subject: [PATCH] Modify Algorithms for new FlagHandler. --- include/lsst/ip/diffim/DipoleAlgorithms.h | 58 ++++++----------------- src/DipoleAlgorithms.cc | 24 ++++++++++ 2 files changed, 39 insertions(+), 43 deletions(-) diff --git a/include/lsst/ip/diffim/DipoleAlgorithms.h b/include/lsst/ip/diffim/DipoleAlgorithms.h index 3d326c342..9847fab52 100644 --- a/include/lsst/ip/diffim/DipoleAlgorithms.h +++ b/include/lsst/ip/diffim/DipoleAlgorithms.h @@ -1,4 +1,3 @@ -// -*- LSST-C++ -*- /* * LSST Data Management System @@ -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; @@ -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. @@ -155,12 +152,7 @@ inline DipoleCentroidAlgorithm::DipoleCentroidAlgorithm( ) : _ctrl(ctrl) { - static std::array 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); @@ -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 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"]); } @@ -195,12 +183,7 @@ inline DipoleFluxAlgorithm::DipoleFluxAlgorithm( ) : _ctrl(ctrl) { - static std::array 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); @@ -213,12 +196,7 @@ inline DipoleFluxAlgorithm::DipoleFluxAlgorithm( ) : _ctrl(ctrl) { - static std::array 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"]); @@ -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); /** diff --git a/src/DipoleAlgorithms.cc b/src/DipoleAlgorithms.cc index 409e1fd87..262613cb0 100644 --- a/src/DipoleAlgorithms.cc +++ b/src/DipoleAlgorithms.cc @@ -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