ATLAS Offline Software
Loading...
Searching...
No Matches
python.SCTVALID Namespace Reference

Functions

 SCTVALIDTriggerSkimmingToolCfg (flags, name, **kwargs)
 SCTVALIDKernelCfg (flags, name='SCTVALIDKernel', **kwargs)
 SCTVALIDCfg (flags)

Function Documentation

◆ SCTVALIDCfg()

python.SCTVALID.SCTVALIDCfg ( flags)
Main config fragment for SCTVALID

Definition at line 198 of file SCTVALID.py.

198def SCTVALIDCfg(flags):
199 """Main config fragment for SCTVALID"""
200 acc = ComponentAccumulator()
201
202 # Main algorithm (kernel)
203 acc.merge(SCTVALIDKernelCfg(flags,
204 name = "SCTVALIDKernel",
205 StreamName = 'StreamDAOD_SCTVALID') )
206
207 # =============================
208 # Define contents of the format
209 # =============================
210 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
211 from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
212 from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper
213 SCTVALIDSlimmingHelper = SlimmingHelper(
214 "SCTVALIDSlimmingHelper",
215 NamesAndTypes = flags.Input.TypedCollections,
216 flags = flags
217 )
218
219 AllVariables = []
220 StaticContent = []
221 SmartCollections = []
222 ExtraVariables = []
223
224 SCTVALIDSlimmingHelper.AppendToDictionary.update({
225 "EventInfo": "xAOD::EventInfo", "EventInfoAux": "xAOD::EventAuxInfo",
226 "Muons": "xAOD::MuonContainer", "MuonsAux": "xAOD::MuonAuxContainer",
227 "Electrons": "xAOD::ElectronContainer", "ElectronsAux": "xAOD::ElectronAuxContainer",
228 "PrimaryVertices": "xAOD::VertexContainer", "PrimaryVerticesAux": "xAOD::VertexAuxContainer",
229 "GSFTrackParticles": "xAOD::TrackParticleContainer",
230 "GSFTrackParticlesAux": "xAOD::TrackParticleAuxContainer",
231 "InDetDisappearingTrackParticles": "xAOD::TrackParticleContainer",
232 "InDetDisappearingTrackParticlesAux": "xAOD::TrackParticleAuxContainer",
233 "MuonSpectrometerTrackParticles": "xAOD::TrackParticleContainer",
234 "MuonSpectrometerTrackParticlesAux": "xAOD::TrackParticleAuxContainer",
235 "AntiKt4EMPFlowJets": "xAOD::JetContainer", "AntiKt4EMPFlowJetsAux": "xAOD::JetAuxContainer",
236 })
237
238 AllVariables += ["EventInfo",
239 "InDetTrackParticles",
240 "InDetDisappearingTrackParticles",
241 "MuonSpectrometerTrackParticles"]
242 SmartCollections += ["Muons", "Electrons", "AntiKt4EMPFlowJets"]
243
244 ExtraVariables += ["PrimaryVertices.sumPt2.x.y.z.vertexType.nTrackParticles"]
245
246 excludedInDetTrackParticlesAuxData = ".-clusterAssociation.-trackParameterCovarianceMatrices.-parameterX.-parameterY.-parameterZ.-parameterPX.-parameterPY.-parameterPZ.-parameterPosition"
247 excludedGSFTrackParticlesAuxData = ".-clusterAssociation.-trackParameterCovarianceMatrices.-parameterX.-parameterY.-parameterZ.-parameterPX.-parameterPY.-parameterPZ.-parameterPosition"
248 excludedMuonSpectrometerTrackParticlesAuxData = ".-clusterAssociation.-trackParameterCovarianceMatrices.-parameterX.-parameterY.-parameterZ.-parameterPX.-parameterPY.-parameterPZ.-parameterPosition.-btagIp_d0.-btagIp_d0Uncertainty.-btagIp_z0SinTheta.-btagIp_z0SinThetaUncertainty.-eProbabilityNN.-btagIp_trackMomentum.-btagIp_trackDisplacement.-TRTdEdxUsedHits.-TRTdEdx.-TTVA_AMVFVertices_forReco.-TTVA_AMVFWeights_forReco.-JetFilter_TrackCompatibility_antikt4emtopo.-btagIp_invalidIp.-JetFilter_TrackCompatibility_antikt4empflow.-nBC_meas.-AssoClustersUFO"
249
250 StaticContent = []
251 StaticContent += ["xAOD::TrackParticleContainer#InDetTrackParticles"]
252 StaticContent += ["xAOD::TrackParticleAuxContainer#InDetTrackParticlesAux" + excludedInDetTrackParticlesAuxData]
253 StaticContent += ["xAOD::TrackParticleContainer#InDetDisappearingTrackParticles"]
254 StaticContent += ["xAOD::TrackParticleAuxContainer#InDetDisappearingTrackParticlesAux" + excludedInDetTrackParticlesAuxData]
255 StaticContent += ["xAOD::TrackParticleContainer#MuonSpectrometerTrackParticles"]
256 StaticContent += ["xAOD::TrackParticleAuxContainer#MuonSpectrometerTrackParticlesAux" + excludedMuonSpectrometerTrackParticlesAuxData]
257 StaticContent += ["xAOD::TrackParticleContainer#GSFTrackParticles"]
258 StaticContent += ["xAOD::TrackParticleAuxContainer#GSFTrackParticlesAux" + excludedGSFTrackParticlesAuxData]
259
260
261 StaticContent += ["TileCellContainer#MBTSContainer"]
262 StaticContent += ["BCM_RDOs#BCM_RDO_Container"]
263
264 SCTVALIDSlimmingHelper.AppendToDictionary.update(
265 {
266 "SCT_MSOSs": "xAOD::TrackStateValidationContainer",
267 "SCT_MSOSsAux": "xAOD::TrackStateValidationAuxContainer",
268 "SCT_Clusters": "xAOD::TrackMeasurementValidationContainer",
269 "SCT_ClustersAux": "xAOD::TrackMeasurementValidationAuxContainer",
270 "SCT_RawHits": "xAOD::SCTRawHitValidationContainer",
271 "SCT_RawHitsAux": "xAOD::SCTRawHitValidationAuxContainer"})
272
273 if flags.InDet.SCTxAODSaveOnlyAssociatedMSOS is True:
274 AllVariables += ["SCT_MSOSs"]
275 else:
276 AllVariables += [
277 "SCT_MSOSs",
278 "SCT_Clusters",
279 "SCT_RawHits",
280 "SCT_RawHitsAux"]
281
282
283 if flags.Input.isMC:
284
285 SCTVALIDSlimmingHelper.AppendToDictionary.update({
286 "TruthEvents": "xAOD::TruthEventContainer",
287 "TruthEventsAux": "xAOD::TruthEventAuxContainer",
288 "TruthParticles": "xAOD::TruthParticleContainer",
289 "TruthParticlesAux": "xAOD::TruthParticleAuxContainer",
290 "TruthVertices": "xAOD::TruthVertexContainer",
291 "TruthVerticesAux": "xAOD::TruthVertexAuxContainer"})
292
293 AllVariables += ["TruthEvents", "TruthParticles", "TruthVertices"]
294
295 # Trigger info is actually stored only when running on data...
296 SCTVALIDSlimmingHelper.IncludeTriggerNavigation = True
297 SCTVALIDSlimmingHelper.IncludeAdditionalTriggerContent = True
298
299 SCTVALIDSlimmingHelper.AllVariables = AllVariables
300 SCTVALIDSlimmingHelper.StaticContent = StaticContent
301 SCTVALIDSlimmingHelper.SmartCollections = SmartCollections
302 SCTVALIDSlimmingHelper.ExtraVariables = ExtraVariables
303
304 # Output stream
305 SCTVALIDItemList = SCTVALIDSlimmingHelper.GetItemList()
306 acc.merge(OutputStreamCfg(flags, "DAOD_SCTVALID",
307 ItemList=SCTVALIDItemList, AcceptAlgs=["SCTVALIDKernel"]))
308 acc.merge(SetupMetaDataForStreamCfg(
309 flags, "DAOD_SCTVALID",
310 AcceptAlgs=["SCTVALIDKernel"],
311 createMetadata=[MetadataCategory.CutFlowMetaData,
312 MetadataCategory.TriggerMenuMetaData]))
313
314 return acc

◆ SCTVALIDKernelCfg()

python.SCTVALID.SCTVALIDKernelCfg ( flags,
name = 'SCTVALIDKernel',
** kwargs )
Configure the derivation framework driving algorithm (kernel) for SCTVALID

Definition at line 32 of file SCTVALID.py.

32def SCTVALIDKernelCfg(flags, name='SCTVALIDKernel', **kwargs):
33 """Configure the derivation framework driving algorithm (kernel) for SCTVALID"""
34 acc = ComponentAccumulator()
35
36
39 skimmingTools = []
40
41 SCTVALIDSequenceName='SCTVALIDSequence'
42 acc.addSequence(seqAND(SCTVALIDSequenceName))
43
44 # Applying prescales
45 # https://twiki.cern.ch/twiki/bin/view/AtlasProtected/DerivationFramework#Applying_prescales
46
47 from DerivationFrameworkTools.DerivationFrameworkToolsConfig import PrescaleToolCfg
48
49 prescaleTool = acc.getPrimaryAndMerge(PrescaleToolCfg(
50 flags, name="SCTxAOD_PrescaleTool", Prescale=flags.InDet.SCTxAODPrescale))
51
52 skimmingTools += [prescaleTool]
53
54 SCTVALIDKernelPresel = CompFactory.DerivationFramework.DerivationKernel("SCTVALIDKernelPresel",
55 SkimmingTools=skimmingTools)
56 acc.addEventAlgo(SCTVALIDKernelPresel, sequenceName="SCTVALIDSequence")
57
58 from InDetConfig.InDetPrepRawDataToxAODConfig import InDetSCT_PrepDataToxAODCfg
59 acc.merge(InDetSCT_PrepDataToxAODCfg(flags,name="xAOD_SCT_PrepDataToxAOD",
60 OutputLevel=INFO,
61 WriteRDOinformation=True, # TO CHECK
62 WriteSiHits=False,
63 WriteSDOs=False,
64 UseTruthInfo=flags.Input.isMC),
65 sequenceName=SCTVALIDSequenceName)
66
67
68 from InDetConfig.InDetPrepRawDataToxAODConfig import InDetSCT_RawDataToxAODCfg
69 acc.merge(InDetSCT_RawDataToxAODCfg(flags, name = "xAOD_SCT_RawDataToxAOD"),
70 sequenceName=SCTVALIDSequenceName)
71
72 # Add the TSOS augmentation tool to the derivation framework
73 augmentationTools=[]
74
75 if flags.Reco.EnableTracking is True:
76 MSOSThinningSelectionString = ""
77 if flags.InDet.SCTxAODZmumuSkimming:
78 MSOSThinningSelectionString = "InDetTrackParticles.pt>10*GeV"
79 from DerivationFrameworkInDet.InDetToolsConfig import TrackStateOnSurfaceDecoratorCfg
80 DFTSOS = acc.getPrimaryAndMerge(TrackStateOnSurfaceDecoratorCfg(flags, name="SCTVALID_DFTrackStateOnSurfaceDecorator",
81 DecorationPrefix = "SCTVALID_",
82 StoreTRT=True,
83 StoreSCT=True,
84 StorePixel=True,
85 PRDtoTrackMap="",
86 SelectionString=MSOSThinningSelectionString)
87 )
88 augmentationTools.append(DFTSOS)
89
90 from DerivationFrameworkInDet.InDetToolsConfig import EventInfoBSErrDecoratorCfg
91 DFEI = acc.getPrimaryAndMerge(EventInfoBSErrDecoratorCfg(flags, name = "SCTxAOD_DFEventInfoBSErrDecorator"))
92 augmentationTools.append(DFEI)
93
94 # track isolation
95 from IsolationAlgs.IsoToolsConfig import TrackIsolationToolCfg, CaloIsolationToolCfg
96 TrackIsoToolStd = acc.popToolsAndMerge(TrackIsolationToolCfg(flags))
97
98 from CaloIdentifier import SUBCALO
99 CaloIsoTool = acc.popToolsAndMerge(CaloIsolationToolCfg(flags,
100 name = "CaloIsoTool",
101 EMCaloNums = [SUBCALO.LAREM],
102 HadCaloNums = [SUBCALO.LARHEC, SUBCALO.TILE],
103 UseEMScale = True,
104 UseCaloExtensionCaching = False,
105 saveOnlyRequestedCorrections = True))
106
107 import ROOT
108 isoPar = ROOT.xAOD.Iso.IsolationType
109 from DerivationFrameworkInDet.InDetToolsConfig import IsolationTrackDecoratorCfg
110 IsolationTrackDecoratorTool = acc.getPrimaryAndMerge(IsolationTrackDecoratorCfg(flags,
111 name = "SCTVALID_IsolationTrackDecorator",
112 TrackIsolationTool = TrackIsoToolStd,
113 CaloIsolationTool = CaloIsoTool,
114 TargetContainer = "InDetTrackParticles",
115 SelectionString = "InDetTrackParticles.pt>10*GeV",
116 iso = [isoPar.ptcone40, isoPar.ptcone30, isoPar.ptcone20],
117 isoSuffix = ["ptcone40", "ptcone30", "ptcone20"],
118 Prefix = "SCTVALID_"))
119 augmentationTools.append(IsolationTrackDecoratorTool)
120
121 from DerivationFrameworkInDet.InDetToolsConfig import UnassociatedHitsGetterToolCfg
122 unassociatedHitsGetterTool = acc.popToolsAndMerge(UnassociatedHitsGetterToolCfg(flags, name="SCTVALID_UnassociatedHitsGetterTool",
123 TrackCollection = "CombinedInDetTracks",
124 PixelClusters = "PixelClusters",
125 SCTClusterContainer = "SCT_Clusters",
126 TRTDriftCircleContainer = "TRT_DriftCircles"))
127
128 from DerivationFrameworkInDet.InDetToolsConfig import UnassociatedHitsDecoratorCfg
129 unassociatedHitsDecorator = acc.getPrimaryAndMerge(UnassociatedHitsDecoratorCfg(flags,
130 name='SCTxAOD_unassociatedHitsDecorator',
131 UnassociatedHitsGetter = unassociatedHitsGetterTool))
132 augmentationTools.append(unassociatedHitsDecorator)
133
134 from DerivationFrameworkJetEtMiss.JetToolConfig import DistanceInTrainToolCfg
135 distanceInTrainTool = acc.getPrimaryAndMerge(DistanceInTrainToolCfg(flags))
136 augmentationTools.append(distanceInTrainTool)
137
138 # thinning tools
139 thinningTools=[]
140
141 if flags.InDet.SCTxAODZmumuSkimming:
142 from DerivationFrameworkInDet.InDetToolsConfig import TrackParticleThinningCfg, MuonTrackParticleThinningCfg
143
144 # Tag and probe track thinning
145 thinning_expression = " && ".join(
146 [
147 "(InDetTrackParticles.pt > 10*GeV)",
148 "(abs(InDetTrackParticles.eta) < 2.5)",
149 ]
150 )
151 SCTVALID_TagAndProbeTrackParticleThinningTool = CompFactory.DerivationFramework.TagAndProbeTrackParticleThinning(name = "SCTVALID_TagAndProbeTrackParticleThinningTool",
152 SelectionString = thinning_expression,
153 d0SignifCut = 5.0,
154 z0Cut = 10.0,
155 StreamName = kwargs['StreamName'])
156 acc.addPublicTool(SCTVALID_TagAndProbeTrackParticleThinningTool)
157 thinningTools.append(SCTVALID_TagAndProbeTrackParticleThinningTool)
158
159 # Pixel tracklets need to have greater than 5 GeV of pT
160 SCTVALID_DTTrackParticleThinningTool = acc.getPrimaryAndMerge(TrackParticleThinningCfg(flags,
161 name = "SCTVALID_DTTrackParticleThinningTool",
162 StreamName = kwargs['StreamName'],
163 SelectionString = "InDetDisappearingTrackParticles.pt>5*GeV",
164 InDetTrackParticlesKey = "InDetDisappearingTrackParticles"))
165 thinningTools.append(SCTVALID_DTTrackParticleThinningTool)
166
167 # Include inner detector tracks associated with muons
168 SCTVALID_MuonTPThinningTool = acc.getPrimaryAndMerge(MuonTrackParticleThinningCfg(flags,
169 name = "SCTVALID_MuonTPThinningTool",
170 StreamName = kwargs['StreamName'],
171 MuonKey = "Muons"))
172 thinningTools.append(SCTVALID_MuonTPThinningTool)
173
174 # Trigger skimming
175 SCTVALIDTriggerSkimmingTool = acc.getPrimaryAndMerge(SCTVALIDTriggerSkimmingToolCfg(flags,
176 name = "SCTVALIDTriggerSkimmingTool"))
177
178 skimmingTools.append(SCTVALIDTriggerSkimmingTool)
179
180 # at least one good quality muon
181 muonRequirements = '( Muons.pt > 20*GeV ) && ( Muons.ptvarcone30 / Muons.pt < 0.15 ) && ( Muons.topoetcone20 / Muons.pt < 0.3 )'
182 muonExpression = '( count('+muonRequirements+') >= 1 )'
183 from DerivationFrameworkTools.DerivationFrameworkToolsConfig import xAODStringSkimmingToolCfg
184 SCTVALIDSkimmingTool = acc.getPrimaryAndMerge(xAODStringSkimmingToolCfg(flags,
185 name = "SCTVALIDSkimmingTool",
186 expression = muonExpression))
187 skimmingTools.append(SCTVALIDSkimmingTool)
188
189 acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel(
190 name,
191 AugmentationTools=augmentationTools,
192 SkimmingTools=skimmingTools,
193 ThinningTools=thinningTools,
194 OutputLevel=INFO), sequenceName=SCTVALIDSequenceName)
195 return acc
196
197# Main config

◆ SCTVALIDTriggerSkimmingToolCfg()

python.SCTVALID.SCTVALIDTriggerSkimmingToolCfg ( flags,
name,
** kwargs )

Definition at line 10 of file SCTVALID.py.

10def SCTVALIDTriggerSkimmingToolCfg(flags, name, **kwargs):
11
12 from TriggerMenuMT.TriggerAPI.TriggerAPI import TriggerAPI
13 from TriggerMenuMT.TriggerAPI.TriggerEnums import TriggerPeriod, TriggerType
14
15 # This is not all periods! Run 2 and current triggers only
16 allperiods = TriggerPeriod.y2015 | TriggerPeriod.y2016 | TriggerPeriod.y2017 | TriggerPeriod.y2018 | TriggerPeriod.future2e34
17 TriggerAPI.setConfigFlags(flags)
18 triggers = TriggerAPI.getLowestUnprescaledAnyPeriod(allperiods, triggerType=TriggerType.mu, livefraction=0.8)
19
20 #remove duplicates
21 triggers = sorted(list(set(triggers)))
22
23 acc = ComponentAccumulator()
24 TriggerSkimmingTool = CompFactory.DerivationFramework.TriggerSkimmingTool
25 acc.addPublicTool(TriggerSkimmingTool(name,
26 TriggerListAND = [],
27 TriggerListOR = triggers,
28 **kwargs),
29 primary = True)
30 return acc
31
STL class.