ATLAS Offline Software
Classes | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Private Types | Private Member Functions | Private Attributes | Friends | List of all members
CP::BaseFakeBkgTool Class Referenceabstract

#include <BaseFakeBkgTool.h>

Inheritance diagram for CP::BaseFakeBkgTool:
Collaboration diagram for CP::BaseFakeBkgTool:

Classes

struct  UncertaintyList
 List of systematic variations (UID + sigma) to be considered This is implemented as a basic linked list, since unless in very rare cases it should only contain a single entry. More...
 

Public Member Functions

 BaseFakeBkgTool (const std::string &toolname)
 
virtual ~BaseFakeBkgTool ()
 
virtual StatusCode initialize () override
 Dummy implementation of the initialisation function. More...
 
virtual StatusCode addEvent (const xAOD::IParticleContainer &particles, float extraWeight=1.f) override final
 supply list of leptons / global variables, internal counters incremented Does not return anything; event weight(s) must be retrieved by subsequent call(s) to getEventWeight() (for tools inheriting from ILinearFakeBkgTool) More...
 
virtual StatusCode addEvent (const ConstDataVector< xAOD::IParticleContainer > &particles, float extraWeight=1.f) override final
 supply list of leptons / global variables, internal counters incremented Does not return anything; event weight(s) must be retrieved by subsequent call(s) to getEventWeight() (for tools inheriting from ILinearFakeBkgTool) More...
 
virtual StatusCode register1DHistogram (TH1 *h1, const float *val) override
 associates a 1D histogram to the tool, to obtain a binned estimate of the fake lepton background the 'val' argument points to a variable corresponding to the X axis of the histogram and that needs to be updated before each call to addEvent() undefined behaviour if the pointers are invalidated during the tool's lifetime More...
 
virtual StatusCode register2DHistogram (TH2 *h2, const float *xval, const float *yval) override
 associates a 2D histogram to the tool, to obtain a binned estimate of the fake lepton background the 'xval' / 'yval' arguments point to variables corresponding to the X/Y axis of the histogram and that need to be updated before each call to addEvent() undefined behaviour if the pointers are invalidated during the tool's lifetime More...
 
virtual StatusCode register3DHistogram (TH3 *h3, const float *xval, const float *yval, const float *zval) override
 associates a 3D histogram to the tool, to obtain a binned estimate of the fake lepton background More...
 
virtual bool isAffectedBySystematic (const CP::SystematicVariation &systematic) const override
 Declare the interface that this class provides. More...
 
virtual CP::SystematicSet affectingSystematics () const override
 the list of all systematics this tool can be affected by More...
 
virtual CP::SystematicSet recommendedSystematics () const override
 the list of all systematics this tool recommends to use More...
 
virtual StatusCode applySystematicVariation (const CP::SystematicSet &systConfig) override
 effects: configure this tool for the given list of systematic variations. More...
 
virtual CP::SystematicSet affectingSystematicsFor (const std::string &nuisanceParameter) const override
 These functions are slow, don't use them in the tools implementations. More...
 
virtual std::string getUncertaintyDescription (const CP::SystematicVariation &systematic) const override final
 returns a human-readable description of the source of systematic uncertainty specified as argument More...
 
virtual void printUncertaintyDescription (const CP::SystematicVariation &systematic) const override final
 prints a human-readable description of the source of systematic uncertainty specified as argument More...
 
virtual bool isSystematicUncertainty (const CP::SystematicVariation &systematic) const override final
 checks whether the specified source of uncertainty originates from a systematic uncertainty in the efficiencies (as opposed to statistical) More...
 
virtual bool isStatisticalUncertainty (const CP::SystematicVariation &systematic) const override final
 checks whether the specified source of uncertainty originates from a statistical uncertainty in the efficiencies (as opposed to systematic) More...
 
virtual bool affectsElectrons (const CP::SystematicVariation &systematic) const override final
 checks whether the specified source of uncertainty affects electrons More...
 
virtual bool affectsMuons (const CP::SystematicVariation &systematic) const override final
 checks whether the specified source of uncertainty affects muons More...
 
virtual bool affectsTaus (const CP::SystematicVariation &systematic) const override final
 checks whether the specified source of uncertainty affects taus More...
 
virtual bool affectsRealEfficiencies (const CP::SystematicVariation &systematic) const override final
 checks whether the specified source of uncertainty affects real efficiencies More...
 
virtual bool affectsFakeEfficiencies (const CP::SystematicVariation &systematic) const override final
 checks whether the specified source of uncertainty affects fake efficiencies More...
 
virtual bool affectsFakeFactors (const CP::SystematicVariation &systematic) const override final
 checks whether the specified source of uncertainty affects fake factors More...
 
virtual const IFakeBkgSystDescriptorgetSystDescriptor () const override
 retrieves an interface to various helper methods to identify what the different SystematicVariations correspond to More...
 
virtual StatusCode getTotalYield (float &yield, float &statErrorUp, float &statErrorDown)=0
 returns the accumulated fake lepton background yield (or compute it, in the case of the likelihood matrix method), and fills the registered histograms (if any) The 'selection' and 'process' settings used for these operations can be chosen with the 'Selection' and 'Process' properties. More...
 
virtual StatusCode saveProgress (TDirectory *dir)=0
 
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
 

Static Public Member Functions

static constexpr const char * defaultSelection ()
 default value taken by the 'selection' argument of several methods or properties It indicates how the analysis selects leptons in the signal region The syntax supported for this arguments is described in the package documentation. More...
 
static constexpr const char * defaultProcess ()
 default value taken by the 'process' argument of several methods or properties It indicates what should be treated as fake lepton background. More...
 

Protected Member Functions

virtual FakeBkgTools::Client clientForDB ()=0
 This indicates which type of efficiencies/fake factor need to be filled. More...
 
virtual StatusCode addEventCustom ()=0
 
FakeBkgTools::FinalState getCachedFinalState (uint8_t nparticles, const std::string &strPID, const std::string &strProc, bool &success)
 
std::string getListOfEfficienciesAffectedBy (uint16_t uid) const
 
StatusCode CheckHistogramCompatibility (const TH1 *lhs, const TH1 *rhs)
 
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...
 

Protected Attributes

bool m_initialized = false
 
bool m_needEventInfo = true
 
bool m_convertWhenMissing = false
 
std::vector< FakeBkgTools::ParticleDatam_particles
 
std::unique_ptr< FakeBkgTools::Databasem_database
 
float m_externalWeight
 
std::hash< std::string > m_hasher
 comes from Event passed to addEvent() More...
 
std::set< FakeBkgTools::FinalStatem_cachedFinalStates
 
std::map< TH1 *, const float * > m_values_1dhisto_map
 
std::map< TH2 *, std::pair< const float *, const float * > > m_values_2dhisto_map
 
std::map< TH3 *, std::tuple< const float *, const float *, const float * > > m_values_3dhisto_map
 
std::string m_selection = defaultSelection()
 'selection' settings used to compute the total yield / fill histograms More...
 
std::string m_process = defaultProcess()
 'process' settings used to compute the total yield / fill histograms More...
 
std::string m_energyUnit
 property EnergyUnit user can choose between MeV or GeV to indicate the unit of the pT parametrization of efficiencies in the input files More...
 
bool m_useDB = true
 
std::vector< std::string > m_inputFiles
 property InputFiles More...
 
std::string m_tightDecoNameAndType
 property TightDecoration More...
 
CP::ISelectionReadAccessorm_tightAccessor = nullptr
 this can't be a unique_ptr as this can cause issues with the dictionary in some particular circumstances More...
 
std::string m_progressFileName
 property ProgressFileName More...
 
std::string m_progressFileDirectory
 property ProgressFileDirectory More...
 
UncertaintyListm_selectedUncertainties = nullptr
 Pointer to a value of the 'm_systSetDict' map it must be invalidated each time the map is updated in principle only applySystematicVariation() needs to do that. More...
 
std::unordered_map< CP::SystematicSet, UncertaintyListm_systSetDict
 List of uncertainties in internal format, associated with a particular SystematicSet the m_selectedUncertainties pointer must be invalidated each time this map is updated in principle only applySystematicVariation() needs to do that. More...
 
bool m_unlimitedSystematicVariations = true
 used to prevent multiple calls to applySystematicVariation() when unsupported set to true in a particular tool's constructor to disable the possibility of calling applySystematicVariation() more than once / after the first call to addEvent() More...
 
bool m_lockedSystematicVariations = false
 when m_unlimitedSystematicVariations=false, keeps track of prior calls to applySystematicVariation() / addEvent() More...
 
SG::ConstAccessor< float > m_accRealEff
 
SG::ConstAccessor< float > m_accFakeEff
 only used when m_useDB is false More...
 

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

template<class C >
StatusCode addEventImpl (const C &iparticles, float mcWeight)
 only used when m_useDB is false More...
 
bool importEfficiencies (bool resetDB=false)
 load the config file(s) storing efficiencies More...
 
std::pair< uint16_t, float > identifyCpSystematicVariation (const CP::SystematicVariation &systematic) const
 
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

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
 

Friends

struct FakeBkgTools::Efficiency
 

Detailed Description

Definition at line 40 of file BaseFakeBkgTool.h.

Member Typedef Documentation

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ BaseFakeBkgTool()

BaseFakeBkgTool::BaseFakeBkgTool ( const std::string &  toolname)

Definition at line 25 of file BaseFakeBkgTool.cxx.

25  :
27  m_initialized(false),
28  m_database(nullptr),
29  m_energyUnit("MeV"),
30  m_tightDecoNameAndType("Tight,as_char"),
31  m_progressFileName("none"),
33  m_accRealEff("real_eff"),
34  m_accFakeEff("fake_eff")
35 {
36  declareProperty("InputFiles",
38  "list of XML/ROOT files storing the efficiencies [default = {}]. If left empty, the tool "
39  "assumes that efficiencies are provided by the user as decorations (xAOD) or class "
40  "members (standalone) of the lepton objects");
41  declareProperty("Selection",
43  "Selection used to increment total yield / fill histograms [default = \""
44  + m_selection +"\"]");
45  declareProperty("Process",
47  "Process used to increment total yield / fill histograms [default = \""
48  + m_process +"\"]");
49  declareProperty("EnergyUnit",
51  "MeV or GeV -- keep consistent between the input (IParticle decorations/members) "
52  "and the configuration files! [default = \"MeV\"]");
53  declareProperty("ConvertWhenMissing",
55  "set to 'true' to compute fake factors from fake efficiencies if only the latter "
56  "are provided in the config files (and vice-versa) [default = false]");
57  declareProperty("TightDecoration",
59  "Name (and type) of the decoration used to indicate whether leptons pass the 'tight' "
60  "requirements or not [default = \"Tight,as_char\"]");
61  declareProperty("ProgressFileName",
63  "Name of ntuple file with results from a subset of the data");
64  declareProperty("ProgressFileDirectory",
66  "complementary to ProgressFileName, specifies the directory inside the file where the "
67  "results are stored [default = \"\"]");
68 }

◆ ~BaseFakeBkgTool()

BaseFakeBkgTool::~BaseFakeBkgTool ( )
virtual

Definition at line 70 of file BaseFakeBkgTool.cxx.

71 {
72  delete m_tightAccessor;
73 }

Member Function Documentation

◆ addEvent() [1/2]

StatusCode BaseFakeBkgTool::addEvent ( const ConstDataVector< xAOD::IParticleContainer > &  particles,
float  extraWeight = 1.f 
)
finaloverridevirtual

supply list of leptons / global variables, internal counters incremented Does not return anything; event weight(s) must be retrieved by subsequent call(s) to getEventWeight() (for tools inheriting from ILinearFakeBkgTool)

Implements CP::IFakeBkgTool.

Definition at line 243 of file BaseFakeBkgTool.cxx.

244 {
245  return addEventImpl(iparticles, mcWeight);
246 }

◆ addEvent() [2/2]

StatusCode BaseFakeBkgTool::addEvent ( const xAOD::IParticleContainer particles,
float  extraWeight = 1.f 
)
finaloverridevirtual

supply list of leptons / global variables, internal counters incremented Does not return anything; event weight(s) must be retrieved by subsequent call(s) to getEventWeight() (for tools inheriting from ILinearFakeBkgTool)

Implements CP::IFakeBkgTool.

Definition at line 238 of file BaseFakeBkgTool.cxx.

239 {
240  return addEventImpl(iparticles, mcWeight);
241 }

◆ addEventCustom()

virtual StatusCode CP::BaseFakeBkgTool::addEventCustom ( )
protectedpure virtual

◆ addEventImpl()

template<class C >
StatusCode BaseFakeBkgTool::addEventImpl ( const C &  iparticles,
float  mcWeight 
)
private

only used when m_useDB is false

prevent further calls to applySystematicVariation() if not allowed

only retrieved if some of the efficiency parameters are event-level!

for standalone compilation, pp is already a reference and the * operator is redefined to a no-op so that this works

Definition at line 174 of file BaseFakeBkgTool.cxx.

175 {
176  if(!m_initialized)
177  {
178  ATH_MSG_WARNING("the tool hasn't been initialized");
179  return StatusCode::FAILURE;
180  }
181  m_particles.clear();
183 
184  const xAOD::EventInfo* eventInfo = nullptr;
185  if(m_needEventInfo)
186  {
187  #ifdef FAKEBKGTOOLS_ATLAS_ENVIRONMENT
188  ATH_CHECK( evtStore()->retrieve(eventInfo, "EventInfo") );
189  #else
190  eventInfo = &iparticles.eventInfo;
191  #endif
192  }
193 
194  for(const auto& pp : iparticles)
195  {
196  const auto& p = *pp;
197  m_particles.emplace_back();
198  auto& d = m_particles.back();
199  d.tight = m_tightAccessor->getBool(p);
200  d.type = p.type();
201  switch(p.type())
202  {
203  case xAOD::Type::Electron: d.charge = static_cast<const xAOD::Electron&>(p).charge(); break;
204  case xAOD::Type::Muon: d.charge = static_cast<const xAOD::Muon&>(p).charge(); break;
205  case xAOD::Type::Tau: d.charge = static_cast<const xAOD::TauJet&>(p).charge(); break;
206  case xAOD::Type::Photon: d.charge = 0; break;
207  default:
208  ATH_MSG_WARNING("unknown particle type, setting charge to 0");
209  d.charge = 0;
210  }
211  if(m_useDB)
212  {
213  std::string error;
214  if(!m_database->fillEfficiencies(d, p, *eventInfo, error))
215  {
216  ATH_MSG_ERROR("unable to retrieve efficiencies: " << error);
217  return StatusCode::FAILURE;
218  }
219  ATH_MSG_DEBUG("particle has fake fact. = " << d.fake_factor.value(this) <<", fake eff. = " << d.fake_efficiency.value(this) <<", real eff. = " << d.real_efficiency.value(this));
220  }
221  else
222  {
223  d.real_efficiency.nominal = m_accRealEff(p);
224  d.fake_efficiency.nominal = m_accFakeEff(p);
225  }
226  }
227  if(m_particles.size() > maxParticles())
228  {
229  ATH_MSG_WARNING( "the input contains " << m_particles.size() << " particles but the maximum allowed is " << maxParticles()
230  << "; the last " << (m_particles.size()-maxParticles()) << " will be ignored");
231  m_particles.erase(m_particles.begin() + maxParticles(), m_particles.end());
232  }
233  m_externalWeight = mcWeight;
234  ATH_MSG_DEBUG("calling addEventCustom() with #particles = " << m_particles.size());
235  return addEventCustom();
236 }

◆ affectingSystematics()

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

the list of all systematics this tool can be affected by

Implements CP::IReentrantSystematicsTool.

Definition at line 438 of file BaseFakeBkgTool.cxx.

439 {
440  if(!m_initialized || !m_database)
441  {
442  ATH_MSG_ERROR("This function can be called only once the tool has been initialized, since the number of systematic variations depends on the configuration...");
443  throw std::logic_error("BaseFakeBkgTool::affectingSystematics() called before initialization");
444  }
445  CP::SystematicSet affecting;
446  for(int step=0;step<2;++step)
447  {
448  std::string type = step? "STAT" : "SYST";
449  const int imax = step? m_database->numberOfStats() : m_database->numberOfSysts();
450  for(int i=0;i<imax;++i)
451  {
452  std::string name = "FAKEBKG_" + type + "_VAR" + std::to_string(i);
453  affecting.insert(CP::SystematicVariation(name, 1.f));
454  affecting.insert(CP::SystematicVariation(name, -1.f));
455  }
456  }
457  return affecting;
458 }

◆ affectingSystematicsFor()

CP::SystematicSet BaseFakeBkgTool::affectingSystematicsFor ( const std::string &  nuisanceParameter) const
overridevirtual

These functions are slow, don't use them in the tools implementations.

Implements CP::IFakeBkgSystDescriptor.

Definition at line 618 of file BaseFakeBkgTool.cxx.

619 {
620  CP::SystematicSet affecting;
621  if(!m_initialized || !m_database)
622  {
623  ATH_MSG_ERROR("This function can be called only once the tool has been initialized, since the number of systematic variations depends on the configuration...");
624  return {};
625  }
626  bool up=true, down=true;
627  auto pos1=nuisanceParameter.find("__up"), pos2=nuisanceParameter.find("__down");
628  if(pos1!=std::string::npos && pos1+4==nuisanceParameter.length()) down = false;
629  else if(pos2!=std::string::npos && pos2+6==nuisanceParameter.length()) up = false;
630  std::string np = nuisanceParameter.substr(0, std::min(pos1, pos2));
631  for(unsigned i=0;i<m_database->numberOfSysts();++i)
632  {
633  auto syst = m_database->findSyst(m_database->systIndexToUID(i));
634  if(syst && syst->name==np)
635  {
636  std::string name = "FAKEBKG_SYST_VAR" + std::to_string(i);
637  if(up) affecting.insert(CP::SystematicVariation(name, 1.f));
638  if(down) affecting.insert(CP::SystematicVariation(name, -1.f));
639  }
640  }
641  return affecting;
642 }

◆ affectsElectrons()

bool BaseFakeBkgTool::affectsElectrons ( const CP::SystematicVariation systematic) const
finaloverridevirtual

checks whether the specified source of uncertainty affects electrons

Implements CP::IFakeBkgSystDescriptor.

Definition at line 576 of file BaseFakeBkgTool.cxx.

577 {
578  uint16_t UID = identifyCpSystematicVariation(systematic).first;
579  if(UID) return getListOfEfficienciesAffectedBy(UID).find("electron") != std::string::npos;
580  return false;
581 }

◆ affectsFakeEfficiencies()

bool BaseFakeBkgTool::affectsFakeEfficiencies ( const CP::SystematicVariation systematic) const
finaloverridevirtual

checks whether the specified source of uncertainty affects fake efficiencies

Implements CP::IFakeBkgSystDescriptor.

Definition at line 604 of file BaseFakeBkgTool.cxx.

605 {
606  uint16_t UID = identifyCpSystematicVariation(systematic).first;
607  if(UID) return getListOfEfficienciesAffectedBy(UID).find("fake eff") != std::string::npos;
608  return false;
609 }

◆ affectsFakeFactors()

bool BaseFakeBkgTool::affectsFakeFactors ( const CP::SystematicVariation systematic) const
finaloverridevirtual

checks whether the specified source of uncertainty affects fake factors

Implements CP::IFakeBkgSystDescriptor.

Definition at line 611 of file BaseFakeBkgTool.cxx.

612 {
613  uint16_t UID = identifyCpSystematicVariation(systematic).first;
614  if(UID) return getListOfEfficienciesAffectedBy(UID).find("fake factor") != std::string::npos;
615  return false;
616 }

◆ affectsMuons()

bool BaseFakeBkgTool::affectsMuons ( const CP::SystematicVariation systematic) const
finaloverridevirtual

checks whether the specified source of uncertainty affects muons

Implements CP::IFakeBkgSystDescriptor.

Definition at line 583 of file BaseFakeBkgTool.cxx.

584 {
585  uint16_t UID = identifyCpSystematicVariation(systematic).first;
586  if(UID) return getListOfEfficienciesAffectedBy(UID).find("muon") != std::string::npos;
587  return false;
588 }

◆ affectsRealEfficiencies()

bool BaseFakeBkgTool::affectsRealEfficiencies ( const CP::SystematicVariation systematic) const
finaloverridevirtual

checks whether the specified source of uncertainty affects real efficiencies

Implements CP::IFakeBkgSystDescriptor.

Definition at line 597 of file BaseFakeBkgTool.cxx.

598 {
599  uint16_t UID = identifyCpSystematicVariation(systematic).first;
600  if(UID) return getListOfEfficienciesAffectedBy(UID).find("real eff") != std::string::npos;
601  return false;
602 }

◆ affectsTaus()

bool BaseFakeBkgTool::affectsTaus ( const CP::SystematicVariation systematic) const
finaloverridevirtual

checks whether the specified source of uncertainty affects taus

Implements CP::IFakeBkgSystDescriptor.

Definition at line 590 of file BaseFakeBkgTool.cxx.

591 {
592  uint16_t UID = identifyCpSystematicVariation(systematic).first;
593  if(UID) return getListOfEfficienciesAffectedBy(UID).find("tau") != std::string::npos;
594  return false;
595 }

◆ applySystematicVariation()

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

effects: configure this tool for the given list of systematic variations.

any requested systematics that are not affecting this tool will be silently ignored (unless they cause other errors). failures: systematic unknown failures: requesting multiple variations on the same systematic (e.g. up & down) failures: requesting an unsupported variation on an otherwise supported systematic (e.g. a 2 sigma variation and the tool only supports 1 sigma variations) failures: unsupported combination of supported systematic failures: other tool specific errors

prevent further calls to applySystematicVariation() if not allowed

Implements CP::ISystematicsTool.

Definition at line 465 of file BaseFakeBkgTool.cxx.

466 {
467  if(!m_initialized || !m_database)
468  {
469  ATH_MSG_ERROR("This function can be called only once the tool has been initialized");
470  throw std::logic_error("BaseFakeBkgTool::applySystematicVariation() called before initialization");
471  }
473  {
474  ATH_MSG_ERROR("this particular method doesn't support multiple calls to applySystematicVariation(), or after the first call to addEvent(). Please use a separate instance of the tool for each variation.");
475  throw std::logic_error("BaseFakeBkgTool::applySystematicVariation() called at a wrong time");
476  }
478  if(!systConfig.size())
479  {
480  m_selectedUncertainties = nullptr;
481  return StatusCode::SUCCESS;
482  }
483  auto itr = m_systSetDict.find(systConfig);
484  if(itr != m_systSetDict.end())
485  {
486  m_selectedUncertainties = &itr->second;
487  return StatusCode::SUCCESS;
488  }
489  CP::SystematicSet mysys;
491  if(sc != StatusCode::SUCCESS) return sc;
492  std::unique_ptr<UncertaintyList> uncertainties;
493  for(auto& sysvar : mysys)
494  {
495  auto var = identifyCpSystematicVariation(sysvar);
496  if(!var.first)
497  {
498  ATH_MSG_ERROR("The systematic variation " << sysvar.name() << " is not recognized, despite being present in affectingSystematics()...");
499  return StatusCode::FAILURE;
500  }
501  if(!uncertainties) uncertainties.reset(new UncertaintyList(var.first, var.second));
502  else uncertainties->extraVariation(var.first, var.second);
503  }
504  if(uncertainties)
505  {
506  auto emplaced = m_systSetDict.emplace(systConfig, std::move(*uncertainties));
507  m_selectedUncertainties = &emplaced.first->second;
508  }
509  else m_selectedUncertainties = nullptr;
510  return StatusCode::SUCCESS;
511 }

◆ CheckHistogramCompatibility()

StatusCode BaseFakeBkgTool::CheckHistogramCompatibility ( const TH1 *  lhs,
const TH1 *  rhs 
)
protected

Definition at line 359 of file BaseFakeBkgTool.cxx.

360 {
361  std::string error;
362  if(std::string(lhs->GetName()) != rhs->GetName()) error = "names";
363  else if(lhs->GetDimension() != rhs->GetDimension()) error = "dimensions";
364  else if(lhs->GetNbinsX()!=rhs->GetNbinsX() || lhs->GetNbinsY()!=rhs->GetNbinsY() || lhs->GetNbinsZ()!=rhs->GetNbinsZ()) error = "number of bins";
365  else
366  {
367  for(auto getAxis : std::initializer_list<const TAxis*(TH1::*)()const>{&TH1::GetXaxis, &TH1::GetYaxis, &TH1::GetZaxis})
368  {
369  auto lhsAxis=(lhs->*getAxis)(), rhsAxis=(rhs->*getAxis)();
370  for(int i=0;i<=lhsAxis->GetNbins();++i)
371  {
372  auto x=lhsAxis->GetBinUpEdge(i), y=rhsAxis->GetBinUpEdge(i), width=lhsAxis->GetBinWidth(i?i:1);
373  if(std::fabs(x-y) > 0.01*width) error = "bin edges";
374  }
375  }
376  }
377  if(error.length())
378  {
379  ATH_MSG_ERROR("the registered histogram \"" << lhs->GetName() << "\" is not compatible with the one saved in the in-progress ROOT file (mismatching " << error << "). Or, you tried registering two different histograms with the same name.");
380  return StatusCode::FAILURE;
381  }
382  return StatusCode::SUCCESS;
383 }

◆ clientForDB()

Client BaseFakeBkgTool::clientForDB ( )
protectedpure virtual

This indicates which type of efficiencies/fake factor need to be filled.

Implemented in CP::LhoodMM_tools, CP::ApplyFakeFactor, CP::ApplyE2YFakeRate, and CP::AsymptMatrixTool.

Definition at line 75 of file BaseFakeBkgTool.cxx.

76 {
77  return Client::NONE;
78 }

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

◆ defaultProcess()

static constexpr const char* CP::IFakeBkgTool::defaultProcess ( )
inlinestaticconstexprinherited

default value taken by the 'process' argument of several methods or properties It indicates what should be treated as fake lepton background.

The syntax supported for this arguments is described in the package documentation.

Definition at line 38 of file IFakeBkgTool.h.

38 { return ">=1F[T]"; }

◆ defaultSelection()

static constexpr const char* CP::IFakeBkgTool::defaultSelection ( )
inlinestaticconstexprinherited

default value taken by the 'selection' argument of several methods or properties It indicates how the analysis selects leptons in the signal region The syntax supported for this arguments is described in the package documentation.

Definition at line 33 of file IFakeBkgTool.h.

33 { return "0!T"; }

◆ 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

◆ getCachedFinalState()

FinalState BaseFakeBkgTool::getCachedFinalState ( uint8_t  nparticles,
const std::string &  strPID,
const std::string &  strProc,
bool &  success 
)
protected

no longer fill cache if it becomes too large

Definition at line 248 of file BaseFakeBkgTool.cxx.

249 {
250  success = true;
251  size_t hFS = m_hasher(strProc) ^ m_hasher(strPID) ^ nparticles;
252  auto itrFS = m_cachedFinalStates.find(FinalState(hFS));
253  if(itrFS != m_cachedFinalStates.end()) return *itrFS;
254  std::string error;
255  FinalState fs(hFS, nparticles, strPID, strProc, error);
256  if(error.length())
257  {
259  success = false;
260  return FinalState(0);
261  }
262  if(m_cachedFinalStates.size() < 1024)
263  {
264  m_cachedFinalStates.emplace(fs);
265  }
266  return fs;
267 }

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

◆ getListOfEfficienciesAffectedBy()

std::string BaseFakeBkgTool::getListOfEfficienciesAffectedBy ( uint16_t  uid) const
protected

Definition at line 385 of file BaseFakeBkgTool.cxx.

386 {
387  if(!m_initialized || !m_database)
388  {
389  ATH_MSG_ERROR("This function can be called only once the tool has been initialized");
390  return "";
391  }
392  std::bitset<Database::N_EFFICIENCY_TYPES> affects;
393  auto stat = m_database->findStat(uid);
394  if(stat) affects = stat->affects;
395  else
396  {
397  auto syst = m_database->findSyst(uid);
398  if(syst) affects = syst->affects;
399  else
400  {
401  ATH_MSG_ERROR("uncertainty with UID " << std::hex << uid << std::dec << " not found in database");
402  return "";
403  }
404  }
405  std::string info;
406  if(affects[Database::ELECTRON_REAL_EFFICIENCY]) info += "electron real efficiencies, ";
407  if(affects[Database::ELECTRON_FAKE_EFFICIENCY]) info += "electron fake efficiencies, ";
408  if(affects[Database::ELECTRON_FAKE_FACTOR]) info += "electron fake factors, ";
409  if(affects[Database::MUON_REAL_EFFICIENCY]) info += "muon real efficiencies, ";
410  if(affects[Database::MUON_FAKE_EFFICIENCY]) info += "muon fake efficiencies, ";
411  if(affects[Database::MUON_FAKE_FACTOR]) info += "muon fake factors, ";
412  if(affects[Database::PHOTON_ELE_FAKE_FACTOR]) info += "electron->photon fake rate, ";
413  if(affects[Database::PHOTON_ELE_FAKE_FACTOR_SF]) info += "electron->photon fake rate scale factor, ";
414  return info.substr(0, info.size()-2);
415 }

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

◆ getSystDescriptor()

virtual const IFakeBkgSystDescriptor& CP::BaseFakeBkgTool::getSystDescriptor ( ) const
inlineoverridevirtual

retrieves an interface to various helper methods to identify what the different SystematicVariations correspond to

Implements CP::IFakeBkgTool.

Definition at line 74 of file BaseFakeBkgTool.h.

74 {return *this; }

◆ getTotalYield()

virtual StatusCode CP::IFakeBkgTool::getTotalYield ( float &  yield,
float &  statErrorUp,
float &  statErrorDown 
)
pure virtualinherited

returns the accumulated fake lepton background yield (or compute it, in the case of the likelihood matrix method), and fills the registered histograms (if any) The 'selection' and 'process' settings used for these operations can be chosen with the 'Selection' and 'Process' properties.

Only statistical uncertainties can be retrieved; use applySystematicVariation() to obtain uncertainties

Implemented in CP::LhoodMM_tools, and CP::BaseLinearFakeBkgTool.

◆ getUncertaintyDescription()

std::string BaseFakeBkgTool::getUncertaintyDescription ( const CP::SystematicVariation systematic) const
finaloverridevirtual

returns a human-readable description of the source of systematic uncertainty specified as argument

need to add more info (bin index, etc)

Implements CP::IFakeBkgSystDescriptor.

Definition at line 519 of file BaseFakeBkgTool.cxx.

520 {
521  if(!m_initialized || !m_database)
522  {
523  ATH_MSG_ERROR("This function can be called only once the tool has been initialized");
524  return "";
525  }
526 
527  auto UID = identifyCpSystematicVariation(systematic).first;
528  if(!UID)
529  {
530  ATH_MSG_WARNING("Systematic variation " + systematic.name() + " is not recognized by BaseFakeBkgTool");
531  return "";
532  }
533 
534  if(UID == 0)
535  {
536  return "Total statistical uncertainty in the event yield";
537  }
538  std::string info;
539  auto stat = m_database->findStat(UID);
540  if(stat)
541  {
542  info = "Statistical uncertainty affecting ";
544  }
545  else
546  {
547  auto syst = m_database->findSyst(UID);
548  if(syst)
549  {
550  info = "Systematic uncertainty \"" + syst->name + "\" affecting ";
551  }
552  else
553  {
554  ATH_MSG_ERROR("uncertainty with UID " << std::hex << UID << std::dec << " not found in database");
555  return "";
556  }
557  }
559  return info;
560 }

◆ identifyCpSystematicVariation()

std::pair< uint16_t, float > BaseFakeBkgTool::identifyCpSystematicVariation ( const CP::SystematicVariation systematic) const
private

Definition at line 417 of file BaseFakeBkgTool.cxx.

418 {
419  if(!m_initialized || !m_database)
420  {
421  ATH_MSG_ERROR("This function can be called only once the tool has been initialized, since the number of systematic variations depends on the configuration...");
422  throw std::logic_error("BaseFakeBkgTool::identifyCpSystematicVariation() called before initialization");
423  }
424  std::smatch smr;
425  auto bn = systematic.basename();
426  if(!std::regex_match(bn, smr, std::regex("FAKEBKG_(STAT|SYST)_VAR(\\d+)"))) return {{0}, 0.f};
427  unsigned index = std::stol(smr[2].str());
428  float sigma = systematic.parameter();
429  if(smr[1].str() == "SYST") return {m_database->systIndexToUID(index), sigma};
430  else return {m_database->statIndexToUID(index), sigma};
431 }

◆ importEfficiencies()

bool BaseFakeBkgTool::importEfficiencies ( bool  resetDB = false)
private

load the config file(s) storing efficiencies

XML parsing error

ROOT histograms importing error, or unknown error

Definition at line 127 of file BaseFakeBkgTool.cxx.

128 {
129  if(resetDB) m_database->reset();
130  std::string filename;
131  try
132  {
133  for(const auto& fn : m_inputFiles)
134  {
136  auto pos = filename.rfind(".xml");
137  if(pos == filename.length()-4)
138  {
139  m_database->importXML(filename);
140  continue;
141  }
142  pos = filename.rfind(".root");
143  if(pos == filename.length()-5)
144  {
145  m_database->importDefaultROOT(fn);
146  continue;
147  }
148  ATH_MSG_ERROR("File extension not supported for " << filename);
149  return false;
150  }
151  }
152  catch(const Database::XmlError& err)
153  {
154  unsigned line1 = m_database->getXmlLineNumber(err.location.ptr);
155  unsigned line2 = m_database->getXmlLineNumber(err.location.endptr);
156  ATH_MSG_INFO("Exception caught while reading file " << filename << ", details follow");
157  std::string fullmsg = "(while parsing XML, line";
158  if(line2 != line1) fullmsg += "s " + std::to_string(line1) + " - " + std::to_string(line2);
159  else fullmsg += " " + std::to_string(line1);
160  fullmsg += "): " + err.reason;
161  ATH_MSG_ERROR(fullmsg);
162  return false;
163  }
164  catch(const Database::GenericError& err)
165  {
166  ATH_MSG_INFO("Exception caught while reading file " << filename << ", details follow");
167  ATH_MSG_ERROR(err.reason);
168  return false;
169  }
170  return m_database->ready();
171 }

◆ initialize()

StatusCode BaseFakeBkgTool::initialize ( )
overridevirtual

Dummy implementation of the initialisation function.

It's here to allow the dual-use tools to skip defining an initialisation function. Since many are doing so...

Reimplemented from asg::AsgTool.

Reimplemented in CP::BaseLinearFakeBkgTool, CP::LhoodMM_tools, CP::ApplyFakeFactor, CP::ApplyE2YFakeRate, and CP::AsymptMatrixTool.

Definition at line 80 of file BaseFakeBkgTool.cxx.

81 {
82  if(m_initialized)
83  {
84  ATH_MSG_WARNING("the tool has already been initialized successfully");
85  return StatusCode::FAILURE;
86  }
87 
88  m_useDB = m_inputFiles.size();
89 
90 
91  bool useGeV;
92  if(m_energyUnit == "MeV" || m_energyUnit == "MEV") useGeV = false;
93  else if(m_energyUnit == "GeV" || m_energyUnit == "GEV" ) useGeV = true;
94  else
95  {
96  ATH_MSG_ERROR("unrecognized energy unit \"" << m_energyUnit << '"');
97  return StatusCode::FAILURE;
98  }
99 
100  std::unique_ptr<CP::ISelectionReadAccessor> tightAccessor;
102  m_tightAccessor = tightAccessor.release();
103 
104  if(!m_useDB)
105  {
106  ATH_MSG_WARNING("no input file(s) provided with the reference efficiencies, will try reading the efficiencies directly from the IParticle");
107  }
108 
110  {
111  auto db = new Database(clientForDB(), useGeV, m_convertWhenMissing);
112  if(!db) return StatusCode::FAILURE;
113  m_database = std::unique_ptr<Database>(db);
114  if(!importEfficiencies(true)){
115  ATH_MSG_ERROR("importEfficiencies failed!");
116  return StatusCode::FAILURE;
117  }
118  m_needEventInfo = db->needEventInfo();
119  }
120  else m_needEventInfo = false;
121 
122  m_initialized = true;
123 
124  return StatusCode::SUCCESS;
125 }

◆ 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 BaseFakeBkgTool::isAffectedBySystematic ( const CP::SystematicVariation systematic) const
overridevirtual

Declare the interface that this class provides.

returns: whether this tool is affected by the given systematics

Implements CP::ISystematicsTool.

Definition at line 433 of file BaseFakeBkgTool.cxx.

434 {
435  return identifyCpSystematicVariation(systematic).first;
436 }

◆ isStatisticalUncertainty()

bool BaseFakeBkgTool::isStatisticalUncertainty ( const CP::SystematicVariation systematic) const
finaloverridevirtual

checks whether the specified source of uncertainty originates from a statistical uncertainty in the efficiencies (as opposed to systematic)

Implements CP::IFakeBkgSystDescriptor.

Definition at line 569 of file BaseFakeBkgTool.cxx.

570 {
571  uint16_t UID = identifyCpSystematicVariation(systematic).first;
572  if(UID) return Database::isStatUID(UID);
573  return false;
574 }

◆ isSystematicUncertainty()

bool BaseFakeBkgTool::isSystematicUncertainty ( const CP::SystematicVariation systematic) const
finaloverridevirtual

checks whether the specified source of uncertainty originates from a systematic uncertainty in the efficiencies (as opposed to statistical)

Implements CP::IFakeBkgSystDescriptor.

Definition at line 562 of file BaseFakeBkgTool.cxx.

563 {
564  uint16_t UID = identifyCpSystematicVariation(systematic).first;
565  if(UID) return Database::isSystUID(UID);
566  return false;
567 }

◆ 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

◆ printUncertaintyDescription()

void BaseFakeBkgTool::printUncertaintyDescription ( const CP::SystematicVariation systematic) const
finaloverridevirtual

prints a human-readable description of the source of systematic uncertainty specified as argument

Implements CP::IFakeBkgSystDescriptor.

Definition at line 513 of file BaseFakeBkgTool.cxx.

514 {
515  auto info = getUncertaintyDescription(systematic);
516  if(info.length()) ATH_MSG_INFO(info);
517 }

◆ recommendedSystematics()

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

the list of all systematics this tool recommends to use

Implements CP::IReentrantSystematicsTool.

Definition at line 460 of file BaseFakeBkgTool.cxx.

461 {
462  return affectingSystematics();
463 }

◆ register1DHistogram()

StatusCode BaseFakeBkgTool::register1DHistogram ( TH1 *  h1,
const float *  val 
)
overridevirtual

associates a 1D histogram to the tool, to obtain a binned estimate of the fake lepton background the 'val' argument points to a variable corresponding to the X axis of the histogram and that needs to be updated before each call to addEvent() undefined behaviour if the pointers are invalidated during the tool's lifetime

Implements CP::IFakeBkgTool.

Reimplemented in CP::BaseLinearFakeBkgTool, and CP::LhoodMM_tools.

Definition at line 269 of file BaseFakeBkgTool.cxx.

269  {
270 
271  if(!h1)
272  {
273  ATH_MSG_ERROR("invalid histogram pointer");
274  return StatusCode::FAILURE;
275  }
276  const std::string name = h1->GetName();
277  auto itr = m_values_1dhisto_map.begin();
278  const auto enditr = m_values_1dhisto_map.end();
279  for(;itr!=enditr;++itr)
280  {
281  if(itr->first == h1)
282  {
283  ATH_MSG_ERROR("the histogram \"" << name << "\" has already been registered");
284  return StatusCode::FAILURE;
285  }
286  if(name == itr->first->GetName()) break;
287  }
288  if(itr == enditr)
289  {
290  m_values_1dhisto_map.emplace(h1, val);
291  }
292  else
293  {
294  ATH_CHECK( CheckHistogramCompatibility(h1, itr->first) );
295  }
296  return StatusCode::SUCCESS;
297 }

◆ register2DHistogram()

StatusCode BaseFakeBkgTool::register2DHistogram ( TH2 *  h2,
const float *  xval,
const float *  yval 
)
overridevirtual

associates a 2D histogram to the tool, to obtain a binned estimate of the fake lepton background the 'xval' / 'yval' arguments point to variables corresponding to the X/Y axis of the histogram and that need to be updated before each call to addEvent() undefined behaviour if the pointers are invalidated during the tool's lifetime

Implements CP::IFakeBkgTool.

Reimplemented in CP::BaseLinearFakeBkgTool, and CP::LhoodMM_tools.

Definition at line 299 of file BaseFakeBkgTool.cxx.

299  {
300 
301  if(!h2)
302  {
303  ATH_MSG_ERROR("invalid histogram pointer");
304  return StatusCode::FAILURE;
305  }
306  const std::string name = h2->GetName();
307  auto itr = m_values_2dhisto_map.begin();
308  const auto enditr = m_values_2dhisto_map.end();
309  for(;itr!=enditr;++itr)
310  {
311  if(itr->first == h2)
312  {
313  ATH_MSG_ERROR("the histogram \"" << name << "\" has already been registered");
314  return StatusCode::FAILURE;
315  }
316  if(name == itr->first->GetName()) break;
317  }
318  if(itr == enditr)
319  {
320  m_values_2dhisto_map.emplace(h2, std::make_pair(xval, yval));
321  }
322  else
323  {
324  ATH_CHECK( CheckHistogramCompatibility(h2, itr->first) );
325  }
326  return StatusCode::SUCCESS;
327 }

◆ register3DHistogram()

StatusCode BaseFakeBkgTool::register3DHistogram ( TH3 *  h3,
const float *  xval,
const float *  yval,
const float *  zval 
)
overridevirtual

associates a 3D histogram to the tool, to obtain a binned estimate of the fake lepton background

the 'xval' / 'yval' / 'zval' arguments point to variables corresponding to the X/Y/Z axis of the histogram and that need to be updated before each call to addEvent() undefined behaviour if the pointers are invalidated during the tool's lifetime

Implements CP::IFakeBkgTool.

Reimplemented in CP::BaseLinearFakeBkgTool, and CP::LhoodMM_tools.

Definition at line 329 of file BaseFakeBkgTool.cxx.

329  {
330 
331  if(!h3)
332  {
333  ATH_MSG_ERROR("invalid histogram pointer");
334  return StatusCode::FAILURE;
335  }
336  const std::string name = h3->GetName();
337  auto itr = m_values_3dhisto_map.begin();
338  const auto enditr = m_values_3dhisto_map.end();
339  for(;itr!=enditr;++itr)
340  {
341  if(itr->first == h3)
342  {
343  ATH_MSG_ERROR("the histogram \"" << name << "\" has already been registered");
344  return StatusCode::FAILURE;
345  }
346  if(name == itr->first->GetName()) break;
347  }
348  if(itr == enditr)
349  {
350 m_values_3dhisto_map.emplace(h3, std::make_tuple(xval, yval, zval));
351  }
352  else
353  {
354  ATH_CHECK( CheckHistogramCompatibility(h3, itr->first) );
355  }
356  return StatusCode::SUCCESS;
357 }

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

◆ saveProgress()

virtual StatusCode CP::IFakeBkgTool::saveProgress ( TDirectory *  dir)
pure virtualinherited

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

Friends And Related Function Documentation

◆ FakeBkgTools::Efficiency

friend struct FakeBkgTools::Efficiency
friend

Definition at line 187 of file BaseFakeBkgTool.h.

Member Data Documentation

◆ m_accFakeEff

SG::ConstAccessor<float> CP::BaseFakeBkgTool::m_accFakeEff
protected

only used when m_useDB is false

Definition at line 177 of file BaseFakeBkgTool.h.

◆ m_accRealEff

SG::ConstAccessor<float> CP::BaseFakeBkgTool::m_accRealEff
protected

Definition at line 175 of file BaseFakeBkgTool.h.

◆ m_cachedFinalStates

std::set<FakeBkgTools::FinalState> CP::BaseFakeBkgTool::m_cachedFinalStates
protected

Definition at line 99 of file BaseFakeBkgTool.h.

◆ m_convertWhenMissing

bool CP::BaseFakeBkgTool::m_convertWhenMissing = false
protected

Definition at line 80 of file BaseFakeBkgTool.h.

◆ m_database

std::unique_ptr<FakeBkgTools::Database> CP::BaseFakeBkgTool::m_database
protected

Definition at line 91 of file BaseFakeBkgTool.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_energyUnit

std::string CP::BaseFakeBkgTool::m_energyUnit
protected

property EnergyUnit user can choose between MeV or GeV to indicate the unit of the pT parametrization of efficiencies in the input files

Definition at line 122 of file BaseFakeBkgTool.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_externalWeight

float CP::BaseFakeBkgTool::m_externalWeight
protected

Definition at line 95 of file BaseFakeBkgTool.h.

◆ m_hasher

std::hash<std::string> CP::BaseFakeBkgTool::m_hasher
protected

comes from Event passed to addEvent()

Definition at line 97 of file BaseFakeBkgTool.h.

◆ m_initialized

bool CP::BaseFakeBkgTool::m_initialized = false
protected

Definition at line 78 of file BaseFakeBkgTool.h.

◆ m_inputFiles

std::vector<std::string> CP::BaseFakeBkgTool::m_inputFiles
protected

property InputFiles

Definition at line 127 of file BaseFakeBkgTool.h.

◆ m_lockedSystematicVariations

bool CP::BaseFakeBkgTool::m_lockedSystematicVariations = false
protected

when m_unlimitedSystematicVariations=false, keeps track of prior calls to applySystematicVariation() / addEvent()

Definition at line 173 of file BaseFakeBkgTool.h.

◆ m_needEventInfo

bool CP::BaseFakeBkgTool::m_needEventInfo = true
protected

Definition at line 79 of file BaseFakeBkgTool.h.

◆ m_particles

std::vector<FakeBkgTools::ParticleData> CP::BaseFakeBkgTool::m_particles
protected

Definition at line 85 of file BaseFakeBkgTool.h.

◆ m_process

std::string CP::BaseFakeBkgTool::m_process = defaultProcess()
protected

'process' settings used to compute the total yield / fill histograms

Definition at line 118 of file BaseFakeBkgTool.h.

◆ m_progressFileDirectory

std::string CP::BaseFakeBkgTool::m_progressFileDirectory
protected

property ProgressFileDirectory

Definition at line 139 of file BaseFakeBkgTool.h.

◆ m_progressFileName

std::string CP::BaseFakeBkgTool::m_progressFileName
protected

property ProgressFileName

Definition at line 136 of file BaseFakeBkgTool.h.

◆ m_selectedUncertainties

UncertaintyList* CP::BaseFakeBkgTool::m_selectedUncertainties = nullptr
protected

Pointer to a value of the 'm_systSetDict' map it must be invalidated each time the map is updated in principle only applySystematicVariation() needs to do that.


Definition at line 161 of file BaseFakeBkgTool.h.

◆ m_selection

std::string CP::BaseFakeBkgTool::m_selection = defaultSelection()
protected

'selection' settings used to compute the total yield / fill histograms

Definition at line 115 of file BaseFakeBkgTool.h.

◆ m_systSetDict

std::unordered_map<CP::SystematicSet, UncertaintyList> CP::BaseFakeBkgTool::m_systSetDict
protected

List of uncertainties in internal format, associated with a particular SystematicSet the m_selectedUncertainties pointer must be invalidated each time this map is updated in principle only applySystematicVariation() needs to do that.


Definition at line 166 of file BaseFakeBkgTool.h.

◆ m_tightAccessor

CP::ISelectionReadAccessor* CP::BaseFakeBkgTool::m_tightAccessor = nullptr
protected

this can't be a unique_ptr as this can cause issues with the dictionary in some particular circumstances

Definition at line 133 of file BaseFakeBkgTool.h.

◆ m_tightDecoNameAndType

std::string CP::BaseFakeBkgTool::m_tightDecoNameAndType
protected

property TightDecoration

Definition at line 130 of file BaseFakeBkgTool.h.

◆ m_unlimitedSystematicVariations

bool CP::BaseFakeBkgTool::m_unlimitedSystematicVariations = true
protected

used to prevent multiple calls to applySystematicVariation() when unsupported set to true in a particular tool's constructor to disable the possibility of calling applySystematicVariation() more than once / after the first call to addEvent()

Definition at line 170 of file BaseFakeBkgTool.h.

◆ m_useDB

bool CP::BaseFakeBkgTool::m_useDB = true
protected

Definition at line 124 of file BaseFakeBkgTool.h.

◆ m_values_1dhisto_map

std::map<TH1*, const float*> CP::BaseFakeBkgTool::m_values_1dhisto_map
protected

Definition at line 108 of file BaseFakeBkgTool.h.

◆ m_values_2dhisto_map

std::map<TH2*, std::pair<const float*, const float*> > CP::BaseFakeBkgTool::m_values_2dhisto_map
protected

Definition at line 109 of file BaseFakeBkgTool.h.

◆ m_values_3dhisto_map

std::map<TH3*, std::tuple<const float*, const float*, const float*> > CP::BaseFakeBkgTool::m_values_3dhisto_map
protected

Definition at line 110 of file BaseFakeBkgTool.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:
grepfile.info
info
Definition: grepfile.py:38
CP::BaseFakeBkgTool::CheckHistogramCompatibility
StatusCode CheckHistogramCompatibility(const TH1 *lhs, const TH1 *rhs)
Definition: BaseFakeBkgTool.cxx:359
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
NONE
@ NONE
Definition: sTGCenumeration.h:13
python.changerun.bn
bn
Definition: changerun.py:79
CP::BaseFakeBkgTool::getUncertaintyDescription
virtual std::string getUncertaintyDescription(const CP::SystematicVariation &systematic) const override final
returns a human-readable description of the source of systematic uncertainty specified as argument
Definition: BaseFakeBkgTool.cxx:519
beamspotnt.var
var
Definition: bin/beamspotnt.py:1394
pdg_comparison.sigma
sigma
Definition: pdg_comparison.py:324
python.exampleDriverScript.Database
Database
Definition: exampleDriverScript.py:28
xAOD::Electron
Electron_v1 Electron
Definition of the current "egamma version".
Definition: Event/xAOD/xAODEgamma/xAODEgamma/Electron.h:17
StateLessPT_NewConfig.proxy
proxy
Definition: StateLessPT_NewConfig.py:392
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
CP::BaseFakeBkgTool::m_inputFiles
std::vector< std::string > m_inputFiles
property InputFiles
Definition: BaseFakeBkgTool.h:127
CP::SystematicVariation::basename
std::string basename() const
description: the base name, i.e.
Definition: SystematicVariation.cxx:312
CP::BaseFakeBkgTool::m_useDB
bool m_useDB
Definition: BaseFakeBkgTool.h:124
CP::BaseFakeBkgTool::identifyCpSystematicVariation
std::pair< uint16_t, float > identifyCpSystematicVariation(const CP::SystematicVariation &systematic) const
Definition: BaseFakeBkgTool.cxx:417
CP::SystematicSet::size
size_t size() const
returns: size of the set
Definition: SystematicSet.h:71
LArG4FSStartPointFilterLegacy.line1
line1
Definition: LArG4FSStartPointFilterLegacy.py:58
index
Definition: index.py:1
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
hist_file_dump.d
d
Definition: hist_file_dump.py:137
FakeBkgTools::Database::GenericError
This propagates an error message.
Definition: Database.h:136
min
constexpr double min()
Definition: ap_fixedTest.cxx:26
CaloCondBlobAlgs_fillNoiseFromASCII.db
db
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:43
CP::SystematicVariation::name
const std::string & name() const
description: the full systematics name, for use in strings, etc.
Definition: SystematicVariation.cxx:303
CP::BaseFakeBkgTool::m_lockedSystematicVariations
bool m_lockedSystematicVariations
when m_unlimitedSystematicVariations=false, keeps track of prior calls to applySystematicVariation() ...
Definition: BaseFakeBkgTool.h:173
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
CP::BaseFakeBkgTool::m_database
std::unique_ptr< FakeBkgTools::Database > m_database
Definition: BaseFakeBkgTool.h:91
CP::BaseFakeBkgTool::importEfficiencies
bool importEfficiencies(bool resetDB=false)
load the config file(s) storing efficiencies
Definition: BaseFakeBkgTool.cxx:127
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
PlotPulseshapeFromCool.np
np
Definition: PlotPulseshapeFromCool.py:64
read_hist_ntuple.h1
h1
Definition: read_hist_ntuple.py:21
x
#define x
xAOD::Muon_v1
Class describing a Muon.
Definition: Muon_v1.h:38
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
python.iconfTool.models.loaders.level
level
Definition: loaders.py:20
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:29
PrepareReferenceFile.regex
regex
Definition: PrepareReferenceFile.py:43
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::BaseFakeBkgTool::m_tightDecoNameAndType
std::string m_tightDecoNameAndType
property TightDecoration
Definition: BaseFakeBkgTool.h:130
asg::AsgTool::AsgTool
AsgTool(const std::string &name)
Constructor specifying the tool instance's name.
Definition: AsgTool.cxx:58
CP::BaseFakeBkgTool::m_cachedFinalStates
std::set< FakeBkgTools::FinalState > m_cachedFinalStates
Definition: BaseFakeBkgTool.h:99
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
python.getCurrentFolderTag.fn
fn
Definition: getCurrentFolderTag.py:65
AthCommonDataStore
Definition: AthCommonDataStore.h:52
CP::BaseFakeBkgTool::UncertaintyList::extraVariation
void extraVariation(uint16_t extra_UID, float extra_sigma)
Definition: BaseFakeBkgTool.h:148
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
plotting.yearwise_efficiency_vs_mu.xval
float xval
Definition: yearwise_efficiency_vs_mu.py:35
xAOD::uint16_t
setWord1 uint16_t
Definition: eFexEMRoI_v1.cxx:93
dqt_zlumi_pandas.err
err
Definition: dqt_zlumi_pandas.py:182
Monitored::detail::getAxis
constexpr auto getAxis(H *hist)
Helper to get corresponding TAxis selected by Monitored::Axis.
Definition: HistogramFillerUtils.h:40
lumiFormat.i
int i
Definition: lumiFormat.py:85
CP::BaseFakeBkgTool::m_initialized
bool m_initialized
Definition: BaseFakeBkgTool.h:78
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
CP::BaseFakeBkgTool::m_convertWhenMissing
bool m_convertWhenMissing
Definition: BaseFakeBkgTool.h:80
CP::BaseFakeBkgTool::m_accRealEff
SG::ConstAccessor< float > m_accRealEff
Definition: BaseFakeBkgTool.h:175
xAOD::TauJet_v3
Class describing a tau jet.
Definition: TauJet_v3.h:41
CP::BaseFakeBkgTool::m_progressFileDirectory
std::string m_progressFileDirectory
property ProgressFileDirectory
Definition: BaseFakeBkgTool.h:139
FakeBkgTools::Database::XmlError
This propagates an error message + the reference to the faulty piece of XML when an exception is rais...
Definition: Database.h:124
CalibCoolCompareRT.up
up
Definition: CalibCoolCompareRT.py:109
CP::BaseFakeBkgTool::m_systSetDict
std::unordered_map< CP::SystematicSet, UncertaintyList > m_systSetDict
List of uncertainties in internal format, associated with a particular SystematicSet the m_selectedUn...
Definition: BaseFakeBkgTool.h:166
CP::BaseFakeBkgTool::m_hasher
std::hash< std::string > m_hasher
comes from Event passed to addEvent()
Definition: BaseFakeBkgTool.h:97
python.xAODType.dummy
dummy
Definition: xAODType.py:4
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
MSG::name
const std::string & name(Level lvl)
Convenience function for translating message levels to strings.
Definition: MsgLevel.cxx:19
hist_file_dump.f
f
Definition: hist_file_dump.py:135
CP::BaseFakeBkgTool::m_process
std::string m_process
'process' settings used to compute the total yield / fill histograms
Definition: BaseFakeBkgTool.h:118
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
CP::BaseFakeBkgTool::m_unlimitedSystematicVariations
bool m_unlimitedSystematicVariations
used to prevent multiple calls to applySystematicVariation() when unsupported set to true in a partic...
Definition: BaseFakeBkgTool.h:170
imax
int imax(int i, int j)
Definition: TileLaserTimingTool.cxx:33
beamspotman.stat
stat
Definition: beamspotman.py:266
CP::BaseFakeBkgTool::m_values_1dhisto_map
std::map< TH1 *, const float * > m_values_1dhisto_map
Definition: BaseFakeBkgTool.h:108
CP::BaseFakeBkgTool::getListOfEfficienciesAffectedBy
std::string getListOfEfficienciesAffectedBy(uint16_t uid) const
Definition: BaseFakeBkgTool.cxx:385
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
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
CP::BaseFakeBkgTool::m_needEventInfo
bool m_needEventInfo
Definition: BaseFakeBkgTool.h:79
CP::SystematicSet::insert
void insert(const SystematicVariation &systematic)
description: insert a systematic into the set
Definition: SystematicSet.cxx:88
python.hypoToolDisplay.toolname
def toolname(tool)
Definition: hypoToolDisplay.py:13
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
CP::BaseFakeBkgTool::m_tightAccessor
CP::ISelectionReadAccessor * m_tightAccessor
this can't be a unique_ptr as this can cause issues with the dictionary in some particular circumstan...
Definition: BaseFakeBkgTool.h:133
ActsTrk::to_string
std::string to_string(const DetectorType &type)
Definition: GeometryDefs.h:34
charge
double charge(const T &p)
Definition: AtlasPID.h:756
CP::makeSelectionReadAccessor
StatusCode makeSelectionReadAccessor(const std::string &expr, std::unique_ptr< ISelectionReadAccessor > &accessor, bool defaultToChar)
make the ISelectionReadAccessor for the given name
Definition: ISelectionAccessor.cxx:54
FakeBkgTools::maxParticles
constexpr uint8_t maxParticles()
Definition: FakeBkgInternals.h:93
CP::ISelectionReadAccessor::getBool
virtual bool getBool(const SG::AuxElement &element, const CP::SystematicSet *sys=nullptr) const =0
get the selection decoration
CP::BaseFakeBkgTool::m_externalWeight
float m_externalWeight
Definition: BaseFakeBkgTool.h:95
CP::BaseFakeBkgTool::m_particles
std::vector< FakeBkgTools::ParticleData > m_particles
Definition: BaseFakeBkgTool.h:85
plotting.yearwise_efficiency_vs_mu.yval
float yval
Definition: yearwise_efficiency_vs_mu.py:36
xAOD::Electron_v1
Definition: Electron_v1.h:34
CP::BaseFakeBkgTool::m_selectedUncertainties
UncertaintyList * m_selectedUncertainties
Pointer to a value of the 'm_systSetDict' map it must be invalidated each time the map is updated in ...
Definition: BaseFakeBkgTool.h:161
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:18
xAOD::EventInfo_v1
Class describing the basic event information.
Definition: EventInfo_v1.h:43
xAOD::Photon
Photon_v1 Photon
Definition of the current "egamma version".
Definition: Event/xAOD/xAODEgamma/xAODEgamma/Photon.h:17
Muon
struct TBPatternUnitContext Muon
CP::BaseFakeBkgTool::addEventCustom
virtual StatusCode addEventCustom()=0
CP::IFakeBkgTool::defaultSelection
static constexpr const char * defaultSelection()
default value taken by the 'selection' argument of several methods or properties It indicates how the...
Definition: IFakeBkgTool.h:33
FakeBkgTools::FinalState
Definition: FakeBkgInternals.h:98
PathResolverFindDataFile
std::string PathResolverFindDataFile(const std::string &logical_file_name)
Definition: PathResolver.cxx:379
a
TList * a
Definition: liststreamerinfos.cxx:10
y
#define y
h
Base_Fragment.width
width
Definition: Sherpa_i/share/common/Base_Fragment.py:59
python.CaloScaleNoiseConfig.str
str
Definition: CaloScaleNoiseConfig.py:78
CP::BaseFakeBkgTool::clientForDB
virtual FakeBkgTools::Client clientForDB()=0
This indicates which type of efficiencies/fake factor need to be filled.
Definition: BaseFakeBkgTool.cxx:75
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
Pythia8_RapidityOrderMPI.val
val
Definition: Pythia8_RapidityOrderMPI.py:14
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
CP::BaseFakeBkgTool::affectingSystematics
virtual CP::SystematicSet affectingSystematics() const override
the list of all systematics this tool can be affected by
Definition: BaseFakeBkgTool.cxx:438
AthCommonMsg< AlgTool >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
Herwig7_QED_EvtGen_ll.fs
dictionary fs
Definition: Herwig7_QED_EvtGen_ll.py:17
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
CP::BaseFakeBkgTool::m_selection
std::string m_selection
'selection' settings used to compute the total yield / fill histograms
Definition: BaseFakeBkgTool.h:115
LArCellBinning.step
step
Definition: LArCellBinning.py:158
xAODType::Tau
@ Tau
The object is a tau (jet)
Definition: ObjectType.h:49
LArG4FSStartPointFilterLegacy.line2
line2
Definition: LArG4FSStartPointFilterLegacy.py:59
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
CP::BaseFakeBkgTool::m_values_2dhisto_map
std::map< TH2 *, std::pair< const float *, const float * > > m_values_2dhisto_map
Definition: BaseFakeBkgTool.h:109
get_generator_info.error
error
Definition: get_generator_info.py:40
CP::BaseFakeBkgTool::addEventImpl
StatusCode addEventImpl(const C &iparticles, float mcWeight)
only used when m_useDB is false
Definition: BaseFakeBkgTool.cxx:174
CP::IFakeBkgTool::defaultProcess
static constexpr const char * defaultProcess()
default value taken by the 'process' argument of several methods or properties It indicates what shou...
Definition: IFakeBkgTool.h:38
CP::BaseFakeBkgTool::m_energyUnit
std::string m_energyUnit
property EnergyUnit user can choose between MeV or GeV to indicate the unit of the pT parametrization...
Definition: BaseFakeBkgTool.h:122
SG::DataProxy
Definition: DataProxy.h:45
error
Definition: IImpactPoint3dEstimator.h:70
CP::BaseFakeBkgTool::m_values_3dhisto_map
std::map< TH3 *, std::tuple< const float *, const float *, const float * > > m_values_3dhisto_map
Definition: BaseFakeBkgTool.h:110
CP::BaseFakeBkgTool::m_progressFileName
std::string m_progressFileName
property ProgressFileName
Definition: BaseFakeBkgTool.h:136
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
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
CP::BaseFakeBkgTool::m_accFakeEff
SG::ConstAccessor< float > m_accFakeEff
only used when m_useDB is false
Definition: BaseFakeBkgTool.h:177
fitman.k
k
Definition: fitman.py:528
CP::SystematicVariation::parameter
float parameter() const
description: the numeric parameter contained in the subvariation(), or 0 if the subvariation can't be...
Definition: SystematicVariation.cxx:340