ATLAS Offline Software
Classes | Public Member Functions | Public Attributes | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
AsgElectronEfficiencyCorrectionTool Class Referencefinalabstract

#include <AsgElectronEfficiencyCorrectionTool.h>

Inheritance diagram for AsgElectronEfficiencyCorrectionTool:
Collaboration diagram for AsgElectronEfficiencyCorrectionTool:

Classes

struct  Accessors
 
struct  SystConf
 

Public Member Functions

void callSingleEvent (columnar::ElectronRange electrons, columnar::EventInfoId event) const
 
void callEvents (columnar::EventContextRange events) const override
 
virtual void print () const =0
 Print the state of the tool. More...
 
virtual StatusCode sysInitialize ()
 Function initialising the tool in the correct way in Athena. More...
 
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 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, V, H > &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
 

Public Attributes

std::unique_ptr< Accessorsm_accessors
 

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

virtual ASG_TOOL_CLASS(AsgElectronEfficiencyCorrectionTool, IAsgElectronEfficiencyCorrectionTool) public ~AsgElectronEfficiencyCorrectionTool () override final
 Standard destructor. More...
 
virtual StatusCode initialize () override final
 Gaudi Service Interface method implementations. More...
 
virtual StatusCode beginInputFile () override final
 Function called when a new input file is opened. More...
 
virtual StatusCode beginEvent () override final
 Function called when a new events is loaded. More...
 
virtual CP::SystematicSet affectingSystematics () const override final
 returns: the list of all systematics this tool can be affected by More...
 
virtual CP::SystematicSet recommendedSystematics () const override final
 returns: the list of all systematics this tool recommends to use More...
 
virtual bool isAffectedBySystematic (const CP::SystematicVariation &systematic) const override final
 returns: whether this tool is affected by the given systematis More...
 
virtual StatusCode applySystematicVariation (const CP::SystematicSet &systConfig) override final
 Configure this tool for the given systematics. More...
 
virtual CP::CorrectionCode getEfficiencyScaleFactor (const xAOD::Electron &inputObject, double &efficiencyScaleFactor) const override final
 
CP::CorrectionCode getEfficiencyScaleFactor (columnar::ElectronId inputObject, double &efficiencyScaleFactor, columnar::EventInfoId info) const
 
virtual CP::CorrectionCode getEfficiencyScaleFactor (const double et, const double cluster_eta, const unsigned int runNumber, double &efficiencyScaleFactor) const override final
 
virtual CP::CorrectionCode applyEfficiencyScaleFactor (const xAOD::Electron &inputObject) const override final
 
virtual int getNumberOfToys () const override final
 
virtual void printCorrelationModels () const override final
 print available/implemented correlation models More...
 
virtual const CP::SystematicSetappliedSystematics () const override final
 returns: the currently applied systematics More...
 
virtual int systUncorrVariationIndex (const xAOD::Electron &inputObject) const override final
 
int systUncorrVariationIndex (columnar::ElectronId inputObject) const
 
StatusCode registerSystematics ()
 
int currentSimplifiedUncorrSystRegion (const double cluster_eta, const double et) const
 
int currentUncorrSystRegion (const double cluster_eta, const double et) const
 
StatusCode InitSystematics ()
 initialize the systematics More...
 
virtual StatusCode getFile (const std::string &recokey, const std::string &idkey, const std::string &isokey, const std::string &trigkey)
 Gets the correction filename from map. More...
 
StatusCode get_simType_from_metadata (PATCore::ParticleDataType::DataType &result) const
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Private Attributes

bool m_metadata_retrieved = false
 To check if the metadata can be retrieved. More...
 
std::unique_ptr< Root::TElectronEfficiencyCorrectionToolm_rootTool = nullptr
 Pointer to the underlying ROOT based tool. More...
 
std::unordered_map< CP::SystematicSet, CP::SystematicSetm_systFilter
 Systematics filter map. More...
 
CP::SystematicSet m_affectedSys
 Affected systematic, should be done only once. More...
 
CP::SystematicSetm_appliedSystematics
 Currently applied systematics. More...
 
std::string m_correlation_model_name
 
int m_correlation_model
 
std::string m_mapFile
 
std::string m_recoKey
 
std::string m_idKey
 
std::string m_isoKey
 
std::string m_trigKey
 
std::vector< std::string > m_corrFileNameList
 The list of file names. More...
 
std::string m_resultPrefix
 The prefix string for the result. More...
 
std::string m_resultName
 The string for the result. More...
 
std::string m_sysSubstring
 
std::string m_eventInfoCollectionName
 The Event info collection name. More...
 
bool m_useRandomRunNumber
 
int m_defaultRandomRunNumber
 
PATCore::ParticleDataType::DataType m_dataType
 
int m_dataTypeOverwrite
 Force the data type to a given value. More...
 
int m_number_of_toys
 
int m_seed_toys
 
double m_scale_toys
 
int m_nCorrSyst
 
int m_nUncorrSyst
 
std::vector< std::pair< float, std::vector< float > > > m_pteta_bins
 
std::vector< float > m_uncorrSimplfEtaBinsUser
 
std::vector< float > m_uncorrSimplfEtBinsUser
 
TH2F * m_UncorrRegions
 
int m_nSimpleUncorrSyst
 
std::string m_toysBasename
 
std::vector< CP::SystematicVariationm_corrVarUp
 
std::vector< CP::SystematicVariationm_corrVarDown
 
std::vector< CP::SystematicVariationm_uncorrVarUp
 
std::vector< CP::SystematicVariationm_uncorrVarDown
 
MetaStore_t m_inputMetaStore
 Object accessing the input metadata store. More...
 
MetaStore_t m_outputMetaStore
 Object accessing the output metadata store. More...
 
bool m_beginInputFileCalled
 Flag helping to discover when the tool misses the opening of the first input file. More...
 
bool m_useIncidents
 
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 41 of file AsgElectronEfficiencyCorrectionTool.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.

Constructor & Destructor Documentation

◆ ~AsgElectronEfficiencyCorrectionTool()

AsgElectronEfficiencyCorrectionTool::~AsgElectronEfficiencyCorrectionTool ( )
finaloverrideprivatevirtual

Standard destructor.

Definition at line 142 of file AsgElectronEfficiencyCorrectionTool.cxx.

143 {
144  if (m_UncorrRegions) {
145  delete m_UncorrRegions;
146  }
147 }

Member Function Documentation

◆ affectingSystematics()

CP::SystematicSet AsgElectronEfficiencyCorrectionTool::affectingSystematics ( ) const
finaloverrideprivatevirtual

returns: the list of all systematics this tool can be affected by

Implements CP::IReentrantSystematicsTool.

Definition at line 572 of file AsgElectronEfficiencyCorrectionTool.cxx.

573 {
574  return m_affectedSys;
575 }

◆ appliedSystematics()

virtual const CP::SystematicSet& AsgElectronEfficiencyCorrectionTool::appliedSystematics ( ) const
inlinefinaloverrideprivatevirtual

returns: the currently applied systematics

Implements IAsgElectronEfficiencyCorrectionTool.

Definition at line 115 of file AsgElectronEfficiencyCorrectionTool.h.

116  {
117  return *m_appliedSystematics;
118  }

◆ applyEfficiencyScaleFactor()

CP::CorrectionCode AsgElectronEfficiencyCorrectionTool::applyEfficiencyScaleFactor ( const xAOD::Electron inputObject) const
finaloverrideprivatevirtual

Implements IAsgElectronEfficiencyCorrectionTool.

Definition at line 539 of file AsgElectronEfficiencyCorrectionTool.cxx.

541 {
542  double efficiencyScaleFactor = 1.0;
544  getEfficiencyScaleFactor(inputObject, efficiencyScaleFactor);
546  m_resultName + "SF");
547  dec(inputObject) = efficiencyScaleFactor;
548  return result;
549 }

◆ applySystematicVariation()

StatusCode AsgElectronEfficiencyCorrectionTool::applySystematicVariation ( const CP::SystematicSet systConfig)
finaloverrideprivatevirtual

Configure this tool for the given systematics.

Apply one variation at a time.

Implements CP::ISystematicsTool.

Definition at line 598 of file AsgElectronEfficiencyCorrectionTool.cxx.

600 {
601  // First, check if this configuration exists in the filtered map/registy
602  auto itr = m_systFilter.find(systConfig);
603 
604  if (itr != m_systFilter.end()) {
605  CP::SystematicSet& mySysConf = itr->second;
606  m_appliedSystematics = &mySysConf;
607  }
608  // if not, we should register it, after it passes sanity checks
609  else {
610  // If it's a new input set, we need to filter it
611  CP::SystematicSet affectingSys = affectingSystematics();
612  CP::SystematicSet filteredSys;
614  systConfig, affectingSys, filteredSys)) {
616  "Unsupported combination of systematic variations passed to the tool!");
617  return StatusCode::FAILURE;
618  }
619  // Does filtered make sense, only one per time
620  if (filteredSys.size() > 1) {
622  "More than one systematic variation passed at the same time");
623  return StatusCode::FAILURE;
624  }
625 
626  if (filteredSys.empty() && !systConfig.empty()) {
627  ATH_MSG_DEBUG("systematics : ");
628  for (const auto& syst : systConfig) {
629  ATH_MSG_DEBUG(syst.name());
630  }
631  ATH_MSG_DEBUG(" Not supported ");
632  }
633  // insert to the registy
634  itr = m_systFilter.insert(std::make_pair(systConfig, filteredSys)).first;
635  // And return directly
636  CP::SystematicSet& mySysConf = itr->second;
637  m_appliedSystematics = &mySysConf;
638  }
639  return StatusCode::SUCCESS;
640 }

◆ beginEvent()

StatusCode AsgElectronEfficiencyCorrectionTool::beginEvent ( )
finaloverrideprivatevirtual

Function called when a new events is loaded.

Dummy implementation that can be overridden by the derived tool.

Reimplemented from asg::AsgMetadataTool.

Definition at line 933 of file AsgElectronEfficiencyCorrectionTool.cxx.

934 {
935 
936  if (m_dataTypeOverwrite != -1)
937  return StatusCode::SUCCESS;
939  return StatusCode::SUCCESS;
940 
941  m_metadata_retrieved = true;
942  return StatusCode::SUCCESS;
943 }

◆ beginInputFile()

StatusCode AsgElectronEfficiencyCorrectionTool::beginInputFile ( )
finaloverrideprivatevirtual

Function called when a new input file is opened.

Dummy implementation that can be overridden by the derived tool.

Reimplemented from asg::AsgMetadataTool.

Definition at line 898 of file AsgElectronEfficiencyCorrectionTool.cxx.

899 {
900 
901  // User forced a particular dataType
902  if (m_dataTypeOverwrite != -1)
903  return StatusCode::SUCCESS;
904 
905  PATCore::ParticleDataType::DataType dataType_metadata;
906  const StatusCode status = get_simType_from_metadata(dataType_metadata);
907  // Metadata got retrieved
908  if (status == StatusCode::SUCCESS) {
909  m_metadata_retrieved = true;
910  ATH_MSG_DEBUG("metadata from new file: "
911  << (dataType_metadata == PATCore::ParticleDataType::Data
912  ? "data"
913  : (dataType_metadata == PATCore::ParticleDataType::Full
914  ? "full simulation"
915  : "fast simulation")));
916 
917  if (dataType_metadata != PATCore::ParticleDataType::Data) {
918  if (m_dataTypeOverwrite == -1) {
919  m_dataType = dataType_metadata;
920  } else {
922  "Applying SF corrections to data while they make sense only for MC");
923  }
924  }
925  } else { // not able to retrieve metadata
926  m_metadata_retrieved = false;
927  ATH_MSG_DEBUG("not able to retrieve metadata");
928  }
929  return StatusCode::SUCCESS;
930 }

◆ callEvents()

void AsgElectronEfficiencyCorrectionTool::callEvents ( columnar::EventContextRange  events) const
override

Definition at line 1026 of file AsgElectronEfficiencyCorrectionTool.cxx.

1027 {
1028  const Accessors& acc = *m_accessors;
1030  {
1031  auto eventInfo = acc.m_eventInfo(event);
1032  callSingleEvent (acc.m_electrons(event), eventInfo);
1033  }
1034 }

◆ callSingleEvent()

void AsgElectronEfficiencyCorrectionTool::callSingleEvent ( columnar::ElectronRange  electrons,
columnar::EventInfoId  event 
) const

Definition at line 1004 of file AsgElectronEfficiencyCorrectionTool.cxx.

1005 {
1006  const Accessors& acc = *m_accessors;
1008  {
1009  double sf = 0;
1011  {
1013  acc.m_sfDec(electron) = sf;
1014  acc.m_validDec(electron) = true;
1015  break;
1017  acc.m_sfDec(electron) = sf;
1018  acc.m_validDec(electron) = false;
1019  break;
1020  default:
1021  throw std::runtime_error("Error in getEfficiencyScaleFactor");
1022  }
1023  }
1024 }

◆ currentSimplifiedUncorrSystRegion()

int AsgElectronEfficiencyCorrectionTool::currentSimplifiedUncorrSystRegion ( const double  cluster_eta,
const double  et 
) const
private

Definition at line 716 of file AsgElectronEfficiencyCorrectionTool.cxx.

719 {
720  int ptbin = std::as_const(*m_UncorrRegions).GetXaxis()->FindBin(et) - 1;
721  if (ptbin < 0 ||
722  ptbin >= std::as_const(*m_UncorrRegions).GetXaxis()->GetNbins()) {
724  " Found electron with Et = "
725  << et / 1000. << " GeV, where you specified boundaries of ["
726  << std::as_const(*m_UncorrRegions).GetXaxis()->GetBinLowEdge(1) << ","
727  << std::as_const(*m_UncorrRegions)
728  .GetXaxis()
729  ->GetBinUpEdge(
730  std::as_const(*m_UncorrRegions).GetXaxis()->GetNbins())
731  << "] for the SIMPLIFIED correlation model ");
732  return -1;
733  }
734  int etabin =
735  std::as_const(*m_UncorrRegions).GetYaxis()->FindBin(std::abs(cluster_eta)) -
736  1;
737  if (etabin < 0 ||
738  etabin >= std::as_const(*m_UncorrRegions).GetYaxis()->GetNbins()) {
740  " Found electron with |eta| = "
741  << std::abs(cluster_eta) << ", where you specified boundaries of ["
742  << std::as_const(*m_UncorrRegions).GetYaxis()->GetBinLowEdge(1) << ","
743  << std::as_const(*m_UncorrRegions)
744  .GetYaxis()
745  ->GetBinUpEdge(
746  std::as_const(*m_UncorrRegions).GetYaxis()->GetNbins())
747  << "] for the SIMPLIFIED correlation model ");
748  return -1;
749  }
750  int reg = ((etabin)*m_UncorrRegions->GetNbinsX() + ptbin);
751  return reg;
752 }

◆ currentUncorrSystRegion()

int AsgElectronEfficiencyCorrectionTool::currentUncorrSystRegion ( const double  cluster_eta,
const double  et 
) const
private

Definition at line 755 of file AsgElectronEfficiencyCorrectionTool.cxx.

758 {
759  int etabin = 0;
760  int reg = 0;
761  bool found = false;
762  float cluster_eta_electron = 0;
763  auto itr_ptBEGIN = m_pteta_bins.begin();
764  auto itr_ptEND = m_pteta_bins.end();
765  for (; itr_ptBEGIN != itr_ptEND; ++itr_ptBEGIN) {
766  auto itr_ptBEGINplusOne = itr_ptBEGIN;
767  ++itr_ptBEGINplusOne;
768  // Find the pt bin : Larger or equal from the current and the next one is
769  // the last or the next one is larger.
770  if (et >= itr_ptBEGIN->first &&
771  (itr_ptBEGINplusOne == itr_ptEND || et < itr_ptBEGINplusOne->first)) {
772  if ((itr_ptBEGIN->second).at(0) >= 0) {
773  cluster_eta_electron = std::abs(cluster_eta);
774  } else {
775  cluster_eta_electron = (cluster_eta);
776  };
777  for (unsigned int etab = 0; etab < ((itr_ptBEGIN->second).size());
778  ++etab) {
779  unsigned int etabnext = etab + 1;
780  // Find the eta bin : Larger or equal from the current and the next one
781  // is the last or the next one is larger:.
782  if ((cluster_eta_electron) >= (itr_ptBEGIN->second).at(etab) &&
783  (etabnext == itr_ptBEGIN->second.size() ||
784  cluster_eta_electron < itr_ptBEGIN->second.at(etabnext))) {
785  found = true;
786  break;
787  }
788  // We did not find it. Increment eta and continue looking
789  etabin++;
790  }
791  }
792  if (found) {
793  break;
794  }
795  // Add the full size of the "passed" eta row
796  reg += (itr_ptBEGIN->second).size();
797  }
798  if (!found) {
799  ATH_MSG_WARNING("No index for the uncorrelated systematic was found, "
800  "returning the maximum index");
801  return m_nCorrSyst;
802  }
803  reg = reg + etabin;
804  return reg;
805 }

◆ declareGaudiProperty() [1/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T, V, H > &  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, V, H > &  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, V, H > &  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, V, H > &  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, V, H > &  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; }

◆ 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 BookkeeperTool, BookkeeperDumperTool, xAODMaker::TriggerMenuMetaDataTool, and xAODMaker::TruthMetaDataTool.

Definition at line 193 of file AsgMetadataTool.cxx.

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

◆ 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

◆ get_simType_from_metadata()

StatusCode AsgElectronEfficiencyCorrectionTool::get_simType_from_metadata ( PATCore::ParticleDataType::DataType result) const
private

Definition at line 946 of file AsgElectronEfficiencyCorrectionTool.cxx.

948 {
949 
950 #ifndef XAOD_STANDALONE
951  // Determine MC/Data
952  std::string dataType("");
954  "/TagInfo", "project_name", dataType, inputMetaStore()))
955  .isSuccess()) {
956  if (!(dataType == "IS_SIMULATION")) {
958  ATH_MSG_DEBUG("Running on data");
959  return StatusCode::SUCCESS;
960  }
961  // Determine Fast/FullSim
962  if (dataType == "IS_SIMULATION") {
963  std::string simType("");
964  ATH_CHECK(AthAnalysisHelper::retrieveMetadata("/Simulation/Parameters",
965  "SimulationFlavour",
966  simType,
967  inputMetaStore()));
968  std::transform(simType.begin(), simType.end(), simType.begin(), ::toupper);
969  result = (simType.find("ATLFAST") == std::string::npos)
972  return StatusCode::SUCCESS;
973  }
974  }
975 #endif
976  // Here's how things will work dual use, when file metadata is available in
977  // files
978  if (inputMetaStore()->contains<xAOD::FileMetaData>("FileMetaData")) {
979  const xAOD::FileMetaData* fmd = nullptr;
980  ATH_CHECK(inputMetaStore()->retrieve(fmd, "FileMetaData"));
981 
982  std::string simType("");
983  const bool s = fmd->value(xAOD::FileMetaData::simFlavour, simType);
984  if (!s) {
985  ATH_MSG_DEBUG("no sim flavour from metadata: must be data");
987  return StatusCode::SUCCESS;
988  } else {
989  ATH_MSG_DEBUG("sim type = " + simType);
990  std::transform(simType.begin(), simType.end(), simType.begin(), ::toupper);
991  result = (simType.find("ATLFAST") == std::string::npos)
994  return StatusCode::SUCCESS;
995  }
996  } else { // no metadata in the file
997  ATH_MSG_DEBUG("no metadata found in the file");
998  return StatusCode::FAILURE;
999  }
1000 }

◆ getEfficiencyScaleFactor() [1/3]

CP::CorrectionCode AsgElectronEfficiencyCorrectionTool::getEfficiencyScaleFactor ( columnar::ElectronId  inputObject,
double &  efficiencyScaleFactor,
columnar::EventInfoId  info 
) const
private

Definition at line 347 of file AsgElectronEfficiencyCorrectionTool.cxx.

351 {
352  const Accessors& acc = *m_accessors;
353 
354  efficiencyScaleFactor = 1;
355  // Retrieve the proper random Run Number
356  unsigned int runNumber = m_defaultRandomRunNumber;
357  if (m_useRandomRunNumber) {
358  if (!acc.randomrunnumber.isAvailable(eventInfo)) {
360  "Pileup tool not run before using ElectronEfficiencyTool! SFs do not "
361  "reflect PU distribution in data");
363  }
364  runNumber = acc.randomrunnumber(eventInfo);
365  }
366  //
367  // Get the result
368  //
369  double cluster_eta(-9999.9);
370 
371  auto cluster = acc.caloClusterAcc (inputObject) [0].value();
372 
373  // we need to use different variables for central and forward electrons
374  if (acc.accAuthor.isAvailable(inputObject) &&
375  acc.accAuthor(inputObject) == xAOD::EgammaParameters::AuthorFwdElectron) {
376  cluster_eta = acc.clusterEtaAcc (cluster);
377  } else {
378  cluster_eta = acc.clusterEtaBEAcc (cluster, 2);
379  }
380 
381  // use et from cluster because it is immutable under syst variations of
382  // electron energy scale
383  const double energy = acc.clusterEAcc(cluster);
384  const double parEta = acc.m_eta(inputObject);
385  const double coshEta = std::cosh(parEta);
386  double et = (coshEta != 0.) ? energy / coshEta : 0.;
387  // allow for a 5% margin at the lowest pT bin boundary (i.e. increase et by 5%
388  // for sub-threshold electrons). This assures that electrons that pass the
389  // threshold only under syst variations of energy get a scale factor assigned.
390  auto itr_pt = m_pteta_bins.begin();
391  if (itr_pt != m_pteta_bins.end() && et < itr_pt->first) {
392  et = et * 1.05;
393  }
394  return getEfficiencyScaleFactor(et, cluster_eta, runNumber,
395  efficiencyScaleFactor);
396 }

◆ getEfficiencyScaleFactor() [2/3]

CP::CorrectionCode AsgElectronEfficiencyCorrectionTool::getEfficiencyScaleFactor ( const double  et,
const double  cluster_eta,
const unsigned int  runNumber,
double &  efficiencyScaleFactor 
) const
finaloverrideprivatevirtual

Implements IAsgElectronEfficiencyCorrectionTool.

Definition at line 399 of file AsgElectronEfficiencyCorrectionTool.cxx.

404 {
405  // We pass only one variation per time
406  // The applied systematic is always one systematic.
407  // Either is relevant and acquires a value
408  // or stays 0.
409  double sys(0);
410 
411  // Let's try to figure already what we are to do
412  bool doSFOnly = appliedSystematics().empty();
413  bool doToys = (m_correlation_model == correlationModel::MCTOYS ||
415  bool isTotal = (m_correlation_model == correlationModel::TOTAL);
416  bool isFull = (m_correlation_model == correlationModel::FULL);
417  bool isSimplified = (m_correlation_model == correlationModel::SIMPLIFIED);
418 
419  // Lets see if we have an uncorrelated syst variation passed
420  int unCorrSign = 0;
421  // or a correlated one
422  int indexCorrelated = -999;
423  int correlatedSign = 0;
424  if (!(doSFOnly || doToys || isTotal) && (isFull || isSimplified)) {
425  const auto& sysName = appliedSystematics().begin()->name();
426  bool isUncorr = (sysName.find("UncorrUnc") != std::string::npos);
427  int currentUncorReg = -999;
428  if (isUncorr) {
429  // Can we find an uncorrelated region?
430  if (isFull) {
431  currentUncorReg = currentUncorrSystRegion(cluster_eta, et);
432  } else if (isSimplified) {
433  currentUncorReg = currentSimplifiedUncorrSystRegion(cluster_eta, et);
434  }
435  if (currentUncorReg < 0) {
437  }
438  // And use it to if we got the "right" syst variation
439  if (appliedSystematics().matchSystematic(
440  m_uncorrVarDown[currentUncorReg])) {
441  unCorrSign = -1;
442  } else if (appliedSystematics().matchSystematic(
443  m_uncorrVarUp[currentUncorReg])) {
444  unCorrSign = 1;
445  }
446  } else if (m_nCorrSyst != 0) {//if we have 0 we do not care ...
447  if (sysName.find("CorrUnc") != std::string::npos) {
448  // given the name convention we
449  const auto varNumEnd = sysName.rfind("__");
450  const auto varNumBegin = sysName.rfind("NP") + 2;
451  const int varIndex =
452  std::stoi(sysName.substr(varNumBegin, (varNumEnd - varNumBegin)));
453  if (appliedSystematics().matchSystematic(m_corrVarUp[varIndex])) {
454  indexCorrelated = varIndex;
455  correlatedSign = 1;
456  } else if (appliedSystematics().matchSystematic(
457  m_corrVarDown[varIndex])) {
458  indexCorrelated = varIndex;
459  correlatedSign = -1;
460  }
461  } // find CorrUncertainty in name
462  } // not Uncorr and we have CorrSyst
463  } // Not (SF or toys or total)
464 
465  // Now lets do the call
466  // For now we more or less calculate on demand only
467  // the Correlated and the toys we can see if we want
468  // top opt also the "TOTAL"
470  const int status =
471  m_rootTool->calculate(m_dataType, runNumber, cluster_eta, et, /* in MeV */
472  result, isTotal);
473 
474  // if status 0 something went wrong
475  if (!status) {
476  efficiencyScaleFactor = 1;
478  }
479  // At this point we have the SF
480  efficiencyScaleFactor = result.SF;
481  //And if all we need we can return
482  if (doSFOnly) {
483  return CP::CorrectionCode::Ok;
484  }
485 
486  // First the logic if the user requested toys
487  if (doToys) {
489  toy.second = m_scale_toys;
490  sys = result.toys[toy.first - 1] * m_scale_toys;
491  // return here for Toy variations
492  efficiencyScaleFactor = sys;
493  return CP::CorrectionCode::Ok;
494  }
495  // The "TOTAL" single uncertainty uncorrelated+correlated
496  else if (isTotal) {
497  sys = result.Total;
498  if (appliedSystematics().matchSystematic(m_uncorrVarUp[0])) {
499  return HelperFunc(efficiencyScaleFactor, sys);
500  }
501  if (appliedSystematics().matchSystematic(m_uncorrVarDown[0])) {
502  return HelperFunc(efficiencyScaleFactor, -1 * sys);
503  }
504  }
505  // Then the uncorrelated part for the SiMPLIFIED/FULL models
506  else if (unCorrSign!=0) {
507  sys = unCorrSign * result.UnCorr;
508  return HelperFunc(efficiencyScaleFactor, sys);
509  }
510 
511  // If we reach this point
512  // it means we need to do the correlated part
513  // for the FULL/SIMPLIFIED models.
514  // First if there are not correlated systematic
515  if (m_nCorrSyst == 0) {
516 
517  if (appliedSystematics().matchSystematic(m_corrVarUp[0])) {
518  sys = std::sqrt(result.Total * result.Total -
519  result.UnCorr * result.UnCorr); // total
520  // -stat
521  return HelperFunc(efficiencyScaleFactor, sys);
522  }
523  if (appliedSystematics().matchSystematic(m_corrVarDown[0])) {
524  sys = -1 * std::sqrt(result.Total * result.Total -
525  result.UnCorr * result.UnCorr); // total
526  // -stat
527  return HelperFunc(efficiencyScaleFactor, sys);
528  }
529  }
530  //or if we had
531  if (correlatedSign != 0) {
532  sys = correlatedSign * result.Corr[indexCorrelated];
533  return HelperFunc(efficiencyScaleFactor, sys);
534  }
535  return CP::CorrectionCode::Ok;
536 }

◆ getEfficiencyScaleFactor() [3/3]

CP::CorrectionCode AsgElectronEfficiencyCorrectionTool::getEfficiencyScaleFactor ( const xAOD::Electron inputObject,
double &  efficiencyScaleFactor 
) const
finaloverrideprivatevirtual

Implements IAsgElectronEfficiencyCorrectionTool.

Definition at line 334 of file AsgElectronEfficiencyCorrectionTool.cxx.

337 {
338  const xAOD::EventInfo* eventInfo = nullptr;
339  if (evtStore()->retrieve(eventInfo, m_eventInfoCollectionName).isFailure()) {
340  ATH_MSG_ERROR("Could not retrieve EventInfo object!");
342  }
343  return getEfficiencyScaleFactor(columnar::ElectronId(inputObject), efficiencyScaleFactor, columnar::EventInfoId (*eventInfo));
344 }

◆ getFile()

StatusCode AsgElectronEfficiencyCorrectionTool::getFile ( const std::string &  recokey,
const std::string &  idkey,
const std::string &  isokey,
const std::string &  trigkey 
)
privatevirtual

Gets the correction filename from map.

Definition at line 845 of file AsgElectronEfficiencyCorrectionTool.cxx.

849 {
850 
851  std::string mapFileName = PathResolverFindCalibFile(m_mapFile);
852  std::string key =
853  ElRecomFileHelpers::convertToOneKey(recokey, idkey, isokey, trigkey);
854  std::string value = ElRecomFileHelpers::getValueByKey(mapFileName, key);
855 
856  if (!value.empty()) {
857  m_corrFileNameList.push_back(value);
858  } else {
859  if (mapFileName.empty()) {
861  "Map file does not exist, Please set the path and version properly..");
862  } else {
864  "Key "
865  << key
866  << " does not exist in the map file, Please configure it properly..");
867  }
868  return StatusCode::FAILURE;
869  }
870 
871  ATH_MSG_DEBUG("Full File Name is " + value);
872  return StatusCode::SUCCESS;
873 }

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

◆ getNumberOfToys()

virtual int AsgElectronEfficiencyCorrectionTool::getNumberOfToys ( ) const
inlinefinaloverrideprivatevirtual

Implements IAsgElectronEfficiencyCorrectionTool.

Definition at line 97 of file AsgElectronEfficiencyCorrectionTool.h.

98  {
99  return m_number_of_toys;
100  };

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

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 ) {
142  m_beginInputFileCalled = true;
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 ) {
157  m_beginInputFileCalled = true;
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  }

◆ initialize()

StatusCode AsgElectronEfficiencyCorrectionTool::initialize ( )
finaloverrideprivatevirtual

Gaudi Service Interface method implementations.

Reimplemented from asg::AsgTool.

Definition at line 150 of file AsgElectronEfficiencyCorrectionTool.cxx.

151 {
152  // Forward the message level
153  m_rootTool->msg().setLevel(this->msg().level());
154 
155  if (m_corrFileNameList.empty() && m_recoKey.empty() && m_idKey.empty() &&
156  m_trigKey.empty() && m_isoKey.empty()) {
157  ATH_MSG_ERROR("CorrectionFileNameList as well as SFKeys are empty! Please "
158  "configure it properly...");
159  return StatusCode::FAILURE;
160  }
161  /*
162  * When metadata are available
163  * m_dataType will be whatever the metadata says i.e Full or Fast
164  * Its default value is Full.
165  * The user can overwrite all these ,using a flag,
166  * and force a specific dataType
167  */
168  if (m_dataTypeOverwrite != -1) {
169  if (m_dataTypeOverwrite !=
170  static_cast<int>(PATCore::ParticleDataType::Full) &&
172  static_cast<int>(PATCore::ParticleDataType::Fast)) {
173  ATH_MSG_ERROR("Unsupported Particle Data Type Overwrite"
175  return StatusCode::FAILURE;
176  }
177  m_dataType =
179  }
180  // Find the relevant input files
181  // Fill the vector with filename using keys if the user
182  // has not passed the full filename as a property
183  if (m_corrFileNameList.empty()) {
184  if (getFile(m_recoKey, m_idKey, m_isoKey, m_trigKey).isFailure()) {
185  ATH_MSG_ERROR("No Root file input specified, and not available map file");
186  return StatusCode::FAILURE;
187  }
188  }
189  // Resolve the paths to the input files for the full Geant4 simualtion
190  // corrections
191  for (auto& ifile : m_corrFileNameList) {
192 
194  if (filename.empty()) {
195  ATH_MSG_ERROR("Could NOT resolve file name " << ifile);
196  return StatusCode::FAILURE;
197  } else {
198  ATH_MSG_DEBUG(" Path found = " << filename);
199  }
200  m_rootTool->addFileName(filename);
201  // Determine the systematics substring according to the name of the input
202  // file
203  if (ifile.find("efficiencySF.") != std::string::npos) {
204  m_sysSubstring = "Trigger_";
205  }
206  if (ifile.find("efficiencySF.offline") != std::string::npos) {
207  m_sysSubstring = "ID_";
208  }
209  if (ifile.find("efficiencySF.offline.RecoTrk") != std::string::npos) {
210  m_sysSubstring = "Reco_";
211  }
212  if (ifile.find("efficiencySF.offline.Fwd") != std::string::npos) {
213  m_sysSubstring = "FwdID_";
214  }
215  if (ifile.find("efficiencySF.Isolation") != std::string::npos) {
216  m_sysSubstring = "Iso_";
217  }
218  if (ifile.find("efficiency.") != std::string::npos) {
219  m_sysSubstring = "TriggerEff_";
220  }
221  if (ifile.find("efficiencySF.ChargeID") != std::string::npos) {
222  m_sysSubstring = "ChargeIDSel_";
223  }
224  if (m_sysSubstring.empty()) {
225  ATH_MSG_ERROR("Could NOT find systematics Substring file name "
226  << m_sysSubstring);
227  return StatusCode::FAILURE;
228  }
229  }
230  //
231  // Find the proper correlation Model
232  if (m_correlation_model_name == "COMBMCTOYS") {
234  } else if (m_correlation_model_name == "MCTOYS") {
236  } else if (m_correlation_model_name == "FULL") {
238  } else if (m_correlation_model_name == "SIMPLIFIED") {
240  // a few checks on the binning that the user might have specified
241  if (m_uncorrSimplfEtaBinsUser.empty() || m_uncorrSimplfEtBinsUser.empty() ||
242  m_uncorrSimplfEtBinsUser.size() < 2 ||
243  m_uncorrSimplfEtaBinsUser.size() < 2) {
244  ATH_MSG_ERROR("Something went wrong when specifying bins for the "
245  "SIMPLIFIED correlation model ");
246  return StatusCode::FAILURE;
247  }
248  } else if (m_correlation_model_name == "TOTAL") {
250  } else if (m_correlation_model_name == "SYST") {
252  } else {
253  ATH_MSG_ERROR("Unknown correlation model " + m_correlation_model_name);
254  return StatusCode::FAILURE;
255  }
256  ATH_MSG_DEBUG("Correlation model: " + m_correlation_model_name
257  << " Enum " << m_correlation_model);
258 
259  // Histogram of simplified uncorrelated regions
261  m_UncorrRegions = new TH2F("UncorrRegions",
262  "UncorrRegions",
263  m_uncorrSimplfEtBinsUser.size() - 1,
265  m_uncorrSimplfEtaBinsUser.size() - 1,
267  m_UncorrRegions->SetDirectory(nullptr);
268 
269  // bins not entries here
271  (m_uncorrSimplfEtBinsUser.size() - 1);
272  }
273  // Finish the preaparation of the underlying tool
274  if (m_seed_toys != 0) {
275  m_rootTool->setSeed(m_seed_toys);
276  }
277  //
279  m_rootTool->bookCombToyMCScaleFactors(m_number_of_toys);
280  }
281  //
283  m_rootTool->bookToyMCScaleFactors(m_number_of_toys);
284  }
285  // We need to initialize the underlying ROOT TSelectorTool
286  if (0 == m_rootTool->initialize()) {
288  "Could not initialize the TElectronEfficiencyCorrectionTool!");
289  return StatusCode::FAILURE;
290  }
291 
292  // get Nsyst
293  m_nCorrSyst = m_rootTool->getNSyst();
294  std::map<float, std::vector<float>> tmp;
295  m_nUncorrSyst = m_rootTool->getNbins(tmp);
296  // copy over to vector for better access
297  for (const auto& i : tmp) {
298  m_pteta_bins.emplace_back(i.first, i.second);
299  }
300 
301  // Check if the input contains uncorr/stat necessary
302  // to run non-total systematic model
304  m_rootTool->uncorrEmpty(m_dataType) ) {
305  ATH_MSG_ERROR("Called correlation model "+m_correlation_model_name+
306  " but input does not contain necessary histograms.");
307  return StatusCode::FAILURE;
308  }
309 
310  // Initialize the systematics
311  if (InitSystematics() != StatusCode::SUCCESS) {
312  ATH_MSG_ERROR("(InitSystematics() != StatusCode::SUCCESS)");
313  return StatusCode::FAILURE;
314  }
315  // Add the recommended systematics to the registry
316  if (registerSystematics() != StatusCode::SUCCESS) {
317  ATH_MSG_ERROR("(registerSystematics() != StatusCode::SUCCESS)");
318  return StatusCode::FAILURE;
319  }
320  // Configure for nominal systematics
321  if (applySystematicVariation(CP::SystematicSet()) != StatusCode::SUCCESS) {
322  ATH_MSG_ERROR("Could not configure for nominal settings");
323  return StatusCode::FAILURE;
324  }
325 
326  if (m_useRandomRunNumber) {
327  resetAccessor (m_accessors->randomrunnumber, *this, "RandomRunNumber");
328  }
329  ATH_CHECK (initializeColumns());
330  return StatusCode::SUCCESS;
331 }

◆ InitSystematics()

StatusCode AsgElectronEfficiencyCorrectionTool::InitSystematics ( )
private

initialize the systematics

Definition at line 646 of file AsgElectronEfficiencyCorrectionTool.cxx.

647 {
648  const std::string prefix = "EL_EFF_" + m_sysSubstring;
649  const std::string prefixUncorr = prefix + m_correlation_model_name + "_";
650  // Toys
652  m_toysBasename = prefix + "COMBMCTOY";
656  m_toysBasename = prefix + "MCTOY";
659  // Correlated for the different models (1 or Full set)
661  if (m_nCorrSyst == 0) {
662  auto varUp = CP::SystematicVariation(prefix + "CorrUncertainty", 1);
663  auto varDown = CP::SystematicVariation(prefix + "CorrUncertainty", -1);
664  m_corrVarUp.push_back(varUp);
665  m_corrVarDown.push_back(varDown);
666  m_affectedSys.insert(varUp);
667  m_affectedSys.insert(varDown);
668  } else
669  for (int i = 0; i < m_nCorrSyst; ++i) {
670  auto varUp =
671  CP::SystematicVariation(prefix + Form("CorrUncertaintyNP%d", i), 1);
672  auto varDown =
673  CP::SystematicVariation(prefix + Form("CorrUncertaintyNP%d", i), -1);
674  m_corrVarUp.push_back(varUp);
675  m_corrVarDown.push_back(varDown);
676  m_affectedSys.insert(varUp);
677  m_affectedSys.insert(varDown);
678  }
679  }
680  // Different tratement for the uncorrelated per model
682  auto varUp = CP::SystematicVariation(prefixUncorr + "1NPCOR_PLUS_UNCOR", 1);
683  auto varDown =
684  CP::SystematicVariation(prefixUncorr + "1NPCOR_PLUS_UNCOR", -1);
685  m_uncorrVarUp.push_back(varUp);
686  m_uncorrVarDown.push_back(varDown);
687  m_affectedSys.insert(varUp);
688  m_affectedSys.insert(varDown);
690  for (int i = 0; i < m_nUncorrSyst; ++i) {
691  auto varUp = CP::SystematicVariation(
692  prefixUncorr + Form("UncorrUncertaintyNP%d", i), 1);
693  auto varDown = CP::SystematicVariation(
694  prefixUncorr + Form("UncorrUncertaintyNP%d", i), -1);
695  m_uncorrVarUp.push_back(varUp);
696  m_uncorrVarDown.push_back(varDown);
697  m_affectedSys.insert(varUp);
698  m_affectedSys.insert(varDown);
699  }
701  for (int i = 0; i < m_nSimpleUncorrSyst; ++i) {
702  auto varUp = CP::SystematicVariation(
703  prefixUncorr + Form("UncorrUncertaintyNP%d", i), 1);
704  auto varDown = CP::SystematicVariation(
705  prefixUncorr + Form("UncorrUncertaintyNP%d", i), -1);
706  m_uncorrVarUp.push_back(varUp);
707  m_uncorrVarDown.push_back(varDown);
708  m_affectedSys.insert(varUp);
709  m_affectedSys.insert(varDown);
710  }
711  }
712  return StatusCode::SUCCESS;
713 }

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

◆ isAffectedBySystematic()

bool AsgElectronEfficiencyCorrectionTool::isAffectedBySystematic ( const CP::SystematicVariation systematic) const
finaloverrideprivatevirtual

returns: whether this tool is affected by the given systematis

returns: bool indicating if affected by the variation

Implements CP::ISystematicsTool.

Definition at line 556 of file AsgElectronEfficiencyCorrectionTool.cxx.

558 {
559  if (systematic.empty()) {
560  return false;
561  }
565  return (sys.begin()->ensembleContains(systematic));
566  } else {
567  return (sys.find(systematic) != sys.end());
568  }
569 }

◆ 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 BookkeeperTool, BookkeeperDumperTool, xAODMaker::TriggerMenuMetaDataTool, and xAODMaker::TruthMetaDataTool.

Definition at line 209 of file AsgMetadataTool.cxx.

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

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

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

◆ print() [1/2]

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

◆ print() [2/2]

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

◆ printCorrelationModels()

virtual void AsgElectronEfficiencyCorrectionTool::printCorrelationModels ( ) const
inlinefinaloverrideprivatevirtual

print available/implemented correlation models

Implements IAsgElectronEfficiencyCorrectionTool.

Definition at line 102 of file AsgElectronEfficiencyCorrectionTool.h.

103  {
104  ATH_MSG_INFO(
105  " Available Correlation Models for the ElectronEfficiencyCorrectionTool");
106  ATH_MSG_INFO("FULL");
107  ATH_MSG_INFO("SIMPLIFIED");
108  ATH_MSG_INFO("MCTOYS");
109  ATH_MSG_INFO("SYST");
110  ATH_MSG_INFO("COMBMCTOYS");
111  ATH_MSG_INFO("TOTAL");
112  };

◆ recommendedSystematics()

CP::SystematicSet AsgElectronEfficiencyCorrectionTool::recommendedSystematics ( ) const
finaloverrideprivatevirtual

returns: the list of all systematics this tool recommends to use

Implements CP::IReentrantSystematicsTool.

Definition at line 592 of file AsgElectronEfficiencyCorrectionTool.cxx.

593 {
594  return affectingSystematics();
595 }

◆ registerSystematics()

StatusCode AsgElectronEfficiencyCorrectionTool::registerSystematics ( )
private

Definition at line 579 of file AsgElectronEfficiencyCorrectionTool.cxx.

580 {
582 
583  if (registry.registerSystematics(*this) != StatusCode::SUCCESS) {
585  "Failed to add systematic to list of recommended systematics.");
586  return StatusCode::FAILURE;
587  }
588  return StatusCode::SUCCESS;
589 }

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

◆ setUseIncidents()

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

Definition at line 132 of file AsgMetadataTool.h.

133  {
135  }

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

◆ systUncorrVariationIndex() [1/2]

int AsgElectronEfficiencyCorrectionTool::systUncorrVariationIndex ( columnar::ElectronId  inputObject) const
private

Definition at line 815 of file AsgElectronEfficiencyCorrectionTool.cxx.

817 {
818  const Accessors& acc = *m_accessors;
819  int currentSystRegion = -999;
820  double cluster_eta(-9999.9);
821  double et(0.0);
822 
823  et = acc.m_pt(inputObject);
824  const auto cluster = acc.caloClusterAcc (inputObject) [0].value();
825  cluster_eta = acc.clusterEtaBEAcc (cluster, 2);
826  switch (m_correlation_model) {
828  currentSystRegion = currentSimplifiedUncorrSystRegion(cluster_eta, et);
829  break;
830  }
831  case correlationModel::FULL: {
832  currentSystRegion = currentUncorrSystRegion(cluster_eta, et);
833  break;
834  }
835  default: {
836  // not there for the other models
837  break;
838  }
839  }
840  return currentSystRegion;
841 }

◆ systUncorrVariationIndex() [2/2]

int AsgElectronEfficiencyCorrectionTool::systUncorrVariationIndex ( const xAOD::Electron inputObject) const
finaloverrideprivatevirtual

Implements IAsgElectronEfficiencyCorrectionTool.

Definition at line 808 of file AsgElectronEfficiencyCorrectionTool.cxx.

810 {
811  return systUncorrVariationIndex (columnar::ElectronId (inputObject));
812 }

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

std::unique_ptr<Accessors> AsgElectronEfficiencyCorrectionTool::m_accessors

Definition at line 256 of file AsgElectronEfficiencyCorrectionTool.h.

◆ m_affectedSys

CP::SystematicSet AsgElectronEfficiencyCorrectionTool::m_affectedSys
private

Affected systematic, should be done only once.

Definition at line 162 of file AsgElectronEfficiencyCorrectionTool.h.

◆ m_appliedSystematics

CP::SystematicSet* AsgElectronEfficiencyCorrectionTool::m_appliedSystematics
private

Currently applied systematics.

Definition at line 165 of file AsgElectronEfficiencyCorrectionTool.h.

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

int AsgElectronEfficiencyCorrectionTool::m_correlation_model
private

Definition at line 169 of file AsgElectronEfficiencyCorrectionTool.h.

◆ m_correlation_model_name

std::string AsgElectronEfficiencyCorrectionTool::m_correlation_model_name
private

Definition at line 168 of file AsgElectronEfficiencyCorrectionTool.h.

◆ m_corrFileNameList

std::vector<std::string> AsgElectronEfficiencyCorrectionTool::m_corrFileNameList
private

The list of file names.

Definition at line 181 of file AsgElectronEfficiencyCorrectionTool.h.

◆ m_corrVarDown

std::vector<CP::SystematicVariation> AsgElectronEfficiencyCorrectionTool::m_corrVarDown
private

Definition at line 230 of file AsgElectronEfficiencyCorrectionTool.h.

◆ m_corrVarUp

std::vector<CP::SystematicVariation> AsgElectronEfficiencyCorrectionTool::m_corrVarUp
private

Definition at line 229 of file AsgElectronEfficiencyCorrectionTool.h.

◆ m_dataType

PATCore::ParticleDataType::DataType AsgElectronEfficiencyCorrectionTool::m_dataType
private

Definition at line 200 of file AsgElectronEfficiencyCorrectionTool.h.

◆ m_dataTypeOverwrite

int AsgElectronEfficiencyCorrectionTool::m_dataTypeOverwrite
private

Force the data type to a given value.

Definition at line 203 of file AsgElectronEfficiencyCorrectionTool.h.

◆ m_defaultRandomRunNumber

int AsgElectronEfficiencyCorrectionTool::m_defaultRandomRunNumber
private

Definition at line 197 of file AsgElectronEfficiencyCorrectionTool.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_eventInfoCollectionName

std::string AsgElectronEfficiencyCorrectionTool::m_eventInfoCollectionName
private

The Event info collection name.

Definition at line 193 of file AsgElectronEfficiencyCorrectionTool.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_idKey

std::string AsgElectronEfficiencyCorrectionTool::m_idKey
private

Definition at line 176 of file AsgElectronEfficiencyCorrectionTool.h.

◆ m_inputMetaStore

MetaStore_t asg::AsgMetadataTool::m_inputMetaStore
privateinherited

Object accessing the input metadata store.

Definition at line 119 of file AsgMetadataTool.h.

◆ m_isoKey

std::string AsgElectronEfficiencyCorrectionTool::m_isoKey
private

Definition at line 177 of file AsgElectronEfficiencyCorrectionTool.h.

◆ m_mapFile

std::string AsgElectronEfficiencyCorrectionTool::m_mapFile
private

Definition at line 172 of file AsgElectronEfficiencyCorrectionTool.h.

◆ m_metadata_retrieved

bool AsgElectronEfficiencyCorrectionTool::m_metadata_retrieved = false
private

To check if the metadata can be retrieved.

Definition at line 153 of file AsgElectronEfficiencyCorrectionTool.h.

◆ m_nCorrSyst

int AsgElectronEfficiencyCorrectionTool::m_nCorrSyst
private

Definition at line 215 of file AsgElectronEfficiencyCorrectionTool.h.

◆ m_nSimpleUncorrSyst

int AsgElectronEfficiencyCorrectionTool::m_nSimpleUncorrSyst
private

Definition at line 225 of file AsgElectronEfficiencyCorrectionTool.h.

◆ m_number_of_toys

int AsgElectronEfficiencyCorrectionTool::m_number_of_toys
private

Definition at line 206 of file AsgElectronEfficiencyCorrectionTool.h.

◆ m_nUncorrSyst

int AsgElectronEfficiencyCorrectionTool::m_nUncorrSyst
private

Definition at line 216 of file AsgElectronEfficiencyCorrectionTool.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_pteta_bins

std::vector<std::pair<float, std::vector<float> > > AsgElectronEfficiencyCorrectionTool::m_pteta_bins
private

Definition at line 217 of file AsgElectronEfficiencyCorrectionTool.h.

◆ m_recoKey

std::string AsgElectronEfficiencyCorrectionTool::m_recoKey
private

Definition at line 175 of file AsgElectronEfficiencyCorrectionTool.h.

◆ m_resultName

std::string AsgElectronEfficiencyCorrectionTool::m_resultName
private

The string for the result.

Definition at line 187 of file AsgElectronEfficiencyCorrectionTool.h.

◆ m_resultPrefix

std::string AsgElectronEfficiencyCorrectionTool::m_resultPrefix
private

The prefix string for the result.

Definition at line 184 of file AsgElectronEfficiencyCorrectionTool.h.

◆ m_rootTool

std::unique_ptr<Root::TElectronEfficiencyCorrectionTool> AsgElectronEfficiencyCorrectionTool::m_rootTool = nullptr
private

Pointer to the underlying ROOT based tool.

Definition at line 156 of file AsgElectronEfficiencyCorrectionTool.h.

◆ m_scale_toys

double AsgElectronEfficiencyCorrectionTool::m_scale_toys
private

Definition at line 212 of file AsgElectronEfficiencyCorrectionTool.h.

◆ m_seed_toys

int AsgElectronEfficiencyCorrectionTool::m_seed_toys
private

Definition at line 209 of file AsgElectronEfficiencyCorrectionTool.h.

◆ m_sysSubstring

std::string AsgElectronEfficiencyCorrectionTool::m_sysSubstring
private

Definition at line 190 of file AsgElectronEfficiencyCorrectionTool.h.

◆ m_systFilter

std::unordered_map<CP::SystematicSet, CP::SystematicSet> AsgElectronEfficiencyCorrectionTool::m_systFilter
private

Systematics filter map.

Definition at line 159 of file AsgElectronEfficiencyCorrectionTool.h.

◆ m_toysBasename

std::string AsgElectronEfficiencyCorrectionTool::m_toysBasename
private

Definition at line 228 of file AsgElectronEfficiencyCorrectionTool.h.

◆ m_trigKey

std::string AsgElectronEfficiencyCorrectionTool::m_trigKey
private

Definition at line 178 of file AsgElectronEfficiencyCorrectionTool.h.

◆ m_UncorrRegions

TH2F* AsgElectronEfficiencyCorrectionTool::m_UncorrRegions
private

Definition at line 224 of file AsgElectronEfficiencyCorrectionTool.h.

◆ m_uncorrSimplfEtaBinsUser

std::vector<float> AsgElectronEfficiencyCorrectionTool::m_uncorrSimplfEtaBinsUser
private

Definition at line 220 of file AsgElectronEfficiencyCorrectionTool.h.

◆ m_uncorrSimplfEtBinsUser

std::vector<float> AsgElectronEfficiencyCorrectionTool::m_uncorrSimplfEtBinsUser
private

Definition at line 221 of file AsgElectronEfficiencyCorrectionTool.h.

◆ m_uncorrVarDown

std::vector<CP::SystematicVariation> AsgElectronEfficiencyCorrectionTool::m_uncorrVarDown
private

Definition at line 232 of file AsgElectronEfficiencyCorrectionTool.h.

◆ m_uncorrVarUp

std::vector<CP::SystematicVariation> AsgElectronEfficiencyCorrectionTool::m_uncorrVarUp
private

Definition at line 231 of file AsgElectronEfficiencyCorrectionTool.h.

◆ m_useIncidents

bool asg::AsgMetadataTool::m_useIncidents
privateinherited

Definition at line 128 of file AsgMetadataTool.h.

◆ m_useRandomRunNumber

bool AsgElectronEfficiencyCorrectionTool::m_useRandomRunNumber
private

Definition at line 196 of file AsgElectronEfficiencyCorrectionTool.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
AsgElectronEfficiencyCorrectionTool::getFile
virtual StatusCode getFile(const std::string &recokey, const std::string &idkey, const std::string &isokey, const std::string &trigkey)
Gets the correction filename from map.
Definition: AsgElectronEfficiencyCorrectionTool.cxx:845
python.Dso.registry
registry
Definition: Control/AthenaServices/python/Dso.py:158
AsgElectronEfficiencyCorrectionTool::m_correlation_model
int m_correlation_model
Definition: AsgElectronEfficiencyCorrectionTool.h:169
CaloCondBlobAlgs_fillNoiseFromASCII.sysName
sysName
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:92
AsgElectronEfficiencyCorrectionTool::applySystematicVariation
virtual StatusCode applySystematicVariation(const CP::SystematicSet &systConfig) override final
Configure this tool for the given systematics.
Definition: AsgElectronEfficiencyCorrectionTool.cxx:598
et
Extra patterns decribing particle interation process.
CP::SystematicSet::getToyVariationByBaseName
std::pair< unsigned, float > getToyVariationByBaseName(const std::string &basename) const
the toy variation for the given basename
Definition: SystematicSet.cxx:201
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
AsgElectronEfficiencyCorrectionTool::m_corrFileNameList
std::vector< std::string > m_corrFileNameList
The list of file names.
Definition: AsgElectronEfficiencyCorrectionTool.h:181
asg::AsgMetadataTool::beginEvent
virtual StatusCode beginEvent()
Function called when a new events is loaded.
Definition: AsgMetadataTool.cxx:201
get_generator_info.result
result
Definition: get_generator_info.py:21
StateLessPT_NewConfig.proxy
proxy
Definition: StateLessPT_NewConfig.py:407
AsgElectronEfficiencyCorrectionTool::m_idKey
std::string m_idKey
Definition: AsgElectronEfficiencyCorrectionTool.h:176
AsgElectronEfficiencyCorrectionTool::m_appliedSystematics
CP::SystematicSet * m_appliedSystematics
Currently applied systematics.
Definition: AsgElectronEfficiencyCorrectionTool.h:165
AsgElectronEfficiencyCorrectionTool::m_rootTool
std::unique_ptr< Root::TElectronEfficiencyCorrectionTool > m_rootTool
Pointer to the underlying ROOT based tool.
Definition: AsgElectronEfficiencyCorrectionTool.h:156
AsgElectronEfficiencyCorrectionTool::m_mapFile
std::string m_mapFile
Definition: AsgElectronEfficiencyCorrectionTool.h:172
AsgElectronEfficiencyCorrectionTool::InitSystematics
StatusCode InitSystematics()
initialize the systematics
Definition: AsgElectronEfficiencyCorrectionTool.cxx:646
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
correlationModel::FULL
@ FULL
Definition: AsgElectronEfficiencyCorrectionTool.cxx:49
xAOD::et
et
Definition: TrigEMCluster_v1.cxx:25
AsgElectronEfficiencyCorrectionTool::m_uncorrSimplfEtaBinsUser
std::vector< float > m_uncorrSimplfEtaBinsUser
Definition: AsgElectronEfficiencyCorrectionTool.h:220
CP::SystematicSet::size
size_t size() const
returns: size of the set
Definition: SystematicSet.h:71
CP::SystematicSet::empty
bool empty() const
returns: whether the set is empty
Definition: SystematicSet.h:67
PATCore::ParticleDataType::Fast
@ Fast
Definition: PATCoreEnums.h:22
AsgElectronEfficiencyCorrectionTool::m_useRandomRunNumber
bool m_useRandomRunNumber
Definition: AsgElectronEfficiencyCorrectionTool.h:196
CP::SystematicSet
Class to wrap a set of SystematicVariations.
Definition: SystematicSet.h:31
correlationModel::SYST
@ SYST
Definition: AsgElectronEfficiencyCorrectionTool.cxx:52
AsgElectronEfficiencyCorrectionTool::currentUncorrSystRegion
int currentUncorrSystRegion(const double cluster_eta, const double et) const
Definition: AsgElectronEfficiencyCorrectionTool.cxx:755
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
downloadSingle.dataType
string dataType
Definition: downloadSingle.py:18
asg::AsgMetadataTool::inputMetaStore
MetaStorePtr_t inputMetaStore() const
Accessor for the input metadata store.
Definition: AsgMetadataTool.cxx:93
AsgElectronEfficiencyCorrectionTool::registerSystematics
StatusCode registerSystematics()
Definition: AsgElectronEfficiencyCorrectionTool.cxx:579
athena.value
value
Definition: athena.py:124
asg::AsgMetadataTool::m_beginInputFileCalled
bool m_beginInputFileCalled
Flag helping to discover when the tool misses the opening of the first input file.
Definition: AsgMetadataTool.h:126
asg::AsgMetadataTool::endInputFile
virtual StatusCode endInputFile()
Function called when the currently open input file got completely processed.
Definition: AsgMetadataTool.cxx:193
asg::AsgMetadataTool::m_outputMetaStore
MetaStore_t m_outputMetaStore
Object accessing the output metadata store.
Definition: AsgMetadataTool.h:121
AsgElectronEfficiencyCorrectionTool::m_resultName
std::string m_resultName
The string for the result.
Definition: AsgElectronEfficiencyCorrectionTool.h:187
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
xAOD::EgammaParameters::AuthorFwdElectron
const uint16_t AuthorFwdElectron
Electron reconstructed by the Forward cluster-based algorithm.
Definition: EgammaDefs.h:30
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
AsgElectronEfficiencyCorrectionTool::m_correlation_model_name
std::string m_correlation_model_name
Definition: AsgElectronEfficiencyCorrectionTool.h:168
dbg::ptr
void * ptr(T *p)
Definition: SGImplSvc.cxx:74
CP::SystematicVariation
Definition: SystematicVariation.h:47
python.TrigEgammaMonitorHelper.TH2F
def TH2F(name, title, nxbins, bins_par2, bins_par3, bins_par4, bins_par5=None, bins_par6=None, path='', **kwargs)
Definition: TrigEgammaMonitorHelper.py:45
PATCore::ParticleDataType::Data
@ Data
Definition: PATCoreEnums.h:22
python.DataFormatRates.events
events
Definition: DataFormatRates.py:105
AsgElectronEfficiencyCorrectionTool::m_accessors
std::unique_ptr< Accessors > m_accessors
Definition: AsgElectronEfficiencyCorrectionTool.h:256
mapkey::sys
@ sys
Definition: TElectronEfficiencyCorrectionTool.cxx:42
AsgElectronEfficiencyCorrectionTool::m_defaultRandomRunNumber
int m_defaultRandomRunNumber
Definition: AsgElectronEfficiencyCorrectionTool.h:197
AsgElectronEfficiencyCorrectionTool::m_dataType
PATCore::ParticleDataType::DataType m_dataType
Definition: AsgElectronEfficiencyCorrectionTool.h:200
PATCore::ParticleDataType::DataType
DataType
Definition: PATCoreEnums.h:22
python.iconfTool.models.loaders.level
level
Definition: loaders.py:20
xAOD::FileMetaData_v1::value
bool value(MetaDataType type, std::string &val) const
Get a pre-defined string value out of the object.
Definition: FileMetaData_v1.cxx:195
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
AsgElectronEfficiencyCorrectionTool::m_isoKey
std::string m_isoKey
Definition: AsgElectronEfficiencyCorrectionTool.h:177
xAOD::FileMetaData_v1::simFlavour
@ simFlavour
Fast or Full sim [string].
Definition: FileMetaData_v1.h:76
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:29
PATCore::ParticleDataType::Full
@ Full
Definition: PATCoreEnums.h:22
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
AsgElectronEfficiencyCorrectionTool::callSingleEvent
void callSingleEvent(columnar::ElectronRange electrons, columnar::EventInfoId event) const
Definition: AsgElectronEfficiencyCorrectionTool.cxx:1004
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
correlationModel::MCTOYS
@ MCTOYS
Definition: AsgElectronEfficiencyCorrectionTool.cxx:48
AsgElectronEfficiencyCorrectionTool::m_uncorrSimplfEtBinsUser
std::vector< float > m_uncorrSimplfEtBinsUser
Definition: AsgElectronEfficiencyCorrectionTool.h:221
AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
CP::CorrectionCode::OutOfValidityRange
@ OutOfValidityRange
Input object is out of validity range.
Definition: CorrectionCode.h:37
Root::TElectronEfficiencyCorrectionTool::Result
Definition: TElectronEfficiencyCorrectionTool.h:42
CP::CorrectionCode::Error
@ Error
Some error happened during the object correction.
Definition: CorrectionCode.h:36
histSizes.code
code
Definition: histSizes.py:129
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:209
AthCommonDataStore
Definition: AthCommonDataStore.h:52
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
ParticleGun_FastCalo_ChargeFlip_Config.energy
energy
Definition: ParticleGun_FastCalo_ChargeFlip_Config.py:78
AsgElectronEfficiencyCorrectionTool::m_toysBasename
std::string m_toysBasename
Definition: AsgElectronEfficiencyCorrectionTool.h:228
event
POOL::TEvent event(POOL::TEvent::kClassAccess)
SG::Decorator
Helper class to provide type-safe access to aux data.
Definition: Decorator.h:59
lumiFormat.i
int i
Definition: lumiFormat.py:85
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
Definition: AthCommonDataStore.h:145
AsgElectronEfficiencyCorrectionTool::m_uncorrVarDown
std::vector< CP::SystematicVariation > m_uncorrVarDown
Definition: AsgElectronEfficiencyCorrectionTool.h:232
asg::AsgMetadataTool::beginInputFile
virtual StatusCode beginInputFile()
Function called when a new input file is opened.
Definition: AsgMetadataTool.cxx:185
master.flag
bool flag
Definition: master.py:29
AsgElectronEfficiencyCorrectionTool::m_nCorrSyst
int m_nCorrSyst
Definition: AsgElectronEfficiencyCorrectionTool.h:215
Amg::transform
Amg::Vector3D transform(Amg::Vector3D &v, Amg::Transform3D &tr)
Transform a point from a Trasformation3D.
Definition: GeoPrimitivesHelpers.h:156
CalibDbCompareRT.dummy
dummy
Definition: CalibDbCompareRT.py:59
AsgElectronEfficiencyCorrectionTool::m_recoKey
std::string m_recoKey
Definition: AsgElectronEfficiencyCorrectionTool.h:175
AsgElectronEfficiencyCorrectionTool::appliedSystematics
virtual const CP::SystematicSet & appliedSystematics() const override final
returns: the currently applied systematics
Definition: AsgElectronEfficiencyCorrectionTool.h:115
checkCorrelInHIST.prefix
dictionary prefix
Definition: checkCorrelInHIST.py:391
AsgElectronEfficiencyCorrectionTool::m_number_of_toys
int m_number_of_toys
Definition: AsgElectronEfficiencyCorrectionTool.h:206
AsgElectronEfficiencyCorrectionTool::m_resultPrefix
std::string m_resultPrefix
The prefix string for the result.
Definition: AsgElectronEfficiencyCorrectionTool.h:184
asg::AsgMetadataTool::metaDataStop
virtual StatusCode metaDataStop()
Function called when the tool should write out its metadata.
Definition: AsgMetadataTool.cxx:209
AthenaPoolTestRead.acc
acc
Definition: AthenaPoolTestRead.py:16
AsgElectronEfficiencyCorrectionTool::systUncorrVariationIndex
virtual int systUncorrVariationIndex(const xAOD::Electron &inputObject) const override final
Definition: AsgElectronEfficiencyCorrectionTool.cxx:808
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
AsgElectronEfficiencyCorrectionTool::m_seed_toys
int m_seed_toys
Definition: AsgElectronEfficiencyCorrectionTool.h:209
MSG::name
const std::string & name(Level lvl)
Convenience function for translating message levels to strings.
Definition: MsgLevel.cxx:19
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
AsgElectronEfficiencyCorrectionTool::m_nUncorrSyst
int m_nUncorrSyst
Definition: AsgElectronEfficiencyCorrectionTool.h:216
DeMoUpdate.tmp
string tmp
Definition: DeMoUpdate.py:1167
correlationModel::COMBMCTOYS
@ COMBMCTOYS
Definition: AsgElectronEfficiencyCorrectionTool.cxx:47
xAOD::FileMetaData_v1
Class holding file-level metadata about an xAOD file.
Definition: FileMetaData_v1.h:34
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
AsgElectronEfficiencyCorrectionTool::m_scale_toys
double m_scale_toys
Definition: AsgElectronEfficiencyCorrectionTool.h:212
AsgElectronEfficiencyCorrectionTool::m_dataTypeOverwrite
int m_dataTypeOverwrite
Force the data type to a given value.
Definition: AsgElectronEfficiencyCorrectionTool.h:203
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
AsgElectronEfficiencyCorrectionTool::m_corrVarDown
std::vector< CP::SystematicVariation > m_corrVarDown
Definition: AsgElectronEfficiencyCorrectionTool.h:230
columnar::ObjectId
a class representing a single object (electron, muons, etc.)
Definition: ContainerId.h:176
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
asg::AsgMetadataTool::m_inputMetaStore
MetaStore_t m_inputMetaStore
Object accessing the input metadata store.
Definition: AsgMetadataTool.h:119
CP::SystematicSet::insert
void insert(const SystematicVariation &systematic)
description: insert a systematic into the set
Definition: SystematicSet.cxx:88
correlationModel::SIMPLIFIED
@ SIMPLIFIED
Definition: AsgElectronEfficiencyCorrectionTool.cxx:50
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
AsgElectronEfficiencyCorrectionTool::getEfficiencyScaleFactor
virtual CP::CorrectionCode getEfficiencyScaleFactor(const xAOD::Electron &inputObject, double &efficiencyScaleFactor) const override final
Definition: AsgElectronEfficiencyCorrectionTool.cxx:334
AsgElectronEfficiencyCorrectionTool::m_systFilter
std::unordered_map< CP::SystematicSet, CP::SystematicSet > m_systFilter
Systematics filter map.
Definition: AsgElectronEfficiencyCorrectionTool.h:159
AsgElectronEfficiencyCorrectionTool::m_eventInfoCollectionName
std::string m_eventInfoCollectionName
The Event info collection name.
Definition: AsgElectronEfficiencyCorrectionTool.h:193
AsgElectronEfficiencyCorrectionTool::get_simType_from_metadata
StatusCode get_simType_from_metadata(PATCore::ParticleDataType::DataType &result) const
Definition: AsgElectronEfficiencyCorrectionTool.cxx:946
AsgElectronEfficiencyCorrectionTool::m_trigKey
std::string m_trigKey
Definition: AsgElectronEfficiencyCorrectionTool.h:178
AsgElectronEfficiencyCorrectionTool::affectingSystematics
virtual CP::SystematicSet affectingSystematics() const override final
returns: the list of all systematics this tool can be affected by
Definition: AsgElectronEfficiencyCorrectionTool.cxx:572
checkTriggerxAOD.found
found
Definition: checkTriggerxAOD.py:328
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:283
AsgElectronEfficiencyCorrectionTool::m_uncorrVarUp
std::vector< CP::SystematicVariation > m_uncorrVarUp
Definition: AsgElectronEfficiencyCorrectionTool.h:231
DeMoAtlasDataLoss.runNumber
string runNumber
Definition: DeMoAtlasDataLoss.py:64
CP::CorrectionCode::Ok
@ Ok
The correction was done successfully.
Definition: CorrectionCode.h:38
a
TList * a
Definition: liststreamerinfos.cxx:10
h
ElRecomFileHelpers::convertToOneKey
std::string convertToOneKey(const std::string &recokey, const std::string &idkey, const std::string &isokey, const std::string &trigkey)
Definition: ElRecomFileHelpers.cxx:38
mapkey::sf
@ sf
Definition: TElectronEfficiencyCorrectionTool.cxx:38
AsgElectronEfficiencyCorrectionTool::m_nSimpleUncorrSyst
int m_nSimpleUncorrSyst
Definition: AsgElectronEfficiencyCorrectionTool.h:225
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
CP::SystematicVariation::empty
bool empty() const
returns: whether this is an empty systematic, i.e.
Definition: SystematicVariation.cxx:294
CP::SystematicRegistry
This module implements the central registry for handling systematic uncertainties with CP tools.
Definition: SystematicRegistry.h:25
AsgElectronEfficiencyCorrectionTool::m_affectedSys
CP::SystematicSet m_affectedSys
Affected systematic, should be done only once.
Definition: AsgElectronEfficiencyCorrectionTool.h:162
CP::SystematicSet::begin
const_iterator begin() const
description: const iterator to the beginning of the set
Definition: SystematicSet.h:55
DeMoScan.first
bool first
Definition: DeMoScan.py:534
AsgElectronEfficiencyCorrectionTool::m_corrVarUp
std::vector< CP::SystematicVariation > m_corrVarUp
Definition: AsgElectronEfficiencyCorrectionTool.h:229
AsgElectronEfficiencyCorrectionTool::m_UncorrRegions
TH2F * m_UncorrRegions
Definition: AsgElectronEfficiencyCorrectionTool.h:224
AthCommonMsg< AlgTool >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
CP::CorrectionCode
Return value from object correction CP tools.
Definition: CorrectionCode.h:31
xAOD::EgammaParameters::electron
@ electron
Definition: EgammaEnums.h:18
CaloCellTimeCorrFiller.filename
filename
Definition: CaloCellTimeCorrFiller.py:23
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:629
python.SystemOfUnits.s
float s
Definition: SystemOfUnits.py:147
AsgElectronEfficiencyCorrectionTool::m_pteta_bins
std::vector< std::pair< float, std::vector< float > > > m_pteta_bins
Definition: AsgElectronEfficiencyCorrectionTool.h:217
AsgElectronEfficiencyCorrectionTool::m_sysSubstring
std::string m_sysSubstring
Definition: AsgElectronEfficiencyCorrectionTool.h:190
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:801
merge.status
status
Definition: merge.py:16
AsgElectronEfficiencyCorrectionTool::m_metadata_retrieved
bool m_metadata_retrieved
To check if the metadata can be retrieved.
Definition: AsgElectronEfficiencyCorrectionTool.h:153
LArCellNtuple.ifile
string ifile
Definition: LArCellNtuple.py:133
columnar::resetAccessor
void resetAccessor(AccessorTemplate< CI, CT, CAM, CM > &accessor, ColumnarTool< CM > &columnBase, const std::string &name, ColumnInfo &&info={})
reset a column accessor to point to a new column
Definition: ColumnAccessor.h:210
SG::DataProxy
Definition: DataProxy.h:45
ElRecomFileHelpers::getValueByKey
std::string getValueByKey(const std::string &mapFile, const std::string &key)
Definition: ElRecomFileHelpers.cxx:75
CP::SystematicVariation::makeToyEnsemble
static SystematicVariation makeToyEnsemble(const std::string &basename)
constructor for toy systematics ensemble
Definition: SystematicVariation.cxx:258
InDetDD::electrons
@ electrons
Definition: InDetDD_Defs.h:17
CP::SystematicSet::filterForAffectingSystematics
static StatusCode filterForAffectingSystematics(const SystematicSet &systConfig, const SystematicSet &affectingSystematics, SystematicSet &filteredSystematics)
description: filter the systematics for the affected systematics returns: success guarantee: strong f...
Definition: SystematicSet.cxx:213
correlationModel::TOTAL
@ TOTAL
Definition: AsgElectronEfficiencyCorrectionTool.cxx:51
fitman.k
k
Definition: fitman.py:528
CP::SystematicRegistry::getInstance
static SystematicRegistry & getInstance()
Get the singleton instance of the registry for the curren thread.
Definition: SystematicRegistry.cxx:25
AthAnalysisHelper::retrieveMetadata
static std::string retrieveMetadata(const std::string &folder, const std::string &key, const ServiceHandle< StoreGateSvc > &inputMetaStore)
method that always returns as a string you can use from, e.g, pyROOT with evt = ROOT....
Definition: AthAnalysisHelper.h:254
ServiceHandle< IIncidentSvc >
AsgElectronEfficiencyCorrectionTool::currentSimplifiedUncorrSystRegion
int currentSimplifiedUncorrSystRegion(const double cluster_eta, const double et) const
Definition: AsgElectronEfficiencyCorrectionTool.cxx:716
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37
asg::AsgMetadataTool::m_useIncidents
bool m_useIncidents
Definition: AsgMetadataTool.h:128