30#include <TCollection.h>
31#include <TGeoManager.h>
33#include <TObjString.h>
56 , fIons(new TObjArray())
57 , fParticles(new TObjArray())
58 , ListOfModules(new TObjArray())
61 , fLoaderName(new TString(
"TGeo"))
62 , fPythiaDecayer(kFALSE)
63 , fPythiaDecayerConfig(
"")
65 , fUserDecayConfig(
"")
69 , fMeshList(new TObjArray())
71 , fUserCuts(
"SetCuts.C")
73 , fImportTGeoToVMC(kTRUE)
74 , fSimulationConfig(nullptr)
78 Fatal(
"FairRun",
"Singleton instance already exists.");
88 LOG(
debug) <<
"Enter Destructor of FairRunSim ";
96 LOG(
debug) <<
"Start deleting all registered modules";
99 LOG(
debug) <<
"Finish deleting all registered modules";
148 LOG(info) <<
"============== FairRunSim: Initialising simulation run ==============";
188 LOG(info) <<
"Create visualisation manager ";
212void FairRunSim::CheckFlukaExec()
215 TString work = getenv(
"VMCWORKDIR");
216 TString work_config = work +
"/gconfig/";
217 work_config.ReplaceAll(
"//",
"/");
219 TString config_dir = getenv(
"CONFIG_DIR");
220 config_dir.ReplaceAll(
"//",
"/");
221 if (!config_dir.EndsWith(
"/")) {
226 if (strcmp(GetName(),
"TFluka") == 0) {
227 TString flexec =
"run_fluka.sh";
228 if (TString(gSystem->FindFile(config_dir.Data(), flexec)) != TString(
"")) {
229 LOG(info) <<
"---User path for Configuration is used: " << config_dir.Data();
231 flexec = work_config +
"run_fluka.sh";
233 gSystem->Exec(flexec.Data());
236 TString macrodir = getenv(
"PWD");
238 flout = macrodir +
"/fluka_out";
239 flout.ReplaceAll(
"//",
"/");
240 gSystem->cd(flout.Data());
244void FairRunSim::SetMCConfig()
267 TString work = getenv(
"GEOMPATH");
268 work.ReplaceAll(
"//",
"/");
270 work = getenv(
"VMCWORKDIR");
271 Mat = work +
"/geometry/";
272 Mat.ReplaceAll(
"//",
"/");
275 if (!Mat.EndsWith(
"/")) {
280 LOG(info) <<
"Media file used: " <<
MatFname.Data();
285 if (strncmp(fName,
"TGeant3", 7) == 0) {
288 LOG(info) <<
"FairRun::SetGeoModel(): G3 native geometry model used ";
290 LOG(info) <<
"FairRun::SetGeoModel(): Geant3 MC engine only !";
291 LOG(info) <<
"FairRun::SetGeoModel(): Method skipped ... ";
virtual void Setup(const char *mcEngine)
void setMediaFile(const char *file)
void SetNoOfSets(Int_t n)
FairGeoInterface * getGeoInterface()
void InitMC(const char *setup, const char *cuts)
void SetRadiationMapReg(Bool_t RadMap)
void SetPythiaDecayer(Bool_t decayer)
void AddMeshList(TObjArray *meshList)
void AddTask(TTask *fTask)
void SetField(FairField *field)
void SetGenerator(FairPrimaryGenerator *fxGenerator)
void RunMC(Int_t nofEvents)
void SetUserDecayConfig(const TString decayerConf)
void SetRadiationLengthReg(Bool_t RadLen)
void SetPythiaDecayerConfig(const TString decayerConf)
void SetUserDecay(Bool_t decay)
void WriteFileHeader(FairFileHeader *f)
unsigned int generateId(void)
TObjArray * GetUserDefIons()
void SetGeoModel(char *name)
TObjArray * fParticles
/** Array of user defined ions */
TString MatFname
/** Array of used modules */
FairMCEventHeader * fMCEvHead
/** Primary Event Generator */
void SetPythiaDecayer(Bool_t decayer)
bool fUseSimSetupFunction
FairMCEventHeader * GetMCEventHeader()
virtual void Run(Int_t NEvents=0, Int_t NotUsed=0)
void SetMaterials(const char *MatFileName)
std::function< void()> fSimSetup
/** Allow importing TGeometry to VMC */
void SetUserDecay(const TString &Config)
void AddModule(FairModule *Mod)
TString fPythiaDecayerConfig
/** flag for using Pythia decayer*/
static FairRunSim * Instance()
void SetField(FairField *field)
FairField * fField
/** Singleton Instance */
FairPrimaryGenerator * fGen
/** flag for use Beam Energy */
Bool_t fRadLength
/** Macro for decay configuration*/
void AddMesh(FairMesh *Mesh)
TObjArray * GetUserDefParticles()
FairGenericVMCConfig * fSimulationConfig
TObjArray * fIons
/** Input file name map*/
Bool_t fStoreTraj
/** Material file name */
FairRunSim(Bool_t isMaster=kTRUE)
TString * fLoaderName
/** Trajectory store flags */
Bool_t fUserDecay
/** Macro for Pythia decay configuration*/
Bool_t fRadMap
/** flag for registring radiation length*/
Bool_t fRadGrid
/** flag for RadiationMapManager
static TMCThreadLocal FairRunSim * fginstance
/** MC Event Header */
TObjArray * ListOfModules
/** Array of user defined particles*/
void SetGenerator(FairPrimaryGenerator *Gen)
Bool_t fPythiaDecayer
/** Geometry Model (TGeo or G3)*/
FairMCApplication * fApp
/** Internal counter*/
FairRootManager * fRootManager
friend class FairMCApplication
FairFileHeader * fFileHeader
GLuint const GLchar * name
LOG(info)<< "Compressed in "<< sw.CpuTime()<< " s"