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