Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
74 changes: 32 additions & 42 deletions MC/bin/o2dpg_sim_workflow.py
Original file line number Diff line number Diff line change
Expand Up @@ -331,7 +331,17 @@ def cleanDetectorInputList(inputlist):
del activeDetectors['ZDC']

def addWhenActive(detID, needslist, appendstring):
if isActive(detID):
"""Adds item to a list if detector(s) is (are) active

Args:
detID: str
detector to check, can also be comma-separated list of detectors
needslist: list
list, e.g. of task dicts added to workflow['stages']
appendstring: str, dict, ...
to be appended to needslist
"""
if all(isActive(part) for part in detID.split(",")):
needslist.append(appendstring)

def retrieve_sor(run_number):
Expand Down Expand Up @@ -1175,8 +1185,7 @@ def putConfigValues(listOfMainKeys=[], localCF = {}, globalTFConfig = True):
+ ' --onlyDet TRD --interactionRate ' + str(INTRATE) + ' --incontext ' + str(CONTEXTFILE) + ' --disable-write-ini' \
+ putConfigValues(localCF={"TRDSimParams.digithreads" : NWORKERS_TF, "DigiParams.seed" : str(TFSEED)}) + " --forceSelectedDets"
TRDDigitask['cmd'] += ('',' --disable-mc')[args.no_mc_labels]
if isActive("TRD"):
workflow['stages'].append(TRDDigitask)
addWhenActive("TRD", workflow['stages'], TRDDigitask)

# these are digitizers which are single threaded
def createRestDigiTask(name, det='ALLSMALLER'):
Expand Down Expand Up @@ -1422,8 +1431,7 @@ def getDigiTaskName(det):
'--disable-slewing-calib', # because effect not simulated in MC
putConfigValues()
])
if isActive("FT0"):
workflow['stages'].append(FT0RECOtask)
addWhenActive("FT0", workflow['stages'], FT0RECOtask)

#<--------- ITS-TPC track matching task
ITSTPCMATCHtask=createTask(name='itstpcMatch_'+str(tf), needs=[TPCRECOtask['name'], ITSRECOtask['name'], FT0RECOtask['name'] if isActive("FT0") else None], tf=tf, cwd=timeframeworkdir, lab=["RECO"], mem='8000', relative_cpu=3/8)
Expand Down Expand Up @@ -1455,8 +1463,7 @@ def getDigiTaskName(det):
getDPL_global_options(),
putConfigValues(),
('',' --disable-mc')[args.no_mc_labels]])
if isActive("TRD"):
workflow['stages'].append(TRDTRACKINGtask)
addWhenActive("TRD", workflow['stages'], TRDTRACKINGtask)

#<--------- TRD global tracking
# FIXME This is so far a workaround to avoud a race condition for trdcalibratedtracklets.root
Expand All @@ -1476,8 +1483,7 @@ def getDigiTaskName(det):
'--track-sources ' + trd_track_sources,
tpc_corr_scaling_options,
tpc_corr_options_mc])
if isActive("TRD"):
workflow['stages'].append(TRDTRACKINGtask2)
addWhenActive("TRD", workflow['stages'], TRDTRACKINGtask2)

#<--------- TOF reco task
TOFRECOtask = createTask(name='tofmatch_'+str(tf), needs=[ITSTPCMATCHtask['name'], getDigiTaskName("TOF")], tf=tf, cwd=timeframeworkdir, lab=["RECO"], mem='1500')
Expand All @@ -1488,8 +1494,7 @@ def getDigiTaskName(det):
putConfigValues(),
('',' --disable-mc')[args.no_mc_labels]
])
if isActive('TOF'):
workflow['stages'].append(TOFRECOtask)
addWhenActive("TOF", workflow['stages'], TOFRECOtask)

#<--------- TOF-TPC(-ITS) global track matcher workflow
toftpcmatchneeds = [TOFRECOtask['name'],
Expand Down Expand Up @@ -1517,8 +1522,7 @@ def getDigiTaskName(det):
tpc_corr_options_mc
]
TOFTPCMATCHERtask['cmd'] = task_finalizer(tofmatcher_cmd_parts)
if isActive('TOF'):
workflow['stages'].append(TOFTPCMATCHERtask)
addWhenActive("TOF", workflow['stages'], TOFTPCMATCHERtask)

# MFT reco: needing access to kinematics (when assessment enabled)
mftreconeeds = [getDigiTaskName("MFT")]
Expand All @@ -1537,8 +1541,7 @@ def getDigiTaskName(det):
'MFTClustererParam']),
('','--disable-mc')[args.no_mc_labels],
('','--run-assessment')[args.mft_assessment_full]])
if isActive("MFT"):
workflow['stages'].append(MFTRECOtask)
addWhenActive("MFT", workflow['stages'], MFTRECOtask)

# MCH reco: needing access to kinematics ... so some extra logic needed here
mchreconeeds = [getDigiTaskName("MCH")]
Expand All @@ -1554,8 +1557,7 @@ def getDigiTaskName(det):
putConfigValues(),
('',' --disable-mc')[args.no_mc_labels],
'--enable-clusters-root-output'])
if isActive("MCH"):
workflow['stages'].append(MCHRECOtask)
addWhenActive("MCH", workflow['stages'], MCHRECOtask)

#<--------- MID reco workflow
MIDRECOtask = createTask(name='midreco_'+str(tf), needs=[getDigiTaskName("MID")], tf=tf, cwd=timeframeworkdir, lab=["RECO"], mem='1500')
Expand All @@ -1566,26 +1568,23 @@ def getDigiTaskName(det):
MIDRECOtask['cmd'] += task_finalizer(['${O2_ROOT}/bin/o2-mid-reco-workflow',
getDPL_global_options(),
putConfigValues(),('',' --disable-mc')[args.no_mc_labels]])
if isActive('MID'):
workflow['stages'].append(MIDRECOtask)
addWhenActive("MID", workflow['stages'], MIDRECOtask)

#<--------- FDD reco workflow
FDDRECOtask = createTask(name='fddreco_'+str(tf), needs=[getDigiTaskName("FDD")], tf=tf, cwd=timeframeworkdir, lab=["RECO"], mem='1500')
FDDRECOtask['cmd'] = task_finalizer(['${O2_ROOT}/bin/o2-fdd-reco-workflow',
getDPL_global_options(ccdbbackend=False),
putConfigValues(),
('',' --disable-mc')[args.no_mc_labels]])
if isActive("FDD"):
workflow['stages'].append(FDDRECOtask)
addWhenActive("FDD", workflow['stages'], FDDRECOtask)

#<--------- FV0 reco workflow
FV0RECOtask = createTask(name='fv0reco_'+str(tf), needs=[getDigiTaskName("FV0")], tf=tf, cwd=timeframeworkdir, lab=["RECO"], mem='1500')
FV0RECOtask['cmd'] = task_finalizer(['${O2_ROOT}/bin/o2-fv0-reco-workflow',
getDPL_global_options(),
putConfigValues(),
('',' --disable-mc')[args.no_mc_labels]])
if isActive("FV0"):
workflow['stages'].append(FV0RECOtask)
addWhenActive("FV0", workflow['stages'], FV0RECOtask)

# calorimeters
#<--------- EMC reco workflow
Expand Down Expand Up @@ -1617,8 +1616,7 @@ def getDigiTaskName(det):
getDPL_global_options(),
'--subspec 0',
('',' --disable-mc')[args.no_mc_labels]])
if isActive("EMC"):
workflow['stages'].append(EMCRECOtask)
addWhenActive("EMC", workflow['stages'], EMCRECOtask)

#<--------- PHS reco workflow
PHSRECOtask = createTask(name='phsreco_'+str(tf), needs=[getDigiTaskName("PHS")], tf=tf, cwd=timeframeworkdir, lab=["RECO"], mem='1500')
Expand All @@ -1627,8 +1625,7 @@ def getDigiTaskName(det):
getDPL_global_options(),
putConfigValues(),
('',' --disable-mc')[args.no_mc_labels]])
if isActive("PHS"):
workflow['stages'].append(PHSRECOtask)
addWhenActive("PHS", workflow['stages'], PHSRECOtask)

#<--------- CPV reco workflow
CPVRECOtask = createTask(name='cpvreco_'+str(tf), needs=[getDigiTaskName("CPV")], tf=tf, cwd=timeframeworkdir, lab=["RECO"], mem='1500')
Expand All @@ -1637,8 +1634,7 @@ def getDigiTaskName(det):
getDPL_global_options(),
putConfigValues(),
('',' --disable-mc')[args.no_mc_labels]])
if isActive("CPV"):
workflow['stages'].append(CPVRECOtask)
addWhenActive("CPV", workflow['stages'], CPVRECOtask)

#<--------- ZDC reco workflow
ZDCRECOtask = createTask(name='zdcreco_'+str(tf), needs=[getDigiTaskName("ZDC")], tf=tf, cwd=timeframeworkdir, lab=["RECO", "ZDC"])
Expand All @@ -1647,8 +1643,7 @@ def getDigiTaskName(det):
getDPL_global_options(),
putConfigValues(),
('',' --disable-mc')[args.no_mc_labels]])
if isActive("ZDC"):
workflow['stages'].append(ZDCRECOtask)
addWhenActive("ZDC", workflow['stages'], ZDCRECOtask)

## forward matching
#<--------- MCH-MID forward matching
Expand All @@ -1658,8 +1653,7 @@ def getDigiTaskName(det):
getDPL_global_options(ccdbbackend=False),
putConfigValues(),
('',' --disable-mc')[args.no_mc_labels]])
if isActive("MID") and isActive("MCH"):
workflow['stages'].append(MCHMIDMATCHtask)
addWhenActive("MID,MCH", workflow['stages'], MCHMIDMATCHtask)

#<--------- MFT-MCH forward matching
forwardmatchneeds = [MCHRECOtask['name'],
Expand All @@ -1679,8 +1673,7 @@ def getDigiTaskName(det):
['${O2_ROOT}/bin/o2-globalfwd-assessment-workflow',
getDPL_global_options(),
('',' --disable-mc')[args.no_mc_labels]])
if isActive("MFT") and isActive("MCH"):
workflow['stages'].append(MFTMCHMATCHtask)
addWhenActive("MFT,MCH", workflow['stages'], MFTMCHMATCHtask)

if args.fwdmatching_save_trainingdata == True:
MFTMCHMATCHTraintask = createTask(name='mftmchMatchTrain_'+str(tf), needs=[MCHMIDMATCHtask['name'], MFTRECOtask['name']], tf=tf, cwd=timeframeworkdir, lab=["RECO"], mem='1500')
Expand All @@ -1695,8 +1688,7 @@ def getDigiTaskName(det):
['${O2_ROOT}/bin/o2-hmpid-digits-to-clusters-workflow',
getDPL_global_options(ccdbbackend=False),
putConfigValues()])
if isActive("HMP"):
workflow['stages'].append(HMPRECOtask)
addWhenActive("HMP", workflow['stages'], HMPRECOtask)

#<--------- HMP forward matching
hmpmatchneeds = [HMPRECOtask['name'],
Expand All @@ -1712,8 +1704,7 @@ def getDigiTaskName(det):
getDPL_global_options(),
putConfigValues()
])
if isActive("HMP"):
workflow['stages'].append(HMPMATCHtask)
addWhenActive("HMP", workflow['stages'], HMPMATCHtask)

#<---------- primary vertex finding
pvfinder_sources = dpl_option_from_config(anchorConfig,
Expand Down Expand Up @@ -2156,9 +2147,8 @@ def remove_json_prefix(path):
TPCTStask['cmd'] += ' --primary-vertices '
TPCTStask['cmd'] += ' | o2-tpc-time-series-workflow --enable-unbinned-root-output --sample-unbinned-tsallis --sampling-factor 0.01 '
TPCTStask['cmd'] += putConfigValues() + ' ' + getDPL_global_options(bigshm=True)
if isActive('TOF') and isActive('TPC') and isActive('FT0'):
# could be relaxed or changed once the timerseries worklow is more reactive to input cluster- and track-types
workflow['stages'].append(TPCTStask)
# could be relaxed or changed once the timerseries worklow is more reactive to input cluster- and track-types
addWhenActive("TOF,TPC,FT0", workflow['stages'], TPCTStask)

# cleanup
# --------
Expand Down
Loading