libatomprobe is a C++ library to help build atom probe software.

It contains data structures, file readers and algorithms which are useful
in processing the point data generated by atom probe tomography. Using
it, you can write C++ programs that use features within the library

To build this library, you need to have a compiler - the same one as
you use to build your program. You then need to "link" to it. Under
gcc/clang, this is achieved by passing "-latomprobe" during compilation
of your program, after installing the library.

We are really intrested to hear what you have done with this library,
and any feedback or additions that you may  have made. Please contact
us on our forums to tell us what neat things you have done:

We are particularly excited to hear from anyone who might have new
modules to contribute

libatomprobe is distributed under the terms of the GNU General Public
Licence, version 3.0 or greater.

You may use this in your application, provided that if you distribute
your program, you make your program available under the same terms. These
terms are fully detailed in the COPYING file in this folder. 

In summary, two important points are that you need to make the source code
for your program, and this library available to end users. End users must
also be free to similarly distribute the program You may not use technical
measures to prevent users from modifying or compiling the program.

Wikipedia Page:

You need to install the development libraries for these (usually *-dev or *-devel):

You need to install the following helper programs:

Compiling Under Linux
	In the following the "#" is not part of the command. Do not type it in, or cut and paste it.
	it simply shows which lines are commands.

	-install the dependencies using this command as administrator (root):
		# apt-get install libgsl-dev libqhull-dev libxml2-dev libiconv-dev g++ cmake

	dnf install gsl-devel qhull-devel libxml2-devel libiconv-devel 

After installing dependencies:

	- In the folder, tell cmake to perform checks and set up the compile framework:
		# cmake .
	- Compile the library
		# make

	- Install the library
		# make install

Compiling Under OSX

We recommend using "MacPorts" to obtain the dependencies. First install
MacPorts, then install the dependencies like so:
sudo port install gsl qhull cmake gcc libxml2

	cmake .

Compiling Under Cygwin (For windows)
A windows version of the library  can be compiled, to enable running
the program under windows.

Use cygwin ( to install the following libraries

You will also  need these programs to compile the program

To compile, run :
	cmake .

This generates a .dll. You *must* either 

	install the library, or 
	have this in the library path (eg same folder) as the program you are trying to run

If you do not  do this, the program will fail to load, due to a missing

As the libatomprobe library built this way depends on other cygwin
libraries, you *should* run any generated programs form the cygwin

Testing the built library

Tests are in the test folder, e.g.

you can run the unit tests with

This should provide some output and, ideally, not fail.

Debugging vs. Release

By default, the library is built in a debug mode, where extra checks are
performed at run time. This means the library runs slower, but you are
more likely to catch bugs in the usage of the library, and internally
within the library.

To build a "release" (non-debug) version (which is faster), use the
following cmake command:

	cmake -DCMAKE_BUILD_TYPE=Release .

If you built the library in debug mode, you must also build your program
with the "DEBUG" define enabled, when using libatomprobe. If you fail
to do this, your program may experience random crashes whenever you use
code involving libatomprobe.

You can enable extra debugging with "ubsan", if using gcc >=4.9