Geant4 VMC
Version 6.8
Toggle main menu visibility
Loading...
Searching...
No Matches
source
run
src
TG4WorkerInitialization.cxx
Go to the documentation of this file.
1
//------------------------------------------------
2
// The Geant4 Virtual Monte Carlo package
3
// Copyright (C) 2014 Ivana Hrivnacova
4
// All rights reserved.
5
//
6
// For the licensing terms see geant4_vmc/LICENSE.
7
// Contact: root-vmc@cern.ch
8
//-------------------------------------------------
9
14
15
#include "
TG4WorkerInitialization.h
"
16
#include "
TG4RunManager.h
"
17
18
#include <RVersion.h>
19
#include <TVirtualMCApplication.h>
20
21
#include <G4AutoLock.hh>
22
#include <G4Threading.hh>
23
#include <G4Types.hh>
24
25
#ifdef G4MULTITHREADED
26
namespace
27
{
28
// Mutex to lock MCApplication::FinishRun
29
G4Mutex finishRunMutex = G4MUTEX_INITIALIZER;
30
// Mutex to lock deleting MC application
31
// G4Mutex deleteMutex = G4MUTEX_INITIALIZER;
32
// Mutex to lock FinishRun & deleting MC application
33
G4Mutex stopWorkerMutex = G4MUTEX_INITIALIZER;
34
}
// namespace
35
#endif
36
37
//_____________________________________________________________________________
38
TG4WorkerInitialization::TG4WorkerInitialization
()
39
:
G4UserWorkerInitialization
()
40
{
42
}
43
44
//_____________________________________________________________________________
45
TG4WorkerInitialization::~TG4WorkerInitialization
()
46
{
48
}
49
50
//
51
// public methods
52
//
53
54
//_____________________________________________________________________________
55
void
TG4WorkerInitialization::WorkerRunStart
()
const
56
{
58
59
// G4cout << "TG4WorkerInitialization::WorkerRunStart() " << G4endl;
60
61
TG4RunManager::Instance
()->
LateInitialize
();
62
#ifdef G4MULTITHREADED
63
TVirtualMCApplication::Instance()->BeginRunOnWorker();
64
// G4cout << "TG4WorkerInitialization::WorkerRunStart() end " << G4endl;
65
#endif
66
}
67
68
//_____________________________________________________________________________
69
void
TG4WorkerInitialization::WorkerRunEnd
()
const
70
{
71
// This method is called for each thread, when the local event loop has
72
// finished but before the synchronization over threads.
73
74
// G4cout << "TG4WorkerInitialization::WorkerRunEnd() " << G4endl;
75
76
#ifdef G4MULTITHREADED
77
G4AutoLock lm(&finishRunMutex);
78
TVirtualMCApplication::Instance()->FinishRunOnWorker();
79
lm.unlock();
80
#endif
81
82
// G4cout << "TG4WorkerInitialization::WorkerRunEnd() end " << G4endl;
83
}
84
85
//_____________________________________________________________________________
86
void
TG4WorkerInitialization::WorkerStop
()
const
87
{
91
92
// G4cout << "TG4WorkerInitialization::WorkerStop() " << G4endl;
93
94
#ifdef G4MULTITHREADED
95
G4AutoLock lm(&stopWorkerMutex);
96
delete
TVirtualMCApplication::Instance();
97
lm.unlock();
98
#endif
99
100
// G4cout << "TG4WorkerInitialization::WorkerStop() end " << G4endl;
101
}
TG4RunManager.h
Definition of the TG4RunManager.h class.
TG4WorkerInitialization.h
Definition of the TG4WorkerInitialization class.
G4UserWorkerInitialization
TG4RunManager::Instance
static TG4RunManager * Instance()
Definition
TG4RunManager.h:124
TG4RunManager::LateInitialize
void LateInitialize()
Definition
TG4RunManager.cxx:442
TG4WorkerInitialization::WorkerStop
virtual void WorkerStop() const
Definition
TG4WorkerInitialization.cxx:86
TG4WorkerInitialization::TG4WorkerInitialization
TG4WorkerInitialization()
Definition
TG4WorkerInitialization.cxx:38
TG4WorkerInitialization::~TG4WorkerInitialization
virtual ~TG4WorkerInitialization()
Definition
TG4WorkerInitialization.cxx:45
TG4WorkerInitialization::WorkerRunEnd
virtual void WorkerRunEnd() const
Definition
TG4WorkerInitialization.cxx:69
TG4WorkerInitialization::WorkerRunStart
virtual void WorkerRunStart() const
Definition
TG4WorkerInitialization.cxx:55
Generated on
for Geant4 VMC by
1.17.0