ATLAS Offline Software
Loading...
Searching...
No Matches
CP::SelectionWriteAccessorSys Class Referencefinal

the SelectionAccesor for reading systematically varied decorations More...

#include <SelectionWriteAccessorSys.h>

Inheritance diagram for CP::SelectionWriteAccessorSys:
Collaboration diagram for CP::SelectionWriteAccessorSys:

Public Member Functions

 SelectionWriteAccessorSys (const std::string &val_selectionName)
virtual void setBits (const SG::AuxElement &element, SelectionType selection, const CP::SystematicSet *sys) const override
 set the selection decoration
virtual void setBool (const SG::AuxElement &element, bool selection, const CP::SystematicSet *sys) const override
 set the selection decoration
virtual std::string label () const override
 get the label of the accessor
virtual StatusCode fillSystematics (const ISystematicsSvc &svc, const CP::SystematicSet &fullAffecting, const std::vector< CP::SystematicSet > &sysList, ISysObjectHandleBase &objectHandle) override
 fill the systematic variations

Private Attributes

std::unordered_map< CP::SystematicSet, std::tuple< std::string, std::unique_ptr< ISelectionWriteAccessor > > > m_dataCache
 the map of accessor we use
std::string m_selectionName
 the selectionName for this accessor

Detailed Description

the SelectionAccesor for reading systematically varied decorations

Definition at line 22 of file SelectionWriteAccessorSys.h.

Constructor & Destructor Documentation

◆ SelectionWriteAccessorSys()

CP::SelectionWriteAccessorSys::SelectionWriteAccessorSys ( const std::string & val_selectionName)

Definition at line 24 of file SelectionWriteAccessorSys.cxx.

26 : m_selectionName (val_selectionName)
27 {}
std::string m_selectionName
the selectionName for this accessor

Member Function Documentation

◆ fillSystematics()

StatusCode CP::SelectionWriteAccessorSys::fillSystematics ( const ISystematicsSvc & svc,
const CP::SystematicSet & fullAffecting,
const std::vector< CP::SystematicSet > & sysList,
ISysObjectHandleBase & objectHandle )
overridevirtual

fill the systematic variations

Implements CP::ISelectionWriteAccessor.

Definition at line 69 of file SelectionWriteAccessorSys.cxx.

74 {
75 using namespace msgSelectionHelpers;
76
77 std::string baseName = m_selectionName;
78 std::string suffix;
79 if (auto split = baseName.find (',');
80 split != std::string::npos)
81 {
82 suffix = baseName.substr (split);
83 baseName.resize (split);
84 }
85
86 for (auto& sys : sysList)
87 {
88 std::string decorName;
89 ANA_CHECK (svc.makeSystematicsName (decorName, baseName, sys));
90 ANA_MSG_DEBUG ("SelectionWriteAccessorSys: " << decorName << " (" << sys.name() << ")");
91 std::unique_ptr<ISelectionWriteAccessor> accessor;
92 ANA_CHECK (makeSelectionWriteAccessor (decorName + suffix, accessor));
93 m_dataCache.emplace (sys, std::make_tuple (decorName, std::move (accessor)));
94 }
95 ANA_CHECK (svc.setDecorSystematics (objectHandle.getNamePattern(), baseName, fullAffecting));
96 ANA_CHECK (objectHandle.addDecorationDependency (svc, baseName, true));
97 return StatusCode::SUCCESS;
98 }
#define ANA_MSG_DEBUG(xmsg)
Macro printing debug messages.
#define ANA_CHECK(EXP)
check whether the given expression was successful
std::unordered_map< CP::SystematicSet, std::tuple< std::string, std::unique_ptr< ISelectionWriteAccessor > > > m_dataCache
the map of accessor we use
std::vector< std::string > split(const std::string &s, const std::string &t=":")
Definition hcg.cxx:177
StatusCode makeSelectionWriteAccessor(const std::string &name, std::unique_ptr< ISelectionWriteAccessor > &accessor, bool defaultToChar)
Produces a simple ISelectionWriteAccessor accessing the given decoration.
AthROOTErrorHandlerSvc * svc
const AccessorWrapper< T > * accessor(xAOD::JetAttribute::AttributeID id)
Returns an attribute accessor corresponding to an AttributeID.

◆ label()

std::string CP::SelectionWriteAccessorSys::label ( ) const
overridevirtual

get the label of the accessor

Implements CP::ISelectionWriteAccessor.

Definition at line 61 of file SelectionWriteAccessorSys.cxx.

63 {
64 return m_selectionName;
65 }

◆ setBits()

void CP::SelectionWriteAccessorSys::setBits ( const SG::AuxElement & element,
SelectionType selection,
const CP::SystematicSet * sys ) const
overridevirtual

set the selection decoration

Implements CP::ISelectionWriteAccessor.

Definition at line 31 of file SelectionWriteAccessorSys.cxx.

35 {
36 if (sys == nullptr)
37 throw std::logic_error ("trying to write systematics accessor without systematic");
38 auto iter = m_dataCache.find (*sys);
39 if (iter == m_dataCache.end())
40 throw std::logic_error ("unknown systematic: " + sys->name());
41 return std::get<1>(iter->second)->setBits (element, selection, sys);
42 }
const std::string selection

◆ setBool()

void CP::SelectionWriteAccessorSys::setBool ( const SG::AuxElement & element,
bool selection,
const CP::SystematicSet * sys ) const
overridevirtual

set the selection decoration

Implements CP::ISelectionWriteAccessor.

Definition at line 46 of file SelectionWriteAccessorSys.cxx.

50 {
51 if (sys == nullptr)
52 throw std::logic_error ("trying to write systematics accessor without systematic");
53 auto iter = m_dataCache.find (*sys);
54 if (iter == m_dataCache.end())
55 throw std::logic_error ("unknown systematic: " + sys->name());
56 return std::get<1>(iter->second)->setBool (element, selection, sys);
57 }

Member Data Documentation

◆ m_dataCache

std::unordered_map<CP::SystematicSet,std::tuple<std::string,std::unique_ptr<ISelectionWriteAccessor> > > CP::SelectionWriteAccessorSys::m_dataCache
private

the map of accessor we use

Definition at line 59 of file SelectionWriteAccessorSys.h.

◆ m_selectionName

std::string CP::SelectionWriteAccessorSys::m_selectionName
private

the selectionName for this accessor

Definition at line 63 of file SelectionWriteAccessorSys.h.


The documentation for this class was generated from the following files: