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
23 flags.Input.isMC =
True
25 flags.Input.Files = []
27 from AthenaConfiguration.TestDefaults
import defaultGeometryTags,defaultConditionsTags
28 flags.GeoModel.AtlasVersion = defaultGeometryTags.RUN4
29 flags.GeoModel.Align.Dynamic =
False
31 flags.ITk.Geometry.isAlignable =
True
32 flags.ITk.Align.alignITkPixel =
True
33 flags.ITk.Align.alignITkStrip =
True
37 flags.ITk.Geometry.AllLocal =
False
44 flags.TrackingGeometry.MaterialSource =
"Input"
48 if 'MisalignMode' not in kwargs.keys():
51 MisalignMode=
int(kwargs.get(
'MisalignMode',11))
53 translation_scale_str = kwargs.pop(
'Translation_Scale',
'0.1,0.1,0.1')
54 rotation_scale_str = kwargs.pop(
'Rotation_Scale',
'0.1,0.1,0.1')
55 Translation_Scale = [
float(x)
for x
in translation_scale_str.split(
',')]
56 Rotation_Scale = [
float(x)
for x
in rotation_scale_str.split(
',')]
58 local_translation_str = kwargs.pop(
'Local_Translation',
'0.0,0.0,0.0')
59 local_rotation_str = kwargs.pop(
'Local_Rotation',
'0.0,0.0,0.0')
60 Local_Translation = [
float(x)
for x
in local_translation_str.split(
',')]
61 Local_Rotation = [
float(x)
for x
in local_rotation_str.split(
',')]
62 databaseFilename =
'MisalignmentSet%s.db' % (MisalignMode)
63 flags.IOVDb.DBConnection=
"sqlite://;schema=%s;dbname=OFLCOND" % (databaseFilename)
64 flags.IOVDb.GlobalTag = defaultConditionsTags.RUN4_MC
68 flags.Concurrency.NumThreads = 1
69 flags.Concurrency.NumConcurrentEvents = 1
74 def CreateMis(flags,name="CreateITkMisalignAlg",**kwargs):
79 misalignmentOnTopOfExistingSet =
False
80 readDBPoolFile =
False
82 createFreshDB = not(readDBPoolFile
or misalignmentOnTopOfExistingSet)
84 MisalignMode = kwargs.pop(
'MisalignMode',11)
88 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 7:
'misalignment according to module indices',
97 11:
'R deltaR (radial expansion)', 12:
'Phi deltaR (ellipse)',13:
'Z deltaR (funnel)',
98 21:
'R deltaPhi (curl)', 22:
'Phi deltaPhi (clamshell) ',23:
'Z deltaPhi (twist)',
99 31:
'R deltaZ (telescope)',32:
'Phi deltaZ (skew)',33:
'Z deltaZ (z-expansion)'}
102 local_translation_str = kwargs.pop(
'Local_Translation',
'0.0,0.0,0.0')
103 local_rotation_str = kwargs.pop(
'Local_Rotation',
'0.0,0.0,0.0')
104 Local_Translation = [
float(x)
for x
in local_translation_str.split(
',')]
105 Local_Rotation = [
float(x)
for x
in local_rotation_str.split(
',')]
106 translation_scale_str = kwargs.pop(
'Translation_Scale',
'0.1,0.1,0.1')
107 rotation_scale_str = kwargs.pop(
'Rotation_Scale',
'0.1,0.1,0.1')
108 Translation_Scale = [
float(x)
for x
in translation_scale_str.split(
',')]
109 Rotation_Scale = [
float(x)
for x
in rotation_scale_str.split(
',')]
111 print (
"\n CreateMisalignAlg: Creation of misalignment mode %s: %s \n" % (
int(MisalignMode),misalignModeMap.get(
int(MisalignMode),
'unknown')))
112 kwargs.setdefault(
"ASCIIFilenameBase",outFiles)
113 kwargs.setdefault(
"SQLiteTag",
'MisalignmentMode_'+
str(misalignModeMap.get(
int(MisalignMode),
'unknown')))
114 kwargs.setdefault(
"MisalignMode",
int(MisalignMode))
115 kwargs.setdefault(
"Translation_Scale",Translation_Scale)
116 kwargs.setdefault(
"Rotation_Scale",Rotation_Scale)
117 kwargs.setdefault(
"Local_Translation",Local_Translation)
118 kwargs.setdefault(
"Local_Rotation",Local_Rotation)
119 kwargs.setdefault(
"Index",
str(kwargs.pop(
'Index',
'')))
120 kwargs.setdefault(
"MaxShift",shiftInMicrons)
121 kwargs.setdefault(
"CreateFreshDB",createFreshDB)
124 outputAlignFolder=
"/Indet/AlignITk"
128 kargsTool.setdefault(
"SCTTwoSide",
True)
129 kargsTool.setdefault(
"DBRoot",outputAlignFolder)
130 kargsTool.setdefault(
"forceUserDBConfig",
True)
132 print(
"Writing DB Pool File")
133 InDetCondStream=CompFactory.AthenaOutputStreamTool(
"CondStream_write",OutputFile = outFiles+
'.pool.root')
134 InDetCondStream.PoolContainerPrefix=
"<type>"
135 InDetCondStream.TopLevelContainerName=
""
136 InDetCondStream.SubLevelBranchName=
"<key>"
137 kargsTool.setdefault(
"CondStream",InDetCondStream)
140 kwargs.setdefault(
"IDAlignDBTool",dbTool)
146 print(
"To be writen DB pool File")
150 if __name__ ==
"__main__":
151 if(len(sys.argv[1:])):
152 kwargs=dict(arg.split(
'=')
for arg
in sys.argv[1:])
167 print(
"Failed to run the Misalignment Algorithm")