9#ifndef INDETSECVTXTRACKSELECTIONTOOL_INDETTRACKCUT_H
10#define INDETSECVTXTRACKSELECTIONTOOL_INDETTRACKCUT_H
33 operator bool()
const {
return this->
result();}
36 template <
class AccessorType>
37 StatusCode
getAccessor(
const std::string& name, std::shared_ptr<AccessorType>& accessor);
40 std::unordered_map< std::string, std::shared_ptr<SecVtxTrackAccessor> >*
m_trackAccessors;
50 virtual bool result()
const;
62 virtual bool result()
const;
64 std::function<bool(
const std::array<uint8_t,N>&)>
m_func;
71template <
class AccessorType>
73 std::shared_ptr<AccessorType>& accessor)
78 std::unordered_map< std::string, std::shared_ptr<SecVtxTrackAccessor> >
::const_iterator it =
80 [&] (std::pair< std::string, std::shared_ptr<SecVtxTrackAccessor> > acc)
81 {return acc.first == accessorName;} );
85 ATH_MSG_ERROR(
"Must initialize SecVtxTrackCut with pointer to the selection tool before adding accessors." );
86 return StatusCode::FAILURE;
89 (*m_trackAccessors)[accessorName] = accessor;
92 accessor = std::dynamic_pointer_cast<AccessorType>(it->second);
93 if (accessor==
nullptr) {
94 ATH_MSG_ERROR(
"Logic error: could not cast accessor to type " <<
typeid(AccessorType).name() );
95 return StatusCode::FAILURE;
102 " accessor. Pointer to accessor is to type " <<
103 typeid(AccessorType).name() <<
". Is this correct?" );
104 return StatusCode::FAILURE;
106 return StatusCode::SUCCESS;
virtual StatusCode initialize()
void setMinValue(Double_t min)
virtual bool result() const
std::shared_ptr< svParamAccessor< 0 > > m_paramAccessor
D0minCut(InDetSecVtxTrackSelectionTool *, Double_t min=-99.)
std::function< bool(const std::array< uint8_t, N > &)> m_func
FuncSummaryValueCut(InDetSecVtxTrackSelectionTool *, const std::array< xAOD::SummaryType, N > &&)
virtual bool result() const
virtual StatusCode initialize()
std::array< xAOD::SummaryType, N > m_summaryTypes
void setFunction(std::function< bool(const std::array< uint8_t, N > &)> func)
std::array< std::shared_ptr< SummaryAccessor >, N > m_summaryAccessors
SecVtxTrackCut(InDetSecVtxTrackSelectionTool *)
std::unordered_map< std::string, std::shared_ptr< SecVtxTrackAccessor > > * m_trackAccessors
StatusCode getAccessor(const std::string &name, std::shared_ptr< AccessorType > &accessor)
virtual ~SecVtxTrackCut()=0
InDetSecVtxTrackSelectionTool * m_selectionTool
virtual StatusCode initialize()
virtual bool result() const =0
Class mimicking the AthMessaging class from the offline software.