ATLAS Offline Software
Loading...
Searching...
No Matches
TRT_DriftCircleToolConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
2# Configuration of TRT_DriftCircleTool package
3from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
4from AthenaConfiguration.ComponentFactory import CompFactory
5from AthenaConfiguration.Enums import BeamType
6
7
8def TRTDriftTimes(flags):
9 from collections import namedtuple
10 from AthenaCommon.SystemOfUnits import ns
11 driftTimes = namedtuple(
12 "driftTimes", ("LowGate", "HighGate", "LowGateArgon", "HighGateArgon"))
13 if flags.Beam.Type is BeamType.Cosmics:
14 return driftTimes(LowGate=19.0*ns,
15 HighGate=44.0*ns,
16 LowGateArgon=19.0*ns,
17 HighGateArgon=44.0*ns)
18 if not flags.Input.isMC:
19 return driftTimes(LowGate=17.1875*ns,
20 HighGate=45.3125*ns,
21 LowGateArgon=18.75*ns,
22 HighGateArgon=43.75*ns)
23 # MC
24 return driftTimes(LowGate=14.0625*ns, # 4.5*3.125 ns
25 HighGate=42.1875*ns, # LowGate + 9*3.125 ns
26 LowGateArgon=14.0625*ns,
27 HighGateArgon=42.1875*ns)
28
29
31 flags, name="InDetTRT_DriftCircleTool", usePhase=False, **kwargs):
32 from TRT_ConditionsAlgs.TRT_ConditionsAlgsConfig import TRTAlignCondAlgCfg
33 acc = TRTAlignCondAlgCfg(flags)
34
35 if "TRTDriftFunctionTool" not in kwargs:
36 from InDetConfig.TRT_DriftFunctionToolConfig import (
37 TRT_DriftFunctionToolCfg)
38 kwargs.setdefault("TRTDriftFunctionTool", acc.popToolsAndMerge(
39 TRT_DriftFunctionToolCfg(flags)))
40
41 if "ConditionsSummaryTool" not in kwargs:
42 from TRT_ConditionsServices.TRT_ConditionsServicesConfig import (
43 TRT_StrawStatusSummaryToolCfg)
44 kwargs.setdefault("ConditionsSummaryTool", acc.popToolsAndMerge(
45 TRT_StrawStatusSummaryToolCfg(flags)))
46
47 kwargs.setdefault("UseConditionsStatus", True)
48 kwargs.setdefault("useDriftTimeHTCorrection", True)
49 kwargs.setdefault("useDriftTimeToTCorrection", True)
50
51 if usePhase:
52 acc.setPrivateTools(
53 CompFactory.InDet.TRT_DriftCircleToolCosmics(name, **kwargs))
54 return acc
55
56 kwargs.setdefault("UseConditionsHTStatus", True)
57 kwargs.setdefault("SimpleOutOfTimePileupSupression", False)
58 kwargs.setdefault("SimpleOutOfTimePileupSupressionArgon", False)
59 kwargs.setdefault("RejectIfFirstBit", False)
60 kwargs.setdefault("RejectIfFirstBitArgon", False)
61 kwargs.setdefault("ValidityGateSuppression",
62 flags.Beam.BunchSpacing<=25 and
63 flags.Beam.Type is BeamType.Collisions)
64 kwargs.setdefault("ValidityGateSuppressionArgon",
65 flags.Beam.BunchSpacing<=25 and
66 flags.Beam.Type is BeamType.Collisions)
67
68 gains = TRTDriftTimes(flags)
69 kwargs.setdefault("LowGate", gains.LowGate)
70 # see discussion in MR !45402 why these are not Argon specific settings
71 kwargs.setdefault("LowGateArgon", gains.LowGate)
72 kwargs.setdefault("HighGate", gains.HighGate)
73 kwargs.setdefault("HighGateArgon", gains.HighGate)
74
75 from AthenaCommon.SystemOfUnits import ns
76 MinTrailingEdge = 11.0*ns
77 MaxDriftTime = 60.0*ns
78 kwargs.setdefault("MinTrailingEdge", MinTrailingEdge)
79 kwargs.setdefault("MinTrailingEdgeArgon", MinTrailingEdge)
80 kwargs.setdefault("MaxDriftTime", MaxDriftTime)
81 kwargs.setdefault("MaxDriftTimeArgon", MaxDriftTime)
82
83 acc.setPrivateTools(CompFactory.InDet.TRT_DriftCircleTool(name, **kwargs))
84 return acc
85
86
88 flags, name="InDetTRT_NoTime_DriftCircleTool", **kwargs):
89 acc = ComponentAccumulator()
90
91 if "TRTDriftFunctionTool" not in kwargs:
92 from InDetConfig.TRT_DriftFunctionToolConfig import (
93 TRT_NoTime_DriftFunctionToolCfg)
94 kwargs.setdefault("TRTDriftFunctionTool", acc.popToolsAndMerge(
95 TRT_NoTime_DriftFunctionToolCfg(flags)))
96
97 acc.setPrivateTools(acc.popToolsAndMerge(
98 TRT_DriftCircleToolCfg(flags, name, **kwargs)))
99 return acc
100
101
103 flags, name="InDetTRT_Phase_DriftCircleTool", **kwargs):
104 acc = ComponentAccumulator()
105
106 if "TRTDriftFunctionTool" not in kwargs:
107 from InDetConfig.TRT_DriftFunctionToolConfig import (
108 TRT_Phase_DriftFunctionToolCfg)
109 kwargs.setdefault("TRTDriftFunctionTool", acc.popToolsAndMerge(
110 TRT_Phase_DriftFunctionToolCfg(flags)))
111
112 acc.setPrivateTools(acc.popToolsAndMerge(
113 TRT_DriftCircleToolCfg(flags, name, usePhase=True, **kwargs)))
114 return acc
TRT_Phase_DriftCircleToolCfg(flags, name="InDetTRT_Phase_DriftCircleTool", **kwargs)
TRT_NoTime_DriftCircleToolCfg(flags, name="InDetTRT_NoTime_DriftCircleTool", **kwargs)
TRT_DriftCircleToolCfg(flags, name="InDetTRT_DriftCircleTool", usePhase=False, **kwargs)