diff --git a/.codespellrc b/.codespellrc
new file mode 100644
index 000000000..fecd51a44
--- /dev/null
+++ b/.codespellrc
@@ -0,0 +1,2 @@
+[codespell]
+ignore-words-list = indX, hAx, linIx
diff --git a/.github/workflows/coverage-report.yml b/.github/workflows/coverage-report.yml
index 08c06b51d..a34e75c8b 100644
--- a/.github/workflows/coverage-report.yml
+++ b/.github/workflows/coverage-report.yml
@@ -28,6 +28,7 @@ jobs:
- name: Upload to Coveralls
uses: coverallsapp/github-action@v2
+ continue-on-error: true
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
file: coverage/coverage.json
@@ -35,6 +36,7 @@ jobs:
- name: Upload to Codecov
uses: codecov/codecov-action@v5
+ continue-on-error: true
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: coverage/coverage.json,coverage/coverage.xml
diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml
new file mode 100644
index 000000000..ad2aa4231
--- /dev/null
+++ b/.github/workflows/docs.yml
@@ -0,0 +1,33 @@
+name: Build Sphinx Documentation
+
+on:
+ push:
+ pull_request:
+
+jobs:
+ build-docs:
+ runs-on: ubuntu-latest
+
+ steps:
+ - uses: actions/checkout@v6
+ with:
+ fetch-depth: 0
+
+ - name: Set up Python
+ uses: actions/setup-python@v6
+ with:
+ python-version: '3.13'
+
+ - name: Install sphinx and dependencies
+ run: |
+ python -m pip install --upgrade pip
+ pip install -r docs/requirements.txt
+
+ - name: Build documentation
+ run: sphinx-build docs _doc
+
+ - name: Upload artifacts
+ uses: actions/upload-artifact@v6
+ with:
+ name: documentation
+ path: _doc
diff --git a/.github/workflows/package.yml b/.github/workflows/package.yml
new file mode 100644
index 000000000..4ea743285
--- /dev/null
+++ b/.github/workflows/package.yml
@@ -0,0 +1,85 @@
+name: Build Standalone
+
+on:
+ push:
+ branches:
+ - master
+ - 'rc/**'
+ - 'devops/**'
+ tags:
+ - '**'
+ workflow_dispatch:
+ inputs:
+ isRelease:
+ description: 'Build as release'
+ type: boolean
+ default: false
+
+env:
+ MLM_LICENSE_TOKEN: ${{ secrets.MATLAB_BATCH_TOKEN }}
+
+jobs:
+ build-standalone:
+ name: Build Standalone (${{ matrix.platform }})
+ runs-on: ${{ matrix.os }}
+
+ strategy:
+ fail-fast: false
+ matrix:
+ include:
+ - os: ubuntu-latest
+ platform: linux
+ - os: windows-latest
+ platform: windows
+ - os: macos-latest
+ platform: macos-silicon
+ - os: macos-15-intel
+ platform: macos-intel
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v6
+ with:
+ submodules: 'false'
+
+ - name: Determine build type
+ id: build-type
+ shell: bash
+ run: |
+ if [[ "${{ github.ref_type }}" == "tag" ]]; then
+ echo "is_release=true" >> "$GITHUB_OUTPUT"
+ echo "artifact_name=matRad-standalone-${{ matrix.platform }}-${{ github.ref_name }}" >> "$GITHUB_OUTPUT"
+ elif [[ "${{ github.event_name }}" == "workflow_dispatch" && "${{ inputs.isRelease }}" == "true" ]]; then
+ echo "is_release=true" >> "$GITHUB_OUTPUT"
+ echo "artifact_name=matRad-standalone-${{ matrix.platform }}-manual-release" >> "$GITHUB_OUTPUT"
+ else
+ echo "is_release=false" >> "$GITHUB_OUTPUT"
+ echo "artifact_name=matRad-standalone-${{ matrix.platform }}-dev" >> "$GITHUB_OUTPUT"
+ fi
+
+ - name: Install MATLAB with Compiler
+ uses: matlab-actions/setup-matlab@v2
+ with:
+ release: latest
+ products: MATLAB_Compiler MATLAB_Compiler_SDK Image_Processing_Toolbox Parallel_Computing_Toolbox Optimization_Toolbox Global_Optimization_Toolbox
+
+ - name: Build Standalone
+ uses: matlab-actions/run-command@v2
+ with:
+ command: |
+ matRad_buildStandalone('isRelease',${{ steps.build-type.outputs.is_release }},'verbose',true,'json','build_result.json')
+
+ - name: Upload installer artifact
+ uses: actions/upload-artifact@v7
+ with:
+ name: ${{ steps.build-type.outputs.artifact_name }}
+ path: build/installer/
+ if-no-files-found: error
+
+ - name: Upload build result JSON
+ if: always()
+ uses: actions/upload-artifact@v7
+ with:
+ name: ${{ steps.build-type.outputs.artifact_name }}-build-info
+ path: build_result.json
+ if-no-files-found: warn
diff --git a/.gitignore b/.gitignore
index 1e8d53e0a..26c250354 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,5 +4,7 @@ testresults.xml
coverage.xml
coverage.json
*.asv
-build/
.DS_Store
+build/
+.doc/
+
diff --git a/.miss_hit b/.miss_hit
new file mode 100644
index 000000000..5aaf59ab9
--- /dev/null
+++ b/.miss_hit
@@ -0,0 +1,35 @@
+project_root
+
+# octave: true
+
+exclude_dir: "submodules"
+
+# style guide (https://florianschanda.github.io/miss_hit/style_checker.html)
+line_length: 150
+
+# --- Naming rules for matRad ---
+
+# matRad_ + lowerCamelCase
+regex_function_name: "^(matRad|test|helper)_([a-z][a-zA-Z0-9]*|[A-Z]{2,}[a-zA-Z0-9]*)$"
+regex_script_name: "^matRad_((example[1-9][0-9]*_)?([a-z][a-zA-Z0-9]*|[A-Z]{2,}[a-zA-Z0-9]*))$"
+
+# methods: plain lowerCamelCase
+regex_method_name: "^([a-z][a-zA-Z0-9]*|[A-Z]{2,}[a-zA-Z0-9]*)$"
+
+# classes: matRad_ + UpperCamelCase
+regex_class_name: "^(matRad|test)_([A-Z]{2,}[a-zA-Z0-9]*|[A-Z][a-zA-Z0-9]*)$"
+
+# parameters / variables: lowerCamelCase
+regex_parameter_name: "^(test_functions|test_suite|[a-z][a-zA-Z0-9]*|[A-Z]{2,}[a-zA-Z0-9]*)$"
+regex_attribute_name: "^([a-z][a-zA-Z0-9]*|[A-Z]{2,}[a-zA-Z0-9]*)$"
+
+suppress_rule: "copyright_notice"
+
+tab_width: 4
+indent_function_file_body: false
+
+# metrics limit for the code quality (https://florianschanda.github.io/miss_hit/metrics.html)
+metric "cnest": limit 6
+metric "file_length": limit 1000
+metric "cyc": limit 25
+metric "parameters": limit 15
diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml
new file mode 100644
index 000000000..5a21695af
--- /dev/null
+++ b/.pre-commit-config.yaml
@@ -0,0 +1,51 @@
+---
+repos:
+ - repo: https://github.com/pre-commit/pre-commit-hooks
+ rev: v4.0.1
+ hooks:
+ - id: trailing-whitespace
+ - id: end-of-file-fixer
+ - id: check-yaml
+ - id: check-added-large-files
+ - id: check-case-conflict
+ - id: check-merge-conflict
+ - id: check-symlinks
+
+ - repo: https://github.com/rstcheck/rstcheck
+ rev: v6.2.5
+ hooks:
+ - id: rstcheck
+ additional_dependencies: ['rstcheck[sphinx,toml]']
+ args: [--ignore-languages=matlab, '--ignore-directives=automodule,autoclass,autofunction,autodata,autoevent,autointerface,autolabel,autosectionlabel,autostatus,autotoclabel']
+
+
+ - repo: https://github.com/codespell-project/codespell
+ rev: v2.4.1
+ hooks:
+ - id: codespell
+
+ - repo: local
+ hooks:
+ # Run the linter.
+ - id: mmh_style
+ name: MISS_HIT Style
+ entry: mh_style
+ language: python
+ args: [--fix]
+ additional_dependencies: [miss_hit_core]
+ files: \.m$
+
+ - id: mh_metric
+ name: MISS_HIT Metrics
+ entry: mh_metric
+ args: [--ci]
+ files: \.m$
+ language: python
+ additional_dependencies: [miss_hit_core]
+
+ - id: mh_lint
+ name: MISS_HIT Lint
+ entry: mh_lint
+ files: \.m$
+ language: python
+ additional_dependencies: [miss_hit]
diff --git a/.readthedocs.yml b/.readthedocs.yml
new file mode 100644
index 000000000..22cfb7e17
--- /dev/null
+++ b/.readthedocs.yml
@@ -0,0 +1,22 @@
+# Read the Docs configuration file
+# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
+
+# Required
+version: 2
+
+# Set the OS, Python version, and other tools you might need
+build:
+ os: ubuntu-24.04
+ tools:
+ python: "3.13"
+
+# Build documentation in the "docs/" directory with Sphinx
+sphinx:
+ configuration: docs/conf.py
+
+# Optionally, but recommended,
+# declare the Python requirements required to build your documentation
+# See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
+python:
+ install:
+ - requirements: docs/requirements.txt
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 069ee9629..1f4884526 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,47 @@
# Changelog
+## Patch 3.2.1
+This (arguably large) patch does fix a multitude of issues with the new >=R2025 MATLAB Desktop and reported minor issues import/export, helper, and other minor functions. Apart from that it introduced some new flexibilities under the hood (single precision, raytracer vectorization) that do not expose changes on the outside, and can thus be sustainably tested before changing behavior in the next major release. Further the license has changed to a 3-Clause-BSD.
+
+### Preliminary new features & Enhancements
+- Dose engines can now optionally run calculations in single precision (default remains double). A new `precision` configuration property controls this
+- GPU acceleration is available as an opt-in property for optimization. Helper functions for translating matRad data structures to/from GPU arrays were added.
+- The Siddon raytracer is now implemented as a class with vectorized ray processing and optional single-precision forcing.
+- Pencil beam engines now expose a `traceOnDoseGrid` switch (default `false`) to optionally retain radiological depth cubes on the dose grid.
+- Performance improvements in `matRad_cubeIndex2worldCoords`.
+- Improvements on the phantom builder to also accept mm coordinates for phantom definition
+- Variance calculation from MC statistics can now be computed correctly
+- `matRad_plotSlice` input parsing enhancements; fixed empty figure opening due to colormap array request.
+- TOPAS now correctly support multiple alpha/beta values.
+- Streamlined sequecing and 3D conformal calculations
+- FRED interface updated with new test data, improved version compatibility, and the ability to force `ijFormatVersion`.
+- DICOM import now imports passively scattered proton beams (gantry/couch angles)
+- Optimizer instantiation reworked to allow more configuration options via `propOpt`.
+- `finalizeDose` call in DoseEngines moved to `calcDoseForward` and `calcDoseInfluence`
+
+### Bug Fixes
+- Fixed range-shifter handling issues in MC dose calculation interfaces
+- Fix typo in RBE model fallback load path.
+- Fix typo in `addMUdataFromMachine`.
+- Correct DICOM attribute for `SliceLocation`.
+- Fix slight dimension interpretation issue in `cubeIndex2worldCoords`.
+- Fix scenario listing and the robustness field when serializing objectives to structs or displaying them in the CST.
+- Multiple GUI fixes for MATLAB 2025 compatibility.
+- GUI: fix missing plot handle; fix empty figure handles returned when GUI is globally disabled; fix `plotSlice` colormap issue; fix scrolling in the viewing widget under Octave (empty `CurrentPoint`).
+- Drop `numOfbeams` as a required parameter (it can be inferred).
+
+### Documentation
+- Full Sphinx / ReadTheDocs documentation build pipeline added (readthedocs.yml, GitHub Actions workflow, `docs/` folder with images and rst structure).
+- Docstrings updated to be sphinx-napoleon compatible across many files.
+- Copyright notices updated to 2026.
+
+### Development & CI
+- Standalone build step added to GitHub Actions workflows with matrix build (windows, linux, macos intel / silicon).
+- Preliminary pre-commit hooks configured with `miss_hit` (MATLAB style checker) and `codespell` (not enforced yet)
+- GitHub Actions workflow for documentation building (triggered on changes to `docs/`).
+- Coverage report workflow made more tolerant to errors.
+- MOcov submodule updated to include md5 fix.
+
## Minor Update 3.2.0
### New Features
@@ -9,7 +51,7 @@
### Bug Fixes & Performance
- DICOM Import widget allow selection of multiple RTDose files.
-- DICOM Import Widget and importer handle selected patient more consistently and robustly.
+- DICOM Import Widget and importer handle selected patient more consistently and robustly.
- DICOM Exporter writes quantities beyond dose, importer tries to import them correctly.
- DICOM Exporter now always writes ReferencedRTPlanSequence. Importer can now survive without it.
- DVH widget does not throw a warning in updates, handle scenarios correctly / more robustly and missing xlabel axesHandle parameter.
@@ -36,15 +78,15 @@
### Major Changes and New Features
-#### File Structure Overhaul
+#### File Structure Overhaul
- Major restructuring of files into organized subfolders, such as matRad (core code), thirdParty, examples, etc., to improve clarity and maintainability.
- Introduction of userdata folder to maintain custom data
#### Scenario Management and robust / 4D optimization
- Introduced comprehensive scenario management (scenario models), including support for 4D phase scenarios and automated scenario model instance tests.
-- Multiple robust optimization methods (COWC, OWC, VWWC, expected value)
+- Multiple robust optimization methods (COWC, OWC, VWWC, expected value)
-#### Object-Oriented DoseEngines & new Monte Carlo interfaces
+#### Object-Oriented DoseEngines & new Monte Carlo interfaces
- Transitioned from procedural dose calculation to an object-oriented approach, significantly improving the structure and maintainability of the dose engines.
- Added customizable TOPAS interface for ions (and experimental for photons)
- Workflow of the existing Monte Carlo interfaces has been completely overhauled in the new engine format
@@ -85,7 +127,7 @@ While we try to keep downwards compatibility (and will provide fixes if breaking
- Unit tests now runnig as GitHub Actions on Matlab R2022b, the latest release, and Octave 6
#### Improved Octave Compatibility:
-- Compatibility tested for Octave 6 to 9.
+- Compatibility tested for Octave 6 to 9.
- Octave compatibility not always optimal, and IPOPT needs to be compiled individually.
#### Performance Improvements & Code Cleanup
@@ -105,8 +147,8 @@ While we try to keep downwards compatibility (and will provide fixes if breaking
- **Minor:** Minor releases incldue minor new features (e.g. a new optimizer, objectives, biomodel or dose calculation algorithm). Downwards compatibility (within the major release) is preserved.
- **Patch:** Patch versions only fix bugs and do not introduce new features. Exceptions could be the exposure of new, minimal configuration options to mitigate a bug occuring in special circumstances.
-## Version 2.10.1 - Patch release for "Blaise"
-Release with small updates, clean-ups and bugfixes
+## Version 2.10.1 - Patch release for "Blaise"
+Release with small updates, clean-ups and bugfixes
- Bugfix in 3D view due to inconsistent angles in pln & stf
- Bugfix for using incorrect dicom UID's and wrong writing order in the dicom export
- Bugfix for weird colormap issue in plotting
@@ -129,7 +171,7 @@ The new release contains:
- Integration tests using TravisCI (with Octave, so no GUI functionalities are tested)
- matRad_rc script to configure matRad paths
- matRad version can now be printed with matRad_version, version correctly shown in GUI and when using matRad_rc
-- Seven new Matlab example scripts to demonstrate use of matRad
+- Seven new Matlab example scripts to demonstrate use of matRad
- Added basic interfaces to the open-source photon/proton MC engines ompMC/MCsquare
- Overhaul of the optimization interface using OOP and integration of the fmincon optimizer from Mathworks' MATLAB Optimization toolbox
- Changes to the cst variable (new script to convert old to new cst structures in tools folder)
@@ -150,7 +192,7 @@ The new release contains:
- New colormap handling to allow integration of custom colormaps
- Modularization of slice display by dedicated functions in plotting folder including generation of 3D views
- New global configuration object (matRad_cfg <- MatRad_Config.m) to store default values and with logging interface
-- Many bug fixes and many new bugs..
+- Many bug fixes and many new bugs..
## Version 2.1 "Alan"
First official release of matRad including
diff --git a/LICENSE.md b/LICENSE.md
index 7e4c8ce95..744e59633 100644
--- a/LICENSE.md
+++ b/LICENSE.md
@@ -1,1003 +1,16 @@
-matRad
-with Ipopt MCsquare ompMC
+## DISCLAIMER
+This project is licensed under the license terms printed below (3-Clause BSD), except for third-party components located in the `thirdParty` and `submodules` directories. Those components are licensed under their respective licenses, as indicated in their individual directories.
-This matRad as a compilation with Ipopt, MCsquare and ompMC as separate and independent works (or
-modules, components, programs).
+## LICENSE
+Copyright (c) 2026, the matRad development team within the Radiotherapy Optimization Group, German Cancer Research Center (DKFZ)
+All rights reserved.
-It is the intention of the copyright owners of matRad and Ipopt that matRad and Ipopt
-are each made available, used and further distributed under their own respective license
-agreement, as provided below. To the best of our understanding, matRad and Ipopt do not
-form a derivative work, a larger work or a collection of works that would be subject to
-separate copyrights. Therefore, the compilation as a whole is covered the "Mere Aggregation"
-exception in section 5 of the GNU GENERAL PUBLIC LICENSE Version 3 and the exemption
-from "Contributions" in section 1. b) ii) of the Eclipse Public License -v 1.0.
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
-Should this interpretation turn out to be not in compliance with the applicable laws
-in force, an alternative means is provided to allow the Ipopt to be legally used
-together with matRad. For these purposes, please see the "Additional permission under
-GNU GPL version 3 section 7" below.
+1\. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
-The compilation is covered by the following copyright and permission notices.
+2\. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+3\. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
-* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-
-matRad
-
-matRad is an open source multi-modality radiation treatment planning sytem written
-in Matlab. It is meant for educational purposes and supports planning of
-intensity-modulated radiation therapy for mutliple modalities. The source code is
-maintained by a development team at the German Cancer Reserach Center DKFZ in
-Heidelberg, Germany, and other contributors around the world. We are always looking
-for more people willing to help improve matRad. Do not hesitate and get in touch.
-
-The source code and more information on matRad can be found on the project page at
-http://e0404.github.io/matRad/;
-a wiki documentation is under constant development at
-https://github.com/e0404/matRad/wiki.
-
-Copyright (C) 2020 by the contributors and German Cancer Research Center
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see .
-
-Additional permission under GNU GPL version 3 section 7
-
-If you modify this Program, or any covered work, by linking or combining it with
-Ipopt (or a modified version of that library), containing parts covered
-by the terms of Eclipse Public License, Version 1.0 (EPL-1.0), the licensors of this
-Program grant you additional permission to run, use and convey the resulting work.
-
-Contact: Niklas Wahl, E040 Research Group Radiotherapy Optimization
-e-mail: contact@matRad.org
-address:
-Division of Medical Physics in Radiation Oncology
-German Cancer Research Center
-Im Neuenheimer Feld 280
-69120 Heidelberg
-Germany
-
-
-* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-
-Ipopt
-
-Ipopt is an open-source solver for large-scale nonlinear continuous optimization. It
-can be used from modeling environments, such as AIMMS, AMPL, GAMS, or Matlab, and it
-is also available as callable library with interfaces to C++, C, Fortran, Java, and R.
-Ipopt uses an interior point method, together with a filter linear search procedure.
-
-All rights reserved. This program and the accompanying materials
-are made available under the terms of the Eclipse Public License v1.0
-which accompanies this distribution, and is available at
-http://www.eclipse.org/legal/epl-v10.html.
-
-The source code and more information on Ipopt can be found on the project page
-at https://projects.coin-or.org/Ipopt.
-
-
-* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-
- GNU GENERAL PUBLIC LICENSE
- Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc.
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
-
- The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works. By contrast,
-the GNU General Public License is intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users. We, the Free Software Foundation, use the
-GNU General Public License for most of our software; it applies also to
-any other work released this way by its authors. You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
- To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights. Therefore, you have
-certain responsibilities if you distribute copies of the software, or if
-you modify it: responsibilities to respect the freedom of others.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received. You must make sure that they, too, receive
-or can get the source code. And you must show them these terms so they
-know their rights.
-
- Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
- For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software. For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
- Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the manufacturer
-can do so. This is fundamentally incompatible with the aim of
-protecting users' freedom to change the software. The systematic
-pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable. Therefore, we
-have designed this version of the GPL to prohibit the practice for those
-products. If such problems arise substantially in other domains, we
-stand ready to extend this provision to those domains in future versions
-of the GPL, as needed to protect the freedom of users.
-
- Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary. To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- TERMS AND CONDITIONS
-
- 0. Definitions.
-
- "This License" refers to version 3 of the GNU General Public License.
-
- "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
- "The Program" refers to any copyrightable work licensed under this
-License. Each licensee is addressed as "you". "Licensees" and
-"recipients" may be individuals or organizations.
-
- To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy. The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
- A "covered work" means either the unmodified Program or a work based
-on the Program.
-
- To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy. Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
- To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies. Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
- An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License. If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
- 1. Source Code.
-
- The "source code" for a work means the preferred form of the work
-for making modifications to it. "Object code" means any non-source
-form of a work.
-
- A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
- The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form. A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
- The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities. However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work. For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
- The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
- The Corresponding Source for a work in source code form is that
-same work.
-
- 2. Basic Permissions.
-
- All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met. This License explicitly affirms your unlimited
-permission to run the unmodified Program. The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work. This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
- You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force. You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright. Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
- Conveying under any other circumstances is permitted solely under
-the conditions stated below. Sublicensing is not allowed; section 10
-makes it unnecessary.
-
- 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
- No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
- When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
- 4. Conveying Verbatim Copies.
-
- You may convey verbatim copies of the Program's source code as you
-receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
- You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
- 5. Conveying Modified Source Versions.
-
- You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
- a) The work must carry prominent notices stating that you modified
- it, and giving a relevant date.
-
- b) The work must carry prominent notices stating that it is
- released under this License and any conditions added under section
- 7. This requirement modifies the requirement in section 4 to
- "keep intact all notices".
-
- c) You must license the entire work, as a whole, under this
- License to anyone who comes into possession of a copy. This
- License will therefore apply, along with any applicable section 7
- additional terms, to the whole of the work, and all its parts,
- regardless of how they are packaged. This License gives no
- permission to license the work in any other way, but it does not
- invalidate such permission if you have separately received it.
-
- d) If the work has interactive user interfaces, each must display
- Appropriate Legal Notices; however, if the Program has interactive
- interfaces that do not display Appropriate Legal Notices, your
- work need not make them do so.
-
- A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit. Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
- 6. Conveying Non-Source Forms.
-
- You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
- a) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by the
- Corresponding Source fixed on a durable physical medium
- customarily used for software interchange.
-
- b) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by a
- written offer, valid for at least three years and valid for as
- long as you offer spare parts or customer support for that product
- model, to give anyone who possesses the object code either (1) a
- copy of the Corresponding Source for all the software in the
- product that is covered by this License, on a durable physical
- medium customarily used for software interchange, for a price no
- more than your reasonable cost of physically performing this
- conveying of source, or (2) access to copy the
- Corresponding Source from a network server at no charge.
-
- c) Convey individual copies of the object code with a copy of the
- written offer to provide the Corresponding Source. This
- alternative is allowed only occasionally and noncommercially, and
- only if you received the object code with such an offer, in accord
- with subsection 6b.
-
- d) Convey the object code by offering access from a designated
- place (gratis or for a charge), and offer equivalent access to the
- Corresponding Source in the same way through the same place at no
- further charge. You need not require recipients to copy the
- Corresponding Source along with the object code. If the place to
- copy the object code is a network server, the Corresponding Source
- may be on a different server (operated by you or a third party)
- that supports equivalent copying facilities, provided you maintain
- clear directions next to the object code saying where to find the
- Corresponding Source. Regardless of what server hosts the
- Corresponding Source, you remain obligated to ensure that it is
- available for as long as needed to satisfy these requirements.
-
- e) Convey the object code using peer-to-peer transmission, provided
- you inform other peers where the object code and Corresponding
- Source of the work are being offered to the general public at no
- charge under subsection 6d.
-
- A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
- A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling. In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage. For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product. A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
- "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source. The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
- If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information. But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
- The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed. Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
- Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
- 7. Additional Terms.
-
- "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law. If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
- When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it. (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.) You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
- Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
- a) Disclaiming warranty or limiting liability differently from the
- terms of sections 15 and 16 of this License; or
-
- b) Requiring preservation of specified reasonable legal notices or
- author attributions in that material or in the Appropriate Legal
- Notices displayed by works containing it; or
-
- c) Prohibiting misrepresentation of the origin of that material, or
- requiring that modified versions of such material be marked in
- reasonable ways as different from the original version; or
-
- d) Limiting the use for publicity purposes of names of licensors or
- authors of the material; or
-
- e) Declining to grant rights under trademark law for use of some
- trade names, trademarks, or service marks; or
-
- f) Requiring indemnification of licensors and authors of that
- material by anyone who conveys the material (or modified versions of
- it) with contractual assumptions of liability to the recipient, for
- any liability that these contractual assumptions directly impose on
- those licensors and authors.
-
- All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10. If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term. If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
- If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
- Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
- 8. Termination.
-
- You may not propagate or modify a covered work except as expressly
-provided under this License. Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
- However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
- Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
- Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License. If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
- 9. Acceptance Not Required for Having Copies.
-
- You are not required to accept this License in order to receive or
-run a copy of the Program. Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance. However,
-nothing other than this License grants you permission to propagate or
-modify any covered work. These actions infringe copyright if you do
-not accept this License. Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
- 10. Automatic Licensing of Downstream Recipients.
-
- Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License. You are not responsible
-for enforcing compliance by third parties with this License.
-
- An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations. If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
- You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License. For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
- 11. Patents.
-
- A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based. The
-work thus licensed is called the contributor's "contributor version".
-
- A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version. For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
- Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
- In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement). To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
- If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients. "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
- If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
- A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License. You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
- Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
- 12. No Surrender of Others' Freedom.
-
- If conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all. For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
- 13. Use with the GNU Affero General Public License.
-
- Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
-combined work, and to convey the resulting work. The terms of this
-License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
-
- 14. Revised Versions of this License.
-
- The Free Software Foundation may publish revised and/or new versions of
-the GNU General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
- Each version is given a distinguishing version number. If the
-Program specifies that a certain numbered version of the GNU General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation. If the Program does not specify a version number of the
-GNU General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
- If the Program specifies that a proxy can decide which future
-versions of the GNU General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
- Later license versions may give you additional or different
-permissions. However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
- 15. Disclaimer of Warranty.
-
- THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
-OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
-IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. Limitation of Liability.
-
- IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
-DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGES.
-
- 17. Interpretation of Sections 15 and 16.
-
- If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-state the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-
- Copyright (C)
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see .
-
-Also add information on how to contact you by electronic and paper mail.
-
- If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
- Copyright (C)
- This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, your program's commands
-might be different; for a GUI interface, you would use an "about box".
-
- You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU GPL, see
-.
-
- The GNU General Public License does not permit incorporating your program
-into proprietary programs. If your program is a subroutine library, you
-may consider it more useful to permit linking proprietary applications with
-the library. If this is what you want to do, use the GNU Lesser General
-Public License instead of this License. But first, please read
-.
-
-
-* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-
-Eclipse Public License -v 1.0
-
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC
-LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM
-CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
-
-1. DEFINITIONS
-
-"Contribution" means:
-
-a) in the case of the initial Contributor, the initial code and documentation
-distributed under this Agreement, and
-
-b) in the case of each subsequent Contributor:
-
-i) changes to the Program, and
-
-ii) additions to the Program;
-
-where such changes and/or additions to the Program originate from and are
-distributed by that particular Contributor. A Contribution 'originates' from
-a Contributor if it was added to the Program by such Contributor itself or
-anyone acting on such Contributor's behalf. Contributions do not include
-additions to the Program which: (i) are separate modules of software distributed
-in conjunction with the Program under their own license agreement, and (ii)
-are not derivative works of the Program.
-
-"Contributor" means any person or entity that distributes the Program.
-
-"Licensed Patents " mean patent claims licensable by a Contributor which are
-necessarily infringed by the use or sale of its Contribution alone or when
-combined with the Program.
-
-"Program" means the Contributions distributed in accordance with this Agreement.
-
-"Recipient" means anyone who receives the Program under this Agreement,
-including all Contributors.
-
-2. GRANT OF RIGHTS
-
-a) Subject to the terms of this Agreement, each Contributor hereby grants
-Recipient a non-exclusive, worldwide, royalty-free copyright license to
-reproduce, prepare derivative works of, publicly display, publicly perform,
-distribute and sublicense the Contribution of such Contributor, if any, and
-such derivative works, in source code and object code form.
-
-b) Subject to the terms of this Agreement, each Contributor hereby grants
-Recipient a non-exclusive, worldwide, royalty-free patent license under
-Licensed Patents to make, use, sell, offer to sell, import and otherwise
-transfer the Contribution of such Contributor, if any, in source code and
-object code form. This patent license shall apply to the combination of the
-Contribution and the Program if, at the time the Contribution is added by
-the Contributor, such addition of the Contribution causes such combination
-to be covered by the Licensed Patents. The patent license shall not apply
-to any other combinations which include the Contribution. No hardware per
-se is licensed hereunder.
-
-c) Recipient understands that although each Contributor grants the licenses
-to its Contributions set forth herein, no assurances are provided by any
-Contributor that the Program does not infringe the patent or other
-intellectual property rights of any other entity. Each Contributor disclaims
-any liability to Recipient for claims brought by any other entity based on
-infringement of intellectual property rights or otherwise. As a condition to
-exercising the rights and licenses granted hereunder, each Recipient hereby
-assumes sole responsibility to secure any other intellectual property rights
-needed, if any. For example, if a third party patent license is required to
-allow Recipient to distribute the Program, it is Recipient's responsibility
-to acquire that license before distributing the Program.
-
-d) Each Contributor represents that to its knowledge it has sufficient
-copyright rights in its Contribution, if any, to grant the copyright license
-set forth in this Agreement.
-
-3. REQUIREMENTS
-
-A Contributor may choose to distribute the Program in object code form under
-its own license agreement, provided that:
-
-a) it complies with the terms and conditions of this Agreement; and
-
-b) its license agreement:
-
-i) effectively disclaims on behalf of all Contributors all warranties and
-conditions, express and implied, including warranties or conditions of title
-and non-infringement, and implied warranties or conditions of merchantability
-and fitness for a particular purpose;
-
-ii) effectively excludes on behalf of all Contributors all liability for
-damages, including direct, indirect, special, incidental and consequential
-damages, such as lost profits;
-
-iii) states that any provisions which differ from this Agreement are offered
-by that Contributor alone and not by any other party; and
-
-iv) states that source code for the Program is available from such Contributor,
-and informs licensees how to obtain it in a reasonable manner on or through a
-medium customarily used for software exchange.
-
-When the Program is made available in source code form:
-
-a) it must be made available under this Agreement; and
-
-b) a copy of this Agreement must be included with each copy of the Program.
-
-Contributors may not remove or alter any copyright notices contained within
-the Program.
-
-Each Contributor must identify itself as the originator of its Contribution,
-if any, in a manner that reasonably allows subsequent Recipients to identify
-the originator of the Contribution.
-
-4. COMMERCIAL DISTRIBUTION
-
-Commercial distributors of software may accept certain responsibilities with
-respect to end users, business partners and the like. While this license is
-intended to facilitate the commercial use of the Program, the Contributor who
-includes the Program in a commercial product offering should do so in a manner
-which does not create potential liability for other Contributors. Therefore,
-if a Contributor includes the Program in a commercial product offering, such
-Contributor ("Commercial Contributor") hereby agrees to defend and indemnify
-every other Contributor ("Indemnified Contributor") against any losses, damages
-and costs (collectively "Losses") arising from claims, lawsuits and other legal
-actions brought by a third party against the Indemnified Contributor to the extent
-caused by the acts or omissions of such Commercial Contributor in connection
-with its distribution of the Program in a commercial product offering. The
-obligations in this section do not apply to any claims or Losses relating to
-any actual or alleged intellectual property infringement. In order to qualify,
-an Indemnified Contributor must: a) promptly notify the Commercial Contributor
-in writing of such claim, and b) allow the Commercial Contributor to control,
-and cooperate with the Commercial Contributor in, the defense and any related
-settlement negotiations. The Indemnified Contributor may participate in any
-such claim at its own expense.
-
-For example, a Contributor might include the Program in a commercial product
-offering, Product X. That Contributor is then a Commercial Contributor. If that
-Commercial Contributor then makes performance claims, or offers warranties
-related to Product X, those performance claims and warranties are such
-Commercial Contributor's responsibility alone. Under this section, the
-Commercial Contributor would have to defend claims against the other
-Contributors related to those performance claims and warranties, and if a
-court requires any other Contributor to pay any damages as a result, the
-Commercial Contributor must pay those damages.
-
-5. NO WARRANTY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
-IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
-NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each
-Recipient is solely responsible for determining the appropriateness of using
-and distributing the Program and assumes all risks associated with its exercise
-of rights under this Agreement , including but not limited to the risks and
-costs of program errors, compliance with applicable laws, damage to or loss
-of data, programs or equipment, and unavailability or interruption of operations.
-
-6. DISCLAIMER OF LIABILITY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY
-CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST
-PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
-GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. GENERAL
-
-If any provision of this Agreement is invalid or unenforceable under applicable
-law, it shall not affect the validity or enforceability of the remainder of the
-terms of this Agreement, and without further action by the parties hereto, such
-provision shall be reformed to the minimum extent necessary to make such
-provision valid and enforceable.
-
-If Recipient institutes patent litigation against any entity (including a
-cross-claim or counterclaim in a lawsuit) alleging that the Program itself
-(excluding combinations of the Program with other software or hardware) infringes
-such Recipient's patent(s), then such Recipient's rights granted under Section
-2(b) shall terminate as of the date such litigation is filed.
-
-All Recipient's rights under this Agreement shall terminate if it fails to comply
-with any of the material terms or conditions of this Agreement and does not cure
-such failure in a reasonable period of time after becoming aware of such
-noncompliance. If all Recipient's rights under this Agreement terminate,
-Recipient agrees to cease use and distribution of the Program as soon as
-reasonably practicable. However, Recipient's obligations under this Agreement
-and any licenses granted by Recipient relating to the Program shall continue and
-survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement, but in
-order to avoid inconsistency the Agreement is copyrighted and may only be modified
-in the following manner. The Agreement Steward reserves the right to publish new
-versions (including revisions) of this Agreement from time to time. No one other
-than the Agreement Steward has the right to modify this Agreement. The Eclipse
-Foundation is the initial Agreement Steward. The Eclipse Foundation may assign
-the responsibility to serve as the Agreement Steward to a suitable separate entity.
-Each new version of the Agreement will be given a distinguishing version number.
-The Program (including Contributions) may always be distributed subject to the
-version of the Agreement under which it was received. In addition, after a new
-version of the Agreement is published, Contributor may elect to distribute the
-Program (including its Contributions) under the new version. Except as expressly
-stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses
-to the intellectual property of any Contributor under this Agreement, whether
-expressly, by implication, estoppel or otherwise. All rights in the Program not
-expressly granted under this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the
-intellectual property laws of the United States of America. No party to this
-Agreement will bring a legal action under this Agreement more than one year
-after the cause of action arose. Each party waives its rights to a jury trial
-in any resulting litigation.
-
-* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-
-ompMC
-
-Information and source code of ompMC is available on https://github.com/edoerner/ompMC
-Precompiled binaries and reference data of ompMC are used within matRad.
-The source code itself is referenced as a git submodule. Contents of the ompMC subfolder
-and the submodule are licensed under GNU GPL v3.0 as stated in the respective LICENSE
-files located in these folders.
-
-* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
-
-MCsquare
-
-MCsquare is an open-source software developed/maintained at UC Louvain, Belgium.
-Information and source code of MCsquare is available on http://openmcsquare.org and
-https://https://gitlab.com/openmcsquare/MCsquare
-Precompiled binaries and reference data of MCsquare are used within and distributed with
-matRad.
-The source code itself is referenced as a git submodule. Contents of the MCsquare/bin
-subfolder and the submodule are licensed under the Apache-2.0 license as stated in the
-respective LICENSE files located in these folders.
-
-* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
\ No newline at end of file
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/docs/_static/style.css b/docs/_static/style.css
new file mode 100644
index 000000000..7e1d9d9aa
--- /dev/null
+++ b/docs/_static/style.css
@@ -0,0 +1,11 @@
+img.matrad-header {
+ padding-bottom: 0.45ex;
+ margin-bottom: 0px;
+ vertical-align: bottom;
+}
+
+img.matrad-text-logo {
+ padding-bottom: 0.8ex;
+ margin-bottom: 0px;
+ vertical-align: bottom;
+}
\ No newline at end of file
diff --git a/docs/api/4D.rst b/docs/api/4D.rst
new file mode 100644
index 000000000..3bf3f3546
--- /dev/null
+++ b/docs/api/4D.rst
@@ -0,0 +1,15 @@
+.. _4d:
+
+##
+4D
+##
+
+Specialized functions for 4D dose calculation and treatment planning
+
+.. automodule:: matRad.4D
+ :members:
+ :undoc-members:
+ :show-inheritance:
+ :private-members:
+
+..
\ No newline at end of file
diff --git a/docs/api/IO.rst b/docs/api/IO.rst
new file mode 100644
index 000000000..01b88bfba
--- /dev/null
+++ b/docs/api/IO.rst
@@ -0,0 +1,15 @@
+.. _io:
+
+##
+IO
+##
+
+Input/output functions for reading and writing matRad-compatible data formats.
+
+.. automodule:: matRad.IO
+ :members:
+ :undoc-members:
+ :show-inheritance:
+ :private-members:
+
+..
diff --git a/docs/api/basedata.rst b/docs/api/basedata.rst
new file mode 100644
index 000000000..b87ea04d3
--- /dev/null
+++ b/docs/api/basedata.rst
@@ -0,0 +1,15 @@
+.. _basedata:
+
+########
+basedata
+########
+
+Functions for loading and managing machine base data used in dose calculation.
+
+.. automodule:: matRad.basedata
+ :members:
+ :undoc-members:
+ :show-inheritance:
+ :private-members:
+
+..
diff --git a/docs/api/bioModels.rst b/docs/api/bioModels.rst
new file mode 100644
index 000000000..8b8926481
--- /dev/null
+++ b/docs/api/bioModels.rst
@@ -0,0 +1,29 @@
+.. _biomodels:
+
+#########
+bioModels
+#########
+
+.. contents::
+ :local:
+
+Biological effect models for computing radiobiological quantities such as LET, RBE, and survival fractions.
+
+.. automodule:: matRad.bioModels
+ :members:
+ :undoc-members:
+ :show-inheritance:
+ :private-members:
+
+LQ-based Models
+---------------
+
+Linear-quadratic based biological models.
+
+.. automodule:: matRad.bioModels.LQbasedModels
+ :members:
+ :undoc-members:
+ :show-inheritance:
+ :private-members:
+
+..
diff --git a/docs/api/brachytherapy.rst b/docs/api/brachytherapy.rst
new file mode 100644
index 000000000..9246c53a4
--- /dev/null
+++ b/docs/api/brachytherapy.rst
@@ -0,0 +1,29 @@
+.. _brachytherapy:
+
+#############
+brachytherapy
+#############
+
+.. contents::
+ :local:
+
+Experimental brachytherapy dose planning functions.
+
+.. automodule:: matRad.brachytherapy
+ :members:
+ :undoc-members:
+ :show-inheritance:
+ :private-members:
+
+Additional Scripts
+------------------
+
+Additional utility scripts for brachytherapy planning.
+
+.. automodule:: matRad.brachytherapy.additionalScripts
+ :members:
+ :undoc-members:
+ :show-inheritance:
+ :private-members:
+
+..
diff --git a/docs/api/dicom.rst b/docs/api/dicom.rst
new file mode 100644
index 000000000..cfd3ddcc2
--- /dev/null
+++ b/docs/api/dicom.rst
@@ -0,0 +1,40 @@
+.. _dicom:
+
+#####
+dicom
+#####
+
+.. contents::
+ :local:
+
+DICOM import and export functionality for reading and writing patient data in DICOM format.
+
+.. automodule:: matRad.dicom
+ :members:
+ :undoc-members:
+ :show-inheritance:
+ :private-members:
+
+DICOM Exporter
+--------------
+
+Class handling the export of matRad treatment plan data to DICOM format.
+
+.. autoclass:: matRad.dicom.matRad_DicomExporter
+ :members:
+ :undoc-members:
+ :show-inheritance:
+ :private-members:
+
+DICOM Importer
+--------------
+
+Class handling the import of patient data from DICOM files into matRad.
+
+.. autoclass:: matRad.dicom.matRad_DicomImporter
+ :members:
+ :undoc-members:
+ :show-inheritance:
+ :private-members:
+
+..
diff --git a/docs/api/doseCalc.rst b/docs/api/doseCalc.rst
new file mode 100644
index 000000000..96521cf10
--- /dev/null
+++ b/docs/api/doseCalc.rst
@@ -0,0 +1,60 @@
+.. _dosecalc:
+
+########
+doseCalc
+########
+
+.. contents::
+ :local:
+
+Dose calculation engines and supporting utilities for photon, proton, and ion therapy.
+
+.. automodule:: matRad.doseCalc
+ :members:
+ :undoc-members:
+ :show-inheritance:
+ :private-members:
+
+Dose Engines
+------------
+
+.. automodule:: matRad.doseCalc.+DoseEngines
+ :members:
+ :undoc-members:
+ :show-inheritance:
+ :private-members:
+
+FRED
+----
+
+Interface components for the FRED Monte Carlo dose calculation engine.
+
+.. automodule:: matRad.doseCalc.FRED
+ :members:
+ :undoc-members:
+ :show-inheritance:
+ :private-members:
+
+MCsquare
+--------
+
+Interface components for the MCsquare fast Monte Carlo proton dose calculation engine.
+
+.. automodule:: matRad.doseCalc.MCsquare
+ :members:
+ :undoc-members:
+ :show-inheritance:
+ :private-members:
+
+TOPAS
+-----
+
+Interface componentsfor the TOPAS Monte Carlo dose calculation engine.
+
+.. automodule:: matRad.doseCalc.topas
+ :members:
+ :undoc-members:
+ :show-inheritance:
+ :private-members:
+
+..
diff --git a/docs/api/geometry.rst b/docs/api/geometry.rst
new file mode 100644
index 000000000..573d5b8cc
--- /dev/null
+++ b/docs/api/geometry.rst
@@ -0,0 +1,14 @@
+.. _geometry:
+
+geometry
+========
+
+Contains functions to convert between world coordinates, cube coordinates, and voxel indices, as well as functions to handle gantry and couch rotations.
+
+.. automodule:: matRad.geometry
+ :members:
+ :undoc-members:
+ :show-inheritance:
+ :private-members:
+
+..
diff --git a/docs/api/gpu.rst b/docs/api/gpu.rst
new file mode 100644
index 000000000..4e2f2ae48
--- /dev/null
+++ b/docs/api/gpu.rst
@@ -0,0 +1,15 @@
+.. _gpu:
+
+###
+gpu
+###
+
+GPU-accelerated computation functions for dose calculation.
+
+.. automodule:: matRad.gpu
+ :members:
+ :undoc-members:
+ :show-inheritance:
+ :private-members:
+
+..
diff --git a/docs/api/gui.rst b/docs/api/gui.rst
new file mode 100644
index 000000000..b6cd409b6
--- /dev/null
+++ b/docs/api/gui.rst
@@ -0,0 +1,43 @@
+.. _gui:
+
+###
+gui
+###
+
+.. contents::
+ :local:
+
+
+Main GUI
+--------
+
+The main graphical user interface of matRad is implemented in the class :class:`matRad_MainGUI`.
+It provides access to all functionalities of matRad and is the central hub for visualization and interaction with the treatment planning workflow.
+
+It is composed of several widgets that are implemented in the :mod:`matRad.gui.widgets` submodule.
+The GUI can also be started with :func:`matRadGUI` from the root folder.
+
+.. autoclass:: matRad.gui.matRad_MainGUI
+ :members:
+ :undoc-members:
+ :show-inheritance:
+ :private-members:
+
+Basic GUI functions
+-------------------
+
+.. automodule:: matRad.gui
+ :members:
+ :undoc-members:
+ :show-inheritance:
+ :private-members:
+ :exclude-members: matRad_MainGUI
+
+Widgets
+-------
+
+.. automodule:: matRad.gui.widgets
+ :members:
+ :undoc-members:
+ :show-inheritance:
+ :private-members:
diff --git a/docs/api/hluts.rst b/docs/api/hluts.rst
new file mode 100644
index 000000000..4a7509b26
--- /dev/null
+++ b/docs/api/hluts.rst
@@ -0,0 +1,15 @@
+.. _hluts:
+
+#####
+hluts
+#####
+
+Hounsfield unit (HU) lookup tables for converting CT Hounsfield values to material properties used in dose calculation.
+
+.. automodule:: matRad.hluts
+ :members:
+ :undoc-members:
+ :show-inheritance:
+ :private-members:
+
+..
diff --git a/docs/api/index.rst b/docs/api/index.rst
new file mode 100644
index 000000000..ce8d8c0e4
--- /dev/null
+++ b/docs/api/index.rst
@@ -0,0 +1,60 @@
+matRad API Documentation
+========================
+
+matRad is separted into a top-level API that consists of a few functions to run the treatment planning workflow resting on the top-level of the the matRad folder / module. The core implementation is organized in several subdirectories / submodules that are called by the API functions and can be used for more fine-grained development.
+Startup and configuration functions are located in the root of the repository.
+
+.. note::
+
+ The root-level scripts (``matRad.m``, ``matRadGUI.m``, ``matRad_rc.m`` etc.) are not auto-documented here.
+ See the :ref:`run_script` guide for usage information.
+
+Below, the top-level matRad functions are explained. For more specialized functions, refer to the documentation of the respective `Modules / Subfolders`_.
+
+.. contents::
+ :local:
+ :depth: 1
+
+Global Configuration
+--------------------
+.. _config:
+
+matRad's global configuration class :class:`MatRad_Config` is used to set up the environment and configuration for the matRad application.
+It is implemented as a Singleton pattern and thus consistent throughout a matRad session.
+
+At the core, the class handles user folders, caches the environment (Matlab/Octave), provides matRad's version, and stores default parameters.
+The class also provides logging functionality enabling control over output via log levels.
+
+----
+
+.. autoclass:: matRad.MatRad_Config
+ :members:
+ :undoc-members:
+ :show-inheritance:
+ :private-members:
+ :noindex:
+..
+
+Top-level API functions
+-----------------------
+
+.. automodule:: matRad
+ :members:
+ :undoc-members:
+ :show-inheritance:
+ :private-members:
+ :exclude-members: MatRad_Config
+
+Modules / Subfolders
+--------------------
+
+.. toctree::
+ :maxdepth: 5
+ :glob:
+ :includehidden:
+ :reversed:
+
+ *
+ optimization/index
+
+..
diff --git a/docs/api/optimization/basefuncs.rst b/docs/api/optimization/basefuncs.rst
new file mode 100644
index 000000000..ee96b0c41
--- /dev/null
+++ b/docs/api/optimization/basefuncs.rst
@@ -0,0 +1,30 @@
+.. _obj_constr:
+
+======================
+Optimization Functions
+======================
+
+Currently, matRad implements objectives and constraints for the optimization of dose distributions.
+All Objectives derive from the :class:`matRad_DoseOptimizationFunction` class and differentiate between dose :ref:`objectives ` and :ref:`constraints `.
+
+.. _objectives:
+
+Dose Objectives
+---------------
+
+.. automodule:: matRad.optimization.+DoseObjectives
+ :members:
+ :undoc-members:
+ :show-inheritance:
+ :private-members:
+
+.. _constraints:
+
+Dose Constraints
+----------------
+
+.. automodule:: matRad.optimization.+DoseConstraints
+ :members:
+ :undoc-members:
+ :show-inheritance:
+ :private-members:
\ No newline at end of file
diff --git a/docs/api/optimization/index.rst b/docs/api/optimization/index.rst
new file mode 100644
index 000000000..363c499c9
--- /dev/null
+++ b/docs/api/optimization/index.rst
@@ -0,0 +1,21 @@
+############
+optimization
+############
+
+.. toctree::
+ :maxdepth: 4
+
+ basefuncs
+ optimizers
+ projections
+
+Local functions
+---------------
+
+.. automodule:: matRad.optimization
+ :members:
+ :undoc-members:
+ :show-inheritance:
+ :private-members:
+
+..
\ No newline at end of file
diff --git a/docs/api/optimization/optimizers.rst b/docs/api/optimization/optimizers.rst
new file mode 100644
index 000000000..9d38205f4
--- /dev/null
+++ b/docs/api/optimization/optimizers.rst
@@ -0,0 +1,11 @@
+.. _optimizers:
+
+==========
+optimizers
+==========
+
+.. automodule:: matRad.optimization.optimizer
+ :members:
+ :undoc-members:
+ :show-inheritance:
+ :private-members:
diff --git a/docs/api/optimization/projections.rst b/docs/api/optimization/projections.rst
new file mode 100644
index 000000000..9866811c9
--- /dev/null
+++ b/docs/api/optimization/projections.rst
@@ -0,0 +1,13 @@
+.. _projections:
+
+===========
+projections
+===========
+
+Projections handle the forward calculation and chain derivative of quantities during optimization.
+
+.. automodule:: matRad.optimization.projections
+ :members:
+ :undoc-members:
+ :show-inheritance:
+ :private-members:
diff --git a/docs/api/phantoms.rst b/docs/api/phantoms.rst
new file mode 100644
index 000000000..b8b150fbe
--- /dev/null
+++ b/docs/api/phantoms.rst
@@ -0,0 +1,23 @@
+.. _phantoms:
+
+########
+phantoms
+########
+
+.. contents::
+ :local:
+
+Pre-defined phantom data sets for testing and demonstration purposes.
+
+Phantom Builder
+---------------
+
+Utility functions for programmatically constructing phantom geometries.
+
+.. automodule:: matRad.phantoms.builder
+ :members:
+ :undoc-members:
+ :show-inheritance:
+ :private-members:
+
+..
diff --git a/docs/api/planAnalysis.rst b/docs/api/planAnalysis.rst
new file mode 100644
index 000000000..0c5f0c25a
--- /dev/null
+++ b/docs/api/planAnalysis.rst
@@ -0,0 +1,29 @@
+.. _plananalysis:
+
+############
+planAnalysis
+############
+
+.. contents::
+ :local:
+
+Functions for evaluating and analyzing treatment plans, including DVH calculation and quality indicators.
+
+.. automodule:: matRad.planAnalysis
+ :members:
+ :undoc-members:
+ :show-inheritance:
+ :private-members:
+
+Sampling Analysis
+-----------------
+
+Sampling-based plan analysis for robustness evaluation.
+
+.. automodule:: matRad.planAnalysis.samplingAnalysis
+ :members:
+ :undoc-members:
+ :show-inheritance:
+ :private-members:
+
+..
diff --git a/docs/api/plotting.rst b/docs/api/plotting.rst
new file mode 100644
index 000000000..98223099d
--- /dev/null
+++ b/docs/api/plotting.rst
@@ -0,0 +1,29 @@
+.. _plotting:
+
+########
+plotting
+########
+
+.. contents::
+ :local:
+
+Visualization and plotting functions for treatment plans and dose distributions.
+
+.. automodule:: matRad.plotting
+ :members:
+ :undoc-members:
+ :show-inheritance:
+ :private-members:
+
+Colormaps
+---------
+
+Custom colormaps optimized for dose distribution visualization.
+
+.. automodule:: matRad.plotting.colormaps
+ :members:
+ :undoc-members:
+ :show-inheritance:
+ :private-members:
+
+..
diff --git a/docs/api/raytracing.rst b/docs/api/raytracing.rst
new file mode 100644
index 000000000..9c9a20162
--- /dev/null
+++ b/docs/api/raytracing.rst
@@ -0,0 +1,12 @@
+.. _raytracing:
+
+rayTracing
+==========
+
+.. automodule:: matRad.rayTracing
+ :members:
+ :undoc-members:
+ :show-inheritance:
+ :private-members:
+
+..
diff --git a/docs/api/scenarios.rst b/docs/api/scenarios.rst
new file mode 100644
index 000000000..a64ceeb29
--- /dev/null
+++ b/docs/api/scenarios.rst
@@ -0,0 +1,14 @@
+.. _scenarios:
+
+scenarios
+=========
+
+Copntains the scenario models used in matRad.
+
+----
+
+.. automodule:: matRad.scenarios
+ :members:
+ :undoc-members:
+ :show-inheritance:
+ :private-members:
\ No newline at end of file
diff --git a/docs/api/sequencing.rst b/docs/api/sequencing.rst
new file mode 100644
index 000000000..f083e4383
--- /dev/null
+++ b/docs/api/sequencing.rst
@@ -0,0 +1,15 @@
+.. _sequencing:
+
+##########
+sequencing
+##########
+
+MLC leaf sequencing algorithms for converting fluence maps to deliverable photon IMRT plans.
+
+.. automodule:: matRad.sequencing
+ :members:
+ :undoc-members:
+ :show-inheritance:
+ :private-members:
+
+..
diff --git a/docs/api/steering.rst b/docs/api/steering.rst
new file mode 100644
index 000000000..92b83c9c7
--- /dev/null
+++ b/docs/api/steering.rst
@@ -0,0 +1,16 @@
+.. _steering:
+
+steering
+========
+
+Contains classes to create "steering information" objects that are used to define the geometry of the treatment plan, such as gantry angles, couch angles, and other parameters that influence the treatment delivery.
+
+Used within the top-level API function :func:`matRad_generateStf` to create an :ref:`stf ` struct.
+
+----
+
+.. automodule:: matRad.steering
+ :members:
+ :undoc-members:
+ :show-inheritance:
+ :private-members:
\ No newline at end of file
diff --git a/docs/api/util.rst b/docs/api/util.rst
new file mode 100644
index 000000000..ec7a24855
--- /dev/null
+++ b/docs/api/util.rst
@@ -0,0 +1,29 @@
+.. _util:
+
+####
+util
+####
+
+.. contents::
+ :local:
+
+General utility functions used throughout matRad.
+
+.. automodule:: matRad.util
+ :members:
+ :undoc-members:
+ :show-inheritance:
+
+
+Octave Compatibility
+--------------------
+
+Compatibility functions ensuring matRad runs correctly in GNU Octave in addition to MATLAB.
+
+.. automodule:: matRad.util.octaveCompat
+ :members:
+ :undoc-members:
+ :show-inheritance:
+ :private-members:
+
+..
\ No newline at end of file
diff --git a/docs/conf.py b/docs/conf.py
new file mode 100644
index 000000000..0ed5a3b12
--- /dev/null
+++ b/docs/conf.py
@@ -0,0 +1,89 @@
+import os
+
+# Compatibility patch: sphinxcontrib-matlabdomain 0.22.1 was written for
+# Sphinx <8.x. Sphinx 8.x's autodoc base class now emits ':no-index:'
+# (hyphenated) in generated RST, but MatObject/MatModule option_spec only
+# register the old 'noindex' name, causing "unknown option" errors.
+# Remove this block once sphinxcontrib-matlabdomain is updated upstream.
+def _patch_mat_modindex() -> None:
+ """
+ Register 'mat-modindex' as a virtual docname in Sphinx's StandardDomain so
+ it can be used directly in toctree directives (like genindex/modindex/search).
+
+ Background: sphinxcontrib-matlabdomain generates mat-modindex.html via the
+ domain index machinery, but the StandardDomain._virtual_doc_names dict only
+ knows about 'genindex', 'modindex' (→ py-modindex), and 'search'. Any name
+ in that dict bypasses the normal "does this RST file exist?" check in both
+ the toctree directive (sphinx/directives/other.py) and the toctree adapter
+ (sphinx/environment/adapters/toctree.py) and is resolved directly to the
+ given output filename. Adding 'mat-modindex' here lets you write::
+
+ .. toctree::
+ mat-modindex
+
+ and have it link to the generated mat-modindex.html page with the correct
+ relative URL regardless of nesting depth.
+ """
+ from sphinx.domains.std import StandardDomain
+ StandardDomain._virtual_doc_names['mat-modindex'] = (
+ 'mat-modindex', 'MATLAB Module Index'
+ )
+
+_patch_mat_modindex()
+
+
+def _patch_matlabdomain_noindex() -> None:
+ from docutils.parsers.rst import directives as _directives
+ from sphinxcontrib.matlab import MatObject, MatModule
+ for cls in (MatObject, MatModule):
+ if "no-index" not in cls.option_spec:
+ cls.option_spec["no-index"] = _directives.flag
+
+_patch_matlabdomain_noindex()
+
+project = "matRad"
+copyright = "2025, e0404"
+author = "e0404"
+
+version = "3.2.1"
+release = "3.2.1"
+
+html_theme = "sphinx_rtd_theme" #pip install sphinx-rtd-theme
+
+html_static_path = ["_static"]
+html_css_files = ["style.css"]
+html_logo = "../matRad/gfx/matrad_logo.png"
+html_theme_options = {
+ 'logo_only': True,
+ 'navigation_depth': 5,
+ 'collapse_navigation': True,
+}
+
+extensions = [
+ 'sphinx.ext.autodoc',
+ 'sphinx.ext.napoleon',
+ 'sphinx_toolbox.collapse',
+ 'sphinxcontrib.matlab',
+ 'sphinxcontrib.youtube',
+ 'sphinx_togglebutton',
+ ]
+
+napoleon_google_docstring = True
+napoleon_numpy_docstring = False
+napoleon_custom_sections = [
+ ('input', 'params_style'),
+ ('output', 'params_style'),
+ 'call'
+]
+primary_domain = "mat"
+
+matlab_src_dir = os.path.join(os.path.dirname(__file__), '../')
+matlab_auto_link = "basic"
+
+matlab_show_property_default_value = True
+matlab_show_property_specs = True
+matlab_class_signature = True
+matlab_short_links = True
+
+autoclass_content = "both"
+autodoc_member_order = "bysource"
diff --git a/docs/datastructures/basedata/particles.rst b/docs/datastructures/basedata/particles.rst
new file mode 100644
index 000000000..08425f3f3
--- /dev/null
+++ b/docs/datastructures/basedata/particles.rst
@@ -0,0 +1,87 @@
+.. _basedata_particles:
+
+========================
+Particle Base Data File
+========================
+
+This page describes the format and the variables as part of the particle base data files `protons_Generic.mat `_ and `carbon_Generic.mat `_.
+The base data is stored using MATLAB's structure format.
+The first sub level of the structure 'machine' contains two fields named 'meta' and 'data' which are explained separately next.
+
+machine.meta
+------------
+Stores relevant isolated meta information describing the actual base data file that does not fit into the machine.data structure.
+
+machine.meta.machine
+^^^^^^^^^^^^^^^^^^^^
+Actual machine name as string to identify the base data set during runtime.
+
+machine.meta.radiationMode
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+The radiationMode stores the radiation modality the base data is describing. Logically, `protons_Generic.mat `_ models protons in water and the corresponding field machine.meta.radiationMode is set to 'protons'.
+
+machine.meta.SAD
+^^^^^^^^^^^^^^^^
+This subfield holds the geometrical source to axis distance in millimeter. In case of the generic base data set, we use a value of 10000 [mm].
+
+.. _BAMStoIsoDist:
+
+machine.meta.BAMStoIsoDist
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+This subfield depicts the geometrical distance from the beam application monitoring system/beam nozzle to the isocenter. For the generic base data set we use a value of 2000 [mm].
+
+machine.meta.LUT_bxWidthminFWHM
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+This field is a two-dimensional array and holds a look up table which describes a mapping of the lateral spot spacing (bixel width) to the focus index (initial beam width). In the generic proton base data set, we only store one focus index (initial beam width) for which reasons the corresponding LUT_bxWidthminFWHM is set to [1,Inf;5 5]. This means that if the lateral spot spacing is set during treatment planning to a value between 1 and Inf, then a focus index with at least a full width half maximum (FWHM) of 5 mm is consistently used. As we only store one focus index in machine.data.initFocus for `protons_Generic.mat `_ with a FWHM at isocenter for the highest beam energy of ~5.4 [mm], we basically make sure to always use the first (and only) focus index. In principle, the idea behind machine.meta.LUT_bxWidthminFWHM is to allow for different focus indices when using different lateral spot spacings (bixel widths). Users can model the following behavior: E.g. when setting the lateral spot spacing to 5 [mm] then use a foci index with a FWHM greater than 8 [mm]. Or when setting the lateral spot spacing to 3 [mm] then use a focus index with FWHM greater than 6 [mm].
+
+machine.data
+------------
+This subfield contains an array of structures holding the corresponding depth-dependent physical and (biological) beam properties for each initial beam energy.
+
+machine.data.energy
+^^^^^^^^^^^^^^^^^^^
+Initial beam energy in MeV/u. Internally, this is used mainly as an identifier for the entry and does not necessarily correspond to an exact energy at the nozzle, for example.
+
+machine.data.depths
+^^^^^^^^^^^^^^^^^^^
+Depth values stored on an irregular grid in [mm] (higher resolution around the peak). All depth-dependent data like (Z, sigma) are stored exactly on these depth positions.
+
+machine.data.peakPos
+^^^^^^^^^^^^^^^^^^^^
+Peak position of the pencil beam in [mm].
+
+machine.data.offset
+^^^^^^^^^^^^^^^^^^^
+This field allows to consider a pencil beam offset caused by passive beam line elements, that have not been modeled during the creation of the base data set.
+
+machine.data.Z
+^^^^^^^^^^^^^^
+This field holds the integrated depth dose profiles of the corresponding radiation modality. Regarding units, we refer to the base data section in the section :ref:`Dose influence matrix calculation `.
+
+machine.data.sigma
+^^^^^^^^^^^^^^^^^^^
+(for a single Gaussian lateral beam model)
+Lateral beam broadening of the particle pencil beam in water. Hint: The first sigma value for depth 0 [mm] should be set to 0 [mm] because the initial beam width at the patient surface is modeled via machine.data.initFocus and covered later in this wiki page.
+
+machine.data.sigma1
+^^^^^^^^^^^^^^^^^^^
+(for double Gaussian lateral beam model)
+Lateral beam broadening of the particle pencil beam in water of the narrow Gaussian component. Again, the first sigma1 value for depth 0 [mm] should be set to 0 [mm].
+
+machine.data.sigma2
+^^^^^^^^^^^^^^^^^^^
+(for double Gaussian lateral beam model)
+Lateral beam broadening of the particle pencil beam in water of the broad Gaussian component.
+
+machine.data.w
+^^^^^^^^^^^^^^
+(for double Gaussian lateral beam model)
+Relative weight between the narrow (sigma1) and the broad (sigma) Gaussian component.
+
+machine.data.initFocus
+^^^^^^^^^^^^^^^^^^^^^^
+Let numFoci be the number of available focus indices and machine.data.initFocus hold three subfields named 'dist', 'sigma' and 'SisFWHMAtIso' of the following dimensions numFoci x N, numFoci x N and numFoci x 1 whereas N indicates the number of values used in the look up table. SisFWHMAtIso describes for each focus index the initial FWHM at isocenter. In contrast, 'dist' and 'sigma' depict a look up table to model the particle beam spread in air. In the generic proton and carbon base data set we do not model beam widening in air from the beam nozzle to the patient surface (although the code is capable of). Therefore, machine.data.initFocus(1).sigma is a constant value over a distance from 0 to 20000 [mm].
+
+machine.data.energySpectrum
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Sotres the energyspectrum at the nozzle (whose distance is taken from BAMStoIsoDist_)
diff --git a/docs/datastructures/basedata/photons.rst b/docs/datastructures/basedata/photons.rst
new file mode 100644
index 000000000..de93d8437
--- /dev/null
+++ b/docs/datastructures/basedata/photons.rst
@@ -0,0 +1,5 @@
+.. _basedata_photons:
+
+======================
+Photon Base Data File
+======================
\ No newline at end of file
diff --git a/docs/datastructures/cort.rst b/docs/datastructures/cort.rst
new file mode 100644
index 000000000..90e996cc2
--- /dev/null
+++ b/docs/datastructures/cort.rst
@@ -0,0 +1,17 @@
+.. _cort:
+
+================
+The CORT Dataset
+================
+
+The matRad release includes five image datasets of phantoms and patients.
+Consequently, everybody can start treatment planning out of the box without the need for their own data.
+Besides a simple cubic box phantom, matRad also features the four datasets that have been published as the `CORT dataset `_.
+
+The `CORT dataset `_ (common optimization for radiation therapy) is an open dataset intended to be used by researchers when developing and contrasting radiation treatment planning optimization algorithms. It is comprised of datasets for a prostate case, a liver case, a head and neck case, and a standard IMRT phantom (TG119). In matRad, these datasets are already imported and ready to be loaded as MATLAB native ``.mat`` files.
+To allow rapid prototyping and reasonable performance in educational settings, the CT images were downsampled at import.
+
+If you wish to take a look at the original data, you can find it `here `_.
+The dataset contains the original Digital Imaging and Communications in Medicine (DICOM) computed tomography (CT) scan, as well as the DICOM structure file. In addition, the dose-influence matrix from a variety of beam/couch angle pairs is provided for each case.
+
+Besides the pre-configured patient datasets, matRad also features a :ref:`DICOM import `.
\ No newline at end of file
diff --git a/docs/datastructures/cst.rst b/docs/datastructures/cst.rst
new file mode 100644
index 000000000..cfdd4016d
--- /dev/null
+++ b/docs/datastructures/cst.rst
@@ -0,0 +1,133 @@
+.. _cst:
+
+==================
+The cst cell Array
+==================
+
+The constraints of all defined volumes of interest (VOIs) are stored inside the ``cst`` cell array. It is structured as follows:
+
+.. _cst-cell:
+
+Screenshot of the cst-cell:
+
+.. image:: /images/cstCellScreenshot.png
+ :alt: Screenshot of the cst cell
+
+.. list-table:: Structure of the cst cell array
+ :header-rows: 1
+
+ * - Column
+ - Content
+ - Description
+ * - **1**
+ - :ref:`VOI index `
+ - Number to identify the VOI
+ * - **2**
+ - :ref:`VOI name `
+ - String describing the VOI
+ * - **3**
+ - :ref:`VOI type `
+ - Specification whether the VOI is an organ at risk (OAR), a target volume or should be ignored
+ * - **4**
+ - :ref:`Voxel indices `
+ - Vectors containing the indices of all voxels of the CT that are covered by the VOI. Stored as a cell array of vectors (for enabling handling of multiple scenarios)
+ * - **5**
+ - :ref:`Tissue parameters `
+ - Structure containing information about the tissue of the VOI and its overlap priority
+ * - **6**
+ - :ref:`Dose objectives `
+ - Cell array containing information about the functions used to calculate the objective & constraint function value
+ * - **7**
+ - Precomputed Contours
+ - After GUI startup, this column contains precomputed contour data for display
+
+.. _VolInd:
+
+VOI index
+---------
+
+All defined VOIs are enumerated starting with 0.
+
+.. _VolName:
+
+VOI name
+--------
+
+The VOI name is a string containing an organ name or a short description of the volume (e.g. ``BODY``, ``Liver``, ``GTV``, ...).
+
+.. _VolType:
+
+VOI type
+--------
+
+The VOI type specifies how the volume is considered during treatment planning:
+
+.. list-table:: VOI types and their handling during treatment planning
+ :header-rows: 1
+
+ * - VOI type
+ - Handling during treatment planning
+ * - **TARGET**
+ - The VOI will be covered with spot positions (protons / carbon ions) and bixels (photons) as defined in the :ref:`stf struct `. During the fluence optimization, it will be considered according to the defined :ref:`dose objectives `.
+ * - **OAR**
+ - The VOI will not be covered with spot positions or bixels. During the fluence optimization, it will be considered according to the defined :ref:`dose objectives `.
+ * - **IGNORED**
+ - The VOI will not be considered during the treatment planning.
+
+.. _VoxInd:
+
+Voxel indices
+-------------
+
+The indices of all voxels (of the :ref:`CT-cube `) that are covered by the VOI are stored in a vector within a cell array. I.e. we store the segmentation for the VOI as a binary mask, the polygon contour data is not part of matRad's standard data sets.
+As the same voxel can be covered by more than one VOI, an overlap priority (see :ref:`tissue parameters `) is defined to handle potential discrepancies when calculating the objective function value and generating the :ref:`stf struct `.
+
+.. _TissParam:
+
+Tissue parameters
+-----------------
+
+.. image:: /images/cstCellTissueParametersScreenshot.png
+ :alt: Screenshot of tissue parameters
+
+Data can also be stored as in the :ref:`old format (see below) `.
+
+New constraints or objectives can be implemented by adding a respective class definition to the :mod:`matRad.optimization.+DoseConstraints` or :mod:`matRad.optimization.+DoseObjectives` folder.
+
+.. _DoseParam:
+
+Dose Objectives & Constraints since v2.10.0
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+matRad supports inverse planning based on the minimization of a weighted sum of objectives subject to non-linear yet differentiable hard constraints. The following kind of individual objectives are currently supported:
+
+.. include:: ../includes/objtable.rst
+
+Constraints are somewhat built around similar goals as obejctives:
+
+.. include:: ../includes/constrtable.rst
+
+When generating an objective / constraint from code, we suggest to wrap the instantiation of the objective/constraint in a ``struct()`` call, as shown in the first phantom example:
+
+.. literalinclude:: ../../examples/matRad_example1_phantom.m
+ :caption: examples/matRad_example1_phantom.m
+ :lines: 47-49
+ :lineno-match:
+ :language: matlab
+
+
+This will ensure that, when saving to a mat-file, we don't save the class object, which improves compatibility.
+
+.. _DoseParamOld:
+
+Before Version 2.10.0
+~~~~~~~~~~~~~~~~~~~~~
+In the earlier version, matRad stored the objectives and constraints defined for inverse planning as an array of structs. :func:`matRad_convertOldCstToNewCstObjectives` can be used to convert the old definition to the new format.
+
+.. _defaultValues:
+
+Default *cst*-values
+--------------------
+
+The patient data contained within matRad (*ALDERSON, BOXPHANTOM, HEAD_AND_NECK, LIVER, PROSTATE and TG119*) have default values defined within the *cst*-cell.
+
+These values are chosen to produce a reasonable treatment plan, when using coplanar and equidistant photon beams. They can be used as a reference point for more sophisticated treatment plans.
diff --git a/docs/datastructures/ct.rst b/docs/datastructures/ct.rst
new file mode 100644
index 000000000..1fa78e756
--- /dev/null
+++ b/docs/datastructures/ct.rst
@@ -0,0 +1,39 @@
+.. _ct:
+
+=====================
+The ct Data Structure
+=====================
+
+The ct structure contains, among others, the 3D-CT-cube (see `ct.cube`_), obtained from the planning-CT, and the voxel resolution (see `ct.resolution`_).
+
+Screenshot of the ct-struct:
+
+.. image:: /images/ctDataScreenshot.png
+
+.. _ct-cube:
+
+ct.cube
+-------
+
+The cube is a N\ :sub:`x` × N\ :sub:`y` × N\ :sub:`z` matrix (N\ :sub:`x,y,z` = number of voxels in x-, y- and z-direction) containing the water equivalent thickness of each voxel. We already translate HU to water equivalent electron density according to a look up table upon patient data import. The cube(s) is/are stored within a cell array to support multiple CT phases for 4D data.
+
+.. _resolution:
+
+ct.resolution
+-------------
+
+The resolution specifies the size of each voxel in x-, y-, and z-direction in [mm].
+
+.. _cubeDim:
+
+ct.cubeDim
+----------
+
+Number of voxels in x-, y- and z-direction (N\ :sub:`x`, N\ :sub:`y` and N\ :sub:`z`).
+
+.. _numOfCtScen:
+
+ct.numOfCtScen
+--------------
+
+The number of considered CT scenarios. Usually, this corresponds to one but in a special research mode, it is also possible to handle multiple CTs.
\ No newline at end of file
diff --git a/docs/datastructures/dij.rst b/docs/datastructures/dij.rst
new file mode 100644
index 000000000..4277616b4
--- /dev/null
+++ b/docs/datastructures/dij.rst
@@ -0,0 +1,70 @@
+.. _dij:
+
+======================
+The dij Data Structure
+======================
+
+The dij struct holds pre-calculated dose influence data for inverse planning. The individual fields contain the following information.
+
+Starting from version 3.1.0, the dose grid has been separated from the CT grid, meaning that each can have a separate resolution depending on the application. Therefore, the two substructures ``doseGrid`` and ``ctGrid`` hold the following information for both the CT and the dose grid.
+
+**dij.doseGrid.resolution - dij.ctGrid.resolution**
+
+ The resolution of an individual voxel in the dose/ct cube in [mm] in x-, y-, and z-direction (Note that the default value for the doseGrid resolution is 2.5 mm, 2.5 mm and 3 mm in x-, y- and z- directions, and is not assigned equal to the ct resolution).
+
+**dij.doseGrid.dimensions - dij.ctGrid.dimensions**
+
+ The resulting dose/ct cube dimension in voxels.
+
+**dij.doseGrid.numOfVoxels - dij.ctGrid.numOfVoxels**
+
+ The total number of voxels in the entire dose/ct cube.
+
+**dij.numOfBeams**
+
+ Specifies the number of beams used for dose calculation and consequently inverse planning.
+
+**dij.numOfScenarios**
+
+ Number of scenarios considered during dose calculation. Usually, only one scenario is used. In a special research mode, however, it is possible to compute dose on multiple 4D CT phases, considering isocenter shifts or range uncertainties.
+
+**dij.numOfRaysPerBeam**
+
+ Specifies the number of rays per beam. For photons, this number also corresponds to the number of bixels per beam. For particles however, it is also possible to have multiple spot positions with different energies at the same lateral spot position.
+
+**dij.totalNumOfRays**
+
+ Specifies the total number of all rays, i.e. ``dij.totalNumOfRays = sum(dij.numOfRaysPerBeam)``.
+
+**dij.totalNumOfBixels**
+
+ Specifies the total number of bixels over all beams.
+
+**dij.bixelNum**
+
+ Lists the bixel number in an individual beam for all columns in the precomputed influence data. Together with ``dij.rayNum`` and ``dij.beamNum`` this information facilitates an easy assignment of columns of the influence data to the :ref:`stf struct `.
+
+**dij.rayNum**
+
+ Lists the ray number in an individual beam for all columns in the precomputed influence data. Together with ``dij.bixelNum`` and ``dij.beamNum`` this information facilitates an easy assignment of columns of the influence data to the :ref:`stf struct `.
+
+**dij.beamNum**
+
+ Lists the beam number for all columns in the precomputed influence data. Together with ``dij.bixelNum`` and ``dij.rayNum`` this information facilitates an easy assignment of columns of the influence data to the :ref:`stf struct `.
+
+**dij.physicalDose**
+
+ Pre-computed dose influence matrix with ``dij.doseGrid.numOfVoxels`` rows and ``dij.totalNumOfBixels`` columns stored within a cell array (Note that starting from Version 3.0, this matrix is built by default based on ``numOfVoxels`` on doseGrid, not the ctGrid). This matrix specifies the dose contribution from every bixel to every voxel, stored with MATLAB's built-in double precision sparse matrix format.
+
+**dij.mAlphaDose**
+
+ Pre-computed alpha*dose matrix with ``dij.numOfVoxels`` rows and ``dij.totalNumOfBixels`` columns, stored with MATLAB's built-in double precision sparse matrix format within a cell array. This matrix is only computed for biological optimization, where this information is required to compute dose-averaged alpha cubes that are in turn required for three-dimensional RBE modeling.
+
+**dij.mSqrtBetaDose**
+
+ Pre-computed sqrt(beta)*dose matrix with ``dij.numOfVoxels`` rows and ``dij.totalNumOfBixels`` columns, stored with MATLAB's built-in double precision sparse matrix format within a cell array. This matrix is only computed for biological optimization, where this information is required to compute dose-averaged alpha cubes that are in turn required for three-dimensional RBE modeling.
+
+Screenshot of the dij-struct:
+
+.. image:: /images/dij-struct.png
+ :alt: Screenshot of the dij struct
diff --git a/docs/datastructures/pln.rst b/docs/datastructures/pln.rst
new file mode 100644
index 000000000..05bf41138
--- /dev/null
+++ b/docs/datastructures/pln.rst
@@ -0,0 +1,127 @@
+.. _pln:
+
+======================
+The pln Data Structure
+======================
+
+The ``pln`` struct holds the meta information about the radiation treatment plan.
+
+Top-level properties stored in the ``pln`` struct
+-------------------------------------------------
+
+Information relevant for all parts of the treatment planning workflow is stored on the top-level of the struct.
+These include the radiation modality, the machine information, the number of fractions, and scenario models as well as biological models.
+
+**pln.radiationMode**
+
+ Specifies the radiation modality. Can either be *photons*, *protons*, *helium* or *carbon*.
+
+**pln.machine**
+
+ In order to load the appropriate base data, one can introduce the machine in which the treatment plan has been incorporated and the code will look for the file under ``{pln.radiationMode}_{pln.machine}.mat``. For example, setting ``pln.machine`` to 'Generic' for a photon treatment plan will load the already available ``photons_Generic.mat`` file.
+
+**pln.numOfFractions**
+
+ Specifies the number of fractions. Note that this parameter only needs to be set for biological treatment planning for carbon ions, where the optimization process is based on the fraction dose and not based on the overall dose.
+
+**pln.multScen**
+ Specifies a scenario model for the treatment plan, see :mod:`matRad.scenarios`.
+
+**pln.bioModel**
+ Specifies a biological model for the treatment plan, see :mod:`matRad.bioModels`.
+
+Workflow Step Configuration properties
+--------------------------------------
+
+Workflow step configuration properties can be stored in the ``pln`` struct.
+The Syntax for accessing these properties is ``pln.prop{StepName}.{PropertyName}``.
+This results in a nested structure, where the first level is the step name and the second level is the property name.
+
+Current possible names are ``propStf`` (steering information / geometry), ``propDoseCalc`` (dose calculation), ``propOpt`` (optimization), and ``propSeq`` (sequencing).
+
+
+.. admonition:: Using the ``pln.prop{StepName}.{PropertyName}`` vs direct class instantiation.
+ :class: note
+
+ matRad distinguishes between a top-level API and low-level programming using the classes defining workflow steps.
+ Using top-level functions like :func:`matRad_calcDoseInfluence` from the root :mod:`matRad` folder will take pln as an argument, instantiate the appropriate object (e.g. :class:`matRad_ParticleHongPencilBeamEngine`), and try to configure its properties from the ``pln.prop{StepName}.{PropertyName}`` structure.
+ Alternatively, these classes can be directly used and properties can be explicitly set.
+
+Here's an overview of the property mapping:
+
+.. include:: ../includes/planapi.rst
+
+pln.propStf
+^^^^^^^^^^^
+
+**pln.propStf.gantryAngles**
+
+ Specifies the gantry angles as MATLAB vector according to the `matRad coordinate system `_.
+
+**pln.propStf.couchAngles**
+
+ Specifies the couch angles as MATLAB vector according to the `matRad coordinate system `_.
+
+**pln.propStf.bixelWidth**
+
+ Specifies the width (and height) of quadratic photon bixels (i.e. discrete fluence elements). For particles, this parameter specifies the lateral spot distance.
+
+**pln.propStf.numOfBeams**
+
+ Specifies the number of beam directions. During the matRad script, this parameter is automatically determined.
+
+**pln.propStf.isocenter**
+
+ Specifies the isocenter of the treatment plan in voxel coordinates within the ct.cube. By default, the isocenter is calculated as the center of gravity of all voxels belonging to structures that have been modeled as target volume in the `cst cell `_.
+
+pln.propOpt
+-----------
+
+**pln.propOpt.bioOptimization**
+
+ Specifies the type of biological optimization. *none* corresponds to a conventional optimization based on the physical dose. *effect* corresponds to an effect based optimization according to `Wilkens & Oelfke `_. *RBExD* corresponds to an optimization of the RBE weighted dose according to `Krämer & Scholz `_.
+
+**pln.propOpt.runDAO**
+
+ Setting this value to ``true`` will enable Direct Aperture Optimization run allowing us to directly optimize aperture shapes and weights.
+
+**pln.propOpt.runSequencing**
+
+ Setting this value to ``true`` will enable sequencing algorithms run.
+
+Additional adjustable properties
+--------------------------------
+
+The following properties of the pln struct can additionally be adjusted. If they are not explicitly set, default values are used. The default values are handled by the `MatRad_Config class `_.
+
+**pln.propStf.longitudinalSpotSpacing**
+
+ Specifies the longitudinal spot spacing. Default: *3* mm.
+
+**pln.propStf.addMargin**
+
+ If this property is set to *true*, the target is expanded for beamlet finding. Default: *true*.
+
+**pln.propDoseCalc.doseGrid.resolution**
+
+ Specifies the resolution for the dose calculation. Default: x direction: *3* mm, y direction: *3* mm, z direction: *3* mm.
+
+**pln.propDoseCalc.defaultLateralCutOff**
+
+ Specifies the lateral cutoff. Default: *0.995* rel.
+
+**pln.propDoseCalc.defaultGeometricCutOff**
+
+ Specifies the geometric cutoff. Default: *50* mm.
+
+**pln.propDoseCalc.ssdDensityThreshold**
+
+ Specifies the ssd density threshold. Default: *0.05* rel.
+
+**pln.propOpt.defaultMaxIter**
+
+ Specifies the number of maximum iterations. Default: *500*.
+
+**pln.disableGUI**
+
+ If this value is set to *true*, matRadGUI is disabled. Default: *false*.
diff --git a/docs/datastructures/result.rst b/docs/datastructures/result.rst
new file mode 100644
index 000000000..2969fee51
--- /dev/null
+++ b/docs/datastructures/result.rst
@@ -0,0 +1,18 @@
+.. _result:
+
+============================
+The resultGUI Data Structure
+============================
+
+The optimization output is declared as ``resultGUI`` and contains at least two fields. The first field ``w`` contains the optimized weights, and the second field, ``physicalDose``, holds the physical dose cube in CT dimensions :math:`N_x \times N_y \times N_z` (:math:`N_x, N_y, N_z` = number of voxels in x-, y-, and z-direction).
+Each field in the ``resultGUI`` struct can be easily accessed via MATLAB's dot-operator. For instance, ``resultGUI.w`` outputs the fluence weight vector.
+
+In case of performing a biological optimization using carbon ions, the ``resultGUI`` struct holds several additional cubes as fields:
+
+- ``resultGUI.effect`` - represents the biological effect cube
+- ``resultGUI.RBExDose`` - contains the biological effective dose = RBE × physical dose
+- ``resultGUI.RBE`` - holds the relative biological effectiveness cube
+- ``resultGUI.alpha`` - represents the radiosensitivity parameter :math:`\alpha_\mathrm{Particle}` cube from the linear quadratic model
+- ``resultGUI.beta`` - represents the radiosensitivity parameter :math:`\beta_\mathrm{Particle}` cube from the linear quadratic model
+
+Executing ``matRadGUI`` in MATLAB's command window will start the GUI and display all available data of ``resultGUI``.
diff --git a/docs/datastructures/stf.rst b/docs/datastructures/stf.rst
new file mode 100644
index 000000000..4181f1319
--- /dev/null
+++ b/docs/datastructures/stf.rst
@@ -0,0 +1,94 @@
+.. _stf:
+
+======================
+The stf Data Structure
+======================
+
+The stf struct holds all geometric information about the irradiation. The individual fields contain the following information.
+
+Screenshot of the stf structure:
+
+.. image:: /images/stfStructScreenshot.png
+ :alt: stf structure screenshot
+
+.. list-table::
+ :header-rows: 1
+
+ * - **Field**
+ - **Description**
+ * - **gantry angle**
+ - Specification of the gantry angle for each beam in °. Range: 0° - 359°
+ * - **couch angle**
+ - Specification of the couch angle for each beam in °. Range: 0°- 359°
+ * - **bixel width**
+ - *Photons*: lateral width of each bixel. *Particles*: lateral spot spacing.
+ * - **radiation mode**
+ - Specification of the radiation mode. Options are: 'photons', 'protons' or 'carbon'.
+ * - **number of Rays**
+ - Number of rays for each beam
+ * - **ray**
+ - The :ref:`ray substructure ` contains the information about the position and orientation of each ray / bixel for a single beam.
+ * - **source point**
+ - Position of the virtual radiation source in :ref:`LPS coordinates `.
+ * - **number of bixels per ray**
+ - *Photons*: each ray is a single bixel. *Particles*: :ref:`number of bixels / dose spots along each ray `.
+ * - **total number of bixels**
+ - Total number of bixels for each beam.
+
+.. _ray:
+
+stf.ray substructure
+====================
+
+The *stf.ray* substructure contains the information about the position and orientation of each ray/bixel for a single beam.
+
+Screenshot of the stf.ray substructure:
+
+.. image:: /images/stfStructRayScreenshot.png
+ :alt: stf.ray substructure screenshot
+
+.. list-table::
+ :header-rows: 1
+
+ * - **Field**
+ - **Code**
+ - **Description**
+ * - **ray position** *(beam's eye view)*
+ - ``rayPos_bev``
+ - Point where the ray crosses the isocenter plane in the beam's eye view.
+ * - **target point** *(beam's eye view)*
+ - ``targetPoint_bev``
+ - Target point of the ray from the beam's eye view. The target point extends the ray from source to rayPos_bev to behind the patient for use in rayTracing.
+ * - **ray position** *(LPS-coordinates)*
+ - ``rayPos``
+ - rayPos_bev in the :ref:`LPS coordinate system `.
+ * - **target point** *(LPS-coordinates)*
+ - ``targetPoint``
+ - targetPoint_bev in the :ref:`LPS coordinate system `.
+ * - :ref:`energy `
+ - ``energy``
+ - *Photons*: Single value (max. LINAC energy). *Particles*: Energy values of the dose spots along the ray. The number of energies corresponds to the :ref:`number of bixels per ray `.
+
+.. _energy:
+
+stf.ray.energy field
+====================
+
+The *stf.ray.energy* field contains all energy values for the spots along the specified ray. If the radiation mode *'Photons'* was selected, it will be set to *NaN*.
+
+Screenshot of the stf.ray.energy field:
+
+.. image:: /images/stfStructRayEnergyScreenshot.png
+ :alt: stf.ray.energy field screenshot
+
+.. _numOfBixels:
+
+stf.numOfBixelsPerRay field
+===========================
+
+The *stf.numOfBixelsPerRay* field contains the number of bixels / dose spots for every ray of the specified beam. This corresponds to the number of energy values per ray in the :ref:`stf.ray ` substructure.
+
+Screenshot of the stf.numOfBixelsPerRay field:
+
+.. image:: /images/stfStructNumOfBixelsScreenshot.png
+ :alt: stf.numOfBixelsPerRay field screenshot
diff --git a/docs/guide/coords.rst b/docs/guide/coords.rst
new file mode 100644
index 000000000..f2629bd37
--- /dev/null
+++ b/docs/guide/coords.rst
@@ -0,0 +1,93 @@
+.. _coords:
+
+============================
+The matRad Coordinate System
+============================
+
+.. _LPS:
+
+LPS Coordinates
+---------------
+
+matRad uses the LPS (Left, Posterior, Superior) coordinate system.
+
+.. image:: /images/CoordinateSystem/LPScoordinates.png
+ :width: 400px
+
+In this system, the x-axis points towards the left patient-side, the y-axis towards the posterior direction, and the z-axis towards the superior direction (see image below).
+
+.. image:: /images/CoordinateSystem/LPS2.png
+ :width: 400px
+
+3D points, e.g., the isocenter in the ``pln`` struct or source and target points in the ``stf`` struct, directly follow the conventions of the LPS coordinate system: The first coordinate, e.g., ``pln.isoCenter(1)`` corresponds to the x coordinate (right-left direction).
+For the dose and CT cubes, which are stored as MATLAB 3D arrays, the second dimension corresponds to the x-coordinate (right-left direction), and the first dimension corresponds to the y-coordinate (anterior-posterior direction).
+This permutation is due to MATLAB's standard way of displaying two-dimensional matrices with the `image `_ command, which displays the first array dimension along the vertical direction.
+
+.. tip::
+
+ In short this means that coordiantes (x/y/z) correspond to a (j,i,k) indexing.
+
+ This is similar to the difference between MATLAB's `meshgrid `_ and `ndgrid `_ functions, where the first function uses the first dimension for the x-coordinate and the second dimension for the y-coordinate, while the second function uses the first dimension for the y-coordinate and the second dimension for the x-coordinate.
+
+.. _voxelCoords:
+
+World vs Cube System
+---------------------
+
+matRad differentiates between a world system and a cube system.
+
+Coordinates in the :ref:`ct ` struct as well as the plan isocenter, for example, are always given in world coordinates.
+
+Cube coordinates are defined on an image cube (e.g. the :ref:`ct.cube `).
+To enable fast access, they are defined such that the coordinates of the most right, anterior, inferior voxel center in the cube has the coordinates (``resolution.x`` / ``resolution.y`` / ``resolution.z``).
+Consequently, the most right, anterior, inferior corner of the most right, anterior, inferior voxel is **not** located at (0 | 0 | 0) but at (resolution.x/2 | resolution.y/2 | resolution.z/2).
+
+.. danger::
+
+ In versions prior to matRAd 3.1.0, the isocenter was given in the cube system. This was changed because during resampling of the dose grid, the isocenter often was different in the dose cubes coordinate system.
+
+Conversion between world coordinates, cube coordinates and voxel indices
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+matRad provides helper functions in the :mod:`geometry ` folder.
+
+- :func:`matRad_world2cubeCoords` converts world coordinates to cube coordinates.
+- :func:`matRad_cubeCoords2worldCoords` converts cube coordinates to world coordinates.
+- :func:`matRad_world2cubeIndex` converts world coordinates to voxel indices.
+- :func:`matRad_cubeIndex2worldCoords` converts voxel indices to world coordinates.
+
+There is no function to convert cube coordinates to voxel indices, as this is a simple operation:
+
+.. code-block:: matlab
+
+ %Get the indices from coordinates
+ coords = round(coords ./ [gridStruct.resolution.x gridStruct.resolution.y gridStruct.resolution.z]);
+
+ %Do the permutation
+ indices = coords(:,[2 1 3]);
+
+.. _rotation:
+
+Gantry and Couch Rotation
+-------------------------
+
+The rotation of the gantry (Φ) and the couch (θ) are defined as follows:
+
+- **Gantry:** Clockwise rotation around the z-axis
+- **Couch:** Counter-clockwise rotation around the y-axis
+
+The rotation matrix can be obtained with :func:`matRad_getRotationMatrix`.
+
+Simple gantry rotation:
+
+.. image:: /images/CoordinateSystem/RotatingGantry.gif
+ :width: 400px
+
+Simple couch rotation:
+
+.. image:: /images/CoordinateSystem/RotatingCouch.gif
+ :width: 400px
+
+Simultaneous couch and gantry rotation:
+
+.. image:: /images/CoordinateSystem/RotatingCouch+Gantry.gif
+ :width: 400px
diff --git a/docs/guide/dicomimport.rst b/docs/guide/dicomimport.rst
new file mode 100644
index 000000000..ab9cb2a98
--- /dev/null
+++ b/docs/guide/dicomimport.rst
@@ -0,0 +1,77 @@
+.. _dicomimport:
+
+================
+The DICOM import
+================
+
+Disclaimer
+==========
+
+Even though DICOM data is supposed to be highly standardized, it still features substantial variation. Consequently, it is very difficult for us to eliminate all bugs in matRad's DICOM import. As of June 2015, we have a beta version included in matRad which has been thoroughly tested using data from our center(s). We would like to remind all users to take utmost care when running matRad's DICOM import and double-check the imported CT data in the :ref:`CT struct ` and the imported structure sets in the :ref:`cst cell array `. If you do find any bugs, help us improve matRad's DICOM import and `drop us a line `_.
+
+Importing patient data
+======================
+
+1. `Preparing patient data for import <#step1>`_
+2. `Starting the import GUI <#step2>`_
+3. `Completing the import <#step3>`_
+4. `Checking the import <#step4>`_
+
+.. _step1:
+
+Step 1: Preparing patient data for import
+-----------------------------------------
+
+As of now, all ``*.dcm`` files need to be located in the same folder (no subfolders) for the import to work. That includes all CT images and the structure file(s). Dose series files enable you to directly import the corresponding dose distribution to your treatment plan. If you wish to include the treatment plan files and dose series files in your import, both need to be located in the same folder as well. It is possible to have DICOM data for multiple patients in this folder, as you are able to specify the patient, CT series, structure set, and treatment plan later during the import.
+
+.. _step2:
+
+Step 2: Starting the import GUI
+-------------------------------
+
+To start the import, you first need to add the matRad folder `dicom `_ to your path. You can do so either by *right-click* → *Add to Path* → *Selected Folders and Subfolders* or by typing ``addpath(genpath('dicom'))`` in your Command Window. ``genpath`` adds the subfolder *HLUT library* to your path, too.
+
+Now you have access to the matRad functions designated for the DICOM import. To start the GUI you can simply type ``matRad_importDicomGUI`` in your Command Window. If you already work with matRad and have matRadGUI open, you can also start the import GUI with the *Load DICOM* button.
+
+You should see something like this:
+
+.. image:: /images/dicomImport/dicomImportGUI_empty.png
+
+.. _step3:
+
+Step 3: Completing the import
+-----------------------------
+
+Now you can choose your patient directory. Simply click the *Browse* button in the right upper corner and navigate to the desired directory. After choosing a folder, it will directly be analyzed for different patients.
+
+The result will look something like this:
+
+.. image:: /images/dicomImport/dicomImportGUI_withPatients.png
+
+Now you can choose your patient, CT series, structure set, RT plan, and dose series. If there are several dose cubes referring to the same plan, you can decide to import just one, several, or all dose cubes.
+In the bottom left corner, you can see the resolution of the chosen image series. You can adjust these values to import an interpolated cube with your specified resolution. Downsampling the CT makes sense in order to restrict matRad's memory usage. If your image series contains non-equally spaced slices, you have to specify a resolution. Another option is to use the resolution of the dose grid by activating the check box *Use RT Dose grid* after choosing a dose series.
+Now you can click on *Import* and will see a progress bar pop-up.
+
+Your command window will show you the following output:
+
+.. image:: /images/dicomImport/dicomImportGUI_Output1.png
+.. image:: /images/dicomImport/dicomImportGUI_Output2.png
+
+If you import steering information from a proton or carbon treatment plan, you have to specify the base data of your machine as this information is not saved in DICOM files. Therefore, you will see a pop-up window in which you can navigate to and choose the correct base data for the beam quality you use. If you import steering information from a photon treatment plan, the generic photon base data will be selected automatically.
+
+After the import has finished, a 'Save as'-dialogue will open to save the imported data in a ``*.mat`` file.
+
+.. image:: /images/dicomImport/dicomImportGUI_savePatient.png
+
+.. _step4:
+
+Step 4: Checking the import
+---------------------------
+
+Objectives and constraints are not imported from DICOM files but default values will be assigned to them. If any structure is marked as *'tv'*, *'target'*, *'gtv'*, *'ctv'*, *'ptv'*, *'boost'*, or *'tumor'*, its VOI type will be set to *'TARGET'*, its priority to 1, its objective to *square deviation* with a penalty of 800 and a dose of 30 Gy. All other structures will be set to organs at risk (*OAR*) with a priority of 2.
+The default values for biological planning are set to ``alphaX = 0.1`` and ``betaX = 0.05`` for all structures.
+After importing and saving the imported files, you should check and adapt all objectives and constraints for your application.
+
+If you have imported a photon treatment plan, you can now adjust the base data to your own machine by adapting the :ref:`pln struct ` machine field.
+
+Now you can use this patient data set just like the ones provided with matRad.
diff --git a/docs/guide/gdosecalc.rst b/docs/guide/gdosecalc.rst
new file mode 100644
index 000000000..0094d484f
--- /dev/null
+++ b/docs/guide/gdosecalc.rst
@@ -0,0 +1,153 @@
+.. _dosecalc_guide:
+
+-----------------------------------
+Dose (influence matrix) calculation
+-----------------------------------
+
+matRad's dose influence matrix calculation algorithms are split into two parts: First we determine the irradiation geometry by generating the steering information for the desired beam setup. In a second step, we generate dosimetric information by pre-computing dose influence matrices for inverse planning.
+
+Steering information
+--------------------
+
+The steering information holds all geometric information about the irradiation within the :ref:`stf struct `. It is generated by calling :func:`matRad_generateStf`.
+
+The :ref:`stf struct ` uses both the LPS coordinate system and a beam's eye view coordinate system in [mm]. Coordinates in beam's eye view coordinate system are labeled accordingly; coordinates in LPS coordinate system do not have an extra label.
+
+Ray and bixel concept
+~~~~~~~~~~~~~~~~~~~~~
+
+The irradiation geometry is organized to a ray and bixel concept, which is schematically shown below.
+
+*Schematic visualization of the ray and bixel concept*
+
+.. image:: /images/rayBixelConcept.png
+
+From a virtual radiation source (yellow) the target volume (red) within the patient (green) is covered by equidistant rays (solid black). Note that only a two-dimensional cut through a three dimensional cone of rays is shown for clarity. In the isocenter plane (not shown) the distance of the individual rays corresponds to the bixel width (compare :ref:`pln struct `). For photons, the term bixel refers to a discrete rectangular fluence element (the limits of the individual bixels are shown in dashed black). Together, all bixels cover the entire target volume.
+
+For 3D IMPT for particles, we have an additional degree of freedom, namely the particle energy to be considered. This is accounted for during the stf-struct generation by determining the depth of the target volume on individual rays and placing spots (black dots) accordingly.
+
+More information about the ray and bixel concept (though with slight variations in nomenclature) can be found in sections 2.3 and 2.5 `Nill (2001) `_.
+
+Dose influence data
+-------------------
+
+Based on the steering information, matRad can compute dose for individual photon bixels or particle ion pencil beams. The required geometric and radiological distances facilitate the same set of matRad functions.
+
+Dose Calculation algorithms
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Starting with Version 3.1.0, matRad switched to an object-oriented Dose Engine concept. The dose engines are stored :mod:`matRad.doseCalc.+DoseEngines`, and all dose calculation algorithms are implemented as subclasses of the abstract class :class:`DoseEngines.matRad_DoseEngineBase`.
+These engines can be then used directly for configuration and dose calculation, or configured in ```pln.propDoseCalc`` to then be instantiated in the top-level functions :func:`matRad_calcDoseInfluence` or :func:`matRad_calcDoseForward` (see the page on the :ref:`pln-struct ` for more details).
+
+.. code-block:: matlab
+
+ % Example of how to use the dose engine directly
+ doseEngine = DoseEngines.matRad_PhotonPencilBeamSVDEngine(pln);
+ doseEngine.enableDijSampling = false; %Configure a property of the dose engine
+ dij = doseEngine.calcDoseInfluence(ct,cst,stf);
+
+ % Example for a configuration in pln.propDoseCalc
+ pln.propDoseCalc.engine = 'SVDPB'; %The engine is equivalent to the DoseEngines "shortName"
+ pln.propDoseCalc.enableDijSampling = false; %Configure the property in pln.propDoseCalc
+ dij = matRad_calcDoseInfluence(ct, cst, stf, pln);
+
+Dose Engines implement the abstract property :attr:`DoseEngines.matRad_DoseEngineBase.possibleRadiationModes` to tell their availability for the certain radiation modalities.
+
+Given a ``pln`` with set ``pln.radiationMode`` (and optionally ``pln.machine``), the static function :meth:`DoseEngines.matRad_DoseEngineBase.getAvailableDoseEngines` can be used to retrieve a list of available dose engines for the given radiation mode and machine.
+
+
+External Beam Therapy
+~~~~~~~~~~~~~~~~~~~~~
+
+matRad supports dose calculation for photons and charged particles (protons, helium, carbon ions) in external beam therapy.
+
+matRad's standard algorithms are based on the pencil-beam model, which is a fast and efficient way to compute dose distributions in a patient CT. The pencil beam model assumes that the dose at a certain voxel can be computed as the product of a depth-dependent part and a lateral part, which are computed separately. The model uses a pencil-beam kernel of an infinitely narrow beam, which is convolved with the primary fluence to compute the dose distribution. The pencil beam model is a fast and efficient way to compute dose distributions in a patient CT, but it is not as accurate as Monte Carlo simulations.
+
+The class :class:`DoseEngines.matRad_PencilBeamEngineAbstract` implements the abstract base class for all pencil beam dose engines, providing functionality for iterating through the "rays and bixels, geometry computations for distances and transformations like rotations, as well as filling of the sparse dose influence matrix.
+
+Monte Carlo dose calculation algorithms subclass from :class:`DoseEngines.matRad_MonteCarloEngineAbstract`, which provides less functionality than the base class for pencil beam algorithms, since Monte Carlo algorithms are usually integrated as third-party libraries and thus need individual implementations anyway.
+
+Ray Tracing
+^^^^^^^^^^^
+
+Especially for pencil-beam algorithms, but also for other things like spot placement, matRad implements a voxel raytracing algorithm in :func:`matRad_siddonRayTracer` according to `Siddon (1985) Medical Physics `_. Dose calculation algorithms can use :func:`matRad_rayTracing` to perform a volumetric tracing to obtain an image of the water equivalent depth from a source,according to `Siggel (2012) Physica Medica `_.
+
+Geometric distances from the lateral distances to the central ray are computed by standard matrix vector algebra in :meth:`DoseEngines.matRad_PencilBeamEngineAbstract.calcGeoDists`.
+
+Photons
+^^^^^^^
+
+Dose Calculation Algorithm
+##########################
+
+matRad's standard algorithm for photon dose calculation is a singular value decomposed pencil beam algorithm implemented according to `Bortfeld et al. (1993) Medical Physics `_. It is implemented in :class:`DoseEngines.matRad_PhotonPencilBeamSVDEngine`. A more detailed description of the inner workings of the algorithm can also be found in the diploma thesis of Martin Siggel "Entwicklung einer schnellen Dosisberechnung auf Basis eines Pencil-Kernel Algorithmus für die Strahlentherapie mit Photonen" (Universität Heidelberg, 2008) which is available for download `here `__.
+
+The dose delivered to a certain voxel *i* from bixel *j* is stored as dose influence matrix in the :ref:`dij struct ` using MATLAB's built-in double precision sparse matrix format.
+
+An experimental Monte Carlo dose engine based on a the reimplementation `ompMC `_ of the `EGSnrc `_ Monte Carlo code by Edgardo Doerner is available in :class:`DoseEngines.matRad_PhotonOmpMCEngine` class. It is not yet fully functional, especially the source characteristics are not fully compatible with the machine files / base data.
+
+Base data / Machine
+###################
+
+The necessary measured base data, namely the kernel functions as described by `Bortfeld et al. (1993) Medical Physics `_ are supplied for a 6MV LINAC and stored in `photons_Generic.mat `_ as MATLAB piecewise polynomial.
+
+matRad's photon dose engine is calibrated such that a bixel intensity of all ones, i.e., ``w = ones(stf.totalNumOfBixels,1)``, yields a dose of roughly 1Gy in 5cm depth for a 5cm by 5cm field at SSD = 900mm. If you want to reproduce this, you can download a set of stf and pln structures that work with the TG119 phantom `here `_.
+
+Approximations
+##############
+
+For the photon dose calculation, we assume a uniform primary fluence. While this should not have any impact on the resulting dose distributions, as we allow for intensity-modulation, this reduces the computation time because we only have to perform one convolution and we can compute the individual contributions from different bixels with the same kernel matrices (kernel1Mx, kernel2Mx, kernel3Mx). An extension to inhomogeneous primary fluences is easily possible.
+
+To model a virtual photon source with finite size, the primary fluence is convolved with a Gaussian filter. The size of this filter is determined by the measured penumbra at isocenter, which is related to the source size as depicted in the following images from `Martin Siggel `_ (`Siggel M. Entwicklung einer schnellen Dosisberechnung auf Basis eines Pencil-Kernel Algorithmus für die Strahlentherapie mit Photonen. Diploma Thesis 2008, Universität Heidelberg `_):
+
+.. image:: /images/source_penumbra.png
+.. image:: /images/penumbra_gaussian_convolution.png
+
+matRad initially used a hardcoded value of 5mm for the measured penumbra width. From version 2.10.1 on, the value can also be stored in the photon base data file so that it can also be translated to the virtual source size for, for example, Monte Carlo simulations.
+
+Computational bottlenecks
+#########################
+
+For the photon dose calculation, there are three main possibilities to speed up computations and reduce memory consumption.
+
+1. It is possible to reduce the spatial resolution of the dose calculation in the patient CT by downsampling the CT data upon import. If you do this as a post-processing step, be aware you need to adjust the binary segmentations in the cst cell array accordingly.
+2. You can increase the variable ``pln.bixelWidth`` in the `matRad script `_ which effectively reduces the number of bixels which have to be computed approximately quadratically.
+3. You can reduce the radius around the central ray, around which dose is computed by adjusting the variable ``lateralCutOff`` in ``pln.propDoseCalc``. Currently this variable is already set to 50mm.
+
+Particles
+^^^^^^^^^
+
+Dose calculation algorithm
+##########################
+
+matRad's default conventional pencil beam model for particle dose calculations is implemented in :class:`DoseEngines.matRad_ParticleHongPencilBeamEngine` and similar to the work of `Hong et al. (1996) `_. The dose at a particular voxel is given as the product of a depth dependent part and a lateral part. For the depth dependent part, matRad uses tabulated depth dose curves for individual particle energies. For lateral beam broadening, matRad uses a depth-dependent sigma of a Gaussian profile, which is also tabulated versus depth for all available beam energies.
+
+The dose delivered to a certain voxel *i* from bixel *j* is stored as dose influence matrix in the :ref:`dij struct ` using MATLAB's built-in double precision sparse matrix format.
+
+α- and β-matrix pre-computations
+################################
+
+For carbon ions, matRad also enables the computation of α- and β-matrices that can be used to compute three-dimensional dose weighted α- and β-distributions, which can in turn be used to compute three-dimensional RBE distributions during inverse planning.
+
+matRad only models variations of α and β with depth in `matRad_calcLQParameter `_. Potential dependencies in lateral direction are not explicitly modeled.
+
+Base data
+#########
+
+The base data files `protons_Generic `_ and `carbon_Generic `_ required for particle dose calculation include depth dose curves and tabulated lateral beam widths (as Gaussian sigmas) for a library of different energies. The proton base data has been computed based on an analytical approximation for the Bragg curve (`Bortfeld (1997) `_) and Highland's approximation for multiple Coulomb scattering (`Gottschalk (1993) `_). The carbon ion base data has been Monte Carlo simulated for an idealized beam line without monitoring devices. Besides this physical information, the carbon ion base data also includes α and β tables that have been computed based on LEM IV. Within the \*.mat files, the depth is stored in [mm], α tables are stored in [1/Gy], β tables are stored in [1/Gy^2], and the integrated depth dose distribution is stored in [MeV cm^2 /(g \* primary)]. Upon dose calculation, the integrated depth dose is converted to [Gy mm^2 /(1e6 primaries)] with a linear scaling in the function `matRad_calcParticleDoseBixel.m `_. Given that the lateral components of the dose calculation have the unit [1/mm^2], the weight of the pencil beams in matRad directly corresponds to the number of particles in [1e6] while the dose is given in [Gy].
+
+More detailed information on the structure of a particle base data file is given :ref:`here `!
+
+Approximations
+##############
+
+Besides the standard approximations made by pencil beam algorithms (i.e. factorization of lateral and depth-dependent part, ray tracing only on central ray), we do not make any approximations for particle dose calculation.
+
+Computational bottlenecks
+#########################
+
+For the particle dose calculation, there are three main possibilities to speed up computations and reduce memory consumption.
+
+1. It is possible to reduce the spatial resolution of the dose calculation in the patient CT by downsampling the CT data upon import. If you do this as a post-processing step, be aware you need to adjust the binary segmentations in the cst cell array accordingly.
+2. You can increase the variable ``pln.propStf.bixelWidth`` in the :scpt:`matRad script ` which effectively reduces the number of pencil beams which have to be computed approximately quadratically.
+3. You can reduce the radius around the central ray where dose is computed by adjusting the :attr:`DoseEngines.matRad_PencilBeamEngineAbstract.dosimetricLateralCutOff` property.
diff --git a/docs/guide/get.rst b/docs/guide/get.rst
new file mode 100644
index 000000000..eb1c9aab0
--- /dev/null
+++ b/docs/guide/get.rst
@@ -0,0 +1,56 @@
+.. include:: ../includes/logo.rst
+
+.. _get_code:
+
+########################################
+Get a local copy of |matRad_logo_header|
+########################################
+
+To get a local copy of `matRad `_ you have two options:
+
+.. contents::
+ :depth: 1
+ :local:
+
+Cloning the |matRad_logo_header2| Repository
+--------------------------------------------
+
+We encourage everybody working with the code to get familiar with ``git``. Using the git workflow does not allow more sophisticated code development and collaboration with the |matRad_logo| development team, but also facilitates keeping a history of changes and integrating updates regularly. If you have never worked with a git repository before, you might want to have a look at the `github guides `_ first and rely on a software with a graphical user interface (such as GitHub Desktop) to manage your local |matRad_logo| copy.
+
+If you follow the instructions on cloning the repository, you will not only get a local copy of the |matRad_logo| source ode, but get a copy (a "clone") of the entire repository, including all its history. This is part of the decentralized philosophy of git, where each copy is its own repository with which you can work independently, and which you can later synchronize with the original repository (or others). The originial remote repository, in this case ``_ (HTTPS) or ``_ (SSH), is usually refered to as "origin" or "upstream" repository. git provides the necessary syncing capabilities as "pulling" and "pushing" from/to a remote repository.
+
+If you plan to contribute and/or publish your changes on GitHub, follow below instructions to create a fork. If you only plan to pull some updates from the main repository, you can skip the forking step and directly clone the repository. Nothing will be lost then: If you decide later to contribute, you can always delay creation of a fork to contribute to the main repository.
+
+
+Forking |matRad_logo_header3|
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+A fork serves as a second personal online copy of the repository within your GitHub Account. Forks are mainly used to propose changes to the original repository, or to use it as a starting point for a derived project. Forking a repository allows you to freely experiment with changes without affecting the original project, and it is a common practice in open source software development.
+
+.. note::
+
+ GitHub Forks are usually the only way to contribute to a GitHub project within normal git workflow practices, as most upstream repositories (including the |matRad_logo| repository) will not allow you to push changes directly to the main repository, and there are no other mechanisms to propose changes from other remote repositories.
+
+Forks can be created directly from the repository main page on GitHub. To create a fork of the |matRad_logo| repository, follow these steps:
+Afterwards your fork of |matRad_logo| will be available under ``https://github.com/YOURGITHUBUSERNAME/matRad``.
+
+Cloning |matRad_logo_header3|
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+You can `clone `_ either the main repository or your fork of matRad. With the command line, you can clone the repository with::
+
+ git clone --recurse-submodules https://github.com/e0404/matRad.git matRad
+
+This will clone the main repository in the folder ``matRad``. If you want to clone your fork, replace ``e0404`` in the URL with your GitHub Username. The ``--recurse-submodules`` option is not necessary, but will also clone other dependencies of |matRad_logo| (like our unit testing framework).
+
+The repository you clone with the command above will be referred to as "origin" by git by default. You can add further remotes (like your fork) with::
+
+ git remote add upstream https://github.com/myaccount/matRad.git
+
+
+Downloading the matRad.zip folder
+---------------------------------
+
+To get a copy of |matRad_logo| you can either download the \*.zip folder from the `matRad repository on Github `_ or use `this link `_.
+
+Once you downloaded the *matRad.zip* folder you can unzip the files to your desired location.
diff --git a/docs/guide/guioverview.rst b/docs/guide/guioverview.rst
new file mode 100644
index 000000000..4cc86f73d
--- /dev/null
+++ b/docs/guide/guioverview.rst
@@ -0,0 +1,173 @@
+.. _guioverview:
+
+##############################################
+Overview of the graphical user interface (GUI)
+##############################################
+
+The GUI is used for the treatment plan visualization and the adjustment of the plan and optimization parameters. It is possible to execute the matRad script using only the GUI (see :ref:`run_gui`).
+
+Overview of the GUI
+===================
+
+The matRad GUI consists of 6 main sections:
+
+.. list-table::
+ :header-rows: 1
+
+ * - Section
+ - Content
+ * - :ref:`Workflow `
+ - Includes the main steps that need to be executed for treatment planning.
+ * - :ref:`Plan `
+ - Here the plan parameters like beam direction and radiation mode can be selected.
+ * - Command Window
+ - Here the output of the Command Window is displayed inside the GUI.
+ * - :ref:`Objectives & constraints `
+ - Using the optimization parameters the constraints of the VOIs can be adjusted.
+ * - :ref:`Visualization `
+ - Here the visualization can be adjusted to show different planes/slices of plot types.
+ * - Viewing
+ - The information specified in the Visualization Parameters is displayed in this section.
+
+.. image:: /images/GUI-Guide_optimizedGUIScreenshot.png
+ :width: 650px
+
+.. _workflow:
+
+Workflow
+========
+
+In the Workflow section, the patient data is initially loaded. You can also start the :ref:`dicom import ` from here. After the adjustment of all parameters, the dose calculation and the fluence optimization can be started from here:
+
+.. image:: /images/GUI-Guide_workflowGUIScreenshot.png
+
+.. _planParameters:
+
+Adjustment of the plan parameters
+=================================
+
+In this section, the plan parameters are adjusted before calculating the dose-influence-matrix.
+
+.. list-table::
+ :header-rows: 1
+
+ * - Parameter
+ - Description
+ * - bixel width
+ - *Photons:* width of a photon bixel. *Particles:* lateral spot distance. Default value: 5 mm
+ * - Gantry angle
+ - Here the set of desired gantry angles (in degree) can be specified. For the separation of the values you can either use ',' or a space ' '.
+ * - Couch angle
+ - Here the set of desired couch angles (in degree) can be specified. For the separation of the values you can either use ',' or a space ' '. Make sure that you always have the same amount of couch and gantry angles.
+ * - Radiation mode
+ - You can choose between photons, protons and carbon ions.
+ * - Machine
+ - Actual machine name as string to identify the base data set during runtime.
+ * - IsoCenter
+ - Use this to set the isocenter (in mm).
+ * - # Fractions
+ - Here the desired number of fractions can be specified.
+ * - Biological optimization
+ - For carbon ions, you can apply a biological optimization. You can choose between an optimization of the biological effect (``effect``) or the RBE-weighted dose (``RBExD``).
+ * - Run Sequencing
+ - Check this if you want to run a MLC sequencing. The number of stratification levels can be adjusted.
+ * - Run Direct Aperture Optimization
+ - Check this if you want to run an additional direct aperture optimization.
+
+.. image:: /images/GUI-Guide_planParametersGUIScreenshot.png
+
+.. _optParameters:
+
+Adjustment of the optimization parameters
+=========================================
+
+The optimization parameters regarding the volumes of interest (VOIs) are stored in the variable ``cst``. For more detailed information about the parameters stored in the cell, please refer to the :ref:`documentation of the cst-cell `. Using the GUI, you can adjust the settings. To add or delete volumes, you can use the "+" and "-" buttons.
+
+.. list-table::
+ :header-rows: 1
+
+ * - Field
+ - Description
+ * - VOI name
+ - Via a drop-down menu, you can select a VOI by clicking its name.
+ * - VOI type
+ - You can specify whether the VOI is an organ at risk (OAR) or a target volume.
+ * - OP
+ - *Overlap*. This value defines how overlapping structures are handled during optimization. Consider two structures A and B with priorities :math:`p_A` and :math:`p_B`. If A and B both include voxel *i*, voxel *i* will be treated to belong only to structure A if :math:`p_A < p_B`. If :math:`p_A = p_B` the voxel will be considered for both structures. An extension to more than two structures is trivial.
+ * - Function
+ - *Objective Function*. This field allows you to specify how the VOI will be considered during the optimization. You can choose between *Squared Underdosing*, *Squared Overdosing*, *Squared Deviation*, *Mean Dose*, *EUD*, *Max DVH*, *Min DVH*, *DVH constraint*, *Min/Max dose constraint* or *mean dose constraint*. You can find more detailed information about this in the section 'Dose objectives' of the page: :ref:`The cst cell `.
+ * - p
+ - *Penalty*. For the objective function value, a weighted sum is calculated. The penalty value corresponds to the weighting factor for this VOI with respect to the defined constraint (e.g. overdosing). By adjusting this value, you can stress the importance of these constraints with respect to each other.
+ * - Parameters
+ - For *Squared Underdosing*, *Squared Overdosing* and *Squared Deviation* this value corresponds to the threshold dose above/below which the penalty will apply. For the *Mean Dose* option, this value is not needed, as the mean dose within this VOI will be minimized. For the *EUD* method, the parameter corresponds to the exponent.
+
+.. _gui-visualization:
+
+Visualizing treatment plans
+===========================
+
+After the optimization, the treatment plan can be visualized within the GUI. Using the visualization parameters, you can change the view. The radio buttons can be used to turn on or off, among others, the plotting of contours, dose (isolines), and isoline labels.
+
+.. image:: /images/doseVisParameter.png
+
+Display options
+---------------
+
+.. list-table::
+ :header-rows: 1
+
+ * - Type of plot
+ - Display option
+ - Plane
+ - Resulting image
+ * - **intensity**
+ - **Dose**
+ - axial
+ - .. image:: /images/doseVisAxialIntensity.png
+ * -
+ -
+ - sagittal
+ - .. image:: /images/doseVisSagitalIntensity.png
+ * -
+ -
+ - coronal
+ - .. image:: /images/doseVisCoronalIntensity.png
+ * -
+ - **effect**
+ - axial
+ - .. image:: /images/doseVisAxialEffect.png
+ * -
+ - **RBEWeightedDose**
+ - axial
+ - .. image:: /images/doseVisAxialRBExD.png
+ * -
+ - **RBE**
+ - axial
+ - .. image:: /images/doseVisAxialRBE.png
+ * -
+ - **alpha**
+ - axial
+ - .. image:: /images/doseVisAxialAlpha.png
+ * -
+ - **beta**
+ - axial
+ - .. image:: /images/doseVisAxialBeta.png
+ * -
+ - **RBETruncated10Perc**
+ - axial
+ - .. image:: /images/doseVisAxialRBEtruncated.png
+ * - **profile**
+ -
+ - **lateral**
+ - .. image:: /images/doseVisLateralProfile.png
+ * -
+ -
+ - **longitudinal**
+ - .. image:: /images/doseVisLongitudinalProfile.png
+
+DVH
+---
+
+To draw a DVH of the current treatment plan and display some quality indicators you can click the *Show DVH/QI* button:
+
+.. image:: /images/DVHVisScreenshot.png
diff --git a/docs/guide/index.rst b/docs/guide/index.rst
new file mode 100644
index 000000000..23eceee44
--- /dev/null
+++ b/docs/guide/index.rst
@@ -0,0 +1,71 @@
+.. |matRad_logo| image:: ../../matRad/gfx/matRad_logo.png
+ :width: 80 px
+ :alt: matRad
+ :target: https://www.matRad.org
+
+.. _techdoc:
+
+===============
+Technical Guide
+===============
+
+|matRad_logo| features a very modular and sequential design which is reflected in the matRad script.
+After importing your own data or loading one of the provided cases, you can start working with matRad dose calculation and optimization modules.
+The four main parts of the matRad workflow are
+
+.. image:: /images/matRad_steps.png
+
+Information about the individual modules is given in the following sections:
+
+.. toctree::
+ :maxdepth: 2
+ :hidden:
+
+ plan
+ gdosecalc
+ planopt
+ visualization
+
+Global configuration with :ref:`MatRad_Config `
+
+:ref:`Set treatment plan parameters `
+
+:ref:`Dose influence matrix calculation `
+
+:ref:`Fluence optimization ` (potentiall followed by sequencing)
+
+:ref:`Visualization `
+
+Important variables and data structures
+---------------------------------------
+
+.. toctree::
+ :maxdepth: 1
+ :glob:
+
+ ../datastructures/*
+ ../datastructures/basedata/*
+
+Additional information
+----------------------
+
+.. toctree::
+ :maxdepth: 2
+ :hidden:
+
+ get
+ guioverview
+ coords
+ dicomimport
+ octave
+
+
+:ref:`How to run matRad with Octave `
+
+:ref:`matRad coordinate system `
+
+:ref:`The CORT dataset `
+
+:ref:`DICOM import `
+
+:ref:`Minimum system requirements `
diff --git a/docs/guide/octave.rst b/docs/guide/octave.rst
new file mode 100644
index 000000000..ce596529a
--- /dev/null
+++ b/docs/guide/octave.rst
@@ -0,0 +1,34 @@
+.. _octave:
+
+=============================
+How to run matRad with Octave
+=============================
+
+We try to keep matRad's core compatible with `GNU Octave `_ to allow users to run matRad without a MATLAB license. Even the graphical user interface (GUI) can, with limitations, be used. To maintain compatibility, nearly all tests are currently run on GNU Octave 6 in addition to MATLAB.
+
+One difficulty with running matRad in GNU Octave is the optimization module relying on `Ipopt `_ with a MEX interface.
+
+While we provide some GNU Octave mex files for a few Windows versions, the IPOPT mex files usually needs to be compiled from source with Octave. The steps to compile the Ipopt interface with Octave are presented below.
+
+Installing GNU Octave
+---------------------
+
+It is recommended to use matRad with the latest stable release of `GNU Octave `_. matRad has been mainly tested with GNU Octave versions 6 in Linux, but also newer versions seem to work. When installing Octave from the package manager of a Linux distribution, it is necessary to also install the development files to provide the command ``mkoctfile`` required to build the interface to Ipopt.
+
+By default, Octave is distributed with 32-bit indexing on Linux, while for Windows also a 64bit indexing installer is available. GNU Octave can also be compiled from source with 64-bit indexing. However, building Octave with 64-bit indexing is rather laborious requiring the compilation of several external libraries to enable 64-bit indexing. `Click here `_ for further details on how to compile GNU Octave with 64-bit indexing. Notice that the 64-bit indexing option of Octave is still experimental and that special care should be taken when linking the libraries to avoid segmentation faults.
+
+While matRad can be used with Octave compiled either with 32-bit or 64-bit indexing, some clinically relevant treatment planning scenarios may require an influence matrix, which exceeds the maximum array size available with 32-bit indexing.
+
+IPOPT
+-----
+
+Since version 3.1.0, the `IPOPT folder `_ in matRad contains precompiled mex files for certain Octave versions in Windows. While in MATLAB, mex files have an extension naming scheme depending on the operating system and are often compatible across multiple MATLAB versions, we have oberserved that this is not true for GNU Octave, where a mex file just always uses "mex" as extension. Thus matRad uses a dedicated naming scheme to store Octave mex files as "mexoct" + version + os + arch. For Octave 6.4.0 on Windows, for example, the filename would be ipopt.mexoct640w64. When running IPOPT from Octave, matRad will copy this file to ipopt.mex to call it.
+
+The MATLAB interface of Ipopt distributed with matRad is linked against a MATLAB-specific library for the linear solver MA57. An equivalent interface of Ipopt for GNU Octave should be compiled from source. It requires the installation of the `Ipopt `_ library along with the corresponding header files. Since the linear solvers are not distributed along with Ipopt, they should be obtained from third-party software. Different linear solvers libraries can be used including `HSL_MA57 `_, `MUMPS `_ and others. In addition to compiling Ipopt and the linear solvers from source, Ipopt linked to MUMPS is typically available from the package manager of the Linux distributions. Ipopt version 3.12.8 linked with the linear solvers HSL_MA57 and MUMPS has been successfully applied in matRad with GNU Octave.
+
+Compiling Octave interface of Ipopt
+-----------------------------------
+
+The source code of Ipopt provides the source files to compile the original MATLAB interface of Ipopt distributed with matRad. In order to compile the equivalent interface for GNU Octave, it is recommended to use the `interface rewritten by Enrico Bertolazzi `_. The rewritten interface requires GNU Octave version 4.2 or above. The Octave interface of Ipopt can be compiled using the ``mkoctfile`` command with the option to produce MEX files.
+
+Since version 3.1.0, matRad provides scripts to help with compilation of the Ipopt interface for GNU Octave. The scripts target Windows platforms and can be executed from within the MinGW environment installed with GNU Octave by using the ``cmdshell.bat`` in Octave's root folder. These scripts are located in the `thirdParty/IPOPT` folder and can also be easily adapted by linux users.
\ No newline at end of file
diff --git a/docs/guide/plan.rst b/docs/guide/plan.rst
new file mode 100644
index 000000000..d2e3dc00b
--- /dev/null
+++ b/docs/guide/plan.rst
@@ -0,0 +1,26 @@
+.. _plan:
+
+===========================
+How to configure your plan?
+===========================
+
+Before you can start with dose calculation and inverse planning in matRad you need to set a couple of general treatment plan parameters.
+
+Within the :scpt:`main matRad script `, this corresponds to the first cell. Within the GUI, these settings can be adjusted interactively.
+
+.. literalinclude:: ../../matRad.m
+ :lines: 18-53
+ :lineno-match:
+ :language: matlab
+
+After import of patient data in matRad's native format, the desired settings are specified in the :ref:`pln struct `.
+
+Note that besides some basic parameters (like number of fractions or the machine), there are workflow-specific property structures in ``pln.prop*``. These structures contain the parameters for the different workflows, such as the dose influence matrix calculation, optimization, and sequencing. matRad will instatiate the appropriate algorithm based on these configurations and try to override their properties.
+
+The :scpt:`matRad.m` script uses the :mod:`top-level API `. The top-level functions are designed to take the main data structures as input and configure the corresponding workflow step via the ``pln`` using the attribute dictionaries ``pln.prop*``:
+
+.. include:: ../includes/planapi.rst
+
+Please see the corresponding page about the :ref:`pln struct ` for further information.
+
+Note that matRad comes with sample patient data from the `CORT dataset: common optimization for radiation therapy `_ so you can directly play around with all functionalities. More information can be found on the :ref:`dedicated CORT dataset section `.
\ No newline at end of file
diff --git a/docs/guide/planopt.rst b/docs/guide/planopt.rst
new file mode 100644
index 000000000..fdb85ba7f
--- /dev/null
+++ b/docs/guide/planopt.rst
@@ -0,0 +1,44 @@
+.. _plan_opt:
+
+====================
+Fluence Optimization
+====================
+
+The goal of the fluence optimization is to find a set of bixel/spot weights that yield the best possible dose distribution according to the clinical objectives and constraints underlying the radiation treatment.
+
+For mathematical optimization, these clinical objectives and constraints have to be translated into mathematical objectives and constraints. matRad supports the mathematical optimization of a weighted sum of objectives to help finding an optimal trade-off between adequate target coverage and normal tissue sparing for an individual patient as well as the formulation of constraints. The individual objectives and constraints are defined per structure, can be chosen by the user.
+
+The overall fluence optimization process is coordinated by the top-level function :func:`matRad_fluenceOptimization`.
+
+Since Version 2.10.0
+--------------------
+
+*Since version 2.10.0 objectives and constraints are implemented with an object oriented approach. For the old format, see further down below.*
+
+At the moment, matRad allows for objectives and constraints based on dose. Each objective and constraint is defined in a class derived from :class:`matRad_DoseOptimizationFunction`. Objectives and Constraints are distinguished by the abstract subclasses :class:`DoseObjectives.matRad_DoseObjective` & :class:`DoseConstraints.matRad_DoseConstraint` within the respective package folders. This enables the easy implementation of new (dose-based) constraints & objectives by writing your own class, inheriting from those and implementing the therein declared interface, i.e. the parameter definition, and respective objective/constraint function and its gradient/jacobian.
+New objectives/constraints are then automatically recognized also in the GUI.
+
+Currently, the available objectives are found in the :mod:`matRad.optimization.+DoseObjectives` package and the available constraints in the :mod:`matRad.optimization.+DoseConstraints` package. The available objectives and constraints are listed in the following tables:
+
+.. include:: ../includes/objtable.rst
+
+.. include:: ../includes/constrtable.rst
+
+This is extended to the implementation of optimization problems and :mod:`optimizers `. An optimization problem :class:`matRad_OptimizationProblem` combines the single objectives into an objective function and organizes the constraint structure to give a standard optimization problem to the optimizer. matRad implements optimizers as derived classes of :class:`matRad_Optimizer` and defaults to the `IPOPT `_ package for large scale non-linear optimization which is included via a MEX file and interfaced in :class:`matRad_OptimizerIPOPT`. MATLAB's proprietary fmincon support is added in :class:`matRad_OptimizerFmincon`, other optimizers may be added as well. So far, only non-linear constrained optimization is supported by :class:`matRad_OptimizationProblem` and for optimizers.
+Optimizers can be changed by setting ``pln.propOpt.optimizer``.
+The :class:`matRad_OptimizationProblem` class also enables to implement advanced planning problems as subclasses, like direct aperture optimization as implemented in :class:`matRad_OptimizationProblemDAO`.
+
+Before Version 2.10.0
+---------------------
+
+The objectives and constraints are stored as a :ref:`dose objective struct ` within the :ref:`cst cell `. The objectives and constraints can be set including all necessary parameters via the :ref:`matRad GUI `. All functions involved in the optimization process are located in a subfolder called "optimization" within the matRad root folder. matRad relies on the `IPOPT `_ package for large scale non-linear optimization which is included via a MEX file. IPOPT requires call back functions for objective function, gradient, constraint, and Jacobian evaluation. We use the wrapper functions ``matRad_objFuncWrapper.m``, ``matRad_gradFuncWrapper.m``, ``matRad_constFuncWrapper.m``, and ``matRad_jacobFuncWrapper.m`` to coordinate the evaluation of all defined objectives and constraints.
+
+Optimization based on dose, effect, and RBE weighted dose
+---------------------------------------------------------
+
+All optimization functionalities work equally for optimization processes based on physical dose as well as biological effect `Wilkens & Oelfke (2006) `_ and RBE-weighted dose according to `Krämer & Scholz (2006) `_. The biological effect and the RBE-weighted dose are calculated with α and β base data that has been calculated according to the local effect model IV. α and β tables are available as part of the base data set `carbon_Generic `_ which is provided with the matRad release.
+
+Direct aperture optimization
+----------------------------
+
+For photons, matRad also features an experimental direct aperture optimization that largely follows the implementation described in `Wild et al. (2015) `_ which is based on `Bzdusek et al. (2009) `_ and (with some modification) `Unkelbach & Cassioli (2012) `_.
diff --git a/docs/guide/visualization.rst b/docs/guide/visualization.rst
new file mode 100644
index 000000000..30c96ec41
--- /dev/null
+++ b/docs/guide/visualization.rst
@@ -0,0 +1,30 @@
+.. _visualization:
+
+=============
+Visualization
+=============
+
+Graphical User Interface
+------------------------
+
+At any point, it is possible to start the graphical user interface by entering
+
+.. code-block:: matlab
+
+ matRadGUI
+
+in the command window. The GUI will automatically check your base workspace and recognizes your current planning step. Data will be displayed, according to the detected planning step. Please note that a dose cube will be displayed not until you have finished an optimization.
+
+It is possible to adjust the plot to your needs in the lower left area of the GUI. For instance, it is possible to switch to a longitudinal profile plot of the central beam axis.
+
+Plotting tools
+--------------
+
+There's a number of tools to visualize results from the command line or per script.
+
+* The top-level function :func:`matRad_planAnalysis` provides a convenient way to visualize the dose distribution and DVHs of a plan. It can be used in the command line or in scripts, and it automatically detects the current planning step and displays the relevant data.
+* :class:`matRad_ViewingWidget` only opens the Viewer part of the GUI for quick visualization.
+* :func:`matRad_plotSlice` can be used to plot a single slice of the dose distribution with underlying CT and many configuration options.
+* :func:`matRad_showDVH` can be used to plot DVHs of a plan.
+
+
diff --git a/docs/images/CoordinateSystem/LPS2.png b/docs/images/CoordinateSystem/LPS2.png
new file mode 100644
index 000000000..f821cb6cc
Binary files /dev/null and b/docs/images/CoordinateSystem/LPS2.png differ
diff --git a/docs/images/CoordinateSystem/LPScoordinates.png b/docs/images/CoordinateSystem/LPScoordinates.png
new file mode 100644
index 000000000..06b01244d
Binary files /dev/null and b/docs/images/CoordinateSystem/LPScoordinates.png differ
diff --git a/docs/images/CoordinateSystem/RotatingCouch+Gantry.gif b/docs/images/CoordinateSystem/RotatingCouch+Gantry.gif
new file mode 100644
index 000000000..ba484d0e7
Binary files /dev/null and b/docs/images/CoordinateSystem/RotatingCouch+Gantry.gif differ
diff --git a/docs/images/CoordinateSystem/RotatingCouch.gif b/docs/images/CoordinateSystem/RotatingCouch.gif
new file mode 100644
index 000000000..b8ceab39d
Binary files /dev/null and b/docs/images/CoordinateSystem/RotatingCouch.gif differ
diff --git a/docs/images/CoordinateSystem/RotatingGantry.gif b/docs/images/CoordinateSystem/RotatingGantry.gif
new file mode 100644
index 000000000..1ffd3e467
Binary files /dev/null and b/docs/images/CoordinateSystem/RotatingGantry.gif differ
diff --git a/docs/images/CoordinateSystem/RotatingGantry.webm b/docs/images/CoordinateSystem/RotatingGantry.webm
new file mode 100644
index 000000000..560a36bbe
Binary files /dev/null and b/docs/images/CoordinateSystem/RotatingGantry.webm differ
diff --git a/docs/images/DKFZ_Logo1.png b/docs/images/DKFZ_Logo1.png
new file mode 100644
index 000000000..5ce13e042
Binary files /dev/null and b/docs/images/DKFZ_Logo1.png differ
diff --git a/docs/images/DVHScreenshot.png b/docs/images/DVHScreenshot.png
new file mode 100644
index 000000000..d2fd14cde
Binary files /dev/null and b/docs/images/DVHScreenshot.png differ
diff --git a/docs/images/DVHVisScreenshot.png b/docs/images/DVHVisScreenshot.png
new file mode 100644
index 000000000..2fe0280c5
Binary files /dev/null and b/docs/images/DVHVisScreenshot.png differ
diff --git a/docs/images/GUI-Guide_dijOutputScreenshot.png b/docs/images/GUI-Guide_dijOutputScreenshot.png
new file mode 100644
index 000000000..20445f8d1
Binary files /dev/null and b/docs/images/GUI-Guide_dijOutputScreenshot.png differ
diff --git a/docs/images/GUI-Guide_dijProgressBarScreenshot.png b/docs/images/GUI-Guide_dijProgressBarScreenshot.png
new file mode 100644
index 000000000..37ee4ad68
Binary files /dev/null and b/docs/images/GUI-Guide_dijProgressBarScreenshot.png differ
diff --git a/docs/images/GUI-Guide_emptyGUIScreenshot.png b/docs/images/GUI-Guide_emptyGUIScreenshot.png
new file mode 100644
index 000000000..03ee40770
Binary files /dev/null and b/docs/images/GUI-Guide_emptyGUIScreenshot.png differ
diff --git a/docs/images/GUI-Guide_fluenceOptOutputScreenshot.png b/docs/images/GUI-Guide_fluenceOptOutputScreenshot.png
new file mode 100644
index 000000000..48eb0f894
Binary files /dev/null and b/docs/images/GUI-Guide_fluenceOptOutputScreenshot.png differ
diff --git a/docs/images/GUI-Guide_fluenceOptOutputScreenshot2.PNG b/docs/images/GUI-Guide_fluenceOptOutputScreenshot2.PNG
new file mode 100644
index 000000000..b59d2bf58
Binary files /dev/null and b/docs/images/GUI-Guide_fluenceOptOutputScreenshot2.PNG differ
diff --git a/docs/images/GUI-Guide_loadDataGUIScreenshot.png b/docs/images/GUI-Guide_loadDataGUIScreenshot.png
new file mode 100644
index 000000000..b215449ea
Binary files /dev/null and b/docs/images/GUI-Guide_loadDataGUIScreenshot.png differ
diff --git a/docs/images/GUI-Guide_loadedGUIScreenshot.png b/docs/images/GUI-Guide_loadedGUIScreenshot.png
new file mode 100644
index 000000000..d7b79205a
Binary files /dev/null and b/docs/images/GUI-Guide_loadedGUIScreenshot.png differ
diff --git a/docs/images/GUI-Guide_loadedGUIScreenshot_liver.PNG b/docs/images/GUI-Guide_loadedGUIScreenshot_liver.PNG
new file mode 100644
index 000000000..e0280562e
Binary files /dev/null and b/docs/images/GUI-Guide_loadedGUIScreenshot_liver.PNG differ
diff --git a/docs/images/GUI-Guide_optimizationParameters2.png b/docs/images/GUI-Guide_optimizationParameters2.png
new file mode 100644
index 000000000..80499f0e0
Binary files /dev/null and b/docs/images/GUI-Guide_optimizationParameters2.png differ
diff --git a/docs/images/GUI-Guide_optimizationParametersGUIScreenshot.png b/docs/images/GUI-Guide_optimizationParametersGUIScreenshot.png
new file mode 100644
index 000000000..22f03e648
Binary files /dev/null and b/docs/images/GUI-Guide_optimizationParametersGUIScreenshot.png differ
diff --git a/docs/images/GUI-Guide_optimizedGUIScreenshot.png b/docs/images/GUI-Guide_optimizedGUIScreenshot.png
new file mode 100644
index 000000000..fdcc6e23b
Binary files /dev/null and b/docs/images/GUI-Guide_optimizedGUIScreenshot.png differ
diff --git a/docs/images/GUI-Guide_planParametersGUIScreenshot.png b/docs/images/GUI-Guide_planParametersGUIScreenshot.png
new file mode 100644
index 000000000..47f817c3e
Binary files /dev/null and b/docs/images/GUI-Guide_planParametersGUIScreenshot.png differ
diff --git a/docs/images/GUI-Guide_workflowGUIScreenshot.png b/docs/images/GUI-Guide_workflowGUIScreenshot.png
new file mode 100644
index 000000000..9c457d60a
Binary files /dev/null and b/docs/images/GUI-Guide_workflowGUIScreenshot.png differ
diff --git a/docs/images/Icon-set-Notifications.png b/docs/images/Icon-set-Notifications.png
new file mode 100644
index 000000000..359100527
Binary files /dev/null and b/docs/images/Icon-set-Notifications.png differ
diff --git a/docs/images/Icon-set-setup.png b/docs/images/Icon-set-setup.png
new file mode 100644
index 000000000..fdacdada3
Binary files /dev/null and b/docs/images/Icon-set-setup.png differ
diff --git a/docs/images/PracticalTreatmentPlanning_01.png b/docs/images/PracticalTreatmentPlanning_01.png
new file mode 100644
index 000000000..42a57e33f
Binary files /dev/null and b/docs/images/PracticalTreatmentPlanning_01.png differ
diff --git a/docs/images/PracticalTreatmentPlanning_02.png b/docs/images/PracticalTreatmentPlanning_02.png
new file mode 100644
index 000000000..2ee973af6
Binary files /dev/null and b/docs/images/PracticalTreatmentPlanning_02.png differ
diff --git a/docs/images/PracticalTreatmentPlanning_03.png b/docs/images/PracticalTreatmentPlanning_03.png
new file mode 100644
index 000000000..84db32113
Binary files /dev/null and b/docs/images/PracticalTreatmentPlanning_03.png differ
diff --git a/docs/images/PracticalTreatmentPlanning_04.png b/docs/images/PracticalTreatmentPlanning_04.png
new file mode 100644
index 000000000..379721720
Binary files /dev/null and b/docs/images/PracticalTreatmentPlanning_04.png differ
diff --git a/docs/images/PracticalTreatmentPlanning_05.png b/docs/images/PracticalTreatmentPlanning_05.png
new file mode 100644
index 000000000..e4b1aa6b7
Binary files /dev/null and b/docs/images/PracticalTreatmentPlanning_05.png differ
diff --git a/docs/images/PracticalTreatmentPlanning_06.png b/docs/images/PracticalTreatmentPlanning_06.png
new file mode 100644
index 000000000..960e0ca30
Binary files /dev/null and b/docs/images/PracticalTreatmentPlanning_06.png differ
diff --git a/docs/images/PracticalTreatmentPlanning_07.png b/docs/images/PracticalTreatmentPlanning_07.png
new file mode 100644
index 000000000..fdf5cb47d
Binary files /dev/null and b/docs/images/PracticalTreatmentPlanning_07.png differ
diff --git a/docs/images/PracticalTreatmentPlanning_08.png b/docs/images/PracticalTreatmentPlanning_08.png
new file mode 100644
index 000000000..fbb09b91e
Binary files /dev/null and b/docs/images/PracticalTreatmentPlanning_08.png differ
diff --git a/docs/images/PracticalTreatmentPlanning_09.png b/docs/images/PracticalTreatmentPlanning_09.png
new file mode 100644
index 000000000..214154a6d
Binary files /dev/null and b/docs/images/PracticalTreatmentPlanning_09.png differ
diff --git a/docs/images/PracticalTreatmentPlanning_10.png b/docs/images/PracticalTreatmentPlanning_10.png
new file mode 100644
index 000000000..4d43a07ba
Binary files /dev/null and b/docs/images/PracticalTreatmentPlanning_10.png differ
diff --git a/docs/images/PracticalTreatmentPlanning_11.png b/docs/images/PracticalTreatmentPlanning_11.png
new file mode 100644
index 000000000..c199f87c6
Binary files /dev/null and b/docs/images/PracticalTreatmentPlanning_11.png differ
diff --git a/docs/images/PracticalTreatmentPlanning_12.png b/docs/images/PracticalTreatmentPlanning_12.png
new file mode 100644
index 000000000..ac8c87bac
Binary files /dev/null and b/docs/images/PracticalTreatmentPlanning_12.png differ
diff --git a/docs/images/PracticalTreatmentPlanning_13.png b/docs/images/PracticalTreatmentPlanning_13.png
new file mode 100644
index 000000000..97e4ec277
Binary files /dev/null and b/docs/images/PracticalTreatmentPlanning_13.png differ
diff --git a/docs/images/PracticalTreatmentPlanning_14.png b/docs/images/PracticalTreatmentPlanning_14.png
new file mode 100644
index 000000000..234b5ab5f
Binary files /dev/null and b/docs/images/PracticalTreatmentPlanning_14.png differ
diff --git a/docs/images/STFScreenshot.png b/docs/images/STFScreenshot.png
new file mode 100644
index 000000000..a61f8d20b
Binary files /dev/null and b/docs/images/STFScreenshot.png differ
diff --git a/docs/images/aboutIcon.svg b/docs/images/aboutIcon.svg
new file mode 100644
index 000000000..7eab82e28
--- /dev/null
+++ b/docs/images/aboutIcon.svg
@@ -0,0 +1,85 @@
+
+
+
+
diff --git a/docs/images/aboutIconOrig.png b/docs/images/aboutIconOrig.png
new file mode 100644
index 000000000..92f995feb
Binary files /dev/null and b/docs/images/aboutIconOrig.png differ
diff --git a/docs/images/aboutIconThick1.png b/docs/images/aboutIconThick1.png
new file mode 100644
index 000000000..9c7c5cece
Binary files /dev/null and b/docs/images/aboutIconThick1.png differ
diff --git a/docs/images/aboutIconThick2(klein).png b/docs/images/aboutIconThick2(klein).png
new file mode 100644
index 000000000..22ee6876c
Binary files /dev/null and b/docs/images/aboutIconThick2(klein).png differ
diff --git a/docs/images/aboutIconThick2.png b/docs/images/aboutIconThick2.png
new file mode 100644
index 000000000..f7b562a93
Binary files /dev/null and b/docs/images/aboutIconThick2.png differ
diff --git a/docs/images/calcSTFScreenshot.png b/docs/images/calcSTFScreenshot.png
new file mode 100644
index 000000000..bb64183f5
Binary files /dev/null and b/docs/images/calcSTFScreenshot.png differ
diff --git a/docs/images/cstCellDoseParametersScreenshot.png b/docs/images/cstCellDoseParametersScreenshot.png
new file mode 100644
index 000000000..81c0ba2a5
Binary files /dev/null and b/docs/images/cstCellDoseParametersScreenshot.png differ
diff --git a/docs/images/cstCellScreenshot.png b/docs/images/cstCellScreenshot.png
new file mode 100644
index 000000000..8de360c2f
Binary files /dev/null and b/docs/images/cstCellScreenshot.png differ
diff --git a/docs/images/cstCellTissueParametersScreenshot.png b/docs/images/cstCellTissueParametersScreenshot.png
new file mode 100644
index 000000000..a1177319b
Binary files /dev/null and b/docs/images/cstCellTissueParametersScreenshot.png differ
diff --git a/docs/images/ctDataScreenshot.png b/docs/images/ctDataScreenshot.png
new file mode 100644
index 000000000..d6739f8d3
Binary files /dev/null and b/docs/images/ctDataScreenshot.png differ
diff --git a/docs/images/daoScreenshot.png b/docs/images/daoScreenshot.png
new file mode 100644
index 000000000..ec1205efa
Binary files /dev/null and b/docs/images/daoScreenshot.png differ
diff --git a/docs/images/dicomImport/dicomImportGUI_Output1.png b/docs/images/dicomImport/dicomImportGUI_Output1.png
new file mode 100644
index 000000000..b4b53b5c6
Binary files /dev/null and b/docs/images/dicomImport/dicomImportGUI_Output1.png differ
diff --git a/docs/images/dicomImport/dicomImportGUI_Output2.png b/docs/images/dicomImport/dicomImportGUI_Output2.png
new file mode 100644
index 000000000..9a4b8d2c6
Binary files /dev/null and b/docs/images/dicomImport/dicomImportGUI_Output2.png differ
diff --git a/docs/images/dicomImport/dicomImportGUI_empty.png b/docs/images/dicomImport/dicomImportGUI_empty.png
new file mode 100644
index 000000000..c995b0ad6
Binary files /dev/null and b/docs/images/dicomImport/dicomImportGUI_empty.png differ
diff --git a/docs/images/dicomImport/dicomImportGUI_savePatient.png b/docs/images/dicomImport/dicomImportGUI_savePatient.png
new file mode 100644
index 000000000..562af6ac1
Binary files /dev/null and b/docs/images/dicomImport/dicomImportGUI_savePatient.png differ
diff --git a/docs/images/dicomImport/dicomImportGUI_waitbar.png b/docs/images/dicomImport/dicomImportGUI_waitbar.png
new file mode 100644
index 000000000..423203e90
Binary files /dev/null and b/docs/images/dicomImport/dicomImportGUI_waitbar.png differ
diff --git a/docs/images/dicomImport/dicomImportGUI_withPatients.png b/docs/images/dicomImport/dicomImportGUI_withPatients.png
new file mode 100644
index 000000000..0f68e8256
Binary files /dev/null and b/docs/images/dicomImport/dicomImportGUI_withPatients.png differ
diff --git a/docs/images/dij-struct.png b/docs/images/dij-struct.png
new file mode 100644
index 000000000..74bad05df
Binary files /dev/null and b/docs/images/dij-struct.png differ
diff --git a/docs/images/doseCalcProgScreenshot.png b/docs/images/doseCalcProgScreenshot.png
new file mode 100644
index 000000000..e96411c02
Binary files /dev/null and b/docs/images/doseCalcProgScreenshot.png differ
diff --git a/docs/images/doseCalcScreenshot.png b/docs/images/doseCalcScreenshot.png
new file mode 100644
index 000000000..84ddb39cf
Binary files /dev/null and b/docs/images/doseCalcScreenshot.png differ
diff --git a/docs/images/doseVisAxialAlpha.png b/docs/images/doseVisAxialAlpha.png
new file mode 100644
index 000000000..498ba0403
Binary files /dev/null and b/docs/images/doseVisAxialAlpha.png differ
diff --git a/docs/images/doseVisAxialBeta.png b/docs/images/doseVisAxialBeta.png
new file mode 100644
index 000000000..d3de6a963
Binary files /dev/null and b/docs/images/doseVisAxialBeta.png differ
diff --git a/docs/images/doseVisAxialEffect.png b/docs/images/doseVisAxialEffect.png
new file mode 100644
index 000000000..ac5668db2
Binary files /dev/null and b/docs/images/doseVisAxialEffect.png differ
diff --git a/docs/images/doseVisAxialIntensity.png b/docs/images/doseVisAxialIntensity.png
new file mode 100644
index 000000000..2056f26ef
Binary files /dev/null and b/docs/images/doseVisAxialIntensity.png differ
diff --git a/docs/images/doseVisAxialRBE.png b/docs/images/doseVisAxialRBE.png
new file mode 100644
index 000000000..f51b83b33
Binary files /dev/null and b/docs/images/doseVisAxialRBE.png differ
diff --git a/docs/images/doseVisAxialRBEtruncated.png b/docs/images/doseVisAxialRBEtruncated.png
new file mode 100644
index 000000000..8e8b59e70
Binary files /dev/null and b/docs/images/doseVisAxialRBEtruncated.png differ
diff --git a/docs/images/doseVisAxialRBExD.png b/docs/images/doseVisAxialRBExD.png
new file mode 100644
index 000000000..667dfe52f
Binary files /dev/null and b/docs/images/doseVisAxialRBExD.png differ
diff --git a/docs/images/doseVisCoronalIntensity.png b/docs/images/doseVisCoronalIntensity.png
new file mode 100644
index 000000000..c2dec16f9
Binary files /dev/null and b/docs/images/doseVisCoronalIntensity.png differ
diff --git a/docs/images/doseVisGUIScreenshot.png b/docs/images/doseVisGUIScreenshot.png
new file mode 100644
index 000000000..1bdbda978
Binary files /dev/null and b/docs/images/doseVisGUIScreenshot.png differ
diff --git a/docs/images/doseVisLateralProfile.png b/docs/images/doseVisLateralProfile.png
new file mode 100644
index 000000000..1c0bc4f9e
Binary files /dev/null and b/docs/images/doseVisLateralProfile.png differ
diff --git a/docs/images/doseVisLongitudinalProfile.png b/docs/images/doseVisLongitudinalProfile.png
new file mode 100644
index 000000000..49f369847
Binary files /dev/null and b/docs/images/doseVisLongitudinalProfile.png differ
diff --git a/docs/images/doseVisParameter.png b/docs/images/doseVisParameter.png
new file mode 100644
index 000000000..48ae636e7
Binary files /dev/null and b/docs/images/doseVisParameter.png differ
diff --git a/docs/images/doseVisSagitalIntensity.png b/docs/images/doseVisSagitalIntensity.png
new file mode 100644
index 000000000..d1a9dcdf4
Binary files /dev/null and b/docs/images/doseVisSagitalIntensity.png differ
diff --git a/docs/images/doseVisScreenshot.png b/docs/images/doseVisScreenshot.png
new file mode 100644
index 000000000..68820b63e
Binary files /dev/null and b/docs/images/doseVisScreenshot.png differ
diff --git a/docs/images/doseVisScreenshot2.png b/docs/images/doseVisScreenshot2.png
new file mode 100644
index 000000000..32e852de0
Binary files /dev/null and b/docs/images/doseVisScreenshot2.png differ
diff --git a/docs/images/doseVisSequencing.png b/docs/images/doseVisSequencing.png
new file mode 100644
index 000000000..ff587e586
Binary files /dev/null and b/docs/images/doseVisSequencing.png differ
diff --git a/docs/images/executeGUIScreenshot.png b/docs/images/executeGUIScreenshot.png
new file mode 100644
index 000000000..38198da4f
Binary files /dev/null and b/docs/images/executeGUIScreenshot.png differ
diff --git a/docs/images/initialGUIScreenshot.png b/docs/images/initialGUIScreenshot.png
new file mode 100644
index 000000000..65aad07a1
Binary files /dev/null and b/docs/images/initialGUIScreenshot.png differ
diff --git a/docs/images/invPlanningProgScreenshot.png b/docs/images/invPlanningProgScreenshot.png
new file mode 100644
index 000000000..193b2de71
Binary files /dev/null and b/docs/images/invPlanningProgScreenshot.png differ
diff --git a/docs/images/invPlanningScreenshot.png b/docs/images/invPlanningScreenshot.png
new file mode 100644
index 000000000..ae2ac663c
Binary files /dev/null and b/docs/images/invPlanningScreenshot.png differ
diff --git a/docs/images/invPlanningVisScreenshot.png b/docs/images/invPlanningVisScreenshot.png
new file mode 100644
index 000000000..13b2fee37
Binary files /dev/null and b/docs/images/invPlanningVisScreenshot.png differ
diff --git a/docs/images/matRadPerformanceTable.png b/docs/images/matRadPerformanceTable.png
new file mode 100644
index 000000000..04f76dc1d
Binary files /dev/null and b/docs/images/matRadPerformanceTable.png differ
diff --git a/docs/images/matRad_steps.png b/docs/images/matRad_steps.png
new file mode 100644
index 000000000..20ca161a9
Binary files /dev/null and b/docs/images/matRad_steps.png differ
diff --git a/docs/images/matRadvalidation.png b/docs/images/matRadvalidation.png
new file mode 100644
index 000000000..a0b13f0e7
Binary files /dev/null and b/docs/images/matRadvalidation.png differ
diff --git a/docs/images/matrad02.png b/docs/images/matrad02.png
new file mode 100644
index 000000000..163953886
Binary files /dev/null and b/docs/images/matrad02.png differ
diff --git a/docs/images/matrad03.png b/docs/images/matrad03.png
new file mode 100644
index 000000000..965d32a17
Binary files /dev/null and b/docs/images/matrad03.png differ
diff --git a/docs/images/matrad_blank.svg b/docs/images/matrad_blank.svg
new file mode 100644
index 000000000..d0fc2bd7b
--- /dev/null
+++ b/docs/images/matrad_blank.svg
@@ -0,0 +1,148 @@
+
+
+
+
\ No newline at end of file
diff --git a/docs/images/matrad_hat.svg b/docs/images/matrad_hat.svg
new file mode 100644
index 000000000..d517100df
--- /dev/null
+++ b/docs/images/matrad_hat.svg
@@ -0,0 +1,160 @@
+
+
+
+
\ No newline at end of file
diff --git a/docs/images/parametersLoadedScreenshot.png b/docs/images/parametersLoadedScreenshot.png
new file mode 100644
index 000000000..030326380
Binary files /dev/null and b/docs/images/parametersLoadedScreenshot.png differ
diff --git a/docs/images/parametersScreenshot.png b/docs/images/parametersScreenshot.png
new file mode 100644
index 000000000..0fc0e8ac3
Binary files /dev/null and b/docs/images/parametersScreenshot.png differ
diff --git a/docs/images/penumbra_gaussian_convolution.png b/docs/images/penumbra_gaussian_convolution.png
new file mode 100644
index 000000000..5b8e286fd
Binary files /dev/null and b/docs/images/penumbra_gaussian_convolution.png differ
diff --git a/docs/images/pln-struct.png b/docs/images/pln-struct.png
new file mode 100644
index 000000000..539d9b6b0
Binary files /dev/null and b/docs/images/pln-struct.png differ
diff --git a/docs/images/qualityOutputScreenshot.png b/docs/images/qualityOutputScreenshot.png
new file mode 100644
index 000000000..f7a04d246
Binary files /dev/null and b/docs/images/qualityOutputScreenshot.png differ
diff --git a/docs/images/qualityScreenshot.png b/docs/images/qualityScreenshot.png
new file mode 100644
index 000000000..5b603e31f
Binary files /dev/null and b/docs/images/qualityScreenshot.png differ
diff --git a/docs/images/rayBixelConcept.ai b/docs/images/rayBixelConcept.ai
new file mode 100644
index 000000000..fd93752e1
--- /dev/null
+++ b/docs/images/rayBixelConcept.ai
@@ -0,0 +1,5210 @@
+%PDF-1.5
%
+1 0 obj
<>/OCGs[5 0 R 34 0 R 62 0 R 90 0 R]>>/Pages 3 0 R/Type/Catalog>>
endobj
2 0 obj
<>stream
+
+
+
+
+ application/pdf
+
+
+ Druck
+
+
+
+
+ 2015-05-14T00:09:24+02:00
+ 2015-05-14T00:09:24+02:00
+ 2015-05-13T23:57:32+02:00
+ Adobe Illustrator CS5
+
+
+
+ 256
+ 104
+ JPEG
+ /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA
AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK
DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f
Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAaAEAAwER
AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA
AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB
UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE
1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ
qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy
obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp
0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo
+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7
FXYqxj8xLi5tPLwvYJHj+q3MEspjYqWTnxK1BGx5DMHtAyGOx0IcTWyMcfEOhH3smVlZQymqsKgj
uDmaDblt4VdirsVdirsVdirsVdirsVdirsVdirsVdirsVdiqmbmARSShwyRV9Qr8VOIqRRamvtiq
E03WrbUWcW8N0iIN5Li2ntlJ8F9dI2b5gUxVaJvMLagU+qWsWnK3+9BuJHnZR/xSIVRa/wDGU4FX
ajpt5eSo0WqXNjEoo8Vstv8AGa/tNNFKw/2JGFVS90rTr+0Wz1C3S9thQmK4USqxUUBZWBDfTiqL
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
+
+
+
+
+
+ uuid:b61aae0a-47f9-43ff-9838-2fa3dbb65c14
+ xmp.did:C098B20EBBF9E411A3FDF3D61E7FF9F4
+ uuid:5D20892493BFDB11914A8590D31508C8
+ proof:pdf
+
+ uuid:f1775086-0703-1641-91a3-3e7a3f492d9d
+ xmp.did:FB7F11740720681188C6F0AB0253E170
+ uuid:5D20892493BFDB11914A8590D31508C8
+ proof:pdf
+
+
+
+
+ saved
+ xmp.iid:C098B20EBBF9E411A3FDF3D61E7FF9F4
+ 2015-05-13T23:57:32+02:00
+ Adobe Illustrator CS5
+ /
+
+
+
+
+
+ Document
+ Print
+
+
+ False
+ False
+ 1
+
+ 209.662999
+ 81.998268
+ Millimeters
+
+
+
+ Cyan
+ Magenta
+ Yellow
+ Black
+
+
+
+
+
+ Standard-Farbfeldgruppe
+ 0
+
+
+
+ Weiß
+ CMYK
+ PROCESS
+ 0.000000
+ 0.000000
+ 0.000000
+ 0.000000
+
+
+ Schwarz
+ CMYK
+ PROCESS
+ 0.000000
+ 0.000000
+ 0.000000
+ 100.000000
+
+
+ CMYK Rot
+ CMYK
+ PROCESS
+ 0.000000
+ 100.000000
+ 100.000000
+ 0.000000
+
+
+ CMYK Gelb
+ CMYK
+ PROCESS
+ 0.000000
+ 0.000000
+ 100.000000
+ 0.000000
+
+
+ CMYK Grün
+ CMYK
+ PROCESS
+ 100.000000
+ 0.000000
+ 100.000000
+ 0.000000
+
+
+ CMYK Cyan
+ CMYK
+ PROCESS
+ 100.000000
+ 0.000000
+ 0.000000
+ 0.000000
+
+
+ CMYK Blau
+ CMYK
+ PROCESS
+ 100.000000
+ 100.000000
+ 0.000000
+ 0.000000
+
+
+ CMYK Magenta
+ CMYK
+ PROCESS
+ 0.000000
+ 100.000000
+ 0.000000
+ 0.000000
+
+
+ C=15 M=100 Y=90 K=10
+ CMYK
+ PROCESS
+ 14.999998
+ 100.000000
+ 90.000004
+ 10.000002
+
+
+ C=0 M=90 Y=85 K=0
+ CMYK
+ PROCESS
+ 0.000000
+ 90.000004
+ 84.999996
+ 0.000000
+
+
+ C=0 M=80 Y=95 K=0
+ CMYK
+ PROCESS
+ 0.000000
+ 80.000001
+ 94.999999
+ 0.000000
+
+
+ C=0 M=50 Y=100 K=0
+ CMYK
+ PROCESS
+ 0.000000
+ 50.000000
+ 100.000000
+ 0.000000
+
+
+ C=0 M=35 Y=85 K=0
+ CMYK
+ PROCESS
+ 0.000000
+ 35.000002
+ 84.999996
+ 0.000000
+
+
+ C=5 M=0 Y=90 K=0
+ CMYK
+ PROCESS
+ 5.000001
+ 0.000000
+ 90.000004
+ 0.000000
+
+
+ C=20 M=0 Y=100 K=0
+ CMYK
+ PROCESS
+ 19.999999
+ 0.000000
+ 100.000000
+ 0.000000
+
+
+ C=50 M=0 Y=100 K=0
+ CMYK
+ PROCESS
+ 50.000000
+ 0.000000
+ 100.000000
+ 0.000000
+
+
+ C=75 M=0 Y=100 K=0
+ CMYK
+ PROCESS
+ 75.000000
+ 0.000000
+ 100.000000
+ 0.000000
+
+
+ C=85 M=10 Y=100 K=10
+ CMYK
+ PROCESS
+ 84.999996
+ 10.000002
+ 100.000000
+ 10.000002
+
+
+ C=90 M=30 Y=95 K=30
+ CMYK
+ PROCESS
+ 90.000004
+ 30.000001
+ 94.999999
+ 30.000001
+
+
+ C=75 M=0 Y=75 K=0
+ CMYK
+ PROCESS
+ 75.000000
+ 0.000000
+ 75.000000
+ 0.000000
+
+
+ C=80 M=10 Y=45 K=0
+ CMYK
+ PROCESS
+ 80.000001
+ 10.000002
+ 44.999999
+ 0.000000
+
+
+ C=70 M=15 Y=0 K=0
+ CMYK
+ PROCESS
+ 69.999999
+ 14.999998
+ 0.000000
+ 0.000000
+
+
+ C=85 M=50 Y=0 K=0
+ CMYK
+ PROCESS
+ 84.999996
+ 50.000000
+ 0.000000
+ 0.000000
+
+
+ C=100 M=95 Y=5 K=0
+ CMYK
+ PROCESS
+ 100.000000
+ 94.999999
+ 5.000001
+ 0.000000
+
+
+ C=100 M=100 Y=25 K=25
+ CMYK
+ PROCESS
+ 100.000000
+ 100.000000
+ 25.000000
+ 25.000000
+
+
+ C=75 M=100 Y=0 K=0
+ CMYK
+ PROCESS
+ 75.000000
+ 100.000000
+ 0.000000
+ 0.000000
+
+
+ C=50 M=100 Y=0 K=0
+ CMYK
+ PROCESS
+ 50.000000
+ 100.000000
+ 0.000000
+ 0.000000
+
+
+ C=35 M=100 Y=35 K=10
+ CMYK
+ PROCESS
+ 35.000002
+ 100.000000
+ 35.000002
+ 10.000002
+
+
+ C=10 M=100 Y=50 K=0
+ CMYK
+ PROCESS
+ 10.000002
+ 100.000000
+ 50.000000
+ 0.000000
+
+
+ C=0 M=95 Y=20 K=0
+ CMYK
+ PROCESS
+ 0.000000
+ 94.999999
+ 19.999999
+ 0.000000
+
+
+ C=25 M=25 Y=40 K=0
+ CMYK
+ PROCESS
+ 25.000000
+ 25.000000
+ 39.999998
+ 0.000000
+
+
+ C=40 M=45 Y=50 K=5
+ CMYK
+ PROCESS
+ 39.999998
+ 44.999999
+ 50.000000
+ 5.000001
+
+
+ C=50 M=50 Y=60 K=25
+ CMYK
+ PROCESS
+ 50.000000
+ 50.000000
+ 60.000002
+ 25.000000
+
+
+ C=55 M=60 Y=65 K=40
+ CMYK
+ PROCESS
+ 55.000001
+ 60.000002
+ 64.999998
+ 39.999998
+
+
+ C=25 M=40 Y=65 K=0
+ CMYK
+ PROCESS
+ 25.000000
+ 39.999998
+ 64.999998
+ 0.000000
+
+
+ C=30 M=50 Y=75 K=10
+ CMYK
+ PROCESS
+ 30.000001
+ 50.000000
+ 75.000000
+ 10.000002
+
+
+ C=35 M=60 Y=80 K=25
+ CMYK
+ PROCESS
+ 35.000002
+ 60.000002
+ 80.000001
+ 25.000000
+
+
+ C=40 M=65 Y=90 K=35
+ CMYK
+ PROCESS
+ 39.999998
+ 64.999998
+ 90.000004
+ 35.000002
+
+
+ C=40 M=70 Y=100 K=50
+ CMYK
+ PROCESS
+ 39.999998
+ 69.999999
+ 100.000000
+ 50.000000
+
+
+ C=50 M=70 Y=80 K=70
+ CMYK
+ PROCESS
+ 50.000000
+ 69.999999
+ 80.000001
+ 69.999999
+
+
+
+
+
+ Grautöne
+ 1
+
+
+
+ C=0 M=0 Y=0 K=100
+ CMYK
+ PROCESS
+ 0.000000
+ 0.000000
+ 0.000000
+ 100.000000
+
+
+ C=0 M=0 Y=0 K=90
+ CMYK
+ PROCESS
+ 0.000000
+ 0.000000
+ 0.000000
+ 89.999402
+
+
+ C=0 M=0 Y=0 K=80
+ CMYK
+ PROCESS
+ 0.000000
+ 0.000000
+ 0.000000
+ 79.998797
+
+
+ C=0 M=0 Y=0 K=70
+ CMYK
+ PROCESS
+ 0.000000
+ 0.000000
+ 0.000000
+ 69.999701
+
+
+ C=0 M=0 Y=0 K=60
+ CMYK
+ PROCESS
+ 0.000000
+ 0.000000
+ 0.000000
+ 59.999102
+
+
+ C=0 M=0 Y=0 K=50
+ CMYK
+ PROCESS
+ 0.000000
+ 0.000000
+ 0.000000
+ 50.000000
+
+
+ C=0 M=0 Y=0 K=40
+ CMYK
+ PROCESS
+ 0.000000
+ 0.000000
+ 0.000000
+ 39.999402
+
+
+ C=0 M=0 Y=0 K=30
+ CMYK
+ PROCESS
+ 0.000000
+ 0.000000
+ 0.000000
+ 29.998803
+
+
+ C=0 M=0 Y=0 K=20
+ CMYK
+ PROCESS
+ 0.000000
+ 0.000000
+ 0.000000
+ 19.999701
+
+
+ C=0 M=0 Y=0 K=10
+ CMYK
+ PROCESS
+ 0.000000
+ 0.000000
+ 0.000000
+ 9.999102
+
+
+ C=0 M=0 Y=0 K=5
+ CMYK
+ PROCESS
+ 0.000000
+ 0.000000
+ 0.000000
+ 4.998803
+
+
+
+
+
+ Leuchtende Farben
+ 1
+
+
+
+ C=0 M=100 Y=100 K=0
+ CMYK
+ PROCESS
+ 0.000000
+ 100.000000
+ 100.000000
+ 0.000000
+
+
+ C=0 M=75 Y=100 K=0
+ CMYK
+ PROCESS
+ 0.000000
+ 75.000000
+ 100.000000
+ 0.000000
+
+
+ C=0 M=10 Y=95 K=0
+ CMYK
+ PROCESS
+ 0.000000
+ 10.000002
+ 94.999999
+ 0.000000
+
+
+ C=85 M=10 Y=100 K=0
+ CMYK
+ PROCESS
+ 84.999996
+ 10.000002
+ 100.000000
+ 0.000000
+
+
+ C=100 M=90 Y=0 K=0
+ CMYK
+ PROCESS
+ 100.000000
+ 90.000004
+ 0.000000
+ 0.000000
+
+
+ C=60 M=90 Y=0 K=0
+ CMYK
+ PROCESS
+ 60.000002
+ 90.000004
+ 0.003099
+ 0.003099
+
+
+
+
+
+
+
+
+ Adobe PDF library 9.90
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+endstream
endobj
3 0 obj
<>
endobj
7 0 obj
<>/Resources<>/ExtGState<>/Properties<>>>/Thumb 96 0 R/TrimBox[0.0 0.0 594.32 232.436]/Type/Page>>
endobj
92 0 obj
<>stream
+HW[7W. >(TN&EL*%Ng"J+ݭx%> χwy!I")I
+i˯)DB鈅O82O|Z
+ׂ2q\NIHL"ۗ㲛\xAzYDb0sLE&