Project
Loading...
Searching...
No Matches
FairRunSim.h
Go to the documentation of this file.
1/********************************************************************************
2 * Copyright (C) 2014 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH *
3 * *
4 * This software is distributed under the terms of the *
5 * GNU Lesser General Public Licence (LGPL) version 3, *
6 * copied verbatim in the file "LICENSE" *
7 ********************************************************************************/
8// Modified for ALICE O2 in 2026: parts not used by O2 were removed (see README.md in this directory).
9#ifndef FAIRRUNSIM_H
10#define FAIRRUNSIM_H
11
12#include "FairIon.h" // for FairIon
13#include "FairMCApplication.h" // for FairMCApplication
14#include "FairParticle.h" // for FairParticle
15#include "FairRun.h" // for FairRun
16
17#include <Rtypes.h> // for Bool_t, Double_t, Int_t, etc
18#include <TMCtls.h> // for multi-threading
19#include <TObjArray.h> // for TObjArray
20#include <TString.h> // for TString
21#include <functional>
22
23class FairField;
25class FairMesh;
26class FairModule;
29
36class FairRunSim : public FairRun
37{
38 public:
40 FairRunSim(Bool_t isMaster = kTRUE);
42 virtual ~FairRunSim();
44 static FairRunSim* Instance();
48 void AddModule(FairModule* Mod);
52 void AddNewIon(FairIon* ion) { fIons->Add(ion); }
56 void AddNewParticle(FairParticle* Particle) { fParticles->Add(Particle); }
60 TObjArray* GetUserDefIons();
64 TObjArray* GetUserDefParticles();
65
69 virtual void Init();
73 virtual void Run(Int_t NEvents = 0, Int_t NotUsed = 0);
77 void SetField(FairField* field);
82
87 void SetMCEventHeader(FairMCEventHeader* McHeader) { fMCEvHead = McHeader; }
88
90 void SetMaterials(const char* MatFileName);
91
93 void SetStoreTraj(Bool_t storeTraj = kTRUE) { fStoreTraj = storeTraj; }
94
96 Bool_t GetStoreTraj() const { return fStoreTraj; }
97
99 void SetTrackingDebugMode(Bool_t set)
100 {
101 if (fApp) {
103 }
104 }
105
107 void SetGeoModel(char* name);
108
110 TString* GetGeoModel() { return fLoaderName; }
111
113 FairField* GetField() { return fField; }
114
117
119 TObjArray* GetListOfModules() { return ListOfModules; }
120
123
125 void SetPythiaDecayer(Bool_t decayer) { fPythiaDecayer = decayer; }
126
128 void SetPythiaDecayer(const TString& Config);
129
131 void SetUserDecay(const TString& Config);
132
134 void SetUserDecay(Bool_t decay) { fUserDecay = decay; }
135
137 Bool_t IsExtDecayer() { return fPythiaDecayer; }
138
140 Bool_t IsUserDecay() { return fUserDecay; }
141
144
146
148
149 void AddMesh(FairMesh* Mesh);
150
151 void SetUserConfig(const TString& Config) { fUserConfig = Config; }
152 TString GetUserConfig() { return fUserConfig; }
153
154 void SetUserCuts(const TString& Cuts) { fUserCuts = Cuts; }
155 TString GetUserCuts() { return fUserCuts; }
156
158 void SetBeamMom(Double_t BeamMom)
159 {
160 fBeamMom = BeamMom;
161 fUseBeamMom = kTRUE;
162 }
163
165 Double_t GetBeamMom() { return fBeamMom; }
166
168 Bool_t UseBeamMom() { return fUseBeamMom; }
169
170 void SetSimSetup(std::function<void()> f)
171 {
172 fSimSetup = f;
174 }
175
178
179 void SetIsMT(Bool_t isMT) { fIsMT = isMT; }
180 Bool_t IsMT() const { return fIsMT; }
181
183 Bool_t IsImportTGeoToVMC() const { return fImportTGeoToVMC; }
184
185 void StopMCRun() { fApp->StopMCRun(); }
186
187 private:
188 FairRunSim(const FairRunSim& M);
189 FairRunSim& operator=(const FairRunSim&) { return *this; }
190 void SetMCConfig();
191 void CheckFlukaExec();
192
193 protected:
194 Int_t count;
196 Double_t fBeamMom;
197 Bool_t fUseBeamMom;
200 static TMCThreadLocal FairRunSim* fginstance;
202 const char* fMapName;
203 TObjArray* fIons;
204 TObjArray* fParticles;
205 TObjArray* ListOfModules;
206 TString MatFname;
207 Bool_t fStoreTraj;
208 TString* fLoaderName;
211 Bool_t fUserDecay;
213 Bool_t fRadLength;
214 Bool_t fRadMap;
215 Bool_t fRadGrid;
216 TObjArray* fMeshList;
217 TString fUserConfig;
218 TString fUserCuts;
219 Bool_t fIsMT;
221 std::function<void()> fSimSetup;
225
227};
228
229#endif // FAIRRUNSIM_H
void SetTrackingDebugMode(Bool_t set)
TObjArray * GetUserDefIons()
void SetGeoModel(char *name)
TObjArray * GetListOfModules()
Definition FairRunSim.h:119
TObjArray * fParticles
/‍** Array of user defined ions *‍/
Definition FairRunSim.h:204
void SetUserDecay(Bool_t decay)
Definition FairRunSim.h:134
Bool_t fIsMT
/‍** Macro for geant cuts*‍/
Definition FairRunSim.h:219
void SetRadLenRegister(Bool_t value)
Definition FairRunSim.h:143
Bool_t IsExtDecayer()
Definition FairRunSim.h:137
TString MatFname
/‍** Array of used modules *‍/
Definition FairRunSim.h:206
Bool_t fUseBeamMom
/‍** Beam Energy in GeV/c *‍/
Definition FairRunSim.h:197
FairMCEventHeader * fMCEvHead
/‍** Primary Event Generator *‍/
Definition FairRunSim.h:199
virtual ~FairRunSim()
void SetPythiaDecayer(Bool_t decayer)
Definition FairRunSim.h:125
bool fUseSimSetupFunction
Definition FairRunSim.h:223
FairMCEventHeader * GetMCEventHeader()
Double_t fBeamMom
/‍** Main VMC application *‍/
Definition FairRunSim.h:196
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 *‍/
Definition FairRunSim.h:221
void SetUserDecay(const TString &Config)
Bool_t fImportTGeoToVMC
/‍** MT mode option (Geant4 only)*‍/
Definition FairRunSim.h:220
void AddModule(FairModule *Mod)
TString * GetGeoModel()
Definition FairRunSim.h:110
TObjArray * fMeshList
Definition FairRunSim.h:216
void SetStoreTraj(Bool_t storeTraj=kTRUE)
Definition FairRunSim.h:93
Bool_t IsMT() const
Definition FairRunSim.h:180
TString fPythiaDecayerConfig
/‍** flag for using Pythia decayer*‍/
Definition FairRunSim.h:210
void SetSimSetup(std::function< void()> f)
Definition FairRunSim.h:170
void SetBeamMom(Double_t BeamMom)
Definition FairRunSim.h:158
FairPrimaryGenerator * GetPrimaryGenerator()
Definition FairRunSim.h:122
static FairRunSim * Instance()
TString GetUserConfig()
Definition FairRunSim.h:152
void SetField(FairField *field)
FairField * GetField()
Definition FairRunSim.h:113
FairField * fField
/‍** Singleton Instance *‍/
Definition FairRunSim.h:201
FairPrimaryGenerator * fGen
/‍** flag for use Beam Energy *‍/
Definition FairRunSim.h:198
Bool_t fRadLength
/‍** Macro for decay configuration*‍/
Definition FairRunSim.h:213
TString fUserCuts
/‍** Macro for geant configuration*‍/
Definition FairRunSim.h:218
void AddNewIon(FairIon *ion)
Definition FairRunSim.h:52
void SetTrackingDebugMode(Bool_t set)
Definition FairRunSim.h:99
void SetMCEventHeader(FairMCEventHeader *McHeader)
Definition FairRunSim.h:87
void AddMesh(FairMesh *Mesh)
TObjArray * GetUserDefParticles()
FairGenericVMCConfig * fSimulationConfig
Definition FairRunSim.h:224
ClassDef(FairRunSim, 2)
/‍** Simulation configuration *‍/
Bool_t IsImportTGeoToVMC() const
Definition FairRunSim.h:183
void SetIsMT(Bool_t isMT)
Definition FairRunSim.h:179
TString fUserDecayConfig
Definition FairRunSim.h:212
const char * fMapName
Definition FairRunSim.h:202
FairGenericVMCConfig * GetSimulationConfig()
Definition FairRunSim.h:177
TObjArray * fIons
/‍** Input file name map*‍/
Definition FairRunSim.h:203
Bool_t fStoreTraj
/‍** Material file name *‍/
Definition FairRunSim.h:207
void StopMCRun()
Definition FairRunSim.h:185
Int_t count
Definition FairRunSim.h:194
void SetImportTGeoToVMC(Bool_t v)
Definition FairRunSim.h:182
TString * fLoaderName
/‍** Trajectory store flags *‍/
Definition FairRunSim.h:208
void SetSimulationConfig(FairGenericVMCConfig *tconf)
Definition FairRunSim.h:176
Bool_t fUserDecay
/‍** Macro for Pythia decay configuration*‍/
Definition FairRunSim.h:211
void SetRadMapRegister(Bool_t value)
Definition FairRunSim.h:145
Bool_t IsUserDecay()
Definition FairRunSim.h:140
Bool_t fRadMap
/‍** flag for registring radiation length*‍/
Definition FairRunSim.h:214
void SetUserConfig(const TString &Config)
Definition FairRunSim.h:151
Bool_t fRadGrid
/‍** flag for RadiationMapManager
Definition FairRunSim.h:215
Bool_t UseBeamMom()
Definition FairRunSim.h:168
void AddNewParticle(FairParticle *Particle)
Definition FairRunSim.h:56
virtual void Init()
TString fUserConfig
/‍** radiation grid scoring
Definition FairRunSim.h:217
Double_t GetBeamMom()
Definition FairRunSim.h:165
void SetUserCuts(const TString &Cuts)
Definition FairRunSim.h:154
static TMCThreadLocal FairRunSim * fginstance
/‍** MC Event Header *‍/
Definition FairRunSim.h:200
Bool_t GetStoreTraj() const
Definition FairRunSim.h:96
TString GetUserCuts()
Definition FairRunSim.h:155
TObjArray * ListOfModules
/‍** Array of user defined particles*‍/
Definition FairRunSim.h:205
void SetGenerator(FairPrimaryGenerator *Gen)
void SetRadGridRegister(Bool_t value)
Definition FairRunSim.h:147
Bool_t fPythiaDecayer
/‍** Geometry Model (TGeo or G3)*‍/
Definition FairRunSim.h:209
FairMCApplication * fApp
/‍** Internal counter*‍/
Definition FairRunSim.h:195
const GLdouble * v
Definition glcorearb.h:832
GLuint const GLchar * name
Definition glcorearb.h:781
GLdouble f
Definition glcorearb.h:310
GLsizei const GLfloat * value
Definition glcorearb.h:819
typedef void(APIENTRYP PFNGLCULLFACEPROC)(GLenum mode)