00001
00002 #include "btom_slice_simulator_params.h"
00003
00004
00005
00006
00007
00008 #include <vcl_sstream.h>
00009 #include <vcl_iostream.h>
00010
00011
00012
00013
00014
00015 btom_slice_simulator_params::
00016 btom_slice_simulator_params(const btom_slice_simulator_params& bss)
00017 : gevd_param_mixin(*this), ncyl_(bss.ncyl_), min_xy_sigma_(bss.min_xy_sigma_), max_xy_sigma_(bss.max_xy_sigma_)
00018 {
00019 }
00020
00021 btom_slice_simulator_params::
00022 btom_slice_simulator_params(const int ncyl,
00023 const float min_xy_sigma,
00024 const float max_xy_sigma
00025 )
00026 : ncyl_(ncyl), min_xy_sigma_(min_xy_sigma), max_xy_sigma_(max_xy_sigma)
00027 {
00028 SanityCheck();
00029 }
00030
00031 void btom_slice_simulator_params::InitParams(int ncyl,
00032 float min_xy_sigma,
00033 float max_xy_sigma
00034 )
00035 {
00036 ncyl_ = ncyl;
00037 min_xy_sigma_ = min_xy_sigma;
00038 max_xy_sigma_ = max_xy_sigma;
00039 SanityCheck();
00040 }
00041
00042
00043
00044
00045
00046
00047
00048 bool btom_slice_simulator_params::SanityCheck()
00049 {
00050 vcl_stringstream msg;
00051 bool valid = true;
00052
00053 if (ncyl_<=0)
00054 {
00055 msg << "ERROR: must have a finite number of cylinders";
00056 valid = false;
00057 }
00058
00059 if (min_xy_sigma_<=0)
00060 {
00061 msg << "ERROR: sigma must be finite";
00062 valid = false;
00063 }
00064
00065 if (max_xy_sigma_>100.0)
00066 {
00067 msg << "ERROR: max sigma unreasonably large";
00068 valid = false;
00069 }
00070
00071 msg << vcl_ends;
00072
00073 SetErrorMsg(msg.str().c_str());
00074 return valid;
00075 }
00076
00077 vcl_ostream& operator<<(vcl_ostream& os, const btom_slice_simulator_params& ssp)
00078 {
00079 os << "btom_slice_simulator_params:\n[---\n"
00080 << "n cylinders " << ssp.ncyl_ << '\n'
00081 << "min xy-sigma " << ssp.min_xy_sigma_ << '\n'
00082 << "max xy_sigma " << ssp.max_xy_sigma_ << '\n'
00083 << "---]\n";
00084 return os;
00085 }