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
G4ParallelWorldScoringProcess.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// G4ParallelWorldScoringProcess.hh
33//
34// Description:
35// This procss takes a parallel world and limits a step
36// on the boundaries of volumes in the parallel world.
37// It invokes sensitive detectors assigned in the parallel
38// world.
39//
40//---------------------------------------------------------------
41
42
43#ifndef G4ParallelWorldScoringProcess_h
44#define G4ParallelWorldScoringProcess_h 1
45
46#include "globals.hh"
47class G4Step;
48class G4Navigator;
50class G4PathFinder;
51class G4VTouchable;
55#include "G4VProcess.hh"
56#include "G4FieldTrack.hh"
57#include "G4TouchableHandle.hh"
58
59//------------------------------------------
60//
61// G4ParallelWorldScoringProcess class
62//
63//------------------------------------------
64
65
66// Class Description:
67
69{
70public: // with description
71
72 //------------------------
73 // Constructor/Destructor
74 //------------------------
75
76 G4ParallelWorldScoringProcess(const G4String& processName = "ParaWorldScore",
79
80 //--------------------------------------------------------------
81 // Set Paralle World
82 //--------------------------------------------------------------
83
84 void SetParallelWorld(G4String parallelWorldName);
85 void SetParallelWorld(G4VPhysicalVolume* parallelWorld);
87
88 //--------------------------------------------------------------
89 // Process interface
90 //--------------------------------------------------------------
91
93
94 //------------------------------------------------------------------------
95 // GetPhysicalInteractionLength() and DoIt() methods for AtRest
96 //------------------------------------------------------------------------
97
99 const G4Track& ,
101 );
102
104 const G4Track& ,
105 const G4Step&
106 );
107
108 //------------------------------------------------------------------------
109 // GetPhysicalInteractionLength() and DoIt() methods for AlongStep
110 //------------------------------------------------------------------------
111
113 const G4Track&,
114 G4double ,
115 G4double ,
116 G4double&,
118 );
119
121 const G4Track& ,
122 const G4Step&
123 );
124
125 //-----------------------------------------------------------------------
126 // GetPhysicalInteractionLength() and DoIt() methods for PostStep
127 //-----------------------------------------------------------------------
128
130 G4double previousStepSize,
132
134
135private:
136 void CopyStep(const G4Step & step);
137
138 G4Step * fGhostStep;
139 G4StepPoint * fGhostPreStepPoint;
140 G4StepPoint * fGhostPostStepPoint;
141
142 G4VParticleChange aDummyParticleChange;
143 G4ParticleChange xParticleChange;
144
145 G4TransportationManager* fTransportationManager;
146 G4PathFinder* fPathFinder;
147
148 // -------------------------------
149 // Navigation in the Ghost World:
150 // -------------------------------
151 G4String fGhostWorldName;
152 G4VPhysicalVolume* fGhostWorld;
153 G4Navigator* fGhostNavigator;
154 G4int fNavigatorID;
155 G4TouchableHandle fOldGhostTouchable;
156 G4TouchableHandle fNewGhostTouchable;
157 G4FieldTrack fFieldTrack;
158 G4double fGhostSafety;
159 G4bool fOnBoundary;
160
161 // ******************************************************
162 // ******************************************************
163 //
164 // For TESTS:
165 //
166 // ******************************************************
167 // ******************************************************
168public:
169 void Verbose(const G4Step&) const;
170};
171
172#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
G4VParticleChange * PostStepDoIt(const G4Track &, const G4Step &)
G4double AtRestGetPhysicalInteractionLength(const G4Track &, G4ForceCondition *)
G4bool IsAtRestRequired(G4ParticleDefinition *partDef)
void SetParallelWorld(G4String parallelWorldName)
G4double AlongStepGetPhysicalInteractionLength(const G4Track &, G4double, G4double, G4double &, G4GPILSelection *)
G4VParticleChange * AtRestDoIt(const G4Track &, const G4Step &)
G4double PostStepGetPhysicalInteractionLength(const G4Track &track, G4double previousStepSize, G4ForceCondition *condition)
G4VParticleChange * AlongStepDoIt(const G4Track &, const G4Step &)
Definition: G4Step.hh:78