Belle II Software  release-06-00-14
beamBkgHitRates.py
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 
4 
11 
12 # ---------------------------------------------------------------------------------------
13 # Steering file for producing summary ntuple of beam background hit rates
14 #
15 # usage: basf2 beamBkgHitRates.py expNo runNo globalTag [outputFolder]
16 # ---------------------------------------------------------------------------------------
17 
18 import basf2
19 import sys
20 import glob
21 from rawdata import add_unpackers
22 from svd import add_svd_reconstruction
23 from ROOT import Belle2
24 
25 # Argument parsing
26 argvs = sys.argv
27 if len(argvs) < 4:
28  print("usage: basf2", argvs[0], "expNo runNo globalTag [outputFolder]")
29  sys.exit()
30 
31 expNo = 'e' + '{:0=4d}'.format(int(argvs[1]))
32 runNo = 'r' + '{:0=5d}'.format(int(argvs[2]))
33 global_tag = argvs[3]
34 trigTypes = [5, 7] # trigger types for event selection (see TRGSummary.h)
35 
36 indir = '/hsm/belle2/bdata/Data/Raw/' + expNo + '/' + runNo + '/sub00'
37 files = sorted(glob.glob(indir + '/*.root'))
38 if len(files) == 0:
39  basf2.B2ERROR('No files found in ' + indir)
40  sys.exit()
41 
42 outdir = '.'
43 if len(argvs) > 4:
44  outdir = argvs[4]
45 outputFile = outdir + '/beamBkgHitRates-' + expNo + '-' + runNo + '.root'
46 
47 
48 class SelectTRGTypes(basf2.Module):
49  ''' select events according to given trigger types '''
50 
51  def event(self):
52  ''' event processing '''
53 
54  self.return_value(0)
55  trg_summary = Belle2.PyStoreObj('TRGSummary')
56  if not trg_summary.isValid():
57  basf2.B2ERROR('No TRGSummary available - event ignored')
58  return
59 
60  for trgType in trigTypes:
61  if trg_summary.getTimType() == trgType:
62  self.return_value(1)
63  return
64 
65 
66 # Define global tag
67 basf2.conditions.prepend_globaltag(global_tag)
68 
69 # Create paths
70 main = basf2.create_path()
71 emptypath = basf2.create_path()
72 
73 # Input (raw data)
74 main.add_module('RootInput', inputFileNames=files)
75 
76 # Gearbox
77 main.add_module('Gearbox')
78 
79 # Geometry
80 main.add_module('Geometry')
81 
82 # Unpack TRGSummary
83 main.add_module('TRGGDLUnpacker')
84 main.add_module('TRGGDLSummary')
85 
86 # Show progress of processing
87 main.add_module('Progress')
88 
89 # Skip events not matching given trigger types, if the list is not empty
90 if len(trigTypes) > 0:
91  selector = SelectTRGTypes()
92  main.add_module(selector)
93  selector.if_false(emptypath)
94 
95 # Unpack detector data
96 add_unpackers(path=main,
97  components=['PXD', 'SVD', 'CDC', 'ECL', 'TOP', 'ARICH', 'KLM'])
98 
99 # additional modules if needed for hit processing
100 main.add_module('ARICHFillHits')
101 main.add_module('TOPChannelMasker')
102 main.add_module('ActivatePXDGainCalibrator')
103 main.add_module('PXDClusterizer')
104 add_svd_reconstruction(main, applyMasking=True)
105 main.add_module(
106  'SVDZeroSuppressionEmulator',
107  SNthreshold=5,
108  ShaperDigits='SVDShaperDigitsUnmasked',
109  ShaperDigitsIN='SVDShaperDigitsZS5')
110 main.add_module('TFCDC_WireHitPreparer',
111  wirePosition='aligned',
112  flightTimeEstimation='outwards',
113  filter='cuts_from_DB')
114 
115 # Beam background rate monitor: output to flat ntuple
116 main.add_module(
117  'BeamBkgHitRateMonitor',
118  outputFileName=outputFile,
119  trgTypes=trigTypes,
120  svdShaperDigitsName='SVDShaperDigitsZS5',
121  cdcTimeWindowLowerEdgeSmallCell=4720,
122  cdcTimeWindowUpperEdgeSmallCell=5020,
123  cdcTimeWindowLowerEdgeNormalCell=4720,
124  cdcTimeWindowUpperEdgeNormalCell=5020)
125 
126 # Process events
127 basf2.process(main)
128 
129 # Print call statistics
130 print(basf2.statistics)
a (simplified) python wrapper for StoreObjPtr.
Definition: PyStoreObj.h:67