\page ExampleFinalState Example FinalState # Description This FlukaCern example allows the simulation of hadron-nucleus inelastic nuclear interactions, and the study of the resulting final states. It is an adaptation of `Hadr09` example. It offers all `Hadr09` features, and adds the possibility of accessing hadron-nucleus inelastic nuclear interaction final states FROM `FLUKA`. With respect to the `Hadr09` example, the program also adds the possibility of PLOTTING the final state: secondaries energy spectra, and residual nuclei distributions. All plots (created via the G4 analysis manager) can be dumped to any of the usually supported formats (e.g. ROOT format), as well as in a Flair-compatible format. Regarding the extension of `G4H1` to insure `Flair` compatibility, see `geant4/examples/extended/hadronic/FlukaCern/utils`. The class `HadronicGenerator` is the "generator". The main hadronic models (`CernFLUKAHadronInelastic`, `FTFP`, `QGSP`, `BERT`, `BIC`, `IonBIC`, `INCL`) are available. See `include/HadronicGenerator.hh` for more detailed information. In the `HadronicGenerator`, one can activate/desactivate coalescence and heavy fragments evaporation for `CernFLUKAHadronInelastic`. The main, `HadNucIneEvents.cc`, shows an example of how to use the event generator. In `HadNucIneEvents.cc`, one can select the physics models, as well as the projectile hadron, its energy, its direction, the target material, and the number of collisions. Note that the Geant4 run manager is not used. Before you can access the `FLUKA` hadron-nucleus inelastic models in this example, you will need to install and setup `FLUKA` and its interface. See the compulsory "Dependencies" paragraph below. A version of the interface to `FLUKA` is directly located at `geant4/examples/extended/hadronic/FlukaCern/FlukaInterface`. Note that for consistency, all calls to the random engine rely on the G4 random engine (including the calls from within the downloaded `FLUKA` release; see the `FlukaInterface` `GNUmakefile` to see how this is handled). # FLUKA inelastic hadron-nucleus interactions Hadron-NUCLEON interaction models are based on resonance production and decay below a few GeV, and on the Dual Parton model above. Hadron-NUCLEUS interactions: the PEANUT package includes a detailed Generalised Intra-Nuclear Cascade (GINC) and a preequilibrium stage, followed by equilibrium processes: evaporation, fission, Fermi break-up, gamma deexcitation. ``` A. Ferrari and P. Sala, “The Physics of High Energy Reactions,” in Proc. Workshop on Nuclear Reaction Data and Nuclear Reactors Physics, Design and Safety, p. 424, World Scientific, 1998. A. Ferrari and P. Sala, “Nuclear reactions in Monte Carlo codes,” Radiat. Prot. Dosimetry, vol. 99, no. 1-4, pp. 29–38, 2002. ``` # Dependencies ### Environment - **gcc** >= 7 (Linux) and **gcc** >= 9 (MacOS) In practice, a recent version is recommended, at least `gcc >=10`. ``` gcc --version ``` - **CMake** >= 3.16...3.21 ``` cmake3 --version ``` - **G4** >= 11.0.3 (Not tested on older G4 releases: might still work, but with no guarantee). IMPORTANT: YOU NEED TO SOURCE YOUR G4 ENVIRONMENT. It needs to be sourced in whichever terminal you want to build / run a G4 application with the `FLUKA` interface. ``` source path_to_geant4/install/bin/geant4.sh which geant4-config # NB: Your geant4-config should support the modern CMake way of building G4. ``` - **Easy setup on lxplus** (lxplus7): All you need to do on lxplus, to setup an environment satisfying all the conditions above, is, for example: ``` source /cvmfs/sft.cern.ch/lcg/releases/gcc/10.1.0/x86_64-centos7/setup.sh source /cvmfs/geant4.cern.ch/geant4/11.1/x86_64-centos7-gcc10-optdeb-MT/CMake-setup.sh # NB: Your geant4.sh is at: /cvmfs/geant4.cern.ch/geant4/11.1/x86_64-centos7-gcc10-optdeb-MT/bin/geant4.sh ``` ### `FLUKA4` Release: >= **4-3.2** Please install the latest `FLUKA` release. (1) You first need to register (and accept the licence when relevant): https://fluka.cern/download/registration (2) You can then download the `binary libraries` (or potentially the `source code` package, depending on your case): https://fluka.cern/download/latest-fluka-release. (3) Follow the `FLUKA` installation instructions: https://fluka.cern/documentation/installation In particular, for a Linux/MacOS install: https://fluka.cern/documentation/installation/fluka-linux-macos They will show you how to setup `FLUKA`. If (and only if) you went for the source code package option, you will need to build `fluka`, and, in addition, to do `make cpp_headers` at `path_to_fluka/src`. (4) Eventually, all you need are the headers `fluka_repo/include`, libraries `fluka_repo/lib`, and data `fluka_repo/data`. Check that they are not empty. Do not forget to add `/path_to_fluka/bin` to your `PATH`. Check with `which fluka`. ### `FlukaInterface` A version of the G4-FLUKA interface (`FLUKA` hadron-nucleus inelastic physics) is located at `geant4/examples/extended/hadronic/FlukaCern/FlukaInterface`. You will first need to build the interface to `FLUKA`, and create the environment scripts. ```bash $ cd geant4/examples/extended/hadronic/FlukaCern/FlukaInterface/ # Check with `which fluka` that fluka executable is added to your `PATH`. $ source path_to_geant4/install/bin/geant4.sh $ make interface $ make env # Creates `env_FLUKA.sh` and `env_FLUKA_G4_interface.sh` ``` IMPORTANT: `env_FLUKA_G4_interface.sh` needs to be sourced in whichever terminal you want to build / run a G4 application with the `FLUKA` interface. # Build this example ```bash $ cd geant4/examples/extended/hadronic/FlukaCern/ProcessLevel/FinalState/ # Check with `which fluka` that fluka executable is added to your `PATH`. $ source path_to_geant4/install/bin/geant4.sh $ source ../../FlukaInterface/env_FLUKA_G4_interface.sh $ mkdir build $ cd build $ cmake3 -DG4_USE_FLUKA=1 .. $ make -j8 ``` # Run this example ```bash $ cd geant4/examples/extended/hadronic/FlukaCern/ProcessLevel/FinalState/ # Check with `which fluka` that fluka executable is added to your `PATH`. $ source path_to_geant4/install/bin/geant4.sh $ source ../../FlukaInterface/env_FLUKA_G4_interface.sh $ ./build/HadNucIneEvents ``` # Study the final states All plots are dumped at the end of the run in `all_secondaries.ext`. 2 formats are supported: `ROOT` and `Flair`. - You can use `ROOT`: ```bash $ cd geant4/examples/extended/hadronic/FlukaCern/ProcessLevel/FinalState/ $ root all_secondaries.root ``` - Alternatively, the use of `Flair` is also supported. Please see http://flair.web.cern.ch/flair/download.html for `Flair` download. `Flair` tutorials are also available from that website. You can download the package corresponding to your distribution at the top of the page (no need for `geoviewer`, which is for geometry display). Then look at the requirements & installation instructions at the bottom of the page. If you face issues installing `Flair`, you can get support at: https://fluka-forum.web.cern.ch/c/installation/ An example file, showing how to directly visualize the final states with Flair, is provided in this G4 example. By default, it directly provides comparison plots: `FTFP_BERT` versus `QGSP_BERT` versus `CernFLUKAHadronInelastic`, 7TeV proton on C. You can very easily adapt it to any study of interest (choice of physics models, choice of secondaries, etc). ```bash $ cd geant4/examples/extended/hadronic/FlukaCern/ProcessLevel/FinalState/ $ mkdir -p results/FLUKAHadronInelastic results/FTFP_BERT results/QGSP_BERT $ $ # Choose physics case (modify HadNucIneEvents.cc), compile the G4 example, then run physics case: $ cd results/FLUKAHadronInelastic $ ../../build/HadNucIneEvents $ # Etc for EACH physics case: FLUKAHadronInelastic, FTFP_BERT, QGSP_BERT. $ $ cd geant4/examples/extended/hadronic/FlukaCern/ProcessLevel/FinalState/ $ ./update_final_state_flair_file.sh # Update `Det` indices in Flair file, to the ones observed in your simulation. $ flair study_final_state.flair & ``` In the `Plot` tab, you can select the plot of interest in the left column, and then click `Plot` (top banner, yellow button). You can select a physics case by clicking on its name in the `Detectors` box (center). You can then decide to change its color, line width (`Options` box). You can decide to plot it or not, by selecting / unselecting `graph` in the `Show` box (in the center). IMPORTANT: You can select any secondary data (or residual nuclei data) which was created, by chosing in the `Det` selection (button on the right). IMPORTANT: If a secondary does not appear in the `Det` drop-down menu, it means it is not part of the final state. In that case, you will want to unselect `graph`, so that no other secondary (see `Det`) is plotted. You can change the path of the data file by clicking on the folder button (button on the right). You can set the plots extrema, as well as select or unselect the log format, in the top right corner.