Belle II Software  release-05-01-25
ARICHPrintParametersFromDB.py
1 #!/usr/bin/env python3
2 # -*- coding: utf-8 -*-
3 
4 # this prints parameters from the database for a given tag, experiment and run number
5 # Author: luka.santelj@ijs.si
6 
7 from basf2 import *
8 import ROOT
9 from ROOT.Belle2 import ARICHDatabaseImporter
10 import os
11 import sys
12 import glob
13 import subprocess
14 from fnmatch import fnmatch
15 from optparse import OptionParser
16 
17 parser = OptionParser()
18 parser.add_option('-t', '--tag', dest='tag', default='',
19  help='database tag from which to import/export data')
20 parser.add_option('-e', '--exp', dest='experiment',
21  default=-1, help='experiment')
22 parser.add_option('-r', '--run', dest='run',
23  default=-1, help='run')
24 parser.add_option('-o', '--object', dest='object',
25  default="", help='object to be printed')
26 
27 
28 (options, args) = parser.parse_args()
29 
30 if options.object == '':
31  print("use option -o to specify the object to be printed (ARICHReconstructionPar, etc)")
32 
33 # set database tag
34 if options.tag == 'local':
35  use_local_database("localdb/database.txt", "localdb")
36 elif options.tag == '':
37  print("Using default tag")
38 else:
39  use_central_database(options.tag)
40 
41 
42 # EventInfoSetter is only needed to register EventMetaData...
43 # (will try to get rid of this)
44 eventinfo = register_module('EventInfoSetter')
45 eventinfo.initialize()
46 main = 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 = register_module('Gearbox')
52 paramloader.initialize()
53 
54 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 == 'ARICHGeometryConfig':
82  # print geometry parameters of ARICH detector from the database
83  dbImporter.printGeometryConfig()
84 elif options.object == 'moduleNumbering':
85  # creates file with numbering of HAPD module slots (position on detector plane -> module number)
86  dbImporter.dumpModuleNumbering()
87 elif options.object == 'QEMap':
88  # creates root file with full detector plane QE map (all HAPDs) as stored in the database
89  dbImporter.dumpQEMap()
90 elif options.object == 'MergerMap':
91  # creates root file with numbering of HAPD modules to mergers (position on detector plane -> merger SN)
92  # use dbImporter.dumpMergerMapping(False) to print merger ID instead SN (ID = (sector-1)*12 + merger_sector_id (1-12))
93  dbImporter.dumpMergerMapping()
94 elif options.object == 'FEMappings':
95  # prints FE mappings (module to merger to copper) in json suitable format
96  dbImporter.printFEMappings()
97 else:
98  print('Non-valid arich DB object!')