Back to home page

EIC code displayed by LXR

 
 

    


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   // Private constructor so that no objects can be created.
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