2 """Run PrintSiDetectorElements
4 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
7 from argparse
import ArgumentParser
9 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
10 from AthenaConfiguration.TestDefaults
import defaultGeometryTags,defaultConditionsTags
13 parser = ArgumentParser(
"PrintSiDetectorElements.py")
14 parser.add_argument(
"detectors", metavar=
"detectors", type=str, nargs=
"*",
15 help=
"Specify the list of detectors")
16 parser.add_argument(
"--localgeo", default=
False, action=
"store_true",
17 help=
"Use local geometry XML files")
18 parser.add_argument(
"--geometrytag", default=defaultGeometryTags.RUN4, type=str,
19 help=
"The geometry tag to use")
20 parser.add_argument(
"--conditionstag", default=defaultConditionsTags.RUN4_MC, type=str,
21 help=
"The geometry tag to use")
22 parser.add_argument(
"--sqlitefile",default=
"", type=str,
23 help=
"Specify an SQLite geometry input file to use the Run4 SQL-based geometry workflow, rather than standard geometry")
24 parser.add_argument(
"--misalignmode",default=
None, type=int,
25 help=
"misalignment Mode")
26 args = parser.parse_args()
30 print(
"----PrintSiDetectorElements----")
33 print(
"Using local Geometry XML files")
34 if not args.detectors:
35 print(
"Running complete detector")
42 flags.Concurrency.NumThreads = 1
43 if flags.Concurrency.NumThreads > 0:
44 flags.Scheduler.ShowDataDeps =
True
45 flags.Scheduler.ShowDataFlow =
True
46 flags.Scheduler.ShowControlFlow =
True
48 flags.GeoModel.Align.Dynamic =
False
49 flags.GeoModel.AtlasVersion = args.geometrytag
50 flags.Input.isMC =
True
51 flags.IOVDb.GlobalTag = defaultConditionsTags.RUN4_MC
52 flags.Input.Files = []
54 flags.GeoModel.Align.Dynamic =
False
56 MisalignMode = args.misalignmode
57 if args.misalignmode
is not None:
58 tag=
"InDetSi_MisalignmentMode_random misalignment"
60 DBFile=
"MisalignmentSet"+
str(MisalignMode)+
".db"
61 flags.ITk.Geometry.alignmentFolder =
"/Indet/AlignITk"
62 flags.ITk.Geometry.pixelAlignable =
True
63 flags.ITk.Geometry.stripAlignable =
True
65 tag=
"InDetSi_MisalignmentMode_no Misalignment"
66 elif(MisalignMode==1):
67 tag=
"InDetSi_MisalignmentMode_misalignment by 6 parameters"
68 elif(MisalignMode==2):
69 tag=
"InDetSi_MisalignmentMode_random misalignment"
70 elif(MisalignMode==3):
71 tag=
"InDetSi_MisalignmentMode_IBL-stave temperature dependent bowing"
72 elif(MisalignMode==7):
73 tag=
"InDetSi_MisalignmentMode_misalignment according to module indices"
74 elif(MisalignMode==11):
75 tag=
"InDetSi_MisalignmentMode_R deltaR (radial expansion)"
76 elif(MisalignMode==21):
77 tag=
"InDetSi_MisalignmentMode_R deltaPhi (curl)"
78 elif(MisalignMode==31):
79 tag=
"InDetSi_MisalignmentMode_R deltaZ (telescope)"
80 elif(MisalignMode==99):
81 tag=
"InDetSi_MisalignmentMode_99"
82 DBFile=
"MisalignmentSet99.db"
84 flags.IOVDb.DBConnection =
"sqlite://;schema="+DBFile+
";dbname="+DBName
87 flags.ITk.Geometry.AllLocal =
True
90 print(
"Using SQLite input")
91 flags.GeoModel.SQLiteDB =
True
92 from AtlasGeoModel
import CommonGeoDB
93 CommonGeoDB.SetupLocalSqliteGeometryDb(args.sqlitefile,args.geometrytag)
96 from AthenaConfiguration.DetectorConfigFlags
import setupDetectorFlags
104 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
106 from AthenaConfiguration.ComponentFactory
import CompFactory
108 if flags.Detector.EnablePixel:
109 from PixelGeoModel.PixelGeoModelConfig
import PixelReadoutGeometryCfg
111 ReadPixelDetElements = CompFactory.ReadSiDetectorElements(
'ReadPixelDetElements')
112 ReadPixelDetElements.ManagerName =
"Pixel"
113 ReadPixelDetElements.DetEleCollKey =
"PixelDetectorElementCollection"
114 ReadPixelDetElements.UseConditionsTools =
False
115 acc.addEventAlgo(ReadPixelDetElements)
117 PrintPixelDetElements = CompFactory.PrintSiElements(
'PrintPixelDetElements')
118 PrintPixelDetElements.OutputLevel = 5
119 PrintPixelDetElements.DetectorManagerNames = [
"Pixel"]
120 PrintPixelDetElements.OutputFile =
"PixelGeometry.dat"
121 acc.addEventAlgo(PrintPixelDetElements)
124 if flags.Detector.EnableSCT:
125 from SCT_GeoModel.SCT_GeoModelConfig
import SCT_ReadoutGeometryCfg
128 ReadSCTDetElements = CompFactory.ReadSiDetectorElements(
'ReadSCTDetElements')
129 ReadSCTDetElements.ManagerName =
"SCT"
130 ReadSCTDetElements.DetEleCollKey =
"SCT_DetectorElementCollection"
131 ReadSCTDetElements.UseConditionsTools =
False
132 acc.addEventAlgo(ReadSCTDetElements)
134 PrintSCTDetElements = CompFactory.PrintSiElements(
'PrintSCTDetElements')
135 PrintSCTDetElements.OutputLevel = 5
136 PrintSCTDetElements.DetectorManagerNames = [
"SCT"]
137 PrintSCTDetElements.ModulesOnly =
False
138 PrintSCTDetElements.OutputFile =
"SCT_Geometry.dat"
139 acc.addEventAlgo(PrintSCTDetElements)
141 if args.misalignmode
is not None:
142 from IOVDbSvc.IOVDbSvcConfig
import addFolders
143 print(
"Adding Align Folder")
144 acc.merge(
addFolders(flags,flags.ITk.Geometry.alignmentFolder,db=DBName,detDb=DBFile,tag=tag))
147 if flags.Detector.EnableITkPixel:
148 from PixelGeoModelXml.ITkPixelGeoModelConfig
import ITkPixelReadoutGeometryCfg
150 ReadPixelDetElements = CompFactory.ReadSiDetectorElements(
'ReadITkPixelDetElements')
151 ReadPixelDetElements.ManagerName =
"ITkPixel"
152 ReadPixelDetElements.DetEleCollKey =
"ITkPixelDetectorElementCollection"
153 ReadPixelDetElements.UseConditionsTools =
False
154 acc.addEventAlgo(ReadPixelDetElements)
156 PrintPixelDetElements = CompFactory.PrintSiElements(
'PrintITkPixelDetElements')
157 PrintPixelDetElements.OutputLevel = 5
158 PrintPixelDetElements.DetectorManagerNames = [
"ITkPixel"]
159 PrintPixelDetElements.OutputFile =
"PixelGeometry.dat"
160 if args.misalignmode
is not None:
161 PrintPixelDetElements.AlignedPosition =
True
162 print (
"Pixel aligned position written into dat")
163 acc.addEventAlgo(PrintPixelDetElements)
167 if flags.Detector.EnableITkStrip:
168 from StripGeoModelXml.ITkStripGeoModelConfig
import ITkStripReadoutGeometryCfg
170 ReadStripDetElements = CompFactory.ReadSiDetectorElements(
'ReadStripDetElements')
171 ReadStripDetElements.ManagerName =
"ITkStrip"
172 ReadStripDetElements.DetEleCollKey =
"ITkStripDetectorElementCollection"
173 ReadStripDetElements.UseConditionsTools =
False
174 acc.addEventAlgo(ReadStripDetElements)
176 PrintStripDetElements = CompFactory.PrintSiElements(
'PrintStripDetElements')
177 PrintStripDetElements.OutputLevel = 5
178 PrintStripDetElements.DetectorManagerNames = [
"ITkStrip"]
179 PrintStripDetElements.ModulesOnly =
False
180 PrintStripDetElements.OutputFile =
"StripGeometry.dat"
181 if args.misalignmode
is not None:
182 PrintStripDetElements.AlignedPosition =
True
183 print (
"Strip aligned position written into dat")
184 acc.addEventAlgo(PrintStripDetElements)
187 sc = acc.run(maxEvents=1)
190 sys.exit(
not sc.isSuccess())