File indexing completed on 2024-09-28 07:03:09
0001 #ifndef MODULEHANDLER_HH
0002 #define MODULEHANDLER_HH
0003
0004 #include <iostream>
0005 #include <vector>
0006
0007 #include "TTree.h"
0008 #include "external/ExRootAnalysis/ExRootTreeReader.h"
0009
0010 #include "Module.h"
0011 #include "CharmJetModule.h"
0012 #include "KaonPIDModule.h"
0013 #include "ElectronPIDModule.h"
0014 #include "MuonPIDModule.h"
0015 #include "TaggingModule.h"
0016 #include "TaggingStudyModule.h"
0017 #include "EventSelectionModule.h"
0018
0019 using namespace std;
0020
0021 class ModuleHandler {
0022 static ModuleHandler *instance;
0023 std::vector<Module*> module_sequence;
0024
0025
0026 ModuleHandler(ExRootTreeReader* data) {
0027 module_sequence = std::vector<Module*>();
0028 _data = data;
0029 }
0030
0031 public:
0032
0033 static ModuleHandler *getInstance(ExRootTreeReader* data) {
0034 if (!instance)
0035 instance = new ModuleHandler(data);
0036 return instance;
0037 }
0038
0039 std::vector<Module*> getModules() {
0040 return this -> module_sequence;
0041 }
0042
0043 void addModule(std::string name) {
0044 Module* module = nullptr;
0045
0046 if (name == "CharmJetModule") {
0047 module = new CharmJetModule(_data);
0048 }
0049 else if (name == "KaonPIDModule") {
0050 module = new KaonPIDModule(_data);
0051 }
0052 else if (name == "ElectronPIDModule") {
0053 module = new ElectronPIDModule(_data);
0054 }
0055 else if (name == "MuonPIDModule") {
0056 module = new MuonPIDModule(_data);
0057 }
0058 else if (name == "TaggingModule") {
0059 module = new TaggingModule(_data);
0060 }
0061 else if (name == "TaggingStudyModule") {
0062 module = new TaggingStudyModule(_data);
0063 }
0064 else if (name == "EventSelectionModule") {
0065 module = new EventSelectionModule(_data);
0066 } else {
0067 std::cout << "ModuleHandler(): The requested module, " << name << ", is unknown to the ModuleHandler!" << std::endl;
0068 assert(1==1);
0069 }
0070
0071 if (module != nullptr)
0072 this -> module_sequence.push_back(module);
0073 }
0074
0075 private:
0076 ExRootTreeReader* _data = nullptr;
0077
0078 };
0079
0080 #endif