ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
PhysicsAnalysis
Algorithms
TruthParticleLevelAnalysisAlgorithms
python
ParticleLevelElectronsConfig.py
Go to the documentation of this file.
1
# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2
3
from
AnalysisAlgorithmsConfig.ConfigBlock
import
ConfigBlock
4
5
6
class
ParticleLevelElectronsBlock
(ConfigBlock):
7
"""ConfigBlock for particle-level truth electrons"""
8
9
def
__init__
(self):
10
super(ParticleLevelElectronsBlock, self).
__init__
()
11
self.addOption(
'containerName'
,
'TruthElectrons'
, type=str,
12
info=
'the name of the input truth electrons container.'
)
13
self.addOption(
'selectionName'
,
''
, type=str,
14
info=
'the name of the selection to create. If left empty, '
15
'applies the selection to all truth electrons.'
)
16
self.addOption(
'isolated'
,
True
, type=bool,
17
info=
'select only truth electrons that are isolated.'
)
18
self.addOption(
'notFromTau'
,
True
, type=bool,
19
info=
'select only truth electrons that did not orginate '
20
'from a tau-lepton decay.'
)
21
self.addOption(
'saveUID'
,
False
, type=bool,
22
info=
'save unique ID in output.'
)
23
# Always skip on data
24
self.setOptionValue(
'skipOnData'
,
True
)
25
26
def
instanceName
(self) :
27
"""Return the instance name for this block"""
28
name = self.
containerName
29
if
self.
selectionName
: name = name +
'_'
+ self.
selectionName
30
return
name
31
32
def
makeAlgs
(self, config):
33
config.setSourceName (self.
containerName
, self.
containerName
)
34
35
# decorate the charge so we can save it later
36
alg = config.createAlgorithm(
'CP::ParticleLevelChargeDecoratorAlg'
,
37
'ParticleLevelChargeDecoratorElectrons'
,
38
reentrant=
True
)
39
alg.particles = self.
containerName
40
41
# check for prompt isolation and possible origin from tau decays
42
alg = config.createAlgorithm(
'CP::ParticleLevelIsolationAlg'
,
43
'ParticleLevelIsolationElectrons'
,
44
reentrant=
True
)
45
alg.particles = self.
containerName
46
alg.isolation =
'isIsolated'
+ self.
selectionName
if
self.
isolated
else
'isIsolatedButNotRequired'
+ self.
selectionName
47
alg.notTauOrigin =
'notFromTau'
+ self.
selectionName
if
self.
notFromTau
else
'notFromTauButNotRequired'
+ self.
selectionName
48
alg.checkType =
'IsoElectron'
49
50
if
self.
isolated
:
51
config.addSelection (self.
containerName
, self.
selectionName
, alg.isolation+
',as_char'
)
52
if
self.
notFromTau
:
53
config.addSelection (self.
containerName
, self.
selectionName
, alg.notTauOrigin+
',as_char'
)
54
55
# output branches to be scheduled only once
56
if
ParticleLevelElectronsBlock.get_instance_count() == 1
or
'pt'
not
in
config.getOutputVars(self.
containerName
):
57
outputVars = [
58
[
'pt_dressed'
,
'pt'
,
'float'
],
59
[
'eta_dressed'
,
'eta'
,
'float'
],
60
[
'phi_dressed'
,
'phi'
,
'float'
],
61
[
'e_dressed'
,
'e'
,
'float'
],
62
[
'charge'
,
'charge'
,
'float'
],
63
[
'classifierParticleType'
,
'type'
,
'unsigned'
],
64
[
'classifierParticleOrigin'
,
'origin'
,
'unsigned'
],
65
]
66
if
self.
saveUID
:
67
outputVars += [[
'uid'
,
'uid'
,
'int'
]]
68
for
decoration, branch, auxType
in
outputVars:
69
config.addOutputVar (self.
containerName
, decoration, branch, noSys=
True
, auxType=auxType)
ParticleLevelElectronsConfig.ParticleLevelElectronsBlock
Definition
ParticleLevelElectronsConfig.py:6
ParticleLevelElectronsConfig.ParticleLevelElectronsBlock.__init__
__init__(self)
Definition
ParticleLevelElectronsConfig.py:9
ParticleLevelElectronsConfig.ParticleLevelElectronsBlock.makeAlgs
makeAlgs(self, config)
Definition
ParticleLevelElectronsConfig.py:32
ParticleLevelElectronsConfig.ParticleLevelElectronsBlock.instanceName
instanceName(self)
Definition
ParticleLevelElectronsConfig.py:26
ParticleLevelElectronsConfig.ParticleLevelElectronsBlock.selectionName
name selectionName
Definition
ParticleLevelElectronsConfig.py:29
ParticleLevelElectronsConfig.ParticleLevelElectronsBlock.saveUID
saveUID
Definition
ParticleLevelElectronsConfig.py:66
ParticleLevelElectronsConfig.ParticleLevelElectronsBlock.notFromTau
notFromTau
Definition
ParticleLevelElectronsConfig.py:52
ParticleLevelElectronsConfig.ParticleLevelElectronsBlock.isolated
isolated
Definition
ParticleLevelElectronsConfig.py:50
ParticleLevelElectronsConfig.ParticleLevelElectronsBlock.containerName
containerName
Definition
ParticleLevelElectronsConfig.py:33
Generated on
for ATLAS Offline Software by
1.17.0