ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4FastSimulationManagerProcess.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4FastSimulationManagerProcess.hh
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 //
28 //
29 //---------------------------------------------------------------
30 //
31 // G4FastSimulationManagerProcess.hh
32 //
33 // Description:
34 // The process that triggers parameterised simulations if any.
35 //
36 // History:
37 // Feb 98: Parallel geometry sensitivity. MoraDeFreitas.
38 // Oct 97: "Fast" replaces "Parameterisation" in class/method names.
39 // (release B.00 for parameterisation). MoraDeFreitas.
40 // Aug 97: First implementation. Verderi && MoraDeFreitas.
41 // Apr 98: modified for new particle change. H.Kurashige
42 // Oct 06: Move to parallel geometry scheme. M. Verderi
43 // Nov 06: name xxx81 is given for this release. "81" will be
44 // removed @ next maj. rel. so that this process becomes
45 // the standard one.
46 // May 07: remove "81" tags, to migrate to 9.0.
47 //
48 //---------------------------------------------------------------
49 
50 
51 #ifndef G4FastSimulationManagerProcess_hh
52 #define G4FastSimulationManagerProcess_hh
53 
54 #include "globals.hh"
55 #include "G4VProcess.hh"
58 #include "G4Step.hh"
59 #include "G4Navigator.hh"
60 #include "G4VPhysicalVolume.hh"
61 #include "G4VParticleChange.hh"
62 #include "G4FieldTrack.hh"
63 class G4PathFinder;
65 
66 // ---------------------------------------------------------------------
67 //
68 // G4FastSimulationManagerProcess class
69 //
70 // ---------------------------------------------------------------------
71 
72 
73 // Class Description:
74 // -- G4VProcess providing the interface between the tracking and the fast simulation.
75 //
76 
78 {
79 public:
80 
81  // -------------------------
82  // Constructor/Destructor:
83  // -------------------------
84  // -- Constructor for parameterisation in mass geometry
85  G4FastSimulationManagerProcess(const G4String& processName = "G4FastSimulationManagerProcess",
87 
88  // -- Contructors for parameterisation attached a parallel geometry.
89  // -- Can also be used for the mass geometry, providing world volume name.
90  // -- World volume specified by name or pointer.
91  G4FastSimulationManagerProcess(const G4String& processName,
92  const G4String& worldVolumeName,
94  G4FastSimulationManagerProcess(const G4String& processName,
95  G4VPhysicalVolume* worldVolume,
97 
99 
100  // -----------------------
101  // User access methods:
102  // -----------------------
104 
105  // -- Set new world volume to the process
106  void SetWorldVolume(G4String );
108 
109 
110  // --------------------------------------------------------------
111  // Process interface
112  // --------------------------------------------------------------
113 
114  // -- Start/End tracking:
115  void StartTracking(G4Track*);
116  void EndTracking();
117 
118 
119  // -- PostStep methods:
121  G4double previousStepSize,
123 
124  G4VParticleChange* PostStepDoIt(const G4Track&, const G4Step& );
125 
126  // -- Responsible for limiting the step on ghost boundaries:
128  G4double previousStepSize,
129  G4double currentMinimumStep,
130  G4double& proposedSafety,
131  G4GPILSelection* selection);
133  const G4Step& step);
134 
135 
136 
137  // -- AtRest methods (still there after many years of no use...):
140 
141  G4VParticleChange* AtRestDoIt(const G4Track&, const G4Step&);
142 
143 
144 
145 
146 
147  // -- debug:
148  void Verbose() const;
149 
150 
151 private:
152  //-- would be better to my taste to have "const G4VPhysicalVolume* fWorldVolume;", but clashes at compilation
154 
162 
163 
169 };
170 
171 #endif