Skip to content
Snippets Groups Projects
Commit 3125fd47 authored by Riccardo Maria Bianchi's avatar Riccardo Maria Bianchi :sunny:
Browse files

(docs) clean root README file and moved info to docs

parent 91f01634
No related branches found
No related tags found
No related merge requests found
...@@ -6,11 +6,15 @@ GeoModel is a user-friendly C++ Toolkit and Suite for HEP Detector Description w ...@@ -6,11 +6,15 @@ GeoModel is a user-friendly C++ Toolkit and Suite for HEP Detector Description w
The philosophy of the whole GeoModel Suite is to keep the external dependencies at the minimum. The philosophy of the whole GeoModel Suite is to keep the external dependencies at the minimum.
_list of all the dependencies coming soon_ The core packages only depend on these third-party libraries:
**NOTE:** Please note that you can build some of the dependencies as part of the main build. This is useful for platforms where the versions installed by the system package managers are old. See [here below](#building-dependencies-as-part-of-the-main-build) for instructions. - Eigen3, as the maths library (header-only)
- SQLite, as the underlying format to store detector description data
- fmt, as formatting library (header-only)
## Build
## Structure
### Build tree ### Build tree
...@@ -24,14 +28,15 @@ By default, only the base classes are built: ...@@ -24,14 +28,15 @@ By default, only the base classes are built:
- GeoModelWrite - GeoModelWrite
- GeoModelRead - GeoModelRead
- TFPersistification - TFPersistification
On request, additional packages, libraries, and tools can be built:
- GeoModelTools - GeoModelTools
- ExpressionEvaluator - ExpressionEvaluator
- GeoModelJSONParser - GeoModelJSONParser
- GeoModelXMLParser - GeoModelXMLParser
- GMCAT - GMCAT
On request, additional packages, libraries, and tools can be built:
- GeoModelVisualization (`gmex`) - GeoModelVisualization (`gmex`)
- GeoModelExamples - GeoModelExamples
- GeoModelG4 - GeoModelG4
...@@ -39,112 +44,43 @@ On request, additional packages, libraries, and tools can be built: ...@@ -39,112 +44,43 @@ On request, additional packages, libraries, and tools can be built:
- GeoModel2G4 - GeoModel2G4
- FullSimLight - FullSimLight
**Note:** !!! note
Some of the optional packages bring in additional dependencies, for example libraries to handle 3D graphics and Geant4 for standalone detector simulations.
In particular, these are the additional dependencies and the packages that bring them:
- GeoModelVisualization: Qt5, Coin3D, SoQt
- Examples about the classes handling the GeoModel->Geant4 translation: Geant4
- GeoModelG4: Geant4
### Build options
While configuring the build, you can enable the build of the optional packages, as explained in the following.
#### Build the visualization tools
```
cmake -DGEOMODEL_BUILD_VISUALIZATION=1 ../GeoModel
```
will enable the build of the geometry visualization tool, `GeoModelExplorer` (`gmex`) and of all the base classes. This brings in additional dependencies for the GUI and to handle 3D graphics: Qt5, Coin3D, and SoQt.
#### Build the examples
```
cmake -DGEOMODEL_BUILD_EXAMPLES=1 ../GeoModel
```
will enable the build of all the examples (except those requiring Geant4, see below) and of all the base classes and packages.
#### Build the GeoModel --> Geant4 interface
This CMake command
```
cmake -DGEOMODEL_BUILD_GEOMODELG4=1 ../GeoModel
```
will build the base packages as well the interface classes which translate GeoModel nodes into Geant4 entities, as well as all the base GeoModel classes.
This also brings in an additional dependency on a Geant4 installation.
#### Build the examples for the GeoModel --> Geant4 interface
To build the examples for the GeoModel --> Geant4 interface, you should use the `GEOMODEL_BUILD_EXAMPLES_W_GEANT4` build option:
```
cmake -DGEOMODEL_BUILD_EXAMPLES_W_GEANT4=1 ../GeoModel
```
This will enable the build of all the examples, also those requiring Geant4. This option will also build `GeoModelG4` (see above), which is the interface between GeoModel and Geant4, and brings in the dependency on a local Geant4 installation.
#### Build the standalone Geant4-based detector simulation application
This CMake command
```
cmake -DGEOMODEL_BUILD_FULLSIMLIGHT=1 ../GeoModel
```
will build `FullSimLight`, the Geant4-based application which let users run standalone simulations on a complete detector geometry or on a piece of that, as well as `GeoModelG4` and all the base classes. This also brings in an additional dependency on a Geant4 installation.
### Notes
**Note:** Some of the optional packages bring in additional dependencies, for example libraries to handle 3D graphics and Geant4 for standalone detector simulations.
When used during the CMake configuration step, all the variables must be prefixed by `-D`, like in the first example of this section. You can also combine them. In particular, these are the additional dependencies and the packages that bring them:
For example, this CMake command: - GeoModelTools: Xerces-C, nlohmann_json
- GeoModelVisualization: Qt5, Coin3D, SoQt, nlohmann_json
- Examples about the classes handling the GeoModel->Geant4 translation: Geant4
- GeoModelG4: Geant4
- FullSimLight: Geant4
```
cmake -DGEOMODEL_BUILD_VISUALIZATION=1 -DGEOMODEL_BUILD_EXAMPLES=1 ../GeoModel
```
will build the base classes, the visualization tool (`gmex`), and the examples (the ones that not require Geant4). ### Build
For the build instruction, you can refer to the documnentation folder:
## Building dependencies as part of the main build `documentation/dev/`
You can use CMake compilation flags to configure a built-in build of some of the dependencies. That options will download and build a tested version of those dependencies as part of the build process of GeoModel. ## License
This is especially useful on platforms where the version of those dependencies installed by the system package manager is old, like on Ubuntu. GeoModel is distributed under the [Apache 2.0 license](LICENSE)
*Note:* You don't need to use those options on macOS, where the versions installed by the `brew` package manager are often the latest. ### Core Developers and Maintainers
### nlohmann_json GeoModel is developed and maintained by (in alphabetical order):
You can enable the built-in build of `nlohmann_json` by using the CMake option: - Marilena Bandieramonte *(University of Pittsburgh, US)*
- Riccardo Maria Bianchi *(University of Pittsburgh, US)*
- Joseph Boudreau *(University of Pittsburgh, US)*
- Andrea Dell'Acqua *(CERN, CH)*
- Vakhtang Tsulaia *(LBNL, US)*
```
-DGEOMODEL_USE_BUILTIN_JSON=TRUE
```
### Xerces-C ### Contacts
You can enable the built-in build of `Xerces-C` by using the CMake option: For questions and requests, you can open an "Issue".
```
-DGEOMODEL_USE_BUILTIN_XERCESC=TRUE
```
### Examples
For example, you can build the base GeoModel packages, plus the GeoModelVisualization (`gmex`), and a built-in version of nlohmann_json and Xerces-C by configuring the build with:
```
cmake -DCMAKE_INSTALL_PREFIX=../install/ -DGEOMODEL_BUILD_VISUALIZATION=1 -DGEOMODEL_USE_BUILTIN_JSON=TRUE -DGEOMODEL_USE_BUILTIN_XERCESC=TRUE ../GeoModel/
```
...@@ -215,9 +215,9 @@ cd .. ...@@ -215,9 +215,9 @@ cd ..
In these instructions we are building everything, because that is the most used configuration. But the GeoModel build is highly modular, and you can install different combinations of the GeoModel subpackages. In these instructions we are building everything, because that is the most used configuration. But the GeoModel build is highly modular, and you can install different combinations of the GeoModel subpackages.
You can see all the available options, and you can enable/disable them inetractively, by using the command for the interactive CMake configuration `ccmake`, instead of the classical `cmake`; *i.e.*: `cmake ../GeoModel`. You can see all the available options, and you can enable/disable them interactively, by using the command for the interactive CMake configuration `ccmake`, instead of the classical `cmake`; *i.e.*: `ccmake ../GeoModel`.
*More details on that coming soon....* In the section below, a list of all build options will be presented.
...@@ -304,3 +304,150 @@ and run your local copy of the GeoModel visualization tool, `gmex`, with (assumi ...@@ -304,3 +304,150 @@ and run your local copy of the GeoModel visualization tool, `gmex`, with (assumi
For a collection of suggestions on how to fix potential errors and glitches, please refer to the dedicated [Troubleshooting](troubleshooting.md) page. For a collection of suggestions on how to fix potential errors and glitches, please refer to the dedicated [Troubleshooting](troubleshooting.md) page.
----
## Build Options
While configuring the build, you can enable the build of the optional packages, as explained in the following.
!!! note
Please note that you can build some of the dependencies as part of the main build. This is useful for platforms where the versions installed by the system package managers are old. See [here below](#building-dependencies-as-part-of-the-main-build) for instructions.
!!! info
When used during the CMake configuration step, all the variables must be prefixed by `-D`, like in the first example of this section. You can also combine them.
For example, this CMake command:
```
cmake -DGEOMODEL_BUILD_VISUALIZATION=1 -DGEOMODEL_BUILD_EXAMPLES=1 ../GeoModel
```
will build the base classes, the visualization tool (`gmex`), and the examples (the ones that not require Geant4).
#### GEOMODEL_BUILD_TOOLS -- Build the GeoModelTools
```
cmake -DGEOMODEL_BUILD_TOOLS=1 ../GeoModel
```
will enable the build of the tools in `GeoModelTools`.
This will also brings in a dependency on the Xerces-C and nlohmann_json third-party libraries.
#### GEOMODEL_BUILD_VISUALIZATION -- Build the visualization tools
```
cmake -DGEOMODEL_BUILD_VISUALIZATION=1 ../GeoModel
```
will enable the build of the geometry visualization tool, `GeoModelExplorer` (`gmex`) and of all the base classes.
This brings in additional dependencies for the GUI and to handle 3D graphics and on a JSON parser: Qt5, Coin3D, SoQt, and nlohmann_json.
#### GEOMODEL_BUILD_EXAMPLES -- Build the examples
```
cmake -DGEOMODEL_BUILD_EXAMPLES=1 ../GeoModel
```
will enable the build of all the examples (except those requiring Geant4, see below) and of all the base classes and packages.
#### GEOMODEL_BUILD_GEOMODELG4 -- Build the GeoModel --> Geant4 interface
This CMake command
```
cmake -DGEOMODEL_BUILD_GEOMODELG4=1 ../GeoModel
```
will build the base packages as well the interface classes which translate GeoModel nodes into Geant4 entities, as well as all the base GeoModel classes.
This also brings in an additional dependency on a Geant4 installation.
#### Build the examples for the GeoModel --> Geant4 interface
To build the examples for the GeoModel --> Geant4 interface, you should use the `GEOMODEL_BUILD_EXAMPLES_W_GEANT4` build option:
```
cmake -DGEOMODEL_BUILD_EXAMPLES_W_GEANT4=1 ../GeoModel
```
This will enable the build of all the examples, also those requiring Geant4. This option will also build `GeoModelG4` (see above), which is the interface between GeoModel and Geant4, and brings in the dependency on a local Geant4 installation.
#### GEOMODEL_BUILD_FULLSIMLIGHT -- Build the standalone Geant4-based detector simulation application
This CMake command
```
cmake -DGEOMODEL_BUILD_FULLSIMLIGHT=1 ../GeoModel
```
will build `FullSimLight`, the Geant4-based application which let users run standalone simulations on a complete detector geometry or on a piece of that, as well as `GeoModelG4` and all the base classes. This also brings in an additional dependency on a Geant4 installation.
### Building dependencies as part of the main build
You can use CMake compilation flags to configure a built-in build of some of the dependencies. That options will download and build a tested version of those dependencies as part of the build process of GeoModel.
This is especially useful on platforms where the version of those dependencies installed by the system package manager is old, like on Ubuntu.
*Note:* You don't need to use those options on macOS, where the versions installed by the `brew` package manager are often the latest.
#### nlohmann_json
You can enable the built-in build of `nlohmann_json` by using the CMake option:
```
-DGEOMODEL_USE_BUILTIN_JSON=TRUE
```
#### Xerces-C
You can enable the built-in build of `Xerces-C` by using the CMake option:
```
-DGEOMODEL_USE_BUILTIN_XERCESC=TRUE
```
#### Eigen3
You can enable the built-in build of `Eigen3` by using the CMake option:
```
-DGEOMODEL_USE_BUILTIN_EIGEN=TRUE
```
#### Coin3D (Coin + SoQt)
You can enable the built-in build of `Coin3D` (*i.e.*, Coin + SoQt) by using the CMake option:
```
-DGEOMODEL_USE_BUILTIN_COIN3D=TRUE
```
### Examples
For example, you can build the base GeoModel packages, plus the GeoModelVisualization (`gmex`), and a built-in version of nlohmann_json and Xerces-C by configuring the build with:
```
cmake -DCMAKE_INSTALL_PREFIX=../install/ -DGEOMODEL_BUILD_VISUALIZATION=1 -DGEOMODEL_USE_BUILTIN_JSON=TRUE -DGEOMODEL_USE_BUILTIN_XERCESC=TRUE ../GeoModel/
```
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment