This is the application based on tutorial application by Mihaly Novak, implemented for
the Geant4 Beginner Course (at CERN 21-23 January 2020).
https://indico.cern.ch/event/865808/contributions/3647803/

This version is developed for the purpose of ESIPAP.

# Requirements

The pre-requirement for running this application is Geant4 toolkit. There may not be enough time to get running Geant4 and analyse this application at this course, so please consider installing it in advance.

## How to install Geant4

There are three alternatives to get Geant4:

1. Build and install Geant4 from source or via package manager of (some) operating systems, as described in the [Installation guide](https://geant4-userdoc.web.cern.ch/UsersGuides/InstallationGuide/html/index.html). Building from source can take considerable time, O(1h), depending on the machine.

2. Use a docker image which was prepared especially for this tutorial, so it contains all necessary data, including this tutorial application. You will need to install docker and then pull an image from [docker hub](https://hub.docker.com/r/zaborowska/geant4).

3. Use a virtual machine, with instructions how to get it available at [First Steps with Geant4 course webpage](https://indico.cern.ch/event/1106066/page/23923-geant4-virtual-machine).


More details about Geant4 can be found on the [Getting started page](https://geant4-dev.web.cern.ch/docs/getting-started).


## Test Geant4

To test if you are able to use Geant4 properly, please build the most basic example of Geant4.

```
cd examples/basic/B1/
mkdir build
cd build
cmake ..
make
```

If you installed Geant4 with visualization available (e.g. with `Qt`) or if you are using a docker or a virtual machine, you schould be able to execute the example:

```
./exampleB1
```

and see a similar window opening:

![B1 example](test/B1.png)

If you do not succeed in getting this image, or if you have questions what's the best way for you to install Geant4, please contact me on ESIPAP's Slack.

# How to build this application

You need to generate the `Makefile` using `cmake`, from the build directory:

```
mkdir build
cd build
cmake ../
```

After the `Makefile` is generated by the above `cmake` command you need to invoke
the `make` command to build (compile and link) your application with Geant4 toolkit:

```
make
```

If everything is compiled and linked successfully, the `yourMainApplication`
executable of the application is available under this build directory.


# Macro files

You can find a simple Geant4 macro file (`g4Macro.mac`) as well as the macro file that
allows to use visualization (`vis.mac`). Application can be execute either in
interactive (no any input argument) or in batch mode (the only one input argument
is a Geant4 macro file). So it can be run (from the build where the executable is located):

1. with the given "g4Macro.mac" file:

```
./yourMainApplication ../g4Macro.mac
```

2. in interactive mode:

```
./yourMainApplication
```

  This should result in getting a similar window as below:

  ![interactive mode](test/application_init.png)

  When executing in interactive mode, one can set up the visualisation before
  executing the simulation (but the run needs to be initialised before) by invoking
  the following commands in the UI session (either in the "QT" session or in the
  session "terminal"):

```
/run/initialize
/control/execute ../vis.mac
/control/execute ../g4Macro.mac
```

  Execution of `vis.mac` macro should result in following picture:

  ![vis.mac](test/application_vis.png)

  Execution of `g4Macro.mac` macro should result in following picture:

  ![g4Macro.mac](test/application_g4Macro.png)

# Experimental data

This application can be used to compute the distribution of energy deposited by
100 [MeV] electrons in 5.6 [um] thin silicon target. All relevant information
and macro files are located in experiment directory:
 - `exp_Meroli_100MeV_electron_5p6um_Si.dat` the experimental data taken from
   S. Meroli et al 2011 JINST 6 P06013:
   https://www.researchgate.net/publication/230949562_Energy_loss_measurement_for_charged_particles_in_very_thin_silicon_layers
 - `g4Macro_Meroli_100MeV_electron_5p6um_Si.mac` Geant4 macro to set this application
   to achieve the experimental setup (target material, thickness primary energy,
   particle type, etc.)
 - `gplot.p` is a `gnuplot` script i.e. input file to 'gnuplot' to create a nice
   plot that compares the result of our simulation and the experimental data
   (see more information inside this `gplot.p` file)
 - the remaining 3 files are the simulated energy loss histogram (`Hist_Edep.ascii`)
   copied here from the build directory, and two figures (same ones, in '.eps' and
   '.pdf' format) produced by the `gplot.p` script.