nidas v1.2.3
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Private Types | Private Attributes | Static Private Attributes | List of all members
nidas::dynld::isff::RebsLinear Class Reference

A linear converter useful for REBS net radiometers, which have two sets of linear coefficients, one set to be applied during the day when Rnet > 0 and one when Rnet < 0: i.e. More...

#include <RebsLinear.h>

Inheritance diagram for nidas::dynld::isff::RebsLinear:
Inheritance graph
[legend]

Public Member Functions

 RebsLinear ()
 
RebsLinearclone () const
 
virtual std::string toString () const override
 Generate a string description of this VariableConverter.
 
float convert (dsm_time_t t, float volts)
 Apply linear conversion.
 
void setCoefficients (const std::vector< float > &vals)
 
void setCoefficients (const float *fp, unsigned int n)
 
const std::vector< float > & getCoefficients () const
 
const floatgetCoefficients (unsigned int &n) const
 
double convert (dsm_time_t t, double val)
 
void reset ()
 Reset the converter to invalid or default settings, such as after an error occurs parsing a CalFile.
 
void parseFields (CalFile *cf)
 Parse the fields in the current CalFile record for the particular settings and coefficients needed by this converter.
 
void fromString (const std::string &)
 
void fromDOMElement (const xercesc::DOMElement *)
 
virtual void readCalFile (dsm_time_t) throw ()
 Before a VariableConverter can be used for a conversion, the converter's CalFile, if it exists, needs to be advanced to the right record for the current sample time.
 
void setCalFileHandler (CalFileHandler *)
 Set the instance of CalFileHandler which will be called and given first option to handle new CalFile records.
 
void setUnits (const std::string &val)
 
virtual const std::string & getUnits () const
 
void setVariable (const Variable *val)
 
const VariablegetVariable () const
 
const DSMSensorgetDSMSensor () const
 
const DSMConfiggetDSMConfig () const
 
void addParameter (Parameter *val)
 Add a parameter to this VariableConverter.
 
const std::list< const Parameter * > & getParameters () const
 Get list of parameters.
 
const ParametergetParameter (const std::string &name) const
 Fetch a parameter by name.
 
void setCalFile (CalFile *)
 
CalFilegetCalFile ()
 
const CalFilegetCalFile () const
 
virtual xercesc::DOMElement * toDOMParent (xercesc::DOMElement *parent, bool complete) const
 Create a DOMElement and append it to the parent.
 
virtual xercesc::DOMElement * toDOMElement (xercesc::DOMElement *node, bool complete) const
 Add my content into a DOMElement.
 

Static Public Member Functions

static double eval (double x, float *p, unsigned int np)
 This is static and defined inline below so the implementation can be shared with at least the one class in dynld which uses it: ParoSci_202BG_Calibration.
 
static VariableConvertercreateVariableConverter (XDOMElement &child)
 
static VariableConvertercreateFromString (const std::string &)
 
static const XMLChgetNamespaceURI ()
 

Protected Member Functions

void abortCalFile (const std::string &what)
 

Protected Attributes

CalFile_calFile
 
CalFileHandler_handler
 

Private Types

enum  coef {
  INTCP_NEG , SLOPE_NEG , INTCP_POS , SLOPE_POS ,
  NUM_COEFS
}
 Order of coefficients. More...
 

Private Attributes

std::vector< float_coefs
 
std::string _units
 
std::map< std::string, Parameter * > _parameters
 Map of parameters by name.
 
std::list< const Parameter * > _constParameters
 List of const pointers to Parameters for providing via getParameters().
 
const Variable_variable
 

Static Private Attributes

static XMLChnamespaceURI = 0
 

Detailed Description

A linear converter useful for REBS net radiometers, which have two sets of linear coefficients, one set to be applied during the day when Rnet > 0 and one when Rnet < 0: i.e.

a linear conversion with an if-test (wow! highly complicated code). Coefficients are read from a calibration file in this order intercept_neg slope_neg intercept_pos slope_pos

Member Enumeration Documentation

◆ coef

Order of coefficients.

Enumerator
INTCP_NEG 
SLOPE_NEG 
INTCP_POS 
SLOPE_POS 
NUM_COEFS 

Constructor & Destructor Documentation

◆ RebsLinear()

RebsLinear::RebsLinear ( )

Referenced by clone().

Member Function Documentation

◆ abortCalFile()

void VariableConverter::abortCalFile ( const std::string & what)
protectedinherited

◆ addParameter()

void VariableConverter::addParameter ( Parameter * val)
inherited

Add a parameter to this VariableConverter.

VariableConverter will then own the pointer and will delete it in its destructor. If a Parameter exists with the same name, it will be replaced with the new Parameter.

References nidas::core::VariableConverter::_constParameters, nidas::core::VariableConverter::_parameters, and nidas::core::getSample().

Referenced by nidas::core::VariableConverter::fromDOMElement(), nidas::core::VariableConverter::operator=(), and nidas::core::VariableConverter::VariableConverter().

◆ clone()

RebsLinear * RebsLinear::clone ( ) const
virtual

Reimplemented from nidas::core::Polynomial.

References RebsLinear().

◆ convert() [1/2]

double Polynomial::convert ( dsm_time_t t,
double val )
virtualinherited

◆ convert() [2/2]

float RebsLinear::convert ( dsm_time_t t,
float volts )

◆ createFromString()

VariableConverter * VariableConverter::createFromString ( const std::string & str)
staticinherited

◆ createVariableConverter()

VariableConverter * VariableConverter::createVariableConverter ( XDOMElement & child)
staticinherited

◆ eval()

double nidas::core::Polynomial::eval ( double x,
float * p,
unsigned int np )
inlinestaticinherited

This is static and defined inline below so the implementation can be shared with at least the one class in dynld which uses it: ParoSci_202BG_Calibration.

References nidas::core::getSample().

Referenced by nidas::dynld::ParoSci_202BG_Calibration::computePressure(), nidas::dynld::ParoSci_202BG_Calibration::computeTemperature(), and nidas::core::Polynomial::convert().

◆ fromDOMElement()

void Polynomial::fromDOMElement ( const xercesc::DOMElement * node)
virtualinherited

◆ fromString()

void Polynomial::fromString ( const std::string & str)
virtualinherited

◆ getCalFile() [1/2]

CalFile * nidas::core::VariableConverter::getCalFile ( )
inlineinherited

◆ getCalFile() [2/2]

const CalFile * nidas::core::VariableConverter::getCalFile ( ) const
inlineinherited

◆ getCoefficients() [1/2]

const std::vector< float > & nidas::core::Polynomial::getCoefficients ( ) const
inlineinherited

◆ getCoefficients() [2/2]

const float * nidas::core::Polynomial::getCoefficients ( unsigned int & n) const
inlineinherited

◆ getDSMConfig()

const DSMConfig * VariableConverter::getDSMConfig ( ) const
inherited

◆ getDSMSensor()

const DSMSensor * VariableConverter::getDSMSensor ( ) const
inherited

◆ getNamespaceURI()

static const XMLCh * nidas::core::DOMable::getNamespaceURI ( )
inlinestaticinherited

◆ getParameter()

const Parameter * VariableConverter::getParameter ( const std::string & name) const
inherited

Fetch a parameter by name.

Returns a NULL pointer if no such parameter exists.

References nidas::core::VariableConverter::_parameters.

Referenced by nidas::dynld::isff::CS_Krypton::fromDOMElement().

◆ getParameters()

const std::list< const Parameter * > & nidas::core::VariableConverter::getParameters ( ) const
inlineinherited

Get list of parameters.

References nidas::core::VariableConverter::_constParameters.

◆ getUnits()

virtual const std::string & nidas::core::VariableConverter::getUnits ( ) const
inlinevirtualinherited

◆ getVariable()

const Variable * nidas::core::VariableConverter::getVariable ( ) const
inlineinherited

◆ parseFields()

void Polynomial::parseFields ( CalFile * cf)
virtualinherited

Parse the fields in the current CalFile record for the particular settings and coefficients needed by this converter.

Implements nidas::core::VariableConverter.

References nidas::core::VariableConverter::_calFile, DLOG, nidas::util::UTime::format(), nidas::core::CalFile::getCurrentFileName(), nidas::core::getSample(), nidas::core::Polynomial::setCoefficients(), and WLOG.

◆ readCalFile()

void VariableConverter::readCalFile ( dsm_time_t t)
throw ( )
virtualinherited

Before a VariableConverter can be used for a conversion, the converter's CalFile, if it exists, needs to be advanced to the right record for the current sample time.

As records are read, this method calls parseFields() so the VariableConverter subclass can extract the particular information it needs from the CalFile fields, typically coefficients.

For sensors which need to extend the kind of conversions which can be specified by a CalFile, there is a callback function available. See setCalFileHandler().

References DLOG, nidas::util::UTime::format(), and nidas::core::getSample().

Referenced by nidas::core::Linear::convert(), nidas::core::Polynomial::convert(), nidas::dynld::isff::CS_Krypton::convert(), convert(), nidas::dynld::isff::NCAR_TRH::convertVariable(), and nidas::dynld::raf::SyncRecordSource::preLoadCalibrations().

◆ reset()

void Polynomial::reset ( )
virtualinherited

Reset the converter to invalid or default settings, such as after an error occurs parsing a CalFile.

Implements nidas::core::VariableConverter.

References nidas::core::getSample(), and nidas::core::Polynomial::setCoefficients().

◆ setCalFile()

void VariableConverter::setCalFile ( CalFile * val)
inherited

◆ setCalFileHandler()

void VariableConverter::setCalFileHandler ( CalFileHandler * cfh)
inherited

Set the instance of CalFileHandler which will be called and given first option to handle new CalFile records.

Pass null to disable the callbacks.

References nidas::core::VariableConverter::_handler, and nidas::core::getSample().

◆ setCoefficients() [1/2]

void Polynomial::setCoefficients ( const float * fp,
unsigned int n )
inherited

◆ setCoefficients() [2/2]

void Polynomial::setCoefficients ( const std::vector< float > & vals)
inherited

◆ setUnits()

void nidas::core::VariableConverter::setUnits ( const std::string & val)
inlineinherited

◆ setVariable()

void nidas::core::VariableConverter::setVariable ( const Variable * val)
inlineinherited

◆ toDOMElement()

xercesc::DOMElement * DOMable::toDOMElement ( xercesc::DOMElement * node,
bool complete ) const
virtualinherited

◆ toDOMParent()

xercesc::DOMElement * DOMable::toDOMParent ( xercesc::DOMElement * parent,
bool complete ) const
virtualinherited

Create a DOMElement and append it to the parent.

Exceptions
xercesc::DOMException

Reimplemented in nidas::core::DSMConfig, nidas::core::DSMSensor, nidas::core::Project, nidas::core::SampleTag, nidas::core::Site, nidas::core::ServerSocket, and nidas::core::Variable.

◆ toString()

std::string RebsLinear::toString ( ) const
overridevirtual

Member Data Documentation

◆ _calFile

CalFile* nidas::core::VariableConverter::_calFile
protectedinherited

◆ _coefs

std::vector<float> nidas::core::Polynomial::_coefs
privateinherited

◆ _constParameters

std::list<const Parameter*> nidas::core::VariableConverter::_constParameters
privateinherited

◆ _handler

CalFileHandler* nidas::core::VariableConverter::_handler
protectedinherited

◆ _parameters

std::map<std::string,Parameter*> nidas::core::VariableConverter::_parameters
privateinherited

◆ _units

std::string nidas::core::VariableConverter::_units
privateinherited

◆ _variable

const Variable* nidas::core::VariableConverter::_variable
privateinherited

◆ namespaceURI

XMLCh * DOMable::namespaceURI = 0
staticprivateinherited

The documentation for this class was generated from the following files: