VMC
Version 2.2
Toggle main menu visibility
Loading...
Searching...
No Matches
source
src
TVirtualMCApplication.cxx
Go to the documentation of this file.
1
// -----------------------------------------------------------------------
2
// Copyright (C) 2019 CERN and copyright holders of VMC Project.
3
// This software is distributed under the terms of the GNU General Public
4
// License v3 (GPL Version 3), copied verbatim in the file "LICENSE".
5
//
6
// See https://github.com/vmc-project/vmc for full licensing information.
7
// -----------------------------------------------------------------------
8
9
// Author: Ivana Hrivnacova, 27/03/2002
10
11
/*************************************************************************
12
* Copyright (C) 2006, Rene Brun and Fons Rademakers. *
13
* Copyright (C) 2002, ALICE Experiment at CERN. *
14
* All rights reserved. *
15
* *
16
* For the licensing terms see $ROOTSYS/LICENSE. *
17
* For the list of contributors see $ROOTSYS/README/CREDITS. *
18
*************************************************************************/
19
20
#include "
TVirtualMCApplication.h
"
21
#include "TError.h"
22
#include "
TVirtualMC.h
"
23
#include "
TMCManager.h
"
24
31
32
TMCThreadLocal
TVirtualMCApplication
*
TVirtualMCApplication::fgInstance
=
nullptr
;
33
Bool_t
TVirtualMCApplication::fLockMultiThreading
= kFALSE;
34
39
40
TVirtualMCApplication::TVirtualMCApplication
(
const
char
*name,
const
char
*title) : TNamed(name, title)
41
{
42
if
(
fgInstance
) {
43
::Fatal(
"TVirtualMCApplication::TVirtualMCApplication"
,
"Attempt to create two instances of singleton."
);
44
}
45
46
// This is set to true if a TMCManager was reuqested.
47
if
(
fLockMultiThreading
) {
48
::Fatal(
"TVirtualMCApplication::TVirtualMCApplication"
,
"In multi-engine run ==> multithreading is disabled."
);
49
}
50
51
fgInstance
=
this
;
52
// There cannot be a TVirtualMC since it must have registered to this
53
// TVirtualMCApplication
54
fMC
=
nullptr
;
55
fMCManager
=
nullptr
;
56
}
57
62
63
TVirtualMCApplication::TVirtualMCApplication
() : TNamed()
64
{
65
fgInstance
=
this
;
66
fMC
=
nullptr
;
67
fMCManager
=
nullptr
;
68
}
69
74
75
TVirtualMCApplication::~TVirtualMCApplication
()
76
{
77
fgInstance
=
nullptr
;
78
if
(
fMCManager
) {
79
delete
fMCManager
;
80
}
81
}
82
87
88
TVirtualMCApplication
*
TVirtualMCApplication::Instance
()
89
{
90
return
fgInstance
;
91
}
92
97
98
void
TVirtualMCApplication::RequestMCManager
()
99
{
100
fMCManager
=
new
TMCManager
();
101
fMCManager
->Register(
this
);
102
fMCManager
->ConnectEnginePointer(&
fMC
);
103
fLockMultiThreading
= kTRUE;
104
}
105
110
111
void
TVirtualMCApplication::Register
(
TVirtualMC
*mc)
112
{
113
// If there is already a transport engine, fail since only one is allowed.
114
if
(
fMC
&& !
fMCManager
) {
115
Fatal(
"Register"
,
"Attempt to register a second TVirtualMC which "
116
"is not allowed"
);
117
}
118
fMC
= mc;
119
if
(
fMCManager
) {
120
fMCManager
->Register(mc);
121
}
122
}
123
128
129
TVirtualMC
*
TVirtualMCApplication::GetMC
()
const
130
{
131
return
fMC
;
132
}
TMCManager.h
TVirtualMCApplication.h
TVirtualMC.h
TMCManager
Singleton manager class for handling and steering a run with multiple TVirtualMC engines sharing even...
Definition
TMCManager.h:43
TVirtualMCApplication
Interface to a user Monte Carlo application.
Definition
TVirtualMCApplication.h:36
TVirtualMCApplication::TVirtualMCApplication
TVirtualMCApplication()
Default constructor.
Definition
TVirtualMCApplication.cxx:63
TVirtualMCApplication::~TVirtualMCApplication
virtual ~TVirtualMCApplication()
Destructor.
Definition
TVirtualMCApplication.cxx:75
TVirtualMCApplication::fMCManager
TMCManager * fMCManager
Pointer to requested TMCManager which will only be instantiated by a call to RequestMCManager().
Definition
TVirtualMCApplication.h:145
TVirtualMCApplication::Register
void Register(TVirtualMC *mc)
Register the an engine.
Definition
TVirtualMCApplication.cxx:111
TVirtualMCApplication::GetMC
TVirtualMC * GetMC() const
Return the transport engine registered to this application.
Definition
TVirtualMCApplication.cxx:129
TVirtualMCApplication::TVirtualMCApplication
TVirtualMCApplication(const char *name, const char *title)
Standard constructor.
Definition
TVirtualMCApplication.cxx:40
TVirtualMCApplication::fgInstance
static TMCThreadLocal TVirtualMCApplication * fgInstance
Singleton instance.
Definition
TVirtualMCApplication.h:151
TVirtualMCApplication::RequestMCManager
void RequestMCManager()
Request a TMCManager which is required if multiple engines should be run.
Definition
TVirtualMCApplication.cxx:98
TVirtualMCApplication::fLockMultiThreading
static Bool_t fLockMultiThreading
Forbid multithreading mode if multi run via global static flag.
Definition
TVirtualMCApplication.h:156
TVirtualMCApplication::Instance
static TVirtualMCApplication * Instance()
Static access method.
Definition
TVirtualMCApplication.cxx:88
TVirtualMCApplication::fMC
TVirtualMC * fMC
The current transport engine in use.
Definition
TVirtualMCApplication.h:141
TVirtualMC
Abstract Monte Carlo interface.
Definition
TVirtualMC.h:49
Generated on
for VMC by
1.17.0