Information for Liaisons¶
MC liaisons are the contacts between the Simulation Project and the Physics Working Groups. Duties include:
collecting MC production requests from analysts and preparing them in LHCbDIRAC,
producing generator statistics tables for completed productions,
responding to faulty productions and ensuring they get fixed,
relaying news between the weekly Simulation meeting and relevant WG meeting,
maintaining the relevant WGConfig datapackage.
Becoming a liaison¶
Each working group typically appoints one or two MC liaisons for a limited time period. If you are interested in becoming and MC liaison, you can discuss with your WG convenors.
The WG convenors should inform the Simulation Project coordinators of any new MC liaisons, so that they can be added to the appropriate egroups. The new liaisons should also attend the annual training session, usually held early in the year.
Handling production requests¶
Before submitting a request, you should check that you have all of the required information:
event types and numbers of events per year and magnet poliarity,
output filetype (MDST, DST, …),
simulation conditions and processing passes, i.e.
collision type (beam particles and energies),
stripping version,
any special trigger/reconstruction versions.
Note
For filtered requests, please follow the procedure specified in the FilteredSimulationProduction TWiki page.
You should also check that any new code that the requests need has been released and deployed. This can include new DecFiles, new C++ code in Gauss, new options files in AppConfig, etc.
After submitting a request, the WG convenors should be notified and sign each request, while also assigning a priority level. Technical checks are also made by an expert. After this, the request will be “accepted” by the production manager, and test jobs will be launched. If the test jobs succeed, the request becomes “active” and spawns jobs on the Grid until the desired sample size is reached. If the test jobs fail, the production manager will create a Jira task and contact the MC liaison(s) for the appropriate WG, who should chase up the relevant experts to ensure that it gets fixed.
Histograms produced in the test jobs are also checked by the DQCS shifter, who will alert the production manager of any data-quality issues they might spot (see SimDQ).
Once a request is finished, the generator statistics tables should be generated.
Request size limits¶
While all production requests require approval from the WG convenors, additional approval from the PPG is required when the number of events exceeds certain thresholds. This is flagged by the PPG Approval Flag in the submission repository, in case the system detects that the request exceeds the thresholds. This is not something the MC liaison should deal with directly, but just be aware this might be a cause of some delay.
The system will flag the request for PPG approval if:
DST events > 20 M
Others > 100M
Generated Events > 500 M
Creating requests with LbMCSubmit¶
LbMCSubmit is a new tool for creating simulation production requests, which is intended to replace the LHCbDIRAC web interface for the majority of request types.
The submission procedure is similar to that of Analysis Productions: requests are specified in YAML and committed to a branch in the submission repository on GitLab. Automatic test productions are submitted by the CI, and once the branch is merged, the full requests are submitted.
Writing a YAML file¶
The minimal specification (“stage 0”) should be sufficient to cover all common use-cases — if not, please open an issue and the developers can add missing features. If you have a rare/one-off use case which is not covered by this, please get in touch with an expert.
The mandatory top-level fields to specify are sim-version
, name
,
inform
, WG
, and samples
, where samples
is a list of dicts with
mandatory keys event-types
, data-types
(i.e. years), num-events
.
Using only the mandatory keys will create Pythia8 proton–proton requests with
MDST output and default processing pass versions for each specified year. By
default, equal-size requests will be produced for both magnet polarities
(MagUp
and MagDown
).
Tip
On this page, we will focus on examples, but please also consult the full stage 0 YAML schema.
Example: only mandatory keys¶
Below is a minimal example using only the mandatory keys, along with the
corresponding full specification (“stage 6”) file that LbMCSubmit will produce.
The example asks for samples of event types 23103005
and 23103006
,
produced in proton–proton collisions in the years 2012 and 2016 for the Charm WG.
Some things to notice:
This example generates 8 requests in total (2 years × 2 magnet polarities × 2 event types).
The
num-events
field is applied to each polarity, year and event-type, for a total of 800,000 events.The
inform
key can take usernames or email addresses.The individual requests are titled according to the pattern
<name> <year> <collision type> <magnet polarity>
.Several default values are used, (see other examples for how to customise):
Generator: Pythia8,
Collision type: proton–proton,
Stripping: 21 for 2012 and 28r2 for 2016 (see the source code for the full list),
Output filetype: MDST.
sim-version: 09
name: Ds2KKpi
inform:
- auser
- firstname.surname@cern.ch
WG: Charm
samples:
- event-types:
- 23103005
- 23103006
data-types:
- 2012
- 2016
num-events: 100_000
- type: Simulation
priority: 2a
name: Ds2KKpi 2012 pp MagUp
mc_config_version: '2012'
sim_condition: Beam4000GeV-2012-MagUp-Nu2.5-Pythia8
author: null
inform:
- auser
- firstname.surname@cern.ch
comment: ''
wg: Charm
retention_rate: 1.0
event_types:
- id: '23103005'
num_events: 100000
num_test_events: 10
- id: '23103006'
num_events: 100000
num_test_events: 10
steps:
- name: Sim09l - 2012 - MagUp - Pythia8
processing_pass: Sim09l
visible: true
application:
name: Gauss
version: v49r24
binary_tag: x86_64-slc6-gcc48-opt
options:
- $APPCONFIGOPTS/Gauss/Sim08-Beam4000GeV-mu100-2012-nu2.5.py
- $APPCONFIGOPTS/Gauss/DataType-2012.py
- $APPCONFIGOPTS/Gauss/RICHRandomHits.py
- $APPCONFIGOPTS/Gauss/NoPacking.py
- $DECFILESROOT/options/@{eventType}.py
- $LBPYTHIA8ROOT/options/Pythia8.py
- $APPCONFIGOPTS/Gauss/G4PL_FTFP_BERT_EmNoCuts.py
data_pkgs:
- AppConfig.v3r412
- Gen/DecFiles.v30r87
input: []
output:
- type: SIM
visible: false
dbtags:
DDDB: dddb-20170721-2
CondDB: sim-20160321-2-vc-mu100
- name: Digi14c for 2012
processing_pass: Digi14c
visible: false
application: Boole/v30r4
options:
- $APPCONFIGOPTS/Boole/Default.py
- $APPCONFIGOPTS/Boole/DataType-2012.py
- $APPCONFIGOPTS/Boole/NoPacking.py
- $APPCONFIGOPTS/Boole/Boole-SetOdinRndTrigger.py
data_pkgs:
- AppConfig.v3r412
input:
- type: SIM
visible: false
output:
- type: DIGI
visible: false
- name: L0 emulation for 2012 - TCK 0x0045
processing_pass: L0Trig0x0045
visible: false
application: Moore/v24r4
options:
- $APPCONFIGOPTS/L0App/L0AppSimProduction.py
- $APPCONFIGOPTS/L0App/L0AppTCK-0x0045.py
- $APPCONFIGOPTS/L0App/DataType-2012.py
data_pkgs:
- AppConfig.v3r412
input:
- type: DIGI
visible: false
output:
- type: DIGI
visible: false
options_format: l0app
- name: TCK-0x409f0045 Flagged for 2012
processing_pass: Trig0x409f0045
visible: true
application:
name: Moore
version: v14r8p1g1
binary_tag: x86_64-slc5-gcc46-opt
options:
- $APPCONFIGOPTS/Moore/MooreSimProductionForSeparateL0AppStep.py
- $APPCONFIGOPTS/Conditions/TCK-0x409f0045.py
- $APPCONFIGOPTS/Moore/DataType-2012.py
data_pkgs:
- AppConfig.v3r412
input:
- type: DIGI
visible: false
output:
- type: DIGI
visible: false
- name: Reco14c for MC 2012
processing_pass: Reco14c
visible: true
application:
name: Brunel
version: v43r2p13
binary_tag: x86_64-slc5-gcc46-opt
options:
- $APPCONFIGOPTS/Brunel/DataType-2012.py
- $APPCONFIGOPTS/Brunel/MC-WithTruth.py
- $APPCONFIGOPTS/Brunel/Sim09-Run1.py
- $APPCONFIGOPTS/Persistency/DST-multipleTCK-2012.py
data_pkgs:
- AppConfig.v3r412
input:
- type: DIGI
visible: false
output:
- type: DST
visible: false
- name: Stripping21NoPrescalingFlagged for 2012
processing_pass: Stripping21NoPrescalingFlagged
visible: true
application: DaVinci/v36r1p5
options:
- $APPCONFIGOPTS/DaVinci/DV-Stripping21-Stripping-MC-NoPrescaling.py
- $APPCONFIGOPTS/DaVinci/DV-RedoCaloPID-Stripping21.py
- $APPCONFIGOPTS/DaVinci/DataType-2012.py
- $APPCONFIGOPTS/DaVinci/InputType-DST.py
- $APPCONFIGOPTS/DaVinci/DV-Stripping-MC-muDST.py
data_pkgs:
- AppConfig.v3r412
input:
- type: DST
visible: false
output:
- type: ALLSTREAMS.MDST
visible: false
- name: Merge for ALLSTREAMS.MDST
processing_pass: merging
visible: false
application: DaVinci/v46r5
options:
- $APPCONFIGOPTS/Merging/DVMergeDST.py
- $APPCONFIGOPTS/DaVinci/DataType-2012.py
- $APPCONFIGOPTS/Merging/WriteFSR.py
- $APPCONFIGOPTS/Merging/MergeFSR.py
- $APPCONFIGOPTS/DaVinci/Simulation.py
data_pkgs:
- AppConfig.v3r412
input:
- type: ALLSTREAMS.MDST
visible: true
output:
- type: ALLSTREAMS.MDST
visible: true
options_format: merge
- type: Simulation
priority: 2a
name: Ds2KKpi 2016 pp MagUp
mc_config_version: '2016'
sim_condition: Beam6500GeV-2016-MagUp-Nu1.6-25ns-Pythia8
author: null
inform:
- auser
- firstname.surname@cern.ch
comment: ''
wg: Charm
retention_rate: 1.0
event_types:
- id: '23103005'
num_events: 100000
num_test_events: 10
- id: '23103006'
num_events: 100000
num_test_events: 10
steps:
- name: Sim09l - 2016 - MagUp - Pythia8
processing_pass: Sim09l
visible: true
application:
name: Gauss
version: v49r24
binary_tag: x86_64-slc6-gcc48-opt
options:
- $APPCONFIGOPTS/Gauss/Beam6500GeV-mu100-2016-nu1.6.py
- $APPCONFIGOPTS/Gauss/EnableSpillover-25ns.py
- $APPCONFIGOPTS/Gauss/DataType-2016.py
- $APPCONFIGOPTS/Gauss/RICHRandomHits.py
- $DECFILESROOT/options/@{eventType}.py
- $LBPYTHIA8ROOT/options/Pythia8.py
- $APPCONFIGOPTS/Gauss/G4PL_FTFP_BERT_EmNoCuts.py
data_pkgs:
- AppConfig.v3r412
- Gen/DecFiles.v30r87
input: []
output:
- type: SIM
visible: false
dbtags:
DDDB: dddb-20170721-3
CondDB: sim-20170721-2-vc-mu100
- name: Digi14c for 2016+spillover
processing_pass: Digi14c
visible: false
application: Boole/v30r4
options:
- $APPCONFIGOPTS/Boole/Default.py
- $APPCONFIGOPTS/Boole/EnableSpillover.py
- $APPCONFIGOPTS/Boole/DataType-2015.py
- $APPCONFIGOPTS/Boole/Boole-SetOdinRndTrigger.py
data_pkgs:
- AppConfig.v3r412
input:
- type: SIM
visible: false
output:
- type: DIGI
visible: false
- name: L0 emulation for 2016 - TCK 0x160F
processing_pass: L0Trig0x160F
visible: false
application: Moore/v25r4
options:
- $APPCONFIGOPTS/L0App/L0AppSimProduction.py
- $APPCONFIGOPTS/L0App/L0AppTCK-0x160F.py
- $APPCONFIGOPTS/L0App/ForceLUTVersionV8.py
- $APPCONFIGOPTS/L0App/DataType-2016.py
data_pkgs:
- AppConfig.v3r412
input:
- type: DIGI
visible: false
output:
- type: DIGI
visible: false
options_format: l0app
- name: TCK-0x5138160F (HLT1) Flagged for 2016
processing_pass: Trig0x5138160F
visible: false
application: Moore/v25r4
options:
- $APPCONFIGOPTS/Moore/MooreSimProductionForSeparateL0AppStep2015.py
- $APPCONFIGOPTS/Conditions/TCK-0x5138160F.py
- $APPCONFIGOPTS/Moore/DataType-2016.py
- $APPCONFIGOPTS/Moore/MooreSimProductionHlt1.py
data_pkgs:
- AppConfig.v3r412
input:
- type: DIGI
visible: false
output:
- type: DIGI
visible: false
- name: TCK-0x6139160F (HLT2) Flagged for 2016
processing_pass: Trig0x6139160F
visible: true
application: Moore/v25r4
options:
- $APPCONFIGOPTS/Moore/MooreSimProductionForSeparateL0AppStep2015.py
- $APPCONFIGOPTS/Conditions/TCK-0x6139160F.py
- $APPCONFIGOPTS/Moore/DataType-2016.py
- $APPCONFIGOPTS/Moore/MooreSimProductionHlt2.py
data_pkgs:
- AppConfig.v3r412
input:
- type: DIGI
visible: false
output:
- type: DIGI
visible: false
- name: Reco16 for MC 2016
processing_pass: Reco16
visible: true
application: Brunel/v50r7
options:
- $APPCONFIGOPTS/Brunel/DataType-2016.py
- $APPCONFIGOPTS/Brunel/MC-WithTruth.py
- $APPCONFIGOPTS/Brunel/SplitRawEventOutput.4.3.py
data_pkgs:
- AppConfig.v3r412
input:
- type: DIGI
visible: false
output:
- type: DST
visible: false
- name: Turbo lines (MC) for 2016 Turbo03a
processing_pass: Turbo03a
visible: true
application: DaVinci/v41r5
options:
- $APPCONFIGOPTS/Turbo/Tesla_2016_LinesFromStreams_MC.py
- $APPCONFIGOPTS/Turbo/Tesla_PR_Truth_2016.py
- $APPCONFIGOPTS/Turbo/Tesla_Simulation_2016.py
- $APPCONFIGOPTS/Turbo/Tesla_FilterMC.py
data_pkgs:
- AppConfig.v3r412
- TurboStreamProd.v4r2p9
input:
- type: DST
visible: false
output:
- type: DST
visible: false
options_format: Tesla
- name: Stripping28r2NoPrescalingFlagged for 2016
processing_pass: Stripping28r2NoPrescalingFlagged
visible: true
application: DaVinci/v44r10p5
options:
- $APPCONFIGOPTS/DaVinci/DV-Stripping28r2-Stripping-MC-NoPrescaling-DST.py
- $APPCONFIGOPTS/DaVinci/DV-RedoCaloPID-Stripping_28_24.py
- $APPCONFIGOPTS/DaVinci/DataType-2016.py
- $APPCONFIGOPTS/DaVinci/InputType-DST.py
- $APPCONFIGOPTS/DaVinci/DV-Stripping-MC-muDST.py
- $APPCONFIGOPTS/DaVinci/DV-RawEventJuggler-4_3-to-4_3.py
- $APPCONFIGOPTS/Conditions/Sim09-deuteron-nameFix.py
data_pkgs:
- AppConfig.v3r412
- TMVAWeights.v1r16
input:
- type: DST
visible: false
output:
- type: ALLSTREAMS.MDST
visible: false
- name: Merge for ALLSTREAMS.MDST
processing_pass: merging
visible: false
application: DaVinci/v46r5
options:
- $APPCONFIGOPTS/Merging/DVMergeDST.py
- $APPCONFIGOPTS/DaVinci/DataType-2016.py
- $APPCONFIGOPTS/Merging/WriteFSR.py
- $APPCONFIGOPTS/Merging/MergeFSR.py
- $APPCONFIGOPTS/DaVinci/Simulation.py
data_pkgs:
- AppConfig.v3r412
input:
- type: ALLSTREAMS.MDST
visible: true
output:
- type: ALLSTREAMS.MDST
visible: true
options_format: merge
- type: Simulation
priority: 2a
name: Ds2KKpi 2012 pp MagDown
mc_config_version: '2012'
sim_condition: Beam4000GeV-2012-MagDown-Nu2.5-Pythia8
author: null
inform:
- auser
- firstname.surname@cern.ch
comment: ''
wg: Charm
retention_rate: 1.0
event_types:
- id: '23103005'
num_events: 100000
num_test_events: 10
- id: '23103006'
num_events: 100000
num_test_events: 10
steps:
- name: Sim09l - 2012 - MagDown - Pythia8
processing_pass: Sim09l
visible: true
application:
name: Gauss
version: v49r24
binary_tag: x86_64-slc6-gcc48-opt
options:
- $APPCONFIGOPTS/Gauss/Sim08-Beam4000GeV-md100-2012-nu2.5.py
- $APPCONFIGOPTS/Gauss/DataType-2012.py
- $APPCONFIGOPTS/Gauss/RICHRandomHits.py
- $APPCONFIGOPTS/Gauss/NoPacking.py
- $DECFILESROOT/options/@{eventType}.py
- $LBPYTHIA8ROOT/options/Pythia8.py
- $APPCONFIGOPTS/Gauss/G4PL_FTFP_BERT_EmNoCuts.py
data_pkgs:
- AppConfig.v3r412
- Gen/DecFiles.v30r87
input: []
output:
- type: SIM
visible: false
dbtags:
DDDB: dddb-20170721-2
CondDB: sim-20160321-2-vc-md100
- name: Digi14c for 2012
processing_pass: Digi14c
visible: false
application: Boole/v30r4
options:
- $APPCONFIGOPTS/Boole/Default.py
- $APPCONFIGOPTS/Boole/DataType-2012.py
- $APPCONFIGOPTS/Boole/NoPacking.py
- $APPCONFIGOPTS/Boole/Boole-SetOdinRndTrigger.py
data_pkgs:
- AppConfig.v3r412
input:
- type: SIM
visible: false
output:
- type: DIGI
visible: false
- name: L0 emulation for 2012 - TCK 0x0045
processing_pass: L0Trig0x0045
visible: false
application: Moore/v24r4
options:
- $APPCONFIGOPTS/L0App/L0AppSimProduction.py
- $APPCONFIGOPTS/L0App/L0AppTCK-0x0045.py
- $APPCONFIGOPTS/L0App/DataType-2012.py
data_pkgs:
- AppConfig.v3r412
input:
- type: DIGI
visible: false
output:
- type: DIGI
visible: false
options_format: l0app
- name: TCK-0x409f0045 Flagged for 2012
processing_pass: Trig0x409f0045
visible: true
application:
name: Moore
version: v14r8p1g1
binary_tag: x86_64-slc5-gcc46-opt
options:
- $APPCONFIGOPTS/Moore/MooreSimProductionForSeparateL0AppStep.py
- $APPCONFIGOPTS/Conditions/TCK-0x409f0045.py
- $APPCONFIGOPTS/Moore/DataType-2012.py
data_pkgs:
- AppConfig.v3r412
input:
- type: DIGI
visible: false
output:
- type: DIGI
visible: false
- name: Reco14c for MC 2012
processing_pass: Reco14c
visible: true
application:
name: Brunel
version: v43r2p13
binary_tag: x86_64-slc5-gcc46-opt
options:
- $APPCONFIGOPTS/Brunel/DataType-2012.py
- $APPCONFIGOPTS/Brunel/MC-WithTruth.py
- $APPCONFIGOPTS/Brunel/Sim09-Run1.py
- $APPCONFIGOPTS/Persistency/DST-multipleTCK-2012.py
data_pkgs:
- AppConfig.v3r412
input:
- type: DIGI
visible: false
output:
- type: DST
visible: false
- name: Stripping21NoPrescalingFlagged for 2012
processing_pass: Stripping21NoPrescalingFlagged
visible: true
application: DaVinci/v36r1p5
options:
- $APPCONFIGOPTS/DaVinci/DV-Stripping21-Stripping-MC-NoPrescaling.py
- $APPCONFIGOPTS/DaVinci/DV-RedoCaloPID-Stripping21.py
- $APPCONFIGOPTS/DaVinci/DataType-2012.py
- $APPCONFIGOPTS/DaVinci/InputType-DST.py
- $APPCONFIGOPTS/DaVinci/DV-Stripping-MC-muDST.py
data_pkgs:
- AppConfig.v3r412
input:
- type: DST
visible: false
output:
- type: ALLSTREAMS.MDST
visible: false
- name: Merge for ALLSTREAMS.MDST
processing_pass: merging
visible: false
application: DaVinci/v46r5
options:
- $APPCONFIGOPTS/Merging/DVMergeDST.py
- $APPCONFIGOPTS/DaVinci/DataType-2012.py
- $APPCONFIGOPTS/Merging/WriteFSR.py
- $APPCONFIGOPTS/Merging/MergeFSR.py
- $APPCONFIGOPTS/DaVinci/Simulation.py
data_pkgs:
- AppConfig.v3r412
input:
- type: ALLSTREAMS.MDST
visible: true
output:
- type: ALLSTREAMS.MDST
visible: true
options_format: merge
- type: Simulation
priority: 2a
name: Ds2KKpi 2016 pp MagDown
mc_config_version: '2016'
sim_condition: Beam6500GeV-2016-MagDown-Nu1.6-25ns-Pythia8
author: null
inform:
- auser
- firstname.surname@cern.ch
comment: ''
wg: Charm
retention_rate: 1.0
event_types:
- id: '23103005'
num_events: 100000
num_test_events: 10
- id: '23103006'
num_events: 100000
num_test_events: 10
steps:
- name: Sim09l - 2016 - MagDown - Pythia8
processing_pass: Sim09l
visible: true
application:
name: Gauss
version: v49r24
binary_tag: x86_64-slc6-gcc48-opt
options:
- $APPCONFIGOPTS/Gauss/Beam6500GeV-md100-2016-nu1.6.py
- $APPCONFIGOPTS/Gauss/EnableSpillover-25ns.py
- $APPCONFIGOPTS/Gauss/DataType-2016.py
- $APPCONFIGOPTS/Gauss/RICHRandomHits.py
- $DECFILESROOT/options/@{eventType}.py
- $LBPYTHIA8ROOT/options/Pythia8.py
- $APPCONFIGOPTS/Gauss/G4PL_FTFP_BERT_EmNoCuts.py
data_pkgs:
- AppConfig.v3r412
- Gen/DecFiles.v30r87
input: []
output:
- type: SIM
visible: false
dbtags:
DDDB: dddb-20170721-3
CondDB: sim-20170721-2-vc-md100
- name: Digi14c for 2016+spillover
processing_pass: Digi14c
visible: false
application: Boole/v30r4
options:
- $APPCONFIGOPTS/Boole/Default.py
- $APPCONFIGOPTS/Boole/EnableSpillover.py
- $APPCONFIGOPTS/Boole/DataType-2015.py
- $APPCONFIGOPTS/Boole/Boole-SetOdinRndTrigger.py
data_pkgs:
- AppConfig.v3r412
input:
- type: SIM
visible: false
output:
- type: DIGI
visible: false
- name: L0 emulation for 2016 - TCK 0x160F
processing_pass: L0Trig0x160F
visible: false
application: Moore/v25r4
options:
- $APPCONFIGOPTS/L0App/L0AppSimProduction.py
- $APPCONFIGOPTS/L0App/L0AppTCK-0x160F.py
- $APPCONFIGOPTS/L0App/ForceLUTVersionV8.py
- $APPCONFIGOPTS/L0App/DataType-2016.py
data_pkgs:
- AppConfig.v3r412
input:
- type: DIGI
visible: false
output:
- type: DIGI
visible: false
options_format: l0app
- name: TCK-0x5138160F (HLT1) Flagged for 2016
processing_pass: Trig0x5138160F
visible: false
application: Moore/v25r4
options:
- $APPCONFIGOPTS/Moore/MooreSimProductionForSeparateL0AppStep2015.py
- $APPCONFIGOPTS/Conditions/TCK-0x5138160F.py
- $APPCONFIGOPTS/Moore/DataType-2016.py
- $APPCONFIGOPTS/Moore/MooreSimProductionHlt1.py
data_pkgs:
- AppConfig.v3r412
input:
- type: DIGI
visible: false
output:
- type: DIGI
visible: false
- name: TCK-0x6139160F (HLT2) Flagged for 2016
processing_pass: Trig0x6139160F
visible: true
application: Moore/v25r4
options:
- $APPCONFIGOPTS/Moore/MooreSimProductionForSeparateL0AppStep2015.py
- $APPCONFIGOPTS/Conditions/TCK-0x6139160F.py
- $APPCONFIGOPTS/Moore/DataType-2016.py
- $APPCONFIGOPTS/Moore/MooreSimProductionHlt2.py
data_pkgs:
- AppConfig.v3r412
input:
- type: DIGI
visible: false
output:
- type: DIGI
visible: false
- name: Reco16 for MC 2016
processing_pass: Reco16
visible: true
application: Brunel/v50r7
options:
- $APPCONFIGOPTS/Brunel/DataType-2016.py
- $APPCONFIGOPTS/Brunel/MC-WithTruth.py
- $APPCONFIGOPTS/Brunel/SplitRawEventOutput.4.3.py
data_pkgs:
- AppConfig.v3r412
input:
- type: DIGI
visible: false
output:
- type: DST
visible: false
- name: Turbo lines (MC) for 2016 Turbo03a
processing_pass: Turbo03a
visible: true
application: DaVinci/v41r5
options:
- $APPCONFIGOPTS/Turbo/Tesla_2016_LinesFromStreams_MC.py
- $APPCONFIGOPTS/Turbo/Tesla_PR_Truth_2016.py
- $APPCONFIGOPTS/Turbo/Tesla_Simulation_2016.py
- $APPCONFIGOPTS/Turbo/Tesla_FilterMC.py
data_pkgs:
- AppConfig.v3r412
- TurboStreamProd.v4r2p9
input:
- type: DST
visible: false
output:
- type: DST
visible: false
options_format: Tesla
- name: Stripping28r2NoPrescalingFlagged for 2016
processing_pass: Stripping28r2NoPrescalingFlagged
visible: true
application: DaVinci/v44r10p5
options:
- $APPCONFIGOPTS/DaVinci/DV-Stripping28r2-Stripping-MC-NoPrescaling-DST.py
- $APPCONFIGOPTS/DaVinci/DV-RedoCaloPID-Stripping_28_24.py
- $APPCONFIGOPTS/DaVinci/DataType-2016.py
- $APPCONFIGOPTS/DaVinci/InputType-DST.py
- $APPCONFIGOPTS/DaVinci/DV-Stripping-MC-muDST.py
- $APPCONFIGOPTS/DaVinci/DV-RawEventJuggler-4_3-to-4_3.py
- $APPCONFIGOPTS/Conditions/Sim09-deuteron-nameFix.py
data_pkgs:
- AppConfig.v3r412
- TMVAWeights.v1r16
input:
- type: DST
visible: false
output:
- type: ALLSTREAMS.MDST
visible: false
- name: Merge for ALLSTREAMS.MDST
processing_pass: merging
visible: false
application: DaVinci/v46r5
options:
- $APPCONFIGOPTS/Merging/DVMergeDST.py
- $APPCONFIGOPTS/DaVinci/DataType-2016.py
- $APPCONFIGOPTS/Merging/WriteFSR.py
- $APPCONFIGOPTS/Merging/MergeFSR.py
- $APPCONFIGOPTS/DaVinci/Simulation.py
data_pkgs:
- AppConfig.v3r412
input:
- type: ALLSTREAMS.MDST
visible: true
output:
- type: ALLSTREAMS.MDST
visible: true
options_format: merge
Setting priority¶
Priority can be set directly in the “stage 0” yaml file. Priority must be set at the samples level.
sim-version: 09
name: Ds2KKpi
inform:
- auser
- firstname.surname@cern.ch
WG: Charm
samples:
- event-types:
- 23103005
- 23103006
data-types:
- 2012
- 2016
num-events: 100_000
priority: 1a
Using eventtype - num-event pairs and SI Suffixes¶
It is possible to use event-type–num-events pairs in the YAML file, in case analysts would like different number of events for different event types.
Note that in this case, the num-events
key must be omitted.
It is also possible to use the SI suffixes k
, M
for num-events
, either in the num-events
key or when using event-type–num-events pairs.
sim-version: 09
name: Ds2KKpi
inform:
- auser
- firstname.surname@cern.ch
WG: Charm
samples:
- event-types:
- 23103005 : 100_000
- 23103006 : 200k
data-types:
- 2012
- 2016
Different sample sizes per year and event-type¶
Considering the different beam energies and integrated luminosities in different
running periods, it’s quite common for analysts to request different sample
sizes for different years. To achieve this in the YAML file, add more entries to
the samples
key:
sim-version: 09
name: Ds2KKpi
inform:
- auser
- firstname.surname@cern.ch
WG: Charm
samples:
- event-types:
- 23103005
data-types:
- 2011
- 2015
num-events: 50_000
- event-types:
- 23103005
data-types:
- 2012
num-events: 100_000
- event-types:
- 23103005
data-types:
- 2016
- 2017
- 2018
num-events: 200_000
Different stripping versions and file formats¶
Tip
Remember, for unfiltered MC samples, it is usually not necessary to request a completely new sample just to change the stripping version, since restripping can be run before making ntuples.
If you want a sample produced with a non-defaul stripping version, it can be
specified using the stripping
key on a per-sample basis. The example below
uses incremental restripping versions for 2011 and 2012
sim-version: 09
name: Ds2KKpi
inform:
- auser
- firstname.surname@cern.ch
WG: Charm
samples:
- event-types:
- 23103005
data-types:
- 2011
num-events: 50_000
stripping:
version: 21r1p2
- event-types:
- 23103005
data-types:
- 2012
num-events: 100_000
stripping:
version: 21r0p2
By default, the output file format is MDST. If you need full DST (or some other
format) this can be specified with the file-format
key, either at the
top-level or on a per-sample basis.
sim-version: 09
name: Ds2KKpi
inform:
- auser
- firstname.surname@cern.ch
WG: Charm
file-format: DST
samples:
- event-types:
- 23103005
data-types:
- 2011
num-events: 50_000
- event-types:
- 23103005
data-types:
- 2012
num-events: 100_000
sim-version: 09
name: Ds2KKpi
inform:
- auser
- firstname.surname@cern.ch
WG: Charm
samples:
- event-types:
- 23103005
data-types:
- 2011
num-events: 50_000
file-format: DST
- event-types:
- 23103005
data-types:
- 2012
num-events: 100_000
file-format: DST
Note
Some other keys (generation
, fast-mc
and stripping
) can
also be used at either the top-level or per-sample basis.
Caution
Some formats will remove steps from the request (e.g. specifying
DIGI
will make LbMCSubmit write only the Gauss and Boole steps
for each request). This should only be done under advice of experts.
Sprucing for Run 3¶
Currently there is no sprucing added by default to Run 3 productions, but where available it can be added in stage 0 yaml file. Options are provided to just add default version, or specific version required:
sim-version: 10d
name: Production with default sprucing
inform:
- firstname.surname@cern.ch
WG: B2OC
file-format: DST
samples:
- event-types:
- 23163031
data-types:
- 2024.W31.34
magnet-polarities:
- MagUp
num-events: 1_000_000
sprucing: true
sim-version: 10d
name: Production with default sprucing
inform:
- firstname.surname@cern.ch
WG: B2OC
file-format: DST
samples:
- event-types:
- 23163031
data-types:
- 2024.W31.34
magnet-polarities:
- MagUp
num-events: 1_000_000
sprucing: 24c2
Different generators, collision types and fast simulation¶
The default collision type is proton–proton. Other types of collisions (proton–ion,
ion–ion, SMOG) can be chosen with the collision-types
and smog
keys:
sim-version: 09
name: Example PbPb
inform:
- auser
WG: IFT
samples:
- event-types:
- 28142001
data-types:
- 2015
- 2018
num-events: 10_000
collision-types:
- PbPb
magnet-polarities:
- MagDown
file-format: DST
sim-version: 09
name: Example pPb
inform:
- auser
WG: IFT
samples:
- event-types:
- 35103100
- 36103100
data-types:
- 2013
num-events: 10_000
collision-types:
- pPb
file-format: DST
sim-version: 09
name: Example SMOG
inform:
- auser
WG: IFT
samples:
- event-types:
- 30000000
data-types:
- 2015
num-events: 10_000
collision-types:
- pAr
magnet-polarities:
- MagDown
file-format: DST
smog: True
The default generator is Pythia8 for proton–proton collisions and EPOS for
proton–ion, ion–ion and SMOG collisions. Another generator can be chosen using
the generation
key:
sim-version: 09
name: Bctochicpi
inform:
- auser
- firstname.surname@cern.ch
WG: BandQ
generation:
production-tool: BcVegPy
samples:
- event-types:
- 14243211
data-types:
- 2017
- 2018
num-events: 100_000
sim-version: 09
name: Xicc2Xic0PiPi
inform:
- auser
- firstname.surname@cern.ch
WG: Charm
generation:
production-tool: GenXicc
samples:
- event-types:
- 26166063
- 26266052
data-types:
- 2016
- 2012
num-events: 100_000
Enabling ReDecay or SplitSim can be done with the fast-mc
key, which can be
either at the top-level or per-sample:
sim-version: 09
name: Ds2KKpi
inform:
- auser
- firstname.surname@cern.ch
WG: Charm
samples:
- event-types:
- 23103005
- 23103006
data-types:
- 2012
- 2016
num-events: 100_000
fast-mc:
redecay: yes
sim-version: 09
name: Ds2KKpi
inform:
- auser
- firstname.surname@cern.ch
WG: Charm
samples:
- event-types:
- 23103005
- 23103006
data-types:
- 2012
- 2016
num-events: 100_000
fast-mc:
redecay:
num-redecays: 25
sim-version: 10
name: Bc -> gamma Mu Nu
inform:
- auser
- firstname.surname@cern.ch
WG: Charm
samples:
- event-types:
- 14511200
generation:
production-tool: BcVegPy
data-types:
- 2012
num-events: 100_000
fast-mc:
splitsim: yes
retention-rate: 0.1
sim-version: 10
name: Bc -> gamma Mu Nu
inform:
- auser
- firstname.surname@cern.ch
WG: Charm
samples:
- event-types:
- 11102201
- 13102201
- 15102309
- 12101401
data-types:
- 2012
num-events: 100_000
fast-mc:
splitsim:
mode: "extend-z"
retention-rate: 0.1
Note
Since SplitSim filters events at the Gauss step, the key
retention-rate
must be specified.
Running local checks and tests¶
Note
LbMCSubmit is available as a python package, which can be installed
using pip
$ pip install git+https://gitlab.cern.ch/lhcb-simulation/lbmcsubmit.git@2024.01.10.0
Where @2024.01.10.0
at the end can be omitted to get the latest commit on
the default branch, or substituted with any
tag
or branch
name. This is handy if you need to check out a specific version.
Alternatively, if you are using a machine with CVMFS installed, LbMCSubmit is available using LbConda:
$ lb-conda Simulation/liaisons lb-mc ...
This is kept up-to-date with the latest release of LbMCSubmit and synchronised with the version used in the request submission pipeline.
The lb-mc
command from LbMCSubmit will convert stage 0 YAML files to stage 6
and perform consistency checks.
$ lb-mc my_request.stage0.yaml my_request.stage6.yaml
Some of the checks assume that you have CVMFS mounted at /cvmfs
. To disable
these, use the command-line option --no-validation
.
Test jobs can be run locally using the LHCbDIRAC command dirac-production-
request-run-local
with a stage 6 YAML file. This will produce 10 events per
request in the file by default. This number can be configured with the key
num-test-events
, if e.g. you need to generate more events to test filtered
requests.
$ lb-mc my_request.stage0.yaml my_request.stage6.yaml
$ lb-dirac dirac-production-request-run-local my_request.stage6.yaml
Optional positional arguments can be used to narrow down which requests get tested.
Usage:
dirac-production-request-run-local [options] ... yaml_path name event_type
Arguments:
yaml_path: Path to the YAML file containing productions to submit
name: Name of the production to submit (optional)
event_type: The event type to generate (optional)
Submitting requests to DIRAC¶
Tip
This is the recommended way to submit production requests for analysis. The analysts themselves could write the YAML file(s) and create the Merge Request, however it should be reviewed by the WG’s MC liaison before submission.
If you have already used Analysis Productions, this procedure for submitting requests should be very familiar to you, and indeed it uses much of the same machinery behind the scenes.
First create a new branch in the submission repository and create a new directory containing your YAML
files, which should follow the naming pattern <directory>/<filename>.yaml
,
where directory
and filename
will be used to identify and group the requests
in the web interface (NB: due to a technical limitation, please keep these
short — below 64 characters). For example, the directory could be an analysis,
and the filename simply “request” (for simple cases) or any sensible grouping of
requests for cases where it’s useful to write multiple files.
Next, create a Merge Request with your new branch targeting main
. The CI pipeline
will launch small test productions, which you can monitor from the web interface. The pipeline will
automatically add labels to the MR based on the WGs specified in the YAML files.
Once the pipeline passes, the analysts can optionally check that the request
corresponds to what they asked for. Merging to main
will trigger submission
of the full request. Approval must be given by a liaison and a working group convener
before merging, and liaisons may approve their own MRs.
After merging, a GitLab issue will be created automatically to track the request. Any problems that arise will be raised here, and the issue will be closed automatically when the production is finished.