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

Functions

 EGAM11SkimmingToolCfg (flags)
 EGAM11ZeeMassTool1Cfg (flags)
 EGAM11ZeeMassTool2Cfg (flags)
 EGAM11ZeeMassTool3Cfg (flags)
 EGAM11ZegMassToolCfg (flags)
 EGAM11KernelCfg (flags, name="EGAM11Kernel", **kwargs)
 EGAM11Cfg (flags)

Function Documentation

◆ EGAM11Cfg()

python.EGAM11.EGAM11Cfg ( flags)

Definition at line 514 of file EGAM11.py.

514def EGAM11Cfg(flags):
515 acc = ComponentAccumulator()
516
517 # configure skimming/thinning/augmentation tools
518 acc.merge(
519 EGAM11KernelCfg(
520 flags,
521 name="EGAM11Kernel",
522 StreamName="StreamDAOD_EGAM11",
523 TriggerListsHelper=None,
524 )
525 )
526
527 # configure slimming
528 from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
529 from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
530 from DerivationFrameworkCore.SlimmingHelper import SlimmingHelper
531
532 EGAM11SlimmingHelper = SlimmingHelper(
533 "EGAM11SlimmingHelper",
534 NamesAndTypes=flags.Input.TypedCollections,
535 flags=flags,
536 )
537
538 # ------------------------------------------
539 # containers for which we save all variables
540 # -------------------------------------------
541
542 # baseline
543 EGAM11SlimmingHelper.AllVariables = [
544 "Electrons",
545 "GSFTrackParticles",
546 "egammaClusters",
547 "AntiKt4HIJets",
548 ]
549
550 # on MC we also add:
551 if flags.Input.isMC:
552 EGAM11SlimmingHelper.AllVariables += [
553 "TruthEvents",
554 "TruthParticles",
555 "TruthVertices",
556 "egammaTruthParticles",
557 ]
558
559 # -------------------------------------------
560 # containers that we slim
561 # -------------------------------------------
562
563 # first add variables from smart-slimming
564 # adding only also those for which we add all variables since
565 # the XXXCPContent.py files also bring in some extra variables
566 # for other collections
567 EGAM11SlimmingHelper.SmartCollections = [
568 "Photons",
569 "Muons",
570 "PrimaryVertices",
571 "InDetTrackParticles"
572 ]
573 if flags.Input.isMC:
574 EGAM11SlimmingHelper.SmartCollections += [
575 "AntiKt4TruthJets",
576 "AntiKt4TruthDressedWZJets",
577 ]
578
579 # then add extra variables:
580
581 # muons
582 EGAM11SlimmingHelper.ExtraVariables += [
583 "Muons.ptcone20.ptcone30.ptcone40.etcone20.etcone30.etcone40"
584 ]
585
586 # conversion vertices
587 EGAM11SlimmingHelper.ExtraVariables += [
588 "GSFConversionVertices.x.y.z.px.py.pz.pt1.pt2.etaAtCalo.phiAtCalo",
589 "GSFConversionVertices.trackParticleLinks",
590 ]
591
592 # primary vertices
593 EGAM11SlimmingHelper.ExtraVariables += ["PrimaryVertices.sumPt2"]
594
595 # track jets
596 EGAM11SlimmingHelper.ExtraVariables += [
597 "AntiKt4PV0TrackJets.pt.eta.phi.e.m.constituentLinks"
598 ]
599
600 # photons: detailed shower shape variables
601 EGAM11SlimmingHelper.ExtraVariables += PhotonsCPDetailedContent
602
603 # truth
604 if flags.Input.isMC:
605 EGAM11SlimmingHelper.ExtraVariables += [
606 "MuonTruthParticles.e.px.py.pz.status.pdgId.truthOrigin.truthType"
607 ]
608
609 EGAM11SlimmingHelper.ExtraVariables += [
610 "Photons.truthOrigin.truthType.truthParticleLink"
611 ]
612
613 # Add event info
614 if flags.Derivation.Egamma.doEventInfoSlimming:
615 EGAM11SlimmingHelper.SmartCollections.append("EventInfo")
616 else:
617 EGAM11SlimmingHelper.AllVariables += ["EventInfo"]
618
619 # Add HIEventShape and CaloSums variables for heavy ions
620 EGAM11SlimmingHelper.AllVariables += ["HIEventShape"]
621 EGAM11SlimmingHelper.AllVariables += ["CaloSums"]
622
623 # Full CellContainers not added in HI data (CaloCellContainer#AllCalo and CaloClusterCellLinkContainer#egammaClusters_links)
624
625 EGAM11ItemList = EGAM11SlimmingHelper.GetItemList()
626 acc.merge(
627 OutputStreamCfg(
628 flags,
629 "DAOD_EGAM11",
630 ItemList=EGAM11ItemList,
631 AcceptAlgs=["EGAM11Kernel"],
632 )
633 )
634 acc.merge(
635 SetupMetaDataForStreamCfg(
636 flags,
637 "DAOD_EGAM11",
638 AcceptAlgs=["EGAM11Kernel"],
639 createMetadata=[
640 MetadataCategory.CutFlowMetaData,
641 MetadataCategory.TruthMetaData,
642 ],
643 )
644 )
645
646 return acc

◆ EGAM11KernelCfg()

python.EGAM11.EGAM11KernelCfg ( flags,
name = "EGAM11Kernel",
** kwargs )
Configure the derivation framework driving algorithm (kernel)
for EGAM11

Definition at line 204 of file EGAM11.py.

204def EGAM11KernelCfg(flags, name="EGAM11Kernel", **kwargs):
205 """Configure the derivation framework driving algorithm (kernel)
206 for EGAM11"""
207 acc = ComponentAccumulator()
208
209 # Schedule extra jets collections
210 from JetRecConfig.StandardSmallRJets import AntiKt4PV0Track
211 from JetRecConfig.JetRecConfig import JetRecCfg
212
213 jetList = [AntiKt4PV0Track]
214 for jd in jetList:
215 acc.merge(JetRecCfg(flags, jd))
216
217 # Common augmentations
218 # cannot use PhysCommon sequence because
219 # - no triggers
220 # - no TauJets
221 # so we have to use a modified version here
222 from DerivationFrameworkInDet.InDetCommonConfig import InDetCommonCfg
223 from DerivationFrameworkMuons.MuonsCommonConfig import MuonsCommonCfg
224 from DerivationFrameworkEGamma.EGammaCommonConfig import EGammaCommonCfg
225
226 TrackingFlags = flags.Tracking
227 acc.merge(
228 InDetCommonCfg(
229 flags,
230 DoVertexFinding=TrackingFlags.doVertexFinding,
231 AddPseudoTracks=TrackingFlags.doPseudoTracking,
232 DecoLRTTTVA=False,
233 DoR3LargeD0=flags.Tracking.doLargeD0,
234 StoreSeparateLargeD0Container=TrackingFlags.storeSeparateLargeD0Container,
235 MergeLRT=False,
236 )
237 )
238 acc.merge(MuonsCommonCfg(flags))
239 acc.merge(EGammaCommonCfg(flags))
240
241 # jet cleaning
242 # standard way in PhysCommon is
243 # - calculate tau ID (needed for default jet OR)
244 # - decorate jets with overlap removal
245 # - do event cleaning
246 # but taus are missing in HI derivations so need to do differently
247
248 # NO JVT criteria in HI data (see pp config for details)
249
250 # Decorate if jet passes OR and save decoration DFCommonJets_passOR
251 # Use modified OR that does not check overlaps with tauls
252 from AssociationUtils.AssociationUtilsConfig import OverlapRemovalToolCfg
253
254 outputLabel = "DFCommonJets_passOR_HI"
255 bJetLabel = "" # default
256 tauLabel = "" # workaround for missing taus
257 tauKey = "" # workaround for missing taus
258 orTool = acc.popToolsAndMerge(
259 OverlapRemovalToolCfg(
260 flags, outputLabel=outputLabel, bJetLabel=bJetLabel, doTaus=False
261 )
262 )
263 algOR = CompFactory.OverlapRemovalGenUseAlg(
264 "OverlapRemovalGenUseAlg",
265 OverlapLabel=outputLabel,
266 OverlapRemovalTool=orTool,
267 JetKey = 'AntiKt4HIJets',
268 TauKey=tauKey,
269 TauLabel=tauLabel,
270 BJetLabel=bJetLabel,
271 )
272 acc.addEventAlgo(algOR)
273
274 # EGAM11 augmentations
275 augmentationTools = []
276
277 # ====================================================================
278 # ee and egamma invariant masses
279 # ====================================================================
280 EGAM11ZeeMassTool1 = acc.popToolsAndMerge(EGAM11ZeeMassTool1Cfg(flags))
281 acc.addPublicTool(EGAM11ZeeMassTool1)
282 augmentationTools.append(EGAM11ZeeMassTool1)
283
284 EGAM11ZeeMassTool2 = acc.popToolsAndMerge(EGAM11ZeeMassTool2Cfg(flags))
285 acc.addPublicTool(EGAM11ZeeMassTool2)
286 augmentationTools.append(EGAM11ZeeMassTool2)
287
288 EGAM11ZeeMassTool3 = acc.popToolsAndMerge(EGAM11ZeeMassTool3Cfg(flags))
289 acc.addPublicTool(EGAM11ZeeMassTool3)
290 augmentationTools.append(EGAM11ZeeMassTool3)
291
292 EGAM11ZegMassTool = acc.popToolsAndMerge(EGAM11ZegMassToolCfg(flags))
293 acc.addPublicTool(EGAM11ZegMassTool)
294 augmentationTools.append(EGAM11ZegMassTool)
295
296 # thinning tools
297 thinningTools = []
298 streamName = kwargs["StreamName"]
299
300 # Track thinning
301 if flags.Derivation.Egamma.doTrackThinning:
302 from DerivationFrameworkInDet.InDetToolsConfig import (
303 TrackParticleThinningCfg,
304 MuonTrackParticleThinningCfg,
305 TauTrackParticleThinningCfg,
306 )
307
308 TrackThinningKeepElectronTracks = True
309 TrackThinningKeepPhotonTracks = True
310 TrackThinningKeepAllElectronTracks = True
311 TrackThinningKeepJetTracks = False
312 TrackThinningKeepMuonTracks = False
313 TrackThinningKeepTauTracks = False
314 TrackThinningKeepPVTracks = True
315
316 # Tracks associated with Electrons
317 if TrackThinningKeepElectronTracks:
318 EGAM11ElectronTPThinningTool = (
319 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
320 name="EGAM11ElectronTPThinningTool",
321 StreamName=streamName,
322 SGKey="Electrons",
323 GSFTrackParticlesKey="GSFTrackParticles",
324 InDetTrackParticlesKey="InDetTrackParticles",
325 SelectionString="Electrons.pt > 0*GeV",
326 BestMatchOnly=True,
327 ConeSize=0.3,
328 )
329 )
330 acc.addPublicTool(EGAM11ElectronTPThinningTool)
331 thinningTools.append(EGAM11ElectronTPThinningTool)
332
333 # Tracks associated with Electrons (all tracks, large cone, for track
334 # isolation studies of the selected electrons)
335 if TrackThinningKeepAllElectronTracks:
336 EGAM11ElectronTPThinningTool2 = (
337 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
338 name="EGAM11ElectronTPThinningTool2",
339 StreamName=streamName,
340 SGKey="Electrons",
341 GSFTrackParticlesKey="GSFTrackParticles",
342 InDetTrackParticlesKey="InDetTrackParticles",
343 SelectionString="Electrons.pt > 4*GeV",
344 BestMatchOnly=False,
345 ConeSize=0.6,
346 )
347 )
348 acc.addPublicTool(EGAM11ElectronTPThinningTool2)
349 thinningTools.append(EGAM11ElectronTPThinningTool2)
350
351 # Tracks associated with Photons
352 if TrackThinningKeepPhotonTracks:
353 EGAM11PhotonTPThinningTool = (
354 CompFactory.DerivationFramework.EgammaTrackParticleThinning(
355 name="EGAM11PhotonTPThinningTool",
356 StreamName=streamName,
357 SGKey="Photons",
358 GSFTrackParticlesKey="GSFTrackParticles",
359 InDetTrackParticlesKey="InDetTrackParticles",
360 GSFConversionVerticesKey="GSFConversionVertices",
361 SelectionString="Photons.pt > 0*GeV",
362 BestMatchOnly=True,
363 ConeSize=0.3,
364 )
365 )
366 acc.addPublicTool(EGAM11PhotonTPThinningTool)
367 thinningTools.append(EGAM11PhotonTPThinningTool)
368
369 # Tracks associated with Jets
370 if TrackThinningKeepJetTracks:
371 EGAM11JetTPThinningTool = (
372 CompFactory.DerivationFramework.JetTrackParticleThinning(
373 name="EGAM11JetTPThinningTool",
374 StreamName=streamName,
375 JetKey="AntiKt4EMTopoJets",
376 InDetTrackParticlesKey="InDetTrackParticles",
377 )
378 )
379 acc.addPublicTool(EGAM11JetTPThinningTool)
380 thinningTools.append(EGAM11JetTPThinningTool)
381
382 # Tracks associated with Muons
383 if TrackThinningKeepMuonTracks:
384 EGAM11MuonTPThinningTool = acc.getPrimaryAndMerge(
385 MuonTrackParticleThinningCfg(
386 flags,
387 name="EGAM11MuonTPThinningTool",
388 StreamName=streamName,
389 MuonKey="Muons",
390 InDetTrackParticlesKey="InDetTrackParticles",
391 )
392 )
393 thinningTools.append(EGAM11MuonTPThinningTool)
394
395 # Tracks associated with Taus
396 if TrackThinningKeepTauTracks:
397 EGAM11TauTPThinningTool = acc.getPrimaryAndMerge(
398 TauTrackParticleThinningCfg(
399 flags,
400 name="EGAM11TauTPThinningTool",
401 StreamName=streamName,
402 TauKey="TauJets",
403 ConeSize=0.6,
404 InDetTrackParticlesKey="InDetTrackParticles",
405 DoTauTracksThinning=True,
406 TauTracksKey="TauTracks",
407 )
408 )
409 thinningTools.append(EGAM11TauTPThinningTool)
410
411 # Tracks from primary vertex
412 thinning_expression = " && ".join(
413 [
414 "(InDetTrackParticles.DFCommonTightPrimary)",
415 "(abs(DFCommonInDetTrackZ0AtPV)*sin(InDetTrackParticles.theta)<3*mm)",
416 "(InDetTrackParticles.pt>10*GeV)",
417 ]
418 )
419 if TrackThinningKeepPVTracks:
420 EGAM11TPThinningTool = acc.getPrimaryAndMerge(
421 TrackParticleThinningCfg(
422 flags,
423 name="EGAM11TPThinningTool",
424 StreamName=streamName,
425 SelectionString=thinning_expression,
426 InDetTrackParticlesKey="InDetTrackParticles",
427 )
428 )
429 thinningTools.append(EGAM11TPThinningTool)
430
431 # keep topoclusters around electrons
432 from DerivationFrameworkCalo.DerivationFrameworkCaloConfig import (
433 CaloClusterThinningCfg,
434 )
435
436 EGAM11CCTCThinningTool = acc.getPrimaryAndMerge(
437 CaloClusterThinningCfg(
438 flags,
439 name="EGAM11CCTCThinningTool",
440 StreamName=streamName,
441 SGKey="Electrons",
442 SelectionString="Electrons.pt>4*GeV",
443 TopoClCollectionSGKey="SubtractedCaloCalTopoClusters",
444 ConeSize=0.5,
445 )
446 )
447 thinningTools.append(EGAM11CCTCThinningTool)
448
449 # truth thinning
450 if flags.Input.isMC:
451 # W, Z and Higgs
452 truth_cond_WZH = " && ".join(
453 ["(abs(TruthParticles.pdgId) >= 23)", "(abs(TruthParticles.pdgId) <= 25)"]
454 )
455 # Leptons
456 truth_cond_lep = " && ".join(
457 ["(abs(TruthParticles.pdgId) >= 11)", "(abs(TruthParticles.pdgId) <= 16)"]
458 )
459 # Top quark
460 truth_cond_top = "(abs(TruthParticles.pdgId) == 6)"
461 # Photon
462 truth_cond_gam = " && ".join(
463 ["(abs(TruthParticles.pdgId) == 22)", "(TruthParticles.pt > 1*GeV)"]
464 )
465 # stable particles
466 truth_cond_finalState = "(TruthParticles.isGenStable)"
467 truth_expression = (
468 "( "
469 + truth_cond_WZH
470 + " ) || "
471 + "( "
472 + truth_cond_lep
473 + " ) || "
474 + "( "
475 + truth_cond_top
476 + " ) || "
477 + "( "
478 + truth_cond_gam
479 + " ) || "
480 + "( "
481 + truth_cond_finalState
482 + " )"
483 )
484 print("EGAM11 truth thinning expression: ", truth_expression)
485
486 EGAM11TruthThinningTool = CompFactory.DerivationFramework.GenericTruthThinning(
487 name="EGAM11TruthThinningTool",
488 StreamName=streamName,
489 ParticleSelectionString=truth_expression,
490 PreserveDescendants=False,
491 PreserveGeneratorDescendants=True,
492 PreserveAncestors=True,
493 )
494 acc.addPublicTool(EGAM11TruthThinningTool)
495 thinningTools.append(EGAM11TruthThinningTool)
496
497 # skimming
498 skimmingTool = acc.popToolsAndMerge(EGAM11SkimmingToolCfg(flags))
499 acc.addPublicTool(skimmingTool)
500
501 # setup the kernel
502 acc.addEventAlgo(
503 CompFactory.DerivationFramework.DerivationKernel(
504 name,
505 SkimmingTools=[skimmingTool],
506 AugmentationTools=augmentationTools,
507 ThinningTools=thinningTools,
508 )
509 )
510
511 return acc
512
513
void print(char *figname, TCanvas *c1)

◆ EGAM11SkimmingToolCfg()

python.EGAM11.EGAM11SkimmingToolCfg ( flags)
Configure the EGAM11 skimming tool

Definition at line 21 of file EGAM11.py.

21def EGAM11SkimmingToolCfg(flags):
22 """Configure the EGAM11 skimming tool"""
23 acc = ComponentAccumulator()
24
25 expression = " || ".join(
26 [
27 "(count( EGAM11_DiElectronMass1 > 50.0*GeV ) >= 1)",
28 "(count( EGAM11_DiElectronMass2 > 50.0*GeV ) >= 1)",
29 "(count( EGAM11_DiElectronMass3 > 50.0*GeV ) >= 1)",
30 "(count( EGAM11_ElectronPhotonMass > 50.0*GeV )>=1)",
31 ]
32 )
33 print("EGAM11 skimming expression: ", expression)
34
35 acc.setPrivateTools(
36 CompFactory.DerivationFramework.xAODStringSkimmingTool(
37 name="EGAM11SkimmingTool", expression=expression, TrigDecisionTool=""
38 )
39 )
40
41 return acc
42
43

◆ EGAM11ZeeMassTool1Cfg()

python.EGAM11.EGAM11ZeeMassTool1Cfg ( flags)
Configure the EGAM11 ee invariant mass augmentation tool 1

Definition at line 44 of file EGAM11.py.

44def EGAM11ZeeMassTool1Cfg(flags):
45 """Configure the EGAM11 ee invariant mass augmentation tool 1"""
46 acc = ComponentAccumulator()
47
48 # ====================================================================
49 # 1. di-electron invariant mass for events passing the Z->ee
50 # selection for the e-gamma calibration
51 #
52 # 1 tight e, central, pT>25 GeV
53 # 1 medium e, pT>20 GeV
54 # opposite-sign
55 # mee>50 GeV (cut applied in skimming step later)
56 # ====================================================================
57
58 requirement_tag = " && ".join(
59 ["(Electrons.DFCommonElectronsLHTight)", "(Electrons.pt > 24.5*GeV)"]
60 )
61
62 requirement_probe = " && ".join(
63 ["(Electrons.DFCommonElectronsLHMedium)", "(Electrons.pt > 19.5*GeV)"]
64 )
65
66 acc.setPrivateTools(
67 CompFactory.DerivationFramework.EGInvariantMassTool(
68 name="EGAM11_ZEEMassTool1",
69 Object1Requirements=requirement_tag,
70 Object2Requirements=requirement_probe,
71 StoreGateEntryName="EGAM11_DiElectronMass1",
72 Mass1Hypothesis=0.511 * MeV,
73 Mass2Hypothesis=0.511 * MeV,
74 Container1Name="Electrons",
75 Container2Name="Electrons",
76 CheckCharge=True,
77 DoTransverseMass=False,
78 MinDeltaR=0.0,
79 )
80 )
81
82 return acc
83
84

◆ EGAM11ZeeMassTool2Cfg()

python.EGAM11.EGAM11ZeeMassTool2Cfg ( flags)
Configure the EGAM11 ee invariant mass augmentation tool 2

Definition at line 85 of file EGAM11.py.

85def EGAM11ZeeMassTool2Cfg(flags):
86 """Configure the EGAM11 ee invariant mass augmentation tool 2"""
87 acc = ComponentAccumulator()
88
89 # ====================================================================
90 # 2. di-electron invariant mass for events passing the Z->e selection
91 # for the e-gamma calibration
92 #
93 # 2 medium e, central, pT>20 GeV
94 # opposite-sign
95 # mee>50 GeV (cut applied in skimming step later)
96 # ====================================================================
97
98 requirement = " && ".join(
99 ["(Electrons.DFCommonElectronsLHMedium)", "(Electrons.pt > 19.5*GeV)"]
100 )
101
102 acc.setPrivateTools(
103 CompFactory.DerivationFramework.EGInvariantMassTool(
104 name="EGAM11_ZEEMassTool2",
105 Object1Requirements=requirement,
106 Object2Requirements=requirement,
107 StoreGateEntryName="EGAM11_DiElectronMass2",
108 Mass1Hypothesis=0.511 * MeV,
109 Mass2Hypothesis=0.511 * MeV,
110 Container1Name="Electrons",
111 Container2Name="Electrons",
112 CheckCharge=True,
113 DoTransverseMass=False,
114 MinDeltaR=0.0,
115 )
116 )
117
118 return acc
119
120

◆ EGAM11ZeeMassTool3Cfg()

python.EGAM11.EGAM11ZeeMassTool3Cfg ( flags)
Configure the EGAM11 ee invariant mass augmentation tool 3

Definition at line 121 of file EGAM11.py.

121def EGAM11ZeeMassTool3Cfg(flags):
122 """Configure the EGAM11 ee invariant mass augmentation tool 3"""
123 acc = ComponentAccumulator()
124
125 # ====================================================================
126 # 3. di-electron invariant mass for events passing the Z->ee
127 # selection for the e efficiencies with tag and probe.
128 #
129 # 1 tight e, central, pT>25 GeV
130 # 1 e, central, pT>4 GeV
131 # opposite-sign + same-sign
132 # mee>50 GeV (cut applied in skimming step later)
133 # ====================================================================
134
135 requirement_tag = " && ".join(
136 ["(Electrons.DFCommonElectronsLHMedium)", "(Electrons.pt > 24.5*GeV)"]
137 )
138
139 requirement_probe = "Electrons.pt > 4*GeV"
140
141 acc.setPrivateTools(
142 CompFactory.DerivationFramework.EGInvariantMassTool(
143 name="EGAM11_ZEEMassTool3",
144 Object1Requirements=requirement_tag,
145 Object2Requirements=requirement_probe,
146 StoreGateEntryName="EGAM11_DiElectronMass3",
147 Mass1Hypothesis=0.511 * MeV,
148 Mass2Hypothesis=0.511 * MeV,
149 Container1Name="Electrons",
150 Container2Name="Electrons",
151 CheckCharge=False,
152 DoTransverseMass=False,
153 MinDeltaR=0.0,
154 )
155 )
156
157 return acc
158
159

◆ EGAM11ZegMassToolCfg()

python.EGAM11.EGAM11ZegMassToolCfg ( flags)
Configure the EGAM11 e+photon mass augmentation tool

Definition at line 160 of file EGAM11.py.

160def EGAM11ZegMassToolCfg(flags):
161 """Configure the EGAM11 e+photon mass augmentation tool"""
162 acc = ComponentAccumulator()
163
164 # ====================================================================
165 # 4. Z->eg selection for reco SF (central)
166 # for tag and probe
167 #
168 # 1 tight e, central, pT>25 GeV
169 # note: use medium instead of tight for early data upon electron
170 # group request
171 # 1 gamma, pT>15 GeV, central
172 # opposite sign + same sign
173 # mey>50 GeV (cut applied in skimming step later)
174 # ====================================================================
175
176 requirement_tag = " && ".join(
177 ["(Electrons.DFCommonElectronsLHMedium)", "(Electrons.pt > 24.5*GeV)"]
178 )
179
180 requirement_probe = "DFCommonPhotons_et > 14.5*GeV"
181
182 acc.setPrivateTools(
183 CompFactory.DerivationFramework.EGInvariantMassTool(
184 name="EGAM11_ZEGMassTool",
185 Object1Requirements=requirement_tag,
186 Object2Requirements=requirement_probe,
187 StoreGateEntryName="EGAM11_ElectronPhotonMass",
188 Mass1Hypothesis=0.511 * MeV,
189 Mass2Hypothesis=0.511 * MeV,
190 Container1Name="Electrons",
191 Container2Name="Photons",
192 Pt2BranchName="DFCommonPhotons_et",
193 Eta2BranchName="DFCommonPhotons_eta",
194 Phi2BranchName="DFCommonPhotons_phi",
195 CheckCharge=False,
196 DoTransverseMass=False,
197 MinDeltaR=0.0,
198 )
199 )
200 return acc
201
202
203# Main algorithm config