Belle II Software  release-06-02-00
ARICHBtest.py
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 
4 
11 
12 #
13 # Usage:
14 # basf2 arich/examples/ARICHBtest2011.py --
15 # -r 102 -n 10000
16 #
17 import basf2 as b2
18 from optparse import OptionParser
19 import os
20 import os.path
21 import sys
22 
23 b2.set_log_level(b2.LogLevel.INFO)
24 
25 outroot = 'arichbtest.root'
26 
27 parser = OptionParser()
28 parser.add_option('-r', '--run', dest='runno', default='068',
29  help='analyse runno')
30 parser.add_option('-p', '--path', dest='path',
31  default='/afs/f9.ijs.si/data/belle/data/beamtests/2011/run',
32  help='datapath')
33 
34 parser.add_option('-y', '--year', dest='year', default='2011',
35  help='beam test year')
36 
37 parser.add_option('-t', '--track-mask', dest='mask', default='0x5',
38  help='track mask 4 bits')
39 
40 parser.add_option('-m', '--avgagel', dest='avgagel', default='0',
41  help='average thc calculation based on the mean agel')
42 
43 parser.add_option(
44  '-o',
45  '--output',
46  dest='output',
47  default=outroot,
48  help='Output filename',
49  metavar='FILE',
50 )
51 
52 parser.add_option('-n', '--neve', dest='neve', default=20000,
53  help='Number of events to process')
54 
55 (options, args) = parser.parse_args()
56 
57 fname = options.path + '/run' + options.runno + '.dat'
58 
59 if not os.path.isfile(fname):
60  print('File does not exist:')
61  print(fname)
62  fname += '.gz'
63  print('Appending .gz...')
64 if not os.path.isfile(fname):
65  print('File does not exist:')
66  print(fname)
67  sys.exit(-1)
68 
69 if options.output == outroot:
70  outroot = 'run_' + options.runno + '.root'
71 else:
72  outroot = options.output
73 
74 mask = int(options.mask, 16)
75 runno = int(options.runno) # needed for geoarich module
76 
77 print('TrackMask:' + options.mask)
78 
79 # this variable is called from GeoARICHBtest2011Creator
80 averageagel = int(options.avgagel)
81 
82 eventinfosetter = b2.register_module('EventInfoSetter')
83 eventinfosetter.param('evtNumList', [int(options.neve)])
84 eventinfosetter.param('runList', [int(options.runno)])
85 eventinfosetter.param('expList', [1])
86 
87 # Load XML parameters
88 paramloader = b2.register_module('Gearbox')
89 
90 xmlgeometry = 'file://%s/arich/modules/arichBtest/data/%s/arichBtest%s.xml' \
91  % (os.getcwd(), options.year, options.year)
92 paramloader.param('fileName', xmlgeometry)
93 print(xmlgeometry)
94 paramloader.param('fileName', xmlgeometry)
95 
96 # paramloader.param('Backends', ['sql:'])
97 # paramloader.param('Filename',
98 # 'mysql://basf2:belle2@f9lab02.ijs.si:3306/b2config');
99 # paramloader.param('Filename',
100 # 'pgsql://basf2:belle2@f9lab02.ijs.si:5432/b2config');
101 # paramloader.param('Filename', 'oracle://basf2:belle2@/f9lab02')
102 # paramloader.param('Filename',
103 # 'file:///afs/f9.ijs.si/home/rok/public_html/basf2/public/Belle2.xml');
104 # paramloader.param('Filename',
105 # 'file:///net/f9pc137/data0/belle2/rok/local/basf2/test/Belle2-merged.xml');
106 # Create Geometry
107 geobuilder = b2.register_module('Geometry')
108 geobuilder.param('components', ['ARICHBtest'])
109 
110 btest = b2.register_module('arichBtest')
111 btest.param('mwpcTrackMask', [mask])
112 # btest.param('Filename', 'arich/modules/arichBtest/data/2011/track.dat')
113 btest.param('runList', [fname])
114 btest.param('outputFileName', outroot)
115 momentum = 120.0
116 if options.year == '2013':
117  momentum = 3.0
118 print('Beam momentum ' + str(momentum))
119 btest.param('beamMomentum', momentum)
120 
121 # Simulation module
122 g4sim = b2.register_module('FullSim')
123 # This line is necessary if you want to simulate Cerenkov photons!
124 # By default optical processes are not registered.
125 g4sim.param('RegisterOptics', 1)
126 # To speed up the simulation you can propagate
127 # only a selected fraction of photons.
128 # By default all photons are propagated.
129 g4sim.param('PhotonFraction', 0.3)
130 # Set up the visualization
131 g4sim.param('EnableVisualization', True)
132 # Here you can select visualization driver and visualization commands.
133 # This creates VRML file,
134 # change VRML2FILE to HepRepFile to create HepRep file.
135 g4sim.param('UICommandsAtIdle', ['/vis/open VRML2FILE', '/vis/drawVolume',
136  '/vis/scene/add/axes 0 0 0 100 mm'])
137 
138 # Saves the geometry as a Root file
139 geosaver = b2.register_module('ExportGeometry')
140 geosaver.param('Filename', 'Belle2Geo.root')
141 
142 arichrec = b2.register_module('ARICHReconstructor')
143 arichrec.param('inputTrackType', 1)
144 arichrec.param('beamtest', 3)
145 arichrec.param('trackPositionResolution', 0.0)
146 arichrec.param('trackAngleResolution', 0.0)
147 
148 profile = b2.register_module('Profile')
149 profile.param('outputFileName', 'profileusage.ps')
150 
151 main = b2.create_path()
152 main.add_module(eventinfosetter)
153 main.add_module(paramloader)
154 # main.add_module(profile)
155 main.add_module(geobuilder)
156 main.add_module(btest)
157 main.add_module(arichrec)
158 # main.add_module(g4sim)
159 main.add_module(geosaver)
160 
161 b2.process(main)
162 
163 # Print basic event statistics to stdout
164 print('Event Statistics:')
165 print(b2.statistics)