#include <AlgAdapt.h>
Inheritance diagram for Anp::AlgAdapt:

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 (const TrueNu &) const |
| virtual void | Vary (RecoNu &, const TrueNu &) const |
| 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 |
| virtual void | Read (const std::string &fname) |
| virtual void | Save (const std::string &fname) |
Protected Member Functions | |
| void | ReadVec (const std::string &prefix, const Registry ®) |
| const std::vector< double > | GetVec (const std::string &key, const Registry ®) 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 |
|
|
Definition at line 20 of file AlgAdapt.cxx. 00021 {
00022 }
|
|
|
Definition at line 25 of file AlgAdapt.cxx. 00026 {
00027 }
|
|
|
|
|
|
Definition at line 56 of file AlgAdapt.cxx. 00057 {
00058 if(key == "CurErr")
00059 {
00060 return fCurErr;
00061 }
00062 else if(key == "CurPar")
00063 {
00064 return fCurPar;
00065 }
00066 else if(key == "DefErr")
00067 {
00068 return fDefErr;
00069 }
00070 else if(key == "DefPar")
00071 {
00072 return fDefPar;
00073 }
00074
00075 cerr << "AlgAdapt::Get - unknown key: " << key << endl;
00076
00077 assert(false && "unknown key");
00078
00079 return fCurPar;
00080 }
|
|
|
Referenced by Set(). |
|
|
Definition at line 101 of file AlgAdapt.h. 00102 {
00103 return fParName;
00104 }
|
|
|
Definition at line 30 of file AlgAdapt.cxx. References fCurPar, fDefErr, and fDefPar. 00031 {
00032 if(fCurPar.size() != fDefPar.size() || fCurPar.size() != fDefErr.size())
00033 {
00034 cerr << "AlgAdapt::GetPT - parameter and/or error vectors have different size" << endl;
00035 return 0.0;
00036 }
00037
00038 long double pterm = 0.0;
00039
00040 for(unsigned int ipar = 0; ipar < fCurPar.size(); ++ipar)
00041 {
00042 const double cur_par = fCurPar[ipar];
00043 const double def_par = fDefPar[ipar];
00044 const double def_err = fDefErr[ipar];
00045
00046 if(def_err > 0.0)
00047 {
00048 pterm += (cur_par - def_par)*(cur_par - def_par)/(def_err*def_err);
00049 }
00050 }
00051
00052 return pterm;
00053 }
|
|
||||||||||||
|
Definition at line 165 of file AlgAdapt.cxx. References Registry::Get(), reg, and UtilString::StringTok(). Referenced by ReadVec(). 00166 {
00167 //
00168 // Extract Registry value stored at key and convert string numbers separated by
00169 // " " or "," or both to vector of doubles.
00170 //
00171
00172 vector<double> dvec;
00173
00174 const char *value_char = 0;
00175 if(!reg.Get(key.c_str(), value_char) || !value_char)
00176 {
00177 return dvec;
00178 }
00179
00180 vector<string> svec;
00181 UtilString::StringTok(svec, string(value_char), ", ");
00182
00183 dvec = vector<double>(svec.size(), 0.0);
00184
00185 for(unsigned int i = 0; i < svec.size(); ++i)
00186 {
00187 if(!svec[i].empty())
00188 {
00189 dvec[i] = std::atof(svec[i].c_str());
00190 }
00191 }
00192
00193 return dvec;
00194 }
|
|
|
Definition at line 109 of file AlgAdapt.h. 00109 { return 1.0; }
|
|
|
|
|
|
Definition at line 106 of file AlgAdapt.h. 00106 {}
|
|
|
Definition at line 107 of file AlgAdapt.h. 00107 {}
|
|
|
Definition at line 259 of file AlgAdapt.cxx. 00260 {
00261 os << "AlgAdapt::Print - this function is not implemented for this class" << endl;
00262 }
|
|
||||||||||||||||||||
|
Definition at line 225 of file AlgAdapt.cxx. 00226 {
00227 for(unsigned int i = 0; i < v.size(); ++i)
00228 {
00229 if(i == 0)
00230 {
00231 o << "(";
00232 }
00233 else
00234 {
00235 o << ", ";
00236 }
00237
00238 if(p > 0)
00239 {
00240 o << setprecision(p);
00241 }
00242 if(w > 0)
00243 {
00244 o << setw(w);
00245 }
00246
00247 o << v[i];
00248
00249 if(i + 1 == v.size())
00250 {
00251 o << ")";
00252 }
00253 }
00254
00255 o << endl;
00256 }
|
|
||||||||||||||||
|
Definition at line 197 of file AlgAdapt.cxx. References fCurErr, fCurPar, fDefErr, and fDefPar. 00198 {
00199 if(!fCurPar.empty())
00200 {
00201 o << " CurPar = ";
00202 PrintVec(fCurPar, o, w, p);
00203 }
00204
00205 if(!fCurErr.empty())
00206 {
00207 o << " CurErr = ";
00208 PrintVec(fCurErr, o, w, p);
00209 }
00210
00211 if(!fDefPar.empty())
00212 {
00213 o << " DefPar = ";
00214 PrintVec(fDefPar, o, w, p);
00215 }
00216
00217 if(!fDefErr.empty())
00218 {
00219 o << " DefErr = ";
00220 PrintVec(fDefErr, o, w, p);
00221 }
00222 }
|
|
|
Definition at line 289 of file AlgAdapt.cxx. References Anp::ConvertString2Vector(), infile, and Set(). 00290 {
00291 std::ifstream infile(fname.c_str());
00292 if(!infile.is_open())
00293 {
00294 cerr << "AlgAdapt::Read - failed to open input file:\n " << fname << endl;
00295 return;
00296 }
00297
00298 vector<double> cur_err, cur_par, def_err, def_par;
00299
00300 while(!infile.eof())
00301 {
00302 std::string line;
00303 std::getline(infile, line);
00304
00305 if(line.empty())
00306 {
00307 continue;
00308 }
00309
00310 const std::size_t ipos = line.find_last_of("=");
00311 if(ipos == string::npos)
00312 {
00313 cerr << "AlgAdapt::Read - failed to find equal sign:" << endl << line << endl;
00314 continue;
00315 }
00316
00317 const string name = line.substr(0, ipos - 1);
00318 const string data = line.substr(ipos + 1);
00319
00320 if (name == "CurErr") cur_err = Anp::ConvertString2Vector(data);
00321 else if(name == "CurPar") cur_par = Anp::ConvertString2Vector(data);
00322 else if(name == "DefErr") def_err = Anp::ConvertString2Vector(data);
00323 else if(name == "DefPar") def_par = Anp::ConvertString2Vector(data);
00324 }
00325
00326 if(cur_err.size() != cur_par.size() ||
00327 cur_err.size() != def_err.size() ||
00328 cur_err.size() != def_par.size() || cur_err.empty())
00329 {
00330 cerr << "AlgAdapt::Read - input vectors do not match" << endl;
00331 return;
00332 }
00333
00334 Set(cur_err, "CurErr");
00335 Set(cur_par, "CurPar");
00336 Set(def_par, "DefErr");
00337 Set(def_par, "DefPar");
00338 }
|
|
||||||||||||
|
Definition at line 119 of file AlgAdapt.cxx. References GetVec(), reg, and Set(). 00120 {
00121 //
00122 // Read in default and and current error and parameter vectors from
00123 // Registry, if these keys exist in Registry. Use virtual functions Set()
00124 // to set parameter values.
00125 //
00126
00127 const vector<double> pvec = GetVec(prefix + "Par", reg);
00128 if(!pvec.empty())
00129 {
00130 Set(pvec, "CurPar");
00131 }
00132
00133 const vector<double> evec = GetVec(prefix + "Err", reg);
00134 if(!evec.empty())
00135 {
00136 Set(evec, "CurErr");
00137 }
00138
00139 const vector<double> evec_def = GetVec(prefix + "DefErr", reg);
00140 if(!evec_def.empty())
00141 {
00142 Set(evec_def, "DefErr");
00143 }
00144
00145 const vector<double> pvec_def = GetVec(prefix + "DefPar", reg);
00146 if(!pvec_def.empty())
00147 {
00148 Set(pvec_def, "DefPar");
00149 }
00150
00151 const vector<double> pvec_cur = GetVec(prefix + "CurPar", reg);
00152 if(!pvec_cur.empty())
00153 {
00154 Set(pvec_cur, "CurPar");
00155 }
00156
00157 const vector<double> evec_cur = GetVec(prefix + "CurErr", reg);
00158 if(!evec_cur.empty())
00159 {
00160 Set(evec_cur, "CurErr");
00161 }
00162 }
|
|
|
Definition at line 265 of file AlgAdapt.cxx. References Anp::ConvertVector2String(), fCurErr, fCurPar, fDefErr, and fDefPar. 00266 {
00267 if(fCurErr.size() != fCurPar.size() ||
00268 fCurErr.size() != fDefErr.size() ||
00269 fCurErr.size() != fDefPar.size() || fCurErr.empty())
00270 {
00271 cerr << "AlgAdapt::Save - invalid internal state" << endl;
00272 return;
00273 }
00274
00275 ofstream ofile(fname.c_str());
00276 if(!ofile.is_open())
00277 {
00278 cerr << "AlgAdapt::Save - failed to open output file:\n " << fname << endl;
00279 return;
00280 }
00281
00282 ofile << "CurErr = " << Anp::ConvertVector2String(fCurErr) << endl
00283 << "CurPar = " << Anp::ConvertVector2String(fCurPar) << endl
00284 << "DefErr = " << Anp::ConvertVector2String(fDefErr) << endl
00285 << "DefPar = " << Anp::ConvertVector2String(fDefPar) << endl;
00286 }
|
|
||||||||||||
|
Definition at line 83 of file AlgAdapt.cxx. References fCurErr, fCurPar, fDefErr, fDefPar, and GetNPar(). Referenced by Read(), and ReadVec(). 00084 {
00085 if(dvec.size() != GetNPar())
00086 {
00087 cerr << "AlgAdapt::Set - number of parameters and size of input vector do not match: "
00088 << " GetNPar() = " << GetNPar() << " and dvec.size() = " << dvec.size() << endl;
00089 return;
00090 }
00091
00092 if(key == "CurErr")
00093 {
00094 fCurErr = dvec;
00095 return;
00096 }
00097 else if(key == "CurPar")
00098 {
00099 fCurPar = dvec;
00100 return;
00101 }
00102 else if(key == "DefErr")
00103 {
00104 fDefErr = dvec;
00105 return;
00106 }
00107 else if(key == "DefPar")
00108 {
00109 fDefPar = dvec;
00110 return;
00111 }
00112
00113 cerr << "AlgAdapt::Set - unknown key: " << key << endl;
00114
00115 assert(false && "unknown key");
00116 }
|
|
||||||||||||
|
Definition at line 110 of file AlgAdapt.h. 00110 {}
|
|
|
Definition at line 84 of file AlgAdapt.h. Referenced by PrintVec(), Save(), and Set(). |
|
|
Definition at line 85 of file AlgAdapt.h. Referenced by GetPT(), PrintVec(), Save(), and Set(). |
|
|
Definition at line 86 of file AlgAdapt.h. Referenced by GetPT(), PrintVec(), Save(), and Set(). |
|
|
Definition at line 87 of file AlgAdapt.h. Referenced by GetPT(), PrintVec(), Save(), and Set(). |
|
|
Definition at line 89 of file AlgAdapt.h. |
1.3.9.1