Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Prerequisites

The skimmer is only usable on linux. For what concerns the external tools, skimmer v6r0 depends on :

  1. Perl 5, which should be found with "/usr/bin/env perl".
  2. ROOT 5.10.00 to 5.18.00 : the user can specify $ROOTSYS to any ROOT release, and it will be used as is by the skimmer, but the only validated releases are 5.10.00, 5.14.00g, 5.16.00-gl1 and 5.18/00 ; if not defined, the skimmer will search for $GLAST_EXT/ROOT/v5.10.00/root ; if $GLAST_EXT is not defined, it will be set to /afs/slac/g/glast/ground/GLAST_EXT/$CMTCONFIG ; if $CMTCONFIG is not defined, it will be set to rh9_gcc32.

What the skimmer basically do

The basic task of the skimmer is to take Glast ROOT files, containing ROOT trees, and produce similar output files with a subset of branches and events. The search for ROOT data files to be skimmed is called here mining. The eventual non-copy of some branches is called pruning. The copy of only a subset of events is called filtering.

...

The behavior of the skimmer is all tuned by some predefined shell variables. For a complete list of those variables, one can type "skimmer help", but the explanations will hardly make sense if you have not read this guide before.

Overview of parameters

As one can see in the steps given above, before the skimmer can proceed, it is collecting much information about the files to be skimmed, what they contain and what to extract. This is all tuned by some shell variables, and the information is mostly stored in few parameter files. The use of those text files bring several benefits :

...

Obviously enough, for a given <STEP>, SK_FORCE_<STEP> and SK_SKIP_<STEP> should never be true at the same time. Let's know see the details of each step.

Data files mining parameters

The list of input data files can be obtained by the skimmer from different sources :

...

No Format
SK_INPUT_CEL = ""
SK_INPUT_FILE_LIST = ""
SK_INPUT_TASK = ""
SK_RUN_MIN = 0
SK_RUN_MAX = 0
SK_OUTPUT_FILE_LIST=""
SK_DEBUG_FILE_LIST="false"

Release libraries determination parameters

When managing data such as recon, mc and/or digis, the skimmer needs to load the corresponding C++ libraries, with the correct release, and it will take them in a dedicated file, whose name is defined by variable SK_LIBRARY_LIST_FILE. In this file, each line is the full path of a shared library, eventually prefixed by its data type. Example of such a file :

...

No Format
SK_LIBRARY_LIST_FILE="${PWD}/${SK_TASK}_LibraryList.txt"
SK_SKIP_GET_LIBRARY_LIST="false"
SK_FORCE_GET_LIBRARY_LIST="false"
SK_DEBUG_GET_LIBRARY_LIST="false"

Events filtering parameters

The actual skimming will only select the events given in a parameter file, whose name is defined by the shell variable SK_EVENT_LIST_FILE. Perhaps this file already exists, generated from a previous skimmer execution (and you eventually modified it), or because you wrote it from scratch. If not, the skimmer will generate one, based on the values of SK_TCUT_DATA_TYPE and SK_TCUT. The syntax of SK_TCUT should be the ROOT one. Currently, the only valid value for SK_TCUT_DATA_TYPE is merit.

...

In the case you do want to keep all the entries, which is not the default expectation, you need to act on several variables : the value of SK_TCUT should be "", the file defined by SK_EVENT_LIST_FILE must not exist, and the value of SK_SKIP_GET_EVENT_LIST should be "false". This way, the skimmer has no information about how to select the events, and will merge them all.

Branches pruning parameters

The skimmer can also take into account a list of the branches to be activated or desactivated. This list is given through a file, whose full file (including path) is given by variable SK_BRANCH_LIST_FILE. If this file does not exists, skimmer will generate it, and activate all the branches.

...

No Format
SK_BRANCH_LIST_FILE="${PWD}/${SK_TASK}_BranchList.txt"
SK_SKIP_GET_BRANCH_LIST=false
SK_FORCE_GET_BRANCH_LIST=false
SK_DEBUG_GET_BRANCH_LIST=false

The actual final skimming

We are now to the point where to say which types of data we want to skim. This is said by shell variable SK_DATA_TYPES, which should be a ":" separated list of data types. The current recognized types can be found in the guide /Skimmer at SLAC/. If SK_DATA_TYPES is empty, a default value of "merit:mc:digi:recon" will be used.

...