Project
Loading...
Searching...
No Matches
FairMCApplication.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// -------------------------------------------------------------------------
9// ----- FairMCApplication header file -----
10// ----- Created 06/01/04 by M. Al-Turany -----
11// -------------------------------------------------------------------------
12
13#ifndef FAIR_MC_APPLICATION_H
14#define FAIR_MC_APPLICATION_H
15
16#include "FairRunInfo.h" // for FairRunInfo
17
18#include <Rtypes.h> // for Int_t, Bool_t, Double_t, etc
19#include <TLorentzVector.h> // for TLorentzVector
20#include <TString.h> // for TString
21#include <TVirtualMCApplication.h> // for TVirtualMCApplication
22#include <list> // for list
23#include <map> // for map, multimap, etc
24
25class FairDetector;
26class FairEventHeader;
27class FairField;
34class FairRootManager;
35class FairTask;
36class FairTrajFilter;
37class FairVolume;
38class FairRunSim;
39class TChain;
40class TIterator;
41class TObjArray;
42class TRefArray;
43class TTask;
44class TVirtualMC;
45
52
61{
62 public:
69 FairMCApplication(const char* name, const char* title, TObjArray* ModList, const char* MatName);
75 virtual ~FairMCApplication();
79 virtual void AddDecayModes();
81 virtual void AddParticles(); // MC Application
83 virtual void AddIons(); // MC Application
88 void AddTask(TTask* fTask);
90 virtual void BeginEvent(); // MC Application
92 virtual void BeginPrimary(); // MC Application
94 virtual void ConstructGeometry(); // MC Application
96 virtual Bool_t MisalignGeometry();
98 virtual void ConstructOpGeometry(); // MC Application
100 virtual void FinishEvent(); // MC Application
102 virtual void FinishPrimary(); // MC Application
104 void FinishRun();
106 virtual void GeneratePrimaries(); // MC Application
108 FairDetector* GetDetector(const char* DetName);
116 TChain* GetChain();
118 virtual void InitGeometry(); // MC Application
120 void InitMC(const char* setup, const char* cuts);
122 void InitTasks();
124 virtual void PostTrack(); // MC Application
126 virtual void PreTrack(); // MC Application
127
129 virtual TVirtualMCApplication* CloneForWorker() const;
130
132 virtual void InitOnWorker();
133
135 virtual void FinishRunOnWorker();
136
140 void RunMC(Int_t nofEvents);
145 void SetField(FairField* field);
150 void SetGenerator(FairPrimaryGenerator* fxGenerator);
154 void SetParTask();
160 void SetPythiaDecayer(Bool_t decayer) { fPythiaDecayer = decayer; }
164 void SetPythiaDecayerConfig(const TString decayerConf) { fPythiaDecayerConfig = decayerConf; }
168 void SetRadiationLengthReg(Bool_t RadLen);
172 void SetRadiationMapReg(Bool_t RadMap);
176 void SetTrackingDebugMode(Bool_t set) { fDebug = set; }
182 void SetUserDecay(Bool_t decay) { fUserDecay = decay; }
186 void SetUserDecayConfig(const TString decayerConf) { fUserDecayConfig = decayerConf; }
188 virtual void Stepping(); // MC Application
190 virtual void StopRun();
192 virtual void StopMCRun();
194 virtual Double_t TrackingRmax() const; // MC Application
196 virtual Double_t TrackingZmax() const; // MC Application
197
198 void AddMeshList(TObjArray* meshList);
199
205 void SetSaveCurrentEvent(Bool_t set) { fSaveCurrentEvent = set; }
206
211
212 private:
213 // methods
214 Int_t GetIonPdg(Int_t z, Int_t a) const;
215
216 void UndoGeometryModifications();
217
218 protected:
219 // data members
225 TRefArray* fDetectors;
227 TRefArray* fDetMap;
229 TIterator* fModIter;
231 TObjArray* fModules;
243 TRefArray* fSenVolumes;
249 Int_t fMcVersion; // mc Version
259 Bool_t fDebug;
265 std::multimap<Int_t, FairVolume*> fVolMap;
267 std::multimap<Int_t, FairVolume*>::iterator fVolIter;
270 std::map<Int_t, Int_t> fModVolMap;
272 std::map<Int_t, Int_t>::iterator fModVolIter;
273 TLorentzVector fTrkPos;
275 Bool_t fRadLength;
276
280 Bool_t fRadMap;
285
287
290 std::list<FairDetector*> listActiveDetectors;
292 std::list<FairDetector*> listDetectors;
298
301
304
306
307 private:
311 FairMCApplication& operator=(const FairMCApplication&);
312
313 FairRunInfo fRunInfo;
314 Bool_t fGeometryIsInitialized;
315
316 static FairMCApplication* fgMasterInstance;
317};
318
319// inline functions
320
322{
323 return static_cast<FairMCApplication*>(TVirtualMCApplication::Instance());
324}
325
326#endif
FairMCApplicationState
void InitMC(const char *setup, const char *cuts)
virtual void AddParticles()
void SetRadiationMapReg(Bool_t RadMap)
void SetPythiaDecayer(Bool_t decayer)
void AddMeshList(TObjArray *meshList)
std::list< FairDetector * > listActiveDetectors
virtual void BeginPrimary()
virtual void FinishPrimary()
void AddTask(TTask *fTask)
virtual void FinishEvent()
FairMCEventHeader * fMCEventHeader
FairRadLenManager * fRadLenMan
TLorentzVector fTrkPos
FairRadGridManager * fRadGridMan
FairPrimaryGenerator * fEvGen
virtual void FinishRunOnWorker()
void SetField(FairField *field)
FairRadMapManager * fRadMapMan
FairGenericStack * fStack
std::map< Int_t, Int_t >::iterator fModVolIter
std::multimap< Int_t, FairVolume * >::iterator fVolIter
void SetGenerator(FairPrimaryGenerator *fxGenerator)
virtual void ConstructOpGeometry()
virtual void BeginEvent()
std::map< Int_t, Int_t > fModVolMap
FairRootManager * fRootManager
ClassDef(FairMCApplication, 4)
void SetTrackingDebugMode(Bool_t set)
void RunMC(Int_t nofEvents)
virtual TVirtualMCApplication * CloneForWorker() const
std::list< FairDetector * > listDetectors
FairPrimaryGenerator * GetGenerator()
virtual void InitOnWorker()
FairEventHeader * fEventHeader
void SetUserDecayConfig(const TString decayerConf)
void SetSaveCurrentEvent(Bool_t set)
FairGenericStack * GetStack()
FairDetector * fDisDet
void SetRadiationLengthReg(Bool_t RadLen)
virtual void ConstructGeometry()
virtual void GeneratePrimaries()
void SetPythiaDecayerConfig(const TString decayerConf)
FairTrajFilter * fTrajFilter
std::multimap< Int_t, FairVolume * > fVolMap
TRefArray * fActiveDetectors
FairMCApplicationState fState
virtual Double_t TrackingRmax() const
virtual void InitGeometry()
virtual Double_t TrackingZmax() const
FairDetector * GetDetector(const char *DetName)
FairMCApplicationState GetState() const
void SetUserDecay(Bool_t decay)
static FairMCApplication * Instance()
virtual void AddDecayModes()
virtual Bool_t MisalignGeometry()
GLuint const GLchar * name
Definition glcorearb.h:781
GLboolean GLboolean GLboolean GLboolean a
Definition glcorearb.h:1233
GLdouble GLdouble GLdouble z
Definition glcorearb.h:843