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
G4WeightCutOffProcess.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// G4WeightCutOffProcess
27//
28// Class description:
29//
30// Process for biasing particle-change cutoff.
31
32// Author: Michael Dressel, 2002
33// --------------------------------------------------------------------
34#ifndef G4WeightCutOffProcess_hh
35#define G4WeightCutOffProcess_hh 1
36
37#include "G4VProcess.hh"
38#include "G4VTrackTerminator.hh"
39#include "G4GeometryCell.hh"
40
41//class G4VGCellFinder;
42class G4VIStore;
43
44class G4Step;
45class G4Navigator;
47class G4PathFinder;
48class G4VTouchable;
49
50#include "G4FieldTrack.hh"
51#include "G4TouchableHandle.hh"
52#include "G4MultiNavigator.hh" // For ELimited enum
53
55{
56
57public: // with description
58
60 G4double wlimit,
61 G4double isource,
62 G4VIStore *istore,
63 const G4String &aName = "WeightCutOffProcess",
64 G4bool para = false);
65 // create a G4ParticleChange
66
67 virtual ~G4WeightCutOffProcess();
68 // delete the G4ParticleChange
69
72
73 //--------------------------------------------------------------
74 // Set Parallel World
75 //--------------------------------------------------------------
76
77 void SetParallelWorld(const G4String &parallelWorldName);
78 void SetParallelWorld(G4VPhysicalVolume* parallelWorld);
79
80 //--------------------------------------------------------------
81 // Process interface
82 //--------------------------------------------------------------
83
85
86 virtual G4double
88 G4double previousStepSize,
90 // make the process beeing forced
91
92 virtual G4VParticleChange * PostStepDoIt(const G4Track&,
93 const G4Step&);
94
95
96 const G4String &GetName() const;
97
98public: // without description
99
100 // no operation in AtRestDoIt and AlongStepDoIt
101
102 virtual G4double
104 G4double ,
105 G4double ,
106 G4double& ,
108
109 virtual G4double
112
113 virtual G4VParticleChange* AtRestDoIt(const G4Track&, const G4Step&);
114 virtual G4VParticleChange* AlongStepDoIt(const G4Track&, const G4Step&);
115
116private:
117
118 void CopyStep(const G4Step & step);
119
120 G4Step* fGhostStep = nullptr;
121 G4StepPoint* fGhostPreStepPoint = nullptr;
122 G4StepPoint* fGhostPostStepPoint = nullptr;
123
124 G4ParticleChange* fParticleChange = nullptr;
125 G4double fWeightSurvival = 0.;
126 G4double fWeightLimit = 0.;
127 G4double fSourceImportance = 0.;
128 G4VIStore* fIStore = nullptr;
129
130 G4TransportationManager* fTransportationManager = nullptr;
131 G4PathFinder* fPathFinder = nullptr;
132
133 // -------------------------------
134 // Navigation in the Ghost World:
135 // -------------------------------
136 G4String fGhostWorldName = "NoParallelWorld";
137 G4VPhysicalVolume* fGhostWorld = nullptr;
138 G4Navigator* fGhostNavigator = nullptr;
139 G4int fNavigatorID = -1;
140 G4TouchableHandle fOldGhostTouchable;
141 G4TouchableHandle fNewGhostTouchable;
142 G4FieldTrack fFieldTrack = '0';
143 G4double fGhostSafety = -1;
144 G4bool fOnBoundary = false;
145
146 G4bool fParaflag;
147 G4FieldTrack fEndTrack = '0';
148 ELimited feLimited = kDoNot;
149};
150
151#endif
G4double condition(const G4ErrorSymMatrix &m)
G4ForceCondition
G4GPILSelection
ELimited
@ kDoNot
double G4double
Definition: G4Types.hh:83
bool G4bool
Definition: G4Types.hh:86
int G4int
Definition: G4Types.hh:85
Definition: G4Step.hh:62
virtual G4VParticleChange * AlongStepDoIt(const G4Track &, const G4Step &)
const G4String & GetName() const
void SetParallelWorld(const G4String &parallelWorldName)
virtual G4VParticleChange * AtRestDoIt(const G4Track &, const G4Step &)
virtual G4VParticleChange * PostStepDoIt(const G4Track &, const G4Step &)
virtual G4double PostStepGetPhysicalInteractionLength(const G4Track &aTrack, G4double previousStepSize, G4ForceCondition *condition)
virtual G4double AtRestGetPhysicalInteractionLength(const G4Track &, G4ForceCondition *)
G4WeightCutOffProcess & operator=(const G4WeightCutOffProcess &)=delete
virtual G4double AlongStepGetPhysicalInteractionLength(const G4Track &, G4double, G4double, G4double &, G4GPILSelection *)
G4WeightCutOffProcess(const G4WeightCutOffProcess &)=delete