SciFi Simulation and Reconstruction

This WP covers simulation, reconstruction and alignment of the SciFi Tracker.

Develops an accurate but flexible model of the detector in order to reproduce and predict detector and physics performance parameters. In collaboration with the LHCb T&A group, it develops efficient tracking and alignment algorithms.

Mailing list : ( archive).

Meetings: Monday at 13:00 CERN time.



For a description on how to set up and how to run the data monitoring, see the Monitoring CodiMD. A shorter version of how to set up the monitoring stack is also available at Contr. & Moni TWiki.

Add histogram to MONET

JIRA list of tasks

Alignment + Calibration

Please note: alignment is a crossover topic between SciFi software and RTA WP4/5. SciFi align+calib roundtable catch up is on Tuesdays at 11am

Institute commitment: EPFL, Dortmund

People currently assigned: Sophie Hollitt, Nils Breer, Fred Blanc, Maria Vieites Diaz, Izaac Sanderswood, Giulia Tuci, Biljana Mitreska

JIRA list of tasks SciFi alignment tasks for 2023 data taking preparation Quick SciFi alignment guide


Institute commitment: NIKHEF

People currently assigned: Daniel Unverzagt, Emmy Gabriel, Blake Leverington (ext)

JIRA list of tasks Digitisation tutorial


Institute commitment:

People currently assigned: Louis Henry, Johannes Heuel, Gediminas Sarpis, Hendrik Jage, Zehua Xu

JIRA list of tasks

Code improvement

Institute commitment:

People currently assigned

JIRA list of tasks


Institute commitment: LPC

People currently assigned: Zehua Xu, Jessy Daniel, Vincent Tisserand, Louis Henry

JIRA list of tasks

Details about current tasks

Digitisation (Emmy, Daniel U. Helping: Blake, Louis):

Daniel is working on the note, with Louis helping
Emmy is working on the effective noise simulation in coordination with Blake.
A summary and tutorial of the effective noise model can be found here.
MR effective noise model MR crosstalk model

Alignment (Sophie, Fred):

Constraints are now in the software, and weak modes are being understood as well as a more efficient parameterisation. List of tasks:

Mail from Sneha Malde:

For each subdetector we need to know

  1. precision of metrology for each element
  2. if expected (or not completely excluded) any movement and which type (rotation, translation) due to any reason: cooling, closing of the detector, magnetic field, HV etc.
  3. any expected distortions on long term as blending
  4. precision of the global position of each subdetector (e.g. we could have a z scaling of the full tracking system).
  5. any mechanical monitor like rasnik or bcam? what will it measure and with which precision?
Point 1 and 2 can be used to create a starting point of misalignment scenario.

This misalignment can be used also to define a monitoring sensitive to the misalignment of each detector. Ideally we should have for the expected misalignment or each weak mode a sensitive plot.

From this misalignment scenario, we can run the alignment:

  • to optimize the data sample needed for the alignment
  • to define the constraints
  • to define a procedure for the alignment for day one
  • to determine the alignment accuracy The alignment accuracy will be the input for data challenge to have a simulation "more realistic" to what we expect.

The point 3 is very important and it should be studied how to monitor it and if we are able to align for it and with which precision. Consider that this kind of distortions of the detector should be considered in advance if we need to have 2 sub-element of a particular detector element.

About point 5, it would be good to study in advance in a way we can compare the alignment results with the mechanical measurements. In case this measurements for some dofs could be used as constraint in the alignment.

Ideally one could also applied some magnetic field distortions on the top of misalignment to see if the alignment is able to "correct/compensate" the magnetic field.

Monitoring (Lex, Kazu, Louis):

Version 7 of the decoding/encoding will include some link switching, and is already roughly implemented. A tutorial of the monitoring software is described here. We now need to:

- implement sorting of clusters and study the residual sorting of clusters;
- implement the corresponding encoding;
- test this with text outputs and validate it;
- discuss with RTA & hardware about constraints;
- implement better, more resilient testing;
- implement better Excel-to-DDDB transcription;
- do the same for NZS and counter.

Geometry (Zehua):

Progress status

Timing Scans (Emmy Gabriel, Lex Greeven):

Status 29/08/2022

Beam Scans (Zehua, Blake, Chishuai, Kazu Lex ...):

Status 29/08/2022

Note to elaborate on the methodology;

Twiki page to summarize fine time alignment;

Development and software status

All bugs, proposals for future development are described in the JIRA tasks: LHCBSCIFI.

Relevant LHCb Projects:

  • LHCb: contains general purpose classes used throughout the LHCb software latest release gitlab
  • Boole: digitization is the final stage of the LHCb detector simulation. Boole applies the detector response to hits previously generated in sensitive detectors by the Geant4 based simulation application ( Gauss). Additional hits are added from from Spillover events and LHC background. The digitization step includes simulation of the detector response and of the readout electronics, as well as of the L0 trigger hardware. The output is digitized data that mimics the real data coming from the real detector. latest release gitlab
  • Rec: groups together the components related to event reconstruction. latest release gitlab
  • LHCb-CondDB/DDDB: Detector geometry and setup database gitlab
  • LHCb-CondDB/SIMCOND: Simulation conditions database gitlab [attenuation maps etc..]

Status of branches in LHCb-wide software

Eos space for data samples, large files: /eos/lhcb/wg/SciFi [to have write permission, contact lhcb-scifi-software-managers ]

Project specific Gitlab repositories

All software that is not in the main LHCb repositories is located in:

There the main software projects are:

Project Description Responsible Active
GaudiBasedTestbeamAnalysis Development tools for test beam analysis software Adam Davis Y
SciFiCustomGeo Tools for modified geometries and production of simulation samples Alessio Piucci N
LightYieldMapTools Production of Light Yield Maps from Single Fibre GEANT4 Simulations   Y
SciFiSimG4 Simulation of Scintillating Fibres in GEANT4 Martin Bieker Y
SciFiTestbeamAnalysisAndSimulation Software for the analysis of testbeam data, in particular for pedestal and gain correction, and clusterisation in the test beam setup. The output can be used to compare to simulation.   N
DigitizationHackathon Repository holding instructions, scripts, and custom code for the DigitizationHackathon. Violaine Belle N

Geometry versions

The official Gauss version that is compatible with all v6 geometries is GAUSS_v51r0.

6.5: addel dowels, cables, corrected materials
  • dddb-20201211
  • upgrade/sim-20201218-vc-md100
  • upgrade/sim-20201218-vc-mu100
  • Gauss/v54r5
  • Boole/41r3
6.4: definitive C-frames
  • dddb-20180815
  • upgrade/sim-20180530-vc-md100
  • upgrade/sim-20180530-vc-mu100

v6.3 + updated (doubled) mass C-frame, fix v-layer position
Please contact coordinators if you need unofficial samples...

evt: 13104012 mag = down /eos/lhcb/user/g/gligorov/UpgradeStudies/FTv4Sim/147

evt: 13104012 mag = up /eos/lhcb/user/g/gligorov/UpgradeStudies/FTv4Sim/146

  • dddb-20180815
  • upgrade/sim-20180530-vc-md100
  • upgrade/sim-20180530-vc-mu100

v6.3 + updated (doubled) mass C-frame, fix v-layer position
Please contact coordinators if you need unofficial samples...

evt: 13104012 mag = down /eos/lhcb/user/g/gligorov/UpgradeStudies/FTv4Sim/147

evt: 13104012 mag = up /eos/lhcb/user/g/gligorov/UpgradeStudies/FTv4Sim/146



Geometry version Database tags (or later) Description Samples
  • dddb-20170301
  • sim-20170301-vc-md100
New numbering scheme, backward incompatible Bs → φφ with spillover, nu=7.6
  • dddb-20170724
  • sim-20170301-vc-md100
v6.1 + C-frames, new station positions, removed overlaps Bs → φφ with noise and spillover, nu=7.6
D0→Kπ with noise and spillover, nu=7.6
  • dddb-20171122
  • sim-20171123-vc-md100
v6.2 + module side walls, circular cutout, larger air gap between modules, and larger y-gap between mats Bs → φφ with noise and spillover, nu=7.6
D0→Kπ with noise and spillover, nu=7.6

Decoding/Encoding versions

Decoding version Encoding version LHCb Boole Info Available test samples
v2 v2        
v3 v3        
v4 v5     Starting from v4, clusters only contain relative positive of the channel.
Use bankNumber to get the starting point.
v5     Splits large clusters  
v6 v6        
v7 (being made) v7 (being made)     Adds link switching, remaps SiPMs, updates clusterpseudosize  

Supporting notes

Student theses (including software) can be found on the main SciFi Twiki page.

Notes in preparation:

Internal notes prepared for the SciFiSoftwareReview on 24 Jan 2018:

Public notes prepared for the TDR :

Other supporting documents:

More related to Electronics:

  • EDMS/1356904: Front-end Data Format of the LHCb Upgrade, Guillaume Vouters et al.
  • EDMS/1904563: SciFi Tracker TELL40 Data Processing, O. Le Dortz et al.
  • EDMS/1898940: SciFi Tracker FE data format, O. Le Dortz et al. (Access request needed!)
  • EDMS/2148855: SciFi Optical Links Cabling Access request needed)

Previous workshops and reviews


Compile Boole in the LHCb stack

The easiest way to get a stable, working setup is to use from Rosen. For more information/documentation about this, please check the referred link to the GitLab repository.

To set up the stack, first choose and cd into a directory where your stack will reside, for example, `$HOME` or `/afs/`. Then run the following to set up the necessary files and set up Boole.

curl | python3 - stack_SciFi
make Boole

Compile Boole with fully checked-out packages

To work with fully checked-out projects (change the project versions accordingly):

LbLogin -c x86_64-slc6-gcc62-opt
export CCACHE_DIR=${PWD}/.ccache
export VERBOSE=""
export PATH=${PATH}:/cvmfs/ 
git clone ssh:// LHCB/LHCB_v43r1 
cd LHCB/LHCB_v43r1/ 
make install
git clone ssh:// LBCOM/LBCOM_v21r1 
cd LBCOM/LBCOM_v21r1 
make install
git clone ssh:// BOOLE/BOOLE_v31r3 
cd BOOLE/BOOLE_v31r3 
make install

This installs all software in the master branches. If you want to switch to branch myDevelopmentBranch, you can use the usual git command:

git checkout myDevelopmentBranch

To start a new branch myNewBranch based on the current branch:

git checkout -b myNewBranch

To push this new branch to the remote repository for the first time:

git push -u origin myNewBranch

And just git push the following times. Before making any changes, or create a new branch it is always good to:

git pull

To run the software, make a shell in your favourite project as:

BOOLE/BOOLE_v31r3/build.x86_64-slc6-gcc49-opt/run bash -f

And use etc. Or run directly:


Check out only a few packages:

Instead of working with fully checked-out projects, you can also check out single packages. This may be useful in case you have changes that are only affecting these packages. For more detailed instructions see: Git4LHCb

lb-dev Boole v31r3
cd ~/cmt/BooleDev_v31r3/
git lb-use Boole
git lb-checkout Boole/dev-scifi-master FT
git lb-use LHCb
git lb-checkout LHCb/dev-scifi-master Event
<do some changes>
git commit --all -m "some description goes here"
# if you'd have changes for the project Boole do
git lb-push Boole <name_of_the_branch>
# if you'd have changes for the project LHCb do
git lb-push LHCb <name_of_the_branch>

Test your commit with nightly tests

lb-dev --nightly lhcb-gaudi-head Brunel/HEAD
cd BrunelDev_HEAD
git lb-use Brunel
git lb-use Rec
git lb-checkout Brunel/master Rec/Brunel
git lb-checkout Rec/dev-beamhole Pr/PrAlgorithms
make test ARGS="-R brunel-upgrade-baseline"

Using a local geometry with the Git-based CondDB

Recently the CondDB repository moved to Git, and the way how to use a not-released geometry changed. In order to create your own geometry, get the geometry from which you want to start, modify the files that you want in a new branch, and tag a new database version. You first have to set and env. variable, get the repository and checkout the geometry that you want to use:

export GITCONDDBPATH=$(pwd)
git clone --recursive ssh://
git fetch --all --tags
git checkout upgrade/dddb-20170706
git checkout -b <your-branch>
git add <your-files>
git commit -m "<commit-message>"
git tag -a upgrade/<tag-name> -m "<tag-commit-message>"

It's suggested to save the GITCONDDBPATH variable in your default environment setting (e.g. in .bashrc profile file). Now you are ready to use your local geometry, by setting in your script the tag in this way:

LHCbApp().DDDBtag = "<tag-name>"

Once you are happy with the changes, you can push your branch:

git push origin <your-branch>

and apply for a merge request if you wish. Once you have pushed the branch, you can use it on Grid jobs (after 2-3 hours). by setting the tag:

LHCbApp().DDDBtag = "<your-branch>"

In case your geometry is not picked up, you may need to put in your options file:

from Gaudi.Configuration import *
def fix_upgrade_dddb_tag():
    allConfigurables['ToolSvc.GitDDDB'].Commit = '<your-branch>'
    allConfigurables['ToolSvc.GitSIMCOND'].Commit = 'upgrade/sim-20170301-vc-md100'

and you will obtain the new geometry.


Running the Boole digitisation

Once you have a running setup, you can run your options file. If you do not know where to start, an example basic digitisation options file is being added to Boole and can be found [[here][].

Boole/run path/to/your/
# or
Boole/run Boole/FT/FTDigitisation/options/

  • SciFi _digitisation_workflow:

Adding effective noise parameters

A tutorial can be found here.

Topic attachments
I Attachment History Action Size Date Who Comment
PDFpdf FTOccupancy-Note.pdf r3 r2 r1 manage 402.6 K 2013-09-05 - 15:06 MoritzDemmer  
PNGpng Logo.png r1 manage 330.0 K 2013-12-17 - 14:21 AlbertPuigNavarro  
PNGpng SciFi_Logo.PG.png r1 manage 167.8 K 2013-12-25 - 20:20 PetrGorbounov post-TVR dinner logo
PNGpng SciFi_Logo_HC.png r1 manage 11.3 K 2013-10-23 - 17:45 YasmineAmhis  
PNGpng SciFi_Logo_OG.png r4 r3 r2 r1 manage 38.9 K 2013-10-25 - 16:19 OliverGruenberg  
PNGpng scifi_blake_greek.png r1 manage 53.9 K 2013-12-16 - 11:41 BlakeLeverington logo with greek letters
PNGpng scifi_blake_greek2.png r2 r1 manage 47.1 K 2013-12-16 - 13:52 BlakeLeverington logo with greek letters
PNGpng scifi_digitisation.png r1 manage 198.1 K 2021-11-12 - 16:11 EmmyPaulineMariaGabriel SciFi_digitisation_workflow
PNGpng scifi_logo2_michel.png r1 manage 7.6 K 2014-01-13 - 15:39 MichelDeCian  
PNGpng scifi_logo2a_michel.png r1 manage 9.1 K 2014-01-13 - 15:39 MichelDeCian  
PNGpng scifilogo_blake_medium.png r1 manage 52.1 K 2013-12-16 - 11:27 BlakeLeverington Blake's SciFi logo submission, medium size
Edit | Attach | Watch | Print version | History: r268 < r267 < r266 < r265 < r264 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r268 - 2023-03-13 - ZehuaXu
    • Cern Search Icon Cern Search
    • TWiki Search Icon TWiki Search
    • Google Search Icon Google Search

    LHCb All webs login

This site is powered by the TWiki collaboration platform Powered by PerlCopyright & 2008-2023 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
or Ideas, requests, problems regarding TWiki? use Discourse or Send feedback