ATLAS Offline Software
Loading...
Searching...
No Matches
JetCalibrationTool Class Reference

#include <JetCalibrationTool.h>

Inheritance diagram for JetCalibrationTool:

Public Types

enum  jetScale { EM , LC , PFLOW }
Definition of the StoreGate-like object's definition
typedef ServiceHandle< StoreGateSvcMetaStore_t
 Type of the metadata store object in Athena.
typedef const ServiceHandle< StoreGateSvc > & MetaStorePtr_t
 Type of the metadata store pointer in standalone mode.

Public Member Functions

 JetCalibrationTool (const std::string &name="JetCalibrationTool")
 Constructor with parameters:
 ~JetCalibrationTool ()
 Destructor:
StatusCode initialize () override
 Dummy implementation of the initialisation function.
StatusCode applyCalibration (xAOD::JetContainer &) const override
 Apply calibration to a jet container.
StatusCode getNominalResolutionData (const xAOD::Jet &jet, double &resolution) const override
StatusCode getNominalResolutionMC (const xAOD::Jet &jet, double &resolution) const override
StatusCode getNominalResolutionHist (const xAOD::Jet &jet, double &resolution, const TH2D *histo) const
virtual StatusCode sysInitialize ()
 Function initialising the tool in the correct way in Athena.
virtual void print () const
 Print the state of the tool.
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () 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).
Functions providing access to the input/output metadata
MetaStorePtr_t inputMetaStore () const
 Accessor for the input metadata store.
MetaStorePtr_t outputMetaStore () const
 Accessor for the output metadata store.
Additional helper functions, not directly mimicking Athena
template<class T>
const T * getProperty (const std::string &name) const
 Get one of the tool's properties.
const std::string & msg_level_name () const __attribute__((deprecated))
 A deprecated function for getting the message level's name.
const std::string & getName (const void *ptr) const
 Get the name of an object that is / should be in the event store.
SG::sgkey_t getKey (const void *ptr) const
 Get the (hashed) key of an object that is in the event store.

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
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.
Callback functions helping in metadata reading/writing
void setUseIncidents (const bool flag)
virtual void handle (const Incident &inc)
 Function receiving incidents from IncidentSvc/Event.
virtual StatusCode beginInputFile ()
 Function called when a new input file is opened.
virtual StatusCode endInputFile ()
 Function called when the currently open input file got completely processed.
virtual StatusCode beginEvent ()
 Function called when a new events is loaded.
virtual StatusCode metaDataStop ()
 Function called when the tool should write out its metadata.

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, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

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 {true}
std::string m_forceCampaign {}
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
std::string m_forceCalibFile_PtResidual {}
std::string m_forceCalibFile_FastSim {}
std::string m_forceCalibFile_MC2MC {}
TEnv * m_globalConfig {}
std::vector< TEnv * > m_globalTimeDependentConfigs
std::vector< TEnv * > m_globalInsituCombMassConfig
jetScale m_jetScale = jetScale::EM
bool m_doBcid {true}
bool m_doJetArea {true}
bool m_doResidual {true}
bool m_doOrigin {true}
bool m_doGSC {true}
bool m_doDNNCal {}
std::string m_gscDepth {"auto"}
std::vector< std::unique_ptr< JetCalibrationStep > > m_calibSteps
int m_smearIndex {-1}
bool m_useOriginVertex {}
MetaStore_t m_inputMetaStore
 Object accessing the input metadata store.
MetaStore_t m_outputMetaStore
 Object accessing the output metadata store.
bool m_beginInputFileCalled
 Flag helping to discover when the tool misses the opening of the first input file.
bool m_useIncidents
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default).
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default).
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

Definition at line 31 of file JetCalibrationTool.h.

Member Typedef Documentation

◆ MetaStore_t

Type of the metadata store object in Athena.

Definition at line 66 of file AsgMetadataTool.h.

◆ MetaStorePtr_t

Type of the metadata store pointer in standalone mode.

Definition at line 68 of file AsgMetadataTool.h.

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

Member Enumeration Documentation

◆ jetScale

Constructor & Destructor Documentation

◆ JetCalibrationTool()

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

Constructor with parameters:

Definition at line 31 of file JetCalibrationTool.cxx.

32 : asg::AsgMetadataTool( name )
33{
34 declareProperty( "JetCollection", m_jetAlgo = "AntiKt4LCTopo" );
35 declareProperty( "ConfigFile", m_config = "" );
36 declareProperty( "CalibSequence", m_calibSeq = "JetArea_Offset_AbsoluteEtaJES_Insitu" );
37 declareProperty( "IsData", m_isData = true );
38 declareProperty( "ForceCampaign", m_forceCampaign = "");
39 declareProperty( "ConfigDir", m_dir = "JetCalibTools/CalibrationConfigs/" );
40 declareProperty( "EventInfoName", m_eInfoName = "EventInfo");
41 declareProperty( "DEVmode", m_devMode = false);
42 declareProperty( "OriginScale", m_originScale = "JetOriginConstitScaleMomentum");
43 declareProperty( "CalibArea", m_calibAreaTag = "00-04-82");
44 declareProperty( "GSCDepth", m_gscDepth);
45 declareProperty( "useOriginVertex", m_useOriginVertex = false);
46 // Options to force files for metadata-dependent calibration in case metadata is not available
47 declareProperty( "ForceCalibFilePtResidual", m_forceCalibFile_PtResidual = "");
48 declareProperty( "ForceCalibFileFastSim", m_forceCalibFile_FastSim = "");
49 declareProperty( "ForceCalibFileMC2MC", m_forceCalibFile_MC2MC = "");
50}
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
std::string m_forceCalibFile_FastSim
std::string m_forceCalibFile_PtResidual
std::string m_forceCalibFile_MC2MC

◆ ~JetCalibrationTool()

JetCalibrationTool::~JetCalibrationTool ( )

Destructor:

Definition at line 52 of file JetCalibrationTool.cxx.

52 {
54 for(TEnv* config : m_globalTimeDependentConfigs) delete config;
55 for(TEnv* config : m_globalInsituCombMassConfig) delete config;
56}
std::vector< TEnv * > m_globalTimeDependentConfigs
std::vector< TEnv * > m_globalInsituCombMassConfig

Member Function Documentation

◆ applyCalibration()

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

Apply calibration to a jet container.

Implements IJetCalibrationTool.

Definition at line 444 of file JetCalibrationTool.cxx.

444 {
445 //Grab necessary event info for pile up correction and store it in a JetEventInfo class object
446 ATH_MSG_VERBOSE("Modifying jet collection.");
447 JetEventInfo jetEventInfo;
448 ATH_CHECK( initializeEvent(jetEventInfo) );
449 for (xAOD::Jet* jet : jets) ATH_CHECK( calibrate(*jet, jetEventInfo) );
450 return StatusCode::SUCCESS;
451}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_VERBOSE(x,...)
StatusCode calibrate(xAOD::Jet &jet, JetEventInfo &jetEventInfo) const
StatusCode initializeEvent(JetEventInfo &jetEventInfo) const
Jet_v1 Jet
Definition of the current "jet version".

◆ beginEvent()

StatusCode asg::AsgMetadataTool::beginEvent ( )
protectedvirtualinherited

◆ beginInputFile()

StatusCode asg::AsgMetadataTool::beginInputFile ( )
protectedvirtualinherited

Function called when a new input file is opened.

Dummy implementation that can be overridden by the derived tool.

Reimplemented in AsgElectronEfficiencyCorrectionTool, BookkeeperDumperTool, BookkeeperTool, PMGTools::PMGTruthWeightTool, TauAnalysisTools::TauEfficiencyCorrectionsTool, TauAnalysisTools::TauSmearingTool, Trig::TrigDecisionTool, Trig::xAODBunchCrossingTool, TrigConf::xAODConfigTool, xAODMaker::TriggerMenuMetaDataTool, and xAODMaker::TruthMetaDataTool.

Definition at line 185 of file AsgMetadataTool.cxx.

185 {
186
187 // Return gracefully:
188 return StatusCode::SUCCESS;
189 }

◆ calibrate()

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

Definition at line 667 of file JetCalibrationTool.cxx.

667 {
668
669 //Check for OriginCorrected and PileupCorrected attributes, assume they are false if not found
670 int tmp = 0; //temporary int for checking getAttribute
671 if ( !jet.getAttribute<int>("OriginCorrected",tmp) )
672 jet.setAttribute<int>("OriginCorrected",false);
673 if ( !jet.getAttribute<int>("PileupCorrected",tmp) )
674 jet.setAttribute<int>("PileupCorrected",false);
675
676 ATH_MSG_VERBOSE("Calibrating jet " << jet.index());
678 xAOD::JetFourMom_t jetconstitP4 = jet.getAttribute<xAOD::JetFourMom_t>("JetConstitScaleMomentum");
679 jet.setAttribute<float>("DetectorEta",jetconstitP4.eta()); //saving constituent scale eta for later use
680 }
681
682 for (unsigned int i=0; i<m_calibSteps.size(); ++i) ATH_CHECK(m_calibSteps[i]->calibrate(jet, jetEventInfo));
683
684 return StatusCode::SUCCESS;
685}
std::vector< std::unique_ptr< JetCalibrationStep > > m_calibSteps
void setAttribute(const std::string &name, const T &v)
bool getAttribute(AttributeID type, T &value) const
Retrieve attribute moment by enum.
ROOT::Math::LorentzVector< ROOT::Math::PtEtaPhiM4D< double > > JetFourMom_t
Base 4 Momentum type for Jet.
Definition JetTypes.h:17

◆ declareGaudiProperty()

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

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

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }

◆ declareProperty()

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

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ 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.

◆ endInputFile()

StatusCode asg::AsgMetadataTool::endInputFile ( )
protectedvirtualinherited

Function called when the currently open input file got completely processed.

Dummy implementation that can be overridden by the derived tool.

Reimplemented in BookkeeperDumperTool, BookkeeperTool, TrigConf::xAODConfigTool, xAODMaker::TriggerMenuMetaDataTool, and xAODMaker::TruthMetaDataTool.

Definition at line 193 of file AsgMetadataTool.cxx.

193 {
194
195 // Return gracefully:
196 return StatusCode::SUCCESS;
197 }

◆ evtStore()

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.

◆ 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 239 of file JetCalibrationTool.cxx.

239 {
240 TString jetAlgo = m_jetAlgo;
241 const TString calibPath = "CalibArea-" + m_calibAreaTag + "/";
242 bool ok{true};
243 // Metadata needed to configure some corrections
244 TString generatorsInfo{};
245 TString simFlavour{};
246 float mcDSID{-1.0};
247 TString mcCampaign{};
248 if ( inputMetaStore()->contains<xAOD::FileMetaData>("FileMetaData") ) {
249 const xAOD::FileMetaData *fmd = nullptr;
250 ATH_CHECK(inputMetaStore()->retrieve(fmd,"FileMetaData") );
251
252 if(m_isData){
253 UInt_t dataYear = 0;
254 ok &= fmd->value(xAOD::FileMetaData::dataYear, dataYear);
255 if (dataYear >= 2015 && dataYear <= 2018) {
256 mcCampaign = "MC20";
257 } else if (dataYear >= 2022 && dataYear <= 2024) {
258 mcCampaign = "MC23";
259 } else {
260 ATH_MSG_VERBOSE("Data year " << dataYear << " not recognized from file metadata. The corresponding mcCampaign will not be known.");
261 }
262
263 } else { // is MC
264 std::string str_generatorsInfo;
265 ok &= fmd->value(xAOD::FileMetaData::generatorsInfo, str_generatorsInfo);
266 generatorsInfo = str_generatorsInfo;
267
268 std::string str_simFlavour;
269 ok &= fmd->value(xAOD::FileMetaData::simFlavour, str_simFlavour);
270 simFlavour = str_simFlavour;
271
272 ok &= fmd->value(xAOD::FileMetaData::mcProcID, mcDSID);
273
274 std::string str_mcCampaign;
275 ok &= fmd->value(xAOD::FileMetaData::mcCampaign, str_mcCampaign);
276 str_mcCampaign.resize(4); //Only keep top-level of campaign (e.g. mc20 or mc23)
277 mcCampaign = str_mcCampaign;
278 mcCampaign.ToUpper();
279 ATH_MSG_INFO("Have loaded metadata mcDSID:" << mcDSID << ", generatorsInfo: " << generatorsInfo << ", mcCampaign: " << mcCampaign << ", simFlavour: " << simFlavour);
280 }
281 }
282 if (not ok){
283 ATH_MSG_DEBUG("Some values in FileMetaData returned false for 'value()'.");
284 }
285 // Force the MCCampaign (or data equivalent) for missing Metadata or tests
286 if( m_forceCampaign != "" ){
288 }
289
290 if ( calibration.EqualTo("Bcid") ){
291 m_globalConfig->SetValue("PileupStartingScale","JetBcidScaleMomentum");
292 std::unique_ptr<JetCalibrationStep> bcidCorr = std::make_unique<BcidOffsetCorrection>(this->name()+"_Bcid", m_globalConfig, jetAlgo, calibPath, m_isData);
293 ATH_CHECK(bcidCorr->initialize());
294 m_calibSteps.push_back(std::move(bcidCorr));
295 return StatusCode::SUCCESS;
296 }
297 else if ( calibration.EqualTo("JetArea") || calibration.EqualTo("Residual") ) {
298 std::unique_ptr<JetCalibrationStep> puCorr = std::make_unique<JetPileupCorrection>(this->name()+"_Pileup", m_globalConfig, jetAlgo, calibPath,
300 puCorr->msg().setLevel( this->msg().level() );
301 ATH_CHECK(puCorr->initialize());
302 m_calibSteps.push_back(std::move(puCorr));
303 return StatusCode::SUCCESS;
304 }
305 else if ( calibration.EqualTo("EtaJES") || calibration.EqualTo("AbsoluteEtaJES") ) {
306 std::unique_ptr<JetCalibrationStep> etaJESCorr = std::make_unique<EtaJESCorrection>(this->name()+"_EtaJES", m_globalConfig, jetAlgo, calibPath, false, m_devMode);
307 etaJESCorr->msg().setLevel( this->msg().level() );
308 ATH_CHECK(etaJESCorr->initialize());
309 m_calibSteps.push_back(std::move(etaJESCorr));
310 return StatusCode::SUCCESS;
311 }
312 else if ( calibration.EqualTo("EtaMassJES") ) {
313 std::unique_ptr<JetCalibrationStep> etaJESCorr = std::make_unique<EtaJESCorrection>(this->name()+"_EtaMassJES", m_globalConfig, jetAlgo, calibPath, true, m_devMode);
314 etaJESCorr->msg().setLevel( this->msg().level() );
315 ATH_CHECK(etaJESCorr->initialize());
316 m_calibSteps.push_back(std::move(etaJESCorr));
317 return StatusCode::SUCCESS;
318 }
319 else if ( calibration.EqualTo("GSC") ) {
320 std::unique_ptr<JetCalibrationStep> gsc = std::make_unique<GlobalSequentialCorrection>(this->name()+"_GSC", m_globalConfig, jetAlgo, m_gscDepth, calibPath, m_useOriginVertex, m_devMode);
321 gsc->msg().setLevel( this->msg().level() );
322 ATH_CHECK(gsc->initialize());
323 m_calibSteps.push_back(std::move(gsc));
324
325 // Set devMode paths for the following corrections
326 TString actualCalibPath;
327 if(m_devMode){
328 actualCalibPath = "JetCalibTools/";
329 } else {
330 actualCalibPath = "JetCalibTool/CalibArea-" + m_calibAreaTag + "/";
331 }
332 // Additional FastSim and PtResidual patches happen after GSC
333 bool do_FastSim = m_globalConfig->GetValue("JPS_FastSim.doCalibration", false) || (m_forceCalibFile_FastSim != "");
334 if(m_isData and do_FastSim){
335 ATH_MSG_WARNING("JPS_FastSim.doCalibration is set in JetCalibrationTool config but isData is set to true. Will turn off FastSim calibration.");
336 do_FastSim = false;
337 }
338 if(do_FastSim){
339 if ( (m_forceCalibFile_FastSim == "") && !inputMetaStore()->contains<xAOD::FileMetaData>("FileMetaData") ) {
340 ATH_MSG_FATAL("JPS_FastSim.doCalibration is set in JetCalibrationTool config but file has no FileMetaData. Please fix the sample or configuration.");
341 return StatusCode::FAILURE;
342 }
343 std::unique_ptr<JetCalibrationStep> JPS_FastSim = std::make_unique<Generic4VecCorrection>(this->name()+"_FastSim", m_globalConfig, jetAlgo, actualCalibPath, m_forceCalibFile_FastSim, Generic4VecCorrection::JET_CORRTYPE::FASTSIM, mcCampaign, simFlavour);
344 JPS_FastSim->msg().setLevel( this->msg().level() );
345 ATH_CHECK(JPS_FastSim->initialize());
346 m_calibSteps.push_back(std::move(JPS_FastSim));
347 }
348 bool do_PtResidual = m_globalConfig->GetValue("JPS_PtResidual.doCalibration", false) || (m_forceCalibFile_PtResidual != "");
349 if(do_PtResidual){
350 std::unique_ptr<JetCalibrationStep> JPS_PtResidual = std::make_unique<Generic4VecCorrection>(this->name()+"_PtResidual", m_globalConfig, jetAlgo, actualCalibPath, m_forceCalibFile_PtResidual, Generic4VecCorrection::JET_CORRTYPE::PTRESIDUAL, mcCampaign);
351 JPS_PtResidual->msg().setLevel( this->msg().level() );
352 ATH_CHECK(JPS_PtResidual->initialize());
353 m_calibSteps.push_back(std::move(JPS_PtResidual));
354 }
355 return StatusCode::SUCCESS;
356 }
357 else if ( calibration.EqualTo("GNNC") ) {
358 std::unique_ptr<JetCalibrationStep> gnnc = std::make_unique<GlobalNNCalibration>(this->name()+"_GNNC",m_globalConfig,jetAlgo,calibPath,m_devMode);
359 gnnc->msg().setLevel( this->msg().level() );
360 ATH_CHECK(gnnc->initialize());
361 m_calibSteps.push_back(std::move(gnnc));
362 return StatusCode::SUCCESS;
363 }
364 else if ( calibration.EqualTo("MC2MC") ) {
365 // Set devMode paths for this correction
366 TString actualCalibPath;
367 if(m_devMode){
368 actualCalibPath = "JetCalibTools/";
369 } else {
370 actualCalibPath = "JetCalibTool/CalibArea-" + m_calibAreaTag + "/";
371 }
372 if ( !inputMetaStore()->contains<xAOD::FileMetaData>("FileMetaData") && (m_forceCalibFile_MC2MC == "") ) {
373 ATH_MSG_FATAL("MC2MC step of jet calibration is requested but file has no FileMetaData. Please fix the sample or configuration.");
374 return StatusCode::FAILURE;
375 }
376 std::unique_ptr<JetCalibrationStep> JPS_MC2MC = std::make_unique<Generic4VecCorrection>(this->name()+"_MC2MC", m_globalConfig, jetAlgo, actualCalibPath, m_forceCalibFile_MC2MC, Generic4VecCorrection::JET_CORRTYPE::MC2MC, mcCampaign, simFlavour, (int) mcDSID, generatorsInfo);
377 JPS_MC2MC->msg().setLevel( this->msg().level() );
378 ATH_CHECK(JPS_MC2MC->initialize());
379 m_calibSteps.push_back(std::move(JPS_MC2MC));
380 return StatusCode::SUCCESS;
381 }
382 else if ( calibration.EqualTo("JMS") ) {
383 std::unique_ptr<JetCalibrationStep> jetMassCorr = std::make_unique<JMSCorrection>(this->name()+"_JMS", m_globalConfig, jetAlgo, calibPath, m_devMode);
384 jetMassCorr->msg().setLevel( this->msg().level() );
385 ATH_CHECK(jetMassCorr->initialize());
386 m_calibSteps.push_back(std::move(jetMassCorr));
387 return StatusCode::SUCCESS;
388 }
389 else if ( calibration.EqualTo("InsituCombinedMass") ){
390 for(unsigned int i=0;i<m_insituCombMassConfig.size();++i){
391 std::unique_ptr<JetCalibrationStep> jetMassCorr = std::make_unique<JMSCorrection>(this->name()+"_InsituCombinedMass", m_globalInsituCombMassConfig.at(i), jetAlgo, calibPath, m_devMode);
392 jetMassCorr->msg().setLevel( this->msg().level() );
393 ATH_CHECK(jetMassCorr->initialize());
394 m_calibSteps.push_back(std::move(jetMassCorr));
395 }
396 return StatusCode::SUCCESS;
397 }
398 else if ( calibration.EqualTo("Insitu") ) {
400 std::unique_ptr<JetCalibrationStep> insituDataCorr = std::make_unique<InsituDataCorrection>(this->name()+"_Insitu", m_globalConfig, jetAlgo, calibPath, m_devMode);
401 insituDataCorr->msg().setLevel( this->msg().level() );
402 ATH_CHECK(insituDataCorr->initialize());
403 m_calibSteps.push_back(std::move(insituDataCorr));
404 return StatusCode::SUCCESS;
405 }
406 else{
407 ATH_MSG_INFO("Initializing Time-Dependent Insitu Corrections");
408 for(unsigned int i=0;i<m_timeDependentInsituConfigs.size();++i){
409 // Add 0.5 before casting to avoid floating-point precision issues
410 unsigned int firstRun = static_cast<unsigned int>(m_runBins.at(i)+1.5);
411 unsigned int lastRun = static_cast<unsigned int>(m_runBins.at(i+1)+0.5);
412 std::unique_ptr<JetCalibrationStep> insituDataCorr = std::make_unique<InsituDataCorrection>(this->name()+"_Insitu_"+std::to_string(i), m_globalTimeDependentConfigs.at(i), jetAlgo,
413 calibPath, m_devMode, firstRun, lastRun);
414 insituDataCorr->msg().setLevel( this->msg().level() );
415 ATH_CHECK(insituDataCorr->initialize());
416 m_calibSteps.push_back(std::move(insituDataCorr));
417 }
418 return StatusCode::SUCCESS;
419 }
420 }
421 else if ( calibration.EqualTo("Smear") ) {
422 if(m_isData){
423 ATH_MSG_FATAL("Asked for smearing of data, which is not supported. Aborting.");
424 return StatusCode::FAILURE;
425 }
426 std::unique_ptr<JetCalibrationStep> jetSmearCorr = std::make_unique<JetSmearingCorrection>(this->name()+"_Smear", m_globalConfig,jetAlgo,calibPath,m_devMode);
427 jetSmearCorr->msg().setLevel(this->msg().level());
428 ATH_CHECK(jetSmearCorr->initialize());
429 m_calibSteps.push_back(std::move(jetSmearCorr));
430 m_smearIndex = m_calibSteps.size() - 1;
431 return StatusCode::SUCCESS;
432 }
433 else if ( calibration.EqualTo("LargeRDNN") ) {
434 std::unique_ptr<JetCalibrationStep> largeR_dnn = std::make_unique<GlobalLargeRDNNCalibration>(this->name()+"_R10DNN", m_globalConfig,calibPath,m_devMode);
435 largeR_dnn->msg().setLevel(this->msg().level());
436 ATH_CHECK(largeR_dnn->initialize());
437 m_calibSteps.push_back(std::move(largeR_dnn));
438 return StatusCode::SUCCESS;
439 }
440 ATH_MSG_FATAL("Calibration string not recognized: " << calibration << ", aborting.");
441 return StatusCode::FAILURE;
442}
#define ATH_MSG_DEBUG(x,...)
#define ATH_MSG_WARNING(x,...)
#define ATH_MSG_INFO(x,...)
#define ATH_MSG_FATAL(x,...)
std::vector< double > m_runBins
std::vector< TString > m_timeDependentInsituConfigs
std::vector< TString > m_insituCombMassConfig
MetaStorePtr_t inputMetaStore() const
Accessor for the input metadata store.
@ mcProcID
Same as mc_channel_number [float].
@ generatorsInfo
Generators information [string].
@ mcCampaign
MC campaign [string].
@ dataYear
Data year [uint32_t].
@ simFlavour
Fast or Full sim [string].
bool value(MetaDataType type, std::string &val) const
Get a pre-defined string value out of the object.
bool contains(const std::string &s, const std::string &regx)
does a string contain the substring
Definition hcg.cxx:116
FileMetaData_v1 FileMetaData
Declare the latest version of the class.
MsgStream & msg
Definition testRead.cxx:32

◆ 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::Event 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::Event, 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 }
ServiceHandle< StoreGateSvc > & evtStore()

◆ 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::Event 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::Event, 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 688 of file JetCalibrationTool.cxx.

688 {
689
690 if(m_smearIndex < 0){
691 ATH_MSG_ERROR("Requested jet resolution without a smearing step in the CalibSequence!");
692 return StatusCode::FAILURE;
693 }
694 return m_calibSteps.at(m_smearIndex)->getNominalResolutionData(jet, resolution);
695}
#define ATH_MSG_ERROR(x,...)

◆ getNominalResolutionHist()

StatusCode JetCalibrationTool::getNominalResolutionHist ( const xAOD::Jet & jet,
double & resolution,
const TH2D * histo ) const

◆ getNominalResolutionMC()

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

Reimplemented from IJetCalibrationTool.

Definition at line 697 of file JetCalibrationTool.cxx.

697 {
698
699 if(m_smearIndex < 0){
700 ATH_MSG_ERROR("Requested jet resolution without a smearing step in the CalibSequence!");
701 return StatusCode::FAILURE;
702 }
703 return m_calibSteps.at(m_smearIndex)->getNominalResolutionMC(jet, resolution);
704}

◆ getProperty()

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

Get one of the tool's properties.

◆ handle()

void asg::AsgMetadataTool::handle ( const Incident & inc)
protectedvirtualinherited

Function receiving incidents from IncidentSvc/Event.

Reimplemented in Trig::TrigDecisionTool.

Definition at line 135 of file AsgMetadataTool.cxx.

135 {
136
137 // Tell the user what's happening:
138 ATH_MSG_VERBOSE( "Callback received with incident: " << inc.type() );
139
140 // Call the appropriate member function:
141 if( inc.type() == IncidentType::BeginInputFile ) {
143 if( beginInputFile().isFailure() ) {
144 ATH_MSG_FATAL( "Failed to call beginInputFile()" );
145 throw std::runtime_error( "Couldn't call beginInputFile()" );
146 }
147 } else if( inc.type() == IncidentType::EndInputFile ) {
148 if( endInputFile().isFailure() ) {
149 ATH_MSG_FATAL( "Failed to call endInputFile()" );
150 throw std::runtime_error( "Couldn't call endInputFile()" );
151 }
152 } else if( inc.type() == IncidentType::BeginEvent ) {
153 // If the tool didn't catch the begin input file incident for the
154 // first input file of the job, then call the appropriate function
155 // now.
156 if( ! m_beginInputFileCalled ) {
158 if( beginInputFile().isFailure() ) {
159 ATH_MSG_FATAL( "Failed to call beginInputFile()" );
160 throw std::runtime_error( "Couldn't call beginInputFile()" );
161 }
162 }
163 if( beginEvent().isFailure() ) {
164 ATH_MSG_FATAL( "Failed to call beginEvent()" );
165 throw std::runtime_error( "Couldn't call beginEvent()" );
166 }
167
168 #ifdef XAOD_STANDALONE
169 } else if( inc.type() == IncidentType::MetaDataStop ) {
170 if( metaDataStop().isFailure() ) {
171 ATH_MSG_FATAL( "Failed to call metaDataStop()" );
172 throw std::runtime_error( "Couldn't call metaDataStop()" );
173 }
174
175 #endif // XAOD_STANDALONE
176 } else {
177 ATH_MSG_WARNING( "Unknown incident type received in AsgMetaDataTool: " << inc.type() );
178 }
179
180 return;
181 }
virtual StatusCode beginInputFile()
Function called when a new input file is opened.
virtual StatusCode beginEvent()
Function called when a new events is loaded.
bool m_beginInputFileCalled
Flag helping to discover when the tool misses the opening of the first input file.
virtual StatusCode endInputFile()
Function called when the currently open input file got completely processed.
virtual StatusCode metaDataStop()
Function called when the tool should write out its metadata.

◆ initialize()

StatusCode JetCalibrationTool::initialize ( void )
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 63 of file JetCalibrationTool.cxx.

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

◆ initializeEvent()

StatusCode JetCalibrationTool::initializeEvent ( JetEventInfo & jetEventInfo) const
private

Definition at line 456 of file JetCalibrationTool.cxx.

456 {
457
458 // Check if the tool was initialized
459 if( m_calibSteps.empty() ){
460 ATH_MSG_FATAL(" JetCalibrationTool::initializeEvent : The tool was not initialized.");
461 return StatusCode::FAILURE;
462 }
463
464 // static accessor for PV index access
465 static const SG::AuxElement::ConstAccessor<int> PVIndexAccessor("PVIndex");
466
467 ATH_MSG_VERBOSE("Initializing event.");
468
469 if( m_doJetArea ) {
470 //Determine the rho value to use for the jet area subtraction
471 //Should be determined using EventShape object, use hard coded values if EventShape doesn't exist
472 double rho=0;
473 const xAOD::EventShape * eventShape = nullptr;
474
475 SG::ReadHandle<xAOD::EventShape> rhRhoKey(m_rhoKey);
476
477 if ( rhRhoKey.isValid() ) {
478 ATH_MSG_VERBOSE(" Found event density container " << m_rhoKey.key());
479 eventShape = rhRhoKey.cptr();
480 if ( !rhRhoKey.isValid() ) {
481 ATH_MSG_VERBOSE(" Event shape container not found.");
482 ATH_MSG_FATAL("Could not retrieve the xAOD::EventShape container " << m_rhoKey.key() << " from the input file");
483 return StatusCode::FAILURE;
484 } else if ( !eventShape->getDensity( xAOD::EventShape::Density, rho ) ) {
485 ATH_MSG_VERBOSE(" Event density not found in container.");
486 ATH_MSG_FATAL("Could not retrieve the xAOD::EventShape::Density variable from " << m_rhoKey.key());
487 return StatusCode::FAILURE;
488 } else {
489 ATH_MSG_VERBOSE(" Event density retrieved.");
490 }
491 } else if ( m_doJetArea && !rhRhoKey.isValid() ) {
492 ATH_MSG_VERBOSE(" Rho container not found: " << m_rhoKey.key());
493 ATH_MSG_FATAL("Could not retrieve xAOD::EventShape container " << m_rhoKey.key() << " from the input file");
494 return StatusCode::FAILURE;
495 }
496 jetEventInfo.setRho(rho);
497 ATH_MSG_VERBOSE(" Rho = " << 0.001*rho << " GeV");
498
499 // Necessary retrieval and calculation for use of nJetX instead of NPV
501 // retrieve the container
502 const xAOD::JetContainer * jets = nullptr;
504 ATH_MSG_VERBOSE(" Found jet container " << m_nJetContainerName);
505 if ( evtStore()->retrieve(jets, m_nJetContainerName).isFailure() || !jets ) {
506 ATH_MSG_FATAL("Could not retrieve xAOD::JetContainer " << m_nJetContainerName << " from evtStore");
507 return StatusCode::FAILURE;
508 }
509 } else {
510 ATH_MSG_FATAL("Could not find jet container " << m_nJetContainerName << " in the evtStore");
511 return StatusCode::FAILURE;
512 }
513
514 // count jets above threshold
515 int nJets = 0;
516 for (const auto *jet : *jets) {
517 if(jet->pt()/1000. > m_nJetThreshold)
518 nJets += 1;
519 }
520 jetEventInfo.setNjet(nJets);
521 }
522 }
523
524 // Retrieve EventInfo object, which now has multiple uses
526 const xAOD::EventInfo * eventObj = nullptr;
527 static std::atomic<unsigned int> eventInfoWarnings = 0;
528 SG::ReadHandle<xAOD::EventInfo> rhEvtInfo(m_evtInfoKey);
529 if ( rhEvtInfo.isValid() ) {
530 eventObj = rhEvtInfo.cptr();
531 } else {
532 ++eventInfoWarnings;
533 if ( eventInfoWarnings < 20 )
534 ATH_MSG_ERROR(" JetCalibrationTool::initializeEvent : Failed to retrieve event information.");
535 jetEventInfo.setMu(0); //Hard coded value mu = 0 in case of failure (to prevent seg faults later).
536 jetEventInfo.setPVIndex(0);
537 return StatusCode::SUCCESS; //error is recoverable, so return SUCCESS
538 }
539 jetEventInfo.setRunNumber( eventObj->runNumber() );
540
541 // If we are applying the reisdual, then store mu
542 if (m_doResidual || m_doBcid) {
543 SG::ReadDecorHandle<xAOD::EventInfo,float> eventInfoDecor(m_muKey);
544 if(!eventInfoDecor.isPresent()) {
545 ATH_MSG_ERROR("EventInfo decoration not available!");
546 return StatusCode::FAILURE;
547 }
548 jetEventInfo.setMu( eventInfoDecor(0) );
549 }
550
551 // If this is GSC, we need EventInfo to determine the PV to use
552 // This is support for groups where PV0 is not the vertex of interest (H->gamgam, etc)
553 if (m_doGSC)
554 {
555 // First retrieve the PVIndex if specified
556 // Default is to not specify this, so no warning if it doesn't exist
557 // However, if specified, it should be a sane value - fail if not
558 if ( m_doGSC && PVIndexAccessor.isAvailable(*eventObj) )
559 jetEventInfo.setPVIndex( PVIndexAccessor(*eventObj) );
560 else{
561 if(!m_pvKey.empty()){
562 const xAOD::VertexContainer * vertices = nullptr;
563 SG::ReadHandle<xAOD::VertexContainer> rhPV(m_pvKey);
564 if (rhPV.isValid()) {
565 vertices = rhPV.cptr();
566 xAOD::VertexContainer::const_iterator vtx_itr = vertices->begin();
567 xAOD::VertexContainer::const_iterator vtx_end = vertices->end();
568 for ( ; vtx_itr != vtx_end; ++vtx_itr ){
569 if ( (*vtx_itr)->vertexType() == xAOD::VxType::PriVtx ){
570 jetEventInfo.setPVIndex((*vtx_itr)->index());
571 break;
572 }
573 }
574 }
575 else{
576 jetEventInfo.setPVIndex(0);
577 }
578 }
579 else{
580 jetEventInfo.setPVIndex(0);
581 }
582 }
583 }
584
585 // Extract the BCID information for the BCID correction
586 if (m_doBcid)
587 {
588 static const SG::ConstAccessor<int> BCIDDistanceFromFrontAcc ("DFCommonJets_BCIDDistanceFromFront");
589 static const SG::ConstAccessor<int> BCIDGapBeforeTrainAcc ("DFCommonJets_BCIDGapBeforeTrain");
590 static const SG::ConstAccessor<int> BCIDGapBeforeTrainMinus12Acc ("DFCommonJets_BCIDGapBeforeTrainMinus12");
591
592 jetEventInfo.setBcidDistanceFromFront( BCIDDistanceFromFrontAcc (*eventObj) );
593 jetEventInfo.setBcidGapBeforeTrain( BCIDGapBeforeTrainAcc (*eventObj) );
594 jetEventInfo.setBcidGapBeforeTrainMinus12( BCIDGapBeforeTrainMinus12Acc (*eventObj) );
595 }
596
597 // If PV index is not zero, we need to confirm it's a reasonable value
598 // To do this, we need the primary vertices
599 // However, other users of the GSC may not have the PV collection (in particular: trigger GSC in 2016)
600 // So only retrieve vertices if needed for NPV (residual) or a non-zero PV index was specified (GSC)
601 if ((m_doResidual && !m_useNjetInResidual) || (m_doGSC && jetEventInfo.PVIndex()))
602 {
603 //Retrieve VertexContainer object, use it to obtain NPV for the residual correction or check validity of GSC non-PV0 usage
604 const xAOD::VertexContainer * vertices = nullptr;
605
606 SG::ReadHandle<xAOD::VertexContainer> rhPV(m_pvKey);
607 if (rhPV.isValid()) {
608 vertices = rhPV.cptr();
609 } else {
610 ATH_MSG_WARNING(" JetCalibrationTool::initializeEvent : Failed to retrieve primary vertices.");
611 jetEventInfo.setNPV(0); //Hard coded value NPV = 0 in case of failure (to prevent seg faults later).
612 return StatusCode::SUCCESS; //error is recoverable, so return SUCCESS
613 }
614
615 // Calculate and set NPV if this is residual
616 if (m_doResidual)
617 {
618 int eventNPV = 0;
619 eventNPV = std::count_if(vertices->begin(), vertices->end(), [](const xAOD::Vertex* vtx){ return vtx->vertexType() == xAOD::VxType::PileUp || vtx->vertexType() == xAOD::VxType::PriVtx;});
620 jetEventInfo.setNPV(eventNPV);
621 }
622
623 // Validate value of non-standard PV index usage
624 if (m_doGSC && jetEventInfo.PVIndex())
625 {
626 static std::atomic<unsigned int> vertexIndexWarnings = 0;
627 if (jetEventInfo.PVIndex() < 0 || static_cast<size_t>(jetEventInfo.PVIndex()) >= vertices->size())
628 {
629 ++vertexIndexWarnings;
630 if (vertexIndexWarnings < 20)
631 ATH_MSG_WARNING(" JetCalibrationTool::initializeEvent : PV index is out of bounds.");
632 jetEventInfo.setPVIndex(0); // Hard coded value PVIndex = 0 in case of failure (to prevent seg faults later).
633 return StatusCode::SUCCESS; // error is recoverable, so return SUCCESS
634 }
635 }
636 }
637 } else if (m_doDNNCal) {
638 // retrieve mu and NPV only from eventInfo
639 static std::atomic<unsigned int> eventInfoWarningsMu = 0;
640 SG::ReadHandle<xAOD::EventInfo> rhEvtInfo(m_evtInfoKey);
641 if ( rhEvtInfo.isValid() ) {
642 SG::ReadDecorHandle<xAOD::EventInfo,float> eventInfoDecor(m_actualMuKey);
643 jetEventInfo.setMu(eventInfoDecor(0));
644 } else {
645 ++eventInfoWarningsMu;
646 if ( eventInfoWarningsMu < 20 ) ATH_MSG_WARNING(" JetCalibrationTool::initializeEvent : Failed to retrieve event information.");
647 jetEventInfo.setMu(0); //Hard coded value mu = 0 in case of failure (to prevent seg faults later).
648 }
649
650 static std::atomic<unsigned int> eventInfoWarningsPV = 0;
651 const xAOD::VertexContainer * vertices = nullptr;
652 SG::ReadHandle<xAOD::VertexContainer> rhPV(m_pvKey);
653 if (rhPV.isValid()) {
654 vertices = rhPV.cptr();
655 int eventNPV = 0;
656 eventNPV = std::count_if(vertices->begin(), vertices->end(), [](const xAOD::Vertex* vtx){ return vtx->vertexType() == xAOD::VxType::PileUp || vtx->vertexType() == xAOD::VxType::PriVtx;});
657 jetEventInfo.setNPV(eventNPV);
658 } else {
659 ++eventInfoWarningsPV;
660 if ( eventInfoWarningsPV < 20 ) ATH_MSG_WARNING(" JetCalibrationTool::initializeEvent : Failed to retrieve primary vertices.");
661 jetEventInfo.setNPV(0); //Hard coded value NPV = 0 in case of failure (to prevent seg faults later).
662 }
663 }
664 return StatusCode::SUCCESS;
665}
DataModel_detail::const_iterator< DataVector > const_iterator
Definition DataVector.h:838
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
size_type size() const noexcept
Returns the number of elements in the collection.
void setBcidDistanceFromFront(Int_t BcidDistanceFromFront)
void setRho(double rho)
void setBcidGapBeforeTrainMinus12(Int_t BcidGapBeforeTrainMinus12)
void setMu(double mu)
void setPVIndex(int PVindex)
void setRunNumber(UInt_t RunNumber)
void setBcidGapBeforeTrain(Int_t BcidGapBeforeTrain)
void setNjet(double nJet)
void setNPV(double NPV)
uint32_t runNumber() const
The current event's run number.
bool getDensity(EventDensityID id, double &v) const
Get a density variable from the object.
@ PriVtx
Primary vertex.
EventInfo_v1 EventInfo
Definition of the latest event info version.
VertexContainer_v1 VertexContainer
Definition of the current "Vertex container version".
Vertex_v1 Vertex
Define the latest version of the vertex class.
EventShape_v1 EventShape
Definition of the current event format version.
Definition EventShape.h:16
JetContainer_v1 JetContainer
Definition of the current "jet container version".

◆ 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.

◆ inputMetaStore()

AsgMetadataTool::MetaStorePtr_t asg::AsgMetadataTool::inputMetaStore ( ) const
inherited

Accessor for the input metadata store.

Definition at line 93 of file AsgMetadataTool.cxx.

93 {
94
95#ifdef XAOD_STANDALONE
96 return &m_inputMetaStore;
97#else // XAOD_STANDALONE
98 return m_inputMetaStore;
99#endif // XAOD_STANDALONE
100 }
MetaStore_t m_inputMetaStore
Object accessing the input metadata store.

◆ metaDataStop()

StatusCode asg::AsgMetadataTool::metaDataStop ( )
protectedvirtualinherited

Function called when the tool should write out its metadata.

Dummy implementation that can be overridden by the derived tool.

Reimplemented in BookkeeperDumperTool, BookkeeperTool, xAODMaker::TriggerMenuMetaDataTool, and xAODMaker::TruthMetaDataTool.

Definition at line 209 of file AsgMetadataTool.cxx.

209 {
210
211 // Return gracefully:
212 return StatusCode::SUCCESS;
213 }

◆ 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);}
virtual StatusCode applyCalibration(xAOD::JetContainer &jets) const =0
Apply calibration to a jet container.

◆ msg()

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ 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 }
MsgStream & msg() const
const std::string & name(Level lvl)
Convenience function for translating message levels to strings.
Definition MsgLevel.cxx:19

◆ 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.

◆ outputMetaStore()

AsgMetadataTool::MetaStorePtr_t asg::AsgMetadataTool::outputMetaStore ( ) const
inherited

Accessor for the output metadata store.

Definition at line 102 of file AsgMetadataTool.cxx.

102 {
103
104#ifdef XAOD_STANDALONE
105 return &m_outputMetaStore;
106#else // XAOD_STANDALONE
107 return m_outputMetaStore;
108#endif // XAOD_STANDALONE
109 }
MetaStore_t m_outputMetaStore
Object accessing the output metadata store.

◆ 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();
384 }
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)

◆ 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 {
366 }

◆ setUseIncidents()

void asg::AsgMetadataTool::setUseIncidents ( const bool flag)
inlineprotectedinherited

Definition at line 132 of file AsgMetadataTool.h.

133 {
135 }
bool flag
Definition master.py:29

◆ sysInitialize()

StatusCode asg::AsgMetadataTool::sysInitialize ( )
virtualinherited

Function initialising the tool in the correct way in Athena.

This function is used to set up the callbacks from IncidentSvc in Athena at the right time during initialisation, without the user having to do anything special in his/her code.

Reimplemented from AthCommonDataStore< AthCommonMsg< AlgTool > >.

Definition at line 115 of file AsgMetadataTool.cxx.

115 {
116
117#ifndef XAOD_STANDALONE
118 if (m_useIncidents) {
119 // Connect to the IncidentSvc:
120 ServiceHandle< IIncidentSvc > incSvc( "IncidentSvc", name() );
121 ATH_CHECK( incSvc.retrieve() );
122
123 // Set up the right callbacks: don't rethrow exceptions, any failure and we should end
124 incSvc->addListener( this, IncidentType::BeginEvent, 0, false );
125 }
126 // Let the base class do its thing:
127 ATH_CHECK( AlgTool::sysInitialize() );
128
129#endif // not XAOD_STANDALONE
130
131 // Return gracefully:
132 return StatusCode::SUCCESS;
133 }

◆ 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) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }
std::vector< SG::VarHandleKeyArray * > m_vhka

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.

69 {this, "actualInteractionsPerCrossing",
70 "EventInfo.actualInteractionsPerCrossing","Decoration for Actual Number of Interactions Per Crossing"};

◆ m_beginInputFileCalled

bool asg::AsgMetadataTool::m_beginInputFileCalled
privateinherited

Flag helping to discover when the tool misses the opening of the first input file.

Definition at line 126 of file AsgMetadataTool.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 113 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.

78{};

◆ m_dir

std::string JetCalibrationTool::m_dir
private

Definition at line 86 of file JetCalibrationTool.h.

◆ m_doBcid

bool JetCalibrationTool::m_doBcid {true}
private

Definition at line 104 of file JetCalibrationTool.h.

104{true};

◆ m_doDNNCal

bool JetCalibrationTool::m_doDNNCal {}
private

Definition at line 109 of file JetCalibrationTool.h.

109{};

◆ m_doGSC

bool JetCalibrationTool::m_doGSC {true}
private

Definition at line 108 of file JetCalibrationTool.h.

108{true};

◆ m_doJetArea

bool JetCalibrationTool::m_doJetArea {true}
private

Definition at line 105 of file JetCalibrationTool.h.

105{true};

◆ m_doOrigin

bool JetCalibrationTool::m_doOrigin {true}
private

Definition at line 107 of file JetCalibrationTool.h.

107{true};

◆ m_doResidual

bool JetCalibrationTool::m_doResidual {true}
private

Definition at line 106 of file JetCalibrationTool.h.

106{true};

◆ m_doSetDetectorEta

bool JetCalibrationTool::m_doSetDetectorEta {}
private

Definition at line 90 of file JetCalibrationTool.h.

90{};

◆ m_eInfoName

std::string JetCalibrationTool::m_eInfoName
private

Definition at line 87 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.

64{this, "EventInfoKey", "EventInfo"};

◆ 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_forceCalibFile_FastSim

std::string JetCalibrationTool::m_forceCalibFile_FastSim {}
private

Definition at line 94 of file JetCalibrationTool.h.

94{};

◆ m_forceCalibFile_MC2MC

std::string JetCalibrationTool::m_forceCalibFile_MC2MC {}
private

Definition at line 95 of file JetCalibrationTool.h.

95{};

◆ m_forceCalibFile_PtResidual

std::string JetCalibrationTool::m_forceCalibFile_PtResidual {}
private

Definition at line 93 of file JetCalibrationTool.h.

93{};

◆ m_forceCampaign

std::string JetCalibrationTool::m_forceCampaign {}
private

Definition at line 80 of file JetCalibrationTool.h.

80{};

◆ m_globalConfig

TEnv* JetCalibrationTool::m_globalConfig {}
private

Definition at line 98 of file JetCalibrationTool.h.

98{};

◆ m_globalInsituCombMassConfig

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

Definition at line 100 of file JetCalibrationTool.h.

◆ m_globalTimeDependentConfigs

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

Definition at line 99 of file JetCalibrationTool.h.

◆ m_gscDepth

std::string JetCalibrationTool::m_gscDepth {"auto"}
private

Definition at line 111 of file JetCalibrationTool.h.

111{"auto"}; // if not set then use the one defined in the config

◆ m_inputMetaStore

MetaStore_t asg::AsgMetadataTool::m_inputMetaStore
privateinherited

Object accessing the input metadata store.

Definition at line 119 of file AsgMetadataTool.h.

◆ m_insituCombMassCalib

bool JetCalibrationTool::m_insituCombMassCalib {}
private

Definition at line 91 of file JetCalibrationTool.h.

91{};

◆ m_insituCombMassConfig

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

Definition at line 92 of file JetCalibrationTool.h.

◆ m_isData

bool JetCalibrationTool::m_isData {true}
private

Definition at line 79 of file JetCalibrationTool.h.

79{true};

◆ m_jetAlgo

std::string JetCalibrationTool::m_jetAlgo
private

Definition at line 73 of file JetCalibrationTool.h.

◆ m_jetScale

jetScale JetCalibrationTool::m_jetScale = jetScale::EM
private

Definition at line 103 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.

67 {this, "averageInteractionsPerCrossingKey",
68 "EventInfo.averageInteractionsPerCrossing","Decoration for Average Interaction Per Crossing"};

◆ m_nJetContainerName

std::string JetCalibrationTool::m_nJetContainerName
private

Definition at line 85 of file JetCalibrationTool.h.

◆ m_nJetThreshold

float JetCalibrationTool::m_nJetThreshold {}
private

Definition at line 84 of file JetCalibrationTool.h.

84{};

◆ m_originCorrectedClusters

bool JetCalibrationTool::m_originCorrectedClusters {}
private

Definition at line 82 of file JetCalibrationTool.h.

82{};

◆ m_originScale

std::string JetCalibrationTool::m_originScale
private

Definition at line 77 of file JetCalibrationTool.h.

◆ m_outputMetaStore

MetaStore_t asg::AsgMetadataTool::m_outputMetaStore
privateinherited

Object accessing the output metadata store.

Definition at line 121 of file AsgMetadataTool.h.

◆ m_pvKey

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

Definition at line 66 of file JetCalibrationTool.h.

66{this, "PrimaryVerticesContainerName", "PrimaryVertices"};

◆ m_rhoKey

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

Definition at line 65 of file JetCalibrationTool.h.

65{this, "RhoKey", "auto"};

◆ m_runBins

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

Definition at line 89 of file JetCalibrationTool.h.

◆ m_smearIndex

int JetCalibrationTool::m_smearIndex {-1}
private

Definition at line 114 of file JetCalibrationTool.h.

114{-1};

◆ m_timeDependentCalib

bool JetCalibrationTool::m_timeDependentCalib {}
private

Definition at line 81 of file JetCalibrationTool.h.

81{};

◆ m_timeDependentInsituConfigs

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

Definition at line 88 of file JetCalibrationTool.h.

◆ m_useIncidents

bool asg::AsgMetadataTool::m_useIncidents
privateinherited

Definition at line 128 of file AsgMetadataTool.h.

◆ m_useNjetInResidual

bool JetCalibrationTool::m_useNjetInResidual {}
private

Definition at line 83 of file JetCalibrationTool.h.

83{};

◆ m_useOriginVertex

bool JetCalibrationTool::m_useOriginVertex {}
private

Definition at line 117 of file JetCalibrationTool.h.

117{};

◆ 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: