64def CreateMis(flags,name="CreateITkMisalignAlg",**kwargs):
65
66
67
68
69 misalignmentOnTopOfExistingSet = False
70 readDBPoolFile = False
71
72 createFreshDB = not(readDBPoolFile or misalignmentOnTopOfExistingSet)
73
74 MisalignMode = kwargs.pop('MisalignMode',11)
75
76 shiftInMicrons = 100
77
78 if MisalignMode in [11, 12, 31]:
79 shiftInMicrons = 500
80
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)'}
90
91
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)
112
113
114 outputAlignFolder="/Indet/AlignITk"
115
116 writeDBPoolFile=True
117 kargsTool={}
118 kargsTool.setdefault("SCTTwoSide",True)
119 kargsTool.setdefault("DBRoot",outputAlignFolder)
120 kargsTool.setdefault("forceUserDBConfig",True)
121 if writeDBPoolFile:
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))
129
130 kwargs.setdefault("IDAlignDBTool",dbTool)
131
132 cfg=CreateITkMisalignAlgCfg(flags,name=name,**kwargs)
133
134 acc.merge(cfg)
135 if writeDBPoolFile:
136 print(
"To be writen DB pool File")
137
138 return acc
139
void print(char *figname, TCanvas *c1)