ATLAS Software: How to run The Full Chain

During development, a system running ATLAS Software has to be tested and validated. There are some standard tests that almost don’t need any input data, stress the system and — if they run properly — are a (very) good indicator that everything is set up correctly. I talk about the so-called JobTransforms. By combining these JobTransforms, the so-called Full Chain can be run — a convenient test. In this blog post I summarize what’s behind the Full Chain and provide a shell script to easily run it.

What is “The Full Chain”?

The so-called JobTransforms are python scripts that are used to run production tasks. They take an input file, a set of parameters and “transform” the input into one or more output files. Combined in the correct order, they build up The Full Chain. I will summarize the elements of the chain now:

  • Step 1) Event generation: a virtual particle gets created with a specific energy and direction.
    Input: particle definition file. Output: EVGEN file.
  • Step 2) Simulation: the interaction between this particle and the detector is simulated.
    Input: EVGEN file. Output: HITS file.
  • Step 3) Digitization: the ATLAS detector output is calculated.
    Input: HITS file. Output: RDO file.
  • Step 4) Reconstruction: times and voltages are reconstructed into tracks and energy deposits.
    Input: RDO file. Output: ESD file.
  • Step 5) Conversion: only keep the most important data from the last step.
    Input: ESD file. Output: AOD file.

The following picture from here visualizes the chain and — you might be interested in that — shows where real data from the LHC will play a role in reality:

The Full Chain

The Full Chain

How to realize “The Full Chain”

As you know, the input of step 1 is a small user-given file defining particle parameters. This file on my webserver describes a single pion with specific energy and direction. The content basically is the following:

# Single pi+ in log(E) between 200 MeV and 2 TeV
from AthenaCommon.AlgSequence import AlgSequence
topAlg = AlgSequence("TopAlg")
from ParticleGenerator.ParticleGeneratorConf import ParticleGenerator
topAlg += ParticleGenerator()
ParticleGenerator = topAlg.ParticleGenerator
# For DEBUG output from ParticleGenerator.
ParticleGenerator.OutputLevel = 2
ParticleGenerator.orders = [
  "PDGcode: constant 211",
  "e: log 200. 2000000.",
  "eta: flat -5.5 5.5",
  "phi: flat -3.14159 3.14159"
from EvgenJobOptions.SingleEvgenConfig import evgenConfig

At this point it’s not important to understand each line of this file. It works ;)

The following shellscript downloads this file and initializes The Full Chain for exactly one event of this particle. During execution, it measures timings.

mv singlepart_singlepi
echo -e "\nread CSC file, generate 1 single pion.. create EVGEN file..-> evgen.log"
time 007410 1 1 765432 EVGEN_007410_00001.pool.root > evgen.log
echo -e "\nread EVGEN file.. simulate.. create HITS file..-> simul.log"
time EVGEN_007410_00001.pool.root HITS_007410_00001.pool.root NONE 1 0 452368 "ATLAS-CSC-02-00-00" 0 0 "QGSP_BERT" > simul.log
echo -e "\nread HITS file.. digitize.. produce RDO file..-> digi.log"
time HITS_007410_00001.pool.root RDO_007410_00001.pool.root 1 0 "ATLAS-CSC-02-00-00" 740581234 29402491 'NONE' 'NONE' 'NONE' 'AtRndmGenSvc' 'QGSP_EMV' 'NONE' > digi.log
echo -e "\nread RDO file.. reconstruct.. produce ESD file..-> recoESD.log"
time RDO_007410_00001.pool.root ESD_007410_00001.pool.root 'NONE' 1 0 "ATLAS-CSC-02-00-00" 'NONE' > recoESD.log
echo -e "\nread ESD file.. convert.. produce AOD file..-> recoAOD.log"
time ESD_007410_00001.pool.root AOD_007410_00001.pool.root 1 0 "ATLAS-CSC-02-00-00" 'NONE' > recoAOD.log

You can download the script here.

After setting up the runtime environment for your ATLAS Software installation, you can simply download and execute this script. It should work! I tested it with ATLAS Software 15.2.0, as you can see in this blog post: CernVM: local ATLAS Software — the clean solution

One Pingback/Trackback