ATLAS Offline Software
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/2022_Summer_Prerecom_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 360 of file AsgPhotonEfficiencyCorrectionTool.cxx.

360  {
361  CP::SystematicSet mySysSet;
362 
364  mySysSet.insert(CP::SystematicVariation("PH_EFF_"+m_sysSubstring+"Uncertainty", 1));
365  mySysSet.insert(CP::SystematicVariation("PH_EFF_"+m_sysSubstring+"Uncertainty", -1));
366 
367  return mySysSet;
368 }

◆ 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 338 of file AsgPhotonEfficiencyCorrectionTool.cxx.

338  {
339 
340  double efficiencyScaleFactor = 1.0;
341  CP::CorrectionCode result = getEfficiencyScaleFactor(inputObject, efficiencyScaleFactor);
343  dec(inputObject) = efficiencyScaleFactor;
344  return result;
345 }

◆ applySystematicVariation()

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

Configure this tool for the given systematics.

Implements CP::ISystematicsTool.

Definition at line 390 of file AsgPhotonEfficiencyCorrectionTool.cxx.

392 {
393  // First, check if we already know this systematic configuration
394  auto itr = m_systFilter.find(systConfig);
395 
396  // If it's a new input set, we need to filter it
397  if( itr == m_systFilter.end() ){
398 
399  CP::SystematicSet affectingSys = affectingSystematics();
400  CP::SystematicSet filteredSys;
401  if (!CP::SystematicSet::filterForAffectingSystematics(systConfig, affectingSys, filteredSys)){
402  ATH_MSG_ERROR("Unsupported combination of systematics passed to the tool!");
403  return StatusCode::FAILURE;
404  }
405  // Insert filtered set into the map
406  itr = m_systFilter.insert(std::make_pair(systConfig, filteredSys)).first;
407  }
408 
409  CP::SystematicSet& mySysConf = itr->second;
410  m_appliedSystematics = &mySysConf;
411  return StatusCode::SUCCESS;
412 }

◆ 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 194 of file AsgPhotonEfficiencyCorrectionTool.cxx.

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

◆ 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 304 of file AsgPhotonEfficiencyCorrectionTool.cxx.

304  {
305 
306  Result sfresult;
307  CP::CorrectionCode status = calculate(&inputObject, sfresult);
308 
309  if ( status != CP::CorrectionCode::Ok ) {
310  return status;
311  }
312 
313  if(m_appliedSystematics==nullptr){
314  efficiencyScaleFactor=sfresult.SF;
315  return CP::CorrectionCode::Ok;
316  }
317 
318  //Get the result + the uncertainty
319  float sigma(0);
321  efficiencyScaleFactor=sfresult.SF+sigma*sfresult.Total;
322  return CP::CorrectionCode::Ok;
323 }

◆ 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 325 of file AsgPhotonEfficiencyCorrectionTool.cxx.

325  {
326 
327  Result sfresult;
328  CP::CorrectionCode status = calculate(&inputObject, sfresult);
329 
330  if ( status != CP::CorrectionCode::Ok ) {
331  return status;
332  }
333 
334  efficiencyScaleFactorError=sfresult.Total;
335  return CP::CorrectionCode::Ok;
336 }

◆ getFileName()

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

Definition at line 418 of file AsgPhotonEfficiencyCorrectionTool.cxx.

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

◆ 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 
151  // Check if ForceDataType is set up properly (should be 3 for AtlFast2)
152  if(TString(corrFileNameList[0]).Contains("AFII") && m_dataTypeOverwrite!=3)
153  {
154  ATH_MSG_ERROR("Property ForceDataType is set to "<< m_dataTypeOverwrite << ", while it should be 3 for FastSim");
155  return StatusCode::FAILURE;
156  }
157  if(!TString(corrFileNameList[0]).Contains("AFII") && m_dataTypeOverwrite!=1)
158  {
159  ATH_MSG_ERROR("Property ForceDataType is set to "<< m_dataTypeOverwrite << ", while it should be 1 for FullSim");
160  return StatusCode::FAILURE;
161  }
162 
163  // We need to initialize the underlying ROOT TSelectorTool
164  if ( (0 == m_rootTool_con->initialize()) || (0 == m_rootTool_unc->initialize()) )
165  {
166  ATH_MSG_ERROR("Could not initialize the TElectronEfficiencyCorrectionTool!");
167  return StatusCode::FAILURE;
168  }
169 
170  // get the map of pt/eta bins
171  // let's start with converted
173  std::map<float, std::vector<float>> pteta_bins_unc;
174  // now let's get unconverted
175  m_rootTool_unc->getNbins(pteta_bins_unc);
176  // let's loop the unconverted map and copy over to the common one
177  // in this tool we only ever care about et, so don't care if we overwrite eta information
178  for (const auto& [pt_unc, eta_unc]: pteta_bins_unc) {
179  m_pteta_bins[pt_unc] = eta_unc;
180  }
181 
182  // Add the recommended systematics to the registry
183  if ( registerSystematics() != StatusCode::SUCCESS) {
184  return StatusCode::FAILURE;
185  }
186 
187  return StatusCode::SUCCESS ;
188 }

◆ 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 350 of file AsgPhotonEfficiencyCorrectionTool.cxx.

350  {
351  if(!systematic.empty()){
353  return sys.find(systematic) != sys.end();
354  }
355  return true;
356 }

◆ 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 381 of file AsgPhotonEfficiencyCorrectionTool.cxx.

381  {
382  CP::SystematicSet mySysSet;
383  mySysSet.insert(CP::SystematicVariation("PH_EFF_"+m_sysSubstring+"Uncertainty", 1));
384  mySysSet.insert(CP::SystematicVariation("PH_EFF_"+m_sysSubstring+"Uncertainty", -1));
385 
386  return mySysSet;
387 }

◆ registerSystematics()

StatusCode AsgPhotonEfficiencyCorrectionTool::registerSystematics ( )

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

Definition at line 371 of file AsgPhotonEfficiencyCorrectionTool.cxx.

371  {
373  if (registry.registerSystematics(*this) != StatusCode::SUCCESS) {
374  ATH_MSG_ERROR("Failed to add systematic to list of recommended systematics.");
375  return StatusCode::FAILURE;
376  }
377  return StatusCode::SUCCESS;
378 }

◆ 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:360
get_generator_info.result
result
Definition: get_generator_info.py:21
StateLessPT_NewConfig.proxy
proxy
Definition: StateLessPT_NewConfig.py:392
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:418
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:27
xAOD::CaloCluster_v1::etaBE
float etaBE(const unsigned layer) const
Get the eta in one layer of the EM Calo.
Definition: CaloCluster_v1.cxx:644
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:59
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
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:304
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:194
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:371
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:221
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:623
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:44
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
xAOD::CaloCluster_v1::e
virtual double e() const
The total energy of the particle.
Definition: CaloCluster_v1.cxx:265
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