33 """Configure the derivation framework driving algorithm (kernel) for SCTVALID"""
34 acc = ComponentAccumulator()
41 SCTVALIDSequenceName=
'SCTVALIDSequence'
42 acc.addSequence(seqAND(SCTVALIDSequenceName))
47 from DerivationFrameworkTools.DerivationFrameworkToolsConfig
import PrescaleToolCfg
49 prescaleTool = acc.getPrimaryAndMerge(PrescaleToolCfg(
50 flags, name=
"SCTxAOD_PrescaleTool", Prescale=flags.InDet.SCTxAODPrescale))
52 skimmingTools += [prescaleTool]
54 SCTVALIDKernelPresel = CompFactory.DerivationFramework.DerivationKernel(
"SCTVALIDKernelPresel",
55 SkimmingTools=skimmingTools)
56 acc.addEventAlgo(SCTVALIDKernelPresel, sequenceName=
"SCTVALIDSequence")
58 from InDetConfig.InDetPrepRawDataToxAODConfig
import InDetSCT_PrepDataToxAODCfg
59 acc.merge(InDetSCT_PrepDataToxAODCfg(flags,name=
"xAOD_SCT_PrepDataToxAOD",
61 WriteRDOinformation=
True,
64 UseTruthInfo=flags.Input.isMC),
65 sequenceName=SCTVALIDSequenceName)
68 from InDetConfig.InDetPrepRawDataToxAODConfig
import InDetSCT_RawDataToxAODCfg
69 acc.merge(InDetSCT_RawDataToxAODCfg(flags, name =
"xAOD_SCT_RawDataToxAOD"),
70 sequenceName=SCTVALIDSequenceName)
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_",
86 SelectionString=MSOSThinningSelectionString)
88 augmentationTools.append(DFTSOS)
90 from DerivationFrameworkInDet.InDetToolsConfig
import EventInfoBSErrDecoratorCfg
91 DFEI = acc.getPrimaryAndMerge(EventInfoBSErrDecoratorCfg(flags, name =
"SCTxAOD_DFEventInfoBSErrDecorator"))
92 augmentationTools.append(DFEI)
95 from IsolationAlgs.IsoToolsConfig
import TrackIsolationToolCfg, CaloIsolationToolCfg
96 TrackIsoToolStd = acc.popToolsAndMerge(TrackIsolationToolCfg(flags))
98 from CaloIdentifier
import SUBCALO
99 CaloIsoTool = acc.popToolsAndMerge(CaloIsolationToolCfg(flags,
100 name =
"CaloIsoTool",
101 EMCaloNums = [SUBCALO.LAREM],
102 HadCaloNums = [SUBCALO.LARHEC, SUBCALO.TILE],
104 UseCaloExtensionCaching =
False,
105 saveOnlyRequestedCorrections =
True))
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)
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"))
128 from DerivationFrameworkInDet.InDetToolsConfig
import UnassociatedHitsDecoratorCfg
129 unassociatedHitsDecorator = acc.getPrimaryAndMerge(UnassociatedHitsDecoratorCfg(flags,
130 name=
'SCTxAOD_unassociatedHitsDecorator',
131 UnassociatedHitsGetter = unassociatedHitsGetterTool))
132 augmentationTools.append(unassociatedHitsDecorator)
134 from DerivationFrameworkJetEtMiss.JetToolConfig
import DistanceInTrainToolCfg
135 distanceInTrainTool = acc.getPrimaryAndMerge(DistanceInTrainToolCfg(flags))
136 augmentationTools.append(distanceInTrainTool)
141 if flags.InDet.SCTxAODZmumuSkimming:
142 from DerivationFrameworkInDet.InDetToolsConfig
import TrackParticleThinningCfg, MuonTrackParticleThinningCfg
145 thinning_expression =
" && ".join(
147 "(InDetTrackParticles.pt > 10*GeV)",
148 "(abs(InDetTrackParticles.eta) < 2.5)",
151 SCTVALID_TagAndProbeTrackParticleThinningTool = CompFactory.DerivationFramework.TagAndProbeTrackParticleThinning(name =
"SCTVALID_TagAndProbeTrackParticleThinningTool",
152 SelectionString = thinning_expression,
155 StreamName = kwargs[
'StreamName'])
156 acc.addPublicTool(SCTVALID_TagAndProbeTrackParticleThinningTool)
157 thinningTools.append(SCTVALID_TagAndProbeTrackParticleThinningTool)
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)
168 SCTVALID_MuonTPThinningTool = acc.getPrimaryAndMerge(MuonTrackParticleThinningCfg(flags,
169 name =
"SCTVALID_MuonTPThinningTool",
170 StreamName = kwargs[
'StreamName'],
172 thinningTools.append(SCTVALID_MuonTPThinningTool)
176 name =
"SCTVALIDTriggerSkimmingTool"))
178 skimmingTools.append(SCTVALIDTriggerSkimmingTool)
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)
189 acc.addEventAlgo(CompFactory.DerivationFramework.DerivationKernel(
191 AugmentationTools=augmentationTools,
192 SkimmingTools=skimmingTools,
193 ThinningTools=thinningTools,
194 OutputLevel=INFO), sequenceName=SCTVALIDSequenceName)
199 """Main config fragment for SCTVALID"""
200 acc = ComponentAccumulator()
204 name =
"SCTVALIDKernel",
205 StreamName =
'StreamDAOD_SCTVALID') )
210 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
211 from xAODMetaDataCnv.InfileMetaDataConfig
import SetupMetaDataForStreamCfg
212 from DerivationFrameworkCore.SlimmingHelper
import SlimmingHelper
214 "SCTVALIDSlimmingHelper",
215 NamesAndTypes = flags.Input.TypedCollections,
221 SmartCollections = []
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",
238 AllVariables += [
"EventInfo",
239 "InDetTrackParticles",
240 "InDetDisappearingTrackParticles",
241 "MuonSpectrometerTrackParticles"]
242 SmartCollections += [
"Muons",
"Electrons",
"AntiKt4EMPFlowJets"]
244 ExtraVariables += [
"PrimaryVertices.sumPt2.x.y.z.vertexType.nTrackParticles"]
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"
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]
261 StaticContent += [
"TileCellContainer#MBTSContainer"]
262 StaticContent += [
"BCM_RDOs#BCM_RDO_Container"]
264 SCTVALIDSlimmingHelper.AppendToDictionary.update(
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"})
273 if flags.InDet.SCTxAODSaveOnlyAssociatedMSOS
is True:
274 AllVariables += [
"SCT_MSOSs"]
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"})
293 AllVariables += [
"TruthEvents",
"TruthParticles",
"TruthVertices"]
296 SCTVALIDSlimmingHelper.IncludeTriggerNavigation =
True
297 SCTVALIDSlimmingHelper.IncludeAdditionalTriggerContent =
True
299 SCTVALIDSlimmingHelper.AllVariables = AllVariables
300 SCTVALIDSlimmingHelper.StaticContent = StaticContent
301 SCTVALIDSlimmingHelper.SmartCollections = SmartCollections
302 SCTVALIDSlimmingHelper.ExtraVariables = ExtraVariables
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]))