ATLAS Offline Software
Loading...
Searching...
No Matches
testAFPDB.py
Go to the documentation of this file.
1#!/bin/env python
2
3# Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
4
5# file testAFPDB.py
6# author Petr Balek <petr.balek@cern.ch> (with a lot of inspiration from Tomasz Bold)
7# date 2021-03-22
8
9# brief A script that will test reading from the local DB file. In order to test it:
10# 0. setup athena enviroment
11# 1. have the local database; either get it from somewhere else (will be done in future), or create a new one with AFPLocalAlignDBCreate.py:
12# $ python AFPLocalAlignDBCreate.py
13# 2. run this script as (feel free to change the input file):
14# $ python testAFPDB.py --filesInput=/afs/cern.ch/user/p/pbalek/workspace/public/data17_13TeV.00338480.physics_Main.daq.RAW/data17_13TeV.00338480.physics_Main.daq.RAW._lb0275._SFO-7._0007.data
15# 2a. for another alignment constants, try this input file (n.b.: local constants are the same, only global are different):
16# $ python testAFPDB.py --filesInput=/afs/cern.ch/user/p/pbalek/workspace/public/data17_13TeV.00333380.physics_Main.daq.RAW/data17_13TeV.00333380.physics_Main.daq.RAW._lb0163._SFO-7._0001.data
17# 3. the script will read the files and print out alignment variables for the events in the input file (based on run number and LB)
18
19# footnote: for the python setup with TopLocRecSeq, see AFP_LocReco/AFP_LocReco.py
20
21from AthenaConfiguration.ComponentAccumulator import CompFactory, ComponentAccumulator
22
23def testAFPDBCfg(flags):
24 acc = ComponentAccumulator()
25
26 from IOVDbSvc.IOVDbSvcConfig import addFoldersSplitOnline
27 from IOVDbSvc.IOVDbSvcConfig import addFolders
28
29 # these are two randomly picked conditions, checked for comparison
30 acc.merge(addFolders(flags, '/CALO/HadCalibration2/CaloEMFrac', 'CALO_ONL', className='CaloLocalHadCoeff', db='CONDBR2'))
31 acc.merge(addFoldersSplitOnline(flags, "INDET", "/Indet/Onl/Beampos", "/Indet/Beampos", className="AthenaAttributeList"))
32
33
34 # set from where to read the local information - from DB
35# acc.merge(addFolders(flags, "/FWD/Onl/AFP/Align/Local", 'FWD_ONL', className='CondAttrListCollection', tag='AFPAlignLoc-02', db="CONDBR2"))
36# acc.merge(addFolders(flags, "/FWD/Onl/AFP/Align/Global", 'FWD_ONL', className='CondAttrListCollection', tag='AFPAlignGlob-01', db="CONDBR2"))
37
38 # set from where to read the local information - from local file
39# schema = "<db>sqlite://;schema=Example.db;dbname=CONDBR2</db>"
40# locFolder = "/FWD/Onl/AFP/ToFParameters/Local"
41# locTag = "<tag>AFPToFLoc-01</tag>"
42# vtxFolder = "/FWD/Onl/AFP/ToFParameters/Vertex"
43# vtxTag = "<tag>AFPToFVtx-01</tag>"
44# acc.merge(addFolders(flags, schema+locFolder+locTag, className='CondAttrListCollection', db='CONDBR2' ))
45# acc.merge(addFolders(flags, schema+vtxFolder+vtxTag, className='CondAttrListCollection', db='CONDBR2' ))
46#
47# acc.addCondAlgo(CompFactory.AFPDBTester())
48
49
50 # this will read from DB for MC (note that the source file is still data that provides run and LB, thus this is really for testing only)
51 schema = "<db>sqlite://;schema=ExampleMC_Align.db;dbname=OFLP200</db>"
52 locFolder = "/FWD/AFP/Align/Local"
53 locTag = "<tag>AFPMCAlignLoc-329484-02</tag>"
54 globFolder = "/FWD/AFP/Align/Global"
55 globTag = "<tag>AFPMCAlignGlob-331020-01</tag>"
56 acc.merge(addFolders(flags, schema+locFolder+locTag, className='CondAttrListCollection', db='OFLP200' ))
57 acc.merge(addFolders(flags, schema+globFolder+globTag, className='CondAttrListCollection', db='OFLP200' ))
58
59 schema2 = "<db>sqlite://;schema=ExampleMC_ToF.db;dbname=OFLP200</db>"
60 acc.merge(addFolders(flags, schema2+"/FWD/AFP/ToFParameters/Local", className='CondAttrListCollection', tag='AFPMCToFLoc-ideal-01', db='OFLP200' ))
61 acc.merge(addFolders(flags, schema2+"/FWD/AFP/ToFParameters/Vertex", className='CondAttrListCollection', tag='AFPMCToFVtx-ideal-01', db='OFLP200' ))
62
63
64 acc.addCondAlgo(CompFactory.AFPDBTester("AFPDBTester", locshiftXkey="/FWD/AFP/Align/Local", globshiftXkey="/FWD/AFP/Align/Global", locToFkey="/FWD/AFP/ToFParameters/Local", vtxToFkey="/FWD/AFP/ToFParameters/Vertex"))
65
66
67
68 return acc
69
70
71if __name__ == "__main__":
72 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
73 from AthenaConfiguration.AllConfigFlags import initConfigFlags
74 flags = initConfigFlags()
75
76 #flags.Input.Files = [] # can hardcode file
77 # if you have issues wiht data dependencies and want to debug it
78 flags.Scheduler.CheckDependencies = True
79 flags.Scheduler.ShowDataDeps = True
80 flags.Scheduler.ShowDataFlow = True
81 flags.Scheduler.ShowControlFlow = True
82 flags.Scheduler.EnableVerboseViews = True
83
84 # more threads and more concurent events; change both to 1 if something goes wrong
85 flags.Concurrency.NumThreads = 3
86 flags.Concurrency.NumConcurrentEvents = 5
87
88 flags.Exec.MaxEvents = 500
89
90 # AFP align constants are not included in these (yet)
91 flags.IOVDb.GlobalTag = "CONDBR2-BLKPA-2017-16"
92 from AthenaConfiguration.TestDefaults import defaultGeometryTags
93 flags.GeoModel.AtlasVersion = defaultGeometryTags.RUN2
94
95 acc = MainServicesCfg(flags)
96 parser = flags.getArgumentParser()
97 args = flags.fillFromArgs(parser=parser)
98
99 flags.lock()
100
101
102 from ByteStreamCnvSvc.ByteStreamConfig import ByteStreamReadCfg
103 acc.merge(ByteStreamReadCfg(flags))
104
105 acc.merge(testAFPDBCfg(flags))
106 from AthenaCommon.Constants import DEBUG, VERBOSE
107 acc.foreach_component("*AFP*").OutputLevel=VERBOSE
108 acc.foreach_component("AFPDBTester").OutputLevel=DEBUG
109 acc.printConfig(withDetails=True, summariseProps=True)
110 acc.run()
testAFPDBCfg(flags)
Definition testAFPDB.py:23