138 parser = argparse.ArgumentParser(
139 description="Extracts a few basic quantities from the xAOD file and dumps them into a text file")
140 parser.add_argument("xAODFile", nargs='?', type=str,
141 help="xAOD filename", action="store")
142 parser.add_argument("outfilename", nargs='?',
143 help="output text file for results", action="store", default=None)
144 parser.add_argument(
145 "--outputfilename", help="output text file for results", action="store", default=None)
146 parser.add_argument("--extravars", help="Extract extra variables: pt/eta/phi",
147 action="store_true", default=False)
148 parser.add_argument("--counter", help="Print event counter mod 100",
149 action="store_true", default=False)
150 parser.add_argument("--inputlist", help="Optional list of xAOD file instead of xAODFile parameter",
151 nargs='+', action="store", default=False)
152 parser.add_argument("--inputisESD", help="Set if input is ESD",
153 action="store_true", default=False)
154
155 args = parser.parse_args()
156
157 if len(sys.argv) < 2:
158 parser.print_help()
159 sys.exit(1)
160
161
162 if not args.inputlist and not os.access(args.xAODFile, os.R_OK):
163 print(
"ERROR, can't access file {}".format(args.xAODFile))
164 sys.exit(1)
165
166
167 outfilename = ''
168 if args.outfilename:
169 outfilename = args.outfilename
170 elif args.outputfilename:
171 outfilename = args.outputfilename
172
173 if outfilename:
174 print(
"Writing to file ", outfilename)
175
176
177 if args.inputlist:
178 filelist = ROOT.TChain()
179 for filename in args.inputlist:
180 filelist.AddFile(filename)
181 else:
182 filelist = args.xAODFile
183
184
185 evt = ROOT.POOL.TEvent(
186 ROOT.POOL.TEvent.kPOOLAccess if args.inputisESD else ROOT.POOL.TEvent.kClassAccess)
187 stat = evt.readFrom(filelist)
188 if not stat:
189 print(
"ERROR, failed to open file {} with POOL.TEvent".format(
190 args.xAODFile))
191 sys.exit(1)
192 pass
193
194 digest = xAODDigest(evt, args.counter, args.extravars)
195
196 if outfilename:
197 outstr = open(outfilename, "w")
198 else:
199 outstr = sys.stdout
200
201 if args.extravars:
202 header = ("run", "event", "nTopo", "nIdTracks",
203 "nTauTracks", "nTaus", "tau1pt", "tau1eta", "tau1phi",
204 "nMuons", "muon1pt", "muon1eta", "muon1phi",
205 "nElec", "elec1pt", "elec1eta", "elec1phi", "nTrueElec", "nFakeElec",
206 "nPhot", "phot1pt", "phot1eta", "phot1phi", "nTruePhot", "nFakePhot",
207 "nJet", "jet1pt", "jet1eta", "jet1phi", "nmet", "metx", "mety", "sumet" )
208 row_format_header = "{:>20}" * len(header)
209 row_format_header += os.linesep
210 row_format_data = "{:d} {:d} " + "{:20.4f}" * (len(header)-2)
211 row_format_data += os.linesep
212 else:
213 header = ("run", "event", "nTopo", "nIdTracks", "nTauTracks", "nTaus", "nMuons",
214 "nElec", "nTrueElec", "nFakeElec",
215 "nPhot", "nTruePhot", "nFakePhot")
216 row_format_header = "{:>12}" * len(header)
217 row_format_header += os.linesep
218 row_format_data = "{:>12}" * len(header)
219 row_format_data += os.linesep
220
221 outstr.write(row_format_header.format(*header))
222 for evt in digest:
223 outstr.write(row_format_data.format(*evt))
224
225 if outfilename:
226 outstr.close()
227
228 return 0
229
230
void print(char *figname, TCanvas *c1)