Re: copy selected entries of subset of chain

From: Sebastien Binet <binet_at_cern.ch>
Date: Tue, 12 Apr 2011 15:44:53 +0200


Margar,

On Tue, 12 Apr 2011 15:18:05 +0200, Margar Simonyan <margar.simonyan_at_gmail.com> wrote:
> Hi Philippe
>
> when the second file is opened and, if I understand well, ROOT changes
> branch addresses of chain, it also forwards the changes to newTree.
> Since all branches of chain are active at that point, it tries to set
> address for newTree for branches that newTree does not have. This is
> at least one problem.

as I suspect this is for filtering atlas d3pds, you could perhaps give a spin to the "wonderful and amazing" filter-and-merge-d3pd.py script...

$ filter-and-merge-dp3d.py -h
Accepted command line options:

 -i, --in=<INFNAME>                   ...  file containing the list of input files
 -o, --out=<OUTFNAME>                 ...  output file name
 -t, --tree=<TREENAME>                ...  name of the tree to be filtered.
                                           other trees won't be copied by default
                                           (except if you pass --keep-all-trees)
     --var=<VARSFNAME>                ...  path to file listing the branch names
                                           to be kept in the output file.
     --grl=<GRLFNAME>                 ...  path to a GRL XML file or a list of
                                           comma-separated GRL XML files
 -m, --maxsize=<sz>                   ...  maximum zip size of the main tree (in Mb.)
     --fakeout                        ...  create fake output file if empty or
                                           non valid input tree is found (ease
                                           the pain on the GRID)
 -s, --selection=<PYTHON_CODE>        ...  a python snippet to select events
                                           or the path to python file holding
                                           the definition of a 'filter_fct'.
                                           ex:
                                             t.eg_px[0] > 10000 and t.eg_py[0] > 10000
                                           NOTE: the tree must be named 't' in your code.
                                           or:
                                            file:foo.py
                                            where foo.py contains:
                                            def filter_fct(t):
                                                return t.eg_px[0] > 10000
                                           NOTE: the function must be named 'filter_fct' and take the tree as a parameter
     --keep-all-trees                 ...  keep, filter and merge all other trees.

hth,
-s

-- 
#########################################
# Dr. Sebastien Binet
# Laboratoire de l'Accelerateur Lineaire
# Universite Paris-Sud XI
# Batiment 200
# 91898 Orsay
#########################################

  • application/pgp-signature attachment: stored
Received on Tue Apr 12 2011 - 15:45:18 CEST

This archive was generated by hypermail 2.2.0 : Tue Apr 12 2011 - 17:50:01 CEST