freSetupOptimizationOptimizerControllerBase.txx

Go to the documentation of this file.
00001 /*=========================================================================
00002 
00003   Program:   F.R.E.E. - flexible registration evaluation engine
00004   Version:   v.1.0.0
00005   Date:      $Date: 2006/09/01 12:00:00 $
00006   Module:    $RCSfile: freSetupOptimizationOptimizerControllerBase.cxx,v $
00007   Language:  C++
00008 
00009 
00010 
00011   Copyright (c) 2007 Ralf o Floca (Department of Medical Informatics,
00012   Institute for Medical Biometry and Informatics, University of Heidelberg,
00013   Germany). All rights reserved.
00014   See FREECopyright.txt or http://www.mi.med.uni-hd.de/free/copyright.htm
00015   for details.
00016 
00017      This software is distributed WITHOUT ANY WARRANTY; without even 
00018      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
00019      PURPOSE.  See the above copyright notices for more information.
00020 
00021 =========================================================================*/
00022 
00023 #ifndef __freSetupOptimizationOptimizerControllerBase_txx
00024 #define __freSetupOptimizationOptimizerControllerBase_txx
00025 
00026 #include "freSetupOptimizationOptimizerControllerBase.h"
00027 
00028 namespace FREE
00029 {
00030 
00031 
00035 
00036 
00037 
00038 template <class TControlledOptimizer>
00039 const char* const SetupOptimizationOptimizerControllerBase<TControlledOptimizer>::cParam_Scales = "Scales";
00040 template <class TControlledOptimizer>
00041 const char* const SetupOptimizationOptimizerControllerBase<TControlledOptimizer>::cParamDsc_Scales = "Scaling for each parameter.";
00042 
00043 template <class TControlledOptimizer>
00044 SetupOptimizationOptimizerControllerBase<TControlledOptimizer>::
00045 SetupOptimizationOptimizerControllerBase():OptimizerControllerBase<TControlledOptimizer>()
00046 {
00047   this->UpdateControllerID(ControllerID::SetupOptimizationOptimizerControllerBase);
00048   this->m_Description = "Base class for registration optimizer controller; not for practical use.";
00049 };
00050   
00051 template <class TControlledOptimizer>
00052 void
00053 SetupOptimizationOptimizerControllerBase<TControlledOptimizer>::
00054 GenerateProfile(CtrlProfile::ControllerProfile& profile,
00055                   const SessionComponentCache* pComponentCache,
00056                   bool bRegardOldSetup) const
00057 {
00058   Superclass::GenerateProfile(profile,pComponentCache,bRegardOldSetup);
00059 
00060   profile.Parameters().AddParameter(cParam_Scales,CtrlProfile::Parameter::PVTDouble,cParamDsc_Scales,1,"1.0");
00061 
00062         CtrlProfile::ProfileOption* pOption = profile.Requirements().AddRequirement(std::string("../")+cComp_MainTransform)->AddProfileOption();
00063         pOption->Inheritance().AddAncestor("Setup Transform");
00064         pOption->CheckForInheritance();
00065 
00066         pOption = profile.Requirements().AddRequirement(std::string("../")+cComp_MainMetric)->AddProfileOption();
00067         pOption->Inheritance().AddAncestor("SetupOptimizationMetricBase");
00068         pOption->CheckForInheritance();
00069 };
00070 
00071 template <class TControlledOptimizer>
00072 void
00073 SetupOptimizationOptimizerControllerBase<TControlledOptimizer>::
00074 ActualizeMainComponent(ComponentType* pMainComponent,
00075                        SessionComponentCache* pComponentCache, SessionInfo* pSessionInfo,
00076                                                                                          const unsigned int& iActLevel) const
00077 {
00078         Superclass::ActualizeMainComponent(pMainComponent, pComponentCache,
00079                                                                                                                                                  pSessionInfo, iActLevel);
00080 
00081   typedef typename ComponentType::ScalesType ComponentScalesType;
00082   ComponentScalesType scales;
00083         
00084   Parameter* pParameter = pComponentCache->Setup()->Parameters().GetParameter(cParam_Scales);
00085   if (!pParameter) throwExceptionMacro("Missing parameter: " << cParam_Scales);
00086         scales = Convert::ParameterLayerToArray<ComponentScalesType>(*(pParameter->GetParameterLayer(0)));
00087 
00088   pMainComponent->SetScales(scales);
00089 };
00090 
00091 template <class TControlledOptimizer>
00092 typename SetupOptimizationOptimizerControllerBase<TControlledOptimizer>::ParametersType
00093 SetupOptimizationOptimizerControllerBase<TControlledOptimizer>::
00094 GetCurrentPosition(TControlledOptimizer* pOptimizer) const
00095 {
00096         return pOptimizer->GetCurrentPosition();
00097 };
00098 
00099 template <class TControlledOptimizer>
00100 typename SetupOptimizationOptimizerControllerBase<TControlledOptimizer>::MeasuresType
00101 SetupOptimizationOptimizerControllerBase<TControlledOptimizer>::
00102 GetCurrentValue(TControlledOptimizer* pOptimizer) const
00103 {
00104         return pOptimizer->GetCurrentValue();
00105 };
00106 
00107 } //end of namespace FREE
00108 
00109 #endif

Generated at Sat Oct 13 17:27:37 2007 for f.r.e.e. - Flexible Registration and Evaluation Engine by doxygen 1.5.3 written by Dimitri van Heesch, © 1997-2000