ATLAS Offline Software
SysWriteSelectionHandle.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
7 
8 //
9 // includes
10 //
11 
13 
18 
19 //
20 // method implementations
21 //
22 
23 namespace CP
24 {
25  SysWriteSelectionHandle ::
26  operator bool () const noexcept
27  {
28  return !m_selection.empty();
29  }
30 
31 
32 
34  initialize (SysListHandle& sysListHandle, const ISysHandleBase& objectHandle)
35  {
36  if (m_selection.empty())
37  {
38  ANA_MSG_ERROR ("trying to initialize empty handle");
39  return StatusCode::FAILURE;
40  }
41  if (m_objectHandle != nullptr)
42  {
43  ANA_MSG_ERROR ("trying to initialize handle twice");
44  return StatusCode::FAILURE;
45  }
46  m_objectHandle = &objectHandle;
48  return sysListHandle.addHandle (*this);
49  }
50 
51 
52 
54  initialize (SysListHandle& sysListHandle, const ISysHandleBase& objectHandle, SG::AllowEmptyEnum)
55  {
56  if (!empty())
57  return initialize (sysListHandle, objectHandle);
58  else
59  {
60  m_accessor = std::make_unique<SelectionWriteAccessorNull>();
61  return StatusCode::SUCCESS;
62  }
63  }
64 
65 
66 
68  empty () const noexcept
69  {
70  return m_selection.empty();
71  }
72 
73 
74 
76  getLabel () const
77  {
78  return m_accessor->label();
79  }
80 
81 
82 
83  const std::string& SysWriteSelectionHandle ::
84  getSelection () const
85  {
86  return m_selection;
87  }
88 
89 
90 
92  getNamePattern () const
93  {
94  // So far it is undefined what to return here. I'll fill this in
95  // once there is a reason for it to be one or the other.
96  return "";
97  }
98 
99 
100 
102  getInputAffecting (const ISystematicsSvc& /*svc*/) const
103  {
104  return CP::SystematicSet ();
105  }
106 
107 
108 
111  const CP::SystematicSet& fullAffecting,
112  const std::vector<CP::SystematicSet>& sysList)
113  {
114  ANA_CHECK (m_accessor->fillSystematics (svc, fullAffecting, sysList, m_objectHandle->getNamePattern()));
115  return StatusCode::SUCCESS;
116  }
117 }
CP::SysWriteSelectionHandle::getNamePattern
virtual std::string getNamePattern() const override
get the name pattern before substitution
Definition: SysWriteSelectionHandle.cxx:92
CP::SysListHandle::addHandle
StatusCode addHandle(ISysHandleBase &handle)
register an input handle we are using
Definition: SysListHandle.cxx:29
CP::SysListHandle
a class managing the property to configure the list of systematics to process
Definition: SysListHandle.h:33
CP::ISystematicsSvc
the interface for the central systematics service
Definition: ISystematicsSvc.h:25
CP::SysWriteSelectionHandle::getSelection
const std::string & getSelection() const
get the actual selection string
Definition: SysWriteSelectionHandle.cxx:84
SysListHandle.h
SysWriteSelectionHandle.h
CP::SystematicSet
Class to wrap a set of SystematicVariations.
Definition: SystematicSet.h:31
ANA_MSG_ERROR
#define ANA_MSG_ERROR(xmsg)
Macro printing error messages.
Definition: Control/AthToolSupport/AsgMessaging/AsgMessaging/MessageCheck.h:294
CP::makeSelectionWriteAccessor
StatusCode makeSelectionWriteAccessor(const std::string &name, std::unique_ptr< ISelectionWriteAccessor > &accessor, bool defaultToChar)
Produces a simple ISelectionWriteAccessor accessing the given decoration.
Definition: ISelectionAccessor.cxx:170
ANA_CHECK
#define ANA_CHECK(EXP)
check whether the given expression was successful
Definition: Control/AthToolSupport/AsgMessaging/AsgMessaging/MessageCheck.h:324
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:562
CP
Select isolated Photons, Electrons and Muons.
Definition: Control/xAODRootAccess/xAODRootAccess/TEvent.h:48
SelectionWriteAccessorNull.h
CP::SysWriteSelectionHandle::getLabel
std::string getLabel() const
get the name/label of the decoration
Definition: SysWriteSelectionHandle.cxx:76
SG::AllowEmptyEnum
AllowEmptyEnum
Definition: StoreGate/StoreGate/VarHandleKey.h:29
CP::SysWriteSelectionHandle::empty
virtual bool empty() const noexcept override
Definition: SysWriteSelectionHandle.cxx:68
CP::ISysHandleBase
a basic interface for all systematics handles
Definition: ISysHandleBase.h:28
CP::SysWriteSelectionHandle::m_objectHandle
const ISysHandleBase * m_objectHandle
the object handle we use
Definition: SysWriteSelectionHandle.h:103
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
CP::SysWriteSelectionHandle::m_selection
std::string m_selection
the selection we use
Definition: SysWriteSelectionHandle.h:99
MessageCheck.h
macros for messaging and checking status codes
Handler::svc
AthROOTErrorHandlerSvc * svc
Definition: AthROOTErrorHandlerSvc.cxx:10
StatusCode.h
CP::SysWriteSelectionHandle::fillSystematics
virtual StatusCode fillSystematics(const ISystematicsSvc &svc, const CP::SystematicSet &fullAffecting, const std::vector< CP::SystematicSet > &sysList) override
register and cache the systematics
Definition: SysWriteSelectionHandle.cxx:110
CP::SysWriteSelectionHandle::getInputAffecting
virtual CP::SystematicSet getInputAffecting(const ISystematicsSvc &svc) const override
get the affecting systematics if this is an input handle
Definition: SysWriteSelectionHandle.cxx:102
CP::SysWriteSelectionHandle::m_accessor
std::unique_ptr< ISelectionWriteAccessor > m_accessor
the accessor we use
Definition: SysWriteSelectionHandle.h:107
CP::ISysHandleBase::getNamePattern
virtual std::string getNamePattern() const =0
get the name pattern before substitution
xAOD::bool
setBGCode setTAP setLVL2ErrorBits bool
Definition: TrigDecision_v1.cxx:60
CP::SysWriteSelectionHandle::initialize
StatusCode initialize(SysListHandle &sysListHandle, const ISysHandleBase &objectHandle)
initialize the accessor
Definition: SysWriteSelectionHandle.cxx:34