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
77
80 public:
81 StatusCode initialize (SysListHandle& sysListHandle, ISysObjectHandleBase& objectHandle);
82 StatusCode initialize (SysListHandle& sysListHandle, ISysObjectHandleBase& objectHandle, SG::AllowEmptyEnum);
84
85
87 public:
89
90
92 public:
93 void set (const SG::AuxElement& object, const T& value,
95
98 public:
99 void lock (const SG::AuxElement& object,
101
102
103
104 //
105 // inherited interface
106 //
107
108 private:
109 virtual CP::SystematicSet
111 virtual StatusCode
113 const CP::SystematicSet& fullAffecting,
114 const std::vector<CP::SystematicSet>& sysList) override;
115
116
117
118 //
119 // private interface
120 //
121
123 private:
125
127 private:
129
131 private:
132 std::unordered_map<CP::SystematicSet,std::tuple<std::string,SG::Decorator<T> > > m_dataCache;
133
135 private:
136 const auto&
137 getData (const CP::SystematicSet& sys) const;
138 };
139
140 template <typename T>
142}
143
145
146#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
a ISysHandleBase for a handle to a specific object/container
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
StatusCode initialize(SysListHandle &sysListHandle, ISysObjectHandleBase &objectHandle)
initialize this handle
ISysObjectHandleBase * m_objectHandle
the object handle we use
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
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
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