Belle II Software  release-06-01-15
unpackToTOPDigitsSpareModule.py
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3 
4 
11 
12 # ---------------------------------------------------------------------------------------
13 # Unpack raw data of the spare module #1 to TOPDigits
14 # Usage: basf2 unpackToTOPDigitsSpareModule.py -i <input_file.sroot> -o <output_file.root>
15 # ---------------------------------------------------------------------------------------
16 
17 import basf2 as b2
18 
19 # Create path
20 main = b2.create_path()
21 
22 # input
23 roinput = b2.register_module('SeqRootInput')
24 # roinput = register_module('RootInput')
25 main.add_module(roinput)
26 
27 # conversion from RawCOPPER or RawDataBlock to RawDetector objects
28 converter = b2.register_module('Convert2RawDet')
29 main.add_module(converter)
30 
31 # geometry parameters
32 gearbox = b2.register_module('Gearbox')
33 gearbox.param('fileName', 'top/TOPSpareModule.xml')
34 main.add_module(gearbox)
35 
36 # Geometry (only TOP needed)
37 geometry = b2.register_module('Geometry')
38 geometry.param('useDB', False)
39 geometry.param('components', ['TOP'])
40 main.add_module(geometry)
41 
42 # Unpacking (format auto detection works now)
43 unpack = b2.register_module('TOPUnpacker')
44 main.add_module(unpack)
45 
46 # Add multiple hits by running feature extraction offline
47 # remove if production format is used!
48 featureExtractor = b2.register_module('TOPWaveformFeatureExtractor')
49 main.add_module(featureExtractor)
50 
51 # Convert to TOPDigits
52 converter = b2.register_module('TOPRawDigitConverter')
53 converter.param('useSampleTimeCalibration', False)
54 converter.param('useChannelT0Calibration', False)
55 converter.param('useModuleT0Calibration', False)
56 converter.param('useCommonT0Calibration', False)
57 converter.param('lookBackWindows', 28) # depends on the run
58 converter.param('calibrationChannel', 0) # if set, cal pulses will be flagged
59 converter.param('calpulseHeightMin', 450) # in [ADC counts]
60 converter.param('calpulseHeightMax', 900) # in [ADC counts]
61 converter.param('calpulseWidthMin', 2.0) # in [ns]
62 converter.param('calpulseWidthMax', 6.0) # in [ns]
63 main.add_module(converter)
64 
65 # output
66 output = b2.register_module('RootOutput')
67 output.param('branchNames', ['TOPDigits', 'TOPRawDigits', 'TOPInterimFEInfos',
68  'TOPRawDigitsToTOPInterimFEInfos',
69  # 'TOPRawWaveforms', 'TOPRawWaveformsToTOPInterimFEInfos',
70  # 'TOPRawDigitsToTOPRawWaveforms',
71  ])
72 main.add_module(output)
73 
74 # Print progress
75 progress = b2.register_module('Progress')
76 main.add_module(progress)
77 
78 # Process events
79 b2.process(main)
80 
81 # Print statistics
82 print(b2.statistics)