10 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
11 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
12 from InDetAlignGenAlgs.InDetAlignAlgsConfig
import CreateITkMisalignAlgCfg
13 from AthenaConfiguration.DetectorConfigFlags
import setupDetectorFlags
14 from InDetAlignGenTools.InDetAlignGenToolsConfig
import ITkAlignDBTool
16 from AthenaConfiguration.ComponentFactory
import CompFactory
19 "Block use of specified conditions DB folder so data can be read from elsewhere"
20 from IOVDbSvc.IOVDbSvcConfig
import IOVDbSvcCfg
22 iovdbsvc=ca.getService(
"IOVDbSvc")
24 for i
in range(0,len(iovdbsvc.Folders)):
25 if (iovdbsvc.Folders[i].
find(folder)>=0):
26 del iovdbsvc.Folders[i]
28 condInputLoader=ca.getCondAlgo(
"CondInputLoader")
29 for i
in range(0, len(condInputLoader.Load)):
30 if (folder
in condInputLoader.Load[i][-1] ):
31 del condInputLoader.Load[i]
38 flags.Input.isMC =
True
40 flags.Input.Files = []
42 from AthenaConfiguration.TestDefaults
import defaultGeometryTags,defaultConditionsTags
43 flags.GeoModel.AtlasVersion = defaultGeometryTags.RUN4
44 flags.GeoModel.Align.Dynamic =
False
46 flags.ITk.Geometry.isAlignable =
True
48 flags.ITk.Geometry.AllLocal =
False
55 flags.TrackingGeometry.MaterialSource =
"Input"
59 if 'MisalignMode' not in kwargs.keys():
62 MisalignMode=
int(kwargs.get(
'MisalignMode',11))
63 databaseFilename =
'MisalignmentSet%s.db' % (MisalignMode)
64 flags.IOVDb.DBConnection=
"sqlite://;schema=%s;dbname=OFLCOND" % (databaseFilename)
65 flags.IOVDb.GlobalTag = defaultConditionsTags.RUN4_MC
69 flags.Concurrency.NumThreads = 1
70 flags.Concurrency.NumConcurrentEvents = 1
75 def CreateMis(flags,name="CreateITkMisalignAlg",**kwargs):
80 misalignmentOnTopOfExistingSet =
False
81 readDBPoolFile =
False
83 createFreshDB = not(readDBPoolFile
or misalignmentOnTopOfExistingSet)
85 MisalignMode = kwargs.pop(
'MisalignMode',11)
89 if MisalignMode
in [11, 12, 31]:
91 outFiles =
'MisalignmentSet%s' % (MisalignMode)
92 misalignModeMap = {0:
'no Misalignment',
93 1:
'misalignment by 6 parameters',
94 2:
'random misalignment',
95 3:
'IBL-stave temperature dependent bowing',
96 11:
'R deltaR (radial expansion)', 12:
'Phi deltaR (ellipse)',13:
'Z deltaR (funnel)',
97 21:
'R deltaPhi (curl)', 22:
'Phi deltaPhi (clamshell) ',23:
'Z deltaPhi (twist)',
98 31:
'R deltaZ (telescope)',32:
'Phi deltaZ (skew)',33:
'Z deltaZ (z-expansion)'}
102 print (
"\n CreateMisalignAlg: Creation of misalignment mode %s: %s \n" % (
int(MisalignMode),misalignModeMap.get(
int(MisalignMode),
'unknown')))
103 kwargs.setdefault(
"ASCIIFilenameBase",outFiles)
104 kwargs.setdefault(
"SQLiteTag",
'MisalignmentMode_'+
str(misalignModeMap.get(
int(MisalignMode),
'unknown')))
105 kwargs.setdefault(
"MisalignMode",
int(MisalignMode))
106 kwargs.setdefault(
"MaxShift",shiftInMicrons)
107 kwargs.setdefault(
"CreateFreshDB",createFreshDB)
110 outputAlignFolder=
"/Indet/AlignITk"
114 kargsTool.setdefault(
"SCTTwoSide",
True)
115 kargsTool.setdefault(
"DBRoot",outputAlignFolder)
116 kargsTool.setdefault(
"DBKey",outputAlignFolder)
117 kargsTool.setdefault(
"forceUserDBConfig",
True)
119 print(
"Writing DB Pool File")
120 InDetCondStream=CompFactory.AthenaOutputStreamTool(
"CondStream_write",OutputFile = outFiles+
'.pool.root')
121 InDetCondStream.PoolContainerPrefix=
"<type>"
122 InDetCondStream.TopLevelContainerName=
""
123 InDetCondStream.SubLevelBranchName=
"<key>"
124 kargsTool.setdefault(
"CondStream",InDetCondStream)
127 kwargs.setdefault(
"IDAlignDBTool",dbTool)
133 print(
"To be writen DB pool File")
137 if __name__ ==
"__main__":
138 if(len(sys.argv[1:])):
139 kwargs=dict(arg.split(
'=')
for arg
in sys.argv[1:])
154 print(
"Failed to run the Misalignment Algorithm")