ATLAS Offline Software
Loading...
Searching...
No Matches
JetJvtAnalysisConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2
3
4# AnaAlgorithm import(s):
5from AnalysisAlgorithmsConfig.ConfigBlock import ConfigBlock
6from AnalysisAlgorithmsConfig.ConfigAccumulator import DataType
7
8
9class JetJvtAnalysisConfig (ConfigBlock) :
10 """the ConfigBlock for the JVT sequence"""
11
12 def __init__ (self) :
13 super (JetJvtAnalysisConfig, self).__init__ ()
14 self.setBlockName('JVT')
15 self.addDependency('OverlapRemoval', required=False)
16 self.addOption ('containerName', '', type=str,
17 noneAction='error',
18 info="the name of the input container.")
19 self.addOption ('postfix', '', type=str,
20 info="a postfix to apply to decorations and algorithm names. Typically "
21 "not needed here.")
22 self.addOption ('enableFJvt', False, type=bool,
23 info="whether to enable forward JVT calculations. The default is False.")
24
25 def instanceName (self) :
26 """Return the instance name for this block"""
27 return self.containerName + self.postfix
28
29 def makeAlgs (self, config) :
30
31 if config.dataType() is DataType.Data: return
32
33 postfix = self.postfix
34 if postfix != '' and postfix[0] != '_' :
35 postfix = '_' + postfix
36
37 # Set up the per-event jet efficiency scale factor calculation algorithm
38 alg = config.createAlgorithm( 'CP::AsgEventScaleFactorAlg', 'JvtEventScaleFactorAlg' )
39 preselection = config.getFullSelection (self.containerName, '')
40 alg.preselection = preselection + '&&no_jvt' if preselection else 'no_jvt'
41 alg.scaleFactorInputDecoration = 'jvt_effSF_%SYS%'
42 alg.scaleFactorOutputDecoration = 'jvt_effSF_%SYS%'
43 alg.particles = config.readName (self.containerName)
44
45 config.addOutputVar('EventInfo', alg.scaleFactorOutputDecoration, 'weight_jvt_effSF' + postfix)
46
47 if self.enableFJvt:
48 alg = config.createAlgorithm( 'CP::AsgEventScaleFactorAlg', 'ForwardJvtEventScaleFactorAlg' )
49 preselection = config.getFullSelection (self.containerName, '')
50 alg.preselection = preselection + '&&no_fjvt' if preselection else 'no_fjvt'
51 alg.scaleFactorInputDecoration = 'fjvt_effSF_%SYS%'
52 alg.scaleFactorOutputDecoration = 'fjvt_effSF_%SYS%'
53 alg.particles = config.readName (self.containerName)
54
55 config.addOutputVar('EventInfo', alg.scaleFactorOutputDecoration, 'weight_fjvt_effSF' + postfix)
56