ATLAS Offline Software
JetJvtEfficiency.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
9 
13 #include "TFile.h"
14 #include "xAODJet/JetContainer.h"
15 #include <memory>
16 
17 
18 namespace CP {
19 
20 static const SG::AuxElement::Decorator<char> isPUDec("isJvtPU");
21 static const SG::AuxElement::ConstAccessor<float> acc_jetTiming("Timing");
22 
23 JetJvtEfficiency::JetJvtEfficiency( const std::string& name): asg::AsgTool( name ),
24  m_appliedSystEnum(NONE),
25  m_NNJvtTool_handle("", this),
26  m_jvtSelTool("", this),
27  m_jvtEffTool("", this),
28  m_h_JvtHist(nullptr),
29  m_h_EffHist(nullptr),
30  m_passJvtDecName(""),
31  m_useMuBinsSF(false),
32  m_useDummySFs(false),
33  m_jvtCut(0),
34  m_jvtCutBorder(0),
35  m_jetEtaAcc(nullptr),
36  m_passORAcc(nullptr),
37  m_sfDec(nullptr),
38  m_isHSDec(nullptr),
39  m_isHSAcc(nullptr)
40  {
42  declareProperty( "NNJvtTool", m_NNJvtTool_handle, "NN Jvt tool" );
43  declareProperty( "WorkingPoint", m_wp = "Default" );
44  declareProperty( "SFFile", m_file = "" );
45  declareProperty( "JetContainerName", m_jetContainerName = "AntiKt4EMPFlowJets" );
46  declareProperty( "ScaleFactorDecorationName", m_sf_decoration_name = "" );
47  declareProperty( "OverlapDecorator", m_ORdec = "" );
48  declareProperty( "JetEtaName", m_jetEtaName = "DetectorEta" );
49  declareProperty( "MaxPtForJvt", m_maxPtForJvt = 60e3 );
50  declareProperty( "DoTruthReq", m_doTruthRequirement = true );
51  declareProperty( "TruthLabel", m_isHS_decoration_name = "isJvtHS" );
52  declareProperty( "TruthJetContainerName", m_truthJetContName = "AntiKt4TruthDressedWZJets" );
53  // Allow to configure NNJvt Tool directly instead via WP property
54  declareProperty( "NNJvtParamFile", m_NNJvtParamFile= "" );
55  declareProperty( "NNJvtCutFile", m_NNJvtCutFile= "" );
56  declareProperty( "SuppressOutputDependence", m_suppressOutputDependence = true );
57  // Legacy properties, kept for backwards compatibility
58  declareProperty( "JetJvtMomentName", m_jetJvtMomentName = "Jvt" );
59 
60 }
61 
63 
64  // Check if specified tagger is defined (Athena/Gaudi doesn't allow enums as properties so we make the conversion manually)
65  m_taggingAlg = static_cast<CP::JvtTagger>(m_tagger);
67  ATH_MSG_ERROR("Invalid Jvt tagger selected: " << m_tagger << "! Choose between CP::JvtTagger::NNJvt, CP::JvtTagger::fJvt and CP::JvtTagger::Jvt (deprecated).");
68  return StatusCode::FAILURE;
69  }
70 
71  // NN Jvt has been developed and tested only on EMPflow jets so far and R22 calibrations are only provided for that jet collection
72  if (m_jetContainerName != "AntiKt4EMPFlowJets") {
73  ATH_MSG_WARNING("Only AntiKt4EMPFlowJets are supported, use other jet collections at your own risk.");
74  }
75 
76  ATH_CHECK(m_passJvtKey.initialize());
77  #ifndef XAOD_STANDALONE
80  }
81  #endif
82 
83  asg::AsgToolConfig selToolCfg;
84  ATH_CHECK(selToolCfg.setProperty("MaxPtForJvt", m_maxPtForJvt));
85  if (m_wp != "Default")
86  ATH_CHECK(selToolCfg.setProperty("WorkingPoint", m_wp));
87  ATH_CHECK(selToolCfg.setProperty("OutputLevel", msg().level()));
88 
89  asg::AsgToolConfig effToolCfg;
90  ATH_CHECK(effToolCfg.setProperty("MaxPtForJvt", m_maxPtForJvt));
91  if (m_wp != "Default")
92  ATH_CHECK(effToolCfg.setProperty("WorkingPoint", m_wp));
93  // Setting DummySFs.root should be replaced by an empty string now
94  if (!m_file.empty() && m_file != "DummySFs.root") {
95  // This is annoying but the tool used to allow you to set a nonsensical SF file and it would
96  // just ignore it
97  if (m_taggingAlg == JvtTagger::NNJvt && m_file.find("NNJvtSFFile") == std::string::npos)
98  ATH_MSG_WARNING("Supplied SF file " << m_file << " doesn't seem to contain SFs for NNJvt, falling back to dummy SFs ...");
99  else
100  ATH_CHECK(effToolCfg.setProperty("SFFile", m_file));
101  }
102  ATH_CHECK(effToolCfg.setProperty("DoTruthReq", m_doTruthRequirement));
103  ATH_CHECK(effToolCfg.setProperty("TruthHSLabel", m_isHS_decoration_name));
104  ATH_CHECK(effToolCfg.setProperty("OutputLevel", msg().level()));
105 
106  // Configure for NNJvt mode
108 
109  ATH_MSG_INFO("Configuring JetJvtEfficiency tool for NNJvt algorithm.");
110  selToolCfg.setTypeAndName("CP::NNJvtSelectionTool/JvtSelTool");
111  ATH_CHECK(selToolCfg.setProperty("JvtMomentName", "NNJvt"));
112  effToolCfg.setTypeAndName("CP::NNJvtEfficiencyTool/JvtEffTool");
113 
114 
115  // select cut file according to WP
116  if (m_wp == "Default") { m_wp = "FixedEffPt"; }
117  if (m_NNJvtCutFile.empty()) {
118  if (m_wp == "FixedEffPt") {
119  m_NNJvtCutFile = "NNJVT.Cuts.FixedEffPt.Offline.Nonprompt_All_MaxW.json";
120  }
121  else if (m_wp == "TightFwd") {
122  m_NNJvtCutFile = "NNJVT.Cuts.TightFwd.Offline.Nonprompt_All_MaxWeight.json";
123  }
124  else {
125  ATH_MSG_ERROR("Unkown NNJvt WP " << m_wp << ", choose between FixedEffPt (Default) and TightFwd.");
126  return StatusCode::FAILURE;
127  }
128  }
129 
130  // set a default SF decoration name if not explicitly specified
131  if (m_sf_decoration_name.empty()){
132  m_sf_decoration_name = "NNJvtSF";
133  }
134 
135  if (m_NNJvtParamFile.empty()) {
136  m_NNJvtParamFile = "NNJVT.Network.graph.Offline.Nonprompt_All_MaxWeight.json";
137  }
138 
139  // setup the NNJvt tool for recalculating NNJvt scores
140  if (m_NNJvtTool_handle.empty()) {
141  ATH_MSG_INFO( "NNJvtTool is empty! Initializing default tool ");
142  asg::AsgToolConfig config_NNjvt ("JetPileupTag::JetVertexNNTagger/NNJvt");
143  ATH_CHECK(config_NNjvt.setProperty("JetContainer", m_jetContainerName+"_NNJvtCopy"));
144  ATH_CHECK(config_NNjvt.setProperty("NNParamFile", m_NNJvtParamFile));
145  ATH_CHECK(config_NNjvt.setProperty("NNCutFile", m_NNJvtCutFile));
146  ATH_CHECK(config_NNjvt.setProperty("SuppressInputDependence", true)); // otherwise decorations can't be accessed properly
147  ATH_CHECK(config_NNjvt.setProperty("SuppressOutputDependence", m_suppressOutputDependence));
149  }
150 
151  ATH_CHECK(m_NNJvtTool_handle.retrieve());
152 
153  // NNJvt tool will decorate decision on jets that we can retrieve
154  m_passJvtDecName = "NNJvtPass";
155  }
156  // configure for fJvt mode
157  else if (m_taggingAlg == JvtTagger::fJvt){
158 
159  ATH_MSG_INFO("Configuring JetJvtEfficiency tool for fJvt algorithm.");
160  selToolCfg.setTypeAndName("CP::FJvtSelectionTool/JvtSelTool");
161  ATH_CHECK(selToolCfg.setProperty("JvtMomentName", "DFCommonJets_fJvt"));
162  effToolCfg.setTypeAndName("CP::FJvtEfficiencyTool/JvtEffTool");
163  // set a default SF decoration name if not explicitly specified
164  if (m_sf_decoration_name.empty()){
165  m_sf_decoration_name = "fJvtSF";
166  }
167 
168  // fJvt uses mu vs pT binning
169  m_useMuBinsSF = true;
170  }
171  // configure for Jvt mode (deprecated)
172  else {
173 
174  bool ispflow = (m_jetContainerName.find("EMPFlow") != std::string::npos);
175  ATH_MSG_INFO("Configuring JetJvtEfficiency tool for Jvt algorithm.");
176  ATH_MSG_WARNING("Jvt is deprecated in R22 and no calibrations will be provided, please move to NNJvt.");
177  selToolCfg.setTypeAndName("CP::JvtSelectionTool/JvtSelTool");
178  ATH_CHECK(selToolCfg.setProperty("IsPFlow", ispflow));
179  ATH_CHECK(selToolCfg.setProperty("JvtMomentName", m_jetJvtMomentName));
180  ATH_CHECK(selToolCfg.setProperty("JetContainer", m_jetContainerName));
181  effToolCfg.setTypeAndName("CP::JvtEfficiencyTool/JvtEffTool");
182  ATH_CHECK(effToolCfg.setProperty("JetContainer", m_jetContainerName));
183  ATH_CHECK(effToolCfg.setProperty("IsPFlow", ispflow));
184  // set a default SF decoration name if not explicitly specified
185  if (m_sf_decoration_name.empty()){
186  m_sf_decoration_name = "JvtSF";
187  }
188  }
189 
192  addAffectingSystematics(m_jvtEffTool->affectingSystematics());
193  ATH_CHECK(addRecommendedSystematics(m_jvtEffTool->recommendedSystematics()));
194 
195  if (m_file.find("DummySF") != std::string::npos) {
196  m_useDummySFs = true;
197  ATH_MSG_INFO("Using dummy SFs of 1 +/ 10% for NNJvt.");
198  }
199 
200  // Configure for nominal systematics
201  if (applySystematicVariation(CP::SystematicSet()) != StatusCode::SUCCESS) {
202  ATH_MSG_ERROR("Could not configure for nominal settings");
203  return StatusCode::FAILURE;
204  }
205 
206  m_jetEtaAcc = std::make_unique<SG::AuxElement::ConstAccessor<float>>(m_jetEtaName);
207  m_sfDec = std::make_unique<SG::AuxElement::Decorator< float>>(m_sf_decoration_name);
208  m_isHSDec = std::make_unique<SG::AuxElement::Decorator<char>>(m_isHS_decoration_name);
209  m_isHSAcc = std::make_unique<SG::AuxElement::ConstAccessor<char>>(m_isHS_decoration_name);
210  if (!m_ORdec.empty()) {
211  m_passORAcc = std::make_unique<SG::AuxElement::ConstAccessor<char>>(m_ORdec);
212  }
213 
214  return StatusCode::SUCCESS;
215 }
216 
218  return m_jvtEffTool->getEfficiencyScaleFactor(jet, sf);
219 }
220 
222  return m_jvtEffTool->getInefficiencyScaleFactor(jet, sf);
223 }
224 
226  float sf = 0;
228  (*m_sfDec)(jet) = sf;
229  return result;
230 }
231 
233  float sf = 0;
235  (*m_sfDec)(jet) = sf;
236  return result;
237 }
238 
240  sf = 1;
241  const xAOD::JetContainer *truthJets = nullptr;
242  if( evtStore()->retrieve(truthJets, m_truthJetContName).isFailure()) {
243  ATH_MSG_ERROR("Unable to retrieve truth jet container with name " << m_truthJetContName);
245 
246  }
247  if(!truthJets || tagTruth(jets,truthJets).isFailure()) {
248  ATH_MSG_ERROR("Unable to match truthJets to jets in tagTruth() method");
250  }
251  for(const auto *const ipart : *jets) {
252  if (ipart->type()!=xAOD::Type::Jet) {
253  ATH_MSG_ERROR("Input is not a jet");
255  }
256  const xAOD::Jet *jet = static_cast<const xAOD::Jet*>(ipart);
257  float current_sf = 0;
258 
260  if (passesJvtCut(*jet)) {
261  result = this->getEfficiencyScaleFactor(*jet,current_sf);
262  }
263  else {
264  result = this->getInefficiencyScaleFactor(*jet,current_sf);
265  }
266 
267  // set the SF to 1 in case the corrections don't apply for this jet
269  current_sf = 1.0;
270  }
271  else if (result == CP::CorrectionCode::Error) {
272  ATH_MSG_ERROR("Inexplicably failed JVT calibration" );
273  return result;
274  }
275  (*m_sfDec)(*jet) = current_sf;
276  sf *= current_sf;
277  }
278  return CorrectionCode::Ok;
279 }
280 
283  for(const xAOD::Jet* jet : jets)
284  passJvtHandle(*jet) = passesJvtCut(*jet);
285  return StatusCode::SUCCESS;
286 }
287 
289  // recalculate NNJvt scores and passNNJvt decorations
291  ATH_CHECK(m_NNJvtTool_handle->decorate(jets));
292  return StatusCode::SUCCESS;
293  }
294  // not required for other taggers, so return gently
295  else {
296  return StatusCode::SUCCESS;
297  }
298 }
299 
301  ATH_MSG_DEBUG("In JetJvtEfficiency::passesJvtCut ()");
302  return bool(m_jvtSelTool->accept(&jet));
303 }
304 
306  // if defined, require jet to pass OR flag
307  if (m_passORAcc && !(*m_passORAcc)(jet)) return false;
308  if ( m_useMuBinsSF ){
309  if (std::abs((*m_jetEtaAcc)(jet))<2.5) return false;
310  if (std::abs((*m_jetEtaAcc)(jet))>4.5) return false;
311  } else {
312  // in case a SF file has been specified look up if eta of jet is covered by the file
313  if (!m_useDummySFs) {
314  if (std::abs((*m_jetEtaAcc)(jet))<m_h_JvtHist->GetYaxis()->GetBinLowEdge(1)) return false;
315  if (std::abs((*m_jetEtaAcc)(jet))>m_h_JvtHist->GetYaxis()->GetBinUpEdge(m_h_JvtHist->GetNbinsY())) return false;
316  }
317  // in case dummy SFs are used (NNJvt only), manually restrict pile-up jets to central region
318  else {
319  if (std::abs((*m_jetEtaAcc)(jet))>2.5) return false;
320  }
321  }
322  // skip check of histograms when using dummy SFs as no histograms have been loaded
323  if (!m_useDummySFs){
324  if (jet.pt()<m_h_JvtHist->GetXaxis()->GetBinLowEdge(1)) return false;
325  if (jet.pt()>m_h_JvtHist->GetXaxis()->GetBinUpEdge(m_h_JvtHist->GetNbinsX())) return false;
326  }
327  else {
328  if (jet.pt() < 20e3) return false;
329  }
330  if (jet.pt()>m_maxPtForJvt) return false;
331  return true;
332 }
333 
335  return m_jvtEffTool->applySystematicVariation(systSet);
336 }
337 
339  for(const auto *const jet : *jets) {
340  bool ishs = false;
341  bool ispu = true;
342  for(const auto *const tjet : *truthJets) {
343  if (tjet->p4().DeltaR(jet->p4())<0.3 && tjet->pt()>10e3) ishs = true;
344  if (tjet->p4().DeltaR(jet->p4())<0.6) ispu = false;
345  }
346  (*m_isHSDec)(*jet)=ishs;
347  isPUDec(*jet)=ispu;
348  }
349  return StatusCode::SUCCESS;
350  }
351 
352 } /* namespace CP */
CP::Jvt
@ Jvt
Definition: IJetJvtEfficiency.h:23
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
CP::JetJvtEfficiency::initialize
virtual StatusCode initialize() override
Dummy implementation of the initialisation function.
Definition: JetJvtEfficiency.cxx:62
CP::JetJvtEfficiency::m_doTruthRequirement
bool m_doTruthRequirement
Definition: JetJvtEfficiency.h:93
CP::JetJvtEfficiency::m_sfDec
std::unique_ptr< SG::AuxElement::Decorator< float > > m_sfDec
Definition: JetJvtEfficiency.h:109
get_generator_info.result
result
Definition: get_generator_info.py:21
CP::JetJvtEfficiency::m_passJvtKey
SG::WriteDecorHandleKey< xAOD::JetContainer > m_passJvtKey
Definition: JetJvtEfficiency.h:113
CP::JetJvtEfficiency::m_tagger
int m_tagger
Definition: JetJvtEfficiency.h:81
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
CP::JetJvtEfficiency::applyInefficiencyScaleFactor
virtual CorrectionCode applyInefficiencyScaleFactor(const xAOD::Jet &jet) override
Definition: JetJvtEfficiency.cxx:232
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
CP::JetJvtEfficiency::m_passJvtDecName
std::string m_passJvtDecName
Definition: JetJvtEfficiency.h:87
CP::JetJvtEfficiency::applySystematicVariation
StatusCode applySystematicVariation(const CP::SystematicSet &set) override
effects: configure this tool for the given list of systematic variations.
Definition: JetJvtEfficiency.h:64
CP::JetJvtEfficiency::m_jvtEffTool
ToolHandle< IJvtEfficiencyTool > m_jvtEffTool
Definition: JetJvtEfficiency.h:79
AthCommonDataStore< AthCommonMsg< AlgTool > >::renounce
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)
Definition: AthCommonDataStore.h:380
asg
Definition: DataHandleTestTool.h:28
CP::JetJvtEfficiency::m_file
std::string m_file
Definition: JetJvtEfficiency.h:83
CP::SystematicSet
Class to wrap a set of SystematicVariations.
Definition: SystematicSet.h:31
CP::JetJvtEfficiency::m_NNJvtTool_handle
ToolHandle< JetPileupTag::JetVertexNNTagger > m_NNJvtTool_handle
Definition: JetJvtEfficiency.h:77
CP::SystematicsTool::addAffectingSystematics
void addAffectingSystematics(const SystematicSet &systematics)
effects: add a SystematicSet to the registered systematics.
Definition: SystematicsTool.cxx:142
CP::JetJvtEfficiency::m_wp
std::string m_wp
Definition: JetJvtEfficiency.h:82
SG::ConstAccessor
Helper class to provide constant type-safe access to aux data.
Definition: ConstAccessor.h:54
JetJvtEfficiency.h
CP::JetJvtEfficiency::getEfficiencyScaleFactor
virtual CorrectionCode getEfficiencyScaleFactor(const xAOD::Jet &jet, float &sf) override
Definition: JetJvtEfficiency.cxx:217
CP::JetJvtEfficiency::JetJvtEfficiency
JetJvtEfficiency()
CP::JetJvtEfficiency::m_taggingAlg
JvtTagger m_taggingAlg
Definition: JetJvtEfficiency.h:84
CP::JetJvtEfficiency::m_useDummySFs
bool m_useDummySFs
Definition: JetJvtEfficiency.h:96
CP::JetJvtEfficiency::m_jvtSelTool
ToolHandle< IAsgSelectionTool > m_jvtSelTool
Definition: JetJvtEfficiency.h:78
CP
Select isolated Photons, Electrons and Muons.
Definition: Control/xAODRootAccess/xAODRootAccess/TEvent.h:48
asg::AsgToolConfig::makePrivateTool
::StatusCode makePrivateTool(ToolHandle< T > &toolHandle) const
make a private tool with the given configuration
CP::JetJvtEfficiency::isInRange
virtual bool isInRange(const xAOD::Jet &jet) const override
Definition: JetJvtEfficiency.cxx:305
CP::JetJvtEfficiency::applyEfficiencyScaleFactor
virtual CorrectionCode applyEfficiencyScaleFactor(const xAOD::Jet &jet) override
Definition: JetJvtEfficiency.cxx:225
python.iconfTool.models.loaders.level
level
Definition: loaders.py:20
CP::JetJvtEfficiency::decorate
virtual StatusCode decorate(const xAOD::JetContainer &jets) const override
Decorate a jet collection without otherwise modifying it.
Definition: JetJvtEfficiency.cxx:281
CP::JetJvtEfficiency::m_jetEtaName
std::string m_jetEtaName
Definition: JetJvtEfficiency.h:91
CP::JetJvtEfficiency::m_NNJvtParamFile
std::string m_NNJvtParamFile
Definition: JetJvtEfficiency.h:98
CP::JetJvtEfficiency::m_NNJvtCutFile
std::string m_NNJvtCutFile
Definition: JetJvtEfficiency.h:99
CP::NNJvt
@ NNJvt
Definition: IJetJvtEfficiency.h:24
AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
CP::JetJvtEfficiency::tagTruth
StatusCode tagTruth(const xAOD::IParticleContainer *jets, const xAOD::IParticleContainer *truthJets) override
Definition: JetJvtEfficiency.cxx:338
CP::CorrectionCode::OutOfValidityRange
@ OutOfValidityRange
Input object is out of validity range.
Definition: CorrectionCode.h:37
CP::CorrectionCode::Error
@ Error
Some error happened during the object correction.
Definition: CorrectionCode.h:36
jet
Definition: JetCalibTools_PlotJESFactors.cxx:23
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
CheckAppliedSFs.e3
e3
Definition: CheckAppliedSFs.py:264
asg::AsgToolConfig
an object that can create a AsgTool
Definition: AsgToolConfig.h:22
SG::Decorator
Helper class to provide type-safe access to aux data.
Definition: Decorator.h:58
CP::JetJvtEfficiency::m_isHS_decoration_name
std::string m_isHS_decoration_name
Definition: JetJvtEfficiency.h:89
CP::JetJvtEfficiency::applyAllEfficiencyScaleFactor
virtual CorrectionCode applyAllEfficiencyScaleFactor(const xAOD::IParticleContainer *jets, float &sf) override
Definition: JetJvtEfficiency.cxx:239
CP::JetJvtEfficiency::passesJvtCut
virtual bool passesJvtCut(const xAOD::Jet &jet) const override
Definition: JetJvtEfficiency.cxx:300
SystematicRegistry.h
CP::JetJvtEfficiency::m_passORAcc
std::unique_ptr< SG::AuxElement::ConstAccessor< char > > m_passORAcc
Definition: JetJvtEfficiency.h:108
CP::JetJvtEfficiency::recalculateScores
virtual StatusCode recalculateScores(const xAOD::JetContainer &jets) const override
Definition: JetJvtEfficiency.cxx:288
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
CP::JetJvtEfficiency::m_jetContainerName
std::string m_jetContainerName
Definition: JetJvtEfficiency.h:97
SG::WriteDecorHandle
Handle class for adding a decoration to an object.
Definition: StoreGate/StoreGate/WriteDecorHandle.h:99
AsgToolConfig.h
CP::JvtTagger
JvtTagger
Definition: IJetJvtEfficiency.h:22
CP::JetJvtEfficiency::m_suppressOutputDependence
bool m_suppressOutputDependence
Definition: JetJvtEfficiency.h:115
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
CP::JetJvtEfficiency::sysApplySystematicVariation
StatusCode sysApplySystematicVariation(const CP::SystematicSet &) override
effects: configure this tool for the given list of systematic variations.
Definition: JetJvtEfficiency.cxx:334
CP::fJvt
@ fJvt
Definition: IJetJvtEfficiency.h:25
CP::JetJvtEfficiency::m_ORdec
std::string m_ORdec
Definition: JetJvtEfficiency.h:94
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
WriteDecorHandle.h
Handle class for adding a decoration to an object.
CP::JetJvtEfficiency::m_isHSAcc
std::unique_ptr< SG::AuxElement::ConstAccessor< char > > m_isHSAcc
Definition: JetJvtEfficiency.h:111
StatusCode.h
CP::NONE
@ NONE
Definition: JetJvtEfficiency.h:28
CP::JetJvtEfficiency::m_jetEtaAcc
std::unique_ptr< SG::AuxElement::ConstAccessor< float > > m_jetEtaAcc
Definition: JetJvtEfficiency.h:107
asg::AsgComponentConfig::setTypeAndName
void setTypeAndName(const std::string &val_typeAndName)
set type and name at the same time
Definition: AsgComponentConfig.cxx:116
PathResolver.h
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
CP::JetJvtEfficiency::m_isHSDec
std::unique_ptr< SG::AuxElement::Decorator< char > > m_isHSDec
Definition: JetJvtEfficiency.h:110
xAOD::Jet_v1
Class describing a jet.
Definition: Jet_v1.h:57
CP::CorrectionCode::Ok
@ Ok
The correction was done successfully.
Definition: CorrectionCode.h:38
CP::JetJvtEfficiency::m_truthJetContName
std::string m_truthJetContName
Definition: JetJvtEfficiency.h:90
CP::JetJvtEfficiency::m_jetJvtMomentName
std::string m_jetJvtMomentName
Definition: JetJvtEfficiency.h:102
JetContainer.h
mapkey::sf
@ sf
Definition: TElectronEfficiencyCorrectionTool.cxx:38
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
asg::AsgComponentConfig::setProperty
StatusCode setProperty(const std::string &name, const T &value)
set the given property
AthCommonMsg< AlgTool >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
CP::JetJvtEfficiency::m_maxPtForJvt
float m_maxPtForJvt
Definition: JetJvtEfficiency.h:92
CP::CorrectionCode
Return value from object correction CP tools.
Definition: CorrectionCode.h:31
CP::JetJvtEfficiency::m_h_JvtHist
std::unique_ptr< TH2 > m_h_JvtHist
Definition: JetJvtEfficiency.h:85
CP::SystematicsTool::addRecommendedSystematics
StatusCode addRecommendedSystematics(const SystematicSet &systematics)
effects: add a SystematicSet to the recommended systematics.
Definition: SystematicsTool.cxx:152
defineDB.jets
list jets
Definition: JetTagCalibration/share/defineDB.py:24
CP::JetJvtEfficiency::m_useMuBinsSF
bool m_useMuBinsSF
Definition: JetJvtEfficiency.h:95
xAOD::bool
setBGCode setTAP setLVL2ErrorBits bool
Definition: TrigDecision_v1.cxx:60
CP::JetJvtEfficiency::m_sf_decoration_name
std::string m_sf_decoration_name
Definition: JetJvtEfficiency.h:88
xAOD::Jet
Jet_v1 Jet
Definition of the current "jet version".
Definition: Event/xAOD/xAODJet/xAODJet/Jet.h:17
SystematicVariation.h
CP::JetJvtEfficiency::getInefficiencyScaleFactor
virtual CorrectionCode getInefficiencyScaleFactor(const xAOD::Jet &jet, float &sf) override
Definition: JetJvtEfficiency.cxx:221