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