Skip to content

Commit 6e125f1

Browse files
authored
Merge branch 'AliceO2Group:master' into master
2 parents ce580b8 + f503c23 commit 6e125f1

File tree

46 files changed

+1189
-311
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+1189
-311
lines changed

DATA/production/calib/its-threshold-processing.sh

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,17 +27,15 @@ if [ $RUNTYPE_ITS == "tuningbb" ]; then
2727
ADDITIONAL_OPTIONS_CAL="--min-vcasn 30 --max-vcasn 130"
2828
fi
2929
if [[ $RUNTYPE_ITS == "tot1row" || $RUNTYPE_ITS == "vresetd" ]]; then
30-
ADDITIONAL_OPTIONS_DEC="--allow-empty-rofs"
3130
ADDITIONAL_OPTIONS_CAL="--ninj 10"
3231
fi
3332
if [ $RUNTYPE_ITS == "totfullfast" ]; then
34-
ADDITIONAL_OPTIONS_DEC="--allow-empty-rofs"
3533
ADDITIONAL_OPTIONS_CAL="--calculate-slope --charge-a 30 --charge-b 60 --ninj 10"
3634
fi
3735

3836
WORKFLOW=
3937
add_W o2-dpl-raw-proxy "--exit-transition-timeout 20 --dataspec \"$PROXY_INSPEC\" --inject-missing-data --channel-config \"name=readout-proxy,type=pull,method=connect,address=ipc://@$INRAWCHANNAME,rateLogging=0,transport=shmem\"" "" 0
40-
add_W o2-itsmft-stf-decoder-workflow "${ADDITIONAL_OPTIONS_DEC} --always-parse-trigger --condition-tf-per-query -1 --condition-backend \"http://localhost:8084\" --ignore-dist-stf --nthreads 1 --no-clusters --no-cluster-patterns --pipeline its-stf-decoder:${NDECODERS} --enable-calib-data --digits"
38+
add_W o2-itsmft-stf-decoder-workflow "${ADDITIONAL_OPTIONS_DEC} --allow-empty-rofs --always-parse-trigger --condition-tf-per-query -1 --condition-backend \"http://localhost:8084\" --ignore-dist-stf --nthreads 1 --no-clusters --no-cluster-patterns --pipeline its-stf-decoder:${NDECODERS} --enable-calib-data --digits"
4139
for i in $(seq 0 $((CHIPMODBASE-1)))
4240
do
4341
add_W o2-its-threshold-calib-workflow "-b ${ADDITIONAL_OPTIONS_CAL} --enable-single-pix-tag --ccdb-mgr-url=\"http://localhost:8084\" --nthreads 1 --chip-mod-selector $i --chip-mod-base $CHIPMODBASE --fittype derivative --output-dir \"/data/calibration\" --meta-output-dir \"/data/epn2eos_tool/epn2eos\" --meta-type \"calibration\"" "" 0

DATA/production/configurations/asyncReco/setenv_extra.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -474,7 +474,7 @@ export ITSEXTRAERR="ITSCATrackerParam.sysErrY2[0]=$ERRIB;ITSCATrackerParam.sysEr
474474
# ad-hoc options for ITS reco workflow
475475
EXTRA_ITSRECO_CONFIG=
476476
if [[ $BEAMTYPE == "PbPb" ]]; then
477-
EXTRA_ITSRECO_CONFIG="ITSCATrackerParam.deltaRof=0;ITSVertexerParam.clusterContributorsCut=16;ITSVertexerParam.lowMultBeamDistCut=0;ITSCATrackerParam.nROFsPerIterations=12;ITSCATrackerParam.perPrimaryVertexProcessing=false;"
477+
EXTRA_ITSRECO_CONFIG="ITSCATrackerParam.deltaRof=0;ITSVertexerParam.clusterContributorsCut=16;ITSVertexerParam.lowMultBeamDistCut=0;ITSCATrackerParam.nROFsPerIterations=12;ITSCATrackerParam.perPrimaryVertexProcessing=false;ITSCATrackerParam.fataliseUponFailure=false;ITSCATrackerParam.dropTFUponFailure=true"
478478
if [[ -z "$ALIEN_JDL_DISABLE_UPC" || $ALIEN_JDL_DISABLE_UPC != 1 ]]; then
479479
EXTRA_ITSRECO_CONFIG+=";ITSVertexerParam.nIterations=2;ITSCATrackerParam.doUPCIteration=true;"
480480
fi

DATA/production/qc-async/mch-tracks.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
},
3838
"movingWindows": [
3939
"ClusterSizePerChamber",
40+
"ClustersPerDualSampa",
4041
"ClustersPerChamber",
4142
"ClustersPerTrack"
4243
],

DATA/production/qc-workflow.sh

Lines changed: 60 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -268,72 +268,72 @@ elif [[ -z ${QC_JSON_FROM_OUTSIDE:-} ]]; then
268268
DET_JSON_FILE="QC_JSON_GLO_$i"
269269
if has_matching_qc $i && [ ! -z "${!DET_JSON_FILE:-}" ]; then
270270
if [[ $i == "PRIMVTX" ]] && ! has_detector_reco ITS; then continue; fi
271-
if [[ $i == "ITSTPC" ]] ; then
272-
if ! has_detectors_reco ITS TPC; then continue
273-
else
274-
# replace the input sources depending on the detector compostition and matching detectors
275-
ITSTPCMatchQuery="trackITSTPC:GLO/TPCITS/0;trackITSTPCABREFS:GLO/TPCITSAB_REFS/0;trackITSTPCABCLID:GLO/TPCITSAB_CLID/0;trackTPC:TPC/TRACKS;trackTPCClRefs:TPC/CLUSREFS/0;trackITS:ITS/TRACKS/0;trackITSROF:ITS/ITSTrackROF/0;trackITSClIdx:ITS/TRACKCLSID/0;alpparITS:ITS/ALPIDEPARAM/0?lifetime=condition&ccdb-path=ITS/Config/AlpideParam;SVParam:GLO/SVPARAM/0?lifetime=condition&ccdb-path=GLO/Config/SVertexerParam"
276-
TRACKSOURCESK0="ITS,TPC,ITS-TPC"
277-
if has_processing_step MATCH_SECVTX || has_detector_matching SECVTX ; then
278-
if [[ $SYNCMODE == 1 ]] || [[ $EPNSYNCMODE == 1 ]] ; then
279-
HAS_K0_ENABLED=$(jq -r .qc.tasks.MTCITSTPC.taskParameters.doK0QC "${!DET_JSON_FILE}")
280-
else
281-
HAS_K0_ENABLED=$(jq -r .qc.tasks.GLOMatchTrITSTPC.taskParameters.doK0QC "${!DET_JSON_FILE}")
271+
if [[ $i == "ITSTPC" ]] && ! has_detectors_reco ITS TPC; then continue; fi
272+
add_QC_JSON GLO_$i ${!DET_JSON_FILE}
273+
274+
if [[ $i == "ITSTPC" ]]; then
275+
LOCAL_FILENAME=${JSON_FILES//*\ /}
276+
# replace the input sources depending on the detector compostition and matching detectors
277+
ITSTPCMatchQuery="trackITSTPC:GLO/TPCITS/0;trackITSTPCABREFS:GLO/TPCITSAB_REFS/0;trackITSTPCABCLID:GLO/TPCITSAB_CLID/0;trackTPC:TPC/TRACKS;trackTPCClRefs:TPC/CLUSREFS/0;trackITS:ITS/TRACKS/0;trackITSROF:ITS/ITSTrackROF/0;trackITSClIdx:ITS/TRACKCLSID/0;alpparITS:ITS/ALPIDEPARAM/0?lifetime=condition&ccdb-path=ITS/Config/AlpideParam;SVParam:GLO/SVPARAM/0?lifetime=condition&ccdb-path=GLO/Config/SVertexerParam"
278+
TRACKSOURCESK0="ITS,TPC,ITS-TPC"
279+
if has_processing_step MATCH_SECVTX || has_detector_matching SECVTX; then
280+
if [[ $SYNCMODE == 1 ]] || [[ $EPNSYNCMODE == 1 ]]; then
281+
HAS_K0_ENABLED=$(jq -r .qc.tasks.MTCITSTPC.taskParameters.doK0QC "${LOCAL_FILENAME}")
282+
else
283+
HAS_K0_ENABLED=$(jq -r .qc.tasks.GLOMatchTrITSTPC.taskParameters.doK0QC "${LOCAL_FILENAME}")
284+
fi
285+
if [[ $HAS_K0_ENABLED == "true" ]]; then
286+
ITSTPCMatchQuery+=";p2decay3body:GLO/PVTX_3BODYREFS/0;decay3body:GLO/DECAYS3BODY/0;decay3bodyIdx:GLO/DECAYS3BODY_IDX/0;p2cascs:GLO/PVTX_CASCREFS/0;cascs:GLO/CASCS/0;cascsIdx:GLO/CASCS_IDX/0;p2v0s:GLO/PVTX_V0REFS/0;v0s:GLO/V0S/0;v0sIdx:GLO/V0S_IDX/0;pvtx_tref:GLO/PVTX_TRMTCREFS/0;pvtx_trmtc:GLO/PVTX_TRMTC/0;pvtx:GLO/PVTX/0;clusTPCoccmap:TPC/TPCOCCUPANCYMAP/0;clusTPC:TPC/CLUSTERNATIVE;clusTPCshmap:TPC/CLSHAREDMAP/0;trigTPC:TPC/TRIGGERWORDS/0"
287+
if has_secvtx_source ITS-TPC-TRD; then
288+
ITSTPCMatchQuery+=";trigITSTPCTRD:TRD/TRGREC_ITSTPC/0;trackITSTPCTRD:TRD/MATCH_ITSTPC/0"
289+
TRACKSOURCESK0+=",ITS-TPC-TRD"
290+
fi
291+
if has_secvtx_source ITS-TPC-TOF; then
292+
ITSTPCMatchQuery+=";matchITSTPCTOF:TOF/MTC_ITSTPC/0"
293+
TRACKSOURCESK0+=",ITS-TPC-TOF"
294+
fi
295+
if has_secvtx_source ITS-TPC-TRD-TOF; then
296+
ITSTPCMatchQuery+=";matchITSTPCTRDTOF:TOF/MTC_ITSTPCTRD/0"
297+
TRACKSOURCESK0+=",ITS-TPC-TRD-TOF"
282298
fi
283-
if [[ $HAS_K0_ENABLED == "true" ]]; then
284-
ITSTPCMatchQuery+=";p2decay3body:GLO/PVTX_3BODYREFS/0;decay3body:GLO/DECAYS3BODY/0;decay3bodyIdx:GLO/DECAYS3BODY_IDX/0;p2cascs:GLO/PVTX_CASCREFS/0;cascs:GLO/CASCS/0;cascsIdx:GLO/CASCS_IDX/0;p2v0s:GLO/PVTX_V0REFS/0;v0s:GLO/V0S/0;v0sIdx:GLO/V0S_IDX/0;pvtx_tref:GLO/PVTX_TRMTCREFS/0;pvtx_trmtc:GLO/PVTX_TRMTC/0;pvtx:GLO/PVTX/0;clusTPCoccmap:TPC/TPCOCCUPANCYMAP/0;clusTPC:TPC/CLUSTERNATIVE;clusTPCshmap:TPC/CLSHAREDMAP/0;trigTPC:TPC/TRIGGERWORDS/0"
285-
if has_secvtx_source ITS-TPC-TRD ; then
286-
ITSTPCMatchQuery+=";trigITSTPCTRD:TRD/TRGREC_ITSTPC/0;trackITSTPCTRD:TRD/MATCH_ITSTPC/0"
287-
TRACKSOURCESK0+=",ITS-TPC-TRD"
288-
fi
289-
if has_secvtx_source ITS-TPC-TOF ; then
290-
ITSTPCMatchQuery+=";matchITSTPCTOF:TOF/MTC_ITSTPC/0"
291-
TRACKSOURCESK0+=",ITS-TPC-TOF"
292-
fi
293-
if has_secvtx_source ITS-TPC-TRD-TOF ; then
294-
ITSTPCMatchQuery+=";matchITSTPCTRDTOF:TOF/MTC_ITSTPCTRD/0"
295-
TRACKSOURCESK0+=",ITS-TPC-TRD-TOF"
296-
fi
297-
if has_secvtx_source TPC-TRD ; then
298-
ITSTPCMatchQuery+=";trigTPCTRD:TRD/TRGREC_TPC/0;trackTPCTRD:TRD/MATCH_TPC/0"
299-
TRACKSOURCESK0+=",TPC-TRD"
300-
fi
301-
if has_secvtx_source TPC-TOF ; then
302-
ITSTPCMatchQuery+=";matchTPCTOF:TOF/MTC_TPC/0;trackTPCTOF:TOF/TOFTRACKS_TPC/0"
303-
TRACKSOURCESK0+=",TPC-TOF"
304-
fi
305-
if has_secvtx_source TPC-TRD-TOF ; then
306-
ITSTPCMatchQuery+=";matchTPCTRDTOF/TOF/MTC_TPCTRD/0"
307-
TRACKSOURCESK0+=",TPC-TRD-TOF"
308-
fi
309-
if has_secvtx_source TOF ; then
310-
ITSTPCMatchQuery+=";tofcluster:TOF/CLUSTERS/0"
311-
TRACKSOURCESK0+=",TOF"
312-
fi
313-
if has_secvtx_source TRD ; then
314-
TRACKSOURCESK0+=",TRD"
315-
fi
299+
if has_secvtx_source TPC-TRD; then
300+
ITSTPCMatchQuery+=";trigTPCTRD:TRD/TRGREC_TPC/0;trackTPCTRD:TRD/MATCH_TPC/0"
301+
TRACKSOURCESK0+=",TPC-TRD"
316302
fi
317-
TEMP_FILE=$(mktemp "${i}"_XXXXXXX)
318-
if [[ $SYNCMODE == 1 ]] || [[ $EPNSYNCMODE == 1 ]] ; then
319-
cat "${!DET_JSON_FILE}" | jq "(.dataSamplingPolicies[] | select(.id == \"ITSTPCmSampK0\") | .query) = \"$ITSTPCMatchQuery\" | .qc.tasks.MTCITSTPC.taskParameters.trackSourcesK0 = \"$TRACKSOURCESK0\"" > "$TEMP_FILE"
320-
else
321-
cat "${!DET_JSON_FILE}" | jq ".qc.tasks.GLOMatchTrITSTPC.dataSource.query = \"$ITSTPCMatchQuery\" | .qc.tasks.GLOMatchTrITSTPC.taskParameters.trackSourcesK0 = \"$TRACKSOURCESK0\"" > "$TEMP_FILE"
303+
if has_secvtx_source TPC-TOF; then
304+
ITSTPCMatchQuery+=";matchTPCTOF:TOF/MTC_TPC/0;trackTPCTOF:TOF/TOFTRACKS_TPC/0"
305+
TRACKSOURCESK0+=",TPC-TOF"
322306
fi
323-
else
324-
# we need to force that the K0s part is disabled
325-
TEMP_FILE=$(mktemp "${i}"_XXXXXXX)
326-
if [[ $SYNCMODE == 1 ]] || [[ $EPNSYNCMODE == 1 ]] ; then
327-
cat "${!DET_JSON_FILE}" | jq "(.dataSamplingPolicies[] | select(.id == \"ITSTPCmSampK0\") | .query) = \"$ITSTPCMatchQuery\" | .qc.tasks.MTCITSTPC.taskParameters.trackSourcesK0 = \"$TRACKSOURCESK0\" | .qc.tasks.MTCITSTPC.taskParameters.doK0QC = \"false\"" > "$TEMP_FILE"
328-
else
329-
cat "${!DET_JSON_FILE}" | jq ".qc.tasks.GLOMatchTrITSTPC.dataSource.query = \"$ITSTPCMatchQuery\" | .qc.tasks.GLOMatchTrITSTPC.taskParameters.trackSourcesK0 = \"$TRACKSOURCESK0\" | .qc.tasks.GLOMatchTrITSTPC.taskParameters.doK0QC = \"false\"" > "$TEMP_FILE"
307+
if has_secvtx_source TPC-TRD-TOF; then
308+
ITSTPCMatchQuery+=";matchTPCTRDTOF/TOF/MTC_TPCTRD/0"
309+
TRACKSOURCESK0+=",TPC-TRD-TOF"
330310
fi
331-
fi
332-
DET_JSON_FILE=TEMP_FILE
333-
JSON_TEMP_FILES+=("$TEMP_FILE")
311+
if has_secvtx_source TOF; then
312+
ITSTPCMatchQuery+=";tofcluster:TOF/CLUSTERS/0"
313+
TRACKSOURCESK0+=",TOF"
314+
fi
315+
if has_secvtx_source TRD; then
316+
TRACKSOURCESK0+=",TRD"
317+
fi
318+
fi
319+
TEMP_FILE=$(mktemp "${GEN_TOPO_WORKDIR:+$GEN_TOPO_WORKDIR/}${i}"_XXXXXXX)
320+
if [[ $SYNCMODE == 1 ]] || [[ $EPNSYNCMODE == 1 ]]; then
321+
cat "${LOCAL_FILENAME}" | jq "(.dataSamplingPolicies[] | select(.id == \"ITSTPCmSampK0\") | .query) = \"$ITSTPCMatchQuery\" | .qc.tasks.MTCITSTPC.taskParameters.trackSourcesK0 = \"$TRACKSOURCESK0\"" >"$TEMP_FILE"
322+
else
323+
cat "${LOCAL_FILENAME}" | jq ".qc.tasks.GLOMatchTrITSTPC.dataSource.query = \"$ITSTPCMatchQuery\" | .qc.tasks.GLOMatchTrITSTPC.taskParameters.trackSourcesK0 = \"$TRACKSOURCESK0\"" >"$TEMP_FILE"
324+
fi
325+
else
326+
# we need to force that the K0s part is disabled
327+
TEMP_FILE=$(mktemp "${GEN_TOPO_WORKDIR:+$GEN_TOPO_WORKDIR/}${i}"_XXXXXXX)
328+
if [[ $SYNCMODE == 1 ]] || [[ $EPNSYNCMODE == 1 ]]; then
329+
cat "${LOCAL_FILENAME}" | jq "(.dataSamplingPolicies[] | select(.id == \"ITSTPCmSampK0\") | .query) = \"$ITSTPCMatchQuery\" | .qc.tasks.MTCITSTPC.taskParameters.trackSourcesK0 = \"$TRACKSOURCESK0\" | .qc.tasks.MTCITSTPC.taskParameters.doK0QC = \"false\"" >"$TEMP_FILE"
330+
else
331+
cat "${LOCAL_FILENAME}" | jq ".qc.tasks.GLOMatchTrITSTPC.dataSource.query = \"$ITSTPCMatchQuery\" | .qc.tasks.GLOMatchTrITSTPC.taskParameters.trackSourcesK0 = \"$TRACKSOURCESK0\" | .qc.tasks.GLOMatchTrITSTPC.taskParameters.doK0QC = \"false\"" >"$TEMP_FILE"
332+
fi
334333
fi
334+
JSON_FILES=${JSON_FILES/$LOCAL_FILENAME/$TEMP_FILE}
335+
JSON_TEMP_FILES+=("$TEMP_FILE")
335336
fi
336-
add_QC_JSON GLO_$i ${!DET_JSON_FILE}
337337
fi
338338
done
339339

MC/bin/o2_hybrid_gen.py

Lines changed: 59 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,48 @@
77
# with ini files. The --clone flag allows the user to create multiple instances of the generator list,
88
# which is a useful feature when running multi-threaded event pool. This can be enabled via setting
99
# the --mode flag to 'parallel', which is set "sequential" by default.
10+
# Since the script uses the ROOT dictionary to import the parameters names, O2 must be loaded, otherwise
11+
# the template generation will not work.
1012
# Example:
1113
# $O2DPG_ROOT/MC/bin/o2_hybrid_gen.py --gen pythia8 boxgen external extkinO2 hepmc pythia8hf --clone 2 \
1214
# --output config.json --mode parallel --iniFile /path/to/file0.ini /path/to/file1.ini
1315

1416
import argparse
1517
import json
18+
import ROOT
19+
import cppyy
20+
import numpy as np
21+
22+
# Get the TClass object for the struct
23+
tclass = ROOT.TClass.GetClass("o2::eventgen::Pythia8GenConfig")
24+
tclass1 = ROOT.TClass.GetClass("o2::eventgen::BoxGenConfig")
25+
26+
gens_params = {"pythia8": "o2::eventgen::Pythia8GenConfig", "external": "o2::eventgen::ExternalGenConfig",
27+
"evtpool": "o2::eventgen::EventPoolGenConfig", "extkinO2": "o2::eventgen::O2KineGenConfig",
28+
"hepmc": "o2::eventgen::HepMCGenConfig", "boxgen": "o2::eventgen::BoxGenConfig"}
29+
cmd_params = "o2::eventgen::FileOrCmdGenConfig"
30+
gens_instances = {"pythia8": ROOT.o2.eventgen.Pythia8GenConfig(), "external": ROOT.o2.eventgen.ExternalGenConfig(),
31+
"evtpool": ROOT.o2.eventgen.EventPoolGenConfig(), "extkinO2": ROOT.o2.eventgen.O2KineGenConfig(),
32+
"hepmc": ROOT.o2.eventgen.HepMCGenConfig(), "boxgen": ROOT.o2.eventgen.BoxGenConfig()}
33+
cmd_instance = ROOT.o2.eventgen.FileOrCmdGenConfig()
34+
35+
def get_params(instance, class_name):
36+
tclass = ROOT.TClass.GetClass(class_name)
37+
members = tclass.GetListOfDataMembers()
38+
params = {}
39+
for member in members:
40+
if isinstance(member, ROOT.TDataMember):
41+
member_value = getattr(instance, member.GetName())
42+
params[member.GetName()] = member_value
43+
# replace C++ strings and arrays
44+
for key, value in params.items():
45+
if isinstance(value, cppyy.gbl.std.string):
46+
# convert to a JSON serialisable python string
47+
params[key] = str(value)
48+
elif hasattr(value, '__len__') and hasattr(value, '__getitem__'):
49+
# convert C++ numerical array to python array, no string arrays are declared as parameters, so far
50+
params[key] = np.array(value).tolist()
51+
return params
1652

1753
def main():
1854
parser = argparse.ArgumentParser(description='Create a JSON file from command line flags.')
@@ -25,13 +61,13 @@ def main():
2561
args = parser.parse_args()
2662

2763
# Check if the mode is valid
28-
mode = "sequential"
29-
if args.mode not in ["sequential", "parallel"]:
30-
print(f"Mode {args.mode} not valid. Please use 'seq' or 'par'")
64+
valid_modes = ["sequential", "parallel"]
65+
mode = args.mode if args.mode in valid_modes else "sequential"
66+
if args.mode and args.mode not in valid_modes:
67+
print(f"Mode {args.mode} not valid. Please use 'sequential' or 'parallel'")
3168
print("Setting sequential mode as default")
3269
else:
33-
print(f"Running in {args.mode} mode")
34-
mode = args.mode
70+
print(f"Running in {mode} mode")
3571

3672
# put in a list all the elementes in the gen flag
3773
noConfGen = ["pythia8pp", "pythia8hf", "pythia8hi", "pythia8powheg"]
@@ -42,76 +78,22 @@ def main():
4278
if args.gen:
4379
print(f"Generators to be used: {args.gen}")
4480
for gen in args.gen:
45-
if gen == "pythia8":
46-
gens.append({
47-
'name': 'pythia8',
48-
'config': {
49-
"config": "$O2_ROOT/share/Generators/egconfig/pythia8_inel.cfg",
50-
"hooksFileName": "",
51-
"hooksFuncName": "",
52-
"includePartonEvent": False,
53-
"particleFilter": "",
54-
"verbose": 0
55-
}
56-
})
57-
elif gen == "external":
58-
gens.append({
59-
'name': 'external',
60-
'config': {
61-
"fileName": "${O2DPG_ROOT}/MC/config/PWGDQ/external/generator/GeneratorParamPromptJpsiToElectronEvtGen_pp13TeV.C",
62-
"funcName": "GeneratorParamPromptJpsiToElectronEvtGen_pp13TeV()",
63-
"iniFile": ""
64-
}
65-
})
66-
elif gen == "extkinO2":
67-
gens.append({
68-
'name': 'extkinO2',
69-
'config': {
70-
"skipNonTrackable": True,
71-
"continueMode": False,
72-
"roundRobin": False,
73-
"randomize": False,
74-
"rngseed": 0,
75-
"randomphi": False,
76-
"fileName": "/path/to/filename.root"
77-
}
78-
})
79-
elif gen == "hepmc":
80-
gens.append({
81-
"name": "hepmc",
82-
"config": {
83-
"configcmd": {
84-
"fileNames": "",
85-
"cmd": ""
86-
},
87-
"confighepmc": {
88-
"version": 2,
89-
"eventsToSkip": 0,
90-
"fileName": "/path/to/filename.hepmc",
91-
"prune": False
81+
if gen in gens_params:
82+
if gen == "hepmc":
83+
configs = [get_params(cmd_instance, cmd_params), get_params(gens_instances[gen], gens_params[gen])]
84+
gens.append({
85+
'name': gen,
86+
'config': {
87+
"configcmd": configs[0],
88+
"confighepmc": configs[1]
9289
}
93-
}
94-
})
95-
elif gen == "boxgen":
96-
gens.append({
97-
"name": "boxgen",
98-
"config": {
99-
"pdg": 13,
100-
"number": 1,
101-
"eta": [
102-
-4,
103-
-2.5
104-
],
105-
"prange": [
106-
0.1,
107-
5
108-
],
109-
"phirange": [
110-
0,
111-
360
112-
]
113-
}
114-
})
90+
})
91+
else:
92+
configs = get_params(gens_instances[gen],gens_params[gen])
93+
gens.append({
94+
'name': gen,
95+
'config': configs
96+
})
11597
elif gen in noConfGen:
11698
gens.append({
11799
"name": gen,
@@ -127,13 +109,11 @@ def main():
127109
if ".ini" != ini[-4:]:
128110
print(f"File {ini} is not an ini file")
129111
exit(1)
112+
configs = get_params(gens_instances["external"],gens_params["external"])
113+
configs["iniFile"] = ini
130114
gens.append({
131115
'name': 'external',
132-
'config': {
133-
"fileName": "",
134-
"funcName": "",
135-
"iniFile": ini
136-
}
116+
'config': configs
137117
})
138118

139119
if args.clone:

0 commit comments

Comments
 (0)