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