Belle II Software development
RandomDisplacement.py
1#!/usr/bin/env python3
2
3
10
11# Generates random EKLM displacement data.
12
13import basf2
14from ROOT.Belle2 import KLMDatabaseImporter, BKLMAlignment, EKLMAlignment, \
15 EKLMSegmentAlignment, KLMAlignmentData, \
16 KLMChannelIndex, KLMDisplacementGenerator
17
18# Create main path
19main = basf2.create_path()
20basf2.set_log_level(basf2.LogLevel.INFO)
21
22# EventInfoSetter
23main.add_module('EventInfoSetter')
24
25# Gearbox
26main.add_module('Gearbox')
27
28# Process the main path
29basf2.process(main)
30
31dbImporter = KLMDatabaseImporter()
32
33bklmAlignment = BKLMAlignment()
34eklmAlignment = EKLMAlignment()
35eklmSegmentAlignment = EKLMSegmentAlignment()
36
37# Random displacement for EKLM.
38displacementGenerator = KLMDisplacementGenerator()
39displacementGenerator.generateRandomDisplacement(
40 eklmAlignment, eklmSegmentAlignment, True, False)
41displacementGenerator.saveDisplacement(
42 eklmAlignment, eklmSegmentAlignment, 'EKLMDisplacement.root')
43
44# Zero displacement for BKLM.
45alignmentData = KLMAlignmentData(0, 0, 0, 0, 0, 0)
46index = KLMChannelIndex(KLMChannelIndex.c_IndexLevelLayer)
47index2 = KLMChannelIndex(KLMChannelIndex.c_IndexLevelLayer)
48index = index2.beginBKLM()
49
50while (index != index2.endBKLM()):
51 module = index.getKLMModuleNumber()
52 bklmAlignment.setModuleAlignment(module, alignmentData)
53 index.increment()
54
55# Import the payloads.
56dbImporter.setIOV(0, 0, -1, -1)
57dbImporter.importAlignment(
58 bklmAlignment, eklmAlignment, eklmSegmentAlignment, True)