9 #include <framework/core/Module.h>
10 #include <framework/core/Path.h>
11 #include <framework/core/Environment.h>
12 #include <framework/core/ModuleManager.h>
13 #include <framework/logging/LogConfig.h>
14 #include <framework/core/InputController.h>
15 #include <framework/datastore/StoreObjPtr.h>
16 #include <framework/dataobjects/FileMetaData.h>
25 namespace fs = std::filesystem;
46 unsigned int numEventsFromArgument = getNumberEventsOverride();
47 if (numEventsFromArgument != 0
48 && (numEventsFromInput == 0 || numEventsFromArgument < numEventsFromInput))
49 return numEventsFromArgument;
51 return numEventsFromInput;
57 if (fileMetaData)
return fileMetaData->isMC();
70 if (!m_outputFileOverrideModule.empty()) {
71 B2WARNING(
"Module '" << module <<
"' requested to handle -o which has already been handled by '" << module <<
"', ignoring");
74 if (!m_outputFileOverride.empty()) {
75 m_outputFileOverrideModule = module;
76 std::swap(s, m_outputFileOverride);
88 m_numberEventsOverride(0),
89 m_inputFilesOverride(),
90 m_secondaryInputFilesOverride(),
91 m_entrySequencesOverride(),
92 m_outputFileOverride(
""),
93 m_numberProcessesOverride(-1),
95 m_visualizeDataFlow(false),
104 const char* envarReleaseDir = getenv(
"BELLE2_RELEASE_DIR");
105 const char* envarLocalDir = getenv(
"BELLE2_LOCAL_DIR");
106 const char* envarAnalysisDir = getenv(
"BELLE2_ANALYSIS_DIR");
107 if (!envarReleaseDir and !envarLocalDir) {
108 B2FATAL(
"The basf2 environment is not set up. Please execute the 'setuprel' script first.");
112 const char* envarSubDir = getenv(
"BELLE2_SUBDIR");
114 B2FATAL(
"The environment variable BELLE2_SUBDIR is not set. Please execute the 'setuprel' script first.");
117 const char* envarExtDir = getenv(
"BELLE2_EXTERNALS_DIR");
119 B2FATAL(
"The environment variable BELLE2_EXTERNALS_DIR is not set. Please execute the 'setuprel' script first.");
123 std::string added_dirs = fs::current_path().string();
126 if (envarAnalysisDir) {
127 const string analysisModules = (fs::path(envarAnalysisDir) /
"modules" / envarSubDir).
string();
129 added_dirs +=
" " + analysisModules;
133 const string localModules = (fs::path(envarLocalDir) /
"modules" / envarSubDir).
string();
135 added_dirs +=
" " + localModules;
138 if (envarReleaseDir) {
139 const string centralModules = (fs::path(envarReleaseDir) /
"modules" / envarSubDir).
string();
141 added_dirs +=
" " + centralModules;
145 B2ERROR(
"No modules found! Did you forget to run 'scons'? Module paths added: " << added_dirs);
157 #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
161 const std::list<ModulePtr>& modules = path->buildModulePathList(
true);
165 std::vector<std::string> inputFiles = m->getFileNames(
false);
166 for (
const string& file : inputFiles) {
171 std::vector<std::string> outputFiles = m->getFileNames(
true);
172 for (
const string& file : outputFiles) {
@ c_Persistent
Object is available during entire execution time.
This class stores all environment information required to run the framework, such as module or data f...
Environment()
Set up environment from standard BELLE2_ environment variables.
std::string consumeOutputFileOverride(const std::string &moduleName)
Return overriden output file name, or "" if none was set.
const std::list< std::string > & getModuleSearchPaths() const
Returns a list of file paths searched for module libraries.
unsigned int getNumberOfEvents() const
Return the number of events, from either input or EventInfoSetter, or -n command line override (if le...
bool isMC() const
Do we have generated, not real data?
~Environment()
The Environment destructor.
std::string m_jobInfoOutput
Output for printJobInformation(), generated by setJobInformation().
void setRealm(LogConfig::ELogRealm realm)
Set the basf2 execution realm.
void setJobInformation(const std::shared_ptr< Path > &path)
Set info from path executed by the framework.
void setExternalsPath(const std::string &externalsPath)
Sets the path which points to the externals directory of the framework.
void printJobInformation() const
Print information on input/output files in current steering file, used by –dry-run.
static Environment & Instance()
Static method to get a reference to the Environment instance.
static const char * logRealmToString(ELogRealm realm)
Converts a log realm type to a string.
ELogRealm
Definition of the supported execution realms.
const std::list< std::string > & getModuleSearchPaths() const
Returns a reference to the list of the modules search filepaths.
static ModuleManager & Instance()
Exception is thrown if the requested module could not be created by the ModuleManager.
void addModuleSearchPath(const std::string &path)
Adds a new filepath to the list of filepaths which are searched for a requested module.
@ c_Input
This module is an input module (reads data).
@ c_Output
This module is an output module (writes data).
Type-safe access to single objects in the data store.
std::shared_ptr< Module > ModulePtr
Defines a pointer to a module object as a boost shared pointer.
Abstract base class for different kinds of events.