65def configureFlags(runArgs):
66 from AthenaConfiguration.AllConfigFlags import initConfigFlags
67 flags = initConfigFlags()
68
69
70 for IDpart in runArgs.excludeIDPart:
71 setattr(flags.InDet.Align, f"align{IDpart}", False)
72
73
74 if hasattr(runArgs, "localDatabase"):
75 flags.InDet.Align.localDataBase = os.path.abspath(runArgs.localDatabase)
76
77 if runArgs.eosT0Dir != "":
78 flags.InDet.Align.localDataBase = getT0SolveDB(runArgs)
79
80 else:
81 flags.InDet.Align.localDataBase = ""
82
83
84 for tag in [tag for tag in dir(runArgs) if "Tag" in tag and tag != "globalTag"]:
85 setattr(flags.InDet.Align, tag, getattr(runArgs, tag))
86
87 if flags.InDet.Align.localDataBase:
88 msg.info(f"Change IBLDist tag from '{flags.InDet.Align.IBLDistTag}' to 'InDetAlignIBLDIST-T0-Alignment'")
89 msg.info(f"Change L1IDTag tag from '{flags.InDet.Align.L1IDTag}' to 'InDetAlignL1-T0-Alignment'")
90 msg.info(f"Change L2PIXTag tag from '{flags.InDet.Align.L2PIXTag}' to 'InDetAlignL2PIX-T0-Alignment'")
91 msg.info(f"Change L2SCTTag tag from '{flags.InDet.Align.L2SCTTag}' to 'InDetAlignL2SCT-T0-Alignment'")
92 msg.info(f"Change L1TRTTag tag from '{flags.InDet.Align.L1TRTTag}' to 'InDetAlignL1TRT-T0-Alignment'")
93
94 flags.InDet.Align.IBLDistTag = "InDetAlignIBLDIST-T0-Alignment"
95 flags.InDet.Align.L1IDTag = "InDetAlignL1-T0-Alignment"
96 flags.InDet.Align.L2PIXTag = "InDetAlignL2PIX-T0-Alignment"
97 flags.InDet.Align.L2SCTTag = "InDetAlignL2SCT-T0-Alignment"
98 flags.InDet.Align.L1TRTTag = "InDetAlignL1TRT-T0-Alignment"
99
100
101 from InDetAlignConfig.IDAlignFlags import setL11AlignmentFlags, setL16AlignmentFlags, setL2AlignmentFlags, setL3AlignmentFlags
102
103 if runArgs.alignLevel == 11:
104 setL11AlignmentFlags(flags)
105
106 elif runArgs.alignLevel == 16:
107 setL16AlignmentFlags(flags)
108
109 elif runArgs.alignLevel == 2:
110 setL2AlignmentFlags(flags)
111
112 elif runArgs.alignLevel == 3:
113 setL3AlignmentFlags(flags)
114
115 else:
116 raise Exception(f"No valid alignment level has been selected: '{runArgs.alignLevel}'")
117
118
119 from InDetConfig.ConfigurationHelpers import OnlyTrackingPreInclude
120 OnlyTrackingPreInclude(flags)
121
122
123 flags.InDet.Align.accumulate = runArgs.accumulate
124 flags.InDet.Align.baseDir = os.path.abspath(runArgs.baseDir)
125 flags.InDet.Align.inputTracksCollection = runArgs.inputTracksCollection
126 flags.Input.Files = [os.path.abspath(inputFile) for inputFile in runArgs.inputRAWFile]
127
128 if runArgs.accumulate:
129 if hasattr(runArgs, "outputTFile"):
130 flags.InDet.Align.outputTFile = runArgs.outputTFile
131
132 if hasattr(runArgs, "outputMonitorFile"):
133 flags.InDet.Align.doMonitoring = True
134 flags.Output.HISTFileName = f"{flags.InDet.Align.baseDir}/Accumulate/{runArgs.outputMonitorFile}"
135
136 if runArgs.solve:
137 flags.InDet.Align.inputTFiles = [os.path.abspath(inputTFile) for inputTFile in runArgs.inputTFile]
138 flags.InDet.Align.outputConditionFile = f"{flags.InDet.Align.baseDir}/Solve/{runArgs.outputConditionFile}"
139 flags.IOVDb.DBConnection = f"sqlite://;schema={flags.InDet.Align.baseDir}/Solve/{runArgs.outputDBFile};dbname=CONDBR2"
140
141 flags.Exec.MaxEvents = runArgs.maxEvents if not runArgs.solve else 1
142 flags.Exec.SkipEvents = runArgs.skipEvents if hasattr(runArgs, "skipEvents") else 0
144 flags.Exec.FPE = -2
145 flags.IOVDb.GlobalTag = runArgs.globalTag
146
147 flags.GeoModel.Align.Dynamic = True
148 flags.GeoModel.AtlasVersion = runArgs.atlasVersion
149
150 if not flags.Input.isMC and runArgs.isCosmics:
151 from AthenaConfiguration.Enums import BeamType
152
153 flags.Beam.NumberOfCollisions = 0
154 flags.Beam.Type = BeamType.Cosmics
155 flags.Beam.Energy = 0.
156 flags.Beam.BunchSpacing = 50
157
158 if runArgs.isHeavyIon:
159 flags.Beam.BunchSpacing = 50
160 flags.Reco.EnableHI = True
161 flags.HeavyIon.doGlobal = True
162
163 else:
164 flags.Beam.BunchSpacing = 25
165
166 if not runArgs.isBFieldOff:
167 flags.BField.solenoidOn = True
168 flags.BField.barrelToroidOn = True
169 flags.BField.endcapToroidOn = True
170
171 else:
172 flags.BField.solenoidOn = False
173 flags.BField.barrelToroidOn = False
174 flags.BField.endcapToroidOn = False
175
176
177 processPreInclude(runArgs, flags)
178 processPreExec(runArgs, flags)
179
180
181 flags.fillFromArgs()
182
183
184 flags.lock()
185
186 return flags
187
188