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