ATLAS Offline Software
Classes | Namespaces | Macros
IRingerProcedure.h File Reference
#include <vector>
#include <utility>
#include <TDirectory.h>
#include "RingerSelectorTools/tools/VariableDependency.h"
#include "RingerSelectorTools/tools/IRedirectMsgStream.h"
#include <type_traits>
#include "RingerSelectorTools/procedures/Types.h"
Include dependency graph for IRingerProcedure.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  Ringer::IRingerProcedure
 The base interface for all Ringer procedures. More...
 
class  Ringer::RingerProcedureType< procedure_t >
 Check Ringer Procedure type. More...
 
struct  Ringer::RingerProcedureType< procedure_t * >
 RingerProcedureType specialization to ensure that procedure_t is not a pointer. More...
 
class  Ringer::PreProcessing::IPreProcessor
 PreProcessing interface to be inherited by PreProcessing procedures. More...
 
class  Ringer::PreProcessing::IPreProcessorVarDep
 PreProcessor interface to be used by Ringer Wrapper. More...
 
class  Ringer::Discrimination::IDiscriminator
 Discriminator interface to be inherited by discrimination procedures. More...
 
class  Ringer::Discrimination::IDiscriminatorVarDep
 Discriminator interface to be used by Ringer Wrapper. More...
 
class  Ringer::Discrimination::IThreshold
 Threshold interface to be inherited by thresholding procedures. More...
 
class  Ringer::Discrimination::IThresholdVarDep
 Threshold interface to be used by Ringer Wrapper. More...
 

Namespaces

 Ringer
 Namespace dedicated for Ringer utilities.
 
 Ringer::PreProcessing
 Namespace dedicated for Ringer pre-processing utilities.
 
 Ringer::Discrimination
 Namespace dedicated for Ringer Discrimination utilities.
 

Macros

#define INCLUDE_HEADER_ONLY
 
#define RINGER_PROCEDURE_BASE_METHODS(self)
 Define ringer interface default methods. More...
 
#define RINGER_DEFINE_INTERFACE_DEFAULT_METHODS(self)
 Define Ringer interface procedure type methods. More...
 
#define __RINGER_DEFINE_PROCEDURE_STANDARD_METHODS__(self)
 
#define RINGER_DEFINE_PROCEDURE(self)
 Use this macro when procedure has member properties. More...
 
#define RINGER_DEFINE_NOMEMBER_PROCEDURE(self)
 Use this macro when procedure hasn't member properties. More...
 
#define RINGER_DEFINE_PROCEDURE_DEFAULT_METHODS(self)
 This macro should be defined for every Ringer Procedure defined after the class is defined, within same scope and translation unit where it is defined. More...
 

Macro Definition Documentation

◆ __RINGER_DEFINE_PROCEDURE_STANDARD_METHODS__

#define __RINGER_DEFINE_PROCEDURE_STANDARD_METHODS__ (   self)
Value:
\
virtual std::string name() const \
override; \
template <typename T = const char*> \
static T procType(); \
\

Definition at line 70 of file IRingerProcedure.h.

◆ INCLUDE_HEADER_ONLY

#define INCLUDE_HEADER_ONLY

Definition at line 23 of file IRingerProcedure.h.

◆ RINGER_DEFINE_INTERFACE_DEFAULT_METHODS

#define RINGER_DEFINE_INTERFACE_DEFAULT_METHODS (   self)
Value:
\
template<> \
inline \
const char* self::procType() \
{ \
return #self; \
} \
\
template<> \
inline \
Ringer::RingerProcedureType<self>::procEnum_t self::procType() \
{ \
}

Define Ringer interface procedure type methods.

Definition at line 53 of file IRingerProcedure.h.

◆ RINGER_DEFINE_NOMEMBER_PROCEDURE

#define RINGER_DEFINE_NOMEMBER_PROCEDURE (   self)
Value:
\
public: \
__RINGER_DEFINE_PROCEDURE_STANDARD_METHODS__(self) \
\
virtual void print(MSG::Level lvl) const \
override \
{ \
if ( !this->isStreamAvailable() ) { \
std::cerr << "Cannot print " << this->name() << ", stream unavailable" \
<< std::endl; \
} \
if ( this->level() > lvl ) { \
return; \
} \
ATH_MSG_LVL(lvl, "Procedure hasn't any property."); \
}

Use this macro when procedure hasn't member properties.

Definition at line 92 of file IRingerProcedure.h.

◆ RINGER_DEFINE_PROCEDURE

#define RINGER_DEFINE_PROCEDURE (   self)
Value:
\
public: \
__RINGER_DEFINE_PROCEDURE_STANDARD_METHODS__(self) \
\
virtual void print(MSG::Level lvl) const \
override;

Use this macro when procedure has member properties.

Definition at line 81 of file IRingerProcedure.h.

◆ RINGER_DEFINE_PROCEDURE_DEFAULT_METHODS

#define RINGER_DEFINE_PROCEDURE_DEFAULT_METHODS (   self)
Value:
\
RINGER_DEFINE_INTERFACE_DEFAULT_METHODS(self) \
\
inline \
std::string self::name() const \
{ \
return this->procType<const char*>(); \
}

This macro should be defined for every Ringer Procedure defined after the class is defined, within same scope and translation unit where it is defined.

You will have to define the procedure print method yourself.

Definition at line 118 of file IRingerProcedure.h.

◆ RINGER_PROCEDURE_BASE_METHODS

#define RINGER_PROCEDURE_BASE_METHODS (   self)
Value:
\
public: \
\
template <typename T = const char*> \
static T procType(); \
\
virtual std::string name() const = 0; \
\
virtual void print(MSG::Level lvl) const = 0;

Define ringer interface default methods.

It defines static template member type, that can be used to retrieve procedure type as an enumeration type. In order for this to work, make sure to add the enumeration value on Types.h file and add it properly to the conversion string<->enumeration function in the Types.cxx file.

Beware that it changes scope inside class to public.

Definition at line 39 of file IRingerProcedure.h.

taskman.template
dictionary template
Definition: taskman.py:317
Ringer::RingerProcedureType::procEnum_t
std::conditional< is_pre_processor, preProcEnum_t, typename std::conditional< is_discriminator, discrEnum_t, thresEnum_t >::type >::type procEnum_t
Definition: IRingerProcedure.h:204
const
bool const RAWDATA *ch2 const
Definition: LArRodBlockPhysicsV0.cxx:562
runSelector.procType
procType
Definition: runSelector.py:235
python.iconfTool.models.loaders.level
level
Definition: loaders.py:20
TrigConf::MSGTC::Level
Level
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStream.h:21
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
python.Dumpers.typename
def typename(t)
Definition: Dumpers.py:194
Muon::print
std::string print(const MuPatSegment &)
Definition: MuonTrackSteering.cxx:28
Ringer::getType
T getType(const char *cStr)
Return Ringer enumeration of type T identifying string type:
TSU::T
unsigned long long T
Definition: L1TopoDataTypes.h:35