ATLAS Offline Software
Loading...
Searching...
No Matches
RunPrintSiDetElements.py
Go to the documentation of this file.
1#!/usr/bin/env python
2"""Run PrintSiDetectorElements
3
4Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
5"""
6import sys
7from argparse import ArgumentParser
8
9from AthenaConfiguration.AllConfigFlags import initConfigFlags
10from AthenaConfiguration.TestDefaults import defaultGeometryTags,defaultConditionsTags
11
12# Argument parsing
13parser = ArgumentParser("PrintSiDetectorElements.py")
14parser.add_argument("detectors", metavar="detectors", type=str, nargs="*",
15 help="Specify the list of detectors")
16parser.add_argument("--localgeo", default=False, action="store_true",
17 help="Use local geometry XML files")
18parser.add_argument("--geometrytag", default=defaultGeometryTags.RUN4, type=str,
19 help="The geometry tag to use")
20parser.add_argument("--conditionstag", default=defaultConditionsTags.RUN4_MC, type=str,
21 help="The geometry tag to use")
22parser.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")
24parser.add_argument("--misalignmode",default=None, type=int,
25 help="misalignment Mode")
26args = parser.parse_args()
27
28
29# Some info about the job
30print("----PrintSiDetectorElements----")
31print()
32if args.localgeo:
33 print("Using local Geometry XML files")
34if not args.detectors:
35 print("Running complete detector")
36else:
37 print("Running with: {}".format(", ".join(args.detectors)))
38print()
39
40# Configure
41flags = initConfigFlags()
42flags.Concurrency.NumThreads = 1
43if flags.Concurrency.NumThreads > 0:
44 flags.Scheduler.ShowDataDeps = True
45 flags.Scheduler.ShowDataFlow = True
46 flags.Scheduler.ShowControlFlow = True
47
48flags.GeoModel.Align.Dynamic = False
49flags.GeoModel.AtlasVersion = args.geometrytag
50flags.Input.isMC = True
51flags.IOVDb.GlobalTag = defaultConditionsTags.RUN4_MC
52flags.Input.Files = []
53
54flags.GeoModel.Align.Dynamic = False
55
56MisalignMode = args.misalignmode
57if 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
86if args.localgeo:
87 flags.ITk.Geometry.AllLocal = True
88
89elif 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
96from AthenaConfiguration.DetectorConfigFlags import setupDetectorFlags
97setupDetectorFlags(flags, args.detectors, toggle_geometry=True)
98
99
100
101flags.lock()
102
103# Construct our accumulator to run
104from AthenaConfiguration.MainServicesConfig import MainServicesCfg
105acc = MainServicesCfg(flags)
106from AthenaConfiguration.ComponentFactory import CompFactory
107# Pixel
108if 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
124if 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
141if 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
147if 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
167if 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
187sc = acc.run(maxEvents=1)
188
189# Success should be 0
190sys.exit(not sc.isSuccess())
if(febId1==febId2)
void print(char *figname, TCanvas *c1)