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