ATLAS Offline Software
Loading...
Searching...
No Matches
inspect_truth_file.py
Go to the documentation of this file.
1#!/usr/bin/env python
2
3# Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
4
5import ROOT
6import EventAnalyzer
7import optparse
8
9ROOT.gROOT.ProcessLine('.L Loader.C+')
10
11
12import time
13import sys
14
15
16
17
18def EventLoop(tree, outputhistfile, nDarkPhotons):
19
20 eventanalyzer = EventAnalyzer.EventAnalyzer( histControlName=outputhistfile, numberOfDarkPhotons=nDarkPhotons )
21 nBadOnes = 0
22 nEvents = tree.GetEntries()
23
24 # setup toolbar
25 toolbar_width = 50
26 sys.stdout.write("Process: [%s]" % (" " * toolbar_width))
27 sys.stdout.flush()
28 sys.stdout.write("\b" * (toolbar_width+1)) # return to start of line, after '['
29
30 nEvents = tree.GetEntries()
31 nEventsForUpdate = int(nEvents/toolbar_width)
32
33 for (nevent,event) in enumerate(tree):
34 if (nevent %nEventsForUpdate) == 0:
35 sys.stdout.write('#')
36 sys.stdout.flush()
37 pass
38 if not eventanalyzer.processEvent(event):
39 nBadOnes += 1
40 pass
41 pass
42
43 sys.stdout.write("\n")
44
45 print 'Total events:', nEvents
46 print 'Total bad events:', nBadOnes
47
48 eventanalyzer.finalize()
49
50
51if __name__=='__main__':
52 '''Helper function to quickly inspect the NTUP_TRUTH file, created from the EVGEN file.
53 Before processing it through the entire simulation, digitization and reconstruction chain,
54 it is wise to make sure the EVGEN file is as intended.
55 '''
56
57 parser = optparse.OptionParser()
58 parser.add_option('-f', '--file', dest='file_in', help='path to NTUP_TRUTH file to inspect' )
59 parser.add_option('-t', '--tree', dest='tree_name', default='truth', help='Name of tree in NTUP_TRUTH file' )
60 parser.add_option('-n', '--nDarkPhotons', dest='nDarkPhotons', type='int', default=1, help='Number of dark photons' )
61 parser.add_option('-o', '--outputhistfile', dest='outputhistfile', default='histControl', help='name of ROOT file with histograms' )
62
63 (options, args) = parser.parse_args()
64
65 if not options.file_in:
66 print 'ERROR: input file (./inspect_truth_file.py -f <path to NTUP_TRUTH file>) needed'
67 exit(0)
68 pass
69
70 ntup_file = ROOT.TFile.Open(options.file_in, 'r')
71 if not ntup_file:
72 print 'Path provided to NTUP_TRUTH file is incorrect. Or something is wrong with the file.'
73 pass
74
75 truth_tree = ROOT.TTree()
76
77 try:
78 ntup_file.GetObject(options.tree_name, truth_tree)
79 except LookupError:
80 print ' '
81 print 'ERROR: ', options.tree_name, 'is not a TTree in', options.file_in
82 print 'ERROR: ', 'provide the correct TTree name using (-t)'
83 print 'ERROR: ', 'Stuff inside', options.file_in
84 ntup_file.ls()
85 exit(0)
86
87 EventLoop(truth_tree, options.outputhistfile, options.nDarkPhotons)
EventLoop(tree, outputhistfile, nDarkPhotons)