@@ -331,7 +331,17 @@ def cleanDetectorInputList(inputlist):
331331 del activeDetectors ['ZDC' ]
332332
333333def addWhenActive (detID , needslist , appendstring ):
334- if isActive (detID ):
334+ """Adds item to a list if detector(s) is (are) active
335+
336+ Args:
337+ detID: str
338+ detector to check, can also be comma-separated list of detectors
339+ needslist: list
340+ list, e.g. of task dicts added to workflow['stages']
341+ appendstring: str, dict, ...
342+ to be appended to needslist
343+ """
344+ if all (isActive (part ) for part in detID .split ("," )):
335345 needslist .append (appendstring )
336346
337347def retrieve_sor (run_number ):
@@ -1175,8 +1185,7 @@ def putConfigValues(listOfMainKeys=[], localCF = {}, globalTFConfig = True):
11751185 + ' --onlyDet TRD --interactionRate ' + str (INTRATE ) + ' --incontext ' + str (CONTEXTFILE ) + ' --disable-write-ini' \
11761186 + putConfigValues (localCF = {"TRDSimParams.digithreads" : NWORKERS_TF , "DigiParams.seed" : str (TFSEED )}) + " --forceSelectedDets"
11771187 TRDDigitask ['cmd' ] += ('' ,' --disable-mc' )[args .no_mc_labels ]
1178- if isActive ("TRD" ):
1179- workflow ['stages' ].append (TRDDigitask )
1188+ addWhenActive ("TRD" , workflow ['stages' ], TRDDigitask )
11801189
11811190 # these are digitizers which are single threaded
11821191 def createRestDigiTask (name , det = 'ALLSMALLER' ):
@@ -1422,8 +1431,7 @@ def getDigiTaskName(det):
14221431 '--disable-slewing-calib' , # because effect not simulated in MC
14231432 putConfigValues ()
14241433 ])
1425- if isActive ("FT0" ):
1426- workflow ['stages' ].append (FT0RECOtask )
1434+ addWhenActive ("FT0" , workflow ['stages' ], FT0RECOtask )
14271435
14281436 #<--------- ITS-TPC track matching task
14291437 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 )
@@ -1455,8 +1463,7 @@ def getDigiTaskName(det):
14551463 getDPL_global_options (),
14561464 putConfigValues (),
14571465 ('' ,' --disable-mc' )[args .no_mc_labels ]])
1458- if isActive ("TRD" ):
1459- workflow ['stages' ].append (TRDTRACKINGtask )
1466+ addWhenActive ("TRD" , workflow ['stages' ], TRDTRACKINGtask )
14601467
14611468 #<--------- TRD global tracking
14621469 # FIXME This is so far a workaround to avoud a race condition for trdcalibratedtracklets.root
@@ -1476,8 +1483,7 @@ def getDigiTaskName(det):
14761483 '--track-sources ' + trd_track_sources ,
14771484 tpc_corr_scaling_options ,
14781485 tpc_corr_options_mc ])
1479- if isActive ("TRD" ):
1480- workflow ['stages' ].append (TRDTRACKINGtask2 )
1486+ addWhenActive ("TRD" , workflow ['stages' ], TRDTRACKINGtask2 )
14811487
14821488 #<--------- TOF reco task
14831489 TOFRECOtask = createTask (name = 'tofmatch_' + str (tf ), needs = [ITSTPCMATCHtask ['name' ], getDigiTaskName ("TOF" )], tf = tf , cwd = timeframeworkdir , lab = ["RECO" ], mem = '1500' )
@@ -1488,8 +1494,7 @@ def getDigiTaskName(det):
14881494 putConfigValues (),
14891495 ('' ,' --disable-mc' )[args .no_mc_labels ]
14901496 ])
1491- if isActive ('TOF' ):
1492- workflow ['stages' ].append (TOFRECOtask )
1497+ addWhenActive ("TOF" , workflow ['stages' ], TOFRECOtask )
14931498
14941499 #<--------- TOF-TPC(-ITS) global track matcher workflow
14951500 toftpcmatchneeds = [TOFRECOtask ['name' ],
@@ -1517,8 +1522,7 @@ def getDigiTaskName(det):
15171522 tpc_corr_options_mc
15181523 ]
15191524 TOFTPCMATCHERtask ['cmd' ] = task_finalizer (tofmatcher_cmd_parts )
1520- if isActive ('TOF' ):
1521- workflow ['stages' ].append (TOFTPCMATCHERtask )
1525+ addWhenActive ("TOF" , workflow ['stages' ], TOFTPCMATCHERtask )
15221526
15231527 # MFT reco: needing access to kinematics (when assessment enabled)
15241528 mftreconeeds = [getDigiTaskName ("MFT" )]
@@ -1537,8 +1541,7 @@ def getDigiTaskName(det):
15371541 'MFTClustererParam' ]),
15381542 ('' ,'--disable-mc' )[args .no_mc_labels ],
15391543 ('' ,'--run-assessment' )[args .mft_assessment_full ]])
1540- if isActive ("MFT" ):
1541- workflow ['stages' ].append (MFTRECOtask )
1544+ addWhenActive ("MFT" , workflow ['stages' ], MFTRECOtask )
15421545
15431546 # MCH reco: needing access to kinematics ... so some extra logic needed here
15441547 mchreconeeds = [getDigiTaskName ("MCH" )]
@@ -1554,8 +1557,7 @@ def getDigiTaskName(det):
15541557 putConfigValues (),
15551558 ('' ,' --disable-mc' )[args .no_mc_labels ],
15561559 '--enable-clusters-root-output' ])
1557- if isActive ("MCH" ):
1558- workflow ['stages' ].append (MCHRECOtask )
1560+ addWhenActive ("MCH" , workflow ['stages' ], MCHRECOtask )
15591561
15601562 #<--------- MID reco workflow
15611563 MIDRECOtask = createTask (name = 'midreco_' + str (tf ), needs = [getDigiTaskName ("MID" )], tf = tf , cwd = timeframeworkdir , lab = ["RECO" ], mem = '1500' )
@@ -1566,26 +1568,23 @@ def getDigiTaskName(det):
15661568 MIDRECOtask ['cmd' ] += task_finalizer (['${O2_ROOT}/bin/o2-mid-reco-workflow' ,
15671569 getDPL_global_options (),
15681570 putConfigValues (),('' ,' --disable-mc' )[args .no_mc_labels ]])
1569- if isActive ('MID' ):
1570- workflow ['stages' ].append (MIDRECOtask )
1571+ addWhenActive ("MID" , workflow ['stages' ], MIDRECOtask )
15711572
15721573 #<--------- FDD reco workflow
15731574 FDDRECOtask = createTask (name = 'fddreco_' + str (tf ), needs = [getDigiTaskName ("FDD" )], tf = tf , cwd = timeframeworkdir , lab = ["RECO" ], mem = '1500' )
15741575 FDDRECOtask ['cmd' ] = task_finalizer (['${O2_ROOT}/bin/o2-fdd-reco-workflow' ,
15751576 getDPL_global_options (ccdbbackend = False ),
15761577 putConfigValues (),
15771578 ('' ,' --disable-mc' )[args .no_mc_labels ]])
1578- if isActive ("FDD" ):
1579- workflow ['stages' ].append (FDDRECOtask )
1579+ addWhenActive ("FDD" , workflow ['stages' ], FDDRECOtask )
15801580
15811581 #<--------- FV0 reco workflow
15821582 FV0RECOtask = createTask (name = 'fv0reco_' + str (tf ), needs = [getDigiTaskName ("FV0" )], tf = tf , cwd = timeframeworkdir , lab = ["RECO" ], mem = '1500' )
15831583 FV0RECOtask ['cmd' ] = task_finalizer (['${O2_ROOT}/bin/o2-fv0-reco-workflow' ,
15841584 getDPL_global_options (),
15851585 putConfigValues (),
15861586 ('' ,' --disable-mc' )[args .no_mc_labels ]])
1587- if isActive ("FV0" ):
1588- workflow ['stages' ].append (FV0RECOtask )
1587+ addWhenActive ("FV0" , workflow ['stages' ], FV0RECOtask )
15891588
15901589 # calorimeters
15911590 #<--------- EMC reco workflow
@@ -1617,8 +1616,7 @@ def getDigiTaskName(det):
16171616 getDPL_global_options (),
16181617 '--subspec 0' ,
16191618 ('' ,' --disable-mc' )[args .no_mc_labels ]])
1620- if isActive ("EMC" ):
1621- workflow ['stages' ].append (EMCRECOtask )
1619+ addWhenActive ("EMC" , workflow ['stages' ], EMCRECOtask )
16221620
16231621 #<--------- PHS reco workflow
16241622 PHSRECOtask = createTask (name = 'phsreco_' + str (tf ), needs = [getDigiTaskName ("PHS" )], tf = tf , cwd = timeframeworkdir , lab = ["RECO" ], mem = '1500' )
@@ -1627,8 +1625,7 @@ def getDigiTaskName(det):
16271625 getDPL_global_options (),
16281626 putConfigValues (),
16291627 ('' ,' --disable-mc' )[args .no_mc_labels ]])
1630- if isActive ("PHS" ):
1631- workflow ['stages' ].append (PHSRECOtask )
1628+ addWhenActive ("PHS" , workflow ['stages' ], PHSRECOtask )
16321629
16331630 #<--------- CPV reco workflow
16341631 CPVRECOtask = createTask (name = 'cpvreco_' + str (tf ), needs = [getDigiTaskName ("CPV" )], tf = tf , cwd = timeframeworkdir , lab = ["RECO" ], mem = '1500' )
@@ -1637,8 +1634,7 @@ def getDigiTaskName(det):
16371634 getDPL_global_options (),
16381635 putConfigValues (),
16391636 ('' ,' --disable-mc' )[args .no_mc_labels ]])
1640- if isActive ("CPV" ):
1641- workflow ['stages' ].append (CPVRECOtask )
1637+ addWhenActive ("CPV" , workflow ['stages' ], CPVRECOtask )
16421638
16431639 #<--------- ZDC reco workflow
16441640 ZDCRECOtask = createTask (name = 'zdcreco_' + str (tf ), needs = [getDigiTaskName ("ZDC" )], tf = tf , cwd = timeframeworkdir , lab = ["RECO" , "ZDC" ])
@@ -1647,8 +1643,7 @@ def getDigiTaskName(det):
16471643 getDPL_global_options (),
16481644 putConfigValues (),
16491645 ('' ,' --disable-mc' )[args .no_mc_labels ]])
1650- if isActive ("ZDC" ):
1651- workflow ['stages' ].append (ZDCRECOtask )
1646+ addWhenActive ("ZDC" , workflow ['stages' ], ZDCRECOtask )
16521647
16531648 ## forward matching
16541649 #<--------- MCH-MID forward matching
@@ -1658,8 +1653,7 @@ def getDigiTaskName(det):
16581653 getDPL_global_options (ccdbbackend = False ),
16591654 putConfigValues (),
16601655 ('' ,' --disable-mc' )[args .no_mc_labels ]])
1661- if isActive ("MID" ) and isActive ("MCH" ):
1662- workflow ['stages' ].append (MCHMIDMATCHtask )
1656+ addWhenActive ("MID,MCH" , workflow ['stages' ], MCHMIDMATCHtask )
16631657
16641658 #<--------- MFT-MCH forward matching
16651659 forwardmatchneeds = [MCHRECOtask ['name' ],
@@ -1679,8 +1673,7 @@ def getDigiTaskName(det):
16791673 ['${O2_ROOT}/bin/o2-globalfwd-assessment-workflow' ,
16801674 getDPL_global_options (),
16811675 ('' ,' --disable-mc' )[args .no_mc_labels ]])
1682- if isActive ("MFT" ) and isActive ("MCH" ):
1683- workflow ['stages' ].append (MFTMCHMATCHtask )
1676+ addWhenActive ("MFT,MCH" , workflow ['stages' ], MFTMCHMATCHtask )
16841677
16851678 if args .fwdmatching_save_trainingdata == True :
16861679 MFTMCHMATCHTraintask = createTask (name = 'mftmchMatchTrain_' + str (tf ), needs = [MCHMIDMATCHtask ['name' ], MFTRECOtask ['name' ]], tf = tf , cwd = timeframeworkdir , lab = ["RECO" ], mem = '1500' )
@@ -1695,8 +1688,7 @@ def getDigiTaskName(det):
16951688 ['${O2_ROOT}/bin/o2-hmpid-digits-to-clusters-workflow' ,
16961689 getDPL_global_options (ccdbbackend = False ),
16971690 putConfigValues ()])
1698- if isActive ("HMP" ):
1699- workflow ['stages' ].append (HMPRECOtask )
1691+ addWhenActive ("HMP" , workflow ['stages' ], HMPRECOtask )
17001692
17011693 #<--------- HMP forward matching
17021694 hmpmatchneeds = [HMPRECOtask ['name' ],
@@ -1712,8 +1704,7 @@ def getDigiTaskName(det):
17121704 getDPL_global_options (),
17131705 putConfigValues ()
17141706 ])
1715- if isActive ("HMP" ):
1716- workflow ['stages' ].append (HMPMATCHtask )
1707+ addWhenActive ("HMP" , workflow ['stages' ], HMPMATCHtask )
17171708
17181709 #<---------- primary vertex finding
17191710 pvfinder_sources = dpl_option_from_config (anchorConfig ,
@@ -2156,9 +2147,8 @@ def remove_json_prefix(path):
21562147 TPCTStask ['cmd' ] += ' --primary-vertices '
21572148 TPCTStask ['cmd' ] += ' | o2-tpc-time-series-workflow --enable-unbinned-root-output --sample-unbinned-tsallis --sampling-factor 0.01 '
21582149 TPCTStask ['cmd' ] += putConfigValues () + ' ' + getDPL_global_options (bigshm = True )
2159- if isActive ('TOF' ) and isActive ('TPC' ) and isActive ('FT0' ):
2160- # could be relaxed or changed once the timerseries worklow is more reactive to input cluster- and track-types
2161- workflow ['stages' ].append (TPCTStask )
2150+ # could be relaxed or changed once the timerseries worklow is more reactive to input cluster- and track-types
2151+ addWhenActive ("TOF,TPC,FT0" , workflow ['stages' ], TPCTStask )
21622152
21632153 # cleanup
21642154 # --------
0 commit comments