Belle II Software  release-05-01-25
ARICHDatabaseImporter_condDB.py
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3 from basf2 import *
4 import ROOT
5 from ROOT.Belle2 import ARICHDatabaseImporter
6 import os
7 import sys
8 from optparse import Option, OptionValueError, OptionParser
9 import glob
10 import subprocess
11 from fnmatch import fnmatch
12 
13 parser = OptionParser()
14 parser.add_option('-c', '--class', dest='whatclass', default='none', help='')
15 parser.add_option('-x', '--i-e', dest='importexport', default='export', help='')
16 parser.add_option('-t', '--hvtest', dest='hvtest', default='no', help='')
17 parser.add_option('-o', '--aopRootF', dest='aopRootF', default='ARICH_AerogelOpticalProperties.root', help='')
18 (options, args) = parser.parse_args()
19 ie = options.importexport
20 ieClass = options.whatclass
21 hvtest = options.hvtest
22 aopRootF = options.aopRootF
23 
24 home = os.environ['BELLE2_LOCAL_DIR']
25 
26 # More information about use_local_database please find here:
27 # https://b2-master.belle2.org/software/development/sphinx/framework/doc/index-03-framework.html?highlight=use_local_database#basf2.use_local_database
28 use_local_database()
29 # use_local_database("./ARICHdata/centraldb/database.txt", "./ARICHdata/centraldb/", False, LogLevel.ERROR, False)
30 # use_local_database("./ARICH_db_Test/centraldb/database.txt", "", False, LogLevel.ERROR, False)
31 # use_local_database("test_database.txt", "test_payloads")
32 # use_local_database("test_database.txt", "test_payloads")
33 # use use_central_database for uploading data to PNNL
34 # use_central_database("ARICHdata", LogLevel.ERROR)
35 # use_central_database("ARICH_db_Test", LogLevel.ERROR)
36 # use_central_database("development", LogLevel.ERROR)
37 #
38 
39 # EventInfoSetter is only needed to register EventMetaData in the Datastore to
40 # get rid of an error message with gearbox
41 eventinfo = register_module('EventInfoSetter')
42 eventinfo.initialize()
43 
44 main = create_path()
45 main.add_module(eventinfo)
46 
47 # create a gearbox module to read read the aerogel data so it can be used
48 # it needs to open just the aerogel/AerogelData.xml which includes all other xml
49 # files in that folder. What we do is that we set the backend to point to that
50 # folder so that gearbox can find all files in there.
51 
52 if(ie == "import"):
53  paramloader = register_module('Gearbox')
54  pathname = 'file://%s/data/AllData/' % (os.getcwd())
55  paramloader.param('backends', [pathname])
56  paramloader.param('fileName', 'ArichData.xml')
57  paramloader.initialize()
58 
59  # create a std::vector<string>
60  rootFilesHapdQA = ROOT.vector('string')()
61  # and add the files we want to read
62  xdirHapdQA = '%s/hapdQA/' % (os.getcwd())
63  for path, subdirs, files in os.walk(xdirHapdQA):
64  for name in files:
65  if fnmatch(name, "*.root"):
66  rootFilesHapdQA.push_back(os.path.join(path, name))
67 
68  # create a std::vector<string>
69  rootFilesHapdQE = ROOT.vector('string')()
70  # and add the files we want to read
71  # QE can be downloaded from http://research.kek.jp/group/arich/internal/pixel_map/
72  xdirHapdQE = '%s/hapdQE/' % (os.getcwd())
73  for path, subdirs, files in os.walk(xdirHapdQE):
74  for name in files:
75  if fnmatch(name, "*.root"):
76  rootFilesHapdQE.push_back(os.path.join(path, name))
77 
78  # create a std::vector<string>
79  rootFilesAsics = ROOT.vector('string')()
80  txtFilesAsics = ROOT.vector('string')()
81  # create path to directory
82  number = 'UY'
83  xdir = ('%s/asicData' + number + '/') % (os.getcwd())
84  # and add the files we want to read
85  for path, subdirs, files in os.walk(xdir):
86  for name in files:
87  if fnmatch(name, "*.root"):
88  rootFilesAsics.push_back(os.path.join(path, name))
89  if fnmatch(name, "*.txt"):
90  txtFilesAsics.push_back(os.path.join(path, name))
91 
92  # create a std::vector<string>
93  rootFilesFebTest = ROOT.vector('string')()
94  # and add the files we want to read
95  xdirFebTest = '%s/febTest/' % (os.getcwd())
96  for path, subdirs, files in os.walk(xdirFebTest):
97  for name in files:
98  if fnmatch(name, "*.root"):
99  rootFilesFebTest.push_back(os.path.join(path, name))
100  mypath = '%s/moduleTest/modules/' % (os.getcwd())
101 
102 if(ie == 'importAerogelInfoOnly'):
103  paramloader = register_module('Gearbox')
104  pathname = '/home/b-lab050/KEK/xmlarichdata/data/aerogel_xml_ver3_R/'
105  paramloader.param('backends', [pathname])
106  paramloader.param('fileName', 'AerogelData.xml')
107  paramloader.initialize()
108 
109 if(ie == 'importAerogelRayleighScatteringFit'):
110  paramloader = register_module('Gearbox')
111  pathname = '/home/b-lab050/KEK/xmlarichdata/xmlData/aerogel_xml_ver3_L/'
112  paramloader.param('backends', [pathname])
113  paramloader.param('fileName', 'aerogel_xml_ver3_L_fit.xml')
114  paramloader.initialize()
115 
116 process(main)
117 
118 if(ie == 'importAerogelInfoOnly'):
119  dbImporter = ARICHDatabaseImporter()
120  dbImporter.importAerogelInfo("Right")
121 
122 if(ie == 'importAerogelRayleighScatteringFit'):
123  dbImporter = ARICHDatabaseImporter()
124  dbImporter.importAeroRayleighScatteringFit("Left")
125 
126 
127 # and run the importer
128 if(ie == 'import'):
129  dbImporter = ARICHDatabaseImporter(rootFilesHapdQA, rootFilesAsics, txtFilesAsics, rootFilesHapdQE, rootFilesFebTest)
130  if(ieClass == 'aerogelInfo'):
131  dbImporter.importAerogelInfo()
132  if(ieClass == 'aerogelMap'):
133  dbImporter.importAerogelMap()
134  if(ieClass == 'aerogelTilesInfo'):
135  dbImporter.importAeroTilesInfo()
136  if(ieClass == 'hapdQA'):
137  dbImporter.importHapdQA()
138  if(ieClass == 'hapdQE'):
139  dbImporter.importHapdQE()
140  if(ieClass == 'hapdChipInfo'):
141  dbImporter.importHapdChipInfo()
142  if(ieClass == 'hapdInfo'):
143  dbImporter.importHapdInfo()
144  if(ieClass == 'hapd'):
145  dbImporter.importHapdQA()
146  dbImporter.importHapdQE()
147  dbImporter.importHapdChipInfo()
148  dbImporter.importHapdInfo()
149  if(ieClass == 'asicInfo'):
150  dbImporter.importAsicInfo()
151  if(ieClass == 'febTest'):
152  dbImporter.importFebTest()
153  if(ieClass == 'febInfo'):
154  dbImporter.importFEBoardInfo()
155  if(ieClass == 'moduleTest'):
156  dbImporter.importModuleTest(mypath, hvtest)
157  if(ieClass == 'sensorInfo'):
158  dbImporter.importSensorModuleInfo()
159  if(ieClass == 'sensorMap'):
160  dbImporter.importSensorModuleMap()
161 
162 if(ie == 'importAerogelTilesInfo'):
163  dbImporter = ARICHDatabaseImporter()
164  if(ieClass == 'aerogelTilesInfo'):
165  dbImporter.importAeroTilesInfo()
166 
167 if(ie == 'export'):
168  dbImporter = ARICHDatabaseImporter()
169  if(ieClass == 'aerogelInfo'):
170  dbImporter.exportAerogelInfo()
171  if(ieClass == 'aerogelMap'):
172  dbImporter.exportAerogelMap()
173  if(ieClass == 'aerogelTilesInfo'):
174  dbImporter.printAeroTileInfo()
175  if(ieClass == 'dumpAerogelOpticalProperties'):
176  # dbImporter.dumpAerogelOpticalProperties()
177  # dbImporter.dumpAerogelOpticalProperties("ARICH_AerogelOpticalProperties.root")
178  dbImporter.dumpAerogelOpticalProperties(aopRootF)
179  com = 'root -l ' + aopRootF + ' ' + home + '/arich/utility/scripts/plotTestARICHAerogelHist.C'
180  os.system(com)
181  if(ieClass == 'hapdQA'):
182  dbImporter.exportHapdQA()
183  if(ieClass == 'hapdQE'):
184  dbImporter.exportHapdQE()
185  if(ieClass == 'hapdInfo'):
186  dbImporter.exportHapdInfo()
187  if(ieClass == 'hapdChipInfo'):
188  dbImporter.exportHapdChipInfo()
189  if(ieClass == 'hapd'):
190  dbImporter.exportHapdQA()
191  dbImporter.exportHapdQE()
192  dbImporter.exportHapdInfo()
193  if(ieClass == 'asicInfo'):
194  dbImporter.exportAsicInfo()
195  if(ieClass == 'febTest'):
196  dbImporter.exportFebTest()
197  if(ieClass == 'febInfo'):
198  dbImporter.exportFEBoardInfo()
199  if(ieClass == 'moduleTest'):
200  dbImporter.exportModuleTest(hvtest)
201  if(ieClass == 'sensorMap'):
202  dbImporter.exportSensorModuleMap()
203  if(ieClass == 'all'):
204  dbImporter.exportAll()
205 
206 
207 # print parameters used in simulation/reconstruction software
208 # dbImporter.printSimulationPar()
209 # dbImporter.printModulesInfo()
210 # dbImporter.printChannelMapping()
211 # dbImporter.printGeometryConfig()
212 # dbImporter.dumpQEMap(True)
213 # dbImporter.dumpModuleNumbering()
214 
215 
216 # simple example that shows how to read data from database and use it
217 # dbImporter.getBiasVoltagesForHapdChip("KA0167")
218 
219 # simple example that shows how to extract aerogel recontruction data from database
220 # dbImporter.getMyParams("A165")