21.9: Adding changes to create and apply misalignment with ITk
This MR aims to set up and document the machinery implemented to create a misalignment database and testing the application of deltas to the alignment transform using the 'ExtrapolationEngineTest'.
It also includes changes to the alignment folder name for the ITk case, which is going to be set to Indet/AlignITk
(instead of using the current Indet/Align
).
- At the time being in order to apply the alignment transforms to the strip detector elements, it is needed to change the "alignment" level in the gmx files where the geometry is described. I have put the required changes in this branch of ITKLayouts/21.9-strip-align.
This is not supposed to be merged to
ITKLayout/main
orITKLayout/21.9
. Anyhow, you need to have this branch checked out to perform the steps listed below. Hence, after you have compiled the package be sure you load the local description of the ITk geometry adding the following lines in the job you want to run:
from InDetSLHC_Example.SLHC_JobProperties import SLHC_Flags;
SLHC_Flags.UseLocalGeometry.set_Value_and_Lock(True)
- The creation of the local database for misalignment can be done using
InnerDetector/InDetAlignAlgs/InDetAlignGenAlgs/share/CreateMisalignmentITk.py
. I have implemented a "test" configuration that you can use to test the machinery. It is configured settingMisalignmentMode=99
:
athena CreateMisalignmentITk.py -c "MisalignmentMode=99"
The transformation used for testing implements a global z shift of the pixel and strip detector elements of 0.1 mm and 5 mm, respectively.
As output the job you will have a database and a pool.root containing the alignable transform container. You also have files used for validation, i.e. an ntuple root file and a text file.
- To test the application of deltas to the alignment transform you can use the 'ExtrapolationEngineTest'. The up-to-date job option is also added to the repository:
InnerDetector/InDetExample/InDetSLHC_Example/share/ExtrapolationEngineTest_ITk_jobOptions.py
In order to load the local alignment database you need to include at the end of the job the following lines (be sure you do it after theinclude("InDetSLHC_Example/postInclude.SLHC_Setup_ITK.py")
):
from IOVDbSvc.CondDB import conddb
conddb.blockFolder("/Indet/Align")
conddb.blockFolder("/Indet/AlignITk")
DataBaseConnection = "<dbConnection>sqlite://;schema=MisalignmentSet99.db;dbname=OFLP200</dbConnection>"
conddb.addFolderWithTag("",DataBaseConnection+"/Indet/AlignITk","InDetSi_MisalignmentMode_99", force=True)
conddb.blockFolder("/Indet/IBLDist")
SCT_GMX_DetectorTool.Alignable=True
pixelTool = svcMgr.GeoModelSvc.DetectorTools['PixelDetectorTool']
pixelTool.Alignable = True
To facilitate the work, these lines are included in InnerDetector/InDetAlignAlgs/InDetAlignGenAlgs/share/postInclude.loadMyLocalBD.py
Important: If you change the misaligment mode used to create the database, you must also change the database name and the tag used in the previous lines, editing postInclude.loadMyLocalBD.py
.