ATLAS Offline Software
Public Types | Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
JetCalibrationTool Class Reference

#include <JetCalibrationTool.h>

Inheritance diagram for JetCalibrationTool:
Collaboration diagram for JetCalibrationTool:

Public Types

enum  jetScale { EM, LC, PFLOW }
 

Public Member Functions

 JetCalibrationTool (const std::string &name="JetCalibrationTool")
 Constructor with parameters: More...
 
 ~JetCalibrationTool ()
 Destructor: More...
 
StatusCode initialize () override
 Dummy implementation of the initialisation function. More...
 
StatusCode applyCalibration (xAOD::JetContainer &) const override
 Apply calibration to a jet container. More...
 
StatusCode getNominalResolutionData (const xAOD::Jet &jet, double &resolution) const override
 
StatusCode getNominalResolutionMC (const xAOD::Jet &jet, double &resolution) const override
 
virtual void print () const
 Print the state of the tool. More...
 
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & evtStore () const
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc. More...
 
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm. More...
 
virtual StatusCode sysStart () override
 Handle START transition. More...
 
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles. More...
 
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles. More...
 
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T > &t)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc="none")
 Declare a new Gaudi property. More...
 
void updateVHKA (Gaudi::Details::PropertyBase &)
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) const
 
bool msgLvl (const MSG::Level lvl) const
 
virtual StatusCode modify (xAOD::JetContainer &jets) const override final
 Apply calibration to a jet container (for IJetModifier interface). More...
 

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution More...
 
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)
 
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed. More...
 

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

StatusCode calibrate (xAOD::Jet &jet, JetEventInfo &jetEventInfo) const
 
StatusCode initializeEvent (JetEventInfo &jetEventInfo) const
 
StatusCode getCalibClass (const TString &calibration)
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Private Attributes

SG::ReadHandleKey< xAOD::EventInfom_evtInfoKey {this, "EventInfoKey", "EventInfo"}
 
SG::ReadHandleKey< xAOD::EventShapem_rhoKey {this, "RhoKey", "auto"}
 
SG::ReadHandleKey< xAOD::VertexContainerm_pvKey {this, "PrimaryVerticesContainerName", "PrimaryVertices"}
 
SG::ReadDecorHandleKey< xAOD::EventInfom_muKey
 
SG::ReadDecorHandleKey< xAOD::EventInfom_actualMuKey
 
std::string m_jetAlgo
 
std::string m_config
 
std::string m_calibSeq
 
std::string m_calibAreaTag
 
std::string m_originScale
 
bool m_devMode
 
bool m_isData
 
bool m_timeDependentCalib
 
bool m_originCorrectedClusters
 
bool m_useNjetInResidual
 
float m_nJetThreshold
 
std::string m_nJetContainerName
 
std::string m_dir
 
std::string m_eInfoName
 
std::vector< TString > m_timeDependentInsituConfigs
 
std::vector< double > m_runBins
 
bool m_doSetDetectorEta
 
bool m_insituCombMassCalib
 
std::vector< TString > m_insituCombMassConfig
 
TEnv * m_globalConfig
 
std::vector< TEnv * > m_globalTimeDependentConfigs
 
std::vector< TEnv * > m_globalInsituCombMassConfig
 
jetScale m_jetScale
 
bool m_doBcid
 
bool m_doJetArea
 
bool m_doResidual
 
bool m_doOrigin
 
bool m_doGSC
 
bool m_doDNNCal
 
std::string m_gscDepth
 
std::vector< std::unique_ptr< JetCalibrationStep > > m_calibSteps
 
int m_smearIndex
 
bool m_useOriginVertex
 
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default) More...
 
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default) More...
 
std::vector< SG::VarHandleKeyArray * > m_vhka
 
bool m_varHandleArraysDeclared
 

Detailed Description

Definition at line 32 of file JetCalibrationTool.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Member Enumeration Documentation

◆ jetScale

Enumerator
EM 
LC 
PFLOW 

Definition at line 45 of file JetCalibrationTool.h.

45 { EM, LC, PFLOW };

Constructor & Destructor Documentation

◆ JetCalibrationTool()

JetCalibrationTool::JetCalibrationTool ( const std::string &  name = "JetCalibrationTool")

Constructor with parameters:

Definition at line 27 of file JetCalibrationTool.cxx.

28  : asg::AsgTool( name ),
29  m_jetAlgo(""), m_config(""), m_calibSeq(""), m_calibAreaTag(""), m_originScale(""), m_devMode(false),
30  m_isData(true), m_timeDependentCalib(false), m_dir(""), m_eInfoName(""), m_globalConfig(nullptr),
31  m_doBcid(true), m_doJetArea(true), m_doResidual(true), m_doOrigin(true), m_doGSC(true), m_doDNNCal(false), m_gscDepth("auto"), m_smearIndex(-1), m_useOriginVertex(false)
32 {
33  declareProperty( "JetCollection", m_jetAlgo = "AntiKt4LCTopo" );
34  declareProperty( "ConfigFile", m_config = "" );
35  declareProperty( "CalibSequence", m_calibSeq = "JetArea_Offset_AbsoluteEtaJES_Insitu" );
36  declareProperty( "IsData", m_isData = true );
37  declareProperty( "ConfigDir", m_dir = "JetCalibTools/CalibrationConfigs/" );
38  declareProperty( "EventInfoName", m_eInfoName = "EventInfo");
39  declareProperty( "DEVmode", m_devMode = false);
40  declareProperty( "OriginScale", m_originScale = "JetOriginConstitScaleMomentum");
41  declareProperty( "CalibArea", m_calibAreaTag = "00-04-82");
42  declareProperty( "GSCDepth", m_gscDepth);
43  declareProperty( "useOriginVertex", m_useOriginVertex = false);
44 }

◆ ~JetCalibrationTool()

JetCalibrationTool::~JetCalibrationTool ( )

Destructor:

Definition at line 46 of file JetCalibrationTool.cxx.

46  {
47  if(m_globalConfig) delete m_globalConfig;
48  for(TEnv* config : m_globalTimeDependentConfigs) delete config;
49  for(TEnv* config : m_globalInsituCombMassConfig) delete config;
50 }

Member Function Documentation

◆ applyCalibration()

StatusCode JetCalibrationTool::applyCalibration ( xAOD::JetContainer jets) const
overridevirtual

Apply calibration to a jet container.

Implements IJetCalibrationTool.

Definition at line 338 of file JetCalibrationTool.cxx.

338  {
339  //Grab necessary event info for pile up correction and store it in a JetEventInfo class object
340  ATH_MSG_VERBOSE("Modifying jet collection.");
341  JetEventInfo jetEventInfo;
342  ATH_CHECK( initializeEvent(jetEventInfo) );
343  for (xAOD::Jet* jet : jets) ATH_CHECK( calibrate(*jet, jetEventInfo) );
344  return StatusCode::SUCCESS;
345 }

◆ calibrate()

StatusCode JetCalibrationTool::calibrate ( xAOD::Jet jet,
JetEventInfo jetEventInfo 
) const
private

Definition at line 561 of file JetCalibrationTool.cxx.

561  {
562 
563  //Check for OriginCorrected and PileupCorrected attributes, assume they are false if not found
564  int tmp = 0; //temporary int for checking getAttribute
565  if ( !jet.getAttribute<int>("OriginCorrected",tmp) )
566  jet.setAttribute<int>("OriginCorrected",false);
567  if ( !jet.getAttribute<int>("PileupCorrected",tmp) )
568  jet.setAttribute<int>("PileupCorrected",false);
569 
570  ATH_MSG_VERBOSE("Calibrating jet " << jet.index());
571  if(m_doSetDetectorEta) {
572  xAOD::JetFourMom_t jetconstitP4 = jet.getAttribute<xAOD::JetFourMom_t>("JetConstitScaleMomentum");
573  jet.setAttribute<float>("DetectorEta",jetconstitP4.eta()); //saving constituent scale eta for later use
574  }
575 
576  for (unsigned int i=0; i<m_calibSteps.size(); ++i) ATH_CHECK(m_calibSteps[i]->calibrate(jet, jetEventInfo));
577 
578  return StatusCode::SUCCESS;
579 }

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyArrayType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKeyArray>

Definition at line 170 of file AthCommonDataStore.h.

172  {
173  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
174  hndl.value(),
175  hndl.documentation());
176 
177  }

◆ declareGaudiProperty() [2/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleKeyType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158  {
159  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
160  hndl.value(),
161  hndl.documentation());
162 
163  }

◆ declareGaudiProperty() [3/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  hndl,
const SG::VarHandleType  
)
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleBase>

Definition at line 184 of file AthCommonDataStore.h.

186  {
187  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
188  hndl.value(),
189  hndl.documentation());
190  }

◆ declareGaudiProperty() [4/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  t,
const SG::NotHandleType  
)
inlineprivateinherited

specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray>

Definition at line 199 of file AthCommonDataStore.h.

200  {
201  return PBASE::declareProperty(t);
202  }

◆ declareProperty() [1/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleBase hndl,
const std::string &  doc,
const SG::VarHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleBase. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 245 of file AthCommonDataStore.h.

249  {
250  this->declare(hndl.vhKey());
251  hndl.vhKey().setOwner(this);
252 
253  return PBASE::declareProperty(name,hndl,doc);
254  }

◆ declareProperty() [2/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKey hndl,
const std::string &  doc,
const SG::VarHandleKeyType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleKey. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 221 of file AthCommonDataStore.h.

225  {
226  this->declare(hndl);
227  hndl.setOwner(this);
228 
229  return PBASE::declareProperty(name,hndl,doc);
230  }

◆ declareProperty() [3/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKeyArray hndArr,
const std::string &  doc,
const SG::VarHandleKeyArrayType  
)
inlineinherited

Definition at line 259 of file AthCommonDataStore.h.

263  {
264 
265  // std::ostringstream ost;
266  // ost << Algorithm::name() << " VHKA declareProp: " << name
267  // << " size: " << hndArr.keys().size()
268  // << " mode: " << hndArr.mode()
269  // << " vhka size: " << m_vhka.size()
270  // << "\n";
271  // debug() << ost.str() << endmsg;
272 
273  hndArr.setOwner(this);
274  m_vhka.push_back(&hndArr);
275 
276  Gaudi::Details::PropertyBase* p = PBASE::declareProperty(name, hndArr, doc);
277  if (p != 0) {
278  p->declareUpdateHandler(&AthCommonDataStore<PBASE>::updateVHKA, this);
279  } else {
280  ATH_MSG_ERROR("unable to call declareProperty on VarHandleKeyArray "
281  << name);
282  }
283 
284  return p;
285 
286  }

◆ declareProperty() [4/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc,
const SG::NotHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This is the generic version, for types that do not derive from SG::VarHandleKey. It just forwards to the base class version of declareProperty.

Definition at line 333 of file AthCommonDataStore.h.

337  {
338  return PBASE::declareProperty(name, property, doc);
339  }

◆ declareProperty() [5/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc = "none" 
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This dispatches to either the generic declareProperty or the one for VarHandle/Key/KeyArray.

Definition at line 352 of file AthCommonDataStore.h.

355  {
356  typedef typename SG::HandleClassifier<T>::type htype;
357  return declareProperty (name, property, doc, htype());
358  }

◆ declareProperty() [6/6]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( Gaudi::Property< T > &  t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145  {
146  typedef typename SG::HandleClassifier<T>::type htype;
148  }

◆ detStore()

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

95 { return m_detStore; }

◆ evtStore() [1/2]

ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

85 { return m_evtStore; }

◆ evtStore() [2/2]

const ServiceHandle<StoreGateSvc>& AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( ) const
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase &  ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ getCalibClass()

StatusCode JetCalibrationTool::getCalibClass ( const TString &  calibration)
private

Definition at line 230 of file JetCalibrationTool.cxx.

230  {
231  TString jetAlgo = m_jetAlgo;
232  const TString calibPath = "CalibArea-" + m_calibAreaTag + "/";
233  if ( calibration.EqualTo("Bcid") ){
234  m_globalConfig->SetValue("PileupStartingScale","JetBcidScaleMomentum");
235  std::unique_ptr<JetCalibrationStep> bcidCorr = std::make_unique<BcidOffsetCorrection>(this->name()+"_Bcid", m_globalConfig, jetAlgo, calibPath, m_isData);
236  ATH_CHECK(bcidCorr->initialize());
237  m_calibSteps.push_back(std::move(bcidCorr));
238  return StatusCode::SUCCESS;
239  }
240  else if ( calibration.EqualTo("JetArea") || calibration.EqualTo("Residual") ) {
241  std::unique_ptr<JetCalibrationStep> puCorr = std::make_unique<JetPileupCorrection>(this->name()+"_Pileup", m_globalConfig, jetAlgo, calibPath,
243  puCorr->msg().setLevel( this->msg().level() );
244  ATH_CHECK(puCorr->initialize());
245  m_calibSteps.push_back(std::move(puCorr));
246  return StatusCode::SUCCESS;
247  }
248  else if ( calibration.EqualTo("EtaJES") || calibration.EqualTo("AbsoluteEtaJES") ) {
249  std::unique_ptr<JetCalibrationStep> etaJESCorr = std::make_unique<EtaJESCorrection>(this->name()+"_EtaJES", m_globalConfig, jetAlgo, calibPath, false, m_devMode);
250  etaJESCorr->msg().setLevel( this->msg().level() );
251  ATH_CHECK(etaJESCorr->initialize());
252  m_calibSteps.push_back(std::move(etaJESCorr));
253  return StatusCode::SUCCESS;
254  }
255  else if ( calibration.EqualTo("EtaMassJES") ) {
256  std::unique_ptr<JetCalibrationStep> etaJESCorr = std::make_unique<EtaJESCorrection>(this->name()+"_EtaMassJES", m_globalConfig, jetAlgo, calibPath, true, m_devMode);
257  etaJESCorr->msg().setLevel( this->msg().level() );
258  ATH_CHECK(etaJESCorr->initialize());
259  m_calibSteps.push_back(std::move(etaJESCorr));
260  return StatusCode::SUCCESS;
261  }
262  else if ( calibration.EqualTo("GSC") ) {
263  std::unique_ptr<JetCalibrationStep> gsc = std::make_unique<GlobalSequentialCorrection>(this->name()+"_GSC", m_globalConfig, jetAlgo, m_gscDepth, calibPath, m_useOriginVertex, m_devMode);
264  gsc->msg().setLevel( this->msg().level() );
265  ATH_CHECK(gsc->initialize());
266  m_calibSteps.push_back(std::move(gsc));
267  return StatusCode::SUCCESS;
268  }
269  else if ( calibration.EqualTo("GNNC") ) {
270  std::unique_ptr<JetCalibrationStep> gnnc = std::make_unique<GlobalNNCalibration>(this->name()+"_GNNC",m_globalConfig,jetAlgo,calibPath,m_devMode);
271  gnnc->msg().setLevel( this->msg().level() );
272  ATH_CHECK(gnnc->initialize());
273  m_calibSteps.push_back(std::move(gnnc));
274  return StatusCode::SUCCESS;
275  }
276  else if ( calibration.EqualTo("JMS") ) {
277  std::unique_ptr<JetCalibrationStep> jetMassCorr = std::make_unique<JMSCorrection>(this->name()+"_JMS", m_globalConfig, jetAlgo, calibPath, m_devMode);
278  jetMassCorr->msg().setLevel( this->msg().level() );
279  ATH_CHECK(jetMassCorr->initialize());
280  m_calibSteps.push_back(std::move(jetMassCorr));
281  return StatusCode::SUCCESS;
282  }
283  else if ( calibration.EqualTo("InsituCombinedMass") ){
284  for(unsigned int i=0;i<m_insituCombMassConfig.size();++i){
285  std::unique_ptr<JetCalibrationStep> jetMassCorr = std::make_unique<JMSCorrection>(this->name()+"_InsituCombinedMass", m_globalInsituCombMassConfig.at(i), jetAlgo, calibPath, m_devMode);
286  jetMassCorr->msg().setLevel( this->msg().level() );
287  ATH_CHECK(jetMassCorr->initialize());
288  m_calibSteps.push_back(std::move(jetMassCorr));
289  }
290  return StatusCode::SUCCESS;
291  }
292  else if ( calibration.EqualTo("Insitu") ) {
294  std::unique_ptr<JetCalibrationStep> insituDataCorr = std::make_unique<InsituDataCorrection>(this->name()+"_Insitu", m_globalConfig, jetAlgo, calibPath, m_devMode);
295  insituDataCorr->msg().setLevel( this->msg().level() );
296  ATH_CHECK(insituDataCorr->initialize());
297  m_calibSteps.push_back(std::move(insituDataCorr));
298  return StatusCode::SUCCESS;
299  }
300  else{
301  ATH_MSG_INFO("Initializing Time-Dependent Insitu Corrections");
302  for(unsigned int i=0;i<m_timeDependentInsituConfigs.size();++i){
303  // Add 0.5 before casting to avoid floating-point precision issues
304  unsigned int firstRun = static_cast<unsigned int>(m_runBins.at(i)+1.5);
305  unsigned int lastRun = static_cast<unsigned int>(m_runBins.at(i+1)+0.5);
306  std::unique_ptr<JetCalibrationStep> insituDataCorr = std::make_unique<InsituDataCorrection>(this->name()+"_Insitu_"+std::to_string(i), m_globalTimeDependentConfigs.at(i), jetAlgo,
307  calibPath, m_devMode, firstRun, lastRun);
308  insituDataCorr->msg().setLevel( this->msg().level() );
309  ATH_CHECK(insituDataCorr->initialize());
310  m_calibSteps.push_back(std::move(insituDataCorr));
311  }
312  return StatusCode::SUCCESS;
313  }
314  }
315  else if ( calibration.EqualTo("Smear") ) {
316  if(m_isData){
317  ATH_MSG_FATAL("Asked for smearing of data, which is not supported. Aborting.");
318  return StatusCode::FAILURE;
319  }
320  std::unique_ptr<JetCalibrationStep> jetSmearCorr = std::make_unique<JetSmearingCorrection>(this->name()+"_Smear", m_globalConfig,jetAlgo,calibPath,m_devMode);
321  jetSmearCorr->msg().setLevel(this->msg().level());
322  ATH_CHECK(jetSmearCorr->initialize());
323  m_calibSteps.push_back(std::move(jetSmearCorr));
324  m_smearIndex = m_calibSteps.size() - 1;
325  return StatusCode::SUCCESS;
326  }
327  else if ( calibration.EqualTo("LargeRDNN") ) {
328  std::unique_ptr<JetCalibrationStep> largeR_dnn = std::make_unique<GlobalLargeRDNNCalibration>(this->name()+"_R10DNN", m_globalConfig,calibPath,m_devMode);
329  largeR_dnn->msg().setLevel(this->msg().level());
330  ATH_CHECK(largeR_dnn->initialize());
331  m_calibSteps.push_back(std::move(largeR_dnn));
332  return StatusCode::SUCCESS;
333  }
334  ATH_MSG_FATAL("Calibration string not recognized: " << calibration << ", aborting.");
335  return StatusCode::FAILURE;
336 }

◆ getKey()

SG::sgkey_t asg::AsgTool::getKey ( const void *  ptr) const
inherited

Get the (hashed) key of an object that is in the event store.

This is a bit of a special one. StoreGateSvc and xAOD::TEvent both provide ways for getting the SG::sgkey_t key for an object that is in the store, based on a bare pointer. But they provide different interfaces for doing so.

In order to allow tools to efficiently perform this operation, they can use this helper function.

See also
asg::AsgTool::getName
Parameters
ptrThe bare pointer to the object that the event store should know about
Returns
The hashed key of the object in the store. If not found, an invalid (zero) key.

Definition at line 119 of file AsgTool.cxx.

119  {
120 
121 #ifdef XAOD_STANDALONE
122  // In case we use @c xAOD::TEvent, we have a direct function call
123  // for this.
124  return evtStore()->event()->getKey( ptr );
125 #else
126  const SG::DataProxy* proxy = evtStore()->proxy( ptr );
127  return ( proxy == nullptr ? 0 : proxy->sgkey() );
128 #endif // XAOD_STANDALONE
129  }

◆ getName()

const std::string & asg::AsgTool::getName ( const void *  ptr) const
inherited

Get the name of an object that is / should be in the event store.

This is a bit of a special one. StoreGateSvc and xAOD::TEvent both provide ways for getting the std::string name for an object that is in the store, based on a bare pointer. But they provide different interfaces for doing so.

In order to allow tools to efficiently perform this operation, they can use this helper function.

See also
asg::AsgTool::getKey
Parameters
ptrThe bare pointer to the object that the event store should know about
Returns
The string name of the object in the store. If not found, an empty string.

Definition at line 106 of file AsgTool.cxx.

106  {
107 
108 #ifdef XAOD_STANDALONE
109  // In case we use @c xAOD::TEvent, we have a direct function call
110  // for this.
111  return evtStore()->event()->getName( ptr );
112 #else
113  const SG::DataProxy* proxy = evtStore()->proxy( ptr );
114  static const std::string dummy = "";
115  return ( proxy == nullptr ? dummy : proxy->name() );
116 #endif // XAOD_STANDALONE
117  }

◆ getNominalResolutionData()

StatusCode JetCalibrationTool::getNominalResolutionData ( const xAOD::Jet jet,
double &  resolution 
) const
overridevirtual

Reimplemented from IJetCalibrationTool.

Definition at line 582 of file JetCalibrationTool.cxx.

582  {
583 
584  if(m_smearIndex < 0){
585  ATH_MSG_ERROR("Cannot retrieve the nominal data resolution - smearing was not configured during initialization");
586  return StatusCode::FAILURE;
587  }
588  return m_calibSteps.at(m_smearIndex)->getNominalResolutionData(jet, resolution);
589 }

◆ getNominalResolutionMC()

StatusCode JetCalibrationTool::getNominalResolutionMC ( const xAOD::Jet jet,
double &  resolution 
) const
overridevirtual

Reimplemented from IJetCalibrationTool.

Definition at line 591 of file JetCalibrationTool.cxx.

591  {
592 
593  if(m_smearIndex < 0){
594  ATH_MSG_ERROR("Cannot retrieve the nominal MC resolution - smearing was not configured during initialization");
595  return StatusCode::FAILURE;
596  }
597  return m_calibSteps.at(m_smearIndex)->getNominalResolutionMC(jet, resolution);
598 }

◆ getProperty()

template<class T >
const T* asg::AsgTool::getProperty ( const std::string &  name) const
inherited

Get one of the tool's properties.

◆ initialize()

StatusCode JetCalibrationTool::initialize ( )
overridevirtual

Dummy implementation of the initialisation function.

It's here to allow the dual-use tools to skip defining an initialisation function. Since many are doing so...

Reimplemented from asg::AsgTool.

Definition at line 57 of file JetCalibrationTool.cxx.

57  {
58  ATH_MSG_INFO ("Initializing " << name() << " to calibrate " << m_jetAlgo << "jets");
59 
60  TString jetAlgo = m_jetAlgo;
61  TString calibSeq = m_calibSeq;
62  std::string dir = m_dir;
63 
64  //Make sure the necessary properties were set via the constructor or python configuration
65  if ( jetAlgo.EqualTo("") || calibSeq.EqualTo("") ) {
66  ATH_MSG_FATAL("JetCalibrationTool::initialize : At least one of your constructor arguments is not set. Did you use the copy constructor?");
67  return StatusCode::FAILURE;
68  }
69 
70  if ( m_config.empty() ) { ATH_MSG_FATAL("No configuration file specified."); return StatusCode::FAILURE; }
71  // The calibration area tag is a property of the tool
72  const std::string calibPath = "CalibArea-" + m_calibAreaTag + "/";
73  if(m_devMode){
74  ATH_MSG_WARNING("Dev Mode is ON!!!");
75  ATH_MSG_WARNING("Dev Mode is NOT RECOMMENDED!!!");
76  dir = "JetCalibTools/";
77  }
78  else{dir.insert(14,calibPath);} // Obtaining the path of the configuration file
79  std::string configPath=dir+m_config; // Full path
80  TString fn = PathResolverFindCalibFile(configPath);
81 
82  ATH_MSG_INFO("Reading global JES settings from: " << m_config);
83  ATH_MSG_INFO("resolved in: " << fn);
84 
85  m_globalConfig = new TEnv();
86  int status=m_globalConfig->ReadFile(fn ,EEnvLevel(0));
87  if (status!=0) { ATH_MSG_FATAL("Cannot read config file " << fn ); return StatusCode::FAILURE; }
88 
89  //Make sure that one of the standard jet collections is being used
90  if ( calibSeq.Contains("JetArea") ) {
91  if ( jetAlgo.Contains("PFlow") ) m_jetScale = PFLOW;
92  else if ( jetAlgo.Contains("EM") ) m_jetScale = EM;
93  else if ( jetAlgo.Contains("LC") ) m_jetScale = LC;
94  else { ATH_MSG_FATAL("jetAlgo " << jetAlgo << " not recognized."); return StatusCode::FAILURE; }
95  }
96 
97  // Settings for R21/2.5.X
98  m_originCorrectedClusters = m_globalConfig->GetValue("OriginCorrectedClusters",false);
99  m_doSetDetectorEta = m_globalConfig->GetValue("SetDetectorEta",true);
100 
101  // Rho key specified in the config file?
102  std::string rhoKey_config = m_globalConfig->GetValue("RhoKey", "None");
103 
104  bool requireRhoInput = false;
105 
106  //Make sure the residual correction is turned on if requested
107  if ( !calibSeq.Contains("JetArea") && !calibSeq.Contains("Residual") ) {
108  m_doJetArea = false;
109  m_doResidual = false;
110  } else if ( calibSeq.Contains("JetArea") ) {
111  if ( m_rhoKey.key().compare("auto") == 0 && rhoKey_config.compare("None") == 0) {
113  if ( m_jetScale == EM ) m_rhoKey = "Kt4EMTopoEventShape";
114  else if ( m_jetScale == LC ) m_rhoKey = "Kt4LCTopoEventShape";
115  else if ( m_jetScale == PFLOW ) m_rhoKey = "Kt4EMPFlowEventShape";
116  } else{
117  if ( m_jetScale == EM ) m_rhoKey = "Kt4EMTopoOriginEventShape";
118  else if ( m_jetScale == LC ) m_rhoKey = "Kt4LCTopoOriginEventShape";
119  else if ( m_jetScale == PFLOW ) m_rhoKey = "Kt4EMPFlowEventShape";
120  }
121  }
122  else if(rhoKey_config.compare("None") != 0 && m_rhoKey.key().compare("auto") == 0){
123  m_rhoKey = rhoKey_config;
124  }
125  requireRhoInput = true;
126  if ( !calibSeq.Contains("Residual") ) m_doResidual = false;
127  } else if ( !calibSeq.Contains("JetArea") && calibSeq.Contains("Residual") ) {
128  m_doJetArea = false;
129  ATH_MSG_INFO("ApplyOnlyResidual should be true if only Residual pile up correction wants to be applied. Need to specify pile up starting scale in the configuration file.");
130  }
131  // get nJet threshold and name
132  m_useNjetInResidual = m_globalConfig->GetValue("OffsetCorrection.UseNjet", false);
133  m_nJetThreshold = m_globalConfig->GetValue("OffsetCorrection.nJetThreshold", 20);
134  m_nJetContainerName = m_globalConfig->GetValue("OffsetCorrection.nJetContainerName",
135  "HLT_xAOD__JetContainer_a4tcemsubjesISFS");
136 
137  if ( !calibSeq.Contains("Origin") ) m_doOrigin = false;
138  if ( !calibSeq.Contains("GSC") && !calibSeq.Contains("GNNC")) m_doGSC = false;
139  if ( !calibSeq.Contains("Bcid") ) m_doBcid = false;
140  if ( calibSeq.Contains("DNN") ) m_doDNNCal = true;
141 
142  //Protect against the in-situ calibration being requested when isData is false
143  if ( calibSeq.Contains("Insitu") && !m_isData ) {
144  ATH_MSG_FATAL("JetCalibrationTool::initialize : calibSeq string contains Insitu with isData set to false. Can't apply in-situ correction to MC!!");
145  return StatusCode::FAILURE;
146  }
147 
148  // Time-Dependent Insitu Calibration
149  m_timeDependentCalib = m_globalConfig->GetValue("TimeDependentInsituCalibration",false);
150  if(m_timeDependentCalib && calibSeq.Contains("Insitu")){ // Read Insitu Configs
151  m_timeDependentInsituConfigs = JetCalibUtils::Vectorize( m_globalConfig->GetValue("InsituTimeDependentConfigs","") );
152  if(m_timeDependentInsituConfigs.empty()) ATH_MSG_ERROR("Please check there are at least two insitu configs");
153  m_runBins = JetCalibUtils::VectorizeD( m_globalConfig->GetValue("InsituRunBins","") );
154  if(m_runBins.size()!=m_timeDependentInsituConfigs.size()+1) ATH_MSG_ERROR("Please check the insitu run bins");
155  for(unsigned int i=0;i<m_timeDependentInsituConfigs.size();++i){
156 
157  std::string configPath_insitu = dir+m_timeDependentInsituConfigs.at(i).Data(); // Full path
158  TString fn_insitu = PathResolverFindCalibFile(configPath_insitu);
159 
160  ATH_MSG_INFO("Reading time-dependent insitu settings from: " << m_timeDependentInsituConfigs.at(i));
161  ATH_MSG_INFO("resolved in: " << fn_insitu);
162 
163  TEnv *globalConfig_insitu = new TEnv();
164  int status = globalConfig_insitu->ReadFile(fn_insitu ,EEnvLevel(0));
165  if (status!=0) { ATH_MSG_FATAL("Cannot read config file " << fn_insitu ); return StatusCode::FAILURE; }
166  m_globalTimeDependentConfigs.push_back(globalConfig_insitu);
167  }
168  }
169 
170  //Combined Mass Calibration:
171  m_insituCombMassCalib = m_globalConfig->GetValue("InsituCombinedMassCorrection",false);
172  if(m_insituCombMassCalib && calibSeq.Contains("InsituCombinedMass")){ // Read Combination Config
173  m_insituCombMassConfig = JetCalibUtils::Vectorize( m_globalConfig->GetValue("InsituCombinedMassCorrectionFile","") );
174  if(m_insituCombMassConfig.empty()) ATH_MSG_ERROR("Please check there is a combination config");
175  for(unsigned int i=0;i<m_insituCombMassConfig.size();++i){
176 
177  std::string configPath_comb = dir+m_insituCombMassConfig.at(i).Data(); // Full path
178  TString fn_comb = PathResolverFindCalibFile(configPath_comb);
179 
180  ATH_MSG_INFO("Reading combination settings from: " << m_insituCombMassConfig.at(i));
181  ATH_MSG_INFO("resolved in: " << fn_comb);
182 
183  TEnv *globalInsituCombMass = new TEnv();
184  int status = globalInsituCombMass->ReadFile(fn_comb ,EEnvLevel(0));
185  if (status!=0) { ATH_MSG_FATAL("Cannot read config file " << fn_comb ); return StatusCode::FAILURE; }
186  m_globalInsituCombMassConfig.push_back(globalInsituCombMass);
187  }
188  }
189 
190  //Loop over the request calib sequence
191  //Initialize derived classes for applying the requested calibrations and add them to a vector
192  std::vector<TString> vecCalibSeq = JetCalibUtils::Vectorize(calibSeq,"_");
193  for ( unsigned int i=0; i<vecCalibSeq.size(); ++i) {
194  if ( vecCalibSeq[i].EqualTo("Origin") || vecCalibSeq[i].EqualTo("DEV") ) continue;
195  if ( vecCalibSeq[i].EqualTo("Residual") && m_doJetArea ) continue;
196  ATH_CHECK( getCalibClass(vecCalibSeq[i] ));
197  }
198 
199  // Initialise ReadHandle(s)
201  ATH_CHECK( m_muKey.initialize() );
202  ATH_CHECK( m_actualMuKey.initialize() );
203  ATH_CHECK( m_rhoKey.initialize(requireRhoInput) );
204  if(m_pvKey.empty()) {
205  // No PV key: -- check if it is required
206  if(m_doResidual) {
207  // May require modification in case of residual that does not require NPV
208  ATH_MSG_ERROR("Residual calibration requested but no primary vertex container specified!");
209  return StatusCode::FAILURE;
210  }
211  else if(m_doGSC) {
212  if(m_jetAlgo.find("PFlow")!=std::string::npos) {
213  ATH_MSG_ERROR("GSC calibration for PFlow requested but no primary vertex container specified!");
214  return StatusCode::FAILURE;
215  }
216  else if((m_gscDepth!="Tile0" && m_gscDepth!="EM3")) {
217  ATH_MSG_ERROR("GSC calibration with tracks requested but no primary vertex container specified!");
218  return StatusCode::FAILURE;
219  }
220  }
221  } else {
222  // Received a PV key, declare the data dependency
223  ATH_CHECK( m_pvKey.initialize() );
224  }
225 
226  return StatusCode::SUCCESS;
227 }

◆ initializeEvent()

StatusCode JetCalibrationTool::initializeEvent ( JetEventInfo jetEventInfo) const
private

Definition at line 350 of file JetCalibrationTool.cxx.

350  {
351 
352  // Check if the tool was initialized
353  if( m_calibSteps.empty() ){
354  ATH_MSG_FATAL(" JetCalibrationTool::initializeEvent : The tool was not initialized.");
355  return StatusCode::FAILURE;
356  }
357 
358  // static accessor for PV index access
359  static const SG::AuxElement::ConstAccessor<int> PVIndexAccessor("PVIndex");
360 
361  ATH_MSG_VERBOSE("Initializing event.");
362 
363  if( m_doJetArea ) {
364  //Determine the rho value to use for the jet area subtraction
365  //Should be determined using EventShape object, use hard coded values if EventShape doesn't exist
366  double rho=0;
367  const xAOD::EventShape * eventShape = nullptr;
368 
370 
371  if ( rhRhoKey.isValid() ) {
372  ATH_MSG_VERBOSE(" Found event density container " << m_rhoKey.key());
373  eventShape = rhRhoKey.cptr();
374  if ( !rhRhoKey.isValid() ) {
375  ATH_MSG_VERBOSE(" Event shape container not found.");
376  ATH_MSG_FATAL("Could not retrieve the xAOD::EventShape container " << m_rhoKey.key() << " from the input file");
377  return StatusCode::FAILURE;
378  } else if ( !eventShape->getDensity( xAOD::EventShape::Density, rho ) ) {
379  ATH_MSG_VERBOSE(" Event density not found in container.");
380  ATH_MSG_FATAL("Could not retrieve the xAOD::EventShape::Density variable from " << m_rhoKey.key());
381  return StatusCode::FAILURE;
382  } else {
383  ATH_MSG_VERBOSE(" Event density retrieved.");
384  }
385  } else if ( m_doJetArea && !rhRhoKey.isValid() ) {
386  ATH_MSG_VERBOSE(" Rho container not found: " << m_rhoKey.key());
387  ATH_MSG_FATAL("Could not retrieve xAOD::EventShape container " << m_rhoKey.key() << " from the input file");
388  return StatusCode::FAILURE;
389  }
390  jetEventInfo.setRho(rho);
391  ATH_MSG_VERBOSE(" Rho = " << 0.001*rho << " GeV");
392 
393  // Necessary retrieval and calculation for use of nJetX instead of NPV
394  if(m_useNjetInResidual) {
395  // retrieve the container
396  const xAOD::JetContainer * jets = nullptr;
397  if (evtStore()->contains<xAOD::JetContainer>(m_nJetContainerName) ) {
398  ATH_MSG_VERBOSE(" Found jet container " << m_nJetContainerName);
399  if ( evtStore()->retrieve(jets, m_nJetContainerName).isFailure() || !jets ) {
400  ATH_MSG_FATAL("Could not retrieve xAOD::JetContainer " << m_nJetContainerName << " from evtStore");
401  return StatusCode::FAILURE;
402  }
403  } else {
404  ATH_MSG_FATAL("Could not find jet container " << m_nJetContainerName << " in the evtStore");
405  return StatusCode::FAILURE;
406  }
407 
408  // count jets above threshold
409  int nJets = 0;
410  for (const auto *jet : *jets) {
411  if(jet->pt()/1000. > m_nJetThreshold)
412  nJets += 1;
413  }
414  jetEventInfo.setNjet(nJets);
415  }
416  }
417 
418  // Retrieve EventInfo object, which now has multiple uses
420  const xAOD::EventInfo * eventObj = nullptr;
421  static std::atomic<unsigned int> eventInfoWarnings = 0;
423  if ( rhEvtInfo.isValid() ) {
424  eventObj = rhEvtInfo.cptr();
425  } else {
426  ++eventInfoWarnings;
427  if ( eventInfoWarnings < 20 )
428  ATH_MSG_ERROR(" JetCalibrationTool::initializeEvent : Failed to retrieve event information.");
429  jetEventInfo.setMu(0); //Hard coded value mu = 0 in case of failure (to prevent seg faults later).
430  jetEventInfo.setPVIndex(0);
431  return StatusCode::SUCCESS; //error is recoverable, so return SUCCESS
432  }
433  jetEventInfo.setRunNumber( eventObj->runNumber() );
434 
435  // If we are applying the reisdual, then store mu
436  if (m_doResidual || m_doBcid) {
438  if(!eventInfoDecor.isPresent()) {
439  ATH_MSG_ERROR("EventInfo decoration not available!");
440  return StatusCode::FAILURE;
441  }
442  jetEventInfo.setMu( eventInfoDecor(0) );
443  }
444 
445  // If this is GSC, we need EventInfo to determine the PV to use
446  // This is support for groups where PV0 is not the vertex of interest (H->gamgam, etc)
447  if (m_doGSC)
448  {
449  // First retrieve the PVIndex if specified
450  // Default is to not specify this, so no warning if it doesn't exist
451  // However, if specified, it should be a sane value - fail if not
452  if ( m_doGSC && PVIndexAccessor.isAvailable(*eventObj) )
453  jetEventInfo.setPVIndex( PVIndexAccessor(*eventObj) );
454  else{
455  if(!m_pvKey.empty()){
456  const xAOD::VertexContainer * vertices = nullptr;
458  if (rhPV.isValid()) {
459  vertices = rhPV.cptr();
460  xAOD::VertexContainer::const_iterator vtx_itr = vertices->begin();
461  xAOD::VertexContainer::const_iterator vtx_end = vertices->end();
462  for ( ; vtx_itr != vtx_end; ++vtx_itr ){
463  if ( (*vtx_itr)->vertexType() == xAOD::VxType::PriVtx ){
464  jetEventInfo.setPVIndex((*vtx_itr)->index());
465  break;
466  }
467  }
468  }
469  else{
470  jetEventInfo.setPVIndex(0);
471  }
472  }
473  else{
474  jetEventInfo.setPVIndex(0);
475  }
476  }
477  }
478 
479  // Extract the BCID information for the BCID correction
480  if (m_doBcid)
481  {
482  static const SG::ConstAccessor<int> BCIDDistanceFromFrontAcc ("DFCommonJets_BCIDDistanceFromFront");
483  static const SG::ConstAccessor<int> BCIDGapBeforeTrainAcc ("DFCommonJets_BCIDGapBeforeTrain");
484  static const SG::ConstAccessor<int> BCIDGapBeforeTrainMinus12Acc ("DFCommonJets_BCIDGapBeforeTrainMinus12");
485 
486  jetEventInfo.setBcidDistanceFromFront( BCIDDistanceFromFrontAcc (*eventObj) );
487  jetEventInfo.setBcidGapBeforeTrain( BCIDGapBeforeTrainAcc (*eventObj) );
488  jetEventInfo.setBcidGapBeforeTrainMinus12( BCIDGapBeforeTrainMinus12Acc (*eventObj) );
489  }
490 
491  // If PV index is not zero, we need to confirm it's a reasonable value
492  // To do this, we need the primary vertices
493  // However, other users of the GSC may not have the PV collection (in particular: trigger GSC in 2016)
494  // So only retrieve vertices if needed for NPV (residual) or a non-zero PV index was specified (GSC)
495  if ((m_doResidual && !m_useNjetInResidual) || (m_doGSC && jetEventInfo.PVIndex()))
496  {
497  //Retrieve VertexContainer object, use it to obtain NPV for the residual correction or check validity of GSC non-PV0 usage
498  const xAOD::VertexContainer * vertices = nullptr;
499 
501  if (rhPV.isValid()) {
502  vertices = rhPV.cptr();
503  } else {
504  ATH_MSG_WARNING(" JetCalibrationTool::initializeEvent : Failed to retrieve primary vertices.");
505  jetEventInfo.setNPV(0); //Hard coded value NPV = 0 in case of failure (to prevent seg faults later).
506  return StatusCode::SUCCESS; //error is recoverable, so return SUCCESS
507  }
508 
509  // Calculate and set NPV if this is residual
510  if (m_doResidual)
511  {
512  int eventNPV = 0;
513  eventNPV = std::count_if(vertices->begin(), vertices->end(), [](const xAOD::Vertex* vtx){ return vtx->vertexType() == xAOD::VxType::PileUp || vtx->vertexType() == xAOD::VxType::PriVtx;});
514  jetEventInfo.setNPV(eventNPV);
515  }
516 
517  // Validate value of non-standard PV index usage
518  if (m_doGSC && jetEventInfo.PVIndex())
519  {
520  static std::atomic<unsigned int> vertexIndexWarnings = 0;
521  if (jetEventInfo.PVIndex() < 0 || static_cast<size_t>(jetEventInfo.PVIndex()) >= vertices->size())
522  {
523  ++vertexIndexWarnings;
524  if (vertexIndexWarnings < 20)
525  ATH_MSG_WARNING(" JetCalibrationTool::initializeEvent : PV index is out of bounds.");
526  jetEventInfo.setPVIndex(0); // Hard coded value PVIndex = 0 in case of failure (to prevent seg faults later).
527  return StatusCode::SUCCESS; // error is recoverable, so return SUCCESS
528  }
529  }
530  }
531  } else if (m_doDNNCal) {
532  // retrieve mu and NPV only from eventInfo
533  static std::atomic<unsigned int> eventInfoWarningsMu = 0;
535  if ( rhEvtInfo.isValid() ) {
537  jetEventInfo.setMu(eventInfoDecor(0));
538  } else {
539  ++eventInfoWarningsMu;
540  if ( eventInfoWarningsMu < 20 ) ATH_MSG_WARNING(" JetCalibrationTool::initializeEvent : Failed to retrieve event information.");
541  jetEventInfo.setMu(0); //Hard coded value mu = 0 in case of failure (to prevent seg faults later).
542  }
543 
544  static std::atomic<unsigned int> eventInfoWarningsPV = 0;
545  const xAOD::VertexContainer * vertices = nullptr;
547  if (rhPV.isValid()) {
548  vertices = rhPV.cptr();
549  int eventNPV = 0;
550  eventNPV = std::count_if(vertices->begin(), vertices->end(), [](const xAOD::Vertex* vtx){ return vtx->vertexType() == xAOD::VxType::PileUp || vtx->vertexType() == xAOD::VxType::PriVtx;});
551  jetEventInfo.setNPV(eventNPV);
552  } else {
553  ++eventInfoWarningsPV;
554  if ( eventInfoWarningsPV < 20 ) ATH_MSG_WARNING(" JetCalibrationTool::initializeEvent : Failed to retrieve primary vertices.");
555  jetEventInfo.setNPV(0); //Hard coded value NPV = 0 in case of failure (to prevent seg faults later).
556  }
557  }
558  return StatusCode::SUCCESS;
559 }

◆ inputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ modify()

virtual StatusCode IJetCalibrationTool::modify ( xAOD::JetContainer jets) const
inlinefinaloverridevirtualinherited

Apply calibration to a jet container (for IJetModifier interface).

Implements IJetModifier.

Definition at line 33 of file IJetCalibrationTool.h.

33 {return applyCalibration(jets);}

◆ msg() [1/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24  {
25  return this->msgStream();
26  }

◆ msg() [2/2]

MsgStream& AthCommonMsg< AlgTool >::msg ( const MSG::Level  lvl) const
inlineinherited

Definition at line 27 of file AthCommonMsg.h.

27  {
28  return this->msgStream(lvl);
29  }

◆ msg_level_name()

const std::string & asg::AsgTool::msg_level_name ( ) const
inherited

A deprecated function for getting the message level's name.

Instead of using this, weirdly named function, user code should get the string name of the current minimum message level (in case they really need it...), with:

MSG::name( msg().level() )

This function's name doesn't follow the ATLAS coding rules, and as such will be removed in the not too distant future.

Returns
The string name of the current minimum message level that's printed

Definition at line 101 of file AsgTool.cxx.

101  {
102 
103  return MSG::name( msg().level() );
104  }

◆ msgLvl()

bool AthCommonMsg< AlgTool >::msgLvl ( const MSG::Level  lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30  {
31  return this->msgLevel(lvl);
32  }

◆ outputHandles()

virtual std::vector<Gaudi::DataHandle*> AthCommonDataStore< AthCommonMsg< AlgTool > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ print()

void asg::AsgTool::print ( ) const
virtualinherited

◆ 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> AthCommonDataStore< AthCommonMsg< AlgTool > >::renounce ( T &  h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381  {
382  h.renounce();
383  PBASE::renounce (h);
384  }

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::renounceArray ( SG::VarHandleKeyArray handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364  {
365  handlesArray.renounce();
366  }

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in DerivationFramework::CfAthAlgTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and asg::AsgMetadataTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::updateVHKA ( Gaudi::Details::PropertyBase &  )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308  {
309  // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310  // << " size: " << m_vhka.size() << endmsg;
311  for (auto &a : m_vhka) {
312  std::vector<SG::VarHandleKey*> keys = a->keys();
313  for (auto k : keys) {
314  k->setOwner(this);
315  }
316  }
317  }

Member Data Documentation

◆ m_actualMuKey

SG::ReadDecorHandleKey<xAOD::EventInfo> JetCalibrationTool::m_actualMuKey
private
Initial value:
{this, "actualInteractionsPerCrossing",
"EventInfo.actualInteractionsPerCrossing","Decoration for Actual Number of Interactions Per Crossing"}

Definition at line 69 of file JetCalibrationTool.h.

◆ m_calibAreaTag

std::string JetCalibrationTool::m_calibAreaTag
private

Definition at line 76 of file JetCalibrationTool.h.

◆ m_calibSeq

std::string JetCalibrationTool::m_calibSeq
private

Definition at line 75 of file JetCalibrationTool.h.

◆ m_calibSteps

std::vector<std::unique_ptr<JetCalibrationStep> > JetCalibrationTool::m_calibSteps
private

Definition at line 109 of file JetCalibrationTool.h.

◆ m_config

std::string JetCalibrationTool::m_config
private

Definition at line 74 of file JetCalibrationTool.h.

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_devMode

bool JetCalibrationTool::m_devMode
private

Definition at line 78 of file JetCalibrationTool.h.

◆ m_dir

std::string JetCalibrationTool::m_dir
private

Definition at line 85 of file JetCalibrationTool.h.

◆ m_doBcid

bool JetCalibrationTool::m_doBcid
private

Definition at line 100 of file JetCalibrationTool.h.

◆ m_doDNNCal

bool JetCalibrationTool::m_doDNNCal
private

Definition at line 105 of file JetCalibrationTool.h.

◆ m_doGSC

bool JetCalibrationTool::m_doGSC
private

Definition at line 104 of file JetCalibrationTool.h.

◆ m_doJetArea

bool JetCalibrationTool::m_doJetArea
private

Definition at line 101 of file JetCalibrationTool.h.

◆ m_doOrigin

bool JetCalibrationTool::m_doOrigin
private

Definition at line 103 of file JetCalibrationTool.h.

◆ m_doResidual

bool JetCalibrationTool::m_doResidual
private

Definition at line 102 of file JetCalibrationTool.h.

◆ m_doSetDetectorEta

bool JetCalibrationTool::m_doSetDetectorEta
private

Definition at line 89 of file JetCalibrationTool.h.

◆ m_eInfoName

std::string JetCalibrationTool::m_eInfoName
private

Definition at line 86 of file JetCalibrationTool.h.

◆ m_evtInfoKey

SG::ReadHandleKey<xAOD::EventInfo> JetCalibrationTool::m_evtInfoKey {this, "EventInfoKey", "EventInfo"}
private

Definition at line 64 of file JetCalibrationTool.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_globalConfig

TEnv* JetCalibrationTool::m_globalConfig
private

Definition at line 94 of file JetCalibrationTool.h.

◆ m_globalInsituCombMassConfig

std::vector<TEnv*> JetCalibrationTool::m_globalInsituCombMassConfig
private

Definition at line 96 of file JetCalibrationTool.h.

◆ m_globalTimeDependentConfigs

std::vector<TEnv*> JetCalibrationTool::m_globalTimeDependentConfigs
private

Definition at line 95 of file JetCalibrationTool.h.

◆ m_gscDepth

std::string JetCalibrationTool::m_gscDepth
private

Definition at line 107 of file JetCalibrationTool.h.

◆ m_insituCombMassCalib

bool JetCalibrationTool::m_insituCombMassCalib
private

Definition at line 90 of file JetCalibrationTool.h.

◆ m_insituCombMassConfig

std::vector<TString> JetCalibrationTool::m_insituCombMassConfig
private

Definition at line 91 of file JetCalibrationTool.h.

◆ m_isData

bool JetCalibrationTool::m_isData
private

Definition at line 79 of file JetCalibrationTool.h.

◆ m_jetAlgo

std::string JetCalibrationTool::m_jetAlgo
private

Definition at line 73 of file JetCalibrationTool.h.

◆ m_jetScale

jetScale JetCalibrationTool::m_jetScale
private

Definition at line 99 of file JetCalibrationTool.h.

◆ m_muKey

SG::ReadDecorHandleKey<xAOD::EventInfo> JetCalibrationTool::m_muKey
private
Initial value:
{this, "averageInteractionsPerCrossingKey",
"EventInfo.averageInteractionsPerCrossing","Decoration for Average Interaction Per Crossing"}

Definition at line 67 of file JetCalibrationTool.h.

◆ m_nJetContainerName

std::string JetCalibrationTool::m_nJetContainerName
private

Definition at line 84 of file JetCalibrationTool.h.

◆ m_nJetThreshold

float JetCalibrationTool::m_nJetThreshold
private

Definition at line 83 of file JetCalibrationTool.h.

◆ m_originCorrectedClusters

bool JetCalibrationTool::m_originCorrectedClusters
private

Definition at line 81 of file JetCalibrationTool.h.

◆ m_originScale

std::string JetCalibrationTool::m_originScale
private

Definition at line 77 of file JetCalibrationTool.h.

◆ m_pvKey

SG::ReadHandleKey<xAOD::VertexContainer> JetCalibrationTool::m_pvKey {this, "PrimaryVerticesContainerName", "PrimaryVertices"}
private

Definition at line 66 of file JetCalibrationTool.h.

◆ m_rhoKey

SG::ReadHandleKey<xAOD::EventShape> JetCalibrationTool::m_rhoKey {this, "RhoKey", "auto"}
private

Definition at line 65 of file JetCalibrationTool.h.

◆ m_runBins

std::vector<double> JetCalibrationTool::m_runBins
private

Definition at line 88 of file JetCalibrationTool.h.

◆ m_smearIndex

int JetCalibrationTool::m_smearIndex
private

Definition at line 110 of file JetCalibrationTool.h.

◆ m_timeDependentCalib

bool JetCalibrationTool::m_timeDependentCalib
private

Definition at line 80 of file JetCalibrationTool.h.

◆ m_timeDependentInsituConfigs

std::vector<TString> JetCalibrationTool::m_timeDependentInsituConfigs
private

Definition at line 87 of file JetCalibrationTool.h.

◆ m_useNjetInResidual

bool JetCalibrationTool::m_useNjetInResidual
private

Definition at line 82 of file JetCalibrationTool.h.

◆ m_useOriginVertex

bool JetCalibrationTool::m_useOriginVertex
private

Definition at line 113 of file JetCalibrationTool.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files:
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
xAOD::EventShape_v1::getDensity
bool getDensity(EventDensityID id, double &v) const
Get a density variable from the object.
Definition: EventShape_v1.cxx:135
JetEventInfo::setBcidDistanceFromFront
void setBcidDistanceFromFront(Int_t BcidDistanceFromFront)
Definition: JetEventInfo.h:21
JetCalibrationTool::m_doResidual
bool m_doResidual
Definition: JetCalibrationTool.h:102
asg::AsgTool
Base class for the dual-use tool implementation classes.
Definition: AsgTool.h:47
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
JetCalibrationTool::m_smearIndex
int m_smearIndex
Definition: JetCalibrationTool.h:110
JetCalibrationTool::m_originCorrectedClusters
bool m_originCorrectedClusters
Definition: JetCalibrationTool.h:81
StateLessPT_NewConfig.proxy
proxy
Definition: StateLessPT_NewConfig.py:392
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
JetEventInfo::PVIndex
int PVIndex()
Definition: JetEventInfo.h:30
JetCalibrationTool::m_jetAlgo
std::string m_jetAlgo
Definition: JetCalibrationTool.h:73
JetCalibrationTool::LC
@ LC
Definition: JetCalibrationTool.h:45
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
JetCalibrationTool::m_timeDependentInsituConfigs
std::vector< TString > m_timeDependentInsituConfigs
Definition: JetCalibrationTool.h:87
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
JetCalibrationTool::m_muKey
SG::ReadDecorHandleKey< xAOD::EventInfo > m_muKey
Definition: JetCalibrationTool.h:67
JetCalibrationTool::m_isData
bool m_isData
Definition: JetCalibrationTool.h:79
JetCalibrationTool::EM
@ EM
Definition: JetCalibrationTool.h:45
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
JetEventInfo::setRho
void setRho(double rho)
Definition: JetEventInfo.h:15
JetCalibrationTool::m_gscDepth
std::string m_gscDepth
Definition: JetCalibrationTool.h:107
JetCalibrationTool::getCalibClass
StatusCode getCalibClass(const TString &calibration)
Definition: JetCalibrationTool.cxx:230
JetCalibrationTool::m_rhoKey
SG::ReadHandleKey< xAOD::EventShape > m_rhoKey
Definition: JetCalibrationTool.h:65
JetCalibrationTool::calibrate
StatusCode calibrate(xAOD::Jet &jet, JetEventInfo &jetEventInfo) const
Definition: JetCalibrationTool.cxx:561
JetCalibrationTool::m_devMode
bool m_devMode
Definition: JetCalibrationTool.h:78
SG::ConstAccessor
Helper class to provide constant type-safe access to aux data.
Definition: ConstAccessor.h:55
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
JetEventInfo::setBcidGapBeforeTrain
void setBcidGapBeforeTrain(Int_t BcidGapBeforeTrain)
Definition: JetEventInfo.h:22
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
dbg::ptr
void * ptr(T *p)
Definition: SGImplSvc.cxx:74
Dedxcorrection::resolution
double resolution[nGasTypes][nParametersResolution]
Definition: TRT_ToT_Corrections.h:46
JetCalibrationTool::m_runBins
std::vector< double > m_runBins
Definition: JetCalibrationTool.h:88
JetCalibUtils::Vectorize
StrV Vectorize(const TString &str, const TString &sep=" ")
Definition: JetCalibUtils.cxx:14
xAOD::EventInfo_v1::runNumber
uint32_t runNumber() const
The current event's run number.
config
Definition: PhysicsAnalysis/AnalysisCommon/AssociationUtils/python/config.py:1
python.iconfTool.models.loaders.level
level
Definition: loaders.py:20
JetCalibrationTool::m_doJetArea
bool m_doJetArea
Definition: JetCalibrationTool.h:101
JetCalibrationStep::initialize
virtual StatusCode initialize()=0
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
JetCalibrationTool::m_pvKey
SG::ReadHandleKey< xAOD::VertexContainer > m_pvKey
Definition: JetCalibrationTool.h:66
JetEventInfo::setBcidGapBeforeTrainMinus12
void setBcidGapBeforeTrainMinus12(Int_t BcidGapBeforeTrainMinus12)
Definition: JetEventInfo.h:23
JetCalibrationTool::initializeEvent
StatusCode initializeEvent(JetEventInfo &jetEventInfo) const
Definition: JetCalibrationTool.cxx:350
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:27
JetCalibrationTool::m_globalConfig
TEnv * m_globalConfig
Definition: JetCalibrationTool.h:94
JetCalibrationTool::m_insituCombMassConfig
std::vector< TString > m_insituCombMassConfig
Definition: JetCalibrationTool.h:91
xAOD::EventShape_v1::Density
@ Density
Definition: EventShape_v1.h:47
JetEventInfo::setNjet
void setNjet(double nJet)
Definition: JetEventInfo.h:18
JetEventInfo
Definition: JetEventInfo.h:8
AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
JetCalibrationTool::PFLOW
@ PFLOW
Definition: JetCalibrationTool.h:45
JetCalibrationTool::m_nJetThreshold
float m_nJetThreshold
Definition: JetCalibrationTool.h:83
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
jet
Definition: JetCalibTools_PlotJESFactors.cxx:23
python.getCurrentFolderTag.fn
fn
Definition: getCurrentFolderTag.py:65
AthCommonDataStore
Definition: AthCommonDataStore.h:52
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
SG::ReadDecorHandle
Handle class for reading a decoration on an object.
Definition: StoreGate/StoreGate/ReadDecorHandle.h:94
JetCalibrationTool::m_dir
std::string m_dir
Definition: JetCalibrationTool.h:85
lumiFormat.i
int i
Definition: lumiFormat.py:85
JetCalibrationTool::m_calibAreaTag
std::string m_calibAreaTag
Definition: JetCalibrationTool.h:76
JetCalibrationTool::m_eInfoName
std::string m_eInfoName
Definition: JetCalibrationTool.h:86
JetCalibrationTool::m_nJetContainerName
std::string m_nJetContainerName
Definition: JetCalibrationTool.h:84
xAOD::VxType::PriVtx
@ PriVtx
Primary vertex.
Definition: TrackingPrimitives.h:571
asg::AsgMessaging::msg
MsgStream & msg() const
The standard message stream.
Definition: AsgMessaging.cxx:49
JetCalibrationTool::m_evtInfoKey
SG::ReadHandleKey< xAOD::EventInfo > m_evtInfoKey
Definition: JetCalibrationTool.h:64
python.xAODType.dummy
dummy
Definition: xAODType.py:4
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
MSG::name
const std::string & name(Level lvl)
Convenience function for translating message levels to strings.
Definition: MsgLevel.cxx:19
JetCalibrationTool::m_doSetDetectorEta
bool m_doSetDetectorEta
Definition: JetCalibrationTool.h:89
JetCalibrationTool::m_originScale
std::string m_originScale
Definition: JetCalibrationTool.h:77
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
DeMoUpdate.tmp
string tmp
Definition: DeMoUpdate.py:1167
JetEventInfo::setNPV
void setNPV(double NPV)
Definition: JetEventInfo.h:17
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
xAOD::EventShape_v1
Data class for event shapes.
Definition: EventShape_v1.h:28
beamspotman.dir
string dir
Definition: beamspotman.py:623
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
xAOD::JetFourMom_t
ROOT::Math::LorentzVector< ROOT::Math::PtEtaPhiM4D< double > > JetFourMom_t
Base 4 Momentum type for Jet.
Definition: JetTypes.h:17
JetEventInfo::setPVIndex
void setPVIndex(int PVindex)
Definition: JetEventInfo.h:19
JetCalibrationTool::m_actualMuKey
SG::ReadDecorHandleKey< xAOD::EventInfo > m_actualMuKey
Definition: JetCalibrationTool.h:69
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
JetCalibrationTool::m_jetScale
jetScale m_jetScale
Definition: JetCalibrationTool.h:99
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:221
ActsTrk::to_string
std::string to_string(const DetectorType &type)
Definition: GeometryDefs.h:34
JetCalibrationTool::m_config
std::string m_config
Definition: JetCalibrationTool.h:74
JetCalibrationTool::m_globalTimeDependentConfigs
std::vector< TEnv * > m_globalTimeDependentConfigs
Definition: JetCalibrationTool.h:95
xAOD::EventInfo_v1
Class describing the basic event information.
Definition: EventInfo_v1.h:43
PathResolverFindCalibFile
std::string PathResolverFindCalibFile(const std::string &logical_file_name)
Definition: PathResolver.cxx:431
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
xAOD::Jet_v1
Class describing a jet.
Definition: Jet_v1.h:57
a
TList * a
Definition: liststreamerinfos.cxx:10
h
xAOD::Vertex_v1
Class describing a Vertex.
Definition: Vertex_v1.h:42
JetCalibrationTool::m_globalInsituCombMassConfig
std::vector< TEnv * > m_globalInsituCombMassConfig
Definition: JetCalibrationTool.h:96
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
JetCalibrationTool::m_doGSC
bool m_doGSC
Definition: JetCalibrationTool.h:104
config
std::vector< std::string > config
Definition: fbtTestBasics.cxx:74
AthCommonMsg< AlgTool >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
IJetCalibrationTool::applyCalibration
virtual StatusCode applyCalibration(xAOD::JetContainer &jets) const =0
Apply calibration to a jet container.
JetCalibrationTool::m_doBcid
bool m_doBcid
Definition: JetCalibrationTool.h:100
JetCalibrationTool::m_timeDependentCalib
bool m_timeDependentCalib
Definition: JetCalibrationTool.h:80
ReadBchFromCool.lastRun
lastRun
Definition: ReadBchFromCool.py:278
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:623
defineDB.jets
list jets
Definition: JetTagCalibration/share/defineDB.py:24
JetCalibrationTool::m_calibSeq
std::string m_calibSeq
Definition: JetCalibrationTool.h:75
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
merge.status
status
Definition: merge.py:17
JetCalibUtils::VectorizeD
VecD VectorizeD(const TString &str, const TString &sep=" ")
Definition: JetCalibUtils.cxx:25
JetEventInfo::setRunNumber
void setRunNumber(UInt_t RunNumber)
Definition: JetEventInfo.h:20
JetCalibrationTool::m_useNjetInResidual
bool m_useNjetInResidual
Definition: JetCalibrationTool.h:82
JetCalibrationTool::m_useOriginVertex
bool m_useOriginVertex
Definition: JetCalibrationTool.h:113
SG::DataProxy
Definition: DataProxy.h:44
JetCalibrationTool::m_doDNNCal
bool m_doDNNCal
Definition: JetCalibrationTool.h:105
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
JetCalibrationTool::m_doOrigin
bool m_doOrigin
Definition: JetCalibrationTool.h:103
JetEventInfo::setMu
void setMu(double mu)
Definition: JetEventInfo.h:16
fitman.rho
rho
Definition: fitman.py:532
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
fitman.k
k
Definition: fitman.py:528
JetCalibrationTool::m_calibSteps
std::vector< std::unique_ptr< JetCalibrationStep > > m_calibSteps
Definition: JetCalibrationTool.h:109
JetCalibrationTool::m_insituCombMassCalib
bool m_insituCombMassCalib
Definition: JetCalibrationTool.h:90