Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
AsgPhotonEfficiencyCorrectionTool Class Referenceabstract

#include <AsgPhotonEfficiencyCorrectionTool.h>

Inheritance diagram for AsgPhotonEfficiencyCorrectionTool:
Collaboration diagram for AsgPhotonEfficiencyCorrectionTool:

Public Member Functions

 AsgPhotonEfficiencyCorrectionTool (const std::string &myname)
 Standard constructor. More...
 
virtual ~AsgPhotonEfficiencyCorrectionTool ()
 Standard destructor. More...
 
virtual StatusCode initialize () override
 Gaudi Service Interface method implementations. More...
 
virtual CP::CorrectionCode getEfficiencyScaleFactor (const xAOD::Egamma &inputObject, double &efficiencyScaleFactor) const override
 Add some method for now as a first step to move the tool to then new interface. More...
 
virtual CP::CorrectionCode getEfficiencyScaleFactorError (const xAOD::Egamma &inputObject, double &efficiencyScaleFactorError) const override
 Get the "photon scale factor error" as a return value. More...
 
virtual CP::CorrectionCode applyEfficiencyScaleFactor (xAOD::Egamma &inputObject) const override
 Decorate the photon with its scale factor. More...
 
virtual bool isAffectedBySystematic (const CP::SystematicVariation &systematic) const override
 The methods below should notify the user of what is actually in the list , without him having to go in the wiki. More...
 
virtual CP::SystematicSet affectingSystematics () const override
 returns: the list of all systematics this tool can be affected by More...
 
virtual CP::SystematicSet recommendedSystematics () const override
 returns: the list of all systematics this tool recommends to use More...
 
const CP::SystematicSetappliedSystematics () const
 returns: the currently applied systematics More...
 
virtual StatusCode applySystematicVariation (const CP::SystematicSet &systConfig) override
 Configure this tool for the given systematics. More...
 
StatusCode registerSystematics ()
 Register the systematics with the registry and add them to the recommended list. More...
 
virtual void print () const =0
 Print the state of the tool. 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 sysInitialize () override
 Perform system initialization for an algorithm. More...
 
virtual StatusCode sysStart () override
 Handle START transition. More...
 
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles. More...
 
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles. More...
 
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T > &t)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc="none")
 Declare a new Gaudi property. More...
 
void updateVHKA (Gaudi::Details::PropertyBase &)
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) const
 
bool msgLvl (const MSG::Level lvl) const
 

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 Root::TElectronEfficiencyCorrectionTool::Result Result
 
typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

CP::CorrectionCode calculate (const xAOD::Egamma *egam, Result &result) const
 I think these calculate methods are only used internally. More...
 
std::string getFileName (const std::string &isoWP, const std::string &trigWP, bool isConv)
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Private Attributes

Root::TElectronEfficiencyCorrectionToolm_rootTool_unc
 Pointer to the underlying ROOT based tool. More...
 
Root::TElectronEfficiencyCorrectionToolm_rootTool_con
 
std::unordered_map< CP::SystematicSet, CP::SystematicSetm_systFilter
 Systematics filter map. More...
 
CP::SystematicSetm_appliedSystematics = nullptr
 Currently applied systematics. More...
 
std::string m_sysSubstring
 
std::string m_file_prefix_ID ="efficiencySF.offline."
 
std::string m_file_prefix_ISO ="efficiencySF.Isolation."
 
std::string m_file_prefix_Trig ="efficiencySF."
 
std::string m_file_prefix_TrigEff ="efficiency."
 
std::string m_corrFileNameConv
 The list of input file names. More...
 
std::string m_corrFileNameUnconv
 
std::string m_resultPrefix
 The prefix string for the result. More...
 
std::string m_resultName
 The string for the result. More...
 
int m_dataTypeOverwrite
 Force the data type to a given value. More...
 
std::string m_isoWP
 Isolation working point. More...
 
std::string m_trigger
 Trigger name for trigger SF. More...
 
std::string m_mapFile
 map filename More...
 
std::map< float, std::vector< float > > m_pteta_bins
 
bool m_useRandomRunNumber
 
int m_defaultRandomRunNumber
 
bool m_removeTRTConversion
 
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 34 of file AsgPhotonEfficiencyCorrectionTool.h.

Member Typedef Documentation

◆ Result

Definition at line 82 of file AsgPhotonEfficiencyCorrectionTool.h.

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ AsgPhotonEfficiencyCorrectionTool()

AsgPhotonEfficiencyCorrectionTool::AsgPhotonEfficiencyCorrectionTool ( const std::string &  myname)

Standard constructor.

Definition at line 42 of file AsgPhotonEfficiencyCorrectionTool.cxx.

42  :
43  AsgTool(myname),
44  m_rootTool_unc(nullptr),
45  m_rootTool_con(nullptr),
46  m_appliedSystematics(nullptr),
47  m_sysSubstring("")
48 {
49 
50  // Create an instances of the underlying ROOT tools
53 
54  // Declare the needed properties
55  declareProperty( "CorrectionFileNameConv", m_corrFileNameConv="",
56  "File that stores the correction factors for simulation for converted photons");
57 
58  declareProperty( "CorrectionFileNameUnconv", m_corrFileNameUnconv="",
59  "File that stores the correction factors for simulation for unconverted photons");
60 
61  declareProperty("MapFilePath", m_mapFile = "PhotonEfficiencyCorrection/2015_2025/rel22.2/2024_FinalRun2_Recommendation_v1/map1.txt",
62  "Full path to the map file");
63 
64  declareProperty( "ForceDataType", m_dataTypeOverwrite=-1,
65  "Force the DataType of the Photon to specified value");
66 
67  declareProperty( "ResultPrefix", m_resultPrefix="", "The prefix string for the result");
68  declareProperty( "ResultName", m_resultName="", "The string for the result");
69 
70  // Properties needed for isolation corrections
71  declareProperty( "IsoKey", m_isoWP="", "Set isolation WP, if this string is empty the tool will return ID SF");
72 
73  // Properties needed for trigger SF
74  declareProperty( "TriggerKey", m_trigger="", "Set trigger, if this string is empty the tool will return ID SF");
75 
76  // Properties related to the receiving of event run number
77  declareProperty("UseRandomRunNumber", m_useRandomRunNumber = true,
78  "Set if use RandomRunNumber from eventinfo");
79  declareProperty("DefaultRandomRunNumber", m_defaultRandomRunNumber = 999999,
80  "Set default run number manually");
81  declareProperty("removeTRTConversion", m_removeTRTConversion = true,
82  "boolean to treat barrel standalone TRT conversion as unconverted for Run3 ");
83 
84 
85 }

◆ ~AsgPhotonEfficiencyCorrectionTool()

AsgPhotonEfficiencyCorrectionTool::~AsgPhotonEfficiencyCorrectionTool ( )
virtual

Standard destructor.

Definition at line 90 of file AsgPhotonEfficiencyCorrectionTool.cxx.

91 {
92  if ( m_rootTool_unc ) delete m_rootTool_unc;
93  if ( m_rootTool_con ) delete m_rootTool_con;
94 }

Member Function Documentation

◆ affectingSystematics()

CP::SystematicSet AsgPhotonEfficiencyCorrectionTool::affectingSystematics ( ) const
overridevirtual

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

returns: the list of all systematics this tool can be affected by (for now keep +-1 sigma variation, but ignore it later in applySystematicVariation() )

Implements CP::IReentrantSystematicsTool.

Definition at line 347 of file AsgPhotonEfficiencyCorrectionTool.cxx.

347  {
348  CP::SystematicSet mySysSet;
349 
351  mySysSet.insert(CP::SystematicVariation("PH_EFF_"+m_sysSubstring+"Uncertainty", 1));
352  mySysSet.insert(CP::SystematicVariation("PH_EFF_"+m_sysSubstring+"Uncertainty", -1));
353 
354  return mySysSet;
355 }

◆ appliedSystematics()

const CP::SystematicSet& AsgPhotonEfficiencyCorrectionTool::appliedSystematics ( ) const
inline

returns: the currently applied systematics

Definition at line 70 of file AsgPhotonEfficiencyCorrectionTool.h.

70  {
71  assert (m_appliedSystematics != nullptr);
72  return *m_appliedSystematics;
73  }

◆ applyEfficiencyScaleFactor()

CP::CorrectionCode AsgPhotonEfficiencyCorrectionTool::applyEfficiencyScaleFactor ( xAOD::Egamma ) const
overridevirtual

Decorate the photon with its scale factor.

Implements IAsgPhotonEfficiencyCorrectionTool.

Definition at line 325 of file AsgPhotonEfficiencyCorrectionTool.cxx.

325  {
326 
327  double efficiencyScaleFactor = 1.0;
328  CP::CorrectionCode result = getEfficiencyScaleFactor(inputObject, efficiencyScaleFactor);
330  dec(inputObject) = efficiencyScaleFactor;
331  return result;
332 }

◆ applySystematicVariation()

StatusCode AsgPhotonEfficiencyCorrectionTool::applySystematicVariation ( const CP::SystematicSet systConfig)
overridevirtual

Configure this tool for the given systematics.

Implements CP::ISystematicsTool.

Definition at line 377 of file AsgPhotonEfficiencyCorrectionTool.cxx.

379 {
380  // First, check if we already know this systematic configuration
381  auto itr = m_systFilter.find(systConfig);
382 
383  // If it's a new input set, we need to filter it
384  if( itr == m_systFilter.end() ){
385 
386  CP::SystematicSet affectingSys = affectingSystematics();
387  CP::SystematicSet filteredSys;
388  if (!CP::SystematicSet::filterForAffectingSystematics(systConfig, affectingSys, filteredSys)){
389  ATH_MSG_ERROR("Unsupported combination of systematics passed to the tool!");
390  return StatusCode::FAILURE;
391  }
392  // Insert filtered set into the map
393  itr = m_systFilter.insert(std::make_pair(systConfig, filteredSys)).first;
394  }
395 
396  CP::SystematicSet& mySysConf = itr->second;
397  m_appliedSystematics = &mySysConf;
398  return StatusCode::SUCCESS;
399 }

◆ calculate()

CP::CorrectionCode AsgPhotonEfficiencyCorrectionTool::calculate ( const xAOD::Egamma egam,
Result result 
) const
private

I think these calculate methods are only used internally.

Definition at line 181 of file AsgPhotonEfficiencyCorrectionTool.cxx.

182 {
183 
184  if ( !egam ) {
185  ATH_MSG_ERROR ( "Did NOT get a valid egamma pointer!" );
187  }
188 
189  // retrieve transverse energy from e/cosh(etaS2)
190  const xAOD::CaloCluster* cluster = egam->caloCluster();
191  if (!cluster){
192  ATH_MSG_ERROR("No cluster associated to the Photon \n");
194  }
195 
196  // use et from cluster because it is immutable under syst variations of ele energy scale
197  const double energy = cluster->e();
198  double et = 0.;
199  if ( std::abs(egam->eta()) < 999.) {
200  const double cosheta = std::cosh(egam->eta());
201  et = (cosheta != 0.) ? energy / cosheta : 0.;
202  }
203 
204  // eta from second layer
205  double eta2 = cluster->etaBE(2);
206 
207  // allow for a 5% margin at the lowest pT bin boundary (i.e. increase et by 5%
208  // for sub-threshold electrons). This assures that electrons that pass the
209  // threshold only under syst variations of energy get a scale factor assigned.
210  std::map<float, std::vector<float>>::const_iterator itr_pt = m_pteta_bins.begin();
211  if (itr_pt!=m_pteta_bins.end() && et<itr_pt->first) {
212  et=et*1.05;
213  }
214 
215  // Check if photon in the range to get the SF
216  if (std::abs(eta2) > MAXETA) {
217  result.SF = 1;
218  result.Total = 1;
219  ATH_MSG_DEBUG("No correction factor provided for eta "
220  << eta2 << " Returning SF = 1 + / - 1");
222  }
223  if (et < MIN_ET) {
224  result.SF = 1;
225  result.Total = 1;
226  ATH_MSG_DEBUG("No correction factor provided for eT "
227  << et << " Returning SF = 1 + / - 1");
229  }
230  if (itr_pt != m_pteta_bins.end() && et < itr_pt->first) {
231  result.SF = 1;
232  result.Total = 1;
233  ATH_MSG_DEBUG("No scale factor uncertainty provided for et "
234  << et / 1e3 << "GeV Returning SF = 1 + / - 1");
236  }
237 
238  // Get the run number
239  const xAOD::EventInfo* eventInfo =
240  evtStore()->retrieve<const xAOD::EventInfo>("EventInfo");
241  if (!eventInfo) {
242  ATH_MSG_ERROR("Could not retrieve EventInfo object!");
244  }
245 
246  // Retrieve the proper random Run Number
247  unsigned int runnumber = m_defaultRandomRunNumber;
248  if (m_useRandomRunNumber) {
249  static const SG::AuxElement::Accessor<unsigned int> randomrunnumber(
250  "RandomRunNumber");
251  if (!randomrunnumber.isAvailable(*eventInfo)) {
253  "Pileup tool not run before using PhotonEfficiencyTool! SFs do not "
254  "reflect PU distribution in data");
256  }
257  runnumber = randomrunnumber(*(eventInfo));
258  }
259 
260  /* For now the dataType must be set by the user. May be added to the IParticle
261  * class later. */
262  // probably event info should be able to tell us if it's data, fullsim, AF,..
265  if (m_dataTypeOverwrite >= 0)
267 
268 
269  //exclude TRT
270  bool excludeTRT = false;
271  if(runnumber >= 410000 && m_removeTRTConversion) excludeTRT = true;
272  // check if converted
273  const bool isConv = xAOD::EgammaHelpers::isConvertedPhoton(egam, excludeTRT);
274 
275  // Call the ROOT tool to get an answer (for photons we need just the total)
276  const int status = isConv ? m_rootTool_con->calculate(dataType, runnumber,
277  eta2, et, result, true)
279  eta2, et, result, true);
280 
281  // if status 0 something went wrong
282  if (!status) {
283  result.SF = 1;
284  result.Total = 1;
286  }
287 
288  return CP::CorrectionCode::Ok;
289 }

◆ declareGaudiProperty() [1/4]

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

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

Definition at line 170 of file AthCommonDataStore.h.

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

◆ declareGaudiProperty() [2/4]

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

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

Definition at line 156 of file AthCommonDataStore.h.

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

◆ declareGaudiProperty() [3/4]

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

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

Definition at line 184 of file AthCommonDataStore.h.

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

◆ declareGaudiProperty() [4/4]

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

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

Definition at line 199 of file AthCommonDataStore.h.

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

◆ declareProperty() [1/6]

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

Declare a new Gaudi property.

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

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

Definition at line 245 of file AthCommonDataStore.h.

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

◆ declareProperty() [2/6]

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

Declare a new Gaudi property.

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

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

Definition at line 221 of file AthCommonDataStore.h.

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

◆ declareProperty() [3/6]

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

Definition at line 259 of file AthCommonDataStore.h.

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

◆ declareProperty() [4/6]

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

Declare a new Gaudi property.

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

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

Definition at line 333 of file AthCommonDataStore.h.

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

◆ declareProperty() [5/6]

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

Declare a new Gaudi property.

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

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

Definition at line 352 of file AthCommonDataStore.h.

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

◆ declareProperty() [6/6]

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

Definition at line 145 of file AthCommonDataStore.h.

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

◆ detStore()

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

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

Definition at line 95 of file AthCommonDataStore.h.

95 { return m_detStore; }

◆ evtStore() [1/2]

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

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

Definition at line 85 of file AthCommonDataStore.h.

85 { return m_evtStore; }

◆ evtStore() [2/2]

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

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

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ extraDeps_update_handler()

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

Add StoreName to extra input/output deps as needed.

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

◆ getEfficiencyScaleFactor()

CP::CorrectionCode AsgPhotonEfficiencyCorrectionTool::getEfficiencyScaleFactor ( const xAOD::Egamma inputObject,
double &  efficiencyScaleFactor 
) const
overridevirtual

Add some method for now as a first step to move the tool to then new interface.

Implements IAsgPhotonEfficiencyCorrectionTool.

Definition at line 291 of file AsgPhotonEfficiencyCorrectionTool.cxx.

291  {
292 
293  Result sfresult;
294  CP::CorrectionCode status = calculate(&inputObject, sfresult);
295 
296  if ( status != CP::CorrectionCode::Ok ) {
297  return status;
298  }
299 
300  if(m_appliedSystematics==nullptr){
301  efficiencyScaleFactor=sfresult.SF;
302  return CP::CorrectionCode::Ok;
303  }
304 
305  //Get the result + the uncertainty
306  float sigma(0);
308  efficiencyScaleFactor=sfresult.SF+sigma*sfresult.Total;
309  return CP::CorrectionCode::Ok;
310 }

◆ getEfficiencyScaleFactorError()

CP::CorrectionCode AsgPhotonEfficiencyCorrectionTool::getEfficiencyScaleFactorError ( const xAOD::Egamma ,
double &   
) const
overridevirtual

Get the "photon scale factor error" as a return value.

Implements IAsgPhotonEfficiencyCorrectionTool.

Definition at line 312 of file AsgPhotonEfficiencyCorrectionTool.cxx.

312  {
313 
314  Result sfresult;
315  CP::CorrectionCode status = calculate(&inputObject, sfresult);
316 
317  if ( status != CP::CorrectionCode::Ok ) {
318  return status;
319  }
320 
321  efficiencyScaleFactorError=sfresult.Total;
322  return CP::CorrectionCode::Ok;
323 }

◆ getFileName()

std::string AsgPhotonEfficiencyCorrectionTool::getFileName ( const std::string &  isoWP,
const std::string &  trigWP,
bool  isConv 
)
private

Definition at line 405 of file AsgPhotonEfficiencyCorrectionTool.cxx.

405  {
406 
407  // First locate the map file:
408  std::string mapFileName = PathResolverFindCalibFile( m_mapFile );
409  if(mapFileName.empty()){
410  ATH_MSG_ERROR ( "Can't read map file " << m_mapFile );
411  return mapFileName; // return an empty string
412  }
413 
414  // Construct correction type:
415  std::string correction_type = "ID_Tight";
416  if(!trigWP.empty()) correction_type = "Trigger_"+trigWP+"_"+isoWP;
417  else if(!isoWP.empty()) correction_type = "ISO_"+isoWP;
418 
419  // trigger SF same for con/unc photons
420  if(trigWP.empty()) {correction_type += isConv ? "_Converted" : "_Unconverted";}
421 
422  std::string value;
423 
424  // Read the map file to find the proper correction filename
425  std::ifstream is(mapFileName);
426  if (!is.is_open()){
427  ATH_MSG_ERROR("Couldn't read Map File" + mapFileName);
428  return "";
429  }
430  while (!is.eof()) {
431  std::string strLine;
432  getline(is,strLine);
433 
434  int nPos = strLine.find('=');
435 
436  if ((signed int)std::string::npos == nPos) continue; // no '=', invalid line;
437  std::string strKey = strLine.substr(0,nPos);
438  std::string strVal = strLine.substr(nPos + 1, strLine.length() - nPos + 1);
439 
440  // check if this is the right key, if the right one stop the search
441  if(0==correction_type.compare(strKey)) {value=strVal; break;}
442  }
443 
444  return value;
445 
446 }

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

◆ getProperty()

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

Get one of the tool's properties.

◆ initialize()

StatusCode AsgPhotonEfficiencyCorrectionTool::initialize ( )
overridevirtual

Gaudi Service Interface method implementations.

Reimplemented from asg::AsgTool.

Definition at line 99 of file AsgPhotonEfficiencyCorrectionTool.cxx.

100 {
101  // Resolve the paths to the input files
102  std::vector < std::string > corrFileNameList;
103 
104  // First check if the tool is initialized using the input files or map
105  if(!m_mapFile.empty()){ // using map file
106  corrFileNameList.push_back(getFileName(m_isoWP,m_trigger,true)); // converted photons input
107  corrFileNameList.push_back(getFileName(m_isoWP,m_trigger,false)); // unconverted photons input
108  }
109  else if(!m_corrFileNameConv.empty() && !m_corrFileNameUnconv.empty()){ // initialize the tool using input files (old scheme)
110  corrFileNameList.push_back(m_corrFileNameConv);
111  corrFileNameList.push_back(m_corrFileNameUnconv);
112  }
113  else{
114  ATH_MSG_ERROR ( "Fail to resolve input file name, check if you set MapFilePath or CorrectionFileName properly" );
115  return StatusCode::FAILURE ;
116  }
117 
118  // once the input files are retrieved, update the path using PathResolver or TOOL/data folder
119  for (auto & i : corrFileNameList){
120 
121  //Using the PathResolver to locate the file
122  std::string filename = PathResolverFindCalibFile( i );
123 
124  if (filename.empty()){
125  ATH_MSG_ERROR ( "Could NOT resolve file name " << i );
126  return StatusCode::FAILURE ;
127  } else{
128  ATH_MSG_INFO(" Using path = "<<filename);
129  }
130 
131  i = filename;
132 
133  }
134 
135  // Set prefix for sustematics if this is ISO, Trigger or ID SF
136  if( corrFileNameList[0].find(m_file_prefix_Trig) != std::string::npos) m_sysSubstring="TRIGGER_";
137  if( corrFileNameList[0].find(m_file_prefix_ID) != std::string::npos) m_sysSubstring="ID_";
138  if( corrFileNameList[0].find(m_file_prefix_ISO) != std::string::npos) m_sysSubstring="ISO_";
139  if( corrFileNameList[0].find(m_file_prefix_TrigEff) != std::string::npos) m_sysSubstring="TRIGGER_";
140  if(m_sysSubstring.empty()) {ATH_MSG_ERROR ( "Invalid input file" ); return StatusCode::FAILURE;}
141 
142  // Configure the underlying Root tool
143  m_rootTool_con->addFileName( corrFileNameList[0] );
144  m_rootTool_unc->addFileName( corrFileNameList[1] );
145 
146  // Forward the message level
147  m_rootTool_con->msg().setLevel(this->msg().level());
148  m_rootTool_unc->msg().setLevel(this->msg().level());
149 
150  // We need to initialize the underlying ROOT TSelectorTool
151  if ( (0 == m_rootTool_con->initialize()) || (0 == m_rootTool_unc->initialize()) )
152  {
153  ATH_MSG_ERROR("Could not initialize the TElectronEfficiencyCorrectionTool!");
154  return StatusCode::FAILURE;
155  }
156 
157  // get the map of pt/eta bins
158  // let's start with converted
160  std::map<float, std::vector<float>> pteta_bins_unc;
161  // now let's get unconverted
162  m_rootTool_unc->getNbins(pteta_bins_unc);
163  // let's loop the unconverted map and copy over to the common one
164  // in this tool we only ever care about et, so don't care if we overwrite eta information
165  for (const auto& [pt_unc, eta_unc]: pteta_bins_unc) {
166  m_pteta_bins[pt_unc] = eta_unc;
167  }
168 
169  // Add the recommended systematics to the registry
170  if ( registerSystematics() != StatusCode::SUCCESS) {
171  return StatusCode::FAILURE;
172  }
173 
174  return StatusCode::SUCCESS ;
175 }

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

◆ isAffectedBySystematic()

bool AsgPhotonEfficiencyCorrectionTool::isAffectedBySystematic ( const CP::SystematicVariation systematic) const
overridevirtual

The methods below should notify the user of what is actually in the list , without him having to go in the wiki.

returns: whether this tool is affected by the given systematic

Implements CP::ISystematicsTool.

Definition at line 337 of file AsgPhotonEfficiencyCorrectionTool.cxx.

337  {
338  if(!systematic.empty()){
340  return sys.find(systematic) != sys.end();
341  }
342  return true;
343 }

◆ msg() [1/2]

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ msg() [2/2]

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

Definition at line 27 of file AthCommonMsg.h.

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

◆ msg_level_name()

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

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

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

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

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

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

Definition at line 101 of file AsgTool.cxx.

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

◆ msgLvl()

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

Definition at line 30 of file AthCommonMsg.h.

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

◆ outputHandles()

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

Return this algorithm's output handles.

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

◆ print() [1/2]

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

◆ print() [2/2]

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

◆ recommendedSystematics()

CP::SystematicSet AsgPhotonEfficiencyCorrectionTool::recommendedSystematics ( ) const
overridevirtual

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

Implements CP::IReentrantSystematicsTool.

Definition at line 368 of file AsgPhotonEfficiencyCorrectionTool.cxx.

368  {
369  CP::SystematicSet mySysSet;
370  mySysSet.insert(CP::SystematicVariation("PH_EFF_"+m_sysSubstring+"Uncertainty", 1));
371  mySysSet.insert(CP::SystematicVariation("PH_EFF_"+m_sysSubstring+"Uncertainty", -1));
372 
373  return mySysSet;
374 }

◆ registerSystematics()

StatusCode AsgPhotonEfficiencyCorrectionTool::registerSystematics ( )

Register the systematics with the registry and add them to the recommended list.

Definition at line 358 of file AsgPhotonEfficiencyCorrectionTool.cxx.

358  {
360  if (registry.registerSystematics(*this) != StatusCode::SUCCESS) {
361  ATH_MSG_ERROR("Failed to add systematic to list of recommended systematics.");
362  return StatusCode::FAILURE;
363  }
364  return StatusCode::SUCCESS;
365 }

◆ renounce()

std::enable_if_t<std::is_void_v<std::result_of_t<decltype(&T::renounce)(T)> > && !std::is_base_of_v<SG::VarHandleKeyArray, T> && std::is_base_of_v<Gaudi::DataHandle, T>, void> AthCommonDataStore< AthCommonMsg< AlgTool > >::renounce ( T &  h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

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

◆ renounceArray()

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

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364  {
365  handlesArray.renounce();
366  }

◆ sysInitialize()

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

Perform system initialization for an algorithm.

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

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

◆ sysStart()

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

Handle START transition.

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

◆ updateVHKA()

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

Definition at line 308 of file AthCommonDataStore.h.

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

Member Data Documentation

◆ m_appliedSystematics

CP::SystematicSet* AsgPhotonEfficiencyCorrectionTool::m_appliedSystematics = nullptr
private

Currently applied systematics.

Definition at line 94 of file AsgPhotonEfficiencyCorrectionTool.h.

◆ m_corrFileNameConv

std::string AsgPhotonEfficiencyCorrectionTool::m_corrFileNameConv
private

The list of input file names.

Definition at line 111 of file AsgPhotonEfficiencyCorrectionTool.h.

◆ m_corrFileNameUnconv

std::string AsgPhotonEfficiencyCorrectionTool::m_corrFileNameUnconv
private

Definition at line 112 of file AsgPhotonEfficiencyCorrectionTool.h.

◆ m_dataTypeOverwrite

int AsgPhotonEfficiencyCorrectionTool::m_dataTypeOverwrite
private

Force the data type to a given value.

Definition at line 121 of file AsgPhotonEfficiencyCorrectionTool.h.

◆ m_defaultRandomRunNumber

int AsgPhotonEfficiencyCorrectionTool::m_defaultRandomRunNumber
private

Definition at line 137 of file AsgPhotonEfficiencyCorrectionTool.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_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_file_prefix_ID

std::string AsgPhotonEfficiencyCorrectionTool::m_file_prefix_ID ="efficiencySF.offline."
private

Definition at line 103 of file AsgPhotonEfficiencyCorrectionTool.h.

◆ m_file_prefix_ISO

std::string AsgPhotonEfficiencyCorrectionTool::m_file_prefix_ISO ="efficiencySF.Isolation."
private

Definition at line 104 of file AsgPhotonEfficiencyCorrectionTool.h.

◆ m_file_prefix_Trig

std::string AsgPhotonEfficiencyCorrectionTool::m_file_prefix_Trig ="efficiencySF."
private

Definition at line 105 of file AsgPhotonEfficiencyCorrectionTool.h.

◆ m_file_prefix_TrigEff

std::string AsgPhotonEfficiencyCorrectionTool::m_file_prefix_TrigEff ="efficiency."
private

Definition at line 106 of file AsgPhotonEfficiencyCorrectionTool.h.

◆ m_isoWP

std::string AsgPhotonEfficiencyCorrectionTool::m_isoWP
private

Isolation working point.

Definition at line 124 of file AsgPhotonEfficiencyCorrectionTool.h.

◆ m_mapFile

std::string AsgPhotonEfficiencyCorrectionTool::m_mapFile
private

map filename

Definition at line 130 of file AsgPhotonEfficiencyCorrectionTool.h.

◆ m_pteta_bins

std::map<float, std::vector<float> > AsgPhotonEfficiencyCorrectionTool::m_pteta_bins
private

Definition at line 133 of file AsgPhotonEfficiencyCorrectionTool.h.

◆ m_removeTRTConversion

bool AsgPhotonEfficiencyCorrectionTool::m_removeTRTConversion
private

Definition at line 140 of file AsgPhotonEfficiencyCorrectionTool.h.

◆ m_resultName

std::string AsgPhotonEfficiencyCorrectionTool::m_resultName
private

The string for the result.

Definition at line 118 of file AsgPhotonEfficiencyCorrectionTool.h.

◆ m_resultPrefix

std::string AsgPhotonEfficiencyCorrectionTool::m_resultPrefix
private

The prefix string for the result.

Definition at line 115 of file AsgPhotonEfficiencyCorrectionTool.h.

◆ m_rootTool_con

Root::TElectronEfficiencyCorrectionTool* AsgPhotonEfficiencyCorrectionTool::m_rootTool_con
private

Definition at line 88 of file AsgPhotonEfficiencyCorrectionTool.h.

◆ m_rootTool_unc

Root::TElectronEfficiencyCorrectionTool* AsgPhotonEfficiencyCorrectionTool::m_rootTool_unc
private

Pointer to the underlying ROOT based tool.

Definition at line 87 of file AsgPhotonEfficiencyCorrectionTool.h.

◆ m_sysSubstring

std::string AsgPhotonEfficiencyCorrectionTool::m_sysSubstring
private

Definition at line 97 of file AsgPhotonEfficiencyCorrectionTool.h.

◆ m_systFilter

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

Systematics filter map.

Definition at line 91 of file AsgPhotonEfficiencyCorrectionTool.h.

◆ m_trigger

std::string AsgPhotonEfficiencyCorrectionTool::m_trigger
private

Trigger name for trigger SF.

Definition at line 127 of file AsgPhotonEfficiencyCorrectionTool.h.

◆ m_useRandomRunNumber

bool AsgPhotonEfficiencyCorrectionTool::m_useRandomRunNumber
private

Definition at line 136 of file AsgPhotonEfficiencyCorrectionTool.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.Dso.registry
registry
Definition: Control/AthenaServices/python/Dso.py:159
AsgPhotonEfficiencyCorrectionTool::m_dataTypeOverwrite
int m_dataTypeOverwrite
Force the data type to a given value.
Definition: AsgPhotonEfficiencyCorrectionTool.h:121
et
Extra patterns decribing particle interation process.
CP::SystematicVariation::CONTINUOUS
@ CONTINUOUS
Definition: SystematicVariation.h:79
pdg_comparison.sigma
sigma
Definition: pdg_comparison.py:324
AsgPhotonEfficiencyCorrectionTool::affectingSystematics
virtual CP::SystematicSet affectingSystematics() const override
returns: the list of all systematics this tool can be affected by
Definition: AsgPhotonEfficiencyCorrectionTool.cxx:347
get_generator_info.result
result
Definition: get_generator_info.py:21
StateLessPT_NewConfig.proxy
proxy
Definition: StateLessPT_NewConfig.py:402
ParticleGun_SamplingFraction.eta2
eta2
Definition: ParticleGun_SamplingFraction.py:96
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
find
std::string find(const std::string &s)
return a remapped string
Definition: hcg.cxx:135
SG::Accessor
Helper class to provide type-safe access to aux data.
Definition: Control/AthContainers/AthContainers/Accessor.h:68
AsgPhotonEfficiencyCorrectionTool::m_defaultRandomRunNumber
int m_defaultRandomRunNumber
Definition: AsgPhotonEfficiencyCorrectionTool.h:137
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
Data
@ Data
Definition: BaseObject.h:11
AsgPhotonEfficiencyCorrectionTool::m_pteta_bins
std::map< float, std::vector< float > > m_pteta_bins
Definition: AsgPhotonEfficiencyCorrectionTool.h:133
AsgPhotonEfficiencyCorrectionTool::m_useRandomRunNumber
bool m_useRandomRunNumber
Definition: AsgPhotonEfficiencyCorrectionTool.h:136
AsgPhotonEfficiencyCorrectionTool::m_file_prefix_ID
std::string m_file_prefix_ID
Definition: AsgPhotonEfficiencyCorrectionTool.h:103
MAXETA
#define MAXETA
Definition: AsgPhotonEfficiencyCorrectionTool.cxx:33
CP::SystematicSet
Class to wrap a set of SystematicVariations.
Definition: SystematicSet.h:31
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
AsgPhotonEfficiencyCorrectionTool::m_file_prefix_TrigEff
std::string m_file_prefix_TrigEff
Definition: AsgPhotonEfficiencyCorrectionTool.h:106
athena.value
value
Definition: athena.py:124
AsgPhotonEfficiencyCorrectionTool::getFileName
std::string getFileName(const std::string &isoWP, const std::string &trigWP, bool isConv)
Definition: AsgPhotonEfficiencyCorrectionTool.cxx:405
AsgPhotonEfficiencyCorrectionTool::m_rootTool_unc
Root::TElectronEfficiencyCorrectionTool * m_rootTool_unc
Pointer to the underlying ROOT based tool.
Definition: AsgPhotonEfficiencyCorrectionTool.h:87
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
dbg::ptr
void * ptr(T *p)
Definition: SGImplSvc.cxx:74
CP::SystematicVariation
Definition: SystematicVariation.h:47
CP::SystematicSet::getParameterByBaseName
float getParameterByBaseName(const std::string &basename) const
returns: the parameter value for the given basename
Definition: SystematicSet.cxx:193
mapkey::sys
@ sys
Definition: TElectronEfficiencyCorrectionTool.cxx:42
PATCore::ParticleDataType::DataType
DataType
Definition: PATCoreEnums.h:22
python.iconfTool.models.loaders.level
level
Definition: loaders.py:20
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
AsgPhotonEfficiencyCorrectionTool::m_file_prefix_ISO
std::string m_file_prefix_ISO
Definition: AsgPhotonEfficiencyCorrectionTool.h:104
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:29
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
asg::AsgTool::AsgTool
AsgTool(const std::string &name)
Constructor specifying the tool instance's name.
Definition: AsgTool.cxx:58
CP::CorrectionCode::Error
@ Error
Some error happened during the object correction.
Definition: CorrectionCode.h:36
xAOD::CaloCluster_v1
Description of a calorimeter cluster.
Definition: CaloCluster_v1.h:62
AsgPhotonEfficiencyCorrectionTool::m_isoWP
std::string m_isoWP
Isolation working point.
Definition: AsgPhotonEfficiencyCorrectionTool.h:124
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
xAOD::EgammaHelpers::isConvertedPhoton
bool isConvertedPhoton(const xAOD::Egamma *eg, bool excludeTRT=false)
is the object a converted photon
Definition: EgammaxAODHelpers.cxx:25
AthCommonDataStore
Definition: AthCommonDataStore.h:52
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
CheckAppliedSFs.e3
e3
Definition: CheckAppliedSFs.py:264
ParticleGun_FastCalo_ChargeFlip_Config.energy
energy
Definition: ParticleGun_FastCalo_ChargeFlip_Config.py:78
columnar::ContainerId::cluster
@ cluster
SG::Decorator
Helper class to provide type-safe access to aux data.
Definition: Decorator.h:59
AsgPhotonEfficiencyCorrectionTool::m_resultName
std::string m_resultName
The string for the result.
Definition: AsgPhotonEfficiencyCorrectionTool.h:118
AsgPhotonEfficiencyCorrectionTool::m_resultPrefix
std::string m_resultPrefix
The prefix string for the result.
Definition: AsgPhotonEfficiencyCorrectionTool.h:115
AsgPhotonEfficiencyCorrectionTool::getEfficiencyScaleFactor
virtual CP::CorrectionCode getEfficiencyScaleFactor(const xAOD::Egamma &inputObject, double &efficiencyScaleFactor) const override
Add some method for now as a first step to move the tool to then new interface.
Definition: AsgPhotonEfficiencyCorrectionTool.cxx:291
lumiFormat.i
int i
Definition: lumiFormat.py:85
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
xAOD::Egamma_v1::caloCluster
const xAOD::CaloCluster * caloCluster(size_t index=0) const
Pointer to the xAOD::CaloCluster/s that define the electron candidate.
Definition: Egamma_v1.cxx:388
asg::AsgMessaging::msg
MsgStream & msg() const
The standard message stream.
Definition: AsgMessaging.cxx:49
python.xAODType.dummy
dummy
Definition: xAODType.py:4
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
AsgPhotonEfficiencyCorrectionTool::calculate
CP::CorrectionCode calculate(const xAOD::Egamma *egam, Result &result) const
I think these calculate methods are only used internally.
Definition: AsgPhotonEfficiencyCorrectionTool.cxx:181
AsgPhotonEfficiencyCorrectionTool::m_systFilter
std::unordered_map< CP::SystematicSet, CP::SystematicSet > m_systFilter
Systematics filter map.
Definition: AsgPhotonEfficiencyCorrectionTool.h:91
AsgPhotonEfficiencyCorrectionTool::m_file_prefix_Trig
std::string m_file_prefix_Trig
Definition: AsgPhotonEfficiencyCorrectionTool.h:105
Root::TElectronEfficiencyCorrectionTool
Definition: TElectronEfficiencyCorrectionTool.h:36
DeMoScan.runnumber
runnumber
Definition: DeMoScan.py:266
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
Root::TElectronEfficiencyCorrectionTool::initialize
int initialize()
Initialize this class.
Definition: TElectronEfficiencyCorrectionTool.cxx:87
AsgPhotonEfficiencyCorrectionTool::m_mapFile
std::string m_mapFile
map filename
Definition: AsgPhotonEfficiencyCorrectionTool.h:130
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
AsgPhotonEfficiencyCorrectionTool::registerSystematics
StatusCode registerSystematics()
Register the systematics with the registry and add them to the recommended list.
Definition: AsgPhotonEfficiencyCorrectionTool.cxx:358
CP::SystematicSet::insert
void insert(const SystematicVariation &systematic)
description: insert a systematic into the set
Definition: SystematicSet.cxx:88
Result
Definition: fbtTestBasics.cxx:49
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
columnar::ContainerId::eventInfo
@ eventInfo
Root::TElectronEfficiencyCorrectionTool::addFileName
void addFileName(const std::string &val)
This is more of an utility so the initialize is different wrt to an athena component.
Definition: TElectronEfficiencyCorrectionTool.h:66
xAOD::EventInfo_v1
Class describing the basic event information.
Definition: EventInfo_v1.h:43
PathResolverFindCalibFile
std::string PathResolverFindCalibFile(const std::string &logical_file_name)
Definition: PathResolver.cxx:431
AsgPhotonEfficiencyCorrectionTool::m_corrFileNameUnconv
std::string m_corrFileNameUnconv
Definition: AsgPhotonEfficiencyCorrectionTool.h:112
AsgPhotonEfficiencyCorrectionTool::m_rootTool_con
Root::TElectronEfficiencyCorrectionTool * m_rootTool_con
Definition: AsgPhotonEfficiencyCorrectionTool.h:88
AsgPhotonEfficiencyCorrectionTool::appliedSystematics
const CP::SystematicSet & appliedSystematics() const
returns: the currently applied systematics
Definition: AsgPhotonEfficiencyCorrectionTool.h:70
CP::CorrectionCode::Ok
@ Ok
The correction was done successfully.
Definition: CorrectionCode.h:38
a
TList * a
Definition: liststreamerinfos.cxx:10
AsgPhotonEfficiencyCorrectionTool::m_appliedSystematics
CP::SystematicSet * m_appliedSystematics
Currently applied systematics.
Definition: AsgPhotonEfficiencyCorrectionTool.h:94
h
AsgPhotonEfficiencyCorrectionTool::m_trigger
std::string m_trigger
Trigger name for trigger SF.
Definition: AsgPhotonEfficiencyCorrectionTool.h:127
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
Root::TElectronEfficiencyCorrectionTool::getNbins
int getNbins(std::map< float, std::vector< float >> &ptEta) const
Helpers to get the binning of the uncertainties in a std::map (pt, eta)
Definition: TElectronEfficiencyCorrectionTool.cxx:546
DeMoScan.first
bool first
Definition: DeMoScan.py:536
AthCommonMsg< AlgTool >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
MIN_ET
#define MIN_ET
Definition: AsgPhotonEfficiencyCorrectionTool.cxx:34
CP::CorrectionCode
Return value from object correction CP tools.
Definition: CorrectionCode.h:31
CaloCellTimeCorrFiller.filename
filename
Definition: CaloCellTimeCorrFiller.py:24
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:629
xAOD::Egamma_v1::eta
virtual double eta() const override final
The pseudorapidity ( ) of the particle.
Definition: Egamma_v1.cxx:70
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
merge.status
status
Definition: merge.py:17
AsgPhotonEfficiencyCorrectionTool::m_sysSubstring
std::string m_sysSubstring
Definition: AsgPhotonEfficiencyCorrectionTool.h:97
AsgPhotonEfficiencyCorrectionTool::m_corrFileNameConv
std::string m_corrFileNameConv
The list of input file names.
Definition: AsgPhotonEfficiencyCorrectionTool.h:111
AsgPhotonEfficiencyCorrectionTool::m_removeTRTConversion
bool m_removeTRTConversion
Definition: AsgPhotonEfficiencyCorrectionTool.h:140
SG::DataProxy
Definition: DataProxy.h:45
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
Root::TElectronEfficiencyCorrectionTool::calculate
int calculate(const PATCore::ParticleDataType::DataType dataType, const unsigned int runnumber, const double cluster_eta, const double et, Result &result, const bool onlyTotal=false) const
The main calculate method: dataType PATCore::ParticleDataType::DataType (e.g DATA,...
Definition: TElectronEfficiencyCorrectionTool.cxx:160
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
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