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> 
   25namespace fs = std::filesystem;
 
   47  if (numEventsFromArgument != 0
 
   48      && (numEventsFromInput == 0 || numEventsFromArgument < numEventsFromInput))
 
   49    return numEventsFromArgument;
 
   51    return numEventsFromInput;
 
 
   57  if (fileMetaData) 
return fileMetaData->isMC();
 
 
   71    B2WARNING(
"Module '" << module << 
"' requested to handle -o which has already been handled by '" << module << 
"', ignoring");
 
 
  106  const char* envarReleaseDir = getenv(
"BELLE2_RELEASE_DIR");
 
  107  const char* envarLocalDir = getenv(
"BELLE2_LOCAL_DIR");
 
  108  const char* envarAnalysisDir = getenv(
"BELLE2_ANALYSIS_DIR");
 
  109  if (!envarReleaseDir and !envarLocalDir) {
 
  110    B2FATAL(
"The basf2 environment is not set up. Please execute the 'setuprel' script first.");
 
  114  const char* envarSubDir = getenv(
"BELLE2_SUBDIR");
 
  116    B2FATAL(
"The environment variable BELLE2_SUBDIR is not set. Please execute the 'setuprel' script first.");
 
  119  const char* envarExtDir = getenv(
"BELLE2_EXTERNALS_DIR");
 
  121    B2FATAL(
"The environment variable BELLE2_EXTERNALS_DIR is not set. Please execute the 'setuprel' script first.");
 
  125  std::string added_dirs = fs::current_path().string();
 
  128  if (envarAnalysisDir) {
 
  129    const string analysisModules = (fs::path(envarAnalysisDir) / 
"modules" / envarSubDir).
string();
 
  131    added_dirs += 
" " + analysisModules;
 
  135    const string localModules = (fs::path(envarLocalDir) / 
"modules" / envarSubDir).
string();
 
  137    added_dirs += 
" " + localModules;
 
  140  if (envarReleaseDir) {
 
  141    const string centralModules = (fs::path(envarReleaseDir) / 
"modules" / envarSubDir).
string();
 
  143    added_dirs += 
" " + centralModules;
 
  147    B2ERROR(
"No modules found! Did you forget to run 'scons'? Module paths added: " << added_dirs);
 
 
  159  const std::list<ModulePtr>& modules = path->buildModulePathList(
true);
 
  163      std::vector<std::string> inputFiles = m->getFileNames(
false);
 
  164      for (
const string& file : inputFiles) {
 
  169      std::vector<std::string> outputFiles = m->getFileNames(
true);
 
  170      for (
const string& file : outputFiles) {
 
 
This class provides a set of constants for the framework.
@ c_Persistent
Object is available during entire execution time.
Environment()
Set up environment from standard BELLE2_ environment variables.
std::string m_steering
The content of the steering file.
std::vector< std::string > m_entrySequencesOverride
A number sequence (e.g.
int m_numberProcesses
The number of worker processes that should be used for the parallel processing.
std::string consumeOutputFileOverride(const std::string &moduleName)
Return overridden output file name, or "" if none was set.
bool m_noStats
Disable collection of statistics during event processing.
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.
Const::ERunType m_runType
Flag which tells if the run is beam (default: c_Beam) or cosmic (c_Cosmic).
std::string m_outputFileOverride
Override name of output file for output module.
unsigned int m_mcEvents
counter for number of generated events.
std::vector< std::string > m_inputFilesOverride
Override input file names for input modules.
bool m_writeSimSteps
bool for writing out the simulation steps into a csv file.
void setExternalsPath(const std::string &externalsPath)
Sets the path which points to the externals directory of the framework.
unsigned int m_numberEventsOverride
Override number of events in the first run.
std::string m_outputFileOverrideModule
Name of the module which consumed the output file Override if any was given.
bool m_visualizeDataFlow
Whether to generate DOT files with data store inputs/outputs of each module.
int m_experiment
override experiment for EventInfoSetter.
int m_logLevelOverride
Override global log level if != LogConfig::c_Default.
int m_numberProcessesOverride
Override m_numberProcesses if >= 0.
void printJobInformation() const
Print information on input/output files in current steering file, used by –dry-run.
LogConfig::ELogRealm m_realm
The realm in which basf2 is executed.
static Environment & Instance()
Static method to get a reference to the Environment instance.
std::vector< std::string > m_secondaryInputFilesOverride
Override secondary input file names for input modules.
bool m_dryRun
Read steering file, but do not start any actually start any event processing.
unsigned int getNumberEventsOverride() const
Returns number of events in run 1 for EventInfoSetter module, or 0 for no override.
unsigned int m_skipNEvents
override skipNEvents for EventInfoSetter/RootInput.
int m_run
override run for EventInfoSetter.
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.