ATLAS Offline Software
Loading...
Searching...
No Matches
MuonRIO_OnTrackCreatorToolConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
2
3from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
4from AthenaConfiguration.ComponentFactory import CompFactory
5from AthenaConfiguration.Enums import BeamType
6from MuonConfig.MuonCalibrationConfig import MdtCalibrationToolCfg
7
8
11
12__mdtCalibWindows = ['User',
13 'Default',
14 'Collision_G4',
15 'Collision_data',
16 'Collision_t0fit',
17 ]
18
20 """Returns index number corresponding to the calibration window name.
21 This will throw a ValueError if name is not in the list.
22 """
23 return __mdtCalibWindows.index(name)
24
25def TriggerChamberClusterOnTrackCreatorCfg(flags, name="TriggerChamberClusterOnTrackCreator", **kwargs):
26 result=ComponentAccumulator()
28 muon_cluster_creator=acc.getPrimary()
29 result.merge(acc)
30 kwargs.setdefault("ClusterCreator", muon_cluster_creator)
31 result.setPrivateTools(CompFactory.Muon.TriggerChamberClusterOnTrackCreator(name, **kwargs))
32 return result
33
34def CscClusterOnTrackCreatorCfg(flags,name="CscClusterOnTrackCreator", **kwargs):
35 from MuonConfig.MuonSegmentFindingConfig import QratCscClusterFitterCfg, CscClusterUtilToolCfg, CalibCscStripFitterCfg
36
37 result=ComponentAccumulator()
38 acc = QratCscClusterFitterCfg(flags)
39 qrat = acc.popPrivateTools()
40 result.merge(acc)
41 kwargs.setdefault("CscClusterFitter", qrat )
42
43 acc = CalibCscStripFitterCfg(flags)
44 strip_fitter = acc.popPrivateTools()
45 result.merge(acc)
46 kwargs.setdefault("CscStripFitter", strip_fitter)
47
48 acc = CscClusterUtilToolCfg(flags)
49 cluster_util_tool = acc.popPrivateTools()
50 kwargs.setdefault("CscClusterUtilTool", cluster_util_tool )
51 result.merge(acc)
52
53 if not flags.Input.isMC: # collisions real data or simulated first data
54 # scale CSC and hit errors
55 kwargs.setdefault("ErrorScalerBeta", 0.070 )
56
57 result.setPrivateTools(CompFactory.Muon.CscClusterOnTrackCreator(name,**kwargs))
58
59 return result
60
61
62def MdtCalibToolForRotsCfg(flags, name ="MdtCalibrationTool", **kwargs):
63 kwargs.setdefault("DoMagneticFieldCorrection", flags.Muon.Calib.correctMdtRtForBField)
64
65 kwargs.setdefault("DoSlewingCorrection", flags.Muon.Calib.correctMdtRtForTimeSlewing)
66 if flags.Beam.Type in [BeamType.Cosmics, BeamType.SingleBeam]:
67 kwargs.setdefault("DoTofCorrection", False)
68 else:
69 kwargs.setdefault("DoTofCorrection", True)
70 kwargs.setdefault("TimeWindowSetting", MdtCalibWindowNumber('Collision_data'))
71 return MdtCalibrationToolCfg(flags, name = name, **kwargs)
72
73def MdtDriftCircleOnTrackCreatorCfg(flags,name="MdtDriftCircleOnTrackCreator", **kwargs):
74 result = ComponentAccumulator()
75 if flags.Beam.Type in [BeamType.Cosmics, BeamType.SingleBeam]:
76 kwargs.setdefault("DoFixedError", True)
77 kwargs.setdefault("TimingMode", 1)
78 kwargs.setdefault("UseParametrisedError", True)
79 kwargs.setdefault("ApplyToF", False)
80
81 else: # collisions simulation/data settings
82 kwargs.setdefault("UseParametrisedError", False)
83 kwargs.setdefault("DoFixedError", False)
84 kwargs.setdefault("DoErrorScaling", False)
85
86 if not flags.Input.isMC :
87 kwargs.setdefault("CreateTubeHit", True) # BroadErrors
88 kwargs.setdefault("UseLooseErrors", flags.Muon.useLooseErrorTuning) # LooseErrors on data
89
90 kwargs.setdefault("CalibrationTool", result.popToolsAndMerge( MdtCalibToolForRotsCfg(flags)) )
91 kwargs.setdefault("IsMC", flags.Input.isMC)
92
93 result.setPrivateTools(CompFactory.Muon.MdtDriftCircleOnTrackCreator(name, WasConfigured=True, **kwargs))
94 return result
95
96def MuonClusterOnTrackCreatorCfg(flags, name="MuonClusterOnTrackCreator", **kwargs):
97 result=ComponentAccumulator()
98 if not flags.Input.isMC: # collisions real data or simulated first data
99 # scale TGC eta hit errors as long as TGC eta are not well aligned
100 kwargs.setdefault("DoFixedErrorTgcEta", True)
101 kwargs.setdefault("FixedErrorTgcEta", 15.)
102 else:
103 kwargs.setdefault("DoFixedErrorTgcEta", False) # This is ONLY to make the tool configured. Real solution is to use default name.
104
105 if flags.Detector.EnablesTGC or flags.Detector.EnableMM:
106 from MuonConfig.MuonCalibrationConfig import NSWCalibToolCfg
107 kwargs.setdefault("NSWCalibTool", result.popToolsAndMerge(NSWCalibToolCfg(flags)))
108
109 from MuonConfig.MuonConfigFlags import MMClusterBuilderEnum
110 if flags.Muon.MMClusterCalibRecoTool == MMClusterBuilderEnum.Centroid:
111 from MuonConfig.MuonRecToolsConfig import SimpleMMClusterBuilderToolCfg
112 kwargs.setdefault("MMClusterBuilder", result.popToolsAndMerge(SimpleMMClusterBuilderToolCfg(flags)))
113 elif flags.Muon.MMClusterCalibRecoTool == MMClusterBuilderEnum.ClusterTimeProjection:
114 #Turn on the calibrated drift velocities only for data (by default 2022 is also switched to centroid!)
115 if not flags.Input.isMC:
116 kwargs["NSWCalibTool"].calibrateDriftVelocityFromData = True
117
118 from MuonConfig.MuonRecToolsConfig import ClusterTimeProjectionMMClusterBuilderToolCfg
119 kwargs.setdefault("MMClusterBuilder", result.popToolsAndMerge(ClusterTimeProjectionMMClusterBuilderToolCfg(flags)))
120
121 muon_cluster_rot_creator = CompFactory.Muon.MuonClusterOnTrackCreator(name, **kwargs)
122 result.setPrivateTools(muon_cluster_rot_creator)
123 return result
124
TriggerChamberClusterOnTrackCreatorCfg(flags, name="TriggerChamberClusterOnTrackCreator", **kwargs)
MuonClusterOnTrackCreatorCfg(flags, name="MuonClusterOnTrackCreator", **kwargs)
MdtDriftCircleOnTrackCreatorCfg(flags, name="MdtDriftCircleOnTrackCreator", **kwargs)
CscClusterOnTrackCreatorCfg(flags, name="CscClusterOnTrackCreator", **kwargs)
MdtCalibToolForRotsCfg(flags, name="MdtCalibrationTool", **kwargs)