diff --git a/Modules/IGT/IGTFilters/mitkNavigationDataEvaluationFilter.cpp b/Modules/IGT/IGTFilters/mitkNavigationDataEvaluationFilter.cpp new file mode 100644 index 0000000000..4abbbbe5b5 --- /dev/null +++ b/Modules/IGT/IGTFilters/mitkNavigationDataEvaluationFilter.cpp @@ -0,0 +1,353 @@ +/*========================================================================= + +Program: Medical Imaging & Interaction Toolkit +Language: C++ +Date: $Date$ +Version: $Revision: 16011 $ + +Copyright (c) German Cancer Research Center, Division of Medical and +Biological Informatics. All rights reserved. +See MITKCopyright.txt or http://www.mitk.org/copyright.html for details. + +This software is distributed WITHOUT ANY WARRANTY; without even +the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ + +#include "mitkNavigationDataEvaluationFilter.h" +#include + + +mitk::NavigationDataEvaluationFilter::NavigationDataEvaluationFilter() +: mitk::NavigationDataToNavigationDataFilter() +{ + +} + + +mitk::NavigationDataEvaluationFilter::~NavigationDataEvaluationFilter() +{ + +} + +void mitk::NavigationDataEvaluationFilter::GenerateData() +{ + + this->CreateOutputsForAllInputs(); // make sure that we have the same number of outputs as inputs + this->CreateMembersForAllInputs(); + + /* update outputs with tracking data from tools */ + for (unsigned int i = 0; i < this->GetNumberOfOutputs() ; ++i) + { + //first copy outputs to inputs + mitk::NavigationData* output = this->GetOutput(i); + assert(output); + const mitk::NavigationData* input = this->GetInput(i); + assert(input); + if (input->IsDataValid() == false) {output->SetDataValid(false);} + else {output->Graft(input);} + + //then save statistics + if(input->IsDataValid()) + { + m_LoggedPositions[i].push_back(input->GetPosition()); + m_LoggedQuaternions[i].push_back(input->GetOrientation()); + } + else + { + m_InavildSamples[i]++; + } + } + +} +void mitk::NavigationDataEvaluationFilter::CreateMembersForAllInputs() +{ + while(this->m_LoggedPositions.size() < this->GetNumberOfInputs()) + { + std::pair> newElement(m_LoggedPositions.size(),std::vector()); + m_LoggedPositions.insert(newElement); + } + while(this->m_LoggedQuaternions.size() < this->GetNumberOfInputs()) + { + std::pair> newElement(m_LoggedQuaternions.size(),std::vector()); + m_LoggedQuaternions.insert(newElement); + } + while(this->m_InavildSamples.size() < this->GetNumberOfInputs()) + { + std::pair newElement(m_LoggedQuaternions.size(),0); + m_InavildSamples.insert(newElement); + } + + +} + +void mitk::NavigationDataEvaluationFilter::ResetStatistic() +{ +for (int i = 0; i < m_LoggedPositions.size(); i++) m_LoggedPositions[i] = std::vector(); +for (int i = 0; i < m_LoggedQuaternions.size(); i++) m_LoggedQuaternions[i] = std::vector(); +for (int i = 0; i < m_InavildSamples.size(); i++) m_InavildSamples[i] = 0; +} + +int mitk::NavigationDataEvaluationFilter::GetNumberOfAnalysedNavigationData(int input) +{ +return this->m_LoggedPositions[input].size(); +} + + +mitk::Point3D mitk::NavigationDataEvaluationFilter::GetPositionMean(int input) +{ +return GetMean(m_LoggedPositions[input]); +} + +mitk::Vector3D mitk::NavigationDataEvaluationFilter::GetPositionStandardDeviation(int input) +{ +mitk::Vector3D returnValue; +std::vector listX = std::vector(); +std::vector listY = std::vector(); +std::vector listZ = std::vector(); +for (int i=0; i listX = std::vector(); +std::vector listY = std::vector(); +std::vector listZ = std::vector(); +for (int i=0; i list1 = std::vector(); +std::vector list2 = std::vector(); +std::vector list3 = std::vector(); +std::vector list4 = std::vector(); +for (int i=0; i list) +{ +std::sort(list.begin(), list.end()); +if (list.size() % 2 == 0.) //even + { + double element1 = list.at(list.size()/2); + double element2 = list.at(list.size()/2); + return ((element1+element2)/2.0); + } +else //odd + { + return list.at((list.size())/2); + } +} + +std::vector mitk::NavigationDataEvaluationFilter::GetErrorList(std::vector list) +{ +std::vector errorList = std::vector(); +mitk::Point3D mean = GetMean(list); +for(int i=0; i list) +{ +//calculate mean +mitk::Point3D mean; +mean.Fill(0); + +for (int i=0; i list) +{ +std::sort(list.begin(), list.end()); +return list.at(list.size()-1); +} + +double mitk::NavigationDataEvaluationFilter::GetMin(std::vector list) +{ +std::sort(list.begin(), list.end()); +return list.at(0); +} + +double mitk::NavigationDataEvaluationFilter::GetStabw(std::vector list) +{ +double returnValue = 0; +double mean = GetMean(list); +for(int i=0; i list) +{ +double returnValue = 0; +double mean = GetMean(list); +for(int i=0; i list) +{ +double mean = 0; +for(int i=0; i list) +{ +//calculate mean +mitk::Quaternion mean; +mean[0] = 0; +mean[1] = 0; +mean[2] = 0; +mean[3] = 0; + +for (int i=0; i + +#include +#include + + +namespace mitk { + + /**Documentation + * \brief NavigationDataEvaluationFilter calculates statistical data (mean value, mean error, etc.) on the input navigation data. + * Input navigation data are set 1:1 on output navigation data. + * + * \ingroup IGT + */ + class MitkIGT_EXPORT NavigationDataEvaluationFilter : public NavigationDataToNavigationDataFilter + { + + public: + + mitkClassMacro(NavigationDataEvaluationFilter, NavigationDataToNavigationDataFilter); + itkNewMacro(Self); + + /** @brief Resets all statistics and starts again. */ + void ResetStatistic(); + + /** @return Returns the number of analysed navigation datas for the specified input (without invalid samples). */ + int GetNumberOfAnalysedNavigationData(int input); + /** @return Returns the number of invalid samples for the specified input. Invalid samples are ignored for the statistical calculation.*/ + int GetNumberOfInvalidSamples(int input); + /** @return Returns the percentage of invalid samples in relation to all samples for the specified input.*/ + double GetPercentageOfInvalidSamples(int input); + /** @return Returns the mean position of the specified input since the start of the statistic (last call of ResetStatistic()) */ + mitk::Point3D GetPositionMean(int input); + /** @return Returns the standard derivation of each component (x, y and z) of the specified input since the start of the statistic (last call of ResetStatistic()) */ + mitk::Vector3D GetPositionStandardDeviation(int input); + /** @return Returns the sample standard derivation of each component (x, y and z) of the specified input since the start of the statistic (last call of ResetStatistic()) */ + mitk::Vector3D GetPositionSampleStandardDeviation(int input); + + /** @return Returns the mean quaternion of the specified input since the start of the statistic (last call of ResetStatistic()) */ + mitk::Quaternion GetQuaternionMean(int input); + /** @return Returns the standard derivation of each component of the specified input since the start of the statistic (last call of ResetStatistic()) */ + mitk::Quaternion GetQuaternionStandardDeviation(int input); + + + /** @return Returns the mean distance to the mean postion (=mean error) to the specified input. */ + double GetPositionErrorMean(int input); + /** @return Returns the standard derivation of the errors of all positions to the specified input. */ + double GetPositionErrorStandardDeviation(int input); + /** @return Returns the sample standard derivation of the errors of all positions to the specified input. */ + double GetPositionErrorSampleStandardDeviation(int input); + /** @return Returns the RMS of the errors of all positions to the specified input. */ + double GetPositionErrorRMS(int input); + /** @return Returns the median of the errors of all positions to the specified input. */ + double GetPositionErrorMedian(int input); + /** @return Returns the maximum of the errors of all positions to the specified input. */ + double GetPositionErrorMax(int input); + /** @return Returns the minimum of the errors of all positions to the specified input. */ + double GetPositionErrorMin(int input); + + protected: + + NavigationDataEvaluationFilter(); + virtual ~NavigationDataEvaluationFilter(); + + /**Documentation + * \brief filter execute method + * + * transforms navigation data + */ + virtual void GenerateData(); + + /** @brief Creates the member variables which store all the statistical data for every input. */ + void CreateMembersForAllInputs(); + + + std::map> m_LoggedPositions; //a map here, to have one list for every navigation data + std::map> m_LoggedQuaternions; + std::map m_InavildSamples; + + + /** @return returns a list with the distances to the mean of the list */ + std::vector GetErrorList(std::vector list); + + mitk::Point3D GetMean(std::vector list); + + mitk::Quaternion GetMean(std::vector list); + + + double GetMean(std::vector list); + + double GetMedian(std::vector list); + + double GetMax(std::vector list); + + double GetMin(std::vector list); + + /** @return returns the standard derivation of the list */ + double GetStabw(std::vector list); + + /** @return returns the sample standard derivation of the list */ + double GetSampleStabw(std::vector list); + }; +} // namespace mitk + +#endif /* MITKNavigationDataEvaluationFilter_H_HEADER_INCLUDED_ */ \ No newline at end of file diff --git a/Modules/IGT/Testing/files.cmake b/Modules/IGT/Testing/files.cmake index 25f0f80f39..1f3aa07f0d 100644 --- a/Modules/IGT/Testing/files.cmake +++ b/Modules/IGT/Testing/files.cmake @@ -1,46 +1,47 @@ SET(MODULE_TESTS mitkCameraVisualizationTest.cpp mitkClaronInterfaceTest.cpp mitkClaronToolTest.cpp mitkClaronTrackingDeviceTest.cpp mitkInternalTrackingToolTest.cpp mitkNavigationDataDisplacementFilterTest.cpp mitkNavigationDataLandmarkTransformFilterTest.cpp mitkNavigationDataObjectVisualizationFilterTest.cpp mitkNavigationDataTest.cpp mitkNavigationDataRecorderTest.cpp mitkNavigationDataReferenceTransformFilterTest.cpp mitkNavigationDataSequentialPlayerTest.cpp mitkNavigationDataToMessageFilterTest.cpp mitkNavigationDataToNavigationDataFilterTest.cpp mitkNavigationDataToPointSetFilterTest.cpp mitkNavigationDataTransformFilterTest.cpp mitkNDIPassiveToolTest.cpp mitkNDIProtocolTest.cpp mitkNDITrackingDeviceTest.cpp mitkTimeStampTest.cpp mitkTrackingVolumeGeneratorTest.cpp mitkTrackingDeviceTest.cpp mitkTrackingToolTest.cpp mitkVirtualTrackingDeviceTest.cpp mitkNavigationDataPlayerTest.cpp mitkTrackingDeviceSourceTest.cpp mitkTrackingDeviceSourceConfiguratorTest.cpp + mitkNavigationDataEvaluationFilterTest.cpp # ------------------ Navigation Tool Management Tests ------------------- mitkNavigationToolStorageTest.cpp mitkNavigationToolStorageSerializerAndDeserializerTest.cpp mitkNavigationToolTest.cpp mitkNavigationToolReaderAndWriterTest.cpp #deactivated, see bug #3461 # ----------------------------------------------------------------------- # ------------------ Deavtivated Tests ---------------------------------- # ----------------------------------------------------------------------- ) SET(MODULE_CUSTOM_TESTS mitkNDIAuroraHardwareTest.cpp mitkNDIPolarisHardwareTest.cpp mitkClaronTrackingDeviceHardwareTest.cpp ) \ No newline at end of file diff --git a/Modules/IGT/Testing/mitkNavigationDataEvaluationFilterTest.cpp b/Modules/IGT/Testing/mitkNavigationDataEvaluationFilterTest.cpp new file mode 100644 index 0000000000..2973d68ef8 --- /dev/null +++ b/Modules/IGT/Testing/mitkNavigationDataEvaluationFilterTest.cpp @@ -0,0 +1,183 @@ +/*========================================================================= + +Program: Medical Imaging & Interaction Toolkit +Language: C++ +Date: $Date: 2008-02-25 17:27:17 +0100 (Mo, 25 Feb 2008) $ +Version: $Revision: 7837 $ + +Copyright (c) German Cancer Research Center, Division of Medical and +Biological Informatics. All rights reserved. +See MITKCopyright.txt or http://www.mitk.org/copyright.html for details. + +This software is distributed WITHOUT ANY WARRANTY; without even +the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR +PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ + +#include "mitkNavigationDataEvaluationFilter.h" +#include "mitkTestingMacros.h" + +/**Documentation +* NavigationDataEvaluationFilter has a protected constructor and a protected itkNewMacro +* so that only it's friend class ClaronTrackingDevice is able to instantiate +* tool objects. Therefore, we derive from NavigationDataEvaluationFilter and add a +* public itkNewMacro, so that we can instantiate and test the class +*/ +class NavigationDataEvaluationFilterTestClass : public mitk::NavigationDataEvaluationFilter +{ + + /**************************** a few private help funktions ***********************************/ + private: + /** @brief Rounds a double. + * @param precision number of tested decimal places */ + static double round(double number, int precision) + { + double t = std::pow(10.,precision); + double returnValue = (int)(number*t+0.5)/t; + return returnValue; + } + /** @brief Tests two double values for equality. + * @param precision number of tested decimal places */ + static bool equals(double a, double b, int precision = 5) + { + if (round(a,precision)==round(b,precision)) return true; + else + { + std::cout << a << " is not " << b << std::endl; + return false; + } + } + /**********************************************************************************************/ + +public: + +static void TestInstantiation() + { + // let's create an object of our class + mitk::NavigationDataEvaluationFilter::Pointer myNavigationDataEvaluationFilter = mitk::NavigationDataEvaluationFilter::New(); + MITK_TEST_CONDITION_REQUIRED(myNavigationDataEvaluationFilter.IsNotNull(),"Testing instantiation") + } + +static void TestSimpleCase() + { + MITK_TEST_OUTPUT(<< "Starting simple test case..."); + mitk::NavigationData::Pointer testData = mitk::NavigationData::New(); + mitk::NavigationDataEvaluationFilter::Pointer myNavigationDataEvaluationFilter = mitk::NavigationDataEvaluationFilter::New(); + myNavigationDataEvaluationFilter->SetInput(testData); + myNavigationDataEvaluationFilter->Update(); + testData->SetDataValid(true); + myNavigationDataEvaluationFilter->Update(); + MITK_TEST_CONDITION_REQUIRED(myNavigationDataEvaluationFilter->GetNumberOfAnalysedNavigationData(0)==1,".. Testing GetNumberOfAnalysedNavigationData"); + mitk::Point3D test; + test[0] = 1; + test[1] = 1; + test[2] = 1; + testData->SetPosition(test); + myNavigationDataEvaluationFilter->Update(); + MITK_TEST_CONDITION_REQUIRED(myNavigationDataEvaluationFilter->GetNumberOfAnalysedNavigationData(0)==2,".. Testing GetNumberOfAnalysedNavigationData (2nd test)"); + MITK_TEST_CONDITION_REQUIRED(myNavigationDataEvaluationFilter->GetNumberOfInvalidSamples(0)==1,".. Testing GetNumberOfInvalidSamples"); + MITK_TEST_CONDITION_REQUIRED(equals(myNavigationDataEvaluationFilter->GetPercentageOfInvalidSamples(0),33.33333333),".. Testing GetPercentageOfInvalidSamples"); + MITK_TEST_CONDITION_REQUIRED((myNavigationDataEvaluationFilter->GetPositionStandardDeviation(0)[0]==0.5),".. Testing GetPositionStandardDeviation"); + MITK_TEST_CONDITION_REQUIRED(equals(myNavigationDataEvaluationFilter->GetPositionSampleStandardDeviation(0)[0],0.70710672),".. Testing GetPositionStandardDeviation"); + MITK_TEST_CONDITION_REQUIRED(equals(myNavigationDataEvaluationFilter->GetPositionErrorMean(0),0.8660254),".. Testing GetPositionErrorMean"); + MITK_TEST_CONDITION_REQUIRED(equals(myNavigationDataEvaluationFilter->GetPositionErrorRMS(0),0.8660254),".. Testing GetPositionErrorRMS"); + MITK_TEST_CONDITION_REQUIRED(equals(myNavigationDataEvaluationFilter->GetPositionErrorMax(0),0.8660254),".. Testing GetPositionErrorMax"); + MITK_TEST_CONDITION_REQUIRED(equals(myNavigationDataEvaluationFilter->GetPositionErrorMedian(0),0.8660254),".. Testing GetPositionErrorMedian"); + MITK_TEST_CONDITION_REQUIRED(equals(myNavigationDataEvaluationFilter->GetPositionErrorMin(0),0.8660254),".. Testing GetPositionErrorMin"); + MITK_TEST_CONDITION_REQUIRED(equals(myNavigationDataEvaluationFilter->GetPositionErrorSampleStandardDeviation(0),0),".. Testing GetPositionErrorSampleStandardDeviation"); + MITK_TEST_CONDITION_REQUIRED(equals(myNavigationDataEvaluationFilter->GetPositionErrorStandardDeviation(0),0),".. Testing GetPositionErrorStandardDeviation"); + MITK_TEST_CONDITION_REQUIRED(equals(myNavigationDataEvaluationFilter->GetQuaternionMean(0)[0],0),".. Testing GetQuaternionMean"); + MITK_TEST_CONDITION_REQUIRED(equals(myNavigationDataEvaluationFilter->GetQuaternionStandardDeviation(0)[0],0),".. Testing GetQuaternionStandardDeviation"); + myNavigationDataEvaluationFilter->ResetStatistic(); + MITK_TEST_CONDITION_REQUIRED(equals(myNavigationDataEvaluationFilter->GetNumberOfAnalysedNavigationData(0),0),".. Testing ResetStatistic"); + } +static void TestComplexCase() + { + MITK_TEST_OUTPUT(<< "Starting complex test case..."); + mitk::NavigationData::Pointer testData = mitk::NavigationData::New(); + mitk::NavigationDataEvaluationFilter::Pointer myNavigationDataEvaluationFilter = mitk::NavigationDataEvaluationFilter::New(); + myNavigationDataEvaluationFilter->SetInput(testData); + testData->SetDataValid(true); + mitk::Point3D testPoint; + + //1st point + mitk::FillVector3D(testPoint,0,1,0); + testData->SetPosition(testPoint); + myNavigationDataEvaluationFilter->Update(); + + //2nd point + mitk::FillVector3D(testPoint,0,1,0.34); + testData->SetPosition(testPoint); + myNavigationDataEvaluationFilter->Update(); + + //3rd point + mitk::FillVector3D(testPoint,1,0.5,1); + testData->SetPosition(testPoint); + myNavigationDataEvaluationFilter->Update(); + + //4th point + mitk::FillVector3D(testPoint,15,3,2); + testData->SetPosition(testPoint); + myNavigationDataEvaluationFilter->Update(); + + //5th point + mitk::FillVector3D(testPoint,2,22.5,1.2655); + testData->SetPosition(testPoint); + myNavigationDataEvaluationFilter->Update(); + + //6th point + mitk::FillVector3D(testPoint,4,1.3,2); + testData->SetPosition(testPoint); + myNavigationDataEvaluationFilter->Update(); + + //7th point + mitk::FillVector3D(testPoint,0.001,0,1); + testData->SetPosition(testPoint); + myNavigationDataEvaluationFilter->Update(); + + //8th point + mitk::FillVector3D(testPoint,1.2525,2.22,3); + testData->SetPosition(testPoint); + myNavigationDataEvaluationFilter->Update(); + + //9th point + mitk::FillVector3D(testPoint,3.1,3,1); + testData->SetPosition(testPoint); + myNavigationDataEvaluationFilter->Update(); + + MITK_TEST_CONDITION_REQUIRED(myNavigationDataEvaluationFilter->GetNumberOfAnalysedNavigationData(0)==9,".. Testing GetNumberOfAnalysedNavigationData"); + MITK_TEST_CONDITION_REQUIRED(myNavigationDataEvaluationFilter->GetNumberOfInvalidSamples(0)==0,".. Testing GetNumberOfInvalidSamples"); + MITK_TEST_CONDITION_REQUIRED(equals(myNavigationDataEvaluationFilter->GetPercentageOfInvalidSamples(0),0),".. Testing GetPercentageOfInvalidSamples"); + MITK_TEST_CONDITION_REQUIRED(equals(myNavigationDataEvaluationFilter->GetPositionStandardDeviation(0)[2],0.86614074),".. Testing GetPositionStandardDeviation"); + MITK_TEST_CONDITION_REQUIRED(equals(myNavigationDataEvaluationFilter->GetPositionSampleStandardDeviation(0)[2],0.91868098),".. Testing GetPositionStandardDeviation"); + MITK_TEST_CONDITION_REQUIRED(equals(myNavigationDataEvaluationFilter->GetPositionErrorMean(0),6.06656587),".. Testing GetPositionErrorMean"); + MITK_TEST_CONDITION_REQUIRED(equals(myNavigationDataEvaluationFilter->GetPositionErrorRMS(0),8.0793161),".. Testing GetPositionErrorRMS"); + MITK_TEST_CONDITION_REQUIRED(equals(myNavigationDataEvaluationFilter->GetPositionErrorMax(0),18.6875241),".. Testing GetPositionErrorMax"); + MITK_TEST_CONDITION_REQUIRED(equals(myNavigationDataEvaluationFilter->GetPositionErrorMedian(0),4.18522229),".. Testing GetPositionErrorMedian"); + MITK_TEST_CONDITION_REQUIRED(equals(myNavigationDataEvaluationFilter->GetPositionErrorMin(0),0.90082741),".. Testing GetPositionErrorMin"); + MITK_TEST_CONDITION_REQUIRED(equals(myNavigationDataEvaluationFilter->GetPositionErrorSampleStandardDeviation(0),5.65960626),".. Testing GetPositionErrorSampleStandardDeviation"); + MITK_TEST_CONDITION_REQUIRED(equals(myNavigationDataEvaluationFilter->GetPositionErrorStandardDeviation(0),5.33592795),".. Testing GetPositionErrorStandardDeviation"); + MITK_TEST_CONDITION_REQUIRED(equals(myNavigationDataEvaluationFilter->GetQuaternionMean(0)[0],0),".. Testing GetQuaternionMean"); + MITK_TEST_CONDITION_REQUIRED(equals(myNavigationDataEvaluationFilter->GetQuaternionStandardDeviation(0)[0],0),".. Testing GetQuaternionStandardDeviation"); + myNavigationDataEvaluationFilter->ResetStatistic(); + MITK_TEST_CONDITION_REQUIRED(equals(myNavigationDataEvaluationFilter->GetNumberOfAnalysedNavigationData(0),0),".. Testing ResetStatistic"); + + } +}; + +/** + * This function tests the NavigationDataEvaluationFilter class. + */ +int mitkNavigationDataEvaluationFilterTest(int /* argc */, char* /*argv*/[]) +{ + // always start with this! + MITK_TEST_BEGIN("NavigationDataEvaluationFilter") + + NavigationDataEvaluationFilterTestClass::TestInstantiation(); + NavigationDataEvaluationFilterTestClass::TestSimpleCase(); + NavigationDataEvaluationFilterTestClass::TestComplexCase(); + + // always end with this! + MITK_TEST_END() +} diff --git a/Modules/IGT/files.cmake b/Modules/IGT/files.cmake index a48bc06c54..7e59880088 100644 --- a/Modules/IGT/files.cmake +++ b/Modules/IGT/files.cmake @@ -1,59 +1,60 @@ SET(CPP_FILES IGTFilters/mitkNavigationDataLandmarkTransformFilter.cpp IGTFilters/mitkNavigationDataReferenceTransformFilter.cpp IGTFilters/mitkNavigationDataTransformFilter.cpp IGTFilters/mitkNavigationDataRecorder.cpp IGTFilters/mitkNavigationDataPlayer.cpp IGTFilters/mitkNavigationDataPlayerBase.cpp IGTFilters/mitkNavigationDataObjectVisualizationFilter.cpp IGTFilters/mitkCameraVisualization.cpp IGTFilters/mitkNavigationData.cpp IGTFilters/mitkNavigationDataDisplacementFilter.cpp IGTFilters/mitkNavigationDataSequentialPlayer.cpp IGTFilters/mitkNavigationDataSource.cpp IGTFilters/mitkNavigationDataToMessageFilter.cpp IGTFilters/mitkNavigationDataToNavigationDataFilter.cpp IGTFilters/mitkNavigationDataToOpenGLFilter.cpp IGTFilters/mitkNavigationDataToPointSetFilter.cpp + IGTFilters/mitkNavigationDataEvaluationFilter.cpp IGTFilters/mitkTrackingDeviceSource.cpp IGTFilters/mitkTrackingVolumeGenerator.cpp IGTFilters/mitkTimeStamp.cpp IGTFilters/mitkRealTimeClock.cpp IGTFilters/mitkTrackingDeviceSourceConfigurator.cpp IGTTrackingDevices/mitkClaronTool.cpp IGTTrackingDevices/mitkClaronTrackingDevice.cpp IGTTrackingDevices/mitkInternalTrackingTool.cpp IGTTrackingDevices/mitkNDIPassiveTool.cpp IGTTrackingDevices/mitkNDIProtocol.cpp IGTTrackingDevices/mitkNDITrackingDevice.cpp IGTTrackingDevices/mitkSerialCommunication.cpp IGTTrackingDevices/mitkTrackingDevice.cpp IGTTrackingDevices/mitkTrackingTool.cpp IGTTrackingDevices/mitkVirtualTrackingDevice.cpp IGTTrackingDevices/mitkVirtualTrackingTool.cpp IGTToolManagement/mitkNavigationToolStorage.cpp IGTToolManagement/mitkNavigationToolStorageSerializer.cpp IGTToolManagement/mitkNavigationToolStorageDeserializer.cpp IGTToolManagement/mitkNavigationTool.cpp IGTToolManagement/mitkNavigationToolReader.cpp IGTToolManagement/mitkNavigationToolWriter.cpp ) IF(MITK_USE_MICRON_TRACKER) SET(CPP_FILES ${CPP_FILES} IGTTrackingDevices/mitkClaronInterface.cpp) ELSE() SET(CPP_FILES ${CPP_FILES} IGTTrackingDevices/mitkClaronInterfaceStub.cpp) ENDIF(MITK_USE_MICRON_TRACKER) IF(MITK_USE_MICROBIRD_TRACKER) SET(CPP_FILES ${CPP_FILES} IGTTrackingDevices/mitkMicroBirdTrackingDevice.cpp) ENDIF(MITK_USE_MICROBIRD_TRACKER) IF(WIN32) SET(CPP_FILES ${CPP_FILES} IGTFilters/mitkWindowsRealTimeClock.cpp) ELSE() SET(CPP_FILES ${CPP_FILES} IGTFilters/mitkLinuxRealTimeClock.cpp) -ENDIF(WIN32) +ENDIF(WIN32) \ No newline at end of file