#!/usr/bin/env python

from optparse import OptionParser

parser = OptionParser()
parser.add_option('-t','--tree',action="store",type="str",dest="tree",default=None,help="name of tree (including path) in each file")
parser.add_option('-s','--selection',action="store",type="str",dest="selection",default=None,help="only entries satisfying this cut will be included in total")
options, args = parser.parse_args()

import sys

if options.tree is None:
    sys.exit("You must specify a tree name")

import ROOT
import fnmatch
import os

nfiles = 0

def find_files(dirs):
    for arg in args:
        for root, dirnames, filenames in os.walk(arg):
            for filename in fnmatch.filter(filenames, '*.root*'):
                nfiles += 1
                yield os.path.join(root, filename)

chain = ROOT.TChain(options.tree,"")
for file in find_files(args):
    chain.Add(file)

print "%i files"% nfiles
if options.selection is None:
    print "%i total entries"% chain.GetEntries()
else:
    print "%i entries after selection %s"% (chain.GetEntries(options.selection), options.selection)
