ATLAS Offline Software
Loading...
Searching...
No Matches
MuonConfigFlags Namespace Reference

Classes

class  GeoTrfCacheMode
class  MMClusterBuilderEnum

Functions

 _muonAlignMode (flags)
 createMuonConfigFlags ()

Function Documentation

◆ _muonAlignMode()

MuonConfigFlags._muonAlignMode ( flags)
protected

Definition at line 37 of file MuonConfigFlags.py.

37def _muonAlignMode(flags):
38 # Small function that determines if the alignment flags should be true or false
39 # follows the logic in https://acode-browser1.usatlas.bnl.gov/lxr/source/athena/MuonSpectrometer/MuonReconstruction/MuonRecExample/python/MuonAlignFlags.py
40 problematic_tags = ['COMCOND-HLT[A-C]-00[01]-00', 'COMCOND-ES1C-00[01]-00', 'COMCOND-REPC-001', 'COMCOND-SIM-01-00']
41 if any(re.match(tag,flags.IOVDb.DatabaseInstance) for tag in problematic_tags):
42 return False
43 elif flags.Input.isMC or not flags.Muon.enableAlignment:
44 return False
45 else:
46 return True
47

◆ createMuonConfigFlags()

MuonConfigFlags.createMuonConfigFlags ( )

Definition at line 48 of file MuonConfigFlags.py.

48def createMuonConfigFlags():
49 mcf=AthConfigFlags()
50
51 # stages of processing
52 # 0. Geometry
53
54
55 from AthenaConfiguration.AutoConfigFlags import DetDescrInfo
56
57 mcf.addFlag("Muon.usePhaseIIGeoSetup",lambda prevFlags : DetDescrInfo(prevFlags.GeoModel.AtlasVersion,
58 prevFlags.GeoModel.SQLiteDB ,
59 prevFlags.GeoModel.SQLiteDBFullPath)["Muon"]["useR4Plugin"] )
60
61 mcf.addFlag("Muon.AlignedGeoTrfCacheMode", GeoTrfCacheMode.FullCacheCond)
62 # 1. Digitization
63 mcf.addFlag("Muon.doFastMMDigitization", False)
64 mcf.addFlag("Muon.doFastsTGCDigitization",False)
65
66
67 # 2. Reco MuonRecFlags
68
69
71 try:
72
73 from TrkConfig.TrkConfigFlags import TrackingComponent
74 mcf.addFlag("Muon.scheduleActsReco", lambda prevFlags: prevFlags.Muon.usePhaseIIGeoSetup and \
75 prevFlags.Tracking.recoChain[0] in [TrackingComponent.ActsChain , TrackingComponent.ActsLegacyChain ])
76 except ImportError:
77 mcf.addFlag("Muon.scheduleActsReco", False)
78
79 mcf.addFlag("Muon.doMSVertex", True) # Run MS vertex (arXiv:1311.7070)
80 mcf.addFlag("Muon.doSegmentT0Fit",lambda prevFlags : prevFlags.Beam.Type is not BeamType.Collisions) # Fit MDT segments using a variable t0. Used for cosmics and single beam to compensate for large errors on the trigger time.
81 mcf.addFlag("Muon.enableErrorTuning",True) # turn on error tuning to account for misalignments
82 mcf.addFlag("Muon.useLooseErrorTuning",False)
83 mcf.addFlag("Muon.useTGCPriorNextBC",False) # Use TGC measurements from Prior and Next Bunch Crossings. These measurements are available in the real data since somewhere in 2008.
84 mcf.addFlag("Muon.useAlignmentCorrections",True) # Apply alignment corrections to MuonGeoModel. The corrections are read from a COOL database
85
86 mcf.addFlag("Muon.makePRDs",True) # Disable when e.g. re-running from ESD
87
88 mcf.addFlag("Muon.enableNRPC", lambda prevFlags: prevFlags.Detector.GeometryRPC and \
89 prevFlags.Muon.usePhaseIIGeoSetup )
90 # MuonStandaloneFlags.py
91 mcf.addFlag("Muon.printSummary", False) # Print out a summary for each event at each reco stage
92 mcf.addFlag("Muon.segmentOrigin", "Muon") # Can be 'Muon','TruthTracking'
93 # reconstructionMode - I think this is a complete duplication of global.BeamType. Dropping.
94 mcf.addFlag("Muon.strategy", []) # CutSeedsOnTracks, CombineSegInStation, DynamicSeeding, PreferOutsideIn, AllowOneSharedHit, DoRefinement, DoAmbiSolving
95 mcf.addFlag("Muon.straightLineFitMomentum", 2000.0 )
96 #mcf.addFlag("Muon.doSegmentsOnly", True) # Also in MuonRecFlags ... redundant in both?
97 mcf.addFlag("Muon.Chi2NDofCut", 20.0 ) # chi-squared per degree of freedom cut in fitter.
98 mcf.addFlag("Muon.enableCurvedSegmentFinding", False ) # TODO I think this one could possibly be removed, since it really is a Tool level configuration.
99 mcf.addFlag("Muon.updateSegmentSecondCoordinate", lambda prevFlags : prevFlags.Beam.Type is BeamType.Collisions) # Do not use for cosmics or singlebeam
100
101 mcf.addFlag("Muon.useSegmentMatching", lambda prevFlags : prevFlags.Beam.Type is BeamType.Collisions) # Do not use for cosmics or singlebeam
102 mcf.addFlag("Muon.useTrackSegmentMatching", True )
103 mcf.addFlag("Muon.runCommissioningChain", lambda prevFlags: ( False and (prevFlags.Detector.EnableMM or prevFlags.Detector.EnablesTGC) \
104 and prevFlags.Beam.Type is BeamType.Collisions) )
105
106 mcf.addFlag("Muon.applyMMPassivation", lambda prevFlags: prevFlags.Detector.EnableMM and not prevFlags.Common.isOnline and (prevFlags.Common.Project is not Project.AthSimulation \
107 and (prevFlags.Common.ProductionStep not in [ProductionStep.Simulation, ProductionStep.FastChain] or prevFlags.Overlay.DataOverlay)))
108 # CalibFlags
109 mcf.addFlag("Muon.Calib.readMdtJSON", lambda prevFlags: prevFlags.GeoModel.Run > LHCPeriod.Run3 and prevFlags.Muon.usePhaseIIGeoSetup) # Toggle whether the calibration constants are read from the JSON format. Enabled by default for a Run4 geometry read by the muon phase II geometry setup
110 mcf.addFlag("Muon.Calib.fitAnalyticRt", False) #Toggle whether the look-up R-t tables shall undergo an intermediate polynomial fit
111
112 mcf.addFlag("Muon.Calib.readMDTCalibFromBlob", True) # Read mdt tube calibration from blob-folders
113 mcf.addFlag("Muon.Calib.correctMdtRtForBField", lambda prevFlags : (prevFlags.Input.isMC is False and prevFlags.Beam.Type is BeamType.Collisions)) # Apply B-field correction to drift times only for collision data (as done in https://acode-browser1.usatlas.bnl.gov/lxr/source/athena/MuonSpectrometer/MuonCnv/MuonCnvExample/python/MuonCalibFlags.py#0028)
114 mcf.addFlag("Muon.Calib.correctMdtRtForTimeSlewing", lambda prevFlags : prevFlags.Input.isMC is False) # Apply time slewing correction to drift time only for data (as done in https://acode-browser1.usatlas.bnl.gov/lxr/source/athena/MuonSpectrometer/MuonCnv/MuonCnvExample/python/MuonCalibFlags.py#0028)
115
116 mcf.addFlag("Muon.Calib.applySigPropUncert", lambda prevFlags: prevFlags.Muon.usePhaseIIGeoSetup )
117 mcf.addFlag("Muon.Calib.useMLRt", True) # use ML-RT functions from COOL
118 mcf.addFlag("Muon.Calib.applyRtScaling", False) # TODO - apparently not needed, but currently used in MuonCalibConfig. Set false to match https://acode-browser1.usatlas.bnl.gov/lxr/source/athena/MuonSpectrometer/MuonCnv/MuonCnvExample/python/MuonCalibFlags.py#0072
119 mcf.addFlag("Muon.Calib.mdtCalibrationSource", "MDT") # Source for MDT t0s and rts
120 mcf.addFlag("Muon.Calib.mdtPropagationSpeedBeta", lambda prevFlags : 1.0 if prevFlags.Input.isMC else 0.85) #
121
122 mcf.addFlag("Muon.Calib.CscPedFromLocalFile", False)
123 mcf.addFlag("Muon.Calib.CscNoiseFromLocalFile", False)
124 mcf.addFlag("Muon.Calib.CscPSlopeFromLocalFile", False)
125 mcf.addFlag("Muon.Calib.CscStatusFromLocalFile", False)
126 mcf.addFlag("Muon.Calib.CscRmsFromLocalFile", False)
127 mcf.addFlag("Muon.Calib.CscF001FromLocalFile", False)
128 mcf.addFlag("Muon.Calib.CscT0BaseFromLocalFile", False)
129 mcf.addFlag("Muon.Calib.CscT0PhaseFromLocalFile", False)
130
131 mcf.addFlag("Muon.Calib.EventTag", "MoMu")
132
133 # Choose the (MDT) calibration mode.
134 # 'ntuple' : write standard calibration ntuple (up to segments)
135 # 'trackNtuple' : write standard ntuple + tracks
136 # 'regionNtuple' : write one ntuple per calibration region
137 # 't0Classic' : do classic t0 calibration
138 # 't0MT' : do MT t0 calibration
139 # 'rtClassic' : do classic rt calibration
140 # 'rtAnalytic' : do analytic rt calibration
141 mcf.addFlag("Muon.Calib.mdtMode", "ntuple")
142
143
144 # for now the T0 calibration in the NSW should be disabled by default until a final calibration is available. Introducing the flags anyhow to allow for studies of the calibration
145 # do not apply NSW T0 calibration if we are running online or MC or a RUN4 geometry, keep only for 23 or 24
146 mcf.addFlag("Muon.Calib.applyMmT0Correction", lambda prevFlags: prevFlags.GeoModel.Run==LHCPeriod.Run3 and prevFlags.Input.DataYear != 2022 and not prevFlags.Common.isOnline and not prevFlags.Input.isMC )
147 mcf.addFlag("Muon.Calib.applysTgcT0Correction", lambda prevFlags: prevFlags.GeoModel.Run<LHCPeriod.Run4 and not prevFlags.Common.isOnline and not prevFlags.Input.isMC and False)
148 mcf.addFlag("Muon.Calib.applyMmBFieldCalib", True)
149
150 # Muon Align flags
151
152 mcf.addFlag("Muon.Align.UseALines", lambda prevFlags: (_muonAlignMode(prevFlags)))
153 mcf.addFlag("Muon.Align.UseBLines", lambda prevFlags: prevFlags.Muon.Align.UseALines)
154 mcf.addFlag("Muon.Align.UseILines", lambda prevFlags: (_muonAlignMode(prevFlags)) and \
155 prevFlags.Detector.GeometryCSC and 'HLT' not in prevFlags.IOVDb.GlobalTag)
156 mcf.addFlag("Muon.Align.UseAsBuilt", lambda prevFlags: (_muonAlignMode(prevFlags)) and not \
157 (prevFlags.IOVDb.DatabaseInstance == 'COMP200' or \
158 'HLT' in prevFlags.IOVDb.GlobalTag or prevFlags.Common.isOnline) )
159 mcf.addFlag("Muon.Align.UsesTGCAsBuild", lambda prevFlags: (_muonAlignMode(prevFlags)) and not prevFlags.Common.isOnline and prevFlags.GeoModel.Run == LHCPeriod.Run3)
160
161 # Muon Trigger Flags
162 mcf.addFlag("Muon.MuonTrigger", False)
163 mcf.addFlag("Muon.SAMuonTrigger", False)
164 mcf.addFlag("Muon.disableNSWForL2SA", True)
165
166 mcf.addFlag("Muon.enableAlignment",lambda flags: (flags.Common.Project is not Project.AthSimulation \
167 and not (flags.Common.ProductionStep in [ProductionStep.Simulation, ProductionStep.FastChain] or flags.Overlay.DataOverlay)))
168 mcf.addFlag("Muon.enableTrigIDtrackReuse", False)
169 # configuration of the DESDM_MCP output format
170
171 mcf.addFlag("Muon.DESDM_MCP.doAlignmentFormat", False) # Flag to stear the DESDM_MCP format which switches to a looser event selection for toroid off runs used for alignment.
172 mcf.addFlag("Muon.DESDM_MCP.doExtendedAlignmentContent", False) # Flag to enable electron, photon and jet containers in DESDM_MCP for dedicate studies of the toroid off data.
173
174 # configuration to write out RPC RDO for trigger timing calibration
175 mcf.addFlag("Muon.doWriteRpcRDO", True)
176
177 mcf.addFlag("Muon.writeSDOs", lambda prevFlags : prevFlags.Output.doWriteESD and prevFlags.Input.isMC)
178
179 # configure the MM cluster reco method that is used in the cluster calibration step
180 #Use charge weighted only for trigger and 2022 where not sure if the t0 calibrations that we have are ok dor the commissioning phase of the NSW in 2022
181 mcf.addFlag("Muon.MMClusterCalibRecoTool", lambda prevFlags: MMClusterBuilderEnum.Centroid if (prevFlags.Common.isOnline or prevFlags.Input.DataYear == 2022 or prevFlags.Beam.Type is not BeamType.Collisions) else MMClusterBuilderEnum.ClusterTimeProjection, type=MMClusterBuilderEnum)
182
183 mcf.addFlag("Muon.writexAODPRD", lambda prevFlags: prevFlags.Muon.usePhaseIIGeoSetup) # Output new xAOD format from convertors (to be removed once the old format is deprecated)
184 # use the MDT DCS data to determine if a chamber is alive or not. This is used in the hole search and the region selector. Needs to be false if the job is running online or is the reconstruction of the MDT calib stream
185 mcf.addFlag("Muon.useMdtDcsData", lambda prevFlags : not prevFlags.Common.isOnline and prevFlags.Detector.GeometryMDT)
186
187
188
189
190
191
192 # TODO - add configuration for above
193
194 return mcf
195