Merit Skimmer
The fermipy-merit-skimmer
script can be used to create skimmed
Merit files (either MC or data) and serves as a replacement for the
web-based merit skimmer tool. The script accepts as input a sequence
of Merit file paths or lists of Merit file paths which can be either
local (nfs) or xrootd.
$ fermipy-merit-skimmer merit_list.txt --output=merit.root --selection='FswGamFilter' \
--aliases=aliases.yaml
$ fermipy-merit-skimmer merit_list.txt --output=merit-clean.root \
--selection='FswGamFilter && CLEAN' --aliases=EvtClassDefs_P8R2.xml
where merit_list.txt
is a text file with one path per line. The
--selection
option sets the selection that will be applied when
filtering events in each file. The --output
option sets the path to
the output merit file. The --aliases
option can be used to load an
alias file (set of key/value cut expression pairs). This option
can accept either a YAML alias file or an XML event class definition
file. The following illustrates the YAML alias file format:
FswGamFilter : FswGamState == 0
TracksCutFilter : FswGamState == 0 && TkrNumTracks > 0
CalEnergyFilter : FswGamState == 0 && CalEnergyRaw > 0
One can restrict the set of output branches with the --branches
option which accepts an alias file or a YAML file containing a list of
branch names. In the former case all branch names used in the given
alias set will be extracted and added to the list of output branches.
$ fermipy-merit-skimmer merit_list.txt --output=merit.root --selection='FswGamFilter' \
--aliases=EvtClassDefs_P8R2.xml --branches=EvtClassDefs_P8R2.xml
One can split the skimming task into separate batch jobs by running
with the --batch
option. This will subdivide task into N jobs
when N is the number of files in the list divided by
--files_per_job
. The name of the output ROOT file of each job
will be appended with the index of the job in the sequence
(e.g. skim_000.root, skim_001.root, etc.). The --time
and
--resources
options can be used to set the LSF wallclock time and
resource flags.
$ fermipy-merit-skimmer merit_list.txt --output=merit.root --selection='SOURCE && FRONT' \
--branches=EvtClassDefs_P8R2.xml --files_per_job=1000 --batch --aliases=EvtClassDefs_P8R2.xml
When skimming MC files it can be useful to extract the jobinfo
for
tracking the number of thrown events. The --extra_trees
option
can be used to copy one or more trees to the output file in addition
to the Merit Tuple:
$ fermipy-merit-skimmer merit_list.txt --output=merit.root --extra_trees=jobinfo