ATLAS Offline Software
Jets.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 // This source file implements all of the functions related to Jets
6 // in the SUSYObjDef_xAOD class
7 
8 // Local include(s):
10 
13 
21 
25 
27 
30 #ifndef XAOD_STANDALONE // For now metadata is Athena-only
32 #endif
33 
34 namespace ST {
35 
36  const static SG::AuxElement::Decorator<char> dec_bad("bad");
37  const static SG::AuxElement::ConstAccessor<char> acc_bad("bad");
38 
39  const static SG::AuxElement::Decorator<char> dec_passJvt("passJvt");
40  const static SG::AuxElement::ConstAccessor<char> acc_passJvt("passJvt");
41  const static SG::AuxElement::Decorator<char> dec_passFJvt("passFJvt");
42  const static SG::AuxElement::ConstAccessor<char> acc_passFJvt("passFJvt");
43 
44  const static SG::AuxElement::Decorator<float> dec_jvt("Jvt");
45  const static SG::AuxElement::ConstAccessor<float> acc_jvt("NNJvt");
46  const static SG::AuxElement::Decorator<float> dec_fjvt("fJvt");
47  const static SG::AuxElement::ConstAccessor<float> acc_fjvt("DFCommonJets_fJvt");
48 
49  const static SG::AuxElement::Decorator<char> dec_bjet("bjet");
50  const static SG::AuxElement::ConstAccessor<char> acc_bjet("bjet");
51 
52  const static SG::AuxElement::Decorator<char> dec_bjet_jetunc("bjet_jetunc"); //added for JetUncertainties usage
53  const static SG::AuxElement::Decorator<char> dec_bjet_loose("bjet_loose");
54 
55  const static SG::AuxElement::Decorator<double> dec_btag_weight("btag_weight");
56  const static SG::AuxElement::Decorator<float> dec_btag_pb("btag_pb");
57  const static SG::AuxElement::Decorator<float> dec_btag_pc("btag_pc");
58  const static SG::AuxElement::Decorator<float> dec_btag_pu("btag_pu");
59  const static SG::AuxElement::Decorator<float> dec_btag_ptau("btag_ptau");
60  // for backwards compatibility
61  const static SG::AuxElement::Decorator<float> dec_btag_dl1pb("btag_dl1pb");
62  const static SG::AuxElement::Decorator<float> dec_btag_dl1pc("btag_dl1pc");
63  const static SG::AuxElement::Decorator<float> dec_btag_dl1pu("btag_dl1pu");
64 
65 
66  const static SG::AuxElement::Decorator<float> dec_VRradius("VRradius");
67  const static SG::AuxElement::ConstAccessor<float> acc_VRradius("VRradius");
68 
69  const static SG::AuxElement::Decorator<char> dec_passDRcut("passDRcut");
70  const static SG::AuxElement::ConstAccessor<char> acc_passDRcut("passDRcut");
71 
72  const static SG::AuxElement::Decorator<int> dec_wtagged("wtagged");
73  const static SG::AuxElement::Decorator<int> dec_ztagged("ztagged");
74  const static SG::AuxElement::Decorator<int> dec_toptagged("toptagged");
75 
76  StatusCode SUSYObjDef_xAOD::GetJets(xAOD::JetContainer*& copy, xAOD::ShallowAuxContainer*& copyaux, bool recordSG, const std::string& jetkey, const xAOD::JetContainer* containerToBeCopied)
77  {
78  if (!m_tool_init) {
79  ATH_MSG_ERROR("SUSYTools was not initialized!!");
80  return StatusCode::FAILURE;
81  }
82 
83  if (m_isPHYSLITE && jetkey.find("AnalysisJets") == std::string::npos){
84  ATH_MSG_ERROR("You are running on PHYSLITE derivation. Please change the Jets container to 'AnalysisJets'");
85  return StatusCode::FAILURE;
86  }
87 
88  ATH_MSG_DEBUG("Default jetkey: " << m_defaultJets);
89  ATH_MSG_DEBUG("Function argument jetkey: " << jetkey);
90 
91  // load default regular & btag jet keys
92  std::string jetkey_tmp = m_defaultJets; // use default for regular jetkey_tmp
93 
94  // override default if user is passing a jetkey
95  if (!jetkey.empty()) {
96  jetkey_tmp = jetkey;
97  }
98 
99  // final settings
100  ATH_MSG_DEBUG("Key for retrieving jet collection: jetkey = " << jetkey_tmp);
101 
102  const xAOD::JetContainer* jets = nullptr;
103  if (copy==nullptr) { // empty container provided
104  if (containerToBeCopied != nullptr) {
105  jets = containerToBeCopied;
106  }
107  else {
108  ATH_MSG_DEBUG("Retrieve jet collection: " << jetkey_tmp);
109  ATH_CHECK( evtStore()->retrieve(jets, jetkey_tmp) );
110  }
111  std::pair<xAOD::JetContainer*, xAOD::ShallowAuxContainer*> shallowcopy = xAOD::shallowCopyContainer(*jets);
112  copy = shallowcopy.first;
113  copyaux = shallowcopy.second;
114  bool setLinks = xAOD::setOriginalObjectLink(*jets, *copy);
115  if (!setLinks) {
116  ATH_MSG_WARNING("Failed to set original object links on " << jetkey_tmp);
117  }
118  } else { // use the user-supplied collection instead
119  ATH_MSG_DEBUG("Not retrieving jet collecton, using existing one provided by user");
120  jets = copy;
121  }
122 
123  // Calibrate the jets
124  // Note that for PHYSLITE jets we don't need the nominal calibration
125  if (jetkey!="AnalysisJets") {
127  }
128 
129  // Add isHS labels to jets (required for JvtEfficiencyTools)
130  if (!isData()) {
132  }
133 
134  // Re-calculate NNJvt scores
136 
137  // Update the jets
138  for (const auto& jet : *copy) {
139  ATH_CHECK( this->FillJet(*jet) );
140  }
141 
142  for (const auto& jet : *copy) {
143  // Update the JVT decorations if needed
144  if( m_doFwdJVT){
145  dec_passJvt(*jet) = acc_passFJvt(*jet) && acc_passJvt(*jet);
146  dec_fjvt(*jet) = acc_fjvt(*jet);
147 
148  //new state for OR . 0=non-baseline objects, 1=for baseline jets not passing JVT, 2=for any other baseline object
149  if ( acc_baseline(*jet) ){
150  if( acc_passJvt(*jet) ) dec_selected(*jet) = 2;
151  else dec_selected(*jet) = 1;
152  }
153  else{
154  dec_selected(*jet) = 0;
155  }
156  }
157  this->IsBadJet(*jet);
158  this->IsSignalJet(*jet, m_jetPt, m_jetEta);
159  if (!isData())this->IsTruthBJet(*jet);
160  }
161  if (recordSG) {
162  std::string auxname = copyaux->name();
163  if (auxname.compare("UNKNOWN")==0) copyaux->setName(std::string("STCalib" + jetkey_tmp + m_currentSyst.name() + "AuxCopy").c_str());
164  ATH_CHECK( evtStore()->record(copy, "STCalib" + jetkey_tmp + m_currentSyst.name()) );
165  ATH_CHECK( evtStore()->record(copyaux, "STCalib" + jetkey_tmp + m_currentSyst.name() + "Aux.") );
166  }
167  return StatusCode::SUCCESS;
168  }
169 
170  StatusCode SUSYObjDef_xAOD::GetTrackJets(xAOD::JetContainer*& copy, xAOD::ShallowAuxContainer*& copyaux, bool recordSG, const std::string& jetkey, const xAOD::JetContainer* containerToBeCopied)
171  {
172  if (!m_tool_init) {
173  ATH_MSG_ERROR("SUSYTools was not initialized!!");
174  return StatusCode::FAILURE;
175  }
176 
177  ATH_MSG_DEBUG("Default jetkey (trkjet): " << m_defaultTrackJets);
178  ATH_MSG_DEBUG("Function argument jetkey (trkjet): " << jetkey);
179 
180  // load default regular & btag jet keys
181  std::string jetkey_tmp = m_defaultTrackJets;
182 
183  // override default if user is passing a jetkey
184  if (!jetkey.empty()) {
185  jetkey_tmp = jetkey;
186  }
187 
188  // final settings
189  ATH_MSG_DEBUG("Key for retrieving trkjet collection (as well as bjet info): jetkey = " << jetkey_tmp);
190 
191  const xAOD::JetContainer* jets = nullptr;
192  if (copy==nullptr) { // empty container provided
193  if (containerToBeCopied != nullptr) {
194  jets = containerToBeCopied;
195  }
196  else {
197  ATH_MSG_DEBUG("Retrieve jet collection: " << jetkey_tmp);
198  ATH_CHECK( evtStore()->retrieve(jets, jetkey_tmp) );
199  }
200  std::pair<xAOD::JetContainer*, xAOD::ShallowAuxContainer*> shallowcopy = xAOD::shallowCopyContainer(*jets);
201  copy = shallowcopy.first;
202  copyaux = shallowcopy.second;
203  bool setLinks = xAOD::setOriginalObjectLink(*jets, *copy);
204  if (!setLinks) {
205  ATH_MSG_WARNING("Failed to set original object links on " << jetkey_tmp);
206  }
207  } else { // use the user-supplied collection instead
208  ATH_MSG_DEBUG("Not retrieving jet collection, using existing one provided by user");
209  jets = copy;
210  }
211 
212  //disable - notfortrackjets? // Calibrate the jets
213  //disable - notfortrackjets? ATH_CHECK(m_jetCalibTool->applyCalibration(*copy));
214 
215  // Update the jets
216  for (const auto& jet : *copy) {
217  ATH_CHECK( this->FillTrackJet(*jet) );
218  }
219 
220  if (copy->size() > 1 && m_defaultTrackJets == "AntiKtVR30Rmax4Rmin02TrackJets") {
221  // Use iterators to avoid pairing the jets twice
222  for (xAOD::JetContainer::const_iterator j1 = copy->begin()+1; j1!= copy->end();++j1) {
223  const xAOD::Jet* jet1 = (*j1);
224  if (!acc_signal(*jet1)) continue;
225  for (xAOD::JetContainer::const_iterator j2 = copy->begin(); j2 != j1; ++j2) {
226  const xAOD::Jet* jet2 = (*j2);
227  if (!acc_baseline(*jet2)) continue;
228  //Reference to the use method in P4Helper: deltaR2( const xAOD::IParticle& p4, const xAOD::IParticle& , bool useRapidity=true )
229  float dr_jets = xAOD::P4Helpers::deltaR(jet1,jet2, false);
230  const xAOD::Jet* to_check = acc_VRradius(*jet1) < acc_VRradius(*jet2) ? jet1 : jet2;
231  if( dr_jets < acc_VRradius(*to_check)) dec_passDRcut(*to_check) = false;
232  //break the loop at this point???
233  }
234  }
235  }
236  if (recordSG) {
237  ATH_CHECK( evtStore()->record(copy, "STCalib" + jetkey_tmp + m_currentSyst.name()) );
238  ATH_CHECK( evtStore()->record(copyaux, "STCalib" + jetkey_tmp + m_currentSyst.name() + "Aux.") );
239  }
240  return StatusCode::SUCCESS;
241  }
242 
243  StatusCode SUSYObjDef_xAOD::GetFatJets(xAOD::JetContainer*& copy, xAOD::ShallowAuxContainer*& copyaux, bool recordSG, const std::string& jetkey, const bool doLargeRdecorations, const xAOD::JetContainer* containerToBeCopied)
244  {
245  if (!m_tool_init) {
246  ATH_MSG_ERROR("SUSYTools was not initialized!!");
247  return StatusCode::FAILURE;
248  }
249 
250  if (m_fatJets.empty()) {
251  ATH_MSG_ERROR("JetFatCalibTool was not initialized for largeR jet!!");
252  return StatusCode::FAILURE;
253  }
254 
255  std::string jetkey_tmp = jetkey;
256  if (jetkey.empty()) {
257  jetkey_tmp = m_fatJets;
258  }
259 
260  const xAOD::JetContainer* jets = nullptr;
261  if (copy==nullptr) { // empty container provided
262  if (containerToBeCopied != nullptr) {
263  jets = containerToBeCopied;
264  }
265  else {
266  ATH_MSG_DEBUG("Retrieve jet collection: " << jetkey_tmp);
267  ATH_CHECK( evtStore()->retrieve(jets, jetkey_tmp) );
268  }
269 
270  std::pair<xAOD::JetContainer*, xAOD::ShallowAuxContainer*> shallowcopy = xAOD::shallowCopyContainer(*jets);
271  copy = shallowcopy.first;
272  copyaux = shallowcopy.second;
273  bool setLinks = xAOD::setOriginalObjectLink(*jets, *copy);
274  if (!setLinks) {
275  ATH_MSG_WARNING("Failed to set original object links on " << jetkey_tmp);
276  }
277  } else { // use the user-supplied collection instead
278  ATH_MSG_DEBUG("Not retrieving jet collection, using existing one provided by user");
279  jets=copy;
280  }
281 
282  if(jets->size()==0) {
283  ATH_MSG_DEBUG("Large R jet collection is empty");
284  return StatusCode::SUCCESS;
285  }
286 
287  // Calibrate the jets - only insitu for data for now
289 
290 
291  if (!isData() && !m_JetTruthLabelName.empty()){
292  ATH_MSG_DEBUG("Checking if decorator for JetTruthLabelingTool is available:");
293  std::string fatjetcoll = m_fatJets;
294  m_label_truthKey = fatjetcoll+"."+m_JetTruthLabelName;
296  ATH_MSG_DEBUG("Reading JetTruthLabelingTool truthKey:" << m_label_truthKey << " isAvailable " << labelHandle_truthKey.isAvailable());
297  // Truth Labeling (MC only)
298  if (!labelHandle_truthKey.isAvailable() && !m_isPHYSLITE) ATH_CHECK(m_jetTruthLabelingTool->decorate(*copy));
299  }
300 
301 
302  for (const auto& jet : *copy) {
303 
304  ATH_CHECK( this->FillJet(*jet, true, true, doLargeRdecorations) );
305  //
306  // For OR, selected if it passed cuts
307  if ( acc_baseline(*jet) ){
308  dec_selected(*jet) = 1;
309  }
310  else{
311  dec_selected(*jet) = 0;
312  }
313  }
314  if (recordSG) {
315  ATH_CHECK( evtStore()->record(copy, "STCalib" + jetkey_tmp + m_currentSyst.name()) );
316  ATH_CHECK( evtStore()->record(copyaux, "STCalib" + jetkey_tmp + m_currentSyst.name() + "Aux.") );
317  }
318  return StatusCode::SUCCESS;
319  }
320 
321 
322  StatusCode SUSYObjDef_xAOD::GetJetsSyst(const xAOD::JetContainer& calibjets, xAOD::JetContainer*& copy, xAOD::ShallowAuxContainer*& copyaux, bool recordSG, const std::string& jetkey)
323  {
324  if (!m_tool_init) {
325  ATH_MSG_ERROR("SUSYTools was not initialized!!");
326  return StatusCode::FAILURE;
327  }
328 
329  std::string jetkey_tmp = jetkey;
330  if (jetkey.empty()) {
331  jetkey_tmp = m_defaultJets;
332  }
333 
334  std::pair<xAOD::JetContainer*, xAOD::ShallowAuxContainer*> shallowcopy = xAOD::shallowCopyContainer(calibjets);
335  copy = shallowcopy.first;
336  copyaux = shallowcopy.second;
337 
338  bool setLinks = xAOD::setOriginalObjectLink(calibjets, *copy);
339  if (!setLinks) {
340  ATH_MSG_WARNING("Failed to set original object links on " << jetkey_tmp);
341  }
342 
343  // ghost associate the muons to the jets (needed by MET muon-jet OR later)
344  ATH_MSG_VERBOSE("Run muon-to-jet ghost association");
345  const xAOD::MuonContainer* muons = nullptr;
346  // Do a little guessing
347  if (jetkey!="AnalysisJets"){
348  ATH_CHECK( evtStore()->retrieve(muons, "Muons") );
349  } else {
350  ATH_CHECK( evtStore()->retrieve(muons, "AnalysisMuons") );
351  }
352  met::addGhostMuonsToJets(*muons, *copy);
353 
354  // Update the jets
355  for (const auto& jet : *copy) {
356  ATH_CHECK( this->FillJet(*jet, false) );
357  }
358 
359  for (const auto& jet : *copy) {
360  // Update the JVT decorations if needed
361  if( m_doFwdJVT){
362  dec_passJvt(*jet) = acc_passFJvt(*jet) && acc_passJvt(*jet);
363 
364  //new state for OR . 0=non-baseline objects, 1=for baseline jets not passing JVT, 2=for any other baseline object
365  if ( acc_baseline(*jet) ){
366  if( acc_passJvt(*jet) ) dec_selected(*jet) = 2;
367  else dec_selected(*jet) = 1;
368  }
369  else{
370  dec_selected(*jet) = 0;
371  }
372  }
373  this->IsBadJet(*jet);
374  this->IsSignalJet(*jet, m_jetPt, m_jetEta);
375  if (!isData())this->IsTruthBJet(*jet);
376  }
377  if (recordSG) {
378  ATH_CHECK( evtStore()->record(copy, "STCalib" + jetkey_tmp + m_currentSyst.name()) );
379  ATH_CHECK( evtStore()->record(copyaux, "STCalib" + jetkey_tmp + m_currentSyst.name() + "Aux.") );
380  }
381  return StatusCode::SUCCESS;
382  }
383 
384  StatusCode SUSYObjDef_xAOD::FillJet(xAOD::Jet& input, bool doCalib, bool isFat, bool doLargeRdecorations) {
385 
386  ATH_MSG_VERBOSE( "Starting FillJet on jet with pt=" << input.pt() );
387  ATH_MSG_VERBOSE( "jet (pt,eta,phi) before calibration " << input.pt() << " " << input.eta() << " " << input.phi() );
388 
389  if (doCalib) {
390  if(!isFat){
391  //disable - obsoleted ATH_CHECK( m_jetCalibTool->applyCalibration(input) );
392  }
393  else {
394  //disable - obsoleted ATH_CHECK( m_jetFatCalibTool->applyCalibration(input) );
395  dec_baseline(input) = ( input.pt() > m_jetPt ) || ( input.pt() > 20e3 ); // Allows for setting m_jetPt < 20e3
396  dec_bad(input) = false;
397  dec_signal(input) = false;
398  dec_bjet_loose(input) = false;
399  dec_effscalefact(input) = 1.;
400  dec_passOR(input) = true;
401  dec_bjet_jetunc(input) = false;
402  dec_btag_weight(input) = -999.;
403 
404  dec_wtagged(input) = -1;
405  dec_ztagged(input) = -1;
406  dec_toptagged(input) = -1;
407  if (doLargeRdecorations) {
411 
412  // Retreive large-R tagging results for W/Z/top
413  if (!m_WtagConfig.empty()) {
414  // Only tag jets if they are inside the kinematic range
415  if ( !input.auxdata<bool>(m_WDecorName+"_ValidKinRange") ) {
416  ATH_MSG_VERBOSE("Large-R W candidate jet outside of recommended tagging range. Will set score to 0.");
417  dec_wtagged(input) = 0;
418  }
419  else dec_wtagged(input) = input.auxdata<bool>(m_WDecorName+"_Tagged");
420  }
421  if (!m_ZtagConfig.empty()) {
422  // Only tag jets if they are inside the kinematic range
423  if ( !input.auxdata<bool>(m_ZDecorName+"_ValidKinRange") ) {
424  ATH_MSG_VERBOSE("Large-R Z candidate jet outside of recommended tagging range. Will set score to 0.");
425  dec_ztagged(input) = 0;
426  }
427  else dec_ztagged(input) = input.auxdata<bool>(m_ZDecorName+"_Tagged");
428  }
429  if (!m_ToptagConfig.empty()) {
430  // Only tag jets if they are inside the kinematic range
431  if ( !input.auxdata<bool>(m_TopDecorName+"_ValidKinRange") ) {
432  ATH_MSG_VERBOSE("Large-R Top candidate jet outside of recommended tagging range. Will set score to 0.");
433  dec_toptagged(input) = 0;
434  }
435  else dec_toptagged(input) = input.auxdata<bool>(m_TopDecorName+"_Tagged");
436  }
437 
438  }
439 
440  // If a user hasn't specified an uncertainty config, then this tool will be empty
441  // for large R jets
442  if (!m_WTagjetUncertaintiesTool.empty() && !m_WTagUncConfig.empty() && !m_WtagConfig.empty() && doLargeRdecorations) {
444  switch (result) {
446  ATH_MSG_ERROR( "Failed to apply largeR W-tag jet scale uncertainties.");
447  return StatusCode::FAILURE;
448  //break;
450  ATH_MSG_VERBOSE( "No valid pt/eta/m range for largeR W-tag jet scale uncertainties. ");
451  break;
452  default:
453  break;
454  }
455  } else {
456  ATH_MSG_DEBUG( "No valid large-R W-tagged fat jet uncertainty, but FillJet called with a fat jet. Skipping uncertainties." );
457  }
458 
459  if (!m_ZTagjetUncertaintiesTool.empty() && !m_ZTagUncConfig.empty() && !m_ZtagConfig.empty() && doLargeRdecorations) {
461  switch (result) {
463  ATH_MSG_ERROR( "Failed to apply largeR Z-tag jet scale uncertainties.");
464  return StatusCode::FAILURE;
465  //break;
467  ATH_MSG_VERBOSE( "No valid pt/eta/m range for largeR Z-tag jet scale uncertainties. ");
468  break;
469  default:
470  break;
471  }
472  } else {
473  ATH_MSG_DEBUG( "No valid large-R Z-tagged fat jet uncertainty, but FillJet called with a fat jet. Skipping uncertainties." );
474  }
475 
476  if (!m_TopTagjetUncertaintiesTool.empty() && !m_TopTagUncConfig.empty() && !m_ToptagConfig.empty() && doLargeRdecorations) {
478  switch (result) {
480  ATH_MSG_ERROR( "Failed to apply largeR Top-tag jet scale uncertainties.");
481  return StatusCode::FAILURE;
482  //break;
484  ATH_MSG_VERBOSE( "No valid pt/eta/m range for largeR Top-tag jet scale uncertainties. ");
485  break;
486  default:
487  break;
488  }
489  } else {
490  ATH_MSG_DEBUG( "No valid large-R Top-tagged fat jet uncertainty, but FillJet called with a fat jet. Skipping uncertainties." );
491  }
492 
495  switch (result) {
497  ATH_MSG_ERROR( "Failed to apply largeR jet scale uncertainties.");
498  return StatusCode::FAILURE;
499  //break;
501  ATH_MSG_VERBOSE( "No valid pt/eta/m range for largeR jet scale uncertainties. ");
502  break;
503  default:
504  break;
505  }
506  } else {
507  ATH_MSG_DEBUG( "No valid fat jet uncertainty, but FillJet called with a fat jet. Skipping uncertainties." );
508  }
509  ATH_MSG_VERBOSE( "Large-R jet (pt,eta,phi) after calibration " << input.pt() << " " << input.eta() << " " << input.phi() );
510 
511  return StatusCode::SUCCESS;
512  }
513  ATH_MSG_VERBOSE( "jet (pt,eta,phi) after calibration " << input.pt() << " " << input.eta() << " " << input.phi() );
514 
515  }
516 
517  dec_passOR(input) = true;
518  dec_bjet_jetunc(input) = false;
519 
520  if (m_useBtagging) {
521  if (m_BtagWP != "Continuous") this->IsBJet(input);
522  else this->IsBJetContinuous(input);
523  }
524 
525  if ( (input.pt() > m_jetPt) || (input.pt() > 15e3) ) {
526  if(!isFat && m_currentSyst.name().find("__2") == std::string::npos) {
527  // Use the normal jet uncertainties tool for this systematic and do not use the PDSmeared initialised tool
529  switch (result) {
531  ATH_MSG_ERROR( "Failed to apply JES correction" );
532  break;
534  ATH_MSG_WARNING( "JES correction OutOfValidity range."); // Jet (pt,eta,phi) = (" << input.pt() << ", " << input.eta() << ", " << input.phi() << ")");
535  break;
536  default:
537  break;
538  }
539  }
540  }
541 
543  if ( (input.pt() > m_jetPt) || (input.pt() > 15e3) ) {
544  if(!isFat && m_currentSyst.name().find("__2") != std::string::npos){
545  // Use the PDSmeared uncertainties tool on the systematic with PDsmear in the name
547  switch (result) {
549  ATH_MSG_ERROR( "Failed to apply JES correction" );
550  break;
552  ATH_MSG_WARNING( "JES correction OutOfValidity range."); // Jet (pt,eta,phi) = (" << input.pt() << ", " << input.eta() << ", " << input.phi() << ")");
553  break;
554  default:
555  break;
556  }
557  }
558  }
559  }
560 
561 
562  ATH_MSG_VERBOSE( "jet (pt,eta,phi) after JES correction " << input.pt() << " " << input.eta() << " " << input.phi() );
563 
565  dec_passFJvt(input) = !m_doFwdJVT || m_jetfJvtSelectionTool->accept(&input);
566  dec_baseline(input) = ( input.pt() > m_jetPt ) || ( input.pt() > 20e3 ); // Allows for setting m_jetPt < 20e3
567  dec_bad(input) = false;
568  dec_signal_less_JVT(input) = false;
569  dec_signal(input) = false;
570  dec_bjet_loose(input) = false;
571  dec_effscalefact(input) = 1.;
572 
573  //new state for OR . 0=non-baseline objects, 1=for baseline jets not passing JVT, 2=for any other baseline object
574  if (acc_baseline(input) ){
575  if( acc_passJvt(input) ) dec_selected(input) = 2;
576  else dec_selected(input) = 1;
577  }
578  else{
579  dec_selected(input) = 0;
580  }
581 
582  if (m_useBtagging && !m_orBtagWP.empty()) {
583  dec_bjet_loose(input) = this->IsBJetLoose(input);
584  }
585 
586  if (m_debug) {
587  ATH_MSG_INFO( "JET pt: " << input.pt() );
588  ATH_MSG_INFO( "JET eta: " << input.eta() );
589  ATH_MSG_INFO( "JET phi: " << input.phi() );
590  ATH_MSG_INFO( "JET E: " << input.e() );
591  ATH_MSG_INFO( "JET Ceta: " << input.jetP4(xAOD::JetConstitScaleMomentum).eta() );
592  ATH_MSG_INFO( "JET Cphi: " << input.jetP4(xAOD::JetConstitScaleMomentum).phi() );
593  ATH_MSG_INFO( "JET CE: " << input.jetP4(xAOD::JetConstitScaleMomentum).e() );
594  ATH_MSG_INFO( "JET Cm: " << input.jetP4(xAOD::JetConstitScaleMomentum).M() ); // fix-me M
595 
596  }
597 
598  return StatusCode::SUCCESS;
599  }
600 
602 
603  ATH_MSG_VERBOSE( "Starting FillTrackJet on jet with pt=" << input.pt() );
604 
605  dec_btag_weight(input) = -999.;
606  dec_effscalefact(input) = 1.;
607 
608  if (m_defaultTrackJets == "AntiKtVR30Rmax4Rmin02TrackJets") {
609  // VR recommendation
610  // https://twiki.cern.ch/twiki/bin/view/AtlasProtected/BTagCalib2017#Recommendations_for_variable_rad
611  dec_baseline(input) = input.pt() >= 5e3 && input.numConstituents() >= 2;
612  if (m_trkJetPt < 10e3)
613  ATH_MSG_WARNING ("The pt threshold of VR jets you set is: " << m_trkJetPt/1000. << " GeV. But VR jets with pt < 10GeV are uncalibrated.");
614  dec_signal(input) = acc_baseline(input) && input.pt() >= m_trkJetPt && std::abs(input.eta()) <= m_trkJetEta;
615  dec_VRradius(input) = std::max(0.02,std::min(0.4,30000./input.pt()));
616  dec_passDRcut(input) = acc_signal(input);
617  } else {
618  dec_baseline(input) = input.pt() >= m_trkJetPt && std::abs(input.eta()) <= m_trkJetEta;
619  dec_signal(input) = acc_baseline(input);
620  }
621 
622  if (m_useBtagging_trkJet) {
623  if (m_BtagWP_trkJet != "Continuous") this->IsTrackBJet(input);
624  else this->IsTrackBJetContinuous(input);
625  }
626 
627  if (m_debug) {
628  ATH_MSG_INFO( "TRK JET pt: " << input.pt() );
629  ATH_MSG_INFO( "TRK JET eta: " << input.eta() );
630  ATH_MSG_INFO( "TRK JET phi: " << input.phi() );
631  ATH_MSG_INFO( "TRK JET E: " << input.e() );
632  }
633 
634  return StatusCode::SUCCESS;
635  }
636 
637 
639  bool isbjet_loose = false;
640  if (m_orBJetPtUpperThres < 0 || m_orBJetPtUpperThres > input.pt())
641  isbjet_loose = bool(m_btagSelTool_OR->accept(input)); //note : b-tag applies only to jet with eta < 2.5
642  return isbjet_loose;
643  }
644 
646  char pass_jvt = !m_applyJVTCut || m_jetNNJvtSelectionTool->accept(&input);
647  dec_passJvt(input) = pass_jvt;
648  return pass_jvt;
649  }
650 
651  bool SUSYObjDef_xAOD::IsSignalJet(const xAOD::Jet& input, float ptcut, float etacut) const {
652  if ( !acc_baseline(input) || !acc_passOR(input) ) return false;
653 
654  if ( input.pt() <= ptcut || std::abs(input.eta()) >= etacut) return false;
655 
656  bool isgoodjet = !acc_bad(input) && acc_passJvt(input);
657 
658  dec_signal(input) = isgoodjet;
659 
660  // For JVT calculation
661  dec_signal_less_JVT(input) = !acc_bad(input);
662 
663 
664  if (m_debug) {
665  float emfrac, hecf, LArQuality, HECQuality, Timing, fracSamplingMax, NegativeE, AverageLArQF;
666  std::vector<float> sumpttrk_vec;
667 
668  input.getAttribute(xAOD::JetAttribute::EMFrac, emfrac);
669  input.getAttribute(xAOD::JetAttribute::HECFrac, hecf);
670  input.getAttribute(xAOD::JetAttribute::LArQuality, LArQuality);
671  input.getAttribute(xAOD::JetAttribute::HECQuality, HECQuality);
672  input.getAttribute(xAOD::JetAttribute::Timing, Timing);
673  input.getAttribute(xAOD::JetAttribute::SumPtTrkPt500, sumpttrk_vec);
674  input.getAttribute(xAOD::JetAttribute::FracSamplingMax, fracSamplingMax);
675  input.getAttribute(xAOD::JetAttribute::NegativeE, NegativeE);
676  input.getAttribute(xAOD::JetAttribute::AverageLArQF, AverageLArQF);
677 
678  float sumpttrk;
679  if (!sumpttrk_vec.empty() && this->GetPrimVtx()) {
680  sumpttrk = sumpttrk_vec[this->GetPrimVtx()->index()];
681  } else {
682  sumpttrk = 0.;
683  }
684 
685  ATH_MSG_INFO( "JET pt: " << input.pt() );
686  ATH_MSG_INFO( "JET eta: " << input.eta() );
687  ATH_MSG_INFO( "JET emfrac: " << emfrac );
688  ATH_MSG_INFO( "JET hecfrac: " << hecf );
689  ATH_MSG_INFO( "JET LArQuality: " << LArQuality );
690  ATH_MSG_INFO( "JET HECQuality: " << HECQuality );
691  ATH_MSG_INFO( "JET Timing: " << Timing );
692  ATH_MSG_INFO( "JET sumpttrk: " << sumpttrk );
693  ATH_MSG_INFO( "JET fracSamplingMax: " << fracSamplingMax );
694  ATH_MSG_INFO( "JET AverageLArQF: " << AverageLArQF );
695  }
696 
697  ATH_MSG_VERBOSE( "JET isbad?: " << static_cast<int>(acc_bad(input)));
698 
699  return isgoodjet;
700  }
701 
702 
704 
705  if ( !acc_passOR(input) ) return false;
706 
707  float ptcut = 20e3;
708  if ( m_jetPt < ptcut ) ptcut = m_jetPt;
709 
710  bool isPileup = !acc_passJvt(input);
711 
712  if ( input.pt() <= ptcut || isPileup ) return false;
713 
714  if (m_jetInputType == xAOD::JetInput::EMTopo) { //--- Jet cleaning only well defined for EMTopo jets!
715  if (m_acc_jetClean.isAvailable(input)) {
716  dec_bad(input) = !m_acc_jetClean(input);
717  } else {
718  ATH_MSG_VERBOSE("DFCommon jet cleaning variable not available ... Using jet cleaning tool");
719  dec_bad(input) = m_jetCleaningTool.empty() ? false : !m_jetCleaningTool->keep(input);
720  }
721  }
722  else {
723  dec_bad(input) = false;
724  ATH_MSG_VERBOSE("Jet cleaning is available only for EMTopo jet collection (InputType == 1), your jet collection: " << m_jetInputType );
725  }
726 
727  ATH_MSG_VERBOSE( "JET isbad?: " << static_cast<int>(acc_bad(input)));
728 
729  return acc_bad(input);
730  }
731 
732 
734 
735  bool isbjet = bool(m_btagSelTool->accept(input));
736  dec_bjet(input) = isbjet;
737 
739  ANA_MSG_ERROR("Couldn't set b-tag decorations for jet, is-b = " << (isbjet?"true":"false") << ", pT = " << input.pt()/1000.);
740 
741  return isbjet;
742  }
743 
745 
746  bool isbjet = bool(m_btagSelTool_trkJet->accept(input));
747  dec_bjet(input) = isbjet;
748 
750  ANA_MSG_ERROR("Couldn't set b-tag decorations for trackjet, is-b = " << (isbjet?"true":"false") << ", pT = " << input.pt()/1000.);
751 
752  return isbjet;
753  }
754 
757  // Cheatsheet:
758  // returns 5 if between 60% and 0%
759  // returns 4 if between 70% and 60%
760  // returns 3 if between 77% and 70%
761  // returns 2 if between 85% and 77%
762  // returns 1 if between 100% and 85%
763  // returns 0 if smaller than -1e4-> should never happen
764  // return -1 if bigger than 1e4 or not in b-tagging acceptance
766 
767  int isbjet = m_btagSelTool->getQuantile(input);
768  dec_bjet(input) = isbjet;
769 
771  ANA_MSG_ERROR("Couldn't set continuous b-tag decorations for jet, is-b = " << isbjet << ", pT = " << input.pt()/1000.);
772 
773  return isbjet;
774  }
775 
777 
778  int isbjet = m_btagSelTool_trkJet->getQuantile(input);
779  dec_bjet(input) = isbjet;
780 
782  ANA_MSG_ERROR("Couldn't set continuous b-tag decorations for trackjet, is-b = " << isbjet << ", pT = " << input.pt()/1000.);
783 
784  return isbjet;
785  }
786 
788 
789  float totalSF = 1.;
790  for ( const xAOD::Jet* jet : *jets ) {
791 
792  float sf = 1.;
793 
794  if ( std::abs(jet->eta()) > 2.5 ) {
795  ATH_MSG_VERBOSE( "Trying to retrieve b-tagging SF for jet with |eta|>2.5 (jet eta=" << jet->eta() << "), jet will be skipped");
796  } else if ( jet->pt() < 20e3 ){
797  ATH_MSG_VERBOSE( "Trying to retrieve b-tagging SF for jet with invalid pt (jet pt=" << jet->pt() << "), jet will be skipped");
798  } else {
799 
801  int truthlabel(-1);
802  if (!jet->getAttribute("HadronConeExclTruthLabelID", truthlabel)) {
803  ATH_MSG_ERROR("Failed to get jet truth label!");
804  }
805  ATH_MSG_VERBOSE("This jet is " << (acc_bjet(*jet) ? "" : "not ") << "b-tagged.");
806  ATH_MSG_VERBOSE("This jet's truth label is " << truthlabel);
807 
808  if ( acc_bjet(*jet) or m_BtagWP == "Continuous") {
810 
811  switch (result) {
813  ATH_MSG_ERROR( "Failed to retrieve SF for b-tagged jets in SUSYTools_xAOD::BtagSF" );
814  break;
816  ATH_MSG_VERBOSE( "No valid SF for b-tagged jets in SUSYTools_xAOD::BtagSF" );
817  break;
818  default:
819  ATH_MSG_VERBOSE( "Retrieve SF for b-tagged jets in SUSYTools_xAOD::BtagSF with value " << sf );
820  }
821  } else {
822 
824 
825  switch (result) {
827  ATH_MSG_ERROR( "Failed to retrieve SF for non-b-tagged jets in SUSYTools_xAOD::BtagSF" );
828  break;
830  ATH_MSG_VERBOSE( "No valid inefficiency SF for non-b-tagged jets in SUSYTools_xAOD::BtagSF" );
831  break;
832  default:
833  ATH_MSG_VERBOSE( "Retrieve SF for non-b-tagged jets in SUSYTools_xAOD::BtagSF with value " << sf );
834  }
835  }
836  }
837 
838  dec_effscalefact(*jet) = sf;
839 
840  if( acc_signal(*jet) && acc_passOR(*jet) ) totalSF *= sf; //consider goodjets only
841 
842  }
843 
844  return totalSF;
845  }
846 
847 
849  {
850  float totalSF = 1.;
851 
852  //Set the new systematic variation
854  if ( ret != StatusCode::SUCCESS) {
855  ATH_MSG_ERROR("Cannot configure BTaggingEfficiencyTool for systematic var. " << systConfig.name() );
856  }
857 
858  totalSF = BtagSF( jets );
859 
861  if ( ret != StatusCode::SUCCESS) {
862  ATH_MSG_ERROR("Cannot configure BTaggingEfficiencyTool for systematic var. " << systConfig.name() );
863  }
864 
865  return totalSF;
866  }
867 
869 
870  float totalSF = 1.;
871  for ( const xAOD::Jet* trkjet : *trkjets ) {
872 
873  float sf = 1.;
874 
875  if ( std::abs(trkjet->eta()) > 2.5 ) {
876  ATH_MSG_VERBOSE( "Trying to retrieve b-tagging SF for trkjet with |eta|>2.5 (trkjet eta=" << trkjet->eta() << "), trkjet will be skipped");
877  } else if ( trkjet->pt() < 10e3 ){
878  ATH_MSG_VERBOSE( "Trying to retrieve b-tagging SF for trkjet with invalid pt (trkjet pt=" << trkjet->pt() << "), jet will be skipped");
879  } else {
880 
882  int truthlabel(-1);
883  if (!trkjet->getAttribute("HadronConeExclTruthLabelID", truthlabel)) {
884  ATH_MSG_ERROR("Failed to get jet truth label!");
885  }
886  ATH_MSG_VERBOSE("This jet is " << (acc_bjet(*trkjet) ? "" : "not ") << "b-tagged.");
887  ATH_MSG_VERBOSE("This jet's truth label is " << truthlabel);
888 
889  if ( acc_bjet(*trkjet) ) {
891 
892  switch (result) {
894  ATH_MSG_ERROR( "Failed to retrieve SF for b-tagged trk jets in SUSYTools_xAOD::BtagSF_trkJet" );
895  break;
897  ATH_MSG_VERBOSE( "No valid SF for b-tagged trk jets in SUSYTools_xAOD::BtagSF_trkJet" );
898  break;
899  default:
900  ATH_MSG_VERBOSE( "Retrieve SF for b-tagged trk jets in SUSYTools_xAOD::BtagSF_trkJet with value " << sf );
901  }
902  } else {
903 
905 
906  switch (result) {
908  ATH_MSG_ERROR( "Failed to retrieve SF for non-b-tagged trk jets in SUSYTools_xAOD::BtagSF_trkJet" );
909  break;
911  ATH_MSG_VERBOSE( "No valid inefficiency SF for non-b-tagged trk jets in SUSYTools_xAOD::BtagSF_trkJet" );
912  break;
913  default:
914  ATH_MSG_VERBOSE( "Retrieve SF for non-b-tagged trk jets in SUSYTools_xAOD::BtagSF_trkJet with value " << sf );
915  }
916  }
917  }
918 
919  dec_effscalefact(*trkjet) = sf;
920 
921  if( acc_signal(*trkjet) ) totalSF *= sf;
922 
923  }
924 
925  return totalSF;
926  }
927 
928 
930  {
931  float totalSF = 1.;
932 
933  //Set the new systematic variation
935  if ( ret != StatusCode::SUCCESS) {
936  ATH_MSG_ERROR("Cannot configure BTaggingEfficiencyTool (track jets) for systematic var. " << systConfig.name() );
937  }
938 
939  totalSF = BtagSF_trkJet( trkjets );
940 
942  if ( ret != StatusCode::SUCCESS) {
943  ATH_MSG_ERROR("Cannot configure BTaggingEfficiencyTool (track jets) for systematic var. " << systConfig.name() );
944  }
945 
946  return totalSF;
947  }
948 
950 
951  float totalSF = 1.;
952  if (!m_applyJVTCut) return totalSF;
953 
955  for (const xAOD::Jet* jet : *jets) {
956  // Only jets that were good for every cut except JVT
957  if (acc_signal_less_JVT(*jet) && acc_passOR(*jet)) {
958  jvtjets.push_back(jet);
959  }
960  }
961 
962  for (const xAOD::Jet* jet : jvtjets) {
963  float current_sf = 0;
964 
965  // the SF are only applied for HS jets and implicitely requires the presence of the isHS decoration
967  if (acc_passJvt(*jet)) {
969  }
970  else {
972  }
973 
974  switch (result) {
976  // this is probably not right, should report an error here
977  ATH_MSG_ERROR("Inexplicably failed JVT calibration" );
978  break;
980  // no NNJvt SF for jet, that is ok e.g. for jets with |eta| > 2.5
981  ATH_MSG_VERBOSE( "Skip SF application in SUSYTools_xAOD::JVT_SF as jet outside validate range" );
982  break;
983  default:
984  ATH_MSG_VERBOSE( "Retrieve SF for jet in SUSYTools_xAOD::JVT_SF with value " << current_sf );
985  totalSF *= current_sf;
986  }
987 
988  }
989 
990  ATH_MSG_VERBOSE( "Retrieve total SF for jet container in SUSYTools_xAOD::JVT_SF with value " << totalSF );
991 
992  return totalSF;
993  }
994 
995 
997 
998  float totalSF = 1.;
999  if (!m_applyJVTCut) return totalSF;
1000 
1001  //Set the new systematic variation
1003  if ( ret != StatusCode::SUCCESS) {
1004  ATH_MSG_ERROR("Cannot configure NNjvtEfficiencyTool for systematic var. " << systConfig.name() );
1005  }
1006 
1007  // Delegate
1008  totalSF = SUSYObjDef_xAOD::JVT_SF( jets );
1009 
1010  // }
1011  if (m_applyJVTCut) {
1013  if ( ret != StatusCode::SUCCESS) {
1014  ATH_MSG_ERROR("Cannot configure NNjvtEfficiencyTool for systematic var. " << systConfig.name() );
1015  }
1016  }
1017 
1018  return totalSF;
1019  }
1020 
1022 
1023  float totalSF = 1.;
1024  if (!m_doFwdJVT) return totalSF;
1025 
1027  for (const xAOD::Jet* jet : *jets) {
1028  // Only jets that were good for every cut except JVT
1029  if (acc_signal_less_JVT(*jet) && acc_passOR(*jet)) {
1030  fjvtjets.push_back(jet);
1031  }
1032  }
1033 
1034  for (const xAOD::Jet* jet : fjvtjets) {
1035  float current_sf = 0;
1036 
1037  // the SF are only applied for HS jets and implicitely requires the presense of the isHS decoration
1039  if (acc_passFJvt(*jet)) {
1041  }
1042  else {
1044  }
1045 
1046  switch (result) {
1048  // this is probably not right, should report an error here
1049  ATH_MSG_ERROR("Inexplicably failed fJVT calibration" );
1050  break;
1052  // no fJvt SF for jet, that is ok e.g. for jets with |eta| < 2.5
1053  ATH_MSG_VERBOSE( "Skip SF application in SUSYTools_xAOD::FJVT_SF as jet outside validate range" );
1054  break;
1055  default:
1056  ATH_MSG_VERBOSE( "Retrieve SF for jet in SUSYTools_xAOD::FJVT_SF with value " << current_sf );
1057  totalSF *= current_sf;
1058  }
1059 
1060  }
1061 
1062  ATH_MSG_VERBOSE( "Retrieve total SF for jet container in SUSYTools_xAOD::FJVT_SF with value " << totalSF );
1063 
1064  return totalSF;
1065  }
1066 
1068 
1069  float totalSF = 1.;
1070  if (!m_doFwdJVT) return totalSF;
1071 
1072  //Set the new systematic variation
1074  if ( ret != StatusCode::SUCCESS) {
1075  ATH_MSG_ERROR("Cannot configure fJvtEfficiencyTool for systematic var. " << systConfig.name() );
1076  }
1077 
1078  // Delegate
1079  totalSF = SUSYObjDef_xAOD::FJVT_SF( jets );
1080 
1081  if (m_doFwdJVT) {
1083  if ( ret != StatusCode::SUCCESS) {
1084  ATH_MSG_ERROR("Cannot configure fJvtEfficiencyTool for systematic var. " << systConfig.name() );
1085  }
1086  }
1087 
1088  return totalSF;
1089  }
1090 
1091  double SUSYObjDef_xAOD::GetTotalJetSF(const xAOD::JetContainer* jets, const bool btagSF, const bool jvtSF, const bool fjvtSF) {
1092 
1093  double totalSF = 1.;
1094  if (btagSF) totalSF *= BtagSF(jets);
1095 
1096  if (jvtSF && m_applyJVTCut) totalSF *= JVT_SF(jets);
1097 
1098  if (fjvtSF) totalSF *= FJVT_SF(jets);
1099 
1100  return totalSF;
1101  }
1102 
1103 
1104  double SUSYObjDef_xAOD::GetTotalJetSFsys(const xAOD::JetContainer* jets, const CP::SystematicSet& systConfig, const bool btagSF, const bool jvtSF, const bool fjvtSF) {
1105 
1106  double totalSF = 1.;
1107  if (btagSF) totalSF *= BtagSFsys(jets, systConfig);
1108 
1109  if (jvtSF && m_applyJVTCut) totalSF *= JVT_SFsys(jets, systConfig);
1110 
1111  if (fjvtSF) totalSF *= FJVT_SFsys(jets, systConfig);
1112 
1113  return totalSF;
1114  }
1115 
1117  double weight = 0.;
1118  if ( btagSelTool->getTaggerWeight(input, weight, false/*useVetoWP=false*/) != CP::CorrectionCode::Ok ) {
1119  ATH_MSG_ERROR( btagSelTool->name() << ": could not retrieve b-tag weight (" << btagTagger << ")." );
1120  return StatusCode::FAILURE;
1121  }
1122  dec_btag_weight(input) = weight;
1123  ATH_MSG_DEBUG( btagSelTool->name() << " b-tag weight: " << weight );
1124 
1125  double btag_pb(-10), btag_pc(-10), btag_pu(-10), btag_ptau(-10);
1126  // following name change is needed given different name is used for GN2v00 in derivation and in CDI
1127  std::string actualTagger = btagTagger;
1128  if (btagTagger == "GN2v00LegacyWP" || btagTagger == "GN2v00NewAliasWP"){
1129  actualTagger = "GN2v00";
1130  }
1131  xAOD::BTaggingUtilities::getBTagging(input)->pb(actualTagger, btag_pb);
1132  xAOD::BTaggingUtilities::getBTagging(input)->pc(actualTagger, btag_pc);
1133  xAOD::BTaggingUtilities::getBTagging(input)->pu(actualTagger, btag_pu);
1134  xAOD::BTaggingUtilities::getBTagging(input)->pu(actualTagger, btag_ptau);
1135  dec_btag_pb(input) = btag_pb;
1136  dec_btag_pc(input) = btag_pc;
1137  dec_btag_pu(input) = btag_pu;
1138  dec_btag_ptau(input) = btag_ptau;
1139  ATH_MSG_DEBUG( btagSelTool->name() << " b-tag " << btagTagger << "-type pb: " << btag_pb );
1140  ATH_MSG_DEBUG( btagSelTool->name() << " b-tag " << btagTagger << "-type pc: " << btag_pc );
1141  ATH_MSG_DEBUG( btagSelTool->name() << " b-tag " << btagTagger << "-type pu: " << btag_pu );
1142  ATH_MSG_DEBUG( btagSelTool->name() << " b-tag " << btagTagger << "-type ptau: " << btag_ptau );
1143  // backwards compatibility
1144  if ( btagSelTool->name().find("DL1")!=std::string::npos ) {
1145  dec_btag_dl1pb(input) = btag_pb;
1146  dec_btag_dl1pc(input) = btag_pc;
1147  dec_btag_dl1pu(input) = btag_pu;
1148  }
1149  else {
1150  dec_btag_dl1pb(input) = -10;
1151  dec_btag_dl1pc(input) = -10;
1152  dec_btag_dl1pu(input) = -10;
1153  }
1154  return StatusCode::SUCCESS;
1155  }
1156 }
ST::SUSYObjDef_xAOD::m_WDecorName
std::string m_WDecorName
Definition: SUSYObjDef_xAOD.h:544
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
ST::SUSYObjDef_xAOD::m_applyJVTCut
bool m_applyJVTCut
Definition: SUSYObjDef_xAOD.h:805
JetPileupLabelingTool::decorate
StatusCode decorate(const xAOD::JetContainer &jets) const override
Decorate hard-scatter and pileup labels to a jet collection.
Definition: JetPileupLabelingTool.cxx:43
BTaggingUtilities.h
ST::SUSYObjDef_xAOD::m_jetfJvtEfficiencyTool
asg::AnaToolHandle< CP::IJvtEfficiencyTool > m_jetfJvtEfficiencyTool
Definition: SUSYObjDef_xAOD.h:825
ST::SUSYObjDef_xAOD::GetJets
StatusCode GetJets(xAOD::JetContainer *&copy, xAOD::ShallowAuxContainer *&copyaux, const bool recordSG=true, const std::string &jetkey="", const xAOD::JetContainer *containerToBeCopied=nullptr) override final
Definition: Jets.cxx:76
asg::AnaToolHandle< IBTaggingSelectionTool >
ST::SUSYObjDef_xAOD::BtagSF
float BtagSF(const xAOD::JetContainer *jets) override final
Definition: Jets.cxx:787
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
ST::SUSYObjDef_xAOD::m_ZTagjetUncertaintiesTool
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_ZTagjetUncertaintiesTool
Definition: SUSYObjDef_xAOD.h:832
ST::SUSYObjDef_xAOD::IsTrackBJetContinuous
int IsTrackBJetContinuous(const xAOD::Jet &input) const override final
Definition: Jets.cxx:776
ST::SUSYObjDef_xAOD::IsTruthBJet
bool IsTruthBJet(const xAOD::Jet &input) const override final
Definition: Truth.cxx:309
get_generator_info.result
result
Definition: get_generator_info.py:21
xAOD::JetAttribute::LArQuality
@ LArQuality
Definition: JetAttributes.h:83
max
#define max(a, b)
Definition: cfImp.cxx:41
TrackParticlexAODHelpers.h
ST::SUSYObjDef_xAOD::JVT_SFsys
double JVT_SFsys(const xAOD::JetContainer *jets, const CP::SystematicSet &systConfig) override final
Definition: Jets.cxx:996
ST::SUSYObjDef_xAOD::m_BtagWP
std::string m_BtagWP
Definition: SUSYObjDef_xAOD.h:664
xAOD::JetAttribute::FracSamplingMax
@ FracSamplingMax
Definition: JetAttributes.h:116
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
CP::IJvtEfficiencyTool::getEfficiencyScaleFactor
virtual CorrectionCode getEfficiencyScaleFactor(const xAOD::Jet &jet, float &sf) const =0
Calculate the efficiency scale factor for the provided jet.
ST::SUSYObjDef_xAOD::m_label_truthKey
SG::ReadDecorHandleKey< xAOD::JetContainer > m_label_truthKey
Definition: SUSYObjDef_xAOD.h:835
ST::SUSYObjDef_xAOD::IsBJet
bool IsBJet(const xAOD::Jet &input) const override final
Definition: Jets.cxx:733
ST::SUSYObjDef_xAOD::m_ZTagUncConfig
std::string m_ZTagUncConfig
Definition: SUSYObjDef_xAOD.h:553
SG::VIEW_ELEMENTS
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts
Definition: OwnershipPolicy.h:18
ConstDataVector.h
DataVector adapter that acts like it holds const pointers.
xAODP4Helpers.h
ST::SUSYObjDef_xAOD::m_jetNNJvtMomentTool
asg::AnaToolHandle< JetPileupTag::JetVertexNNTagger > m_jetNNJvtMomentTool
Definition: SUSYObjDef_xAOD.h:821
CP::IJvtEfficiencyTool::getInefficiencyScaleFactor
virtual CorrectionCode getInefficiencyScaleFactor(const xAOD::Jet &jet, float &sf) const =0
Calculate the inefficiency scale factor for the provided jet.
ST
Definition: Electrons.cxx:41
ST::SUSYObjDef_xAOD::m_jetInputType
int m_jetInputType
Definition: SUSYObjDef_xAOD.h:514
xAOD::ShallowAuxContainer
Class creating a shallow copy of an existing auxiliary container.
Definition: ShallowAuxContainer.h:54
CP::SystematicSet
Class to wrap a set of SystematicVariations.
Definition: SystematicSet.h:31
ST::SUSYObjDef_xAOD::m_TopTaggerTool
asg::AnaToolHandle< JSSWTopTaggerDNN > m_TopTaggerTool
Definition: SUSYObjDef_xAOD.h:829
ST::SUSYObjDef_xAOD::m_orBtagWP
std::string m_orBtagWP
Definition: SUSYObjDef_xAOD.h:767
ST::SUSYObjDef_xAOD::m_acc_jetClean
SG::AuxElement::ConstAccessor< char > m_acc_jetClean
Definition: SUSYObjDef_xAOD.h:978
CP::SystematicSet::name
std::string name() const
returns: the systematics joined into a single string.
Definition: SystematicSet.cxx:278
ANA_MSG_ERROR
#define ANA_MSG_ERROR(xmsg)
Macro printing error messages.
Definition: Control/AthToolSupport/AsgMessaging/AsgMessaging/MessageCheck.h:294
SUSYObjDef_xAOD.h
xAOD::ShallowAuxContainer::name
const char * name() const
Get the name of the container instance.
Definition: ShallowAuxContainer.cxx:575
IBTaggingSelectionTool::getTaggerWeight
virtual CP::CorrectionCode getTaggerWeight(const xAOD::Jet &jet, double &tagweight) const =0
ST::SUSYObjDef_xAOD::m_WTaggerTool
asg::AnaToolHandle< SmoothedWZTagger > m_WTaggerTool
Definition: SUSYObjDef_xAOD.h:827
SG::ConstAccessor
Helper class to provide constant type-safe access to aux data.
Definition: ConstAccessor.h:54
ST::SUSYObjDef_xAOD::GetPrimVtx
const xAOD::Vertex * GetPrimVtx() const override final
Definition: SUSYObjDef_xAOD.cxx:2837
ST::SUSYObjDef_xAOD::GetFatJets
StatusCode GetFatJets(xAOD::JetContainer *&copy, xAOD::ShallowAuxContainer *&copyaux, const bool recordSG=false, const std::string &jetkey="", const bool doLargeRdecorations=false, const xAOD::JetContainer *containerToBeCopied=nullptr) override final
Definition: Jets.cxx:243
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
ST::SUSYObjDef_xAOD::m_jetUncertaintiesPDSmearTool
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_jetUncertaintiesPDSmearTool
Definition: SUSYObjDef_xAOD.h:815
ST::SUSYObjDef_xAOD::FillJet
StatusCode FillJet(xAOD::Jet &input, const bool doCalib=true, bool isFat=false, bool doLargeRdecorations=false) override final
Definition: Jets.cxx:384
IJetSelector.h
ST::SUSYObjDef_xAOD::m_debug
bool m_debug
Definition: SUSYObjDef_xAOD.h:532
IJetModifier.h
IJetDecorator.h
Pythia8_A14_NNPDF23LO_forMGHT_EvtGen.ptcut
float ptcut
Definition: Pythia8_A14_NNPDF23LO_forMGHT_EvtGen.py:9
ST::SUSYObjDef_xAOD::m_tool_init
bool m_tool_init
Definition: SUSYObjDef_xAOD.h:557
IJetCalibrationTool.h
ST::SUSYObjDef_xAOD::BtagSF_trkJet
float BtagSF_trkJet(const xAOD::JetContainer *trkjets) override final
Definition: Jets.cxx:868
dqt_zlumi_pandas.weight
int weight
Definition: dqt_zlumi_pandas.py:200
ST::SUSYObjDef_xAOD::IsTrackBJet
bool IsTrackBJet(const xAOD::Jet &input) const override final
Definition: Jets.cxx:744
ST::SUSYObjDef_xAOD::m_btagEffTool_trkJet
asg::AnaToolHandle< IBTaggingEfficiencyTool > m_btagEffTool_trkJet
Definition: SUSYObjDef_xAOD.h:908
ST::SUSYObjDef_xAOD::FillTrackJet
StatusCode FillTrackJet(xAOD::Jet &input) override final
Definition: Jets.cxx:601
ST::SUSYObjDef_xAOD::FJVT_SFsys
double FJVT_SFsys(const xAOD::JetContainer *jets, const CP::SystematicSet &systConfig) override final
Definition: Jets.cxx:1067
ST::SUSYObjDef_xAOD::m_trkJetPt
double m_trkJetPt
Definition: SUSYObjDef_xAOD.h:730
xAOD::JetConstitScaleMomentum
@ JetConstitScaleMomentum
Definition: JetTypes.h:29
ST::SUSYObjDef_xAOD::GetJetsSyst
StatusCode GetJetsSyst(const xAOD::JetContainer &calibjets, xAOD::JetContainer *&copy, xAOD::ShallowAuxContainer *&copyaux, const bool recordSG=true, const std::string &jetkey="") override final
Definition: Jets.cxx:322
AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
ST::SUSYObjDef_xAOD::m_isPHYSLITE
bool m_isPHYSLITE
Definition: SUSYObjDef_xAOD.h:789
IBTaggingEfficiencyTool.h
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
ST::SUSYObjDef_xAOD::m_defaultJets
std::string m_defaultJets
Definition: SUSYObjDef_xAOD.h:795
ST::SUSYObjDef_xAOD::m_useBtagging
bool m_useBtagging
Definition: SUSYObjDef_xAOD.h:530
xAOD::JetAttribute::HECQuality
@ HECQuality
Definition: JetAttributes.h:80
METHelpers.h
met::addGhostMuonsToJets
void addGhostMuonsToJets(const xAOD::MuonContainer &muons, xAOD::JetContainer &jets)
Definition: METHelpers.cxx:34
jet
Definition: JetCalibTools_PlotJESFactors.cxx:23
ST::SUSYObjDef_xAOD::m_jetEta
double m_jetEta
Definition: SUSYObjDef_xAOD.h:723
IBTaggingSelectionTool.h
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
ST::SUSYObjDef_xAOD::IsBJetContinuous
int IsBJetContinuous(const xAOD::Jet &input) const override final
Definition: Jets.cxx:755
IAsgSelectionTool::accept
virtual asg::AcceptData accept(const xAOD::IParticle *) const =0
The main accept method: the actual cuts are applied here.
CheckAppliedSFs.e3
e3
Definition: CheckAppliedSFs.py:264
SG::ReadDecorHandle
Handle class for reading a decoration on an object.
Definition: StoreGate/StoreGate/ReadDecorHandle.h:94
xAOD::BTagging_v1::pc
bool pc(const std::string &taggername, double &value) const
Definition: BTagging_v1.cxx:367
doubleTestComp.j1
j1
Definition: doubleTestComp.py:21
SG::Decorator
Helper class to provide type-safe access to aux data.
Definition: Decorator.h:58
ST::SUSYObjDef_xAOD::m_jetCalibTool
asg::AnaToolHandle< IJetCalibrationTool > m_jetCalibTool
Definition: SUSYObjDef_xAOD.h:812
ST::SUSYObjDef_xAOD::m_BtagTagger
std::string m_BtagTagger
Definition: SUSYObjDef_xAOD.h:665
IJetSelector::keep
virtual int keep(const xAOD::Jet &jet) const =0
Method to select.
xAOD::P4Helpers::deltaR
double deltaR(double rapidity1, double phi1, double rapidity2, double phi2)
from bare bare rapidity,phi
Definition: xAODP4Helpers.h:150
ret
T ret(T t)
Definition: rootspy.cxx:260
xAOD::JetAttribute::EMFrac
@ EMFrac
Definition: JetAttributes.h:112
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
ST::SUSYObjDef_xAOD::m_jetUncertaintiesTool
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_jetUncertaintiesTool
Definition: SUSYObjDef_xAOD.h:814
ST::SUSYObjDef_xAOD::IsSignalJet
bool IsSignalJet(const xAOD::Jet &input, const float ptcut, const float etacut) const override final
Definition: Jets.cxx:651
PlotPulseshapeFromCool.input
input
Definition: PlotPulseshapeFromCool.py:106
ST::SUSYObjDef_xAOD::m_ZTaggerTool
asg::AnaToolHandle< SmoothedWZTagger > m_ZTaggerTool
Definition: SUSYObjDef_xAOD.h:828
ST::SUSYObjDef_xAOD::FJVT_SF
double FJVT_SF(const xAOD::JetContainer *jets) override final
Definition: Jets.cxx:1021
xAOD::JetAttribute::Timing
@ Timing
Definition: JetAttributes.h:90
ST::SUSYObjDef_xAOD::m_jetfJvtSelectionTool
asg::AnaToolHandle< IAsgSelectionTool > m_jetfJvtSelectionTool
Definition: SUSYObjDef_xAOD.h:824
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
ST::SUSYObjDef_xAOD::m_jetUncertaintiesPDsmearing
bool m_jetUncertaintiesPDsmearing
Definition: SUSYObjDef_xAOD.h:528
ST::SUSYObjDef_xAOD::GetTrackJets
StatusCode GetTrackJets(xAOD::JetContainer *&copy, xAOD::ShallowAuxContainer *&copyaux, const bool recordSG=true, const std::string &jetkey="", const xAOD::JetContainer *containerToBeCopied=nullptr) override final
Definition: Jets.cxx:170
ST::SUSYObjDef_xAOD::m_jetPileupLabelingTool
asg::AnaToolHandle< JetPileupLabelingTool > m_jetPileupLabelingTool
Definition: SUSYObjDef_xAOD.h:820
ST::SUSYObjDef_xAOD::m_WTagjetUncertaintiesTool
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_WTagjetUncertaintiesTool
Definition: SUSYObjDef_xAOD.h:831
ST::SUSYObjDef_xAOD::isData
bool isData() const override final
Definition: SUSYObjDef_xAOD.h:156
ST::SUSYObjDef_xAOD::IsBadJet
bool IsBadJet(const xAOD::Jet &input) const override final
Definition: Jets.cxx:703
ST::SUSYObjDef_xAOD::m_btagSelTool_trkJet
asg::AnaToolHandle< IBTaggingSelectionTool > m_btagSelTool_trkJet
Definition: SUSYObjDef_xAOD.h:909
SG::AuxElement::index
size_t index() const
Return the index of this element within its container.
ST::SUSYObjDef_xAOD::m_fatjetUncertaintiesTool
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_fatjetUncertaintiesTool
Definition: SUSYObjDef_xAOD.h:816
ICPJetUncertaintiesTool::applyCorrection
virtual CP::CorrectionCode applyCorrection(xAOD::Jet &input) const =0
IBTaggingEfficiencyTool::getScaleFactor
virtual CP::CorrectionCode getScaleFactor(const xAOD::Jet &jet, float &sf)=0
Declare the interface that the class provides.
ST::SUSYObjDef_xAOD::m_WTagUncConfig
std::string m_WTagUncConfig
Definition: SUSYObjDef_xAOD.h:552
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
ST::SUSYObjDef_xAOD::SetBtagWeightDecorations
StatusCode SetBtagWeightDecorations(const xAOD::Jet &input, const asg::AnaToolHandle< IBTaggingSelectionTool > &btagSelTool, const std::string &btagTagger) const override final
Definition: Jets.cxx:1116
ST::SUSYObjDef_xAOD::m_jetPt
double m_jetPt
Definition: SUSYObjDef_xAOD.h:722
min
#define min(a, b)
Definition: cfImp.cxx:40
xAOD::BTagging_v1::pu
bool pu(const std::string &taggername, double &value) const
Definition: BTagging_v1.cxx:353
ST::SUSYObjDef_xAOD::m_ToptagConfig
std::string m_ToptagConfig
Definition: SUSYObjDef_xAOD.h:549
xAOD::JetAttribute::AverageLArQF
@ AverageLArQF
Definition: JetAttributes.h:85
xAOD::JetAttribute::SumPtTrkPt500
@ SumPtTrkPt500
Definition: JetAttributes.h:108
ST::SUSYObjDef_xAOD::m_useBtagging_trkJet
bool m_useBtagging_trkJet
Definition: SUSYObjDef_xAOD.h:531
ST::SUSYObjDef_xAOD::m_doFwdJVT
bool m_doFwdJVT
Definition: SUSYObjDef_xAOD.h:733
ICPJetUncertaintiesTool.h
ST::SUSYObjDef_xAOD::m_btagSelTool_OR
asg::AnaToolHandle< IBTaggingSelectionTool > m_btagSelTool_OR
Definition: SUSYObjDef_xAOD.h:907
ConstDataVector::push_back
value_type push_back(value_type pElem)
Add an element to the end of the collection.
SmoothedWZTagger::tag
virtual StatusCode tag(const xAOD::Jet &jet) const override
Decorate single jet with tagging info.
Definition: SmoothedWZTagger.cxx:177
IBTaggingSelectionTool::getQuantile
virtual int getQuantile(const xAOD::IParticle *) const =0
Decide in which quantile of the tagger weight distribution the jet belongs The return value represent...
ST::SUSYObjDef_xAOD::m_trkJetEta
double m_trkJetEta
Definition: SUSYObjDef_xAOD.h:731
ST::SUSYObjDef_xAOD::m_BtagWP_trkJet
std::string m_BtagWP_trkJet
Definition: SUSYObjDef_xAOD.h:669
xAOD::ShallowAuxContainer::setName
void setName(const char *name)
Set the name of the container instance.
Definition: ShallowAuxContainer.cxx:580
xAOD::shallowCopyContainer
std::pair< std::unique_ptr< T >, std::unique_ptr< ShallowAuxContainer > > shallowCopyContainer(const T &cont, [[maybe_unused]] const EventContext &ctx)
Function making a shallow copy of a constant container.
Definition: ShallowCopy.h:110
ST::SUSYObjDef_xAOD::GetTotalJetSFsys
double GetTotalJetSFsys(const xAOD::JetContainer *jets, const CP::SystematicSet &systConfig, const bool btagSF=true, const bool jvtSF=true, const bool fjvtSF=false) override final
Definition: Jets.cxx:1104
InDet::TrkOrigin::isPileup
bool isPileup(int origin)
from pileup
Definition: InDetTrackTruthOriginDefs.h:49
xAOD::JetInput::EMTopo
@ EMTopo
Definition: JetContainerInfo.h:56
AthAnalysisHelper.h
xAOD::BTaggingUtilities::getBTagging
const BTagging * getBTagging(const SG::AuxElement &part)
Access the default xAOD::BTagging object associated to an object.
Definition: BTaggingUtilities.cxx:37
ST::SUSYObjDef_xAOD::m_btagSelTool
asg::AnaToolHandle< IBTaggingSelectionTool > m_btagSelTool
Definition: SUSYObjDef_xAOD.h:906
ST::SUSYObjDef_xAOD::m_jetNNJvtSelectionTool
asg::AnaToolHandle< IAsgSelectionTool > m_jetNNJvtSelectionTool
Definition: SUSYObjDef_xAOD.h:822
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
ST::SUSYObjDef_xAOD::m_btagEffTool
asg::AnaToolHandle< IBTaggingEfficiencyTool > m_btagEffTool
Definition: SUSYObjDef_xAOD.h:905
ST::SUSYObjDef_xAOD::m_fatJets
std::string m_fatJets
Definition: SUSYObjDef_xAOD.h:797
ST::SUSYObjDef_xAOD::m_BtagTagger_trkJet
std::string m_BtagTagger_trkJet
Definition: SUSYObjDef_xAOD.h:670
mapkey::sf
@ sf
Definition: TElectronEfficiencyCorrectionTool.cxx:38
JetTruthLabelingTool::decorate
StatusCode decorate(const xAOD::JetContainer &jets) const override
decorate truth label to a jet collection
Definition: JetTruthLabelingTool.cxx:303
ST::SUSYObjDef_xAOD::m_JetTruthLabelName
std::string m_JetTruthLabelName
Definition: SUSYObjDef_xAOD.h:555
ST::SUSYObjDef_xAOD::JVT_SF
double JVT_SF(const xAOD::JetContainer *jets) override final
Definition: Jets.cxx:949
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
ConstDataVector
DataVector adapter that acts like it holds const pointers.
Definition: ConstDataVector.h:76
ST::SUSYObjDef_xAOD::BtagSFsys_trkJet
float BtagSFsys_trkJet(const xAOD::JetContainer *trkjets, const CP::SystematicSet &systConfig) override final
Definition: Jets.cxx:929
xAOD::setOriginalObjectLink
bool setOriginalObjectLink(const IParticle &original, IParticle &copy)
This function should be used by CP tools when they make a deep copy of an object in their correctedCo...
Definition: IParticleHelpers.cxx:30
ST::SUSYObjDef_xAOD::m_defaultTrackJets
std::string m_defaultTrackJets
Definition: SUSYObjDef_xAOD.h:796
ST::SUSYObjDef_xAOD::m_TopTagUncConfig
std::string m_TopTagUncConfig
Definition: SUSYObjDef_xAOD.h:554
IJetCalibrationTool::applyCalibration
virtual StatusCode applyCalibration(xAOD::JetContainer &jets) const =0
Apply calibration to a jet container.
IJetUpdateJvt.h
CP::CorrectionCode
Return value from object correction CP tools.
Definition: CorrectionCode.h:31
ST::SUSYObjDef_xAOD::m_currentSyst
CP::SystematicSet m_currentSyst
Definition: SUSYObjDef_xAOD.h:801
ST::SUSYObjDef_xAOD::m_jetFatCalibTool
asg::AnaToolHandle< IJetCalibrationTool > m_jetFatCalibTool
Definition: SUSYObjDef_xAOD.h:813
ST::SUSYObjDef_xAOD::m_jetNNJvtEfficiencyTool
asg::AnaToolHandle< CP::IJvtEfficiencyTool > m_jetNNJvtEfficiencyTool
Definition: SUSYObjDef_xAOD.h:823
ST::SUSYObjDef_xAOD::BtagSFsys
float BtagSFsys(const xAOD::JetContainer *jets, const CP::SystematicSet &systConfig) override final
Definition: Jets.cxx:848
ST::SUSYObjDef_xAOD::m_jetTruthLabelingTool
asg::AnaToolHandle< JetTruthLabelingTool > m_jetTruthLabelingTool
Definition: SUSYObjDef_xAOD.h:830
ST::SUSYObjDef_xAOD::m_ZDecorName
std::string m_ZDecorName
Definition: SUSYObjDef_xAOD.h:545
IBTaggingSelectionTool::accept
virtual asg::AcceptData accept(const xAOD::IParticle *p) const =0
Declare the interface that the class provides.
xAOD::JetAttribute::HECFrac
@ HECFrac
Definition: JetAttributes.h:113
defineDB.jets
list jets
Definition: JetTagCalibration/share/defineDB.py:24
IParticleHelpers.h
ST::SUSYObjDef_xAOD::GetTotalJetSF
double GetTotalJetSF(const xAOD::JetContainer *jets, const bool btagSF=true, const bool jvtSF=true, const bool fjvtSF=false) override final
Definition: Jets.cxx:1091
ST::SUSYObjDef_xAOD::JetPassJVT
bool JetPassJVT(xAOD::Jet &input) override final
Definition: Jets.cxx:645
calibdata.copy
bool copy
Definition: calibdata.py:27
ST::SUSYObjDef_xAOD::m_TopTagjetUncertaintiesTool
asg::AnaToolHandle< ICPJetUncertaintiesTool > m_TopTagjetUncertaintiesTool
Definition: SUSYObjDef_xAOD.h:833
IBTaggingEfficiencyTool::getInefficiencyScaleFactor
virtual CP::CorrectionCode getInefficiencyScaleFactor(const xAOD::Jet &jet, float &sf)=0
JetPileupTag::JetVertexNNTagger::decorate
virtual StatusCode decorate(const xAOD::JetContainer &jetCont) const override
Decorate a jet collection without otherwise modifying it.
Definition: JetVertexNNTagger.cxx:146
ST::SUSYObjDef_xAOD::m_ZtagConfig
std::string m_ZtagConfig
Definition: SUSYObjDef_xAOD.h:548
xAOD::bool
setBGCode setTAP setLVL2ErrorBits bool
Definition: TrigDecision_v1.cxx:60
SG::ReadDecorHandle::isAvailable
bool isAvailable()
Test to see if this variable exists in the store, for the referenced object.
CP::ISystematicsTool::applySystematicVariation
virtual StatusCode applySystematicVariation(const SystematicSet &systConfig)=0
effects: configure this tool for the given list of systematic variations.
ST::SUSYObjDef_xAOD::m_jetCleaningTool
asg::AnaToolHandle< IJetSelector > m_jetCleaningTool
Definition: SUSYObjDef_xAOD.h:817
asg::AnaToolHandle::empty
bool empty() const
whether this ToolHandle is completely empty, i.e.
IJetJvtEfficiency.h
ST::SUSYObjDef_xAOD::m_TopDecorName
std::string m_TopDecorName
Definition: SUSYObjDef_xAOD.h:546
doubleTestComp.j2
j2
Definition: doubleTestComp.py:22
xAOD::JetAttribute::NegativeE
@ NegativeE
Definition: JetAttributes.h:84
ST::SUSYObjDef_xAOD::m_WtagConfig
std::string m_WtagConfig
Definition: SUSYObjDef_xAOD.h:547
JSSWTopTaggerDNN::tag
virtual StatusCode tag(const xAOD::Jet &jet) const override
Decorate single jet with tagging info.
Definition: JSSWTopTaggerDNN.cxx:208
xAOD::BTagging_v1::pb
bool pb(const std::string &taggername, double &value) const
Definition: BTagging_v1.cxx:360
ST::SUSYObjDef_xAOD::IsBJetLoose
bool IsBJetLoose(const xAOD::Jet &input) const override final
Definition: Jets.cxx:638