3 from AnalysisAlgorithmsConfig.ConfigBlock
import ConfigBlock
7 """ConfigBlock for particle-level truth photons"""
10 super(ParticleLevelPhotonsBlock, self).
__init__()
11 self.addOption(
'containerName',
'TruthPhotons', type=str,
12 info=
'the name of the input truth photons container')
13 self.addOption(
'selectionName',
'', type=str,
14 info=
'the name of the selection to create. The default is "",'
15 ' which applies the selection to all truth photons.')
16 self.addOption(
'isolated',
True, type=bool,
17 info=
'select only truth photons that are isolated.')
18 self.addOption(
'isolationVariable',
'', type=str,
19 info=
'variable to use in isolation cuts of the form "var/pT < cut".')
20 self.addOption(
'isolationCut', -1, type=float,
21 info=
'threshold to use in isolation cuts of the form "var/pT < cut".')
23 self.setOptionValue(
'skipOnData',
True)
26 config.setSourceName (self.containerName, self.containerName)
29 alg = config.createAlgorithm(
'CP::ParticleLevelPtEtaPhiDecoratorAlg',
'ParticleLevelPtEtaPhiDecoratorPhotons' + self.selectionName)
30 alg.particles = self.containerName
33 alg = config.createAlgorithm(
'CP::ParticleLevelIsolationAlg',
'ParticleLevelIsolationPhotons' + self.selectionName)
34 alg.particles = self.containerName
35 alg.isolation =
'isIsolated' + self.selectionName
if self.isolated
else 'isIsolatedButNotRequired' + self.selectionName
36 alg.notTauOrigin =
'notFromTauButNotRequired' + self.selectionName
37 alg.checkType =
'IsoPhoton'
38 if self.isolationVariable !=
'':
39 alg.isoVar = self.isolationVariable
40 alg.isoCut = self.isolationCut
43 config.addSelection (self.containerName, self.selectionName, alg.isolation+
',as_char')
46 if ParticleLevelPhotonsBlock.get_instance_count() == 1:
52 [
'classifierParticleType',
'type'],
53 [
'classifierParticleOrigin',
'origin'],
55 for decoration, branch
in outputVars:
56 config.addOutputVar (self.containerName, decoration, branch, noSys=
True)