ATLAS Offline Software
Public Member Functions | List of all members
CP::IReentrantSystematicsTool Class Referenceabstract

interface for all CP tools supporting systematic variations within a reentrant algorithm More...

#include <IReentrantSystematicsTool.h>

Inheritance diagram for CP::IReentrantSystematicsTool:
Collaboration diagram for CP::IReentrantSystematicsTool:

Public Member Functions

virtual SystematicSet affectingSystematics () const =0
 the list of all systematics this tool can be affected by More...
 
virtual SystematicSet recommendedSystematics () const =0
 the list of all systematics this tool recommends to use More...
 
virtual void print () const =0
 Print the state of the tool. More...
 

Detailed Description

interface for all CP tools supporting systematic variations within a reentrant algorithm

This is an evolution of the ISystematicsTool interface used during run 2 with the goal of allowing to use systematics within an AnaReentrantAlgorithm. To ease migration (and interoperating tools with both interfaces) the old interface was changed to inherit from the new interface.

The basic change compared to the old interface is that this interface only allows to query the list of supported systematics, but does not allow to set the current systematics as setting the current systematics breaks the reentrancy. Instead to allow a tool to be used in reentrant code, its interface needs to be changed so that the functions that vary with systematics need a const SystematicSet& argument that specifies the current systematic (and the interface base class should be changed to this class).

For the implementation, tools should process each SystematicSet value only once, and cache whatever information they need in a tbb::concurrent_unordered_map<CP::ISystematicSet,...> (or a std::unordered_map protected by an std::mutex). The recommendation/requirement to cache was also true with the old interface, the only new part is that it needs to be safe for concurrent access.

Note that currently (01 Mar 21) there is no requirement for systematics to be able to run within a reentrant algorithm. Reentrant algorithms only offer benefits within AthenaMT, and currently no jobs using systematics use AthenaMT. In particular a tool inheriting from ISystematicsTool can still be used in reentrant algorithms, if systematics are not used. This interface is mainly provided in case there is a special need for a particular systematics tool to run in AthenaMT, or if a CP group wants to already implement such an interface in case such a need arises in the future.

Definition at line 57 of file IReentrantSystematicsTool.h.

Member Function Documentation

◆ affectingSystematics()

virtual SystematicSet CP::IReentrantSystematicsTool::affectingSystematics ( ) const
pure virtual

the list of all systematics this tool can be affected by

Implemented in InDet::InDetTrackSystematicsTool, CP::ElectronChargeEfficiencyCorrectionTool, AsgElectronEfficiencyCorrectionTool, CP::IsolationCorrectionTool, CP::EgammaCalibrationAndSmearingTool, CP::FFJetSmearingTool, SimpleMuonTriggerScaleFactors, SimplePhotonEfficiencyCorrectionTool, PMGTools::PMGTruthWeightTool, AsgPhotonEfficiencyCorrectionTool, ParticleScaleFactorTool, InDet::InDetTrackTruthFilterTool, CP::JetJvtEfficiency, InDet::InDetTrackBiasingTool, InDet::JetTrackFilterTool, InDet::InDetTrackSmearingTool, CP::BaseFakeBkgTool, InDet::InclusiveTrackFilterTool, TrigGlobalEfficiencyCorrectionTool, SimpleElectronEfficiencyCorrectionTool, TauAnalysisTools::DiTauSmearingTool, CP::JetQGTagger, CP::MuonCalibTool, CP::MuonCalibIntScaleSmearTool, CP::MuonCalibIntHighpTSmearTool, CP::MuonCalibIntSagittaTool, BTaggingEfficiencyJsonTool, InDet::IInDetTrackSmearingTool, InDet::IInDetTrackTruthFilterTool, CP::IIsolationCorrectionTool, InDet::IInDetTrackBiasingTool, InDet::IJetTrackFilterTool, BTaggingEfficiencyTool, JetUncertaintiesTool, BTaggingTruthTaggingTool, CP::PileupReweightingTool, met::METSystematicsTool, BTaggingEigenVectorRecompositionTool, TauAnalysisTools::DiTauEfficiencyCorrectionsTool, CP::JetTileCorrectionTool, TauAnalysisTools::CommonSmearingTool, CP::SystematicsTool, TauAnalysisTools::CommonEfficiencyTool, TauAnalysisTools::TauEfficiencyCorrectionsTool, TauAnalysisTools::TauSmearingTool, CP::MuonTriggerScaleFactors, and CP::MuonEfficiencyScaleFactors.

◆ print()

virtual void asg::IAsgTool::print ( ) const
pure virtualinherited

◆ recommendedSystematics()

virtual SystematicSet CP::IReentrantSystematicsTool::recommendedSystematics ( ) const
pure virtual

the list of all systematics this tool recommends to use

Implemented in CP::ElectronChargeEfficiencyCorrectionTool, AsgElectronEfficiencyCorrectionTool, CP::IsolationCorrectionTool, CP::EgammaCalibrationAndSmearingTool, CP::FFJetSmearingTool, SimpleMuonTriggerScaleFactors, SimplePhotonEfficiencyCorrectionTool, PMGTools::PMGTruthWeightTool, AsgPhotonEfficiencyCorrectionTool, InDet::InDetTrackTruthFilterTool, ParticleScaleFactorTool, CP::JetJvtEfficiency, InDet::InDetTrackBiasingTool, InDet::JetTrackFilterTool, InDet::InDetTrackSmearingTool, CP::BaseFakeBkgTool, InDet::InclusiveTrackFilterTool, TauAnalysisTools::DiTauSmearingTool, TrigGlobalEfficiencyCorrectionTool, SimpleElectronEfficiencyCorrectionTool, CP::JetQGTagger, CP::MuonCalibTool, CP::MuonCalibIntScaleSmearTool, CP::MuonCalibIntHighpTSmearTool, CP::MuonCalibIntSagittaTool, InDet::InDetTrackSystematicsTool, BTaggingEfficiencyJsonTool, InDet::IInDetTrackSmearingTool, InDet::IInDetTrackTruthFilterTool, CP::IIsolationCorrectionTool, InDet::IInDetTrackBiasingTool, InDet::IJetTrackFilterTool, BTaggingEfficiencyTool, JetUncertaintiesTool, BTaggingTruthTaggingTool, CP::PileupReweightingTool, met::METSystematicsTool, BTaggingEigenVectorRecompositionTool, TauAnalysisTools::DiTauEfficiencyCorrectionsTool, CP::JetTileCorrectionTool, CP::SystematicsTool, TauAnalysisTools::CommonSmearingTool, TauAnalysisTools::CommonEfficiencyTool, TauAnalysisTools::TauEfficiencyCorrectionsTool, TauAnalysisTools::TauSmearingTool, CP::MuonTriggerScaleFactors, and CP::MuonEfficiencyScaleFactors.


The documentation for this class was generated from the following file: