Belle II Software  release-06-00-14
makeBGOverlayFromData.py
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 
4 
11 
12 import basf2
13 import sys
14 from rawdata import add_unpackers
15 from ROOT import Belle2
16 
17 # --------------------------------------------------------------------------------------
18 # Make data sample for BG overlay from experimental raw data
19 #
20 # Usage: basf2 makeBGOverlayFromData.py -i <inputFileName> -o <outputFileName> globalTag
21 #
22 # --------------------------------------------------------------------------------------
23 
24 # Argument parsing
25 argvs = sys.argv
26 if len(argvs) < 2:
27  print("usage: basf2", argvs[0], "globalTag -i <inputFileName> -o <outputFileName>")
28  sys.exit()
29 
30 globalTag = argvs[1]
31 trigTypes = [5, 7] # trigger types for event selection (see TRGSummary.h)
32 
33 
34 class SelectTRGTypes(basf2.Module):
35  ''' select events according to given trigger types '''
36 
37  def event(self):
38  ''' event processing '''
39 
40  self.return_value(0)
41  trg_summary = Belle2.PyStoreObj('TRGSummary')
42  if not trg_summary.isValid():
43  basf2.B2ERROR('No TRGSummary available - event ignored')
44  return
45 
46  for trgType in trigTypes:
47  if trg_summary.getTimType() == trgType:
48  self.return_value(1)
49  return
50 
51 
52 # Define global tag
53 basf2.conditions.prepend_globaltag(globalTag)
54 
55 # Create paths
56 main = basf2.create_path()
57 emptypath = basf2.create_path()
58 
59 # Input: raw data
60 main.add_module('RootInput')
61 
62 # Gearbox
63 main.add_module('Gearbox')
64 
65 # Geometry
66 main.add_module('Geometry')
67 
68 # Unpack TRGSummary
69 main.add_module('TRGGDLUnpacker')
70 main.add_module('TRGGDLSummary')
71 
72 # Show progress of processing
73 main.add_module('Progress')
74 
75 # Select random trigger events
76 selector = SelectTRGTypes()
77 main.add_module(selector)
78 selector.if_false(emptypath)
79 
80 # Unpack detector data
81 add_unpackers(main,
82  components=['PXD', 'SVD', 'CDC', 'ECL', 'TOP', 'ARICH', 'KLM'])
83 
84 # Shift the time of KLMDigits
85 main.add_module('KLMDigitTimeShifter')
86 
87 # ECL trigger unpacker and BGOverlay dataobject
88 main.add_module('TRGECLUnpacker')
89 main.add_module('TRGECLBGTCHit')
90 
91 # Convert ECLDsps to ECLWaveforms
92 compress = basf2.register_module('ECLCompressBGOverlay')
93 main.add_module(compress, CompressionAlgorithm=3)
94 compress.if_false(emptypath)
95 
96 # Output: digitized hits only
97 output = basf2.register_module('RootOutput')
98 output.param('branchNames', ['EventLevelTriggerTimeInfo', 'PXDDigits', 'SVDShaperDigits', 'CDCHits', 'TOPDigits',
99  'ARICHDigits', 'ECLWaveforms', 'KLMDigits', 'TRGECLBGTCHits'])
100 main.add_module(output)
101 
102 # Process events
103 basf2.process(main)
104 
105 # Print call statistics
106 print(basf2.statistics)
a (simplified) python wrapper for StoreObjPtr.
Definition: PyStoreObj.h:67