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