00001 #ifndef PhysicsTools_MVATrainer_HelperMacros_h
00002 #define PhysicsTools_MVATrainer_HelperMacros_h
00003
00004 #include "FWCore/Framework/interface/MakerMacros.h"
00005 #include "FWCore/Framework/interface/LooperFactory.h"
00006 #include "PhysicsTools/MVATrainer/interface/MVATrainerSaveImpl.h"
00007 #include "PhysicsTools/MVATrainer/interface/MVATrainerFileSaveImpl.h"
00008 #include "PhysicsTools/MVATrainer/interface/MVATrainerLooperImpl.h"
00009
00010 #define MVA_COMPUTER_SAVE_IMPLEMENT(T, P) \
00011 namespace { namespace mva11 { \
00012 typedef ::PhysicsTools::MVATrainerSaveImpl<T> P; \
00013 DEFINE_ANOTHER_FWK_MODULE(P); \
00014 }} typedef int mvaDummyTypedef11 ## T
00015
00016 #define MVA_COMPUTER_CONTAINER_SAVE_IMPLEMENT(T, P) \
00017 namespace { namespace mva12 { \
00018 typedef ::PhysicsTools::MVATrainerContainerSaveImpl<T> P; \
00019 DEFINE_ANOTHER_FWK_MODULE(P); \
00020 }} typedef int mvaDummyTypedef12 ## T
00021
00022 #define MVA_COMPUTER_FILE_SAVE_IMPLEMENT(T, P) \
00023 namespace { namespace mva13 { \
00024 typedef ::PhysicsTools::MVATrainerFileSaveImpl<T> P; \
00025 DEFINE_ANOTHER_FWK_MODULE(P); \
00026 }} typedef int mvaDummyTypedef13 ## T
00027
00028 #define MVA_TRAINER_LOOPER_IMPLEMENT(T, P) \
00029 namespace { namespace mva14 { \
00030 typedef ::PhysicsTools::MVATrainerLooperImpl<T> P; \
00031 DEFINE_FWK_LOOPER(P); \
00032 }} typedef int mvaDummyTypedef14 ## T
00033
00034 #define MVA_TRAINER_CONTAINER_LOOPER_IMPLEMENT(T, P) \
00035 namespace { namespace mva15 { \
00036 typedef ::PhysicsTools::MVATrainerContainerLooperImpl<T> P; \
00037 DEFINE_FWK_LOOPER(P); \
00038 }} typedef int mvaDummyTypedef15 ## T
00039
00040 #define MVA_TRAINER_IMPLEMENT(N) \
00041 MVA_COMPUTER_CONTAINER_SAVE_IMPLEMENT(N ## Rcd, N ## ContainerSaveCondDB); \
00042 MVA_COMPUTER_FILE_SAVE_IMPLEMENT(N ## Rcd, N ## SaveFile); \
00043 MVA_TRAINER_CONTAINER_LOOPER_IMPLEMENT(N ## Rcd, N ## TrainerLooper)
00044
00045
00046
00047 #endif // PhysicsTools_MVATrainer_HelperMacros_h