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==11):
73 tag=
"InDetSi_MisalignmentMode_R deltaR (radial expansion)"
74 elif(MisalignMode==21):
75 tag=
"InDetSi_MisalignmentMode_R deltaPhi (curl)"
76 elif(MisalignMode==31):
77 tag=
"InDetSi_MisalignmentMode_R deltaZ (telescope)"
78 elif(MisalignMode==99):
79 tag=
"InDetSi_MisalignmentMode_99"
80 DBFile=
"MisalignmentSet99.db"
82 flags.IOVDb.DBConnection =
"sqlite://;schema="+DBFile+
";dbname="+DBName
85 flags.ITk.Geometry.AllLocal =
True
88 print(
"Using SQLite input")
89 flags.GeoModel.SQLiteDB =
True
90 from AtlasGeoModel
import CommonGeoDB
91 CommonGeoDB.SetupLocalSqliteGeometryDb(args.sqlitefile,args.geometrytag)
94 from AthenaConfiguration.DetectorConfigFlags
import setupDetectorFlags
102 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
104 from AthenaConfiguration.ComponentFactory
import CompFactory
106 if flags.Detector.EnablePixel:
107 from PixelGeoModel.PixelGeoModelConfig
import PixelReadoutGeometryCfg
109 ReadPixelDetElements = CompFactory.ReadSiDetectorElements(
'ReadPixelDetElements')
110 ReadPixelDetElements.ManagerName =
"Pixel"
111 ReadPixelDetElements.DetEleCollKey =
"PixelDetectorElementCollection"
112 ReadPixelDetElements.UseConditionsTools =
False
113 acc.addEventAlgo(ReadPixelDetElements)
115 PrintPixelDetElements = CompFactory.PrintSiElements(
'PrintPixelDetElements')
116 PrintPixelDetElements.OutputLevel = 5
117 PrintPixelDetElements.DetectorManagerNames = [
"Pixel"]
118 PrintPixelDetElements.OutputFile =
"PixelGeometry.dat"
119 acc.addEventAlgo(PrintPixelDetElements)
122 if flags.Detector.EnableSCT:
123 from SCT_GeoModel.SCT_GeoModelConfig
import SCT_ReadoutGeometryCfg
126 ReadSCTDetElements = CompFactory.ReadSiDetectorElements(
'ReadSCTDetElements')
127 ReadSCTDetElements.ManagerName =
"SCT"
128 ReadSCTDetElements.DetEleCollKey =
"SCT_DetectorElementCollection"
129 ReadSCTDetElements.UseConditionsTools =
False
130 acc.addEventAlgo(ReadSCTDetElements)
132 PrintSCTDetElements = CompFactory.PrintSiElements(
'PrintSCTDetElements')
133 PrintSCTDetElements.OutputLevel = 5
134 PrintSCTDetElements.DetectorManagerNames = [
"SCT"]
135 PrintSCTDetElements.ModulesOnly =
False
136 PrintSCTDetElements.OutputFile =
"SCT_Geometry.dat"
137 acc.addEventAlgo(PrintSCTDetElements)
139 if args.misalignmode
is not None:
140 from IOVDbSvc.IOVDbSvcConfig
import addFolders
141 print(
"Adding Align Folder")
142 acc.merge(
addFolders(flags,flags.ITk.Geometry.alignmentFolder,db=DBName,detDb=DBFile,tag=tag))
145 if flags.Detector.EnableITkPixel:
146 from PixelGeoModelXml.ITkPixelGeoModelConfig
import ITkPixelReadoutGeometryCfg
148 ReadPixelDetElements = CompFactory.ReadSiDetectorElements(
'ReadITkPixelDetElements')
149 ReadPixelDetElements.ManagerName =
"ITkPixel"
150 ReadPixelDetElements.DetEleCollKey =
"ITkPixelDetectorElementCollection"
151 ReadPixelDetElements.UseConditionsTools =
False
152 acc.addEventAlgo(ReadPixelDetElements)
154 PrintPixelDetElements = CompFactory.PrintSiElements(
'PrintITkPixelDetElements')
155 PrintPixelDetElements.OutputLevel = 5
156 PrintPixelDetElements.DetectorManagerNames = [
"ITkPixel"]
157 PrintPixelDetElements.OutputFile =
"PixelGeometry.dat"
158 if args.misalignmode
is not None:
159 PrintPixelDetElements.AlignedPosition =
True
160 print (
"Pixel aligned position written into dat")
161 acc.addEventAlgo(PrintPixelDetElements)
165 if flags.Detector.EnableITkStrip:
166 from StripGeoModelXml.ITkStripGeoModelConfig
import ITkStripReadoutGeometryCfg
168 ReadStripDetElements = CompFactory.ReadSiDetectorElements(
'ReadStripDetElements')
169 ReadStripDetElements.ManagerName =
"ITkStrip"
170 ReadStripDetElements.DetEleCollKey =
"ITkStripDetectorElementCollection"
171 ReadStripDetElements.UseConditionsTools =
False
172 acc.addEventAlgo(ReadStripDetElements)
174 PrintStripDetElements = CompFactory.PrintSiElements(
'PrintStripDetElements')
175 PrintStripDetElements.OutputLevel = 5
176 PrintStripDetElements.DetectorManagerNames = [
"ITkStrip"]
177 PrintStripDetElements.ModulesOnly =
False
178 PrintStripDetElements.OutputFile =
"StripGeometry.dat"
179 if args.misalignmode
is not None:
180 PrintStripDetElements.AlignedPosition =
True
181 print (
"Strip aligned position written into dat")
182 acc.addEventAlgo(PrintStripDetElements)
185 sc = acc.run(maxEvents=1)
188 sys.exit(
not sc.isSuccess())