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))
52 if 'Translation' not in kwargs.keys():
55 Translation=
bool(kwargs.get(
'Translation',
'True')==
'True')
57 print (
"Translation not set to \"True\" - disabling generation of translations")
58 if 'Rotation' not in kwargs.keys():
61 Rotation=
bool(kwargs.get(
'Rotation',
'True')==
'True')
63 print (
"Rotation not set to \"True\" - disabling generation of rotations")
65 local_translation_str = kwargs.pop(
'Local_Translation',
'0.0,0.0,0.0')
66 local_rotation_str = kwargs.pop(
'Local_Rotation',
'0.0,0.0,0.0')
67 Local_Translation = [
float(x)
for x
in local_translation_str.split(
',')]
68 Local_Rotation = [
float(x)
for x
in local_rotation_str.split(
',')]
69 databaseFilename =
'MisalignmentSet%s.db' % (MisalignMode)
70 flags.IOVDb.DBConnection=
"sqlite://;schema=%s;dbname=OFLCOND" % (databaseFilename)
71 flags.IOVDb.GlobalTag = defaultConditionsTags.RUN4_MC
75 flags.Concurrency.NumThreads = 1
76 flags.Concurrency.NumConcurrentEvents = 1
81 def CreateMis(flags,name="CreateITkMisalignAlg",**kwargs):
86 misalignmentOnTopOfExistingSet =
False
87 readDBPoolFile =
False
89 createFreshDB = not(readDBPoolFile
or misalignmentOnTopOfExistingSet)
91 MisalignMode = kwargs.pop(
'MisalignMode',11)
95 if MisalignMode
in [11, 12, 31]:
98 outFiles =
'MisalignmentSet%s' % (MisalignMode)
99 misalignModeMap = {0:
'no Misalignment',
100 1:
'misalignment by 6 parameters',
101 2:
'random misalignment',
102 3:
'IBL-stave temperature dependent bowing',
103 7:
'misalignment according to module indices',
104 11:
'R deltaR (radial expansion)', 12:
'Phi deltaR (ellipse)',13:
'Z deltaR (funnel)',
105 21:
'R deltaPhi (curl)', 22:
'Phi deltaPhi (clamshell) ',23:
'Z deltaPhi (twist)',
106 31:
'R deltaZ (telescope)',32:
'Phi deltaZ (skew)',33:
'Z deltaZ (z-expansion)'}
109 local_translation_str = kwargs.pop(
'Local_Translation',
'0.0,0.0,0.0')
110 local_rotation_str = kwargs.pop(
'Local_Rotation',
'0.0,0.0,0.0')
111 Local_Translation = [
float(x)
for x
in local_translation_str.split(
',')]
112 Local_Rotation = [
float(x)
for x
in local_rotation_str.split(
',')]
114 print (
"\n CreateMisalignAlg: Creation of misalignment mode %s: %s \n" % (
int(MisalignMode),misalignModeMap.get(
int(MisalignMode),
'unknown')))
115 kwargs.setdefault(
"ASCIIFilenameBase",outFiles)
116 kwargs.setdefault(
"SQLiteTag",
'MisalignmentMode_'+
str(misalignModeMap.get(
int(MisalignMode),
'unknown')))
117 kwargs.setdefault(
"MisalignMode",
int(MisalignMode))
118 kwargs.setdefault(
"Translation",
bool(
str(kwargs.pop(
'Translation',
'True'))==
'True'))
119 kwargs.setdefault(
"Rotation",
bool(
str(kwargs.pop(
'Rotation',
'True'))==
'True'))
120 kwargs.setdefault(
"Local_Translation",Local_Translation)
121 kwargs.setdefault(
"Local_Rotation",Local_Rotation)
122 kwargs.setdefault(
"Index",
str(kwargs.pop(
'Index',
'')))
123 kwargs.setdefault(
"MaxShift",shiftInMicrons)
124 kwargs.setdefault(
"CreateFreshDB",createFreshDB)
127 outputAlignFolder=
"/Indet/AlignITk"
131 kargsTool.setdefault(
"SCTTwoSide",
True)
132 kargsTool.setdefault(
"DBRoot",outputAlignFolder)
133 kargsTool.setdefault(
"forceUserDBConfig",
True)
135 print(
"Writing DB Pool File")
136 InDetCondStream=CompFactory.AthenaOutputStreamTool(
"CondStream_write",OutputFile = outFiles+
'.pool.root')
137 InDetCondStream.PoolContainerPrefix=
"<type>"
138 InDetCondStream.TopLevelContainerName=
""
139 InDetCondStream.SubLevelBranchName=
"<key>"
140 kargsTool.setdefault(
"CondStream",InDetCondStream)
143 kwargs.setdefault(
"IDAlignDBTool",dbTool)
149 print(
"To be writen DB pool File")
153 if __name__ ==
"__main__":
154 if(len(sys.argv[1:])):
155 kwargs=dict(arg.split(
'=')
for arg
in sys.argv[1:])
170 print(
"Failed to run the Misalignment Algorithm")