ATLAS Offline Software
Loading...
Searching...
No Matches
SysWriteDecorHandle.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
6
7
8#ifndef SYSTEMATICS_HANDLES__SYS_WRITE_DECOR_HANDLE_H
9#define SYSTEMATICS_HANDLES__SYS_WRITE_DECOR_HANDLE_H
10
19#include <string>
20#include <type_traits>
21#include <unordered_map>
22
23class StatusCode;
24
25namespace CP
26{
27 class SystematicSet;
28
31 constexpr float invalidScaleFactor () {return -1;}
32
35 constexpr float invalidEfficiency () {return -1;}
36
37
39
40 template<typename T> class SysWriteDecorHandle final
42 {
43 //
44 // public interface
45 //
46
59 public:
60 template<typename T2>
61 SysWriteDecorHandle (T2 *owner, const std::string& propertyName,
62 const std::string& propertyValue,
63 const std::string& propertyDescription);
64
66 template<typename T2>
67 SysWriteDecorHandle (const std::string& decorName, T2 *owner);
68
70 public:
71 virtual bool empty () const noexcept override;
72
74 public:
75 explicit operator bool () const noexcept;
76
81 private:
82 virtual std::string getNamePattern () const override;
83
84
87 public:
88 StatusCode initialize (SysListHandle& sysListHandle, const ISysHandleBase& objectHandle);
89 StatusCode initialize (SysListHandle& sysListHandle, const ISysHandleBase& objectHandle, SG::AllowEmptyEnum);
91
92
94 public:
96
97
99 public:
100 void set (const SG::AuxElement& object, const T& value,
102
105 public:
106 void lock (const SG::AuxElement& object,
108
109
110
111 //
112 // inherited interface
113 //
114
115 private:
116 virtual CP::SystematicSet
118 virtual StatusCode
120 const CP::SystematicSet& fullAffecting,
121 const std::vector<CP::SystematicSet>& sysList) override;
122
123
124
125 //
126 // private interface
127 //
128
130 private:
132
134 private:
136
138 private:
139 std::unordered_map<CP::SystematicSet,std::tuple<std::string,SG::Decorator<T> > > m_dataCache;
140
142 private:
143 const auto&
144 getData (const CP::SystematicSet& sys) const;
145 };
146
147 template <typename T>
149}
150
152
153#endif
A property holding a SG store/key/clid from which a VarHandle is made.
Base class for elements of a container that can have aux data.
a basic interface for all systematics handles
the interface for the central systematics service
Vector-like class for systematic handles which interact with decorations.
a class managing the property to configure the list of systematics to process
virtual std::string getNamePattern() const override
get the name pattern before substitution
void lock(const SG::AuxElement &object, const CP::SystematicSet &sys) const
lock the object decoration for the given systematic You should call this after all set() calls for a ...
virtual StatusCode fillSystematics(const ISystematicsSvc &svc, const CP::SystematicSet &fullAffecting, const std::vector< CP::SystematicSet > &sysList) override
register and cache the systematics
std::unordered_map< CP::SystematicSet, std::tuple< std::string, SG::Decorator< T > > > m_dataCache
the cache of names we use
const auto & getData(const CP::SystematicSet &sys) const
get the data for the given systematics
const std::string & getName(const CP::SystematicSet &sys) const
get the name we retrieve from the event store
virtual bool empty() const noexcept override
whether we have a name configured
SysWriteDecorHandle(T2 *owner, const std::string &propertyName, const std::string &propertyValue, const std::string &propertyDescription)
Standard constructor.
SysWriteDecorHandle(const std::string &decorName, T2 *owner)
Construct the handle directly without declaring a property.
void set(const SG::AuxElement &object, const T &value, const CP::SystematicSet &sys) const
set the object decoration for the given systematic
StatusCode initialize(SysListHandle &sysListHandle, const ISysHandleBase &objectHandle)
initialize this handle
std::string m_decorName
the input name we use
virtual CP::SystematicSet getInputAffecting(const ISystematicsSvc &svc) const override
get the affecting systematics if this is an input handle
const ISysHandleBase * m_objectHandle
the object handle we use
Class to wrap a set of SystematicVariations.
base class to forward messages to another class
Select isolated Photons, Electrons and Muons.
SysHandleArray< SysWriteDecorHandle< T > > SysWriteDecorHandleArray
constexpr float invalidEfficiency()
the decoration value to use if there is no valid efficiency decoration
constexpr float invalidScaleFactor()
the decoration value to use if there is no valid scale factor decoration
Forward declaration.
STL namespace.
#define private