Main Page | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members

btom_slice_simulator_params.cxx

Go to the documentation of this file.
00001 // This is brl/bmvl/btom/btom_slice_simulator_params.cxx
00002 #include "btom_slice_simulator_params.h"
00003 //:
00004 // \file
00005 // See btom_slice_simulator_params.h
00006 //
00007 //-----------------------------------------------------------------------------
00008 #include <vcl_sstream.h>
00009 #include <vcl_iostream.h>
00010 
00011 //------------------------------------------------------------------------
00012 // Constructors
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 //:   Checks that parameters are within acceptable bounds
00045 //    Note that msg << ends seems to restart the string and erase the
00046 //    previous string. We should only use it as the last call, use
00047 //    vcl_endl otherwise.
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 }

Generated on Thu Jan 10 14:54:32 2008 for contrib/brl/bmvl/btom by  doxygen 1.4.4