21 flags=initConfigFlags()
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
43 setupDetectorFlags(flags, custom_list=detectors, toggle_geometry=
True)
44 flags.TrackingGeometry.MaterialSource =
"Input"
48 if 'MisalignMode' not in kwargs.keys():
51 MisalignMode=int(kwargs.get(
'MisalignMode',11))
52 databaseFilename =
'MisalignmentSet%s.db' % (MisalignMode)
53 flags.IOVDb.DBConnection=
"sqlite://;schema=%s;dbname=OFLCOND" % (databaseFilename)
54 flags.IOVDb.GlobalTag = defaultConditionsTags.RUN4_MC
58 flags.Concurrency.NumThreads = 1
59 flags.Concurrency.NumConcurrentEvents = 1
64def CreateMis(flags,name="CreateITkMisalignAlg",**kwargs):
69 misalignmentOnTopOfExistingSet =
False
70 readDBPoolFile =
False
72 createFreshDB = not(readDBPoolFile
or misalignmentOnTopOfExistingSet)
74 MisalignMode = kwargs.pop(
'MisalignMode',11)
78 if MisalignMode
in [11, 12, 31]:
81 outFiles =
'MisalignmentSet%s' % (MisalignMode)
82 misalignModeMap = {0:
'no Misalignment',
83 1:
'misalignment by 6 parameters',
84 2:
'random misalignment',
85 3:
'IBL-stave temperature dependent bowing',
86 7:
'misalignment according to module indices',
87 41:
'ITk endcap beam-pipe z shift',
88 42:
'ITk pixel barrel layer bowing',
89 43:
'ITk barrel radial expansion',
90 11:
'R deltaR (radial expansion)', 12:
'Phi deltaR (ellipse)',13:
'Z deltaR (funnel)',
91 21:
'R deltaPhi (curl)', 22:
'Phi deltaPhi (clamshell) ',23:
'Z deltaPhi (twist)',
92 31:
'R deltaZ (telescope)',32:
'Phi deltaZ (skew)',33:
'Z deltaZ (z-expansion)'}
95 local_translation_str = kwargs.pop(
'Local_Translation',
'0.0,0.0,0.0')
96 local_rotation_str = kwargs.pop(
'Local_Rotation',
'0.0,0.0,0.0')
97 Local_Translation = [float(x)
for x
in local_translation_str.split(
',')]
98 Local_Rotation = [float(x)
for x
in local_rotation_str.split(
',')]
99 translation_scale_str = kwargs.pop(
'Translation_Scale',
'0.1,0.1,0.1')
100 rotation_scale_str = kwargs.pop(
'Rotation_Scale',
'0.1,0.1,0.1')
101 Translation_Scale = [float(x)
for x
in translation_scale_str.split(
',')]
102 Rotation_Scale = [float(x)
for x
in rotation_scale_str.split(
',')]
103 acc=MainServicesCfg(flags)
104 print (
"\n CreateMisalignAlg: Creation of misalignment mode %s: %s \n" % (int(MisalignMode),misalignModeMap.get(int(MisalignMode),
'unknown')))
105 kwargs.setdefault(
"ASCIIFilenameBase",outFiles)
106 kwargs.setdefault(
"SQLiteTag",
'MisalignmentMode_'+str(misalignModeMap.get(int(MisalignMode),
'unknown')))
107 kwargs.setdefault(
"MisalignMode",int(MisalignMode))
108 kwargs.setdefault(
"TargetLayer", int(kwargs.pop(
'TargetLayer', 0)))
109 kwargs.setdefault(
"TargetLayerMax", int(kwargs.pop(
'TargetLayerMax', -999)))
110 kwargs.setdefault(
"IBLBowingTshift", float(kwargs.pop(
'IBLBowingTshift', 0.0)))
111 kwargs.setdefault(
"EndcapShiftConvention", kwargs.pop(
'EndcapShiftConvention',
'outward'))
112 kwargs.setdefault(
"RadialShift", float(kwargs.pop(
'RadialShift', 0.0)))
113 kwargs.setdefault(
"RadialShiftConvention", kwargs.pop(
'RadialShiftConvention',
'outward'))
114 kwargs.setdefault(
"RadialSubdetector", kwargs.pop(
'RadialSubdetector',
'Pixel'))
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)
138 dbTool = acc.popToolsAndMerge(ITkAlignDBTool(flags,**kargsTool))
140 kwargs.setdefault(
"IDAlignDBTool",dbTool)
142 cfg=CreateITkMisalignAlgCfg(flags,name=name,**kwargs)
146 print(
"To be writen DB pool File")