TWiki> LHCb Web>ListOfSimTests (16 Oct 2019, _2fDC_3dch_2fDC_3dcern_2fOU_3dOrganic_20Units_2fOU_3dUsers_2fCN_3dpswallow_2fCN_3d843199_2fCN_3dPaul_20Nathaniel_20Swallow? ) EditAttach

Simulation Tests

A list of all LHCbPR tests including information on who is responsible for maintenance and modifications within the Birmingham LHCb Group.

Test Summary

Geant 4 Standalone Tests

Test Description Responsible JIRA
Hadronic Cross Sections Investigate interaction cross-sections used by G4 hadronic physics lists. Protons on Aluminium, Silcion and Berylium. Kaons and pions on aluminium. Check over different energy range and particle - anti particle Paul
Calorimeter Model LHCb Calo in G4, fire electrons of different energies, fit distribution of energies deposited in scintillator to determine fractional resolution of the ECAL Naomi
Multiple Scattering To test multiple scattering models in G4 as they change electrons are fired into a 300micron thick sheet of silicon (model VELO) and mesaure angle electrons scattered through. Test repeated at 13 different electron energies. Use RMS of central 98% of angles as comparison metric. Jon
DiLepton Production on a Fixed Target Based on the G4 TestEM6? , this test consists of a particle gun firing photons at energies between 1 and 100GeV at a 300micron Aluminium target to simulate pair production within the RF foil of the VELO. Jon

Gauss Full Simulation Tests

Test Description Responsible JIRA
Hadronic Multiplicities & Cross Sections

Uses methods in Gauss to find multiplicities and cross sections
for various materals.

Radiation Length and Absorption Constructs 2D maps of each of the LHCb sub-detectors measured
in terms of number of radiation/interaction lengths. Also includes
a VELO z axis scan.
dE/dx in Thin Layer

Fire muons, electrons and pions through VELO at discrete energies, compare energy depositied for each energy, particle and physics list. MPV(Most probable value) and FWHM extracted from dE/dx distributions for 300 micron path lengths

Bremsstrahlung   Ryan
Muon Multiple Scattering Monitors Muon Multiple Scattering between Muon stations, so covers MSc in Calorimeters, between M2 and M3, M3 and M4 and M4 and M5. Measure displacement v.s. angle, displacement v.s. momentum, momentum v.s. angle. Ryan
Bremsstrahlung (#2) test ? Nigel (according to JIRA)

DiLepton Production on a Fixed Target Test

This test is a modified version of TestEM6 within the Geant4 pre-made examples and as such is standalone not requiring any input from Gauss. The purpose of the test is to simulate dilepton production due to photons interacting with the aluminium RF foil of the VELO sub-detector. The properties of invariant mass, angle between the incident photon and the vector of the daughter lepton momenta, and the fraction of the parent photon energy taken by each lepton are all stored as histograms. To boost statististics the dimuon production cross section has been increased by a factor of 1000 within the test.


The test is contained within the LHCb Geant4 project and so can be run directly:

$ lb-run Geant4/latest bash --norc 

Hadronic Multiplicities & Cross Sections Test

As opposed to obtaining the multiplicities and cross-sections associated with a particle colliding with a target material through the G4 tables this test uses simulation to deduce them within Gauss. A particle gun is created which fires either kaons, pions or protons at different energies towards a number of targets consisting of various materials and different thicknesses for different G4 physics lists. The values themselves are calculated using the categories of the daughters produced within the interactions (e.g. elastic/inelastic etc.).


The test is contained within the Sim/SimChecks package within Gauss, due to the large number of possibilities from cycling through various energies, materials, thicknesses, physics lists and particles it is recommended that during any maintenance or development you instead run the shorter example bash script:

$ LbLogin -c x86_64-slc6-gcc7-opt 
$ lb-dev --nightly lhcb-gauss-dev Gauss/HEAD 
$ cd GaussDev_HEAD
$ git lb-use Gauss
$ make -j   
$ ./run bash --norc
$ bash $SIMCHECKSROOT/scripts/

If however you wish to run with certain options you can use instead the python script with includes a number of arguments which can be passed to the test. The options are mostly lists passed in the command line in the quotation marks "[item1, item2]", for example:

$ python $SIMCHECKSROOT/options/Target/ --physList "[QGSP_BERT, FTFP_BERT]"$

Option Description
--physList The physics lists to run, options are "QGSP_BERT", "FTFP_BERT"
--materialList The materials to iterate through, options are "Al", "Si", "Be"
--thicknessList List of thicknesses in mm
--pgunList List of particles for the particle gun, "Piminus", "Piplus", "Kplus", "Kminus", "p", "pbar"
--energyList List of energies for the particle gun

NOTE: Currently this test forces a return of 0 in order to not be listed as "failed" by LHCbPR and be removed. The reason for this is due to a Python error which has yet to be resolved (not encountered by any other Python users).

RadLength Test

The purpose of the Radiation Length & Absorption Test is to monitor the radiation and interaction length properties of the constituent materials for each LHCb sub-detector. Measurements of these properties are carried out by Geant4 using a set of "scoring planes" placed within the LHCb detector geometry at positions just past each sub-detector. In total there are 11 such planes which exist within the radlength-tags branch within the Git based CondDB project which is maintained on GitLab. The test is part of the Sim/SimChecks package within Gauss. It is formed of two main parts:

  • The first consists of the performance of a set of 2D scans in which a Geant4 particle gun is initialised and fires muon neutrinos at a momentum of 50GeV from various positions across the η-Φ plane at a fixed z position.
  • In the second stage, the same gun is positioned at different z positions within the VELO and the properties of radiation length and interaction length are recorded as a function of this displacement.

The RadLengthColl tool which exists within the Sim/GaussTools area within Gauss is used to collect the information from Geant4 and then fill the information into a tuple structure. The full address of the C++ code is:



To manually run this test you will need to setup the Gauss environment from a local development version of Gauss:

$ LbLogin -c x86_64-slc6-gcc7-opt 
$ lb-dev --nightly lhcb-gauss-dev Gauss/HEAD 
$ cd GaussDev_HEAD 
$ git lb-use Gauss
$ make -j 
$ ./run bash --norc 
$ bash $SIMCHECKSROOT/scripts/ 

This will run both parts of the test in the same manner it is executed within LHCbPR. However a few options have been made available to add more control to the options executed, for the 2D scans the relevant script is $SIMCHECKSROOT/scripts/ which is run using python and has the following command line options:

Option Description
--debug Runs the test in debug mode giving more output information
--debug-gauss This sets Gauss' own debug option
--gauss-geo Forces use of GaussGeo as the geometry reader
--giga-geo Forces use of GiGaGeo as the geometry reader
--plot-only If the output ROOT files already exist and you only want to remake the plots
--no-plots Inverse of the above, test is run but only ROOT files are made
--zlim Attempt at limiting the z axis scale in the 2D scans
--Help Shows these options

Likewise the second part of the test which performs the scan of the VELO across the z axis also has additional options and is run using python with the file $SIMCHECKSROOT/scripts/, the options are a little different:

Option Description
--debug Runs the test in debug mode giving more output information
--debug-gauss This sets Gauss' own debug option
--gauss-geo Forces use of GaussGeo as the geometry reader
--giga-geo Forces use of GiGaGeo as the geometry reader
--mode Run either "Scan" only or "Plots" only or "All" stages
--pdfs Produce PDF versions of the plots also
--Help Displays these options

Visualisation & Scoring Planes

As read from the CondDB project in 2019, the positions and dimensions of these planes are:

Plane # Size (x, y, z)/mm z Position/mm Description
1 (3500,3500,1) 2240 VELO
2 (12000, 12000, 1) 2715 RICH1/TT
3 (12000, 12000, 1) 7570 Magnet
4 (8190, 6070, 1) 8200 OT1
5 (8190, 6070, 1) 8900 OT2
6 (8190, 6070, 1) 9440 OT3
7 (12000, 10000, 1) 11897 RICH2
8 (12000, 10000, 1) 12500 Detached Muon, pre-SPD
9 (15000, 12000, 1) 13360 ECAL
10 (15000, 12000, 1) 15063 HCAL
11 (15000, 12000, 1) 19895 LHCb

An overlap in geometry leads to segmentation faults when performing the sub-detector scan with all 11 scoring planes in situ, this is because the first scoring plane being positioned within the RICH1 location. For this reason the first part of the test is actually executed in three parts, the first obtains the readings for the VELO with only the geometry of the VELO switched on, the second performs the same procedure recording the plane-to-plane radiation and interaction lengths this time with the VELO switched off and all other sub-detectors present. Finally to obtain the cumulative scans the procedure is repeated with the whole geometry present.

The 11 planes can be visualised in situ using the Panoramix project within LHCb software:

$ lb-run Panoramix/latest bash --norc

In order to use the radlength-tags version of the geometry dump the following options to a file

from Configurables import LHCbApp 
LHCbApp().DDDBtag = 'radlength-tags' 
LHCbApp().Simulation = True 
LHCbApp().CondDBtag = 'sim-20170721-2-vc-md100'

Then run the software using:

$ python $myPanoramix --BareConfig 1 -f none -v


-- RyanBernardCalladine? - 14 Feb 2019

Edit | Attach | Watch | Print version | History: r9 < r8 < r7 < r6 < r5 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r9 - 16 Oct 2019 - _2fDC_3dch_2fDC_3dcern_2fOU_3dOrganic_20Units_2fOU_3dUsers_2fCN_3dpswallow_2fCN_3d843199_2fCN_3dPaul_20Nathaniel_20Swallow?
This site is powered by the TWiki collaboration platform Powered by Perl This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback