VMC Examples
Version 6.8
Toggle main menu visibility
Loading...
Searching...
No Matches
examples
E03
E03c
include
Ex03cMCApplication.h
Go to the documentation of this file.
1
#ifndef EX03_MC_APPLICATION_H
2
#define EX03_MC_APPLICATION_H
3
4
//------------------------------------------------
5
// The Virtual Monte Carlo examples
6
// Copyright (C) 2014 - 2018 Ivana Hrivnacova
7
// All rights reserved.
8
//
9
// For the licensing terms see geant4_vmc/LICENSE.
10
// Contact: root-vmc@cern.ch
11
//-------------------------------------------------
12
13
/// \file Ex03cMCApplication.h
14
/// \brief Definition of the Ex03cMCApplication class
15
///
16
/// Geant4 ExampleN03 adapted to Virtual Monte Carlo
17
///
18
/// \author Benedikt Volkel, CERN
19
20
#include <initializer_list>
21
22
#include <TVirtualMCApplication.h>
23
24
#include "
Ex03cCalorimeterSD.h
"
25
#include "
Ex03cDetectorConstruction.h
"
26
27
#include <TGeoUniformMagField.h>
28
#include <TMCVerbose.h>
29
30
class
Ex03cMCStack
;
31
class
Ex03PrimaryGenerator
;
32
33
class
TMCRootManager;
34
35
/// \ingroup E03
36
/// \brief Implementation of the TVirtualMCApplication
37
///
38
/// A variant of the Ex03MCApplication class
39
/// updated for multiple engine runs.
40
///
41
42
/// \date 21/08/2019
43
/// \author Benedikt Volkel, CERN
44
45
class
Ex03cMCApplication
:
public
TVirtualMCApplication
46
{
47
public
:
48
Ex03cMCApplication
(
const
char
* name,
const
char
* title,
49
Bool_t isMulti = kFALSE, Bool_t splitSimulation = kFALSE);
50
Ex03cMCApplication
();
51
virtual
~Ex03cMCApplication
();
52
53
// methods
54
void
InitMC
(
const
char
* setup);
55
void
InitMC
(std::initializer_list<const char*> setupMacros);
56
void
InitMC
();
57
void
RunMC
(Int_t nofEvents);
58
void
FinishRun
();
59
void
ReadEvent
(Int_t i);
60
61
virtual
TVirtualMCApplication
*
CloneForWorker
()
const
;
62
virtual
void
InitOnWorker
();
63
virtual
void
FinishRunOnWorker
();
64
65
virtual
void
ConstructGeometry
();
66
virtual
void
InitGeometry
();
67
virtual
void
AddParticles
();
68
virtual
void
AddIons
();
69
virtual
void
GeneratePrimaries
();
70
virtual
void
BeginEvent
();
71
virtual
void
BeginPrimary
();
72
virtual
void
PreTrack
();
73
virtual
void
Stepping
();
74
virtual
void
PostTrack
();
75
virtual
void
FinishPrimary
();
76
virtual
void
FinishEvent
();
77
78
// set methods
79
void
SetPrintModulo
(Int_t value);
80
void
SetVerboseLevel
(Int_t verboseLevel);
81
void
SetControls
(Bool_t isConstrols);
82
void
SetField
(Double_t bz);
83
void
SetDebug
(Int_t debug);
84
85
// get methods
86
Ex03cDetectorConstruction
*
GetDetectorConstruction
()
const
;
87
Ex03cCalorimeterSD
*
GetCalorimeterSD
()
const
;
88
Ex03PrimaryGenerator
*
GetPrimaryGenerator
()
const
;
89
90
// method for tests
91
void
SetOldGeometry
(Bool_t oldGeometry = kTRUE);
92
93
private
:
94
// methods
95
Ex03cMCApplication
(
const
Ex03cMCApplication
& origin);
96
void
RegisterStack
()
const
;
97
98
// data members
99
mutable
TMCRootManager*
fRootManager
;
//!< Root manager
100
Int_t
fPrintModulo
;
///< The event modulus number to be printed
101
Int_t
fEventNo
;
///< Event counter
102
TMCVerbose
fVerbose
;
///< VMC verbose helper
103
Ex03cMCStack
*
fStack
;
///< VMC stack
104
Ex03cDetectorConstruction
*
fDetConstruction
;
///< Dector construction
105
Ex03cCalorimeterSD
*
fCalorimeterSD
;
///< Calorimeter SD
106
Ex03PrimaryGenerator
*
fPrimaryGenerator
;
///< Primary generator
107
TGeoUniformMagField*
fMagField
;
///< Magnetic field
108
Bool_t
fOldGeometry
;
///< Option for geometry definition
109
Bool_t
fIsControls
;
///< Option to activate special controls
110
Bool_t
fIsMaster
;
///< If is on master thread
111
Bool_t
fIsMultiRun
;
///< Flag if having multiple engines
112
Bool_t
fSplitSimulation
;
///< Split geometry given user criteria
113
Int_t
fG3Id
;
///< engine ID of Geant3
114
Int_t
fG4Id
;
///< engine ID of Geant4
115
Int_t
fDebug
;
///< debug option for multiple run
116
117
ClassDef(
Ex03cMCApplication
, 1)
// Interface to MonteCarlo application
118
};
119
120
// Define typedef so that we can use the E03 macros for all examples variants
121
typedef
Ex03cMCApplication
Ex03MCApplication
;
122
123
// inline functions
124
125
/// Set the event modulus number to be printed
126
/// \param value The new event modulus number value
127
inline
void
Ex03cMCApplication::SetPrintModulo
(Int_t value)
128
{
129
fPrintModulo
= value;
130
}
131
132
/// Set verbosity
133
/// \param verboseLevel The new verbose level value
134
inline
void
Ex03cMCApplication::SetVerboseLevel
(Int_t verboseLevel)
135
{
136
fVerbose
.SetLevel(verboseLevel);
137
}
138
139
/// Set magnetic field
140
/// \param bz The new field value in z
141
inline
void
Ex03cMCApplication::SetField
(Double_t bz)
142
{
143
fMagField
->SetFieldValue(0., 0., bz);
144
}
145
146
/// Set debug option for multiple run
147
inline
void
Ex03cMCApplication::SetDebug
(Int_t debug) {
fDebug
= debug; }
148
149
/// \return The detector construction
150
inline
Ex03cDetectorConstruction
*
151
Ex03cMCApplication::GetDetectorConstruction
()
const
152
{
153
return
fDetConstruction
;
154
}
155
156
/// \return The calorimeter sensitive detector
157
inline
Ex03cCalorimeterSD
*
Ex03cMCApplication::GetCalorimeterSD
()
const
158
{
159
return
fCalorimeterSD
;
160
}
161
162
/// \return The primary generator
163
inline
Ex03PrimaryGenerator
*
Ex03cMCApplication::GetPrimaryGenerator
()
const
164
{
165
return
fPrimaryGenerator
;
166
}
167
168
/// Switch on/off the old geometry definition (via VMC functions)
169
/// \param oldGeometry If true, geometry definition via VMC functions
170
inline
void
Ex03cMCApplication::SetOldGeometry
(Bool_t oldGeometry)
171
{
172
fOldGeometry
= oldGeometry;
173
}
174
175
/// Switch on/off special process controls
176
/// \param isControls If true, special process controls setting is activated
177
inline
void
Ex03cMCApplication::SetControls
(Bool_t isControls)
178
{
179
fIsControls
= isControls;
180
}
181
182
#endif
// EX03_MC_APPLICATION_H
Ex03cCalorimeterSD.h
Definition of the Ex03cCalorimeterSD class.
Ex03cDetectorConstruction.h
Definition of the Ex03cDetectorConstruction class.
Ex03MCApplication
Implementation of the TVirtualMCApplication.
Definition
Ex03MCApplication.h:40
Ex03PrimaryGenerator
The primary generator.
Definition
Ex03PrimaryGenerator.h:34
Ex03cCalorimeterSD
The calorimeter sensitive detector.
Definition
Ex03cCalorimeterSD.h:39
Ex03cDetectorConstruction
The detector construction (via TGeo ).
Definition
Ex03cDetectorConstruction.h:40
Ex03cMCApplication
Implementation of the TVirtualMCApplication.
Definition
Ex03cMCApplication.h:46
Ex03cMCApplication::Ex03cMCApplication
Ex03cMCApplication(const char *name, const char *title, Bool_t isMulti=kFALSE, Bool_t splitSimulation=kFALSE)
Definition
Ex03cMCApplication.cxx:48
Ex03cMCApplication::fMagField
TGeoUniformMagField * fMagField
Magnetic field.
Definition
Ex03cMCApplication.h:107
Ex03cMCApplication::fRootManager
TMCRootManager * fRootManager
Root manager.
Definition
Ex03cMCApplication.h:99
Ex03cMCApplication::AddIons
virtual void AddIons()
Definition
Ex03cMCApplication.cxx:513
Ex03cMCApplication::BeginPrimary
virtual void BeginPrimary()
Definition
Ex03cMCApplication.cxx:559
Ex03cMCApplication::fPrimaryGenerator
Ex03PrimaryGenerator * fPrimaryGenerator
Primary generator.
Definition
Ex03cMCApplication.h:106
Ex03cMCApplication::InitOnWorker
virtual void InitOnWorker()
Definition
Ex03cMCApplication.cxx:391
Ex03cMCApplication::fDetConstruction
Ex03cDetectorConstruction * fDetConstruction
Dector construction.
Definition
Ex03cMCApplication.h:104
Ex03cMCApplication::BeginEvent
virtual void BeginEvent()
Definition
Ex03cMCApplication.cxx:535
Ex03cMCApplication::fG3Id
Int_t fG3Id
engine ID of Geant3
Definition
Ex03cMCApplication.h:113
Ex03cMCApplication::fVerbose
TMCVerbose fVerbose
VMC verbose helper.
Definition
Ex03cMCApplication.h:102
Ex03cMCApplication::SetVerboseLevel
void SetVerboseLevel(Int_t verboseLevel)
Definition
Ex03cMCApplication.h:134
Ex03cMCApplication::InitMC
void InitMC()
Definition
Ex03cMCApplication.cxx:284
Ex03cMCApplication::SetField
void SetField(Double_t bz)
Definition
Ex03cMCApplication.h:141
Ex03cMCApplication::GetCalorimeterSD
Ex03cCalorimeterSD * GetCalorimeterSD() const
Definition
Ex03cMCApplication.h:157
Ex03cMCApplication::fCalorimeterSD
Ex03cCalorimeterSD * fCalorimeterSD
Calorimeter SD.
Definition
Ex03cMCApplication.h:105
Ex03cMCApplication::GeneratePrimaries
virtual void GeneratePrimaries()
Definition
Ex03cMCApplication.cxx:522
Ex03cMCApplication::AddParticles
virtual void AddParticles()
Definition
Ex03cMCApplication.cxx:466
Ex03cMCApplication::RegisterStack
void RegisterStack() const
Definition
Ex03cMCApplication.cxx:194
Ex03cMCApplication::RunMC
void RunMC(Int_t nofEvents)
Definition
Ex03cMCApplication.cxx:327
Ex03cMCApplication::fOldGeometry
Bool_t fOldGeometry
Option for geometry definition.
Definition
Ex03cMCApplication.h:108
Ex03cMCApplication::GetDetectorConstruction
Ex03cDetectorConstruction * GetDetectorConstruction() const
Definition
Ex03cMCApplication.h:151
Ex03cMCApplication::fIsControls
Bool_t fIsControls
Option to activate special controls.
Definition
Ex03cMCApplication.h:109
Ex03cMCApplication::fPrintModulo
Int_t fPrintModulo
The event modulus number to be printed.
Definition
Ex03cMCApplication.h:100
Ex03cMCApplication::Ex03cMCApplication
Ex03cMCApplication()
Definition
Ex03cMCApplication.cxx:147
Ex03cMCApplication::~Ex03cMCApplication
virtual ~Ex03cMCApplication()
Definition
Ex03cMCApplication.cxx:170
Ex03cMCApplication::fIsMultiRun
Bool_t fIsMultiRun
Flag if having multiple engines.
Definition
Ex03cMCApplication.h:111
Ex03cMCApplication::CloneForWorker
virtual TVirtualMCApplication * CloneForWorker() const
Definition
Ex03cMCApplication.cxx:385
Ex03cMCApplication::fIsMaster
Bool_t fIsMaster
If is on master thread.
Definition
Ex03cMCApplication.h:110
Ex03cMCApplication::fSplitSimulation
Bool_t fSplitSimulation
Split geometry given user criteria.
Definition
Ex03cMCApplication.h:112
Ex03cMCApplication::PostTrack
virtual void PostTrack()
Definition
Ex03cMCApplication.cxx:641
Ex03cMCApplication::ReadEvent
void ReadEvent(Int_t i)
Definition
Ex03cMCApplication.cxx:419
Ex03cMCApplication::Stepping
virtual void Stepping()
Definition
Ex03cMCApplication.cxx:600
Ex03cMCApplication::FinishRun
void FinishRun()
Definition
Ex03cMCApplication.cxx:372
Ex03cMCApplication::fStack
Ex03cMCStack * fStack
VMC stack.
Definition
Ex03cMCApplication.h:103
Ex03cMCApplication::fEventNo
Int_t fEventNo
Event counter.
Definition
Ex03cMCApplication.h:101
Ex03cMCApplication::SetDebug
void SetDebug(Int_t debug)
Set debug option for multiple run.
Definition
Ex03cMCApplication.h:147
Ex03cMCApplication::ConstructGeometry
virtual void ConstructGeometry()
Definition
Ex03cMCApplication.cxx:434
Ex03cMCApplication::GetPrimaryGenerator
Ex03PrimaryGenerator * GetPrimaryGenerator() const
Definition
Ex03cMCApplication.h:163
Ex03cMCApplication::FinishRunOnWorker
virtual void FinishRunOnWorker()
Definition
Ex03cMCApplication.cxx:409
Ex03cMCApplication::SetOldGeometry
void SetOldGeometry(Bool_t oldGeometry=kTRUE)
Definition
Ex03cMCApplication.h:170
Ex03cMCApplication::SetPrintModulo
void SetPrintModulo(Int_t value)
Definition
Ex03cMCApplication.h:127
Ex03cMCApplication::FinishEvent
virtual void FinishEvent()
Definition
Ex03cMCApplication.cxx:660
Ex03cMCApplication::SetControls
void SetControls(Bool_t isConstrols)
Definition
Ex03cMCApplication.h:177
Ex03cMCApplication::fG4Id
Int_t fG4Id
engine ID of Geant4
Definition
Ex03cMCApplication.h:114
Ex03cMCApplication::PreTrack
virtual void PreTrack()
Definition
Ex03cMCApplication.cxx:573
Ex03cMCApplication::FinishPrimary
virtual void FinishPrimary()
Definition
Ex03cMCApplication.cxx:648
Ex03cMCApplication::InitGeometry
virtual void InitGeometry()
Definition
Ex03cMCApplication.cxx:452
Ex03cMCApplication::fDebug
Int_t fDebug
debug option for multiple run
Definition
Ex03cMCApplication.h:115
Ex03cMCStack
Implementation of the TVirtualMCStack interface.
Definition
Ex03cMCStack.h:37
TVirtualMCApplication
Generated on
for VMC Examples by
1.17.0