Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4VUserActionInitialization.hh
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26// G4VUserActionInitialization
27//
28// Class description:
29//
30// This is the abstract base class for instantiating all user action classes.
31// It has a pure virtual method Build() which is invoked by G4RunManager for
32// sequential execution, and G4WorkerRunManager for multi-threaded execution.
33// The additional virtual method BuildForMaster() will be invoked from
34// G4MTRunManager for multi-threaded execution.
35//
36// Note that these virtual methods are const. It means the user may construct
37// user action objects, but should not store the pointers of these objects as
38// data members of the derived class.
39//
40// Note for multi-threaded mode: the only action class the user may set to
41// G4MTRunManager is a run action. It is then used at the beginning and the
42// end of a run. It may be the same class or a dedicated class different from
43// the run action instantiated for G4WorkerRunManager.
44
45// Author: M.Asai (SLAC), 17 April 2013
46// --------------------------------------------------------------------
47#ifndef G4VUserActionInitialization_hh
48#define G4VUserActionInitialization_hh 1
49
51class G4UserRunAction;
57
59{
60 public:
61
64
65 virtual void Build() const = 0;
66 // Virtual method to be implemented by the user to instantiate
67 // user action class objects.
68
69 virtual void BuildForMaster() const;
70 // Virtual method to be implemented by the user to instantiate user
71 // run action class object to be used by G4MTRunManager. This method
72 // is not invoked in the sequential mode. The user should not use
73 // this method to instantiate user action classes except for user
74 // run action.
75
77 // Virtual method to be implemented by the user if having a concrete
78 // SteppingVerbose class to be used by the worker thread. In this case
79 // one should instantiate a SteppingVerbose in the concrete
80 // implementation of this method and return its pointer. If this method
81 // is not implemented, the default G4SteppingVerbose will be used.
82 // Please note that this method affects only for the worker thread.
83
84 protected:
85
87 void SetUserAction(G4UserRunAction*) const;
92 // These methods should be used to define user's action classes.
93};
94
95#endif
void SetUserAction(G4VUserPrimaryGeneratorAction *) const
virtual void Build() const =0
virtual G4VSteppingVerbose * InitializeSteppingVerbose() const