22def openBeamSpotDbFile(fileName, forceNew=False, folderName='/Indet/Beampos', dbName='BEAMSPOT'):
23 """Open a beam spot SQLite COOL file and get a `folderHandle` to the beam spot folder. If the folder
24 doesn't exist yet, it is created. If the SQLite file doesn't exist, it is created. If forceNew=True,
25 any previously existing output file with the specified name is overwritten."""
26 connString = 'sqlite://;schema=%s;dbname=%s' % (fileName,dbName)
27 dbSvc = cool.DatabaseSvcFactory.databaseService()
28 if forceNew and os.path.exists(fileName):
29 os.remove(fileName)
30 if os.path.exists(fileName):
31 db = dbSvc.openDatabase(connString,False)
32 else:
33 db = dbSvc.createDatabase(connString)
34
35
36 spec=cool.RecordSpecification()
37 spec.extend("status",cool.StorageType.Int32)
38 spec.extend("posX",cool.StorageType.Float)
39 spec.extend("posY",cool.StorageType.Float)
40 spec.extend("posZ",cool.StorageType.Float)
41 spec.extend("sigmaX",cool.StorageType.Float)
42 spec.extend("sigmaY",cool.StorageType.Float)
43 spec.extend("sigmaZ",cool.StorageType.Float)
44 spec.extend("tiltX",cool.StorageType.Float)
45 spec.extend("tiltY",cool.StorageType.Float)
46 spec.extend("sigmaXY",cool.StorageType.Float)
47 spec.extend("posXErr",cool.StorageType.Float)
48 spec.extend("posYErr",cool.StorageType.Float)
49 spec.extend("posZErr",cool.StorageType.Float)
50 spec.extend("sigmaXErr",cool.StorageType.Float)
51 spec.extend("sigmaYErr",cool.StorageType.Float)
52 spec.extend("sigmaZErr",cool.StorageType.Float)
53 spec.extend("tiltXErr",cool.StorageType.Float)
54 spec.extend("tiltYErr",cool.StorageType.Float)
55 spec.extend("sigmaXYErr",cool.StorageType.Float)
56
57 folder = AtlCoolLib.ensureFolder(db,folderName,spec,AtlCoolLib.athenaDesc(True,'AthenaAttributeList'),cool.FolderVersioning.MULTI_VERSION)
58
59 folderHandle = (db,folder,spec)
60 return folderHandle
61
62