ATLAS Offline Software
PhysDESDM_KinkedTrack.py
Go to the documentation of this file.
1 
11 
12 from DerivationFrameworkTools.DerivationFrameworkToolsConf import DerivationFramework__xAODStringSkimmingTool
13 from DerivationFrameworkTools.DerivationFrameworkToolsConf import DerivationFramework__TriggerSkimmingTool
14 from DerivationFrameworkCore.DerivationFrameworkCoreConf import DerivationFramework__DerivationKernel
15 from DerivationFrameworkTools.DerivationFrameworkToolsConf import DerivationFramework__FilterCombinationAND
16 from DerivationFrameworkTools.DerivationFrameworkToolsConf import DerivationFramework__FilterCombinationOR
17 from DerivationFrameworkTools.DerivationFrameworkToolsConf import DerivationFramework__PrescaleTool
18 
19 #import AthenaCommon.SystemOfUnits as Units
20 jetContainer = primRPVLLDESDM.KinkedTrack_containerFlags.jetCollectionName
21 electronContainer = primRPVLLDESDM.KinkedTrack_containerFlags.electronCollectionName
22 muonContainer = primRPVLLDESDM.KinkedTrack_containerFlags.muonCollectionName
23 METContainer = primRPVLLDESDM.KinkedTrack_containerFlags.METCollectionName
24 METTerm = primRPVLLDESDM.KinkedTrack_containerFlags.METTermName
25 egClusterContainer = primRPVLLDESDM.KinkedTrack_containerFlags.egClusterCollectionName
26 msTrackContainer = primRPVLLDESDM.KinkedTrack_containerFlags.msTrackCollectionName
27 
29  selectionString = ''
30  if flags.triggerNames:
31  triggers = list(set(flags.triggerNames))
32  selectionString += '(' + ' || '.join(triggers) + ')'
33 
34  return selectionString
35 
36 
37 
38 
39 #====================================================================
40 # JetMetFilter
41 #====================================================================
42 #KinkTrkJetTriggerFilterTool = DerivationFramework__xAODStringSkimmingTool(name = "KinkTrkJetTriggerFilterTool",
43 # expression = KinkTrkTriggerFilterString(primRPVLLDESDM.KinkedTrack_singleJetMetFilterFlags))
44 KinkTrkJetTriggerFilterTool = DerivationFramework__TriggerSkimmingTool(name = "KinkTrkJetTriggerFilterTool",
45  TriggerListOR = primRPVLLDESDM.KinkedTrack_singleJetMetFilterFlags.triggerNames)
46 #print KinkTrkJetTriggerFilter
47 ToolSvc += KinkTrkJetTriggerFilterTool
48 
49 
50 from LongLivedParticleDPDMaker.LongLivedParticleDPDMakerConf import DerivationFramework__KinkTrkSingleJetMetFilterTool
51 KinkTrkSingleJetMetFilterTool = DerivationFramework__KinkTrkSingleJetMetFilterTool(name = "KinkTrkSingleJetMetFilterTool",
52  LeptonVeto = primRPVLLDESDM.KinkedTrack_singleJetMetFilterFlags.doLeptonVeto,
53  IsolatedTrack = primRPVLLDESDM.KinkedTrack_singleJetMetFilterFlags.requireIsolatedTrack,
54  JetContainerKey = jetContainer,
55  ElectronContainerKey = electronContainer,
56  ElectronIDKey = primRPVLLDESDM.KinkedTrack_singleJetMetFilterFlags.electronIDKey,
57  MuonContainerKey = muonContainer,
58  MuonIDKey = primRPVLLDESDM.KinkedTrack_singleJetMetFilterFlags.muonIDKey,
59  MetContainerKey = METContainer,
60  MetTerm = METTerm,
61  MetCut = primRPVLLDESDM.KinkedTrack_singleJetMetFilterFlags.cutMetMin,
62  JetPtCuts = primRPVLLDESDM.KinkedTrack_singleJetMetFilterFlags.cutsEtMin,
63  JetEtaMax = primRPVLLDESDM.KinkedTrack_singleJetMetFilterFlags.cutEtaMax,
64  JetNumCut = 1,
65  JetMetDphiMin = primRPVLLDESDM.KinkedTrack_singleJetMetFilterFlags.jetMetDphiMin,
66  JetMetPtMin = primRPVLLDESDM.KinkedTrack_singleJetMetFilterFlags.jetMetPtMin,
67  MetHtCut = -1,
68  LeptonPtCut = primRPVLLDESDM.KinkedTrack_singleJetMetFilterFlags.leptonPtMax,
69  LeptonEtaMax = primRPVLLDESDM.KinkedTrack_singleJetMetFilterFlags.leptonEtaMax)
70 
71 print(KinkTrkSingleJetMetFilterTool)
72 ToolSvc += KinkTrkSingleJetMetFilterTool
73 
74 
75 KinkTrkJetFilterTool = DerivationFramework__FilterCombinationAND(name = "KinkTrkJetFilterTool",
76  FilterList=[KinkTrkJetTriggerFilterTool, KinkTrkSingleJetMetFilterTool],
77  OutputLevel=INFO)
78 ToolSvc+= KinkTrkJetFilterTool
79 
80 topSequence += DerivationFramework__DerivationKernel("RPVLL_KinkedTrackJetFilterKernel",
81  SkimmingTools = [KinkTrkJetFilterTool])
82 RPVLLfilterNames.extend(["RPVLL_KinkedTrackJetFilterKernel"])
83 
84 # Multi-jets filter
85 KinkTrkMultiJetFilterTool = DerivationFramework__KinkTrkSingleJetMetFilterTool(name = "KinkTrkMultiJetFilterTool",
86  LeptonVeto = primRPVLLDESDM.KinkedTrack_singleJetMetFilterFlags.doLeptonVeto,
87  IsolatedTrack = False,
88  JetContainerKey = jetContainer,
89  ElectronContainerKey = electronContainer,
90  ElectronIDKey = primRPVLLDESDM.KinkedTrack_singleJetMetFilterFlags.electronIDKey,
91  MuonContainerKey = muonContainer,
92  MuonIDKey = primRPVLLDESDM.KinkedTrack_singleJetMetFilterFlags.muonIDKey,
93  MetContainerKey = METContainer,
94  MetTerm = METTerm,
95  MetCut = primRPVLLDESDM.KinkedTrack_singleJetMetFilterFlags.cutMetMinForMultiJets,
96  JetPtCuts = primRPVLLDESDM.KinkedTrack_singleJetMetFilterFlags.cutsEtMinForMultiJets,
97  JetEtaMax = primRPVLLDESDM.KinkedTrack_singleJetMetFilterFlags.cutEtaMax,
98  JetNumCut = 2,
99  JetMetDphiMin = 0.2,
100  JetMetPtMin = 50.0*Units.GeV,
101  MetHtCut = primRPVLLDESDM.KinkedTrack_singleJetMetFilterFlags.cutMetHt,
102  LeptonPtCut = primRPVLLDESDM.KinkedTrack_singleJetMetFilterFlags.leptonPtMax,
103  LeptonEtaMax = primRPVLLDESDM.KinkedTrack_singleJetMetFilterFlags.leptonEtaMax)
104 
105 print(KinkTrkMultiJetFilterTool)
106 ToolSvc += KinkTrkMultiJetFilterTool
107 
108 
109 KinkTrkTrigMetMultiJetFilterTool = DerivationFramework__FilterCombinationAND(name = "KinkTrkTrigMetMultiJetFilterTool",
110  FilterList=[KinkTrkJetTriggerFilterTool, KinkTrkMultiJetFilterTool],
111  OutputLevel=INFO)
112 ToolSvc+= KinkTrkTrigMetMultiJetFilterTool
113 
114 topSequence += DerivationFramework__DerivationKernel("RPVLL_KinkedTrackMultiJetFilterKernel",
115  SkimmingTools = [KinkTrkTrigMetMultiJetFilterTool])
116 RPVLLfilterNames.extend(["RPVLL_KinkedTrackMultiJetFilterKernel"])
117 
118 # Stublet filter
119 KinkTrkStubletFilterTool = DerivationFramework__KinkTrkSingleJetMetFilterTool(name = "KinkTrkStubletFilterTool",
120  LeptonVeto = primRPVLLDESDM.KinkedTrack_singleJetMetFilterFlags.doLeptonVeto,
121  IsolatedTrack = False,
122  JetContainerKey = jetContainer,
123  ElectronContainerKey = electronContainer,
124  ElectronIDKey = primRPVLLDESDM.KinkedTrack_singleJetMetFilterFlags.electronIDKey,
125  MuonContainerKey = muonContainer,
126  MuonIDKey = primRPVLLDESDM.KinkedTrack_singleJetMetFilterFlags.muonIDKey,
127  MetContainerKey = METContainer,
128  MetTerm = METTerm,
129  MetCut = primRPVLLDESDM.KinkedTrack_singleJetMetFilterFlags.cutMetMinForStublet,
130  JetPtCuts = primRPVLLDESDM.KinkedTrack_singleJetMetFilterFlags.cutsEtMinForStublet,
131  JetEtaMax = primRPVLLDESDM.KinkedTrack_singleJetMetFilterFlags.cutEtaMax,
132  JetNumCut = 1,
133  JetMetDphiMin = primRPVLLDESDM.KinkedTrack_singleJetMetFilterFlags.jetMetDphiMin,
134  JetMetPtMin = primRPVLLDESDM.KinkedTrack_singleJetMetFilterFlags.jetMetPtMin,
135  MetHtCut = -1,
136  LeptonPtCut = primRPVLLDESDM.KinkedTrack_singleJetMetFilterFlags.leptonPtMax,
137  LeptonEtaMax = primRPVLLDESDM.KinkedTrack_singleJetMetFilterFlags.leptonEtaMax)
138 
139 print(KinkTrkStubletFilterTool)
140 ToolSvc += KinkTrkStubletFilterTool
141 
142 KinkTrkStubletPrescaleTool = DerivationFramework__PrescaleTool(name = "KinkTrkStubletPrescaleTool",
143  Prescale = primRPVLLDESDM.KinkedTrack_singleJetMetFilterFlags.preScaleStublet)
144 ToolSvc += KinkTrkStubletPrescaleTool
145 
146 KinkTrkStubletFinalFilterTool = DerivationFramework__FilterCombinationAND(name = "KinkTrkStubletFinalFilterTool",
147  FilterList=[KinkTrkJetTriggerFilterTool, KinkTrkStubletFilterTool, KinkTrkStubletPrescaleTool],
148  OutputLevel=INFO)
149 ToolSvc+= KinkTrkStubletFinalFilterTool
150 
151 topSequence += DerivationFramework__DerivationKernel("RPVLL_KinkedTrackStubletFilterKernel",
152  SkimmingTools = [KinkTrkStubletFinalFilterTool])
153 RPVLLfilterNames.extend(["RPVLL_KinkedTrackStubletFilterKernel"])
154 
155 #====================================================================
156 # Zee/Zmumu filter
157 #====================================================================
158 from LongLivedParticleDPDMaker.LongLivedParticleDPDMakerConf import DerivationFramework__KinkTrkZeeTagTool
159 KinkTrkDiEleMassStr = "KinkTrkDiEleMass"
160 KinkTrkProbeEleEtStr = "KinkTrkProbeEleEt"
161 KinkTrkZeeTagTool = DerivationFramework__KinkTrkZeeTagTool(name = "KinkTrkZeeTagTool",
162  Triggers = primRPVLLDESDM.KinkedTrack_ZeeFilterFlags.triggerNames,
163  TriggerMatchDeltaR = 0.1,
164  RequireTriggerMatch = primRPVLLDESDM.KinkedTrack_ZeeFilterFlags.doTriggerMatch,
165  ElectronContainerKey = electronContainer,
166  ElectronIDKeys = primRPVLLDESDM.KinkedTrack_ZeeFilterFlags.electronIDKeys,
167  ElectronPtMin = primRPVLLDESDM.KinkedTrack_ZeeFilterFlags.electronPtMin,
168  ElectronEtaMax = primRPVLLDESDM.KinkedTrack_ZeeFilterFlags.electronEtaMax,
169  ClusterContainerKey = egClusterContainer,
170  ClusterEtMin = primRPVLLDESDM.KinkedTrack_ZeeFilterFlags.clusterEtMin,
171  ClusterEtaMax = primRPVLLDESDM.KinkedTrack_ZeeFilterFlags.clusterEtaMax,
172  DiEleMassLow = primRPVLLDESDM.KinkedTrack_ZeeFilterFlags.diElectronMassLow,
173  DiEleMassHigh = primRPVLLDESDM.KinkedTrack_ZeeFilterFlags.diElectronMassHigh,
174  DeltaPhiMax = primRPVLLDESDM.KinkedTrack_ZeeFilterFlags.deltaPhiMax,
175  KinkTrkDiEleMassKey = KinkTrkDiEleMassStr,
176  KinkTrkProbeEleEtKey = KinkTrkProbeEleEtStr)
177 
178 print(KinkTrkZeeTagTool)
179 ToolSvc += KinkTrkZeeTagTool
180 
181 from LongLivedParticleDPDMaker.LongLivedParticleDPDMakerConf import DerivationFramework__KinkTrkZmumuTagTool
182 KinkTrkDiMuMassStr = "KinkTrkDiMuMass"
183 KinkTrkProbeMuPtStr = "KinkTrkProbeMuPt"
184 KinkTrkZmumuTagTool = DerivationFramework__KinkTrkZmumuTagTool(name = "KinkTrkZmumuTagTool",
185  Triggers = primRPVLLDESDM.KinkedTrack_ZmumuFilterFlags.triggerNames,
186  TriggerMatchDeltaR = 0.1,
187  RequireTriggerMatch = primRPVLLDESDM.KinkedTrack_ZmumuFilterFlags.doTriggerMatch,
188  MuonContainerKey = muonContainer,
189  MuonIDKeys = primRPVLLDESDM.KinkedTrack_ZmumuFilterFlags.muonIDKeys,
190  MuonPtMin = primRPVLLDESDM.KinkedTrack_ZmumuFilterFlags.muonPtMin,
191  MuonEtaMax = primRPVLLDESDM.KinkedTrack_ZmumuFilterFlags.muonEtaMax,
192  TrackContainerKey = msTrackContainer,
193  TrackPtMin = primRPVLLDESDM.KinkedTrack_ZmumuFilterFlags.trackPtMin,
194  TrackEtaMax = primRPVLLDESDM.KinkedTrack_ZmumuFilterFlags.trackEtaMax,
195  DiMuonMassLow = primRPVLLDESDM.KinkedTrack_ZmumuFilterFlags.diMuonMassLow,
196  DiMuonMassHigh = primRPVLLDESDM.KinkedTrack_ZmumuFilterFlags.diMuonMassHigh,
197  DeltaPhiMax = primRPVLLDESDM.KinkedTrack_ZmumuFilterFlags.deltaPhiMax,
198  KinkTrkDiMuMassKey = KinkTrkDiMuMassStr,
199  KinkTrkProbeMuPtKey = KinkTrkProbeMuPtStr)
200 
201 print(KinkTrkZmumuTagTool)
202 ToolSvc += KinkTrkZmumuTagTool
203 
204 
205 topSequence += DerivationFramework__DerivationKernel( "KinkTrkAugmentationKernel",
206  AugmentationTools = [KinkTrkZeeTagTool, KinkTrkZmumuTagTool])
207 
208 
209 KinkTrkZeeTriggerFilterTool = DerivationFramework__xAODStringSkimmingTool(name = "KinkTrkZeeTriggerFilterTool",
210  expression = KinkTrkTriggerFilterString(primRPVLLDESDM.KinkedTrack_ZeeFilterFlags))
211 #KinkTrkZeeTriggerFilterTool = DerivationFramework__TriggerSkimmingTool(name = "KinkTrkZeeTriggerFilterTool",
212 # TriggerListOR = primRPVLLDESDM.KinkedTrack_ZeeFilterFlags.triggerNames)
213 ToolSvc += KinkTrkZeeTriggerFilterTool
214 
215 KinkTrkZmumuTriggerFilterTool = DerivationFramework__xAODStringSkimmingTool(name = "KinkTrkZmumuTriggerFilterTool",
216  expression = KinkTrkTriggerFilterString(primRPVLLDESDM.KinkedTrack_ZmumuFilterFlags))
217 #KinkTrkZmumuTriggerFilterTool = DerivationFramework__TriggerSkimmingTool(name = "KinkTrkZmumuTriggerFilterTool",
218 # TriggerListOR = primRPVLLDESDM.KinkedTrack_ZmumuFilterFlags.triggerNames)
219 ToolSvc += KinkTrkZmumuTriggerFilterTool
220 
221 
222 
223 KinkTrkZeeLowPtSkimmingTool = DerivationFramework__xAODStringSkimmingTool(name = "KinkTrkZeeLowPtSkimmingTool",
224  expression = 'count(abs(KinkTrkDiEleMass)>0)>=1 && count(KinkTrkProbeEleEt>=%f)==0' % primRPVLLDESDM.KinkedTrack_ZeeFilterFlags.preScaleClusterEtMax)
225 ToolSvc += KinkTrkZeeLowPtSkimmingTool
226 
227 
228 KinkTrkZeeHighPtSkimmingTool = DerivationFramework__xAODStringSkimmingTool(name = "KinkTrkZeeHighPtSkimmingTool",
229  expression = 'count(abs(KinkTrkDiEleMass)>0)>=1 && count(KinkTrkProbeEleEt>=%f)>=1' % primRPVLLDESDM.KinkedTrack_ZeeFilterFlags.preScaleClusterEtMax)
230 ToolSvc += KinkTrkZeeHighPtSkimmingTool
231 
232 
233 KinkTrkZeePrescaleTool = DerivationFramework__PrescaleTool(name = "KinkTrkZeePrescaleTool",
234  Prescale = primRPVLLDESDM.KinkedTrack_ZeeFilterFlags.preScale)
235 ToolSvc += KinkTrkZeePrescaleTool
236 
237 KinkTrkZeeLowPtFilterTool = DerivationFramework__FilterCombinationAND(name = "KinkTrkZeeLowPtFilterTool",
238  FilterList = [KinkTrkZeeLowPtSkimmingTool, KinkTrkZeePrescaleTool])
239 ToolSvc += KinkTrkZeeLowPtFilterTool
240 
241 KinkTrkZeeFilterTool = DerivationFramework__FilterCombinationOR(name = "KinkTrkZeeFilterTool",
242  FilterList = [KinkTrkZeeLowPtFilterTool, KinkTrkZeeHighPtSkimmingTool])
243 ToolSvc += KinkTrkZeeFilterTool
244 
245 KinkTrkZeeFinalFilterTool = DerivationFramework__FilterCombinationAND(name = "KinkTrkZeeFinalFilterTool",
246  FilterList=[KinkTrkZeeTriggerFilterTool, KinkTrkZeeFilterTool],
247  OutputLevel=INFO)
248 ToolSvc+= KinkTrkZeeFinalFilterTool
249 
250 topSequence += DerivationFramework__DerivationKernel("RPVLL_KinkedTrackZeeFilterKernel",
251  SkimmingTools = [KinkTrkZeeFinalFilterTool])
252 RPVLLfilterNames.extend(["RPVLL_KinkedTrackZeeFilterKernel"])
253 
254 
256 KinkTrkZmumuLowPtSkimmingTool = DerivationFramework__xAODStringSkimmingTool(name = "KinkTrkZmumuLowPtSkimmingTool",
257  expression = 'count(abs(KinkTrkDiMuMass)>0)>=1 && count(KinkTrkProbeMuPt>=%f)==0' % primRPVLLDESDM.KinkedTrack_ZmumuFilterFlags.preScaleTrackPtMax)
258 ToolSvc += KinkTrkZmumuLowPtSkimmingTool
259 
260 
261 KinkTrkZmumuHighPtSkimmingTool = DerivationFramework__xAODStringSkimmingTool(name = "KinkTrkZmumuHighPtSkimmingTool",
262  expression = 'count(abs(KinkTrkDiMuMass)>0)>=1 && count(KinkTrkProbeMuPt>=%f)>=1'% primRPVLLDESDM.KinkedTrack_ZmumuFilterFlags.preScaleTrackPtMax)
263 ToolSvc += KinkTrkZmumuHighPtSkimmingTool
264 
265 
266 KinkTrkZmumuPrescaleTool = DerivationFramework__PrescaleTool(name = "KinkTrkZmumuPrescaleTool",
267  Prescale = primRPVLLDESDM.KinkedTrack_ZmumuFilterFlags.preScale)
268 ToolSvc += KinkTrkZmumuPrescaleTool
269 
270 KinkTrkZmumuLowPtFilterTool = DerivationFramework__FilterCombinationAND(name = "KinkTrkZmumuLowPtFilterTool",
271  FilterList = [KinkTrkZmumuLowPtSkimmingTool, KinkTrkZmumuPrescaleTool])
272 ToolSvc += KinkTrkZmumuLowPtFilterTool
273 
274 KinkTrkZmumuFilterTool = DerivationFramework__FilterCombinationOR(name = "KinkTrkZmumuFilterTool",
275  FilterList = [KinkTrkZmumuLowPtFilterTool, KinkTrkZmumuHighPtSkimmingTool])
276 ToolSvc += KinkTrkZmumuFilterTool
277 
278 
279 KinkTrkZmumuFinalFilterTool = DerivationFramework__FilterCombinationAND(name = "KinkTrkZmumuFinalFilterTool",
280  FilterList=[KinkTrkZmumuTriggerFilterTool, KinkTrkZmumuFilterTool],
281  OutputLevel=INFO)
282 ToolSvc+= KinkTrkZmumuFinalFilterTool
283 
284 
285 topSequence += DerivationFramework__DerivationKernel("RPVLL_KinkedTrackZmumuFilterKernel",
286  SkimmingTools = [KinkTrkZmumuFinalFilterTool])
287 RPVLLfilterNames.extend(["RPVLL_KinkedTrackZmumuFilterKernel"])
288 
PhysDESDM_KinkedTrack.KinkTrkTriggerFilterString
def KinkTrkTriggerFilterString(flags)
Definition: PhysDESDM_KinkedTrack.py:28
histSizes.list
def list(name, path='/')
Definition: histSizes.py:38
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:224
TCS::join
std::string join(const std::vector< std::string > &v, const char c=',')
Definition: Trigger/TrigT1/L1Topo/L1TopoCommon/Root/StringUtils.cxx:10
Muon::print
std::string print(const MuPatSegment &)
Definition: MuonTrackSteering.cxx:28