ATLAS Offline Software
Classes | Functions
MuonConfigFlags Namespace Reference

Classes

class  MMClusterBuilderEnum
 

Functions

def _muonAlignMode (flags)
 
def createMuonConfigFlags ()
 

Function Documentation

◆ _muonAlignMode()

def MuonConfigFlags._muonAlignMode (   flags)
private

Definition at line 29 of file MuonConfigFlags.py.

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

◆ createMuonConfigFlags()

def MuonConfigFlags.createMuonConfigFlags ( )

Definition at line 40 of file MuonConfigFlags.py.

41  mcf=AthConfigFlags()
42 
43  # stages of processing
44  # 0. Geometry
45 
46 
47  from AthenaConfiguration.AutoConfigFlags import DetDescrInfo
48 
49  mcf.addFlag("Muon.usePhaseIIGeoSetup",lambda prevFlags : DetDescrInfo(prevFlags.GeoModel.AtlasVersion,
50  prevFlags.GeoModel.SQLiteDB ,
51  prevFlags.GeoModel.SQLiteDBFullPath)["Muon"]["useR4Plugin"] )
52  # 1. Digitization
53  mcf.addFlag("Muon.doDigitization",True)
54  mcf.addFlag("Muon.doFastMMDigitization",True)
55  mcf.addFlag("Muon.doFastsTGCDigitization",True)
56 
57 
58  # 2. Reco MuonRecFlags
59 
60  mcf.addFlag("Muon.doMSVertex", True) # Run MS vertex (arXiv:1311.7070)
61  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.
62  mcf.addFlag("Muon.enableErrorTuning",True) # turn on error tuning to account for misalignments
63  mcf.addFlag("Muon.useLooseErrorTuning",False)
64  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.
65  mcf.addFlag("Muon.useAlignmentCorrections",True) # Apply alignment corrections to MuonGeoModel. The corrections are read from a COOL database
66 
67  mcf.addFlag("Muon.makePRDs",True) # Disable when e.g. re-running from ESD
68 
69  mcf.addFlag("Muon.enableNRPC", lambda prevFlags: prevFlags.Detector.GeometryRPC and \
70  prevFlags.Muon.usePhaseIIGeoSetup )
71  # MuonStandaloneFlags.py
72  mcf.addFlag("Muon.printSummary", False) # Print out a summary for each event at each reco stage
73  mcf.addFlag("Muon.segmentOrigin", "Muon") # Can be 'Muon','TruthTracking'
74  # reconstructionMode - I think this is a complete duplication of global.BeamType. Dropping.
75  mcf.addFlag("Muon.strategy", []) # CutSeedsOnTracks, CombineSegInStation, DynamicSeeding, PreferOutsideIn, AllowOneSharedHit, DoRefinement, DoAmbiSolving
76  mcf.addFlag("Muon.straightLineFitMomentum", 2000.0 )
77  #mcf.addFlag("Muon.doSegmentsOnly", True) # Also in MuonRecFlags ... redundant in both?
78  mcf.addFlag("Muon.Chi2NDofCut", 20.0 ) # chi-squared per degree of freedom cut in fitter.
79  mcf.addFlag("Muon.enableCurvedSegmentFinding", False ) # TODO I think this one could possibly be removed, since it really is a Tool level configuration.
80  mcf.addFlag("Muon.updateSegmentSecondCoordinate", lambda prevFlags : prevFlags.Beam.Type is BeamType.Collisions) # Do not use for cosmics or singlebeam
81 
82  mcf.addFlag("Muon.useSegmentMatching", lambda prevFlags : prevFlags.Beam.Type is BeamType.Collisions) # Do not use for cosmics or singlebeam
83  mcf.addFlag("Muon.useTrackSegmentMatching", True )
84  mcf.addFlag("Muon.runCommissioningChain", lambda prevFlags: ( False and (prevFlags.Detector.EnableMM or prevFlags.Detector.EnablesTGC) \
85  and prevFlags.Beam.Type is BeamType.Collisions) )
86 
87  mcf.addFlag("Muon.applyMMPassivation", lambda prevFlags: prevFlags.Detector.EnableMM and not prevFlags.Common.isOnline and (prevFlags.Common.Project is not Project.AthSimulation \
88  and (prevFlags.Common.ProductionStep not in [ProductionStep.Simulation, ProductionStep.FastChain] or prevFlags.Overlay.DataOverlay)))
89  # CalibFlags
90  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
91  mcf.addFlag("Muon.Calib.fitAnalyticRt", False) #Toggle whether the look-up R-t tables shall undergo an intermediate polynomial fit
92 
93  mcf.addFlag("Muon.Calib.readMDTCalibFromBlob", True) # Read mdt tube calibration from blob-folders
94  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)
95  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)
96 
97  mcf.addFlag("Muon.Calib.applySigPropUncert", lambda prevFlags: prevFlags.Muon.usePhaseIIGeoSetup )
98  mcf.addFlag("Muon.Calib.useMLRt", True) # use ML-RT functions from COOL
99  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
100  mcf.addFlag("Muon.Calib.mdtCalibrationSource", "MDT") # Source for MDT t0s and rts
101  mcf.addFlag("Muon.Calib.mdtPropagationSpeedBeta", lambda prevFlags : 1.0 if prevFlags.Input.isMC else 0.85) #
102 
103  mcf.addFlag("Muon.Calib.CscPedFromLocalFile", False)
104  mcf.addFlag("Muon.Calib.CscNoiseFromLocalFile", False)
105  mcf.addFlag("Muon.Calib.CscPSlopeFromLocalFile", False)
106  mcf.addFlag("Muon.Calib.CscStatusFromLocalFile", False)
107  mcf.addFlag("Muon.Calib.CscRmsFromLocalFile", False)
108  mcf.addFlag("Muon.Calib.CscF001FromLocalFile", False)
109  mcf.addFlag("Muon.Calib.CscT0BaseFromLocalFile", False)
110  mcf.addFlag("Muon.Calib.CscT0PhaseFromLocalFile", False)
111 
112  mcf.addFlag("Muon.Calib.EventTag", "MoMu")
113 
114  # Choose the (MDT) calibration mode.
115  # 'ntuple' : write standard calibration ntuple (up to segments)
116  # 'trackNtuple' : write standard ntuple + tracks
117  # 'regionNtuple' : write one ntuple per calibration region
118  # 't0Classic' : do classic t0 calibration
119  # 't0MT' : do MT t0 calibration
120  # 'rtClassic' : do classic rt calibration
121  # 'rtAnalytic' : do analytic rt calibration
122  mcf.addFlag("Muon.Calib.mdtMode", "ntuple")
123 
124 
125  # 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
126  # do not apply NSW T0 calibration if we are running online or MC or a RUN4 geometry, keep only for 23 or 24
127  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 )
128  mcf.addFlag("Muon.Calib.applysTgcT0Correction", lambda prevFlags: prevFlags.GeoModel.Run<LHCPeriod.Run4 and not prevFlags.Common.isOnline and not prevFlags.Input.isMC and False)
129  mcf.addFlag("Muon.Calib.applyMmBFieldCalib", True)
130 
131  # Muon Align flags
132 
133  mcf.addFlag("Muon.Align.UseALines", lambda prevFlags: (_muonAlignMode(prevFlags)))
134  mcf.addFlag("Muon.Align.UseBLines", lambda prevFlags: prevFlags.Muon.Align.UseALines)
135  mcf.addFlag("Muon.Align.UseILines", lambda prevFlags: (_muonAlignMode(prevFlags)) and \
136  prevFlags.Detector.GeometryCSC and 'HLT' not in prevFlags.IOVDb.GlobalTag)
137  mcf.addFlag("Muon.Align.UseAsBuilt", lambda prevFlags: (_muonAlignMode(prevFlags)) and not \
138  (prevFlags.IOVDb.DatabaseInstance == 'COMP200' or \
139  'HLT' in prevFlags.IOVDb.GlobalTag or prevFlags.Common.isOnline) )
140  mcf.addFlag("Muon.Align.UsesTGCAsBuild", lambda prevFlags: (_muonAlignMode(prevFlags)) and not prevFlags.Common.isOnline and prevFlags.GeoModel.Run == LHCPeriod.Run3)
141 
142  # Muon Trigger Flags
143  mcf.addFlag("Muon.MuonTrigger", False)
144  mcf.addFlag("Muon.SAMuonTrigger", False)
145  mcf.addFlag("Muon.disableNSWForL2SA", True)
146 
147  mcf.addFlag("Muon.enableAlignment",lambda flags: (flags.Common.Project is not Project.AthSimulation \
148  and not (flags.Common.ProductionStep in [ProductionStep.Simulation, ProductionStep.FastChain] or flags.Overlay.DataOverlay)))
149  mcf.addFlag("Muon.enableTrigIDtrackReuse", False)
150  # configuration of the DESDM_MCP output format
151 
152  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.
153 
154  # configuration to write out RPC RDO for trigger timing calibration
155  mcf.addFlag("Muon.doWriteRpcRDO", True)
156 
157  mcf.addFlag("Muon.writeSDOs", lambda prevFlags : prevFlags.Output.doWriteESD and prevFlags.Input.isMC)
158 
159  # configure the MM cluster reco method that is used in the cluster calibration step
160  #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
161  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)
162 
163  mcf.addFlag("Muon.writexAODPRD", lambda prevFlags: prevFlags.Muon.usePhaseIIGeoSetup) # Output new xAOD format from convertors (to be removed once the old format is deprecated)
164  # 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
165  mcf.addFlag("Muon.useMdtDcsData", lambda prevFlags : not prevFlags.Common.isOnline)
166 
167 
168 
169 
170 
171 
172  # TODO - add configuration for above
173 
174  return mcf
175 
MuonConfigFlags._muonAlignMode
def _muonAlignMode(flags)
Definition: MuonConfigFlags.py:29
MuonConfigFlags.createMuonConfigFlags
def createMuonConfigFlags()
Definition: MuonConfigFlags.py:40
python.AutoConfigFlags.DetDescrInfo
def DetDescrInfo(geoTag, sqliteDB, sqliteDBFullPath)
Definition: AutoConfigFlags.py:133