<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<meta name="Generator" content="Microsoft Exchange Server">
<!-- converted from text --><style><!-- .EmailQuote { margin-left: 1pt; padding-left: 4pt; border-left: #800000 2px solid; } --></style>
</head>
<body>
<meta content="text/html; charset=UTF-8">
<style type="text/css" style="">
<!--
p
{margin-top:0;
margin-bottom:0}
-->
</style>
<div dir="ltr">
<div id="x_divtagdefaultwrapper" dir="ltr" style="font-size:12pt; color:#000000; font-family:Calibri,Helvetica,sans-serif">
<p>Hello Thibaut,</p>
<p><br>
</p>
<p>You are totally right, I enabled CASToR_BUILD_SAMPLE_UTILITIES in Cmake and that worked. I can now build the projects and do reconstructions.</p>
<p><br>
</p>
<p>Lastly, I noticed one more thing. When I reconstruct images with the -im option and I use attenuation correction, the attenuation map doesn't move along with the deformations, while this was the case for the -rm option (respiratory motion). </p>
<p>Is this the intention and/or is it possible to let the attenuation map move along with the deformations?</p>
<p><br>
</p>
<p>Above all, many thanks for your help!</p>
<p><br>
</p>
<p>Inge</p>
</div>
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="x_divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b>Van:</b> Castor-users <castor-users-bounces@lists.castor-project.org> namens castor-users-request@lists.castor-project.org <castor-users-request@lists.castor-project.org><br>
<b>Verzonden:</b> dinsdag 22 september 2020 10:24:31<br>
<b>Aan:</b> castor-users@lists.castor-project.org<br>
<b>Onderwerp:</b> Castor-users Digest, Vol 36, Issue 13</font>
<div> </div>
</div>
</div>
<font size="2"><span style="font-size:10pt;">
<div class="PlainText">Send Castor-users mailing list submissions to<br>
castor-users@lists.castor-project.org<br>
<br>
To subscribe or unsubscribe via the World Wide Web, visit<br>
<a href="http://lists.castor-project.org/listinfo/castor-users">http://lists.castor-project.org/listinfo/castor-users</a><br>
or, via email, send a message with subject or body 'help' to<br>
castor-users-request@lists.castor-project.org<br>
<br>
You can reach the person managing the list at<br>
castor-users-owner@lists.castor-project.org<br>
<br>
When replying, please edit your Subject line so it is more specific<br>
than "Re: Contents of Castor-users digest..."<br>
<br>
<br>
Today's Topics:<br>
<br>
1. Re: Problems with –im (involuntary patient motion<br>
correction) (tmerlin)<br>
<br>
<br>
----------------------------------------------------------------------<br>
<br>
Message: 1<br>
Date: Tue, 22 Sep 2020 10:24:50 +0200<br>
From: tmerlin <Thibaut.Merlin@univ-brest.fr><br>
To: castor-users@lists.castor-project.org<br>
Subject: Re: [Castor-users] Problems with –im (involuntary patient<br>
motion correction)<br>
Message-ID: <6cf8c8f2-aceb-39d4-65d8-d620386cd9d2@univ-brest.fr><br>
Content-Type: text/plain; charset="windows-1252"; Format="flowed"<br>
<br>
<br>
Hi Inge,<br>
<br>
<br>
The building problem might come from the CMake configuration file, as <br>
these projects have been relocated (now you must enable <br>
CASToR_BUILD_SAMPLE_UTILITIES in cmake to build them). It should not <br>
have caused issues to build the solution though, so I will have a closer <br>
look at it.<br>
<br>
<br>
Could you try to rebuild the 3.1 version with <br>
CASToR_BUILD_SAMPLE_UTILITIES enabled ? Alternatively if there are still <br>
some issues, you can use the configuration file from the previous <br>
version in attachements (to replace the one in the castor directory).<br>
<br>
<br>
Let me know if this helps<br>
<br>
<br>
Kind regards,<br>
<br>
Thibaut<br>
<br>
<br>
<br>
On 22/09/2020 09:41, Schagt, I.H. van der wrote:<br>
><br>
> Dear Zacharis,<br>
><br>
><br>
> Thank you for your quick response.<br>
><br>
> As for oDynamicDataManager, in the datafile header a start time and <br>
> duration are indeed given, these are 0s and 900s respectively. even <br>
> though these values are included, the frame time stop remains 0s when <br>
> I apply motion correction without framing.<br>
><br>
> I tried the new version of Castor (V3.1), but I have trouble with <br>
> configuring and building te program. Configuring only creates four <br>
> projects in the solution (all_build, *castor-recon*, install and <br>
> zero_check) instead of seven projects (all_build, *castor-recon*, <br>
> install, zero_check, *castor-datafileExplorer, <br>
> castor-imageDynamicTools and castor-scannerLUTExplorer*) and this <br>
> causes problems building the solution.<br>
><br>
> As far as configuring and building is concerned, I did everything the <br>
> same as with v_3.0.1. I configured Castor with CMake and tried to <br>
> build it in Windows Visual Studio.<br>
><br>
> Do you know if the problem with configuring and building could be with <br>
> this new version?<br>
><br>
><br>
> Kind regards,<br>
><br>
> Inge<br>
><br>
> ------------------------------------------------------------------------<br>
> *Van:* Chalampalakis, Zacharias <zacharias.chalampalakis@kcl.ac.uk><br>
> *Verzonden:* maandag 21 september 2020 18:21:32<br>
> *Aan:* Schagt, I.H. van der; castor-users@lists.castor-project.org<br>
> *Onderwerp:* RE: Problems with –im (involuntary patient motion <br>
> correction)<br>
><br>
> Good afternoon Igne<br>
><br>
> Thank you for your email.<br>
><br>
> We actually just released a new version of CASToR ( V3.1 ) which fixed <br>
> some bugs related to the handling of motion timestamps.<br>
><br>
> Maybe you could try with this version , if it is not too difficult , <br>
> to check if the behaviour you experience is related to these bugs ?<br>
><br>
> In the latest version , the /oDynamidDataManager/ will remove all <br>
> timestamps that occur after the end of the last frame.<br>
><br>
> Normally the duration of the frame ( even when not specifying framing <br>
> ) is set by the *Start time (s) *and *Duration (s) *entries in the <br>
> datafile header.<br>
><br>
> Do you have these entries in your datafile header?<br>
><br>
> Kind Regards,<br>
><br>
> Zacharias Chalampalakis<br>
><br>
> *From:*Castor-users <castor-users-bounces@lists.castor-project.org> <br>
> *On Behalf Of *Schagt, I.H. van der<br>
> *Sent:* Monday, September 21, 2020 4:33 PM<br>
> *To:* castor-users@lists.castor-project.org<br>
> *Subject:* [Castor-users] Problems with –im (involuntary patient <br>
> motion correction)<br>
><br>
> Dear all,<br>
><br>
> I am having trouble with motion correction reconstruction when using <br>
> the –im option. When I try to apply motion correction reconstruction I <br>
> get the error:<br>
><br>
> /Error, the 2th motion trigger timestamp: xxx occurs after the end of <br>
> the last frame (frame 1, timestop: 0!/<br>
><br>
> This error occurs in the code in the file /oDynamicDataManager/ line <br>
> 413 and arises incorrectly. When I do –im reconstruction in <br>
> combination with 1 frame (so no framing), the time stop value of the <br>
> frame remains 0s, it is not read from the data file. As a result, the <br>
> time steps of the motion triggers are greater than the time stop value <br>
> of the frame (line 407) and you will eventually get an error. When I <br>
> manually adjust this time stop value to the correct value myself, this <br>
> error message goes away, but I get incorrect reconstructed images. I <br>
> only get black images after reconstruction where each voxel has NaN as <br>
> its value. When I apply the same motion correction where I also divide <br>
> the data into, for example, 2 frames (-frm…), I get correctly <br>
> reconstructed images.<br>
><br>
> Does anyone of you know why the option –im gives these weird results, <br>
> or what I maybe do wrong?<br>
> I use list-mode PET data with a total duration of 900 seconds. For the <br>
> motion correction, I used three motion triggers (and deformations).<br>
><br>
> Thanks in advance!<br>
><br>
> Inge<br>
><br>
> ------------------------------------------------------------------------<br>
><br>
> /De informatie opgenomen in dit bericht kan vertrouwelijk zijn en is <br>
> uitsluitend bestemd voor de geadresseerde. Indien u dit bericht <br>
> onterecht ontvangt, wordt u verzocht de inhoud niet te gebruiken en de <br>
> afzender direct te informeren door het bericht te retourneren. Het <br>
> Universitair Medisch Centrum Utrecht is een publiekrechtelijke <br>
> rechtspersoon in de zin van de W.H.W. (Wet Hoger Onderwijs en <br>
> Wetenschappelijk Onderzoek) en staat geregistreerd bij de Kamer van <br>
> Koophandel voor Midden-Nederland onder nr. 30244197. /<br>
><br>
> /Denk s.v.p aan het milieu voor u deze e-mail afdrukt. /<br>
><br>
> ------------------------------------------------------------------------<br>
><br>
> /This message may contain confidential information and is intended <br>
> exclusively for the addressee. If you receive this message <br>
> unintentionally, please do not use the contents but notify the sender <br>
> immediately by return e-mail. University Medical Center Utrecht is a <br>
> legal person by public law and is registered at the Chamber of <br>
> Commerce for Midden-Nederland under no. 30244197. /<br>
><br>
> /Please consider the environment before printing this e-mail. /<br>
><br>
><br>
> _______________________________________________<br>
> Castor-users mailing list<br>
> Castor-users@lists.castor-project.org<br>
> <a href="http://lists.castor-project.org/listinfo/castor-users">http://lists.castor-project.org/listinfo/castor-users</a><br>
<br>
-- <br>
Thibaut MERLIN -- PhD<br>
<br>
Docteur en Imagerie Médicale au Laboratoire de Traitement de l'Information Medicale (LaTIM - INSERM UMR 1101)<br>
Institut Brestois de recherche en Bio-Santé (IBRBS)<br>
12 Avenue Foch, 29200 Brest, FRANCE<br>
Tel: 06.75.12.24.90<br>
<br>
-------------- next part --------------<br>
An HTML attachment was scrubbed...<br>
URL: <<a href="http://lists.castor-project.org/pipermail/castor-users/attachments/20200922/6a9155da/attachment.html">http://lists.castor-project.org/pipermail/castor-users/attachments/20200922/6a9155da/attachment.html</a>><br>
-------------- next part --------------<br>
# MON 1 Aug 2016 17:02 PM CET<br>
# Didier Benoit, didier.benoit13@gmail.com<br>
# Thibaut Merlin, thibaut.merlin@gmail.com<br>
# CMAKE compiling the CASToR reconstruction software<br>
<br>
#---------<br>
# Checking the CMAKE version<br>
cmake_minimum_required( VERSION 2.8 FATAL_ERROR )<br>
<br>
#---------<br>
# Set the build type<br>
set( CMAKE_BUILD_TYPE "Release" CACHE STRING<br>
"Choose the type of build, options are: Debug Release"<br>
)<br>
<br>
#---------<br>
# Defining the project<br>
project( CASToR )<br>
set( CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake-modules<br>
${CMAKE_MODULE_PATH}<br>
)<br>
<br>
#---------<br>
# Defining a list of option<br>
option( CASToR_64bits "Build CASToR on 64 bits architecture" YES )<br>
option( CASToR_VERBOSE "Print lot of infos from CASToR" NO )<br>
option( CASToR_DEBUG "Enable many additionnal checks in primitive functions" NO )<br>
option( CASToR_BUILD_GATE_UTILITIES "Build GATE tools for CASToR (require ROOT library)" NO )<br>
option( CASToR_BUILD_SAMPLE_UTILITIES "Build Example codes (require ROOT library)" NO )<br>
option( CASToR_BUILD_DEVEL "Build devel tools. Must be left unchecked" NO )<br>
option( CASToR_ROOT "Build CASToR with ROOT library" NO )<br>
option( CASToR_SIMD "Build CASToR with SIMD OPTION" NO )<br>
option( CASToR_OMP "Build CASToR with OMP" NO )<br>
option( CASToR_MPI "Build CASToR with MPI" NO )<br>
# For testing purposes<br>
#option( CASToR_DEFORMATION_LEDESMA "Build CASToR with LEDESMA" NO )<br>
#option( CASToR_ELASTIX "Build CASToR with ELASTIX" NO )<br>
<br>
<br>
#---------<br>
# Find the config file CASToR config<br>
find_path( CASTOR_CONFIG_DIR oCASToRConfig.hh.in<br>
${PROJECT_SOURCE_DIR}<br>
${PROJECT_SOURCE_DIR}/include/algorithm<br>
${PROJECT_SOURCE_DIR}/include/analytic_simulator<br>
${PROJECT_SOURCE_DIR}/include/datafile<br>
${PROJECT_SOURCE_DIR}/include/dynamic<br>
${PROJECT_SOURCE_DIR}/include/image<br>
${PROJECT_SOURCE_DIR}/include/management<br>
${PROJECT_SOURCE_DIR}/include/optimizer<br>
${PROJECT_SOURCE_DIR}/include/projector<br>
${PROJECT_SOURCE_DIR}/include/scanner<br>
${PROJECT_SOURCE_DIR}/include/utils<br>
)<br>
<br>
#---------<br>
# Defining configuration files<br>
configure_file(<br>
"${CASTOR_CONFIG_DIR}/oCASToRConfig.hh.in"<br>
"${PROJECT_BINARY_DIR}/oCASToRConfig.hh"<br>
@ONLY<br>
)<br>
<br>
#---------<br>
# Setting the CASTOR_CONFIG variable<br>
set( CASTOR_CONFIG ${PROJECT_SOURCE_DIR}/config CACHE PATH<br>
"Path to the CASTOR config repository"<br>
)<br>
<br>
#---------<br>
# Setting position of the CASToR utilitaries<br>
set( TOOLKITS_SOURCE_DIR ${PROJECT_SOURCE_DIR}/toolkits )<br>
<br>
# To avoid conflict between the makefile from CMake and the makefile provided<br>
# by CASToR<br>
add_definitions( -DCASToR_USE_CMAKE )<br>
<br>
########################################################################<br>
# Provide add_compile_options() when not available<br>
########################################################################<br>
if( CMAKE_VERSION VERSION_LESS "2.8.12" )<br>
function( add_compile_options )<br>
add_definitions( ${ARGN} )<br>
endfunction( add_compile_options )<br>
endif()<br>
<br>
<br>
#---------<br>
# Different option for Windows or Unix (Linux/MacOS)<br>
if( WIN32 )<br>
<br>
#---------<br>
# Delete some flags by default provided by CMAKE<br>
#---------<br>
string( REPLACE "/W3" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} )<br>
string( REPLACE "/O2" "" CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE} )<br>
string( REPLACE "/DNDEBUG" "" CMAKE_CXX_FLAGS_RELEASE<br>
${CMAKE_CXX_FLAGS_RELEASE}<br>
)<br>
string( REPLACE "/MD" "" CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE} )<br>
string( REPLACE "/O2" "" CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE} )<br>
<br>
# Visual studio flags by default /Ox<br>
add_compile_options( /MP )<br>
<br>
#---------<br>
# Checking for OpenMP<br>
if( CASToR_OMP )<br>
find_package( OpenMP REQUIRED )<br>
set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}" )<br>
set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}" )<br>
set( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}<br>
${OpenMP_EXE_LINKER_FLAGS}"<br>
)<br>
add_definitions( /DCASTOR_OMP )<br>
endif()<br>
<br>
#---------<br>
# Checking for MPI<br>
if( CASToR_MPI )<br>
set( MPIEXEC "C:/Program Files/Microsoft MPI/Bin/mpiexec.exe" )<br>
set( MPI_CXX_INCLUDE_PATH<br>
"C:/Program Files (x86)/Microsoft SDKs/MPI/Include"<br>
)<br>
if( "${CMAKE_SIZEOF_VOID_P}" EQUAL 8 )<br>
set( MS_MPI_ARCH_DIR x64 )<br>
else()<br>
set( MS_MPI_ARCH_DIR x86 )<br>
endif()<br>
set( MPI_CXX_LIBRARIES<br>
"C:/Program Files (x86)/Microsoft SDKs/MPI/Lib/${MS_MPI_ARCH_DIR}/msmpi.lib"<br>
)<br>
set( MPI_C_INCLUDE_PATH "${MPI_CXX_INCLUDE_PATH}" )<br>
set( MPI_C_LIBRARIES "${MPI_CXX_LIBRARIES}" )<br>
set( MPIEXEC_NUMPROC_FLAG "-np" CACHE STRINGS<br>
"Flag used by MPI to specify the number of processes for MPIEXEC; the next option will be the number of processes."<br>
)<br>
<br>
include_directories( ${MPI_CXX_INCLUDE_PATH} )<br>
add_definitions( /DCASTOR_MPI )<br>
endif()<br>
<br>
#---------<br>
# Checking verbosity<br>
if( CASToR_VERBOSE )<br>
add_compile_options( /W4 )<br>
add_definitions( /DCASTOR_VERBOSE )<br>
endif()<br>
<br>
#---------<br>
# Checking debug<br>
if( CASToR_DEBUG )<br>
add_compile_options( /W4 )<br>
add_definitions( /DCASTOR_DEBUG )<br>
endif()<br>
<br>
#---------<br>
# Checking the mode Release/Debug<br>
if( CMAKE_BUILD_TYPE MATCHES Release ) # Release mode<br>
# Add release flags<br>
add_compile_options( /Ox /O2 )<br>
<br>
else() # Debug mode<br>
# Add debug flags<br>
add_compile_options( /Od )<br>
add_definitions( /DCASTOR_DEBUG )<br>
endif()<br>
<br>
<br>
<br>
#---------<br>
# Checking for ROOT<br>
if( CASToR_ROOT )<br>
find_package( ROOT REQUIRED )<br>
include_directories( ${ROOT_INCLUDE_DIR} )<br>
set( LINK_DIRECTORIES ${ROOT_LIBRARY_DIR} )<br>
add_definitions( -DCASTOR_ROOT )<br>
endif()<br>
<br>
<br>
#---------<br>
# GATE utilities<br>
if( CASToR_BUILD_GATE_UTILITIES )<br>
if(CASToR_ROOT)<br>
else()<br>
message( "CASToR_ROOT switched to ON (ROOT required for GATE utilities) ${CMAKE_MODULE_PATH}" )<br>
set( ROOT_INCLUDE_DIR $ENV{ROOT_INCLUDE_DIR} )<br>
set( ROOT_LIBRARY_DIR $ENV{ROOT_LIBRARY_DIR} )<br>
include_directories( $ENV{ROOT_INCLUDE_DIR} )<br>
set( LINK_DIRECTORIES ${ROOT_LIBRARY_DIR} )<br>
add_definitions( /DCASTOR_ROOT )<br>
set( CASToR_ROOT ON CACHE BOOL "Force ROOT linking" FORCE)<br>
endif()<br>
endif()<br>
<br>
<br>
#---------<br>
# Checking for ROOT<br>
if( CASToR_BUILD_SAMPLE_UTILITIES )<br>
if(CASToR_ROOT)<br>
else()<br>
message( "CASToR_ROOT switched to ON (ROOT required for sample code utilities)" )<br>
set( ROOT_INCLUDE_DIR $ENV{ROOT_INCLUDE_DIR} )<br>
set( ROOT_LIBRARY_DIR $ENV{ROOT_LIBRARY_DIR} )<br>
include_directories( $ENV{ROOT_INCLUDE_DIR} )<br>
set( LINK_DIRECTORIES ${ROOT_LIBRARY_DIR} )<br>
add_definitions( /DCASTOR_ROOT )<br>
set( CASToR_ROOT ON CACHE BOOL "Force ROOT linking" FORCE)<br>
endif()<br>
endif()<br>
<br>
# Checking for both ROOT & 64bits enabled<br>
# Force to 32 bits in this case, as ROOT can only be 32 bits on WIN<br>
# <a href="https://root-forum.cern.ch/t/native-windows-64-bit-build/9102/27">https://root-forum.cern.ch/t/native-windows-64-bit-build/9102/27</a><br>
# Display warning message<br>
<br>
#---------<br>
# Checking the architecture 64/32 bits<br>
if( CASToR_64bits )<br>
if( CASToR_ROOT )<br>
message( "Architecture set to 32 bits as ROOT can only be built as 32 bits !" )<br>
message( "The generator may have to be manually changed to a 32 bits version !" )<br>
set( CASToR_64bits OFF CACHE BOOL "" FORCE)<br>
else()<br>
add_definitions( /D_64 )<br>
endif()<br>
endif()<br>
<br>
<br>
<br>
# Unix fork (Linux/MacOS)<br>
else()<br>
<br>
#---------<br>
# Compiler-specific C++11 activation.<br>
if( "${CMAKE_CXX_COMPILER_ID}" MATCHES "GNU" )<br>
execute_process(<br>
COMMAND ${CMAKE_CXX_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION<br>
)<br>
if( NOT( GCC_VERSION VERSION_GREATER 4.7 OR GCC_VERSION VERSION_EQUAL 4.7 ) )<br>
message( FATAL_ERROR "${PROJECT_NAME} requires g++ 4.7 or greater." )<br>
endif()<br>
add_compile_options( -std=c++11 )<br>
elseif( "${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" )<br>
add_compile_options( -std=c++11 -stdlib=libc++ )<br>
endif ()<br>
<br>
#---------<br>
# Checking the architecture 64/32 bits<br>
if( CASToR_64bits )<br>
add_compile_options( -m64 )<br>
add_definitions( -D_64 )<br>
else()<br>
add_compile_options( -m32 )<br>
endif()<br>
<br>
#---------<br>
# Checking verbosity<br>
if( CASToR_VERBOSE )<br>
add_compile_options( -Wall -pedantic -Wextra )<br>
add_definitions( -DCASTOR_VERBOSE )<br>
if( CASToR_SIMD )<br>
add_compile_options( -ftree-vectorizer-verbose=2 )<br>
endif()<br>
endif()<br>
<br>
#---------<br>
# Checking debug<br>
if( CASToR_DEBUG )<br>
add_compile_options( -Wall -pedantic -Wextra )<br>
add_definitions( -DCASTOR_DEBUG )<br>
if( CASToR_SIMD )<br>
add_compile_options( -ftree-vectorizer-verbose=2 )<br>
endif()<br>
endif()<br>
<br>
#---------<br>
# Checking for OpenMP<br>
if( CASToR_OMP )<br>
find_package( OpenMP REQUIRED )<br>
add_compile_options( ${OpenMP_CXX_FLAGS} )<br>
add_definitions( -DCASTOR_OMP )<br>
endif()<br>
<br>
#---------<br>
# Checking for MPI<br>
if( CASToR_MPI )<br>
find_package( MPI REQUIRED )<br>
include_directories( ${MPI_INCLUDE_PATH} )<br>
add_definitions( -DCASTOR_MPI )<br>
endif()<br>
<br>
if( CASToR_BUILD_GATE_UTILITIES )<br>
if(CASToR_ROOT)<br>
else()<br>
message( "CASToR_ROOT switched to ON (ROOT required for GATE utilities)" )<br>
set( ROOT_INCLUDE_DIR $ENV{ROOT_INCLUDE_DIR} )<br>
set( ROOT_LIBRARY_DIR $ENV{ROOT_LIBRARY_DIR} )<br>
include_directories( $ENV{ROOT_INCLUDE_DIR} )<br>
set( LINK_DIRECTORIES ${ROOT_LIBRARY_DIR} )<br>
add_definitions( /DCASTOR_ROOT )<br>
set( CASToR_ROOT ON CACHE BOOL "Force ROOT linking" FORCE)<br>
endif()<br>
endif()<br>
<br>
<br>
#---------<br>
# Checking for ROOT<br>
if( CASToR_BUILD_SAMPLE_UTILITIES )<br>
if(CASToR_ROOT)<br>
else()<br>
message( "CASToR_ROOT switched to ON (ROOT required for sample code utilities)" )<br>
set( ROOT_INCLUDE_DIR $ENV{ROOT_INCLUDE_DIR} )<br>
set( ROOT_LIBRARY_DIR $ENV{ROOT_LIBRARY_DIR} )<br>
include_directories( $ENV{ROOT_INCLUDE_DIR} )<br>
set( LINK_DIRECTORIES ${ROOT_LIBRARY_DIR} )<br>
add_definitions( /DCASTOR_ROOT )<br>
set( CASToR_ROOT ON CACHE BOOL "Force ROOT linking" FORCE)<br>
endif()<br>
endif()<br>
<br>
#---------<br>
# Checking for ROOT<br>
if( CASToR_ROOT )<br>
find_package( ROOT REQUIRED )<br>
include_directories( ${ROOT_INCLUDE_DIR} )<br>
set( LINK_DIRECTORIES ${ROOT_LIBRARY_DIR} )<br>
message( "${ROOT_INCLUDE_DIR} " ${ROOT_INCLUDE_DIR})<br>
message( "${ROOT_LIBRARY_DIR} " ${ROOT_LIBRARY_DIR})<br>
add_definitions( -DCASTOR_ROOT )<br>
endif()<br>
<br>
#--------- // LEDESMA deformation library. Not planned to be included in Castor, just for private testing.<br>
# Checking for LEDESMA <br>
#if( CASToR_DEFORMATION_LEDESMA )<br>
# include_directories( ${PROJECT_SOURCE_DIR}/include/image/lib )<br>
# set( LINK_DIRECTORIES ${PROJECT_SOURCE_DIR}/include/image/lib -lElasticRegistration)<br>
# set( DEFORMATION_LEDESMA_LIBRARIES -L${PROJECT_SOURCE_DIR}/include/image/lib\ -lElasticRegistration)<br>
# add_definitions( -DCASTOR_DEFORMATION_LEDESMA )<br>
#endif()<br>
<br>
#---------<br>
# Checking for ELASTIX<br>
#if( CASToR_ELASTIX )<br>
# set( ELASTIX_BUILD_DIR "" CACHE PATH "Path to elastix build folder" )<br>
# set( ELASTIX_USE_FILE ${ELASTIX_BUILD_DIR}/UseElastix.cmake )<br>
<br>
# option( USE_ITK_FOR_ELASTIX "Use ITK (required for elastix)" ON )<br>
# find_package( ITK )<br>
# if( ITK_FOUND )<br>
# include( ${ITK_USE_FILE} )<br>
# else( ITK_FOUND )<br>
# message( FATAL_ERROR "Cannot build CASToR using ELASTIX without ITK. Please set ITK_DIR." )<br>
# endif( ITK_FOUND )<br>
<br>
# if( EXISTS ${ELASTIX_USE_FILE} )<br>
# include( ${ELASTIX_USE_FILE} )<br>
# link_libraries( param )<br>
# link_libraries( elastix )<br>
# link_libraries( transformix )<br>
# add_definitions( -DCASTOR_ELASTIX )<br>
# endif()<br>
<br>
#endif()<br>
<br>
#---------<br>
# Checking the mode Release/Debug<br>
if( CMAKE_BUILD_TYPE MATCHES Release ) # Release mode<br>
# Add release flags<br>
add_compile_options( -O3 )<br>
<br>
# Add SIMD flags<br>
if( CASToR_SIMD )<br>
add_compile_options(<br>
-ftree-vectorize -msse2 -fassociative-math<br>
)<br>
endif()<br>
else() # Debug mode<br>
# Add debug flags<br>
add_compile_options( -O0 -g3 -fno-inline -pg )<br>
add_definitions( -DCASTOR_DEBUG )<br>
endif()<br>
<br>
endif()<br>
<br>
#---------<br>
# Setup include directory for this project<br>
include_directories(<br>
${CMAKE_CURRENT_BINARY_DIR}<br>
${PROJECT_SOURCE_DIR}/include/algorithm<br>
${PROJECT_SOURCE_DIR}/include/analytic_simulator<br>
${PROJECT_SOURCE_DIR}/include/datafile<br>
${PROJECT_SOURCE_DIR}/include/dynamic<br>
${PROJECT_SOURCE_DIR}/include/image<br>
${PROJECT_SOURCE_DIR}/include/management<br>
${PROJECT_SOURCE_DIR}/include/optimizer<br>
${PROJECT_SOURCE_DIR}/include/projector<br>
${PROJECT_SOURCE_DIR}/include/scanner<br>
${PROJECT_SOURCE_DIR}/include/utils<br>
)<br>
<br>
#---------<br>
# Locate sources and headers for CASToR<br>
file( GLOB_RECURSE sources ${PROJECT_SOURCE_DIR}/src/*.cc )<br>
file( GLOB_RECURSE headers ${PROJECT_SOURCE_DIR}/include/*.hh )<br>
<br>
#---------<br>
# Build the executables<br>
add_executable( castor-recon castor-recon.cc ${sources} ${headers} )<br>
add_executable( castor-datafileExplorer ${TOOLKITS_SOURCE_DIR}/castor-datafileExplorer.cc ${sources} ${headers} )<br>
add_executable( castor-scannerLUTExplorer ${TOOLKITS_SOURCE_DIR}/castor-scannerLUTExplorer.cc ${sources} ${headers} )<br>
add_executable( castor-imageDynamicTools ${TOOLKITS_SOURCE_DIR}/castor-imageDynamicTools.cc ${sources} ${headers} )<br>
if( CASToR_BUILD_DEVEL)<br>
add_executable( castor-proj castor-proj.cc ${sources} ${headers} )<br>
endif()<br>
<br>
# Build GATE tools for CASToR <br>
if( CASToR_BUILD_GATE_UTILITIES )<br>
add_executable( castor-GATERootToCastor ${TOOLKITS_SOURCE_DIR}/castor-GATERootToCastor.cc ${sources} ${headers} )<br>
add_executable( castor-GATEMacToGeom ${TOOLKITS_SOURCE_DIR}/castor-GATEMacToGeom.cc ${sources}<br>
${headers} )<br>
endif()<br>
<br>
# Build GATE tools for CASToR <br>
if( CASToR_BUILD_SAMPLE_UTILITIES )<br>
add_executable( castor-PetScannerLutEx ${TOOLKITS_SOURCE_DIR}/castor-PetScannerLutEx.cc ${sources} ${headers} )<br>
add_executable( castor-datafileConversionEx ${TOOLKITS_SOURCE_DIR}/castor-datafileConversionEx.cc ${sources}<br>
${headers} )<br>
endif()<br>
<br>
if( WIN32 )<br>
target_link_libraries( castor-recon ${ROOT_LIBRARIES}<br>
${DEFORMATION_LEDESMA_LIBRARIES} ${ITK_LIBRARIES} ${MPI_CXX_LIBRARIES}<br>
)<br>
target_link_libraries( castor-datafileExplorer ${ROOT_LIBRARIES}<br>
${DEFORMATION_LEDESMA_LIBRARIES} ${ITK_LIBRARIES} ${MPI_CXX_LIBRARIES}<br>
)<br>
target_link_libraries( castor-scannerLUTExplorer ${ROOT_LIBRARIES}<br>
${DEFORMATION_LEDESMA_LIBRARIES} ${ITK_LIBRARIES} ${MPI_CXX_LIBRARIES}<br>
)<br>
target_link_libraries( castor-imageDynamicTools ${ROOT_LIBRARIES}<br>
${DEFORMATION_LEDESMA_LIBRARIES} ${ITK_LIBRARIES} ${MPI_CXX_LIBRARIES}<br>
)<br>
if( CASToR_BUILD_DEVEL )<br>
target_link_libraries( castor-proj ${ROOT_LIBRARIES}<br>
${DEFORMATION_LEDESMA_LIBRARIES} ${ITK_LIBRARIES} ${MPI_CXX_LIBRARIES}<br>
)<br>
endif()<br>
if( CASToR_BUILD_GATE_UTILITIES )<br>
target_link_libraries( castor-GATERootToCastor ${ROOT_LIBRARIES}<br>
${DEFORMATION_LEDESMA_LIBRARIES} ${ITK_LIBRARIES} ${MPI_CXX_LIBRARIES}<br>
)<br>
target_link_libraries( castor-GATEMacToGeom ${ROOT_LIBRARIES}<br>
${DEFORMATION_LEDESMA_LIBRARIES} ${ITK_LIBRARIES} ${MPI_CXX_LIBRARIES}<br>
)<br>
endif()<br>
if( CASToR_BUILD_SAMPLE_UTILITIES )<br>
target_link_libraries( castor-PetScannerLutEx ${ROOT_LIBRARIES}<br>
${DEFORMATION_LEDESMA_LIBRARIES} ${ITK_LIBRARIES} ${MPI_CXX_LIBRARIES}<br>
)<br>
target_link_libraries( castor-datafileConversionEx ${ROOT_LIBRARIES}<br>
${DEFORMATION_LEDESMA_LIBRARIES} ${ITK_LIBRARIES} ${MPI_CXX_LIBRARIES}<br>
)<br>
endif()<br>
<br>
else()<br>
target_link_libraries( castor-recon ${ROOT_LIBRARIES} ${OpenMP_CXX_FLAGS} ${MPI_LIBRARIES}<br>
${DEFORMATION_LEDESMA_LIBRARIES} ${ITK_LIBRARIES} )<br>
target_link_libraries( castor-datafileExplorer ${ROOT_LIBRARIES} ${OpenMP_CXX_FLAGS} ${MPI_LIBRARIES}<br>
${DEFORMATION_LEDESMA_LIBRARIES} ${ITK_LIBRARIES} )<br>
target_link_libraries( castor-scannerLUTExplorer ${ROOT_LIBRARIES} ${OpenMP_CXX_FLAGS} ${MPI_LIBRARIES}<br>
${DEFORMATION_LEDESMA_LIBRARIES} ${ITK_LIBRARIES} )<br>
target_link_libraries( castor-imageDynamicTools ${ROOT_LIBRARIES} ${OpenMP_CXX_FLAGS} ${MPI_LIBRARIES}<br>
${DEFORMATION_LEDESMA_LIBRARIES} ${ITK_LIBRARIES}<br>
)<br>
if( CASToR_BUILD_DEVEL )<br>
target_link_libraries( castor-proj ${ROOT_LIBRARIES} ${MPI_LIBRARIES}<br>
${DEFORMATION_LEDESMA_LIBRARIES} ${ITK_LIBRARIES} ${OpenMP_CXX_FLAGS}<br>
)<br>
endif()<br>
if( CASToR_BUILD_GATE_UTILITIES )<br>
target_link_libraries( castor-GATERootToCastor ${ROOT_LIBRARIES} ${MPI_LIBRARIES}<br>
${DEFORMATION_LEDESMA_LIBRARIES} ${ITK_LIBRARIES} ${OpenMP_CXX_FLAGS}<br>
)<br>
target_link_libraries( castor-GATEMacToGeom ${ROOT_LIBRARIES} ${MPI_LIBRARIES}<br>
${DEFORMATION_LEDESMA_LIBRARIES} ${ITK_LIBRARIES} ${OpenMP_CXX_FLAGS}<br>
)<br>
endif()<br>
if( CASToR_BUILD_SAMPLE_UTILITIES )<br>
target_link_libraries( castor-PetScannerLutEx ${ROOT_LIBRARIES} ${MPI_LIBRARIES}<br>
${DEFORMATION_LEDESMA_LIBRARIES} ${ITK_LIBRARIES} ${OpenMP_CXX_FLAGS}<br>
)<br>
target_link_libraries( castor-datafileConversionEx ${ROOT_LIBRARIES} ${MPI_LIBRARIES}<br>
${DEFORMATION_LEDESMA_LIBRARIES} ${ITK_LIBRARIES} ${OpenMP_CXX_FLAGS}<br>
)<br>
endif()<br>
endif()<br>
<br>
#---------<br>
# Move the executables to the install path<br>
install( TARGETS<br>
castor-recon castor-datafileExplorer castor-scannerLUTExplorer castor-imageDynamicTools<br>
DESTINATION<br>
bin<br>
)<br>
<br>
if( CASToR_BUILD_DEVEL )<br>
install( TARGETS<br>
castor-proj<br>
DESTINATION<br>
bin<br>
)<br>
endif()<br>
<br>
if( CASToR_BUILD_GATE_UTILITIES )<br>
install( TARGETS<br>
castor-GATERootToCastor castor-GATEMacToGeom<br>
DESTINATION<br>
bin<br>
)<br>
endif()<br>
<br>
if( CASToR_BUILD_SAMPLE_UTILITIES )<br>
install( TARGETS<br>
castor-PetScannerLutEx castor-datafileConversionEx<br>
DESTINATION<br>
bin<br>
)<br>
endif()<br>
<br>
<br>
<br>
------------------------------<br>
<br>
Subject: Digest Footer<br>
<br>
_______________________________________________<br>
Castor-users mailing list<br>
Castor-users@lists.castor-project.org<br>
<a href="http://lists.castor-project.org/listinfo/castor-users">http://lists.castor-project.org/listinfo/castor-users</a><br>
<br>
<br>
------------------------------<br>
<br>
End of Castor-users Digest, Vol 36, Issue 13<br>
********************************************<br>
</div>
</span></font>
</body>
</html>