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 11:
'R deltaR (radial expansion)', 12:
'Phi deltaR (ellipse)',13:
'Z deltaR (funnel)',
88 21:
'R deltaPhi (curl)', 22:
'Phi deltaPhi (clamshell) ',23:
'Z deltaPhi (twist)',
89 31:
'R deltaZ (telescope)',32:
'Phi deltaZ (skew)',33:
'Z deltaZ (z-expansion)'}
92 local_translation_str = kwargs.pop(
'Local_Translation',
'0.0,0.0,0.0')
93 local_rotation_str = kwargs.pop(
'Local_Rotation',
'0.0,0.0,0.0')
94 Local_Translation = [float(x)
for x
in local_translation_str.split(
',')]
95 Local_Rotation = [float(x)
for x
in local_rotation_str.split(
',')]
96 translation_scale_str = kwargs.pop(
'Translation_Scale',
'0.1,0.1,0.1')
97 rotation_scale_str = kwargs.pop(
'Rotation_Scale',
'0.1,0.1,0.1')
98 Translation_Scale = [float(x)
for x
in translation_scale_str.split(
',')]
99 Rotation_Scale = [float(x)
for x
in rotation_scale_str.split(
',')]
100 acc=MainServicesCfg(flags)
101 print (
"\n CreateMisalignAlg: Creation of misalignment mode %s: %s \n" % (int(MisalignMode),misalignModeMap.get(int(MisalignMode),
'unknown')))
102 kwargs.setdefault(
"ASCIIFilenameBase",outFiles)
103 kwargs.setdefault(
"SQLiteTag",
'MisalignmentMode_'+str(misalignModeMap.get(int(MisalignMode),
'unknown')))
104 kwargs.setdefault(
"MisalignMode",int(MisalignMode))
105 kwargs.setdefault(
"Translation_Scale",Translation_Scale)
106 kwargs.setdefault(
"Rotation_Scale",Rotation_Scale)
107 kwargs.setdefault(
"Local_Translation",Local_Translation)
108 kwargs.setdefault(
"Local_Rotation",Local_Rotation)
109 kwargs.setdefault(
"Index", str(kwargs.pop(
'Index',
'')))
110 kwargs.setdefault(
"MaxShift",shiftInMicrons)
111 kwargs.setdefault(
"CreateFreshDB",createFreshDB)
114 outputAlignFolder=
"/Indet/AlignITk"
118 kargsTool.setdefault(
"SCTTwoSide",
True)
119 kargsTool.setdefault(
"DBRoot",outputAlignFolder)
120 kargsTool.setdefault(
"forceUserDBConfig",
True)
122 print(
"Writing DB Pool File")
123 InDetCondStream=CompFactory.AthenaOutputStreamTool(
"CondStream_write",OutputFile = outFiles+
'.pool.root')
124 InDetCondStream.PoolContainerPrefix=
"<type>"
125 InDetCondStream.TopLevelContainerName=
""
126 InDetCondStream.SubLevelBranchName=
"<key>"
127 kargsTool.setdefault(
"CondStream",InDetCondStream)
128 dbTool = acc.popToolsAndMerge(ITkAlignDBTool(flags,**kargsTool))
130 kwargs.setdefault(
"IDAlignDBTool",dbTool)
132 cfg=CreateITkMisalignAlgCfg(flags,name=name,**kwargs)
136 print(
"To be writen DB pool File")