Skip to content

21.9: Adding changes to create and apply misalignment with ITk

Noemi Calace requested to merge ncalace/athena:21.9-test-alignment-strip into 21.9

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).

  1. 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 or ITKLayout/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)
  1. 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 setting MisalignmentMode=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.

  1. 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 the include("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.

FYI: @nstyles, @lvannoli

Edited by Noemi Calace

Merge request reports