ATLAS Offline Software
RunPrintSiDetElements.py
Go to the documentation of this file.
1 #!/usr/bin/env python
2 """Run PrintSiDetectorElements
3 
4 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
5 """
6 import sys
7 from argparse import ArgumentParser
8 
9 from AthenaConfiguration.AllConfigFlags import initConfigFlags
10 from AthenaConfiguration.TestDefaults import defaultGeometryTags,defaultConditionsTags
11 
12 # Argument parsing
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()
27 
28 
29 # Some info about the job
30 print("----PrintSiDetectorElements----")
31 print()
32 if args.localgeo:
33  print("Using local Geometry XML files")
34 if not args.detectors:
35  print("Running complete detector")
36 else:
37  print("Running with: {}".format(", ".join(args.detectors)))
38 print()
39 
40 # Configure
41 flags = initConfigFlags()
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
47 
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 = []
53 
54 flags.GeoModel.Align.Dynamic = False
55 
56 MisalignMode = args.misalignmode
57 if args.misalignmode is not None:
58  tag="InDetSi_MisalignmentMode_random misalignment"
59  BFile=""
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
64  if(MisalignMode==0):
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"
81  DBName="OFLCOND"
82  flags.IOVDb.DBConnection ="sqlite://;schema="+DBFile+";dbname="+DBName
83 
84 if args.localgeo:
85  flags.ITk.Geometry.AllLocal = True
86 
87 elif args.sqlitefile:
88  print("Using SQLite input")
89  flags.GeoModel.SQLiteDB = True
90  from AtlasGeoModel import CommonGeoDB
91  CommonGeoDB.SetupLocalSqliteGeometryDb(args.sqlitefile,args.geometrytag)
92 
93 
94 from AthenaConfiguration.DetectorConfigFlags import setupDetectorFlags
95 setupDetectorFlags(flags, args.detectors, toggle_geometry=True)
96 
97 
98 
99 flags.lock()
100 
101 # Construct our accumulator to run
102 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
103 acc = MainServicesCfg(flags)
104 from AthenaConfiguration.ComponentFactory import CompFactory
105 # Pixel
106 if flags.Detector.EnablePixel:
107  from PixelGeoModel.PixelGeoModelConfig import PixelReadoutGeometryCfg
108  acc.merge(PixelReadoutGeometryCfg(flags))
109  ReadPixelDetElements = CompFactory.ReadSiDetectorElements('ReadPixelDetElements')
110  ReadPixelDetElements.ManagerName = "Pixel"
111  ReadPixelDetElements.DetEleCollKey = "PixelDetectorElementCollection"
112  ReadPixelDetElements.UseConditionsTools = False
113  acc.addEventAlgo(ReadPixelDetElements)
114 
115  PrintPixelDetElements = CompFactory.PrintSiElements('PrintPixelDetElements')
116  PrintPixelDetElements.OutputLevel = 5
117  PrintPixelDetElements.DetectorManagerNames = ["Pixel"]
118  PrintPixelDetElements.OutputFile = "PixelGeometry.dat"
119  acc.addEventAlgo(PrintPixelDetElements)
120 
121 # SCT
122 if flags.Detector.EnableSCT:
123  from SCT_GeoModel.SCT_GeoModelConfig import SCT_ReadoutGeometryCfg
124  acc.merge(SCT_ReadoutGeometryCfg(flags))
125 
126  ReadSCTDetElements = CompFactory.ReadSiDetectorElements('ReadSCTDetElements')
127  ReadSCTDetElements.ManagerName = "SCT"
128  ReadSCTDetElements.DetEleCollKey = "SCT_DetectorElementCollection"
129  ReadSCTDetElements.UseConditionsTools = False
130  acc.addEventAlgo(ReadSCTDetElements)
131 
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)
138 
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))
143 
144 # ITk Pixel
145 if flags.Detector.EnableITkPixel:
146  from PixelGeoModelXml.ITkPixelGeoModelConfig import ITkPixelReadoutGeometryCfg
147  acc.merge(ITkPixelReadoutGeometryCfg(flags))
148  ReadPixelDetElements = CompFactory.ReadSiDetectorElements('ReadITkPixelDetElements')
149  ReadPixelDetElements.ManagerName = "ITkPixel"
150  ReadPixelDetElements.DetEleCollKey = "ITkPixelDetectorElementCollection"
151  ReadPixelDetElements.UseConditionsTools = False
152  acc.addEventAlgo(ReadPixelDetElements)
153 
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)
162 
163 
164 # ITk Strip
165 if flags.Detector.EnableITkStrip:
166  from StripGeoModelXml.ITkStripGeoModelConfig import ITkStripReadoutGeometryCfg
167  acc.merge(ITkStripReadoutGeometryCfg(flags))
168  ReadStripDetElements = CompFactory.ReadSiDetectorElements('ReadStripDetElements')
169  ReadStripDetElements.ManagerName = "ITkStrip"
170  ReadStripDetElements.DetEleCollKey = "ITkStripDetectorElementCollection"
171  ReadStripDetElements.UseConditionsTools = False
172  acc.addEventAlgo(ReadStripDetElements)
173 
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)
183 
184 # Execute and finish
185 sc = acc.run(maxEvents=1)
186 
187 # Success should be 0
188 sys.exit(not sc.isSuccess())
vtune_athena.format
format
Definition: vtune_athena.py:14
ITkStripGeoModelConfig.ITkStripReadoutGeometryCfg
def ITkStripReadoutGeometryCfg(flags)
Definition: ITkStripGeoModelConfig.py:43
ITkPixelGeoModelConfig.ITkPixelReadoutGeometryCfg
def ITkPixelReadoutGeometryCfg(flags)
Definition: ITkPixelGeoModelConfig.py:39
SCT_GeoModelConfig.SCT_ReadoutGeometryCfg
def SCT_ReadoutGeometryCfg(flags)
Definition: SCT_GeoModelConfig.py:50
python.MainServicesConfig.MainServicesCfg
def MainServicesCfg(flags, LoopMgr='AthenaEventLoopMgr')
Definition: MainServicesConfig.py:312
python.IOVDbSvcConfig.addFolders
def addFolders(flags, folderStrings, detDb=None, className=None, extensible=False, tag=None, db=None, modifiers='')
Definition: IOVDbSvcConfig.py:86
print
void print(char *figname, TCanvas *c1)
Definition: TRTCalib_StrawStatusPlots.cxx:25
PixelGeoModelConfig.PixelReadoutGeometryCfg
def PixelReadoutGeometryCfg(flags)
Definition: PixelGeoModelConfig.py:52
TCS::join
std::string join(const std::vector< std::string > &v, const char c=',')
Definition: Trigger/TrigT1/L1Topo/L1TopoCommon/Root/StringUtils.cxx:10
python.DetectorConfigFlags.setupDetectorFlags
def setupDetectorFlags(flags, custom_list=None, use_metadata=False, toggle_geometry=False, validate_only=False, keep_beampipe=False)
Definition: DetectorConfigFlags.py:292
python.AllConfigFlags.initConfigFlags
def initConfigFlags()
Definition: AllConfigFlags.py:19
if
if(febId1==febId2)
Definition: LArRodBlockPhysicsV0.cxx:567
str
Definition: BTagTrackIpAccessor.cxx:11