Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

Anp::AlgAdapt Class Reference

#include <AlgAdapt.h>

Inheritance diagram for Anp::AlgAdapt:

Anp::Base List of all members.

Public Member Functions

 AlgAdapt ()
virtual ~AlgAdapt ()
virtual bool Init ()=0
virtual long double GetPT () const
virtual unsigned int GetNPar () const =0
virtual void InitReco (RecoNu &) const
virtual void InitTrue (TrueNu &) const
virtual double GetWeight (RecoNu &, const TrueNu &) const
virtual double GetReco (RecoNu &) const =0
virtual double GetTrue (const TrueNu &) const =0
virtual const std::vector<
double > & 
Get (const std::string &key) const
virtual void Set (const std::vector< double > &dvec, const std::string &key)
virtual const std::vector<
std::string > & 
GetParName () const
virtual void Config (const Registry &)=0
virtual void Print (std::ostream &os=std::cout) const
const std::string & GetName () const
void SetName (const std::string &name)

Protected Member Functions

void ReadVec (const std::string &prefix, const Registry &reg)
const std::vector< double > GetVec (const std::string &key, const Registry &reg) const
void PrintVec (std::ostream &o, int w=7, int p=5) const
void PrintVec (const std::vector< double > &v, std::ostream &o, int w=7, int p=5) const

Protected Attributes

std::vector< double > fCurErr
std::vector< double > fCurPar
std::vector< double > fDefErr
std::vector< double > fDefPar
std::vector< std::string > fParName
std::string fName

Constructor & Destructor Documentation

Anp::AlgAdapt::AlgAdapt  ) 
 

Definition at line 18 of file AlgAdapt.cxx.

00019 {
00020 }

Anp::AlgAdapt::~AlgAdapt  )  [virtual]
 

Definition at line 23 of file AlgAdapt.cxx.

00024 {
00025 }


Member Function Documentation

virtual void Anp::AlgAdapt::Config const Registry  )  [pure virtual]
 

const vector< double > & Anp::AlgAdapt::Get const std::string &  key  )  const [virtual]
 

Definition at line 58 of file AlgAdapt.cxx.

00059 {
00060    if(key == "CurErr")
00061    {
00062       return fCurErr;
00063    }
00064    else if(key == "CurPar")
00065    {
00066       return fCurPar;
00067    }
00068    else if(key == "DefErr")
00069    {
00070       return fDefErr;
00071    }
00072    else if(key == "DefPar")
00073    {
00074       return fDefPar;
00075    }
00076    
00077    cerr << "AlgAdapt::Get - unknown key: " << key << endl;
00078    
00079    assert(false && "unknown key");
00080 
00081    return fCurPar;
00082 }

const std::string & Anp::AlgAdapt::GetName  )  const [inline]
 

Definition at line 103 of file AlgAdapt.h.

00103 { return fName; }

virtual unsigned int Anp::AlgAdapt::GetNPar  )  const [pure virtual]
 

Referenced by Set().

const std::vector< std::string > & Anp::AlgAdapt::GetParName  )  const [inline, virtual]
 

Definition at line 93 of file AlgAdapt.h.

00094    {
00095       return fParName;
00096    }

long double Anp::AlgAdapt::GetPT  )  const [virtual]
 

Definition at line 28 of file AlgAdapt.cxx.

References fCurPar, fDefErr, and fDefPar.

00029 {
00030    if(fCurPar.size() != fDefPar.size() || fCurPar.size() != fDefErr.size())
00031    {
00032       cerr << "AlgAdapt::GetPT - parameter and/or error vectors have different size" << endl;
00033       return 0.0;
00034    }
00035 
00036    long double pterm = 0.0;
00037 
00038    for(unsigned int ipar = 0; ipar < fCurPar.size(); ++ipar)
00039    {
00040       const double cur_par = fCurPar[ipar];
00041       const double def_par = fDefPar[ipar];
00042       const double def_err = fDefErr[ipar];
00043 
00044       if(def_err > 0.0)
00045       {
00046          pterm += (cur_par - def_par)*(cur_par - def_par)/(def_err*def_err);
00047       }
00048       else
00049       {
00050          cerr << "AlgAdapt::GetPT - default error values are not positive" << endl;
00051       }      
00052    }
00053 
00054    return pterm;
00055 }

virtual double Anp::AlgAdapt::GetReco RecoNu  )  const [pure virtual]
 

virtual double Anp::AlgAdapt::GetTrue const TrueNu  )  const [pure virtual]
 

const vector< double > Anp::AlgAdapt::GetVec const std::string &  key,
const Registry reg
const [protected]
 

Definition at line 167 of file AlgAdapt.cxx.

References Registry::Get(), and UtilString::StringTok().

Referenced by ReadVec().

00168 {
00169    //
00170    // Extract Registry value stored at key and convert string numbers separated by
00171    // " " or "," or both to vector of doubles.
00172    //
00173  
00174    vector<double> dvec;
00175    
00176    const char *value_char = 0;
00177    if(!reg.Get(key.c_str(), value_char) || !value_char)
00178    {
00179       return dvec;
00180    }
00181 
00182    vector<string> svec;
00183 
00184    UtilString::StringTok(svec, string(value_char), ", ");
00185    
00186    dvec = vector<double>(svec.size(), 0.0);
00187 
00188    for(unsigned int i = 0; i < svec.size(); ++i)
00189    {
00190       if(!svec[i].empty())
00191       {
00192          dvec[i] = std::atof(svec[i].c_str());
00193       }
00194    }
00195 
00196    return dvec;
00197 }

double Anp::AlgAdapt::GetWeight RecoNu ,
const TrueNu
const [inline, virtual]
 

Definition at line 101 of file AlgAdapt.h.

00101 { return 1.0; }

virtual bool Anp::AlgAdapt::Init  )  [pure virtual]
 

void Anp::AlgAdapt::InitReco RecoNu  )  const [inline, virtual]
 

Definition at line 98 of file AlgAdapt.h.

00098 {}

void Anp::AlgAdapt::InitTrue TrueNu  )  const [inline, virtual]
 

Definition at line 99 of file AlgAdapt.h.

00099 {}

void Anp::AlgAdapt::Print std::ostream &  os = std::cout  )  const [virtual]
 

Definition at line 262 of file AlgAdapt.cxx.

00263 {
00264    os << "AlgAdapt::Print - this function is not implemented for this class" << endl;
00265 }

void Anp::AlgAdapt::PrintVec const std::vector< double > &  v,
std::ostream &  o,
int  w = 7,
int  p = 5
const [protected]
 

Definition at line 228 of file AlgAdapt.cxx.

00229 {
00230    for(unsigned int i = 0; i < v.size(); ++i)
00231    {
00232       if(i == 0)
00233       {
00234          o << "(";
00235       }
00236       else
00237       {
00238          o << ", ";
00239       }
00240       
00241       if(p > 0)
00242       {
00243          o << setprecision(p);
00244       }
00245       if(w > 0)
00246       {
00247          o << setw(w);
00248       }
00249 
00250       o << v[i];
00251       
00252       if(i + 1 == v.size())
00253       {
00254          o << ")";
00255       }
00256    }
00257 
00258    o << endl;
00259 }

void Anp::AlgAdapt::PrintVec std::ostream &  o,
int  w = 7,
int  p = 5
const [protected]
 

Definition at line 200 of file AlgAdapt.cxx.

References fCurErr, fCurPar, fDefErr, and fDefPar.

00201 {
00202    if(!fCurPar.empty())
00203    {
00204       o << "   CurPar = ";
00205       PrintVec(fCurPar, o, w, p);
00206    }
00207    
00208    if(!fCurErr.empty())
00209    {
00210       o << "   CurErr = ";
00211       PrintVec(fCurErr, o, w, p);
00212    }
00213    
00214    if(!fDefPar.empty())
00215    {
00216       o << "   DefPar = ";
00217       PrintVec(fDefPar, o, w, p);
00218    }
00219    
00220    if(!fDefErr.empty())
00221    {
00222       o << "   DefErr = ";
00223       PrintVec(fDefErr, o, w, p);
00224    }
00225 }

void Anp::AlgAdapt::ReadVec const std::string &  prefix,
const Registry reg
[protected]
 

Definition at line 121 of file AlgAdapt.cxx.

References GetVec(), and Set().

00122 {
00123    //
00124    // Read in default and and current error and parameter vectors from
00125    // Registry, if these keys exist in Registry. Use virtual functions Set()
00126    // to set parameter values.
00127    //
00128 
00129    const vector<double> pvec = GetVec(prefix + "Par", reg);
00130    if(!pvec.empty())
00131    {
00132       Set(pvec, "CurPar");
00133    }
00134 
00135    const vector<double> evec = GetVec(prefix + "Err", reg);
00136    if(!evec.empty())
00137    {
00138       Set(evec, "CurErr");
00139    }
00140 
00141    const vector<double> evec_def = GetVec(prefix + "DefErr", reg);
00142    if(!evec_def.empty())
00143    {
00144       Set(evec_def, "DefErr");
00145    }
00146 
00147    const vector<double> pvec_def = GetVec(prefix + "DefPar", reg);
00148    if(!pvec_def.empty())
00149    {
00150       Set(pvec_def, "DefPar");
00151    }
00152 
00153    const vector<double> pvec_cur = GetVec(prefix + "CurPar", reg);
00154    if(!pvec_cur.empty())
00155    {
00156       Set(pvec_cur, "CurPar");
00157    }
00158 
00159    const vector<double> evec_cur = GetVec(prefix + "CurErr", reg);
00160    if(!evec_cur.empty())
00161    {
00162       Set(evec_cur, "CurErr");
00163    }
00164 }

void Anp::AlgAdapt::Set const std::vector< double > &  dvec,
const std::string &  key
[virtual]
 

Definition at line 85 of file AlgAdapt.cxx.

References fCurErr, fCurPar, fDefErr, fDefPar, and GetNPar().

Referenced by ReadVec().

00086 {
00087    if(dvec.size() != GetNPar())
00088    {
00089       cerr << "AlgAdapt::Set - number of parameters and size of input vector do not match: " 
00090            << " GetNPar() = " << GetNPar() << " and dvec.size() = " << dvec.size() << endl;
00091       return;
00092    }
00093 
00094    if(key == "CurErr")
00095    {
00096       fCurErr = dvec;
00097       return;
00098    }
00099    else if(key == "CurPar")
00100    {
00101       fCurPar = dvec;
00102       return;
00103    }
00104    else if(key == "DefErr")
00105    {
00106       fDefErr = dvec;
00107       return;
00108    }
00109    else if(key == "DefPar")
00110    {
00111       fDefPar = dvec;
00112       return;
00113    }
00114    
00115    cerr << "AlgAdapt::Set - unknown key: " << key << endl;
00116 
00117    assert(false && "unknown key");
00118 }

void Anp::AlgAdapt::SetName const std::string &  name  )  [inline]
 

Definition at line 104 of file AlgAdapt.h.

References fName.

00104 { fName = name; }


Member Data Documentation

std::vector<double> Anp::AlgAdapt::fCurErr [protected]
 

Definition at line 78 of file AlgAdapt.h.

Referenced by PrintVec(), and Set().

std::vector<double> Anp::AlgAdapt::fCurPar [protected]
 

Definition at line 79 of file AlgAdapt.h.

Referenced by GetPT(), PrintVec(), and Set().

std::vector<double> Anp::AlgAdapt::fDefErr [protected]
 

Definition at line 80 of file AlgAdapt.h.

Referenced by GetPT(), PrintVec(), and Set().

std::vector<double> Anp::AlgAdapt::fDefPar [protected]
 

Definition at line 81 of file AlgAdapt.h.

Referenced by GetPT(), PrintVec(), and Set().

std::string Anp::AlgAdapt::fName [protected]
 

Definition at line 85 of file AlgAdapt.h.

Referenced by SetName().

std::vector<std::string> Anp::AlgAdapt::fParName [protected]
 

Definition at line 83 of file AlgAdapt.h.


The documentation for this class was generated from the following files:
Generated on Fri Mar 28 16:15:10 2008 for loon by  doxygen 1.3.9.1