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==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"
83  DBName="OFLCOND"
84  flags.IOVDb.DBConnection ="sqlite://;schema="+DBFile+";dbname="+DBName
85 
86 if args.localgeo:
87  flags.ITk.Geometry.AllLocal = True
88 
89 elif args.sqlitefile:
90  print("Using SQLite input")
91  flags.GeoModel.SQLiteDB = True
92  from AtlasGeoModel import CommonGeoDB
93  CommonGeoDB.SetupLocalSqliteGeometryDb(args.sqlitefile,args.geometrytag)
94 
95 
96 from AthenaConfiguration.DetectorConfigFlags import setupDetectorFlags
97 setupDetectorFlags(flags, args.detectors, toggle_geometry=True)
98 
99 
100 
101 flags.lock()
102 
103 # Construct our accumulator to run
104 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
105 acc = MainServicesCfg(flags)
106 from AthenaConfiguration.ComponentFactory import CompFactory
107 # Pixel
108 if flags.Detector.EnablePixel:
109  from PixelGeoModel.PixelGeoModelConfig import PixelReadoutGeometryCfg
110  acc.merge(PixelReadoutGeometryCfg(flags))
111  ReadPixelDetElements = CompFactory.ReadSiDetectorElements('ReadPixelDetElements')
112  ReadPixelDetElements.ManagerName = "Pixel"
113  ReadPixelDetElements.DetEleCollKey = "PixelDetectorElementCollection"
114  ReadPixelDetElements.UseConditionsTools = False
115  acc.addEventAlgo(ReadPixelDetElements)
116 
117  PrintPixelDetElements = CompFactory.PrintSiElements('PrintPixelDetElements')
118  PrintPixelDetElements.OutputLevel = 5
119  PrintPixelDetElements.DetectorManagerNames = ["Pixel"]
120  PrintPixelDetElements.OutputFile = "PixelGeometry.dat"
121  acc.addEventAlgo(PrintPixelDetElements)
122 
123 # SCT
124 if flags.Detector.EnableSCT:
125  from SCT_GeoModel.SCT_GeoModelConfig import SCT_ReadoutGeometryCfg
126  acc.merge(SCT_ReadoutGeometryCfg(flags))
127 
128  ReadSCTDetElements = CompFactory.ReadSiDetectorElements('ReadSCTDetElements')
129  ReadSCTDetElements.ManagerName = "SCT"
130  ReadSCTDetElements.DetEleCollKey = "SCT_DetectorElementCollection"
131  ReadSCTDetElements.UseConditionsTools = False
132  acc.addEventAlgo(ReadSCTDetElements)
133 
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)
140 
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))
145 
146 # ITk Pixel
147 if flags.Detector.EnableITkPixel:
148  from PixelGeoModelXml.ITkPixelGeoModelConfig import ITkPixelReadoutGeometryCfg
149  acc.merge(ITkPixelReadoutGeometryCfg(flags))
150  ReadPixelDetElements = CompFactory.ReadSiDetectorElements('ReadITkPixelDetElements')
151  ReadPixelDetElements.ManagerName = "ITkPixel"
152  ReadPixelDetElements.DetEleCollKey = "ITkPixelDetectorElementCollection"
153  ReadPixelDetElements.UseConditionsTools = False
154  acc.addEventAlgo(ReadPixelDetElements)
155 
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)
164 
165 
166 # ITk Strip
167 if flags.Detector.EnableITkStrip:
168  from StripGeoModelXml.ITkStripGeoModelConfig import ITkStripReadoutGeometryCfg
169  acc.merge(ITkStripReadoutGeometryCfg(flags))
170  ReadStripDetElements = CompFactory.ReadSiDetectorElements('ReadStripDetElements')
171  ReadStripDetElements.ManagerName = "ITkStrip"
172  ReadStripDetElements.DetEleCollKey = "ITkStripDetectorElementCollection"
173  ReadStripDetElements.UseConditionsTools = False
174  acc.addEventAlgo(ReadStripDetElements)
175 
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)
185 
186 # Execute and finish
187 sc = acc.run(maxEvents=1)
188 
189 # Success should be 0
190 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:26
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