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