Revision: | 1.4 |
Committed: | Wed Jun 10 16:28:47 2009 UTC (15 years, 10 months ago) by cplager |
Branch: | MAIN |
CVS Tags: | CMSSW_3_8_6_patch1, CMSSW_3_8_6, CMSSW_3_8_5_patch3, CMSSW_3_8_5_patch2, CMSSW_3_8_4_patch4, CMSSW_3_8_5, CMSSW_3_8_4_patch3, CMSSW_3_8_4_patch2, CMSSW_3_8_4_patch1, CMSSW_3_8_4, CMSSW_3_8_3, CMSSW_3_8_2_patch1, CMSSW_3_6_3_SLHC1, CMSSW_3_8_1_patch4, CMSSW_3_8_2, CMSSW_3_8_1_patch3, CMSSW_3_6_1_patch7, CMSSW_3_8_1_patch2, CMSSW_3_8_1_patch1, CMSSW_3_7_1, CMSSW_3_8_1, CMSSW_3_6_3_patch2, CMSSW_3_8_0_patch1, CMSSW_3_8_0, CMSSW_3_6_1_patch6, CMSSW_3_8_0_pre8, CMSSW_3_8_0_pre7, CMSSW_3_8_0_pre6, CMSSW_3_6_3_patch1, CMSSW_3_7_0_patch4, CMSSW_3_7_0_patch3, CMSSW_3_8_0_pre5, CMSSW_3_6_1_patch5, CMSSW_3_8_0_pre4, CMSSW_3_6_3, CMSSW_3_8_0_pre2, CMSSW_3_7_0_patch2, CMSSW_3_6_2, CMSSW_3_7_0_patch1, CMSSW_3_8_0_pre1, CMSSW_3_6_1_patch4, CMSSW_3_7_0, CMSSW_3_6_1_patch3, CMSSW_3_5_7_hltpatch4, CMSSW_3_7_0_pre5, CMSSW_3_6_1_patch1, CMSSW_3_5_8_patch4, CMSSW_3_7_0_pre4, CMSSW_3_6_1, CMSSW_3_7_0_pre3, CMSSW_3_6_0_patch2, CMSSW_3_6_0_patch1, CMSSW_3_5_8_patch3, CMSSW_3_5_8_patch2, CMSSW_3_5_8_patch1, CMSSW_3_7_0_pre2, CMSSW_3_5_8, CMSSW_3_7_0_pre1, CMSSW_3_5_7, CMSSW_3_6_0, CMSSW_3_6_0_pre6, CMSSW_3_6_0_pre5, CMSSW_3_5_6_patch1, CMSSW_3_5_6, CMSSW_3_5_4_patch2, CMSSW_3_5_5, CMSSW_3_6_0_pre4, CMSSW_3_5_4_patch1, CMSSW_3_6_0_pre3, CMSSW_3_5_4, CMSSW_3_5_3, CMSSW_3_6_0_pre2, CMSSW_3_5_2_patch2, CMSSW_3_5_2_patch1, CMSSW_3_6_0_pre1, CMSSW_3_5_2, CMSSW_3_5_1_patch1, CMSSW_3_3_6_patch4, CMSSW_3_3_6_patch6, CMSSW_3_5_0_patch1, CMSSW_3_4_2_patch1, CMSSW_3_5_1, CMSSW_3_4_2, CMSSW_3_5_0, CMSSW_3_3_6_patch5, CMSSW_3_5_0_pre5, CMSSW_3_3_6_patch3, CMSSW_3_3_3_TSG, CMSSW_3_5_0_pre3, V00-03-01, V00-03-00, CMSSW_3_5_0_pre2, CMSSW_3_4_1, CMSSW_3_4_0, CMSSW_3_3_6_patch2, CMSSW_3_3_6_patch1, CMSSW_3_5_0_pre1, CMSSW_3_3_6, CMSSW_3_4_0_pre7, CMSSW_3_3_5, CMSSW_3_4_0_pre6, CMSSW_3_3_4, CMSSW_3_3_3_patch1, CMSSW_3_3_3, CMSSW_3_4_0_pre5, CMSSW_3_4_0_pre4, CMSSW_3_3_2, CMSSW_3_4_0_pre3, CMSSW_3_3_1, CMSSW_3_4_0_pre2, CMSSW_3_2_8, CMSSW_3_3_0, CMSSW_3_4_0_pre1, CMSSW_3_1_4, CMSSW_3_3_0_pre6, CMSSW_3_3_0_pre5, CMSSW_3_1_3, CMSSW_3_2_7, CMSSW_3_3_0_pre4, CMSSW_3_3_0_pre3, CMSSW_3_3_0_pre2, CMSSW_3_2_6, CMSSW_3_3_0_pre1, CMSSW_3_2_5, CMSSW_3_2_4, CMSSW_3_2_3, V00-02-06, CMSSW_3_2_2_patch2, CMSSW_3_2_2_patch1, CMSSW_3_2_2, CMSSW_3_1_2, CMSSW_3_2_1, CMSSW_3_2_0, CMSSW_3_1_1, CMSSW_3_1_0_patch1, CMSSW_3_1_0, CMSSW_3_1_0_pre11, CMSSW_3_1_0_pre10, V00-02-05 |
Changes since 1.3: | +81 -26 lines |
Log Message: | added new functionality to edmDumpEventContent: branch names, options, ability to filter output |
# | Content |
---|---|
1 | #!/usr/bin/env python |
2 | |
3 | import sys |
4 | import copy |
5 | import optparse |
6 | import re |
7 | |
8 | |
9 | class Branch(object): |
10 | pass |
11 | |
12 | |
13 | def branchType(branch): |
14 | type = cmstools.ROOT.branchToClass(branch).GetName() |
15 | if "edm::Wrapper" in type: |
16 | type = type.replace("edm::Wrapper<","").rstrip(">") |
17 | return type |
18 | |
19 | |
20 | def dumpBranches(filename): |
21 | events = cmstools.EventTree (filename) |
22 | listOfBranches = events._tree.GetListOfBranches() |
23 | trailingDotRE = re.compile (r'\.$') |
24 | branches = [] |
25 | regexList = [] |
26 | # are we asked to filter this list? |
27 | for regexString in options.regex: |
28 | #print "adding", regexString |
29 | regexList.append( re.compile( regexString, re.IGNORECASE ) ) |
30 | for branch in listOfBranches: |
31 | # print branch.GetName() |
32 | tmpBranch = Branch() |
33 | tmpBranch.fullname = branch.GetName() |
34 | tmpBranch.name = trailingDotRE.sub ('', tmpBranch.fullname) |
35 | if "EventAux" in tmpBranch.fullname: |
36 | continue |
37 | #print "found", tmpBranch.name |
38 | parts = tmpBranch.fullname.split("_") |
39 | tmpBranch.module = parts [1] |
40 | tmpBranch.label = parts [2] |
41 | tmpBranch.process = parts [3] |
42 | tmpBranch.type = branchType(branch) |
43 | tmpBranch.cpp = events.cppCode (tmpBranch.fullname) |
44 | # are there any matches to the regexList? |
45 | found = False |
46 | for regex in regexList: |
47 | # search the branch name |
48 | if regex.search (tmpBranch.name): |
49 | found = True |
50 | break |
51 | # search the type |
52 | if regex.search (tmpBranch.cpp): |
53 | found = True |
54 | break |
55 | # if there is a list and no matches |
56 | if regexList and not found: |
57 | continue |
58 | branches.append( copy.copy(tmpBranch) ) |
59 | for branch in branches: |
60 | #continue |
61 | if options.name: |
62 | print branch.name |
63 | elif options.all: |
64 | print '%-30s %-20s %-10s %-15s : %s' % \ |
65 | (branch.type, |
66 | '"' + branch.module + '"', |
67 | '"' + branch.label + '"', |
68 | '"' + branch.process + '"', |
69 | branch.name) |
70 | else: |
71 | print '%-30s %-20s %-10s %-15s' % \ |
72 | (branch.type, |
73 | '"' + branch.module + '"', |
74 | '"' + branch.label + '"', |
75 | '"' + branch.process + '"') |
76 | |
77 | |
78 | |
79 | if __name__ == "__main__": |
80 | |
81 | parser = optparse.OptionParser \ |
82 | ("usage: %prog [options] templates.root" \ |
83 | "\nPrints out info on edm file.") |
84 | parser.add_option ('--name', dest='name', action='store_true', |
85 | help='print out only branch names') |
86 | parser.add_option ('--all', dest='all', action='store_true', |
87 | help='Print out everything: type, module, label, '\ |
88 | 'process, and branch name') |
89 | parser.add_option ("--regex", dest='regex', action="append", |
90 | type="string", default=[], |
91 | help="Filter results based on regex") |
92 | options, args = parser.parse_args() |
93 | if not args: |
94 | print parser.print_usage() |
95 | sys.exit() |
96 | try: |
97 | import PhysicsTools.PythonAnalysis as cmstools |
98 | ## # to let ROOT understand we are in batch mode |
99 | ## sys.argv.append( '-b-' ) |
100 | import ROOT |
101 | ROOT.gROOT.SetBatch() # setting batch mode |
102 | ROOT.gSystem.Load("libFWCoreFWLite.so") |
103 | ROOT.AutoLibraryLoader.enable() |
104 | filename = args[0] |
105 | dumpBranches (filename) |
106 | except: |
107 | "Could not read %s" %filename |
108 | |
109 |