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