Belle II Software  release-06-01-15
ARICHPrintParametersFromDB.py
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 
4 
11 
12 # this prints parameters from the database for a given tag, experiment and run number
13 
14 import basf2 as b2
15 from ROOT.Belle2 import ARICHDatabaseImporter
16 from optparse import OptionParser
17 
18 parser = OptionParser()
19 parser.add_option('-t', '--tag', dest='tag', default='',
20  help='database tag from which to import/export data')
21 parser.add_option('-e', '--exp', dest='experiment',
22  default=-1, help='experiment')
23 parser.add_option('-r', '--run', dest='run',
24  default=-1, help='run')
25 parser.add_option('-o', '--object', dest='object',
26  default="", help='object to be printed')
27 
28 
29 (options, args) = parser.parse_args()
30 
31 if options.object == '':
32  print("use option -o to specify the object to be printed (ARICHReconstructionPar, etc)")
33 
34 # set database tag
35 if options.tag == 'local':
36  b2.conditions.testing_payloads = ["localdb/database.txt"]
37 elif options.tag == '':
38  print("Using default tag")
39 else:
40  b2.conditions.override_globaltags([options.tag])
41 
42 # EventInfoSetter is only needed to register EventMetaData...
43 # (will try to get rid of this)
44 eventinfo = b2.register_module('EventInfoSetter')
45 eventinfo.initialize()
46 main = b2.create_path()
47 
48 main.add_module(eventinfo)
49 
50 # load gearbox for reading parameters from xml files (by default in "arich/data")
51 paramloader = b2.register_module('Gearbox')
52 paramloader.initialize()
53 
54 b2.process(main)
55 
56 # run the importer
57 dbImporter = ARICHDatabaseImporter()
58 exp = int(options.experiment)
59 run = int(options.run)
60 if exp > 0 and run > 0:
61  dbImporter.setExperimentAndRun(exp, run)
62 
63 if options.object == 'ARICHModulesInfo':
64  dbImporter.printModulesInfo()
65 elif options.object == 'ARICHSimulationPar':
66  dbImporter.printSimulationPar()
67 elif options.object == 'ARICHChannelMask':
68  dbImporter.printChannelMask() # use dbImporter.printChannelMask(True) to make 2d map of active channels
69 elif options.object == 'ARICHChannelMapping':
70  dbImporter.printChannelMapping()
71 elif options.object == 'ARICHMergerMapping':
72  dbImporter.printMergerMapping()
73 elif options.object == 'ARICHCopperMapping':
74  dbImporter.printCopperMapping()
75 elif options.object == 'ARICHReconstructionPar':
76  dbImporter.printReconstructionPar()
77 elif options.object == 'ARICHGlobalAlignment':
78  dbImporter.printGlobalAlignment()
79 elif options.object == 'ARICHMirrorAlignment':
80  dbImporter.printMirrorAlignment()
81 elif options.object == 'ARICHAeroTilesAlignment':
82  dbImporter.printAeroTilesAlignment()
83 elif options.object == 'ARICHGeometryConfig':
84  # print geometry parameters of ARICH detector from the database
85  dbImporter.printGeometryConfig()
86 elif options.object == 'moduleNumbering':
87  # creates file with numbering of HAPD module slots (position on detector plane -> module number)
88  dbImporter.dumpModuleNumbering()
89 elif options.object == 'QEMap':
90  # creates root file with full detector plane QE map (all HAPDs) as stored in the database
91  dbImporter.dumpQEMap()
92 elif options.object == 'MergerMap':
93  # creates root file with numbering of HAPD modules to mergers (position on detector plane -> merger SN)
94  # use dbImporter.dumpMergerMapping(False) to print merger ID instead SN (ID = (sector-1)*12 + merger_sector_id (1-12))
95  dbImporter.dumpMergerMapping()
96 elif options.object == 'FEMappings':
97  # prints FE mappings (module to merger to copper) in json suitable format
98  dbImporter.printFEMappings()
99 else:
100  print('Non-valid arich DB object!')