Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
SCTVALID.py
Go to the documentation of this file.
1 
3 
4 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
5 from AthenaConfiguration.ComponentFactory import CompFactory
6 from AthenaConfiguration.Enums import MetadataCategory
7 from AthenaCommon.CFElements import seqAND
8 from AthenaCommon.Constants import INFO
9 
10 def 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 
32 def 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
198 def 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
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
python.OutputStreamConfig.OutputStreamCfg
def OutputStreamCfg(flags, streamName, ItemList=[], MetadataItemList=[], disableEventTag=False, trigNavThinningSvc=None, takeItemsFromInput=False, extendProvenanceRecord=True, AcceptAlgs=[], HelperTools=[])
Definition: OutputStreamConfig.py:12
python.SCTVALID.SCTVALIDTriggerSkimmingToolCfg
def SCTVALIDTriggerSkimmingToolCfg(flags, name, **kwargs)
Definition: SCTVALID.py:10
python.InDetToolsConfig.TrackParticleThinningCfg
def TrackParticleThinningCfg(flags, name, **kwargs)
Definition: InDetToolsConfig.py:458
python.InDetToolsConfig.UnassociatedHitsGetterToolCfg
def UnassociatedHitsGetterToolCfg(flags, name="UnassociatedHitsGetterTool", **kwargs)
Definition: InDetToolsConfig.py:665
python.InDetToolsConfig.UnassociatedHitsDecoratorCfg
def UnassociatedHitsDecoratorCfg(flags, name="UnassociatedHitsDecorator", **kwargs)
Definition: InDetToolsConfig.py:679
python.CFElements.seqAND
def seqAND(name, subs=[])
Definition: CFElements.py:25
python.SCTVALID.SCTVALIDCfg
def SCTVALIDCfg(flags)
Definition: SCTVALID.py:198
Constants
some useful constants -------------------------------------------------—
python.DerivationFrameworkToolsConfig.xAODStringSkimmingToolCfg
def xAODStringSkimmingToolCfg(ConfigFlags, name, **kwargs)
Definition: DerivationFrameworkToolsConfig.py:29
python.JetToolConfig.DistanceInTrainToolCfg
def DistanceInTrainToolCfg(ConfigFlags)
Definition: JetToolConfig.py:13
histSizes.list
def list(name, path='/')
Definition: histSizes.py:38
python.InDetToolsConfig.EventInfoBSErrDecoratorCfg
def EventInfoBSErrDecoratorCfg(flags, name="EventInfoBSErrDecorator", **kwargs)
Definition: InDetToolsConfig.py:658
python.InDetPrepRawDataToxAODConfig.InDetSCT_RawDataToxAODCfg
def InDetSCT_RawDataToxAODCfg(flags, name='InDetSCTRawDataToxAOD', **kwargs)
Definition: InDetPrepRawDataToxAODConfig.py:128
python.InDetToolsConfig.MuonTrackParticleThinningCfg
def MuonTrackParticleThinningCfg(flags, name, **kwargs)
Definition: InDetToolsConfig.py:542
DerivationFramework::TriggerMatchingUtils::sorted
std::vector< typename T::value_type > sorted(T begin, T end)
Helper function to create a sorted vector from an unsorted one.
CxxUtils::set
constexpr std::enable_if_t< is_bitmask_v< E >, E & > set(E &lhs, E rhs)
Convenience function to set bits in a class enum bitmask.
Definition: bitmask.h:232
TCS::join
std::string join(const std::vector< std::string > &v, const char c=',')
Definition: Trigger/TrigT1/L1Topo/L1TopoCommon/Root/StringUtils.cxx:10
IsoToolsConfig.CaloIsolationToolCfg
def CaloIsolationToolCfg(flags, **kwargs)
Definition: IsoToolsConfig.py:25
python.InDetToolsConfig.TrackStateOnSurfaceDecoratorCfg
def TrackStateOnSurfaceDecoratorCfg(flags, name, **kwargs)
Definition: InDetToolsConfig.py:62
python.TrackIsolationDecoratorConfig.TrackIsolationToolCfg
def TrackIsolationToolCfg(ConfigFlags, name="TrackIsolationTool", **kwargs)
Definition: TrackIsolationDecoratorConfig.py:12
python.InDetPrepRawDataToxAODConfig.InDetSCT_PrepDataToxAODCfg
def InDetSCT_PrepDataToxAODCfg(flags, name='InDetSCTPrepDataToxAOD', **kwargs)
Definition: InDetPrepRawDataToxAODConfig.py:116
python.SCTVALID.SCTVALIDKernelCfg
def SCTVALIDKernelCfg(flags, name='SCTVALIDKernel', **kwargs)
Definition: SCTVALID.py:32
python.DerivationFrameworkToolsConfig.PrescaleToolCfg
def PrescaleToolCfg(ConfigFlags, name, **kwargs)
Definition: DerivationFrameworkToolsConfig.py:50
InfileMetaDataConfig.SetupMetaDataForStreamCfg
def SetupMetaDataForStreamCfg(flags, streamName="", AcceptAlgs=None, createMetadata=None, propagateMetadataFromInput=True, *args, **kwargs)
Definition: InfileMetaDataConfig.py:222
SlimmingHelper
Definition: SlimmingHelper.py:1
python.InDetToolsConfig.IsolationTrackDecoratorCfg
def IsolationTrackDecoratorCfg(flags, name, **kwargs)
Definition: InDetToolsConfig.py:447