30 template <
typename T> 
inline T 
MIN(
const T &A, 
const T &B) {
 
   31   if ( A < B ) { 
return (A); }
 
   35 template <
typename T> 
inline T 
MAX(
const T &A, 
const T &B) {
 
   36   if ( A > B ) { 
return (A); }
 
   47  for (
int i = 0 ; i < v.dim() ; i++) {
 
 
   60  for (
int i = 0 ; i < v.dim() ; i++) {
 
 
   72  const int cpmm2ccd[] = {0,1,2,3,12,4,10,11,5,13,6,7,8,9};
 
   73  if ( (cpmm < 0) || (cpmm >= (
int)(
sizeof(cpmm2ccd)/
sizeof(
int))) ) {
 
   74    QString mess = 
"CpmmToCdd: Bad CpmmNumber (" + 
toString(cpmm) + 
")";
 
   77  return (cpmm2ccd[cpmm]);
 
 
   87  if ( (ccd < 0) || (ccd > 13) ) {
 
   88    QString mess = 
"CcdToFilter: Bad Ccd Number (" + 
toString(ccd) + 
")";
 
   93  if ( ccd <= 9 )     { filter = 
"RED"; }
 
   94  else if (ccd <= 11) { filter = 
"IR";  }
 
   95  else                { filter = 
"BG";  }
 
 
  112  int nlines(eline-sline+1);
 
  114  for (
int l =  0 ; l < nlines ; l++) {
 
  115    for (
int s = 0 ; s < m.dim2() ; s++) {
 
  116      mcrop[l][s] = m[l+sline][s];
 
 
  135  int nsamps(esamp-ssamp+1);
 
  137  for (
int l =  0 ; l < m.dim1() ; l++) {
 
  138    for (
int s = 0 ; s < nsamps ; s++) {
 
  139      mcrop[l][s] = m[l][s+ssamp];
 
 
  158  eline = (eline == -1) ? m.dim1() - 1 : eline;
 
  160  for (
int s =  0 ; s < m.dim2() ; s++) {
 
  162    for (
int l = sline ; l <= eline ; l++) {
 
  165    v[s] = stats.Average();
 
 
  184  esamp = (esamp == -1) ? m.dim2() - 1 : esamp;
 
  186  for (
int l =  0 ; l < m.dim1() ; l++) {
 
  188    for (
int s = ssamp ; s <= esamp ; s++) {
 
  191    v[l] = stats.Average();
 
 
  207  if (!conf.exists(keyname)) { 
return (defval); }
 
  208  if (conf.count(keyname) < index) { 
return (defval); }
 
  209  QString iValue(conf.value(keyname, index));
 
 
  223    return toInt(QString(value).trimmed());
 
 
  234template <
typename T> 
double ToDouble(
const T &value) {
 
  235    return toDouble(QString(value).trimmed());
 
 
  246template <
typename T> QString 
ToString(
const T &value) {
 
 
  258inline bool IsEqual(
const QString &v1, 
const QString &v2 = 
"TRUE") {
 
  259    return (v1.toUpper() == v2.toUpper());
 
 
  277                   const QString &value = 
"TRUE") {
 
  278  if ( prof.exists(key) ) {
 
  279    return (
IsEqual(prof(key), value));
 
 
  296  return (
IsTrueValue(prof, 
"Debug::SkipModule", 
"TRUE"));
 
 
  302  if (top.dim2() != bottom.dim2()) {
 
  303       std::ostringstream mess;
 
  304        mess << 
"Top buffer samples (" << top.dim2()
 
  305             << 
") do not match bottom buffer samples (" << bottom.dim2()
 
  310  int nlines(top.dim1()+bottom.dim1());
 
  312  for (
int lt = 0 ; lt < top.dim1() ; lt++) {
 
  313    for (
int s = 0 ; s < top.dim2() ; s++) {
 
  314      mat[lt][s] = top[lt][s];
 
  318  int topl = top.dim1();
 
  319  for (
int lb = 0 ; lb < bottom.dim1() ; lb++) {
 
  320    for (
int s = 0 ; s < top.dim2() ; s++) {
 
  321      mat[topl+lb][s] = bottom[lb][s];
 
 
  329  if (right.dim1() != right.dim1()) {
 
  330       std::ostringstream mess;
 
  331        mess << 
"Left buffer lines (" << left.dim1()
 
  332             << 
") do not match right buffer lines (" << right.dim1()
 
  337  int nsamps(left.dim2()+right.dim2());
 
  339  for (
int ll = 0 ; ll < left.dim1() ; ll++) {
 
  340    for (
int s = 0 ; s < left.dim2() ; s++) {
 
  341      mat[ll][s] = left[ll][s];
 
  345  int lefts = left.dim2();
 
  346  for (
int lr = 0 ; lr < right.dim1() ; lr++) {
 
  347    for (
int s = 0 ; s < right.dim2() ; s++) {
 
  348      mat[lr][lefts+s] = right[lr][s];
 
 
  369    double Time(
const double line)
 const {
 
  370      return (line * (_bin * _ltime * 1.0E-6));
 
 
 
  391inline double HiTempEqn(
const double temperature, 
const double napcm2 = 2.0,
 
  392                        const double px = 12.0) {
 
  393  double temp = temperature + 273.0;
 
  394  double eg   = 1.1557 - (7.021E-4 * temp * temp) / (1108.0 + temp);
 
  395  const double K = 1.38E-23;
 
  396  const double Q = 1.6E-19;
 
  397  return (napcm2*(px*px)*2.55E7*std::pow(temp,1.5)*std::exp(-eg*Q/2.0/K/temp));
 
 
  417  if ( n == v.dim() ) { 
return (v); }
 
  419  double mag((
double) v.dim()/ (
double) n);
 
  421  for ( 
int i = 0 ; i < v.dim() ; i++ ) {
 
  422    double x((
double) i);
 
  424      nterp.AddData(x,v[i]);
 
  430  for ( 
int j = 0 ; j < n ; j++ ) {
 
  431    double x = (double) j * mag;
 
 
  446  for ( 
int blob = 0 ; blob < label.
objects() ; blob++ ) {
 
  448      QString name = label.
object(blob)[
"Name"][0];
 
  449      if ( name.toLower() == 
"hirise calibration ancillary" ||
 
  450           name.toLower() == 
"hirise calibration images" ||
 
  451           name.toLower() == 
"hirise ancillary") {
 
 
  477  if (data.size() == 0)  
return (
Null);
 
  478  if (data.size() == 1) 
return (data[0]);
 
  480#if defined(USE_AVERAGE) 
  482  stats.
AddData(&data[0], data.size());
 
  483  return (stat.Average());
 
  485  std::sort(data.begin(), data.end());
 
  486  int meanIndex = data.size()/2;
 
  487  if ((data.size() % 2) == 1)  
return data[meanIndex];
 
  488  return ((data[meanIndex-1]+data[meanIndex])/2.0);
 
 
#define MIN(x, y)
Definition AlbedoAtm.cpp:7
 
#define MAX(x, y)
Definition AlbedoAtm.cpp:8
 
#define _FILEINFO_
Macro for the filename and line number.
Definition IException.h:24
 
A DbProfile is a container for access parameters to a database.
Definition DbProfile.h:51
 
Compute HiRISE line times.
Definition HiCalUtil.h:361
 
HiLineTimeEqn(int bin, double ltime)
Definition HiCalUtil.h:364
 
double Time(const double line) const
Definition HiCalUtil.h:369
 
void setBin(int bin)
Definition HiCalUtil.h:368
 
virtual ~HiLineTimeEqn()
Definition HiCalUtil.h:365
 
HiLineTimeEqn()
Definition HiCalUtil.h:363
 
double operator()(const double line) const
Definition HiCalUtil.h:372
 
void setLineTime(double ltime)
Definition HiCalUtil.h:367
 
Isis exception class.
Definition IException.h:91
 
@ User
A type of error that could only have occurred due to a mistake on the user's part (e....
Definition IException.h:126
 
NumericalApproximation provides various numerical analysis methods of interpolation,...
Definition NumericalApproximation.h:726
 
@ CubicNatural
Cubic Spline interpolation with natural boundary conditions.
Definition NumericalApproximation.h:734
 
@ NearestEndpoint
Evaluate() returns the y-value of the nearest endpoint if a is outside of the domain.
Definition NumericalApproximation.h:817
 
bool isNamed(const QString &match) const
Returns whether the given string is equal to the container name or not.
Definition PvlContainer.h:72
 
Container for cube-like labels.
Definition Pvl.h:119
 
void deleteObject(const QString &name)
Remove an object from the current PvlObject.
Definition PvlObject.cpp:372
 
int objects() const
Returns the number of objects.
Definition PvlObject.h:221
 
PvlObject & object(const int index)
Return the object at the specified index.
Definition PvlObject.cpp:495
 
This class is used to accumulate statistics on double arrays.
Definition Statistics.h:94
 
void AddData(const double *data, const unsigned int count)
Add an array of doubles to the accumulators and counters.
Definition Statistics.cpp:141
 
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16
 
QString CcdToFilter(int ccd)
Convert HiRISE Ccd number to string filter name.
Definition HiCalUtil.h:86
 
QString toString(bool boolToConvert)
Global function to convert a boolean to a string.
Definition IString.cpp:211
 
int toInt(const QString &string)
Global function to convert from a string to an integer.
Definition IString.cpp:93
 
double HiTempEqn(const double temperature, const double napcm2=2.0, const double px=12.0)
Implements (classic) HiRISE temperature equation.
Definition HiCalUtil.h:391
 
HiMatrix cropSamples(const HiMatrix &m, int ssamp, int esamp)
Crop specified samples from a buffer.
Definition HiCalUtil.h:134
 
HiVector rebin(const HiVector &v, int n)
Rebins a vector to a different size.
Definition HiCalUtil.h:416
 
int ValidCount(const HiVector &v)
Counts number of valid pixels in vector.
Definition HiCalUtil.h:45
 
HiMatrix appendSamples(const HiMatrix &left, const HiMatrix &right)
Definition HiCalUtil.h:327
 
HiMatrix appendLines(const HiMatrix &top, const HiMatrix &bottom)
Definition HiCalUtil.h:300
 
TNT::Array2D< double > HiMatrix
2-D buffer
Definition HiCalTypes.h:28
 
int InValidCount(const HiVector &v)
Counts number of invalid pixels in vector.
Definition HiCalUtil.h:58
 
HiVector averageSamples(const HiMatrix &m, int ssamp=0, int esamp=-1)
Reduces by averaging specified samples from a buffer.
Definition HiCalUtil.h:182
 
int CpmmToCcd(int cpmm)
Convert HiRISE Cpmm number to Ccd number.
Definition HiCalUtil.h:71
 
double GainLineStat(std::vector< double > &data)
Return the statistics for a vector of data.
Definition HiCalUtil.h:474
 
const double Null
Value for an Isis Null pixel.
Definition SpecialPixel.h:95
 
T ConfKey(const DbProfile &conf, const QString &keyname, const T &defval, int index=0)
Find a keyword in a profile using default for non-existant keywords.
Definition HiCalUtil.h:205
 
bool IsTrueValue(const DbProfile &prof, const QString &key, const QString &value="TRUE")
Determines if the keyword value is the expected value.
Definition HiCalUtil.h:276
 
void RemoveHiBlobs(Pvl &label)
Deletes HiRISE specific BLOBS from cube file.
Definition HiCalUtil.h:445
 
bool IsSpecial(const double d)
Returns if the input pixel is special.
Definition SpecialPixel.h:197
 
TNT::Array1D< double > HiVector
1-D Buffer
Definition HiCalTypes.h:27
 
QString ToString(const T &value)
Helper function to convert values to strings.
Definition HiCalUtil.h:246
 
HiVector averageLines(const HiMatrix &m, int sline=0, int eline=-1)
Reduces by averaging specified lines from a buffer.
Definition HiCalUtil.h:157
 
double ToDouble(const T &value)
Helper function to convert values to doubles.
Definition HiCalUtil.h:234
 
double toDouble(const QString &string)
Global function to convert from a string to a double.
Definition IString.cpp:149
 
HiMatrix cropLines(const HiMatrix &m, int sline, int eline)
Crop specified lines from a buffer.
Definition HiCalUtil.h:111
 
bool SkipModule(const DbProfile &prof)
Checks profile flag to skip the current Module.
Definition HiCalUtil.h:295
 
int ToInteger(const T &value)
Helper function to convert values to Integers.
Definition HiCalUtil.h:222
 
bool IsEqual(const QString &v1, const QString &v2="TRUE")
Shortened string equality test.
Definition HiCalUtil.h:258