Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
G4FastSimulationManagerProcess.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//
27// $Id$
28//
29//
30//---------------------------------------------------------------
31//
32// G4FastSimulationManagerProcess.hh
33//
34// Description:
35// The process that triggers parameterised simulations if any.
36//
37// History:
38// Feb 98: Parallel geometry sensitivity. MoraDeFreitas.
39// Oct 97: "Fast" replaces "Parameterisation" in class/method names.
40// (release B.00 for parameterisation). MoraDeFreitas.
41// Aug 97: First implementation. Verderi && MoraDeFreitas.
42// Apr 98: modified for new particle change. H.Kurashige
43// Oct 06: Move to parallel geometry scheme. M. Verderi
44// Nov 06: name xxx81 is given for this release. "81" will be
45// removed @ next maj. rel. so that this process becomes
46// the standard one.
47// May 07: remove "81" tags, to migrate to 9.0.
48//
49//---------------------------------------------------------------
50
51
52#ifndef G4FastSimulationManagerProcess_hh
53#define G4FastSimulationManagerProcess_hh
54
55#include "globals.hh"
56#include "G4VProcess.hh"
59#include "G4Step.hh"
60#include "G4Navigator.hh"
61#include "G4VPhysicalVolume.hh"
62#include "G4VParticleChange.hh"
63#include "G4FieldTrack.hh"
64class G4PathFinder;
66
67// ---------------------------------------------------------------------
68//
69// G4FastSimulationManagerProcess class
70//
71// ---------------------------------------------------------------------
72
73
74// Class Description:
75// -- G4VProcess providing the interface between the tracking and the fast simulation.
76//
77
79{
80public:
81
82 // -------------------------
83 // Constructor/Destructor:
84 // -------------------------
85 // -- Constructor for parameterisation in mass geometry
86 G4FastSimulationManagerProcess(const G4String& processName = "G4FastSimulationManagerProcess",
88
89 // -- Contructors for parameterisation attached a parallel geometry.
90 // -- Can also be used for the mass geometry, providing world volume name.
91 // -- World volume specified by name or pointer.
93 const G4String& worldVolumeName,
96 G4VPhysicalVolume* worldVolume,
98
100
101 // -----------------------
102 // User access methods:
103 // -----------------------
104 G4VPhysicalVolume* GetWorldVolume() const {return fWorldVolume;}
105
106 // -- Set new world volume to the process
109
110
111 // --------------------------------------------------------------
112 // Process interface
113 // --------------------------------------------------------------
114
115 // -- Start/End tracking:
116 void StartTracking(G4Track*);
117 void EndTracking();
118
119
120 // -- PostStep methods:
122 G4double previousStepSize,
124
126
127 // -- Responsible for limiting the step on ghost boundaries:
129 G4double previousStepSize,
130 G4double currentMinimumStep,
131 G4double& proposedSafety,
132 G4GPILSelection* selection);
134 const G4Step& step);
135
136
137
138 // -- AtRest methods (still there after many years of no use...):
141
143
144
145
146
147
148 // -- debug:
149 void Verbose() const;
150
151
152private:
153 //-- would be better to my taste to have "const G4VPhysicalVolume* fWorldVolume;", but clashes at compilation
154 G4VPhysicalVolume* fWorldVolume;
155
156 G4bool fIsTrackingTime;
157 G4bool fIsFirstStep;
158 G4Navigator* fGhostNavigator;
159 G4int fGhostNavigatorIndex;
160 G4bool fIsGhostGeometry;
161 G4double fGhostSafety;
162 G4bool fOnBoundary;
163 G4FieldTrack fFieldTrack;
164
165
166 G4FastSimulationManager* fFastSimulationManager;
167 G4bool fFastSimulationTrigger;
168 G4VParticleChange fDummyParticleChange;
169 G4PathFinder* fPathFinder;
170 G4TransportationManager* fTransportationManager;
171};
172
173#endif
G4double condition(const G4ErrorSymMatrix &m)
G4ForceCondition
G4GPILSelection
G4ProcessType
@ fParameterisation
double G4double
Definition: G4Types.hh:64
int G4int
Definition: G4Types.hh:66
bool G4bool
Definition: G4Types.hh:67
G4double AlongStepGetPhysicalInteractionLength(const G4Track &track, G4double previousStepSize, G4double currentMinimumStep, G4double &proposedSafety, G4GPILSelection *selection)
G4double PostStepGetPhysicalInteractionLength(const G4Track &track, G4double previousStepSize, G4ForceCondition *condition)
G4double AtRestGetPhysicalInteractionLength(const G4Track &, G4ForceCondition *)
G4VParticleChange * PostStepDoIt(const G4Track &, const G4Step &)
G4VParticleChange * AtRestDoIt(const G4Track &, const G4Step &)
G4VParticleChange * AlongStepDoIt(const G4Track &track, const G4Step &step)
Definition: G4Step.hh:78