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