13 template <
typename BaseClass>
29 return std::unique_ptr<BaseClass>(
func(d,
n).release());
35 auto it =
Map().find(tag);
41 static std::map<std::string, Func_t>&
Map()
44 static auto m =
new std::map<std::string, Func_t>;
51 #define REGISTER_LOADFROM(tag, BASE, DERIVED) \ 52 struct Register##DERIVED##LoadFrom{ \ 53 Register##DERIVED##LoadFrom(){ \ 54 LoadFromRegistry<BASE>::FuncAny_t<DERIVED> lf = DERIVED::LoadFrom; \ 55 LoadFromRegistry<BASE>::Register(tag, lf); \ 57 } gRegister##DERIVED##LoadFrom Cuts and Vars for the 2020 FD DiF Study.
std::function< std::unique_ptr< T >(TDirectory *, const std::string &)> FuncAny_t
Mechanism for derived classes to register their LoadFrom functions.
static Func_t Get(const std::string &tag)
static void Register(const std::string &tag, FuncAny_t< T > func)
FuncAny_t< BaseClass > Func_t
double func(double x, double y)
static std::map< std::string, Func_t > & Map()