ATLAS Offline Software
Classes | Functions
AFPAlignDBCreate Namespace Reference

Classes

class  AFPDBDict
 
class  folderBulk
 

Functions

def runLBtoDB (run, lb)
 
def makeFolderAndSpec (db, folderName, tag)
 
def main ()
 

Function Documentation

◆ main()

def AFPAlignDBCreate.main ( )

Definition at line 159 of file AFPAlignDBCreate.py.

159 def main():
160  dbFile = "Example.db"
161  dbName = "CONDBR2"
162 
163  # remove the old db file so that we can write the new one
164  try:
165  import os
166  os.remove(dbFile)
167  except IOError:
168  pass
169 
170  # get database service and open database
171  dbSvc = cool.DatabaseSvcFactory.databaseService()
172 
173  # database accessed via physical name
174  dbString = "sqlite://;schema=%s;dbname=%s" % (dbFile, dbName)
175  try:
176  db = dbSvc.createDatabase(dbString)
177  except Exception as e:
178  print ('Problem creating database', e)
179  sys.exit(-1)
180  print ("Created database", dbString)
181 
182  # define the folder in the database, its specification and its tag
183  folderBlkLoc_03=makeFolderAndSpec(db,folderName="/FWD/Onl/AFP/Align/Local", tag="AFPAlignLoc-03")
184  folderBlkGlob_03=makeFolderAndSpec(db,folderName="/FWD/Onl/AFP/Align/Global", tag="AFPAlignGlob-03")
185 
186  # copy everything from the xml file here
187  # https://gitlab.cern.ch/afp/AfpAnalysisToolbox/-/blob/master/AfpAnalysisTools/share/align.xml
188  # zeros for Run3; RP constants from https://indico.cern.ch/event/1138072/contributions/4774895/attachments/2405515/4114924/Trzebinski_ARP_Run3_Optics.pdf
189  # "toRun" is not used but it's kept here for better clarity
190 
191 
192  # update July 30, 2021
193  fromRun = 203302
194  myDict = AFPDBDict(folderBlk=folderBlkLoc_03)
195  myDict.savePayload(folderBlk=folderBlkLoc_03, fromRun=fromRun)
196 
197  fromRun = 329484
198  myDict = AFPDBDict(folderBlkLoc_03)
199  myDict.append(stationID=0, layerID=1, shiftX=17.1313e-3, shiftY=-46.7438e-3, shiftZ=0.0000, alpha=2.9785e-3, beta=0.0000, gamma=0.0000)
200  myDict.append(stationID=0, layerID=2, shiftX=15.7960e-3, shiftY=-53.7707e-3, shiftZ=0.0000, alpha=3.3048e-3, beta=0.0000, gamma=0.0000)
201  myDict.append(stationID=0, layerID=3, shiftX=0.0000, shiftY=0.0000, shiftZ=0.0000, alpha=0.0000, beta=0.0000, gamma=0.0000)
202  myDict.append(stationID=1, layerID=1, shiftX=138.0070e-3, shiftY=6.0528e-3, shiftZ=0.0000, alpha=-1.4420e-3, beta=0.0000, gamma=0.0000)
203  myDict.append(stationID=1, layerID=2, shiftX=-80.6720e-3, shiftY=24.1310e-3, shiftZ=0.0000, alpha=-3.6605e-3, beta=0.0000, gamma=0.0000)
204  myDict.append(stationID=1, layerID=3, shiftX=-51.5111e-3, shiftY=-32.9151e-3, shiftZ=0.0000, alpha=1.0762e-3, beta=0.0000, gamma=0.0000)
205  myDict.append(stationID=2, layerID=1, shiftX=149.6927e-3, shiftY=103.5674e-3, shiftZ=0.0000, alpha=-3.9565e-3, beta=0.0000, gamma=0.0000)
206  myDict.append(stationID=2, layerID=2, shiftX=144.1316e-3, shiftY=88.0891e-3, shiftZ=0.0000, alpha=3.3219e-3, beta=0.0000, gamma=0.0000)
207  myDict.append(stationID=2, layerID=3, shiftX=47.8090e-3, shiftY=153.5737e-3, shiftZ=0.0000, alpha=5.1961e-3, beta=0.0000, gamma=0.0000)
208  myDict.append(stationID=3, layerID=1, shiftX=0.0000, shiftY=0.0000, shiftZ=0.0000, alpha=0.0000, beta=0.0000, gamma=0.0000)
209  myDict.append(stationID=3, layerID=2, shiftX=-153.0397e-3,shiftY=132.8483e-3, shiftZ=0.0000, alpha=-3.9787e-3, beta=0.0000, gamma=0.0000)
210  myDict.append(stationID=3, layerID=3, shiftX=13.9500e-3, shiftY=136.9500e-3, shiftZ=0.0000, alpha=0.3829e-3, beta=0.0000, gamma=0.0000)
211  myDict.savePayload(folderBlk=folderBlkLoc_03, fromRun=fromRun)
212 
213  fromRun = 413300
214  myDict = AFPDBDict(folderBlk=folderBlkLoc_03)
215  myDict.savePayload(folderBlk=folderBlkLoc_03, fromRun=fromRun)
216 
217 
218  # fromRun, toRun = 203302, 203302
219  fromRun = 203302
220  myDict = AFPDBDict(folderBlk=folderBlkGlob_03)
221  myDict.append(stationID=0, alignType="RP", shiftX=-2.34, shiftY=-13.22)
222  myDict.append(stationID=1, alignType="RP", shiftX=-3.68, shiftY=-13.28)
223  myDict.append(stationID=2, alignType="RP", shiftX=-3.61, shiftY=-10.09)
224  myDict.append(stationID=3, alignType="RP", shiftX=-2.39, shiftY=-10.53)
225  myDict.savePayload(folderBlk=folderBlkGlob_03, fromRun=fromRun)
226 
227  # fromRun, toRun = 329484, 330470
228  fromRun = 329484
229  myDict = AFPDBDict(folderBlk=folderBlkGlob_03)
230  myDict.append(stationID=0, alignType="tracker", shiftX=-0.5)
231  myDict.append(stationID=1, alignType="tracker", shiftX=-0.5)
232  myDict.append(stationID=2, alignType="tracker", shiftX=-0.5)
233  myDict.append(stationID=3, alignType="tracker", shiftX=-0.5)
234  myDict.append(stationID=0, alignType="beam", shiftX=-1.045)
235  myDict.append(stationID=1, alignType="beam", shiftX=-0.864)
236  myDict.append(stationID=2, alignType="beam", shiftX=-1.155)
237  myDict.append(stationID=3, alignType="beam", shiftX=-0.891)
238  myDict.append(stationID=0, alignType="RP", shiftX=-3.16)
239  myDict.append(stationID=1, alignType="RP", shiftX=-4.07)
240  myDict.append(stationID=2, alignType="RP", shiftX=-4.26)
241  myDict.append(stationID=3, alignType="RP", shiftX=-2.93)
242  myDict.append(stationID=0, alignType="correction", shiftX=-0.420)
243  myDict.append(stationID=1, alignType="correction", shiftX=-0.320)
244  myDict.append(stationID=2, alignType="correction", shiftX=-0.220)
245  myDict.append(stationID=3, alignType="correction", shiftX=-0.320)
246  myDict.savePayload(folderBlk=folderBlkGlob_03, fromRun=fromRun)
247 
248  # fromRun, toRun = 331020, 335302
249  fromRun = 331020
250  myDict = AFPDBDict(folderBlk=folderBlkGlob_03)
251  myDict.append(stationID=0, alignType="tracker", shiftX=-0.5)
252  myDict.append(stationID=1, alignType="tracker", shiftX=-0.5)
253  myDict.append(stationID=2, alignType="tracker", shiftX=-0.5)
254  myDict.append(stationID=3, alignType="tracker", shiftX=-0.5)
255  myDict.append(stationID=0, alignType="beam", shiftX=-1.045)
256  myDict.append(stationID=1, alignType="beam", shiftX=-0.864)
257  myDict.append(stationID=2, alignType="beam", shiftX=-1.155)
258  myDict.append(stationID=3, alignType="beam", shiftX=-0.891)
259  myDict.append(stationID=0, alignType="RP", shiftX=-2.65)
260  myDict.append(stationID=1, alignType="RP", shiftX=-3.57)
261  myDict.append(stationID=2, alignType="RP", shiftX=-3.76)
262  myDict.append(stationID=3, alignType="RP", shiftX=-2.43)
263  myDict.append(stationID=0, alignType="correction", shiftX=-0.420)
264  myDict.append(stationID=1, alignType="correction", shiftX=-0.320)
265  myDict.append(stationID=2, alignType="correction", shiftX=-0.220)
266  myDict.append(stationID=3, alignType="correction", shiftX=-0.320)
267  myDict.savePayload(folderBlk=folderBlkGlob_03, fromRun=fromRun)
268 
269  # fromRun, toRun = 336288, 341692
270  fromRun = 336288
271  myDict = AFPDBDict(folderBlk=folderBlkGlob_03)
272  myDict.append(stationID=0, alignType="tracker", shiftX=-0.5)
273  myDict.append(stationID=1, alignType="tracker", shiftX=-0.5)
274  myDict.append(stationID=2, alignType="tracker", shiftX=-0.5)
275  myDict.append(stationID=3, alignType="tracker", shiftX=-0.5)
276  myDict.append(stationID=0, alignType="beam", shiftX=-1.045)
277  myDict.append(stationID=1, alignType="beam", shiftX=-0.864)
278  myDict.append(stationID=2, alignType="beam", shiftX=-1.155)
279  myDict.append(stationID=3, alignType="beam", shiftX=-0.891)
280  myDict.append(stationID=0, alignType="RP", shiftX=-2.38)
281  myDict.append(stationID=1, alignType="RP", shiftX=-3.60)
282  myDict.append(stationID=2, alignType="RP", shiftX=-3.87)
283  myDict.append(stationID=3, alignType="RP", shiftX=-2.23)
284  myDict.append(stationID=0, alignType="correction", shiftX=-0.420)
285  myDict.append(stationID=1, alignType="correction", shiftX=-0.320)
286  myDict.append(stationID=2, alignType="correction", shiftX=-0.220)
287  myDict.append(stationID=3, alignType="correction", shiftX=-0.320)
288  myDict.savePayload(folderBlk=folderBlkGlob_03, fromRun=fromRun)
289 
290  # fromRun, toRun = 347955, 348002
291  fromRun = 347955
292  myDict = AFPDBDict(folderBlk=folderBlkGlob_03)
293  myDict.append(stationID=0, alignType="RP", shiftX=-2.34, shiftY=-13.22)
294  myDict.append(stationID=1, alignType="RP", shiftX=-3.68, shiftY=-13.28)
295  myDict.append(stationID=2, alignType="RP", shiftX=-6.46, shiftY=-5.47)
296  myDict.append(stationID=3, alignType="RP", shiftX=-6.79, shiftY=-5.03)
297  myDict.savePayload(folderBlk=folderBlkGlob_03, fromRun=fromRun)
298 
299  fromRun = 413300
300  myDict = AFPDBDict(folderBlk=folderBlkGlob_03)
301  myDict.append(stationID=0, alignType="tracker", shiftX=-0.5)
302  myDict.append(stationID=1, alignType="tracker", shiftX=-0.5)
303  myDict.append(stationID=2, alignType="tracker", shiftX=-0.5)
304  myDict.append(stationID=3, alignType="tracker", shiftX=-0.5)
305  myDict.append(stationID=0, alignType="RP", shiftX=-1.509)
306  myDict.append(stationID=1, alignType="RP", shiftX=-2.315)
307  myDict.append(stationID=2, alignType="RP", shiftX=-2.325)
308  myDict.append(stationID=3, alignType="RP", shiftX=-1.5)
309  myDict.savePayload(folderBlk=folderBlkGlob_03, fromRun=fromRun)
310 
311  print ("\nClose database")
312  db.closeDatabase()
313 
314 

◆ makeFolderAndSpec()

def AFPAlignDBCreate.makeFolderAndSpec (   db,
  folderName,
  tag 
)
A function that will ensure a folder is in the database, it creates it if necessary. Also defines content of the folders. There are two folders: one for local constants and one for global constants. They both contain single entry of a long string

Definition at line 39 of file AFPAlignDBCreate.py.

39 def makeFolderAndSpec(db,folderName,tag):
40  """A function that will ensure a folder is in the database, it creates it if necessary. Also defines content of the folders. There are two folders: one for local constants and one for global constants. They both contain single entry of a long string"""
41 
42  spec=cool.RecordSpecification()
43 
44  # each folder contain just a single entry, this string will be JSON entry
45  spec.extend("data",cool.StorageType.String64k)
46 
47  runLumi=True
48 
49  # if there are more channels, use "CondAttrListCollection"; if there is only one channel, use "AthenaAttributeList"
50  # it's also possible to use "CondAttrListCollection" if there's only one channel
51  folder=AtlCoolLib.ensureFolder(db,folderName,spec,AtlCoolLib.athenaDesc(runLumi,'CondAttrListCollection'),cool.FolderVersioning.MULTI_VERSION)
52 
53  if(folder is None):
54  sys.exit(1)
55 
56  return folderBulk(folder, folderName, spec, tag)
57 

◆ runLBtoDB()

def AFPAlignDBCreate.runLBtoDB (   run,
  lb 
)
Turns run number and lumibock into integrer needed by the database

Definition at line 35 of file AFPAlignDBCreate.py.

35 def runLBtoDB(run,lb):
36  """Turns run number and lumibock into integrer needed by the database"""
37  return (run<<32) + lb
38 
if
if(febId1==febId2)
Definition: LArRodBlockPhysicsV0.cxx:567
AFPAlignDBCreate.main
def main()
Definition: AFPAlignDBCreate.py:159
AFPAlignDBCreate.makeFolderAndSpec
def makeFolderAndSpec(db, folderName, tag)
Definition: AFPAlignDBCreate.py:39
AFPAlignDBCreate.runLBtoDB
def runLBtoDB(run, lb)
Definition: AFPAlignDBCreate.py:35