Skip to content

Add ATLAS specific tasklist handers

Karol Krizka requested to merge add_atlas into master

Adds two tasklist handlers for running ATLAS workflows:

  • TransformTaskList for running transforms
  • AthenaTaskList for running athena.

Input

Both tasklist handlers assume that the tasklist is a list of input files to run over.

Automatic splitting an input file into multiple tasks is supported via the maxEventsPerJob setting. This option specifies the number of events per task. The handler counts the number of events in the input file and splits based on the requested number of events per task. This requires PyROOT as a dependency, but not the entire ATLAS software.

However, when possible, it is recommended to use AthenaMP for parallelizing event processing. This has a reduced memory footprint.

Output

The output is created in the current working directory. On successful exit, the output is then copied to the workdir using rsync. This two stage process is required due to how AthenaMP determines its temporary outputs. The implication is that the runner needs to run the command using bash.

Configuring Athena

All arguments to the transform or athena are defined as extra keys in the tasklist hander definitions. For example, adding postInclude = HITtoRDO:Campaigns/MC16NoPileUp.py translates into an argument of --postInclude='HITtoRDO:Campaigns/MC16NoPileUp.py'. Note the automatic wrapping of the value string inside single quotes. These are automatically added by the tasklist handler.

There are a few protected or keywords: path, workdir and maxEventsPerJob. For TransformTaskList, the following are also special: transform, input and output.

See examples below for the meaning of protected keywords. Note that path and workdir are protected due to PyTaskFarmer's internal mechanics.

TransformTaskList Example

Special required keywords:

  • transform: Name of transform to run (ie: Reco_tf.py)
  • input: Type of input files (ie: HITS)
  • output: Type of output files (ie: RDO)

A simple example for running no pileup digitization is below:

[digi]
TaskList = taskfarmer.atlas.TransformTaskList
transform = Reco_tf.py
athenaopt = all:--nprocs=64
input = HITS
output = RDO
autoConfiguration = everything
digiSteeringConf = StandardInTimeOnlyTruth
conditionsTag = default:OFLCOND-MC16-SDR-RUN2-06
geometryVersion = default:ATLAS-R2-2016-01-00-01
postInclude = default:PyJobTransforms/UseFrontier.py
preInclude = HITtoRDO:Campaigns/MC16NoPileUp.py
preExec = all:from ParticleBuilderOptions.AODFlags import AODFlags; AODFlags.ThinGeantTruth.set_Value_and_Lock(False);' 'HITtoRDO:from Digitization.DigitizationFlags import digitizationFlags; digitizationFlags.OldBeamSpotZSize = 42

AthenaTaskList Example

A simple example for running IDPVM:

[valid]
TaskList = taskfarmer.atlas.AthenaTaskList
jobOptions = InDetPhysValMonitoring/InDetPhysValMonitoring_topOptions.py
output = M_output.root
command = from InDetPhysValMonitoring.InDetPhysValJobProperties import InDetPhysValFlags; InDetPhysValFlags.doValidateTruthToRecoNtuple.set_Value_and_Lock(True)
Edited by Karol Krizka

Merge request reports